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

问题描述 投票:0回答:4

我目前正在本地化我的 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。

如何使 blocktrans 与百分号一起工作?

django localization escaping
4个回答
3
投票

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


3
投票

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


2
投票

已针对此特定问题打开了另一张票证,并提供了修复该问题的补丁。希望 Django 1.4 能够修复这个问题。

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


0
投票

2023年的doc提到了这个问题。看来翻译的短语中也必须有

%%
。因此
# xgettext:no-python-format
有点无用,因为无论如何翻译者都必须意识到这一点。在任何地方使用
%%
都有效。

© www.soinside.com 2019 - 2024. All rights reserved.