Django模板翻译:fr是

时间:2015-10-19 17:18:15

标签: django translation

我正在使用Django并且无法使用法语在我的模板中获得正确的复数形式,无论我在blocktrans标签中使用何种文本。例如:

{% blocktrans count counter=0 %}
    foo
{% plural %}
    bars
{% endblocktrans %}

给我bars而不是foo。实际上,0在法语中是单数的。

我在模板中使用以下内容检查了语言代码:

{% get_current_language as LANGUAGE_CODE %}
{{ LANGUAGE_CODE }}

它给了我fr

以下是我的法语翻译django.po文件的标题:

"Plural-Forms: nplurals=2; plural=(n > 1);\n"

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了这里发生的事情。由于我输入blocktrans的方式,这是我在django.po命令生成的python manage.py makemessages -l fr文件中得到的内容:

msgid ""
"\n"
"                                foo\n"
"                            "
msgid_plural ""
"\n"
"                                bars\n"
"                            "
msgstr[0] ""
msgstr[1] ""

我把msgstr[0]msgstr[1]之类的内容写成了

msgstr[0] ""
"\n"
"                                foo\n"
"                            "
msgstr[1] ""
"\n"
"                                bars\n"
"                            "

所以我更新了模板:

{% blocktrans count counter=0 %}
    foo
{% plural %}
    bars
{% endblocktrans %}

要:

{% blocktrans count counter=0 %}foo{% plural %}bars{% endblocktrans %}

通过以下翻译:

msgid "foo"
msgid_plural "bars"
msgstr[0] "foo"
msgstr[1] "bars"

如果django.po中出现错误(翻译字符串丢失或为空),则会导致模板中出现错误的0解释。

我会把它留在那里......希望这有帮助!