使用Jinja2和Babel,如何翻译包含HTML标签的句子?

前端之家收集整理的这篇文章主要介绍了使用Jinja2和Babel,如何翻译包含HTML标签的句子?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个Jinja2模板,我正在使用Flask-Babel来翻译我的项目.例如:
<p>The <em>best</em> way of using the Internet is
to use <a href="{{ url_for('our_site') }}">our site</a>.</p>

所以我有一个带有链接和重点的句子.假设我想翻译我的句子.显而易见的方法是使用gettext()或{%trans%}标记

<p>{% trans %}The {% endtrans %} <em>{% trans %}best{% endtrans %}</em>
{% trans %}way of using the Internet is to use{% endtrans %}
<a href="{{ url_for('our_site') }}">{% trans %}our site{% endtrans %}</a>{% trans %}.{% endtrans %}</p>

显然问题是这会将句子分成多个片段,这些片段不能很好地翻译.这将导致翻译人员考虑字符串“The”,“best”,“使用互联网的方式是使用”,“我们的网站”作为所有单独的字符串,加上标点符号.当然,译者会想要重构句子,并选择分别链接和强调的词语.

那么鉴于此,解决方案是什么?如何在其中包含一个带有标签的句子,该句子翻译为一个单元?

解决方法

您可以使用gettext()和安全过滤器
{{ gettext('The <em>best</em> solution') | safe }}

http://jinja.pocoo.org/docs/2.9/templates/#list-of-builtin-filters

然后,您的翻译人员可以安排标签.

如果你想让翻译器的内容更简单,你可以添加一个自定义降价过滤器并使用在短语中添加简单格式的过滤器,请参阅此处获取示例https://gist.github.com/glombard/7554134

猜你在找的HTML相关文章