Jinja2 支持扩展来添加过滤器、测试、全局变量或者甚至是处理器。扩展的主要动力是 把诸如添加国际化支持的常用代码迁移到一个可重用的类。 添加扩展扩展在 Jinja2 环境创建时被添加。一旦环境被创建,就不能添加额外的扩展。要添加 一个扩展,传递一个扩展类或导入路径的列表到 jinja_env = Environment(extensions=['jinja2.ext.i18n'])
i18n 扩展Import name: jinja2.ext.i18n Jinja2 当前只附带一个扩展,就是 i18n 扩展。它可以与 gettext 或 babel 联合使用。如果启用了 i18n 扩展, Jinja2 提供了 trans 语句来标记被其包裹的 字符串为可翻译的,并调用 gettext 。 在启用虚拟的 _ 函数后,之后的 gettext 调用会被添加到环境的全局变量。那么 一个国际化的应用应该不仅在全局,以及在每次渲染中在命名空间中提供至少一个 gettext 或可选的 ngettext 函数。 环境方法在启用这个扩展后,环境提供下面的额外方法:
对于一个对多种语言可用而对所有用户给出同一种的语言的 web 应用(例如一个法国社 区安全了一个多种语言的论坛软件)可能会一次性加载翻译并且在环境生成时把翻译方 法添加到环境上: translations = get_gettext_translations()
env = Environment(extensions=['jinja2.ext.i18n'])
env.install_gettext_translations(translations)
get_get_translations 函数会返回当前配置的翻译器。(比如使用 gettext.find ) 模板设计者的 i18n 扩展使用在 模板文档 中有描述。 |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-11-9 22:01 , Processed in 0.021136 second(s), 17 queries .