使用 Flask-Babel 翻译 Jinja2 模板中列表中的元素
Translate elements from list in Jinja2 template using Flask-Babel
我有一个 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 循环中,但没有取得任何成功。有没有办法翻译模板中定义的列表元素?
只需翻译菜单:
{% set nav = [
(_('Foo'), 'user.foo'),
(_('Bar'), 'user.bar'),
] %}
_(...)
是 gettext(...)
的别名。
一般来说,您应该在定义的地方翻译文本,这样您就可以减少文本损坏和漏译的风险。
我有一个 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 循环中,但没有取得任何成功。有没有办法翻译模板中定义的列表元素?
只需翻译菜单:
{% set nav = [
(_('Foo'), 'user.foo'),
(_('Bar'), 'user.bar'),
] %}
_(...)
是 gettext(...)
的别名。
一般来说,您应该在定义的地方翻译文本,这样您就可以减少文本损坏和漏译的风险。