3

ボトル1でjinja2を使用すると信じていますテンプレートの代わりにjinja2_templateを使用するだけです:例: bottle.jinja2_template("mytemplate", dict(name=value, name2=value2))行う

....install_gettext_translations(

? それは自動的に行われますか

bottle.jinja2_template("mytemplate", dict(name=value, name2=value2), template_lookup=['templates'],'template_settings'=   {'extensions':['jinja2.ext.i18n'],'autoescape': True }))

? ありがとう。

さらによく考えてみると、Jinja2Template クラスの prepare メソッドをオーバーライドして env.install_gettext_translations( ???

詳細については、 ....install_gettext_translations( を手動で行っていた場合、おそらく:

tenv = Environment(extensions=['jinja2.ext.i18n'])
tenv.install_gettext_translations(gettransobj())

import gettext
import locale 

def gettransobj():
    loc = locale.getlocale()
     # change to reflect where your mo files are
    mofilename = "res/messages_%s.mo" % locale.getdefaultlocale()[0][0:2]
    try:
       trans = gettext.GNUTranslations(open( mofilename, "rb" ) )
    except IOError:
       trans = gettext.NullTranslations()
    return trans

または、バベル翻訳の場合は obj のようなもの

.....install_gettext_translations(gettransobj(),newstyle=True)

import babel
import locale 

def gettransobj():
  loc = locale.getlocale()
  mofilename = "res/messages_%s.mo" % locale.getdefaultlocale()[0][0:2]
  trans = babel.support.Translations(open( mofilename, "rb" ) )

このコードがある程度正しい場合、どこに配置すればよいかわかりませんか? jinja2 にはあまり詳しくありません。プログラムの先頭または bottle.jinja2_template 呼び出しごとに 1 回だけ。

別の注意として、babel を使用して抽出を行う必要がある場合は、jinja2.ext.babel_extract を参照してください。

別のアプローチは、次のようなもので trans obj を取得することです。

return gettext.translation(domain, localedir=localedir,languages=languages, codeset='utf-8')
4

1 に答える 1