使用Flask Babel翻译Jinja2模板中列表中的元素

使用Flask Babel翻译Jinja2模板中列表中的元素,flask,internationalization,jinja2,flask-babel,Flask,Internationalization,Jinja2,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(endp

我有一个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 %}
{%用于标题,端点位于导航%}
{%if endpoint==request.endpoint%}
  • {%else%}
  • {%endif%} {%endfor%}

    在我的示例中,我应该如何使用{%trans%}或{{gettext()}}来正确转换菜单项?我尝试将{%trans%}放入for循环,但没有成功。有没有办法翻译模板中定义的列表元素?

    只需翻译菜单:

    {% set nav = [
        (_('Foo'), 'user.foo'),
        (_('Bar'), 'user.bar'),
    ] %}
    
    。(…)
    gettext(…)
    的短别名

    一般来说,您应该在定义的地方翻译文本,这样您就不太可能出现文本损坏或缺少翻译的情况