Django翻译转义符

2024-10-01 13:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图翻译一些包含百分号的文本,如下所示:

{% trans "100% butterfly" %}

运行makemessages命令时,在德语.po文件中得到以下输出:

#: .\appName\templates\appName\butterflies.html:54
#, fuzzy, python-format
#| msgid ""
#| "100% butterfly"
msgid ""
"100%% butterfly"
msgstr ""
"100% shmetterling"

在编译时,无法将文本翻译成德语。我试过做{% trans "100%% butterfly" %},但这会导致页面显示“100%%butterfly”,当以德语和英语查看时。我也尝试过用blocktrans标记来翻译文本,结果是一样的。在

手动删除.po文件中多余的%以及#, fuzzy, python-format行是可行的,但我不想对我试图翻译的每个%符号都这样做。在

如何在我的HTML中转义这个,以便Django停止在.po文件中生成模糊翻译,并且不会因为我在尝试做一些python格式而感到困惑?在


Tags: 文件文本命令formattranshtmltemplatespo
3条回答

原来这是一个Django问题,django1.9中可能会有一个修复。 解决方法之一是:

{% blocktrans with percent="%" %}100{{percent}} butterfly{% endblocktrans %}

它基本上包含了python格式,当您在trans-text中添加一个%符号时,它认为您正在尝试这样做。很冗长很烂,但很管用。

我认为更好的方法是使用html代码:%

例如,这是处理django翻译的最优雅的方式。

根据Django的Trac中的this comment,在要翻译的字符串上方添加一个translator注释来停用python格式可以解决这个问题。

如果要翻译的文本在Python代码中,请使用:

# Translator: xgettext:no-python-format
_('100% butterfly')

对于trans模板标记,您可以尝试:

^{pr2}$

作为explained in the doc

相关问题 更多 >