我找到了解决方案。以下是如何在不集成 Flask 的情况下使用 jinja2/babel。
前提条件
描述先决条件只是为了完成示例,所有先决条件都可以具有其他值或名称。
您使用名为“html”的消息域来存储消息(域是任意名称,默认为“message”)。
有一个目录“i18n”,其中包含翻译和编译的消息(例如,带有文件i18n/cs/LC_MESSAGES/html.mo
).
您更喜欢使用“cs”或“en”区域设置来呈现模板。
模板位于目录中templates
并且存在一个名为 jinja2 的模板stack.html
那里,所以存在一个文件templates/stack.html
.
代码示例
from jinja2 import Environment, FileSystemLoader
from babel.support import Translations
locale_dir = "i18n"
msgdomain = "html"
list_of_desired_locales = ["cs", "en"]
loader = FileSystemLoader("templates")
extensions = ['jinja2.ext.i18n', 'jinja2.ext.autoescape', 'jinja2.ext.with_']
translations = Translations.load(locale_dir, list_of_desired_locales)
env = Environment(extensions=extensions, loader=loader) # add any other env options if needed
env.install_gettext_translations(translations)
template = env.get_template("stack.html")
rendered_template = template.render()
The rendered_template
现在包含渲染的 HTML 内容,可能在“cs”语言环境中。