全局函数清单默认下,下面的函数在全局作用域中可用:
New in version 2.1.
New in version 2.1. 扩展下面的几节涵盖了可能被应用启用的 Jinja2 内置的扩展。应用也可以提供进一步 的扩展,但这不会在此描述。会有独立的文档来解释那种情况下的扩展。 i18n如果启用来 i18n 扩展,可以把模板中的部分标记为可译的。标记一个段为可译的,可 以使用 trans: <p>{% trans %}Hello {{ user }}!{% endtrans %}</p>
要翻译一个模板表达式——比如使用模板过滤器或访问对象的属性——你需要绑定表达式到 一个名称来在翻译块中使用: <p>{% trans user=user.username %}Hello {{ user }}!{% endtrans %}</p>
如果你需要在 trans 标签中绑定一个以上的表达式,用逗号来分割( {% trans book_title=book.title, author=author.name %}
This is {{ book_title }} by {{ author }}
{% endtrans %}
在翻译块中不允许使用语句,只能使用变量标签。 为表示复数,在 trans 和 endtrans 之间用 pluralize 标签同时指定单数和复 数形式: {% trans count=list|length %}
There is {{ count }} {{ name }} object.
{% pluralize %}
There are {{ count }} {{ name }} objects.
{% endtrans %}
默认情况下块中的第一个变量用于决定使用单数还是复数。如果这不奏效,你可以指定 用于复数的名称作为 pluralize 的参数: {% trans ..., user_count=users|length %}...
{% pluralize user_count %}...{% endtrans %}
也可以翻译表达式中的字符串。为此,有三个函数: _ gettext: 翻译一个单数字符串 - ngettext: 翻译一个复数字符串 - _: gettext 的别名 例如你可以容易地这样打印一个已翻译的字符串: {{ _('Hello World!') }}
你可以使用 format 过滤器来使用占位符: {{ _('Hello %(user)s!')|format(user=user.username) }}
因为其它语言可能不会用同样的顺序使用词汇,要使用多个占位符,应始终用字符 串参数传给 format 。 Changed in version 2.5. 如果激活了新样式的 gettext 调用( 新样式 Gettext ),使用占位符 会更加简单: {{ gettext('Hello World!') }}
{{ gettext('Hello %(name)s!', name='World') }}
{{ ngettext('%(num)d apple', '%(num)d apples', apples|count) }}
注意 ngettext 函数的格式化字符串自动接受 num 参数作为计数作为附加的 常规参数。 |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-12-22 18:23 , Processed in 0.054294 second(s), 17 queries .