我正在使用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"
你有什么想法吗?
答案 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解释。
我会把它留在那里......希望这有帮助!