在 Jinja 模板中,如何结合 {% trans %} 和 {% with %}

In Jinja templates, how to combine {% trans %} with {% with %}

我正在使用启用了 i18n 扩展的 Jinja 模板(在 Django 中)。我可以在模板中添加翻译块就好了,比如:{% trans %}Hello{% endtrans %}.

但是有些地方我使用 {% with %} 在包含模板之前设置字符串的值:

{% with title="Latest posts" %}
  {% include "_partials/blog_posts.jinja" %}
{% endwith %}

鉴于在 {% trans %}{% endtrans %} 块内“不允许任何语句,仅允许文本和简单的变量标签”,我不知道如何设置字符串“Latest posts”以进行翻译以及制作它可用于包含的模板。

您可以在 with 块的变量中使用 gettext/ngettext 函数:

{% with title=gettext("Latest posts") %}
  {% include "_partials/blog_posts.jinja" %}
{% endwith %}

gettext_ 快捷方式也有效:title=_("Latest posts")