Как использовать jinja2 i18n с бутылкой (с babel)

Я считаю, что для использования jinja2 с бутылкой просто используется jinja2_template вместо шаблона: например. Bottle.jinja2_template("mytemplate", dict(name=value, name2=value2)) Однако, если кому-то нужно расширение i18n jinja, как это лучше всего указать, чтобы также сделать

....install_gettext_translations(

? Это делается автоматически с

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

? Спасибо.

После дальнейшего размышления я думаю, что мне, возможно, придется переопределить метод подготовки в классе Jinja2Template, чтобы добавить 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

ИЛИ для переводов Babel 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.

С другой стороны, если кому-то нужно сделать извлечение с помощью babel, см. jinja2.ext.babel_extract

Другой подход - получить транс объект с чем-то вроде:

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

person user3571113    schedule 25.04.2014    source источник


Ответы (1)


person    schedule
comment
В ответе нужно указать, что у вас есть. Вставлять только код смысла нет. - person Runcorn; 04.06.2014