我试图启用trans
标签,并且我已经创建了一个名为i18n.html的测试模板:
{% trans %}出售{% endtrans %}--{{message}}--{{decimal_format}}
这是我根据手册编写的Python代码:
from webapp2_extras import i18n as multilingua
import jinja2
from webapp2_extras.i18n import lazy_gettext as gettext
from webapp2_extras.i18n import lazy_gettext as _
from jinja2 import Environment, FileSystemLoader
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.i18n'])
# The code below seems wrong since it is django but it was the only way I could make the page load
jinja_environment.install_gettext_translations(django.utils.translation)
class HelloWorldHandler(webapp2.RequestHandler):
def get(self):
# Set the requested locale.
locale = self.request.GET.get('locale', 'pt')
multilingua.get_i18n().set_locale(locale)
message = multilingua.gettext('For sale')
#django.utils.translation.activate('pt')
template = jinja_environment.get_template('templates/i18n.html')
decimal_format = multilingua.I18n(self.request).format_decimal(1000)
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
我无法在没有Django的情况下使其正常工作,因此我想知道如何放弃Django翻译而改用webapp2.i18n + jinja。在一个帖子中也有讨论,我不是唯一发现文档不完整或难以找到的人。请回答或评论推荐使用trans标签的方式和为什么我必须包含jinja_environment.install_gettext_translations(django.utils.translation)
?
当我尝试删除我的Django使用时,我也失去了webapp2.i18n的功能。我的语言环境文件分别位于locale/...和conf/locale..中,因为前者是webapp2的默认值,而后者是Django翻译的默认值,因此我真的需要一些最佳实践指南来摆脱Django依赖,并使用webapp2和jinja来呈现我的本地化。
如果有帮助的话,当我尝试移除Django时,我收到了一个错误消息:
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
File "/media/Lexar/montao/montaoproject/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/media/Lexar/montao/montaoproject/templates/i18n.html", line 2, in top-level template code
{{ _('For sale') }}--{{message}}--{{decimal_format}}
UndefinedError: 'gettext' is undefined
谢谢您。