如何逃避'%'使用pybabel的jinja 2.10 {%trans%}中的角色?

时间:2018-06-11 22:07:11

标签: python-2.7 escaping jinja2 translation babel

我正在使用jinja 2.10和pybabel。当我的模板包含以下代码(转换块中包含'%' char)时,pybabel-compile不会转换字符串。提取的字符串(在.po中)是正常的,但在结果页面上根本没有翻译。

<h3 class="title">{% trans %}100% anonymity{% endtrans %}</h3>

此代码有效但反式语法看起来更好:

<h3 class="title">{{ _("100%% anonymity") }}</h3>

此外,我不能打扰我的翻译同事使用&#39; %%&#39;而不是&#39;%&#39;。

1 个答案:

答案 0 :(得分:0)

我也对此有所保留,但是我在Babel documentation中找到了解决方案:

##flask.ext.babel.gettext(string, **variables)##
##Translates a string with the current locale and passes in the given keyword arguments as mapping to a string formatting string.

gettext(u'Hello World!')
gettext(u'Hello %(name)s!', name='World')

然后我将其翻译为以下简单代码:

_('Hello %(name)s!', name='World%')

希望我能帮助您:D