2011-03-27 70 views
5

我目前正在本地化我的Django应用程序。除了blocktrans标签中的百分号外,其他所有翻译都可以正常工作。处理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。

我该如何使百分号符号工作?

回答

2

无法找到真正解决问题的办法,所以我用一种变通方法:创建一个常数PERCENT_SIGN = U'% '并将其用作blocktrans-blocks内部的{{PERCENT_SIGN}}。

+3

有关使用HTML实体%什么? – 2011-05-10 12:46:01

+0

这可能会起作用,但我认为翻译会比“{{PERCENT_SIGN}}”更容易混淆,尽管时间更短。另外,我将这个用于纯文本电子邮件模板,所以这个实体是不可行的。 – anttikoo 2011-05-12 21:31:15

+0

对..最好的解决方案是修复Django中继中的blocktrans :) – 2011-05-12 22:03:30

3

退房this ticket - 它不是一个解决方案,但它揭示了这是怎么回事光