ボトル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')