Jinja2翻译链接

时间:2012-03-23 07:56:10

标签: google-app-engine internationalization template-engine jinja2

从Jinja2模板中,这是我追求的渲染线(英文):

This is the <a href="roadmap.html">roadmap</a>

用荷兰语翻译应该导致:

Dit is de <a href="roadmap.html">planning</a>

这条Jinja2系列让我在那里 - 几乎 -

{{ _('This is the %(roadmap)s.', roadmap='<a href="roadmap.html">roadmap</a>'|safe) }}

不幸的是,“路线图”这个词并未翻译。

Jinja2实现这一目标的方法是什么?拆分roadmap1和roadmap2中的链接?我希望有更聪明的东西。

2 个答案:

答案 0 :(得分:1)

这些应该有效:

{{ _('This is the') }} <a href="roadmap.html">{{ _('roadmap') }}</a>

{{ _('This is the %(roadmap)s', roadmap=('<a href="roadmap.html">%s</a>' % _('roadmap'))|safe) }} 

此外,如果您使用webapp2,则可能需要将href =“roadmap.html”替换为例如href="{{ uri_for('roadmap') }}"

答案 1 :(得分:0)

这是一个可以在单个可翻译字符串中为您提供所有内容的解决方案。通常,您不希望链接文本(“路线图”)成为单独的翻译项目。

通过将开始和结束标签提取到变量中来工作。这些标记必须标记为safe,因为它们包含HTML内容,否则将被转义。

{% trans link_start='<a href="roadmap.html">'|safe, link_end='</a>'|safe %}
This is the {{ link_start }} roadmap {{ link_end }}.
{% endtrans %}