我有一个Jinja2模板,菜单项在Jinja2列表中定义如下:
{% set nav = [
('Foo', 'user.foo'),
('Bar', 'user.bar'),
] %}
稍后在模板中我有一个for循环:
{% for title, endpoint in nav %}
{% if endpoint == request.endpoint %}
<li class="active"><a href="{{ url_for(endpoint) }}">{{ title|title }}</a></li>
{% else %}
<li><a href="{{ url_for(endpoint) }}">{{ title|title }}</a></li>
{% endif %}
{% endfor %}
我应该如何在我的示例中使用{%trans%}或{{gettext()}}来正确翻译菜单项?我尝试将{%trans%}放入for循环中,但没有取得任何成功。有没有办法翻译模板中定义的列表元素?
答案 0 :(得分:1)
只需翻译菜单:
{% set nav = [
(_('Foo'), 'user.foo'),
(_('Bar'), 'user.bar'),
] %}
_(...)
是gettext(...)
的简短别名。
一般情况下,您应该将文本翻译成定义的位置,这样就可以减少文本损坏的风险,从而减少翻译。