首页 > 解决方案 > 如何将 i18n 扩展添加到 jinja?

问题描述

根据this document,我编写了以下代码

from jinja2 import Template, Environment
from gettext import GNUTranslations

translation = GNUTranslations()
env = Environment(extensions=['jinja2.ext.i18n'])
env.install_gettext_translations(translation)
name = input("Enter your name: ")
tm = Template("{% trans %} Hello {{ name }} {% endtrans %}")
msg = tm.render(name=name)
print(msg)

但是,我收到一个错误

jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'trans'.

标签: pythonjinja2gettext

解决方案


我想这是因为你实例化了一个 new Template() 对象。默认情况下,它不使用您之前定义的环境,而是使用临时环境。查看 Jinja2 类 Template() 的源代码,您将获得更多信息。

你需要的是更像template = env.get_template('index.html')那时的东西template.render(name=name)


推荐阅读