Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django翻译转义%符号_Python_Django_Internationalization_Django I18n - Fatal编程技术网

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