在 Jinja2 中使用 babel 链接

Using links with babel in Jinja2

目前我将 Flask 和 Jinja2 与 Babel 结合使用。到目前为止一切都很好。

我面临的唯一问题是在翻译文本中使用链接时。假设我们在 HTML 中有以下内容:

<p>You can change this in your <a href="{{ url_for("settings") }}">settings</a>.</p>

如何将它与 babel 结合使用?

我一直在考虑以下代码,但是当翻译语言中的单词顺序不同时,这会产生问题。

<p>{{ _("You can change this in your ")<a href="{{ url_for("settings") }}">{{ _("settings")</a>.</p>

另一个想法是将整个 HTML 放入要翻译的字符串中,但是我不能再使用字符串转义了。

执行此操作的首选方法是什么?

我正在寻找解决这个问题的方法,并遇到了这个优秀的 page

您可以使用可用于 jinja2 变量的字符串替换来添加链接。这是一个例子:

{{ _("You can change this in your %(open)ssettings%(close)s.", open='<a href="/user/%d">' % user_id, close='</a>')|safe }}

您的 .po 文件将包含如下条目:

msgid "You can change this in your %(open)ssettings%(close)s."
msgstr ""