Django模板翻译:零在fr中是复数
Django template translation: zero is plural in fr
我正在使用 Django,无论我在 blocktrans 标签中使用什么文本,都无法在我的模板中使用法语获得正确的复数形式。例如:
{% blocktrans count counter=0 %}
foo
{% plural %}
bars
{% endblocktrans %}
给我 bars
而不是 foo
。事实上,0 在法语中是单数。
我在模板中检查了语言代码:
{% get_current_language as LANGUAGE_CODE %}
{{ LANGUAGE_CODE }}
它给了我 fr
.
以下内容在我的 django.po
法语翻译文件的 header 中:
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
大家有什么想法吗?
好吧,我终于找到了这里发生的事情。由于我输入 blocktrans
的方式,这里是我在 python manage.py makemessages -l fr
命令生成的 django.po
文件中得到的:
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 解释。
我会留在那里...希望这有帮助!
我正在使用 Django,无论我在 blocktrans 标签中使用什么文本,都无法在我的模板中使用法语获得正确的复数形式。例如:
{% blocktrans count counter=0 %}
foo
{% plural %}
bars
{% endblocktrans %}
给我 bars
而不是 foo
。事实上,0 在法语中是单数。
我在模板中检查了语言代码:
{% get_current_language as LANGUAGE_CODE %}
{{ LANGUAGE_CODE }}
它给了我 fr
.
以下内容在我的 django.po
法语翻译文件的 header 中:
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
大家有什么想法吗?
好吧,我终于找到了这里发生的事情。由于我输入 blocktrans
的方式,这里是我在 python manage.py makemessages -l fr
命令生成的 django.po
文件中得到的:
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 解释。
我会留在那里...希望这有帮助!