处理Django blocktrans标记中的百分号(%)

时间:2011-03-27 08:59:15

标签: django localization escaping

我目前正在本地化我的Django应用。所有其他翻译工作正常,除了blocktrans标签内的百分号。

在我的模板中,我有{% blocktrans %}Original % blocktrans{endblocktrans %}

django-admin makemessages在django.po中生成此内容:

#: templates/index.html:78
#, python-format
msgid "Original %% blocktrans"
msgstr ""

我将其更新为msgstr "Translated %% blocktrans",运行django-admin compilemessages,重新启动开发服务器并刷新页面,但我仍然在输出中看到Original % blocktrans。其他翻译正确显示。

作为参考,{% trans "Original % trans" %}也可以。在makemessages和翻译后我有:

#: templates/index.html:72
msgid "Original % trans"
msgstr "Translated % trans"

这可以按预期工作 - 显示翻译版本。

我必须使用blocktrans因为我还需要将变量嵌入到字符串中。我正在使用Django 1.2.5。

如何使用百分号制作块转换?

3 个答案:

答案 0 :(得分:3)

查看this ticket - 这不是一个解决方案,但它揭示了正在发生的事情

答案 1 :(得分:2)

找不到问题的真正解决方案,所以我使用了一种解决方法:创建一个常量PERCENT_SIGN = u'%'并在blocktrans-blocks中将其用作{{PERCENT_SIGN}}。

答案 2 :(得分:2)

已针对此特定问题打开了另一张故障单,并附带修补程序。希望它能为Django 1.4修复。

https://code.djangoproject.com/ticket/16721