Python Django翻译转义%符号
我试图翻译一些包含百分号的文本,如下所示:Python Django翻译转义%符号,python,django,internationalization,django-i18n,Python,Django,Internationalization,Django I18n,我试图翻译一些包含百分号的文本,如下所示: {%trans“100%蝶形”%} 运行makemessages命令时,我在德语.po文件中获得以下输出: #: .\appName\templates\appName\butterflies.html:54 #, fuzzy, python-format #| msgid "" #| "100% butterfly" msgid "" "100%% butterfly" msgstr "" "100% shmetterling" 在编译时,无法将文
{%trans“100%蝶形”%}
运行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格式的
行是可行的,但我不希望对我要翻译的每个%符号都这样做
我如何在HTML中转义它,以便Django停止在.po文件中生成模糊翻译,并且不会因为我正在尝试进行一些python格式设置而感到困惑?事实证明,这是Django的问题,Django 1.9中可能会出现修复。 解决方法之一是:
{%blocktrans with percent=“%”“%%”}100{{{percent}}蝴蝶{%endblocktrans%}
它本质上包含了python格式,当您在trans-text中添加%符号时,它认为您正在尝试这样做。它冗长乏味,但它确实有效。我认为更好的方法是使用html代码:
&37代码>
例如,这是处理django翻译的最优雅的方式。根据django的Trac,在要翻译的字符串上方添加翻译器注释以停用python格式可以解决此问题
如果要翻译的文本在Python代码中,请使用:
# Translator: xgettext:no-python-format
_('100% butterfly')
对于trans
模板标记,您可以尝试:
{# Translators: xgettext:no-python-format #}
{% trans "100% butterfly" %}
as.看起来像是在做{%trans“100%;butterfly”%}
会起作用,但可能会让翻译人员感到困惑。您尝试过在msgstr的.po文件中使用“100%%shmetterling”
吗?刚才,是的。我得到“100%%shmetterling”作为呈现的html输出这是一个相关的票证,它在即将发布的Django 1.9中得到了修复。这张罚单的创建者说他们使用blocktrans作为一种变通方法,但我看到您已经尝试过了。这对开发人员来说是正确的,但对于不理解html代码的翻译人员来说是令人困惑的。是的,但遗憾的是,您无法使用django javascript翻译<代码>%代码>和警告您的翻译人员是目前最好的方式。在Javascript中,我成功地使用了//translators:xgettext:no-c-format