0

我有一个 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 循环中,但没有成功。有没有办法翻译模板中定义的列表元素?

4

1 回答 1

1

只需翻译菜单:

{% set nav = [
    (_('Foo'), 'user.foo'),
    (_('Bar'), 'user.bar'),
] %}

是的_(...)短别名gettext(...)

一般来说,您应该在定义的地方翻译文本,这样您出现错误文本的风险就会更小,从而丢失翻译。

于 2018-06-06T13:37:05.117 回答