Использование формы множественного числа для русской локализации - PullRequest
5 голосов
/ 18 марта 2012

Я пытаюсь использовать форму множественного числа в русском языке, но в русском есть две формы слова для множественного числа слов (например: "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 Ответ

5 голосов
/ 18 марта 2012

Вам нужно использовать blocktrans, как подсказал Томас.Из документации blocktrans :

Этот тег также предусматривает множественное число.Чтобы его использовать:

Назначьте и свяжите значение счетчика с именем счета.Это значение будет тем, которое используется для выбора правильной формы множественного числа.Укажите формы единственного и множественного числа, разделяя их тегом {% множественный%} внутри тегов {% 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...