使用复数形式进行俄语本地化

时间:2012-03-18 05:53:48

标签: django internationalization

我尝试使用俄语中的复数形式,但俄语对复数单词有两种形式的单词(例如:“1курс”= 1个课程,“2курса”= 2课程,但“5курсов”= 5门课程。

Django支持这种特性,并使用此算法指定复数形式(django.po标题):

"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"

复数形式的描述如下(django.po):

msgid "%(курс) курс"
msgid_plural "%(курс) курса"
msgstr[0] "%(курс) курс"
msgstr[1] "%(курс) курса"
msgstr[2] "%(курс) курсов"

如何在模板中使用它?像{% sometag word="курс" counter=courses|lenht %}这样的东西?是否有默认标签,或者我是否需要自己实施此标签?

1 个答案:

答案 0 :(得分:5)

您需要使用Thomasz提示的blocktrans。来自blocktrans documentation

  

此标记还提供复数。使用它:

     

使用名称计数指定并绑定计数器值。这个值   将是用于选择正确的复数形式的那个。同时指定   用{%plural%}标签分隔它们的单数和复数形式   在{%blocktrans%}和{%endblocktrans%}标记内。

     

一个例子:

{% blocktrans count counter=list|length %} There is only one {{ name
}} object. {% plural %} There are {{ counter }} {{ name }} objects. {%
endblocktrans %}
  

一个更复杂的例子:

 {% blocktrans with amount=article.price count years=i.length %} That
 will cost $ {{ amount }} per year. {% plural %} That will cost $ {{
 amount }} per {{ years }} years. {% endblocktrans %}