J'ai une application de pyramide qui utilise une usine de traduction ainsi définie:Pyramide combinée avec la fonction jinja2 install_gettext_translations?
from pyramid.i18n import get_localizer, TranslationStringFactory
from pyramid.threadlocal import get_current_request
def add_renderer_globals(event):
request = event.get('request')
if request is None:
request = get_current_request()
event['_'] = request.translate
event['localizer'] = request.localizer
tsf = TranslationStringFactory('climmob3')
def add_localizer(event):
request = event.request
localizer = get_localizer(request)
def auto_translate(string):
return localizer.translate(tsf(string))
request.localizer = localizer
request.translate = auto_translate
Il fonctionne fonction bien, mais un autre endroit que j'utilise jinja2 rendre() pour rendre de petits morceaux de code réutilisable (snippets) comme extension jinja2:
from jinja2 import Environment
jinjaEnv = Environment(extensions=['jinja2.ext.i18n'])
output = template.render(snippetVars=kw,renderer='snippet')
le problème est que lorsque j'utilise la fonction de traduction '_' dans le code du modèle je reçois:
UndefinedError: 'gettext' is undefined
J'ai vu des messages que j'ai peut-être besoin d'utiliser jinjaEnv.install_gettext_translations() mais je n'arrive pas à le faire fonctionner. J'ai essayé:
jinjaEnv.install_gettext_translations(pyramid.il8n)
jinjaEnv.install_gettext_translations(tsf)
Comment puis-je intégrer jinjaEnv.install_gettext_translations() avec mon usine de traduction de la pyramide?