Улучшить эту документацию Посмотреть исходный код ngPluralize
- директива в модуле ng
ngPluralize — это директива, которая отображает сообщения в соответствии с правилами локализации en-US. Эти правила включены в angular.js, но могут быть переопределены (см. руководство по международной локализации Angular). Вы настраиваете директиву ngPluralize, указав соответствия между категориями множественного числа и строками, которые нужно отобразить.
Категории множественного числа и явные правила для чисел
В стандартной локализации en-US Angular использует две категории множественного числа: "one" и "other".
Хотя категория множественного числа может соответствовать множеству чисел (например, в локали en-US категория "other" может соответствовать любому числу, не являющемуся 1), явное правило для числа может соответствовать только одному числу. Например, явное правило для числа "3" соответствует числу 3. Примеры категорий множественного числа и явных правил для чисел приводятся в остальной части этой документации.
Настройка ngPluralize
Вы настраиваете ngPluralize, предоставив 2 атрибута: count и when. Вы также можете указать необязательный атрибут offset.
Значение атрибута count может быть строкой или выражением Angular; они вычисляются в текущем контексте для связанного значения.
Атрибут when задает соответствие между категориями множественного числа и отображаемой строкой. Значение атрибута должно быть JSON-объектом.
Следующий пример демонстрирует настройку ngPluralize:
<ng-pluralize count="personCount"
when="{'0': 'Nobody is viewing.',
'one': '1 person is viewing.',
'other': '{} people are viewing.'}">
</ng-pluralize>
В примере "0: Nobody is viewing." — это явное правило для числа. Если вы не указали это правило, 0 было бы отнесено к категории "other", и вместо "Nobody is viewing" отображалась бы строка "0 people are viewing". Вы можете указать явное правило для других чисел, например, для 12, чтобы вместо "12 people are viewing" отображалось "a dozen people are viewing".
Вы можете использовать набор закрытых фигурных скобок ({}) в качестве заменителя числа, которое нужно подставить в строки множественного числа. В предыдущем примере Angular заменит {} на {{personCount}}. Закрытые фигурные скобки {} — это заполнитель для {{numberExpression}}.
Настройка ngPluralize со смещением
Атрибут offset позволяет дополнительно настроить текст множественного числа, что может улучшить пользовательский опыт. Например, вместо сообщения "4 people are viewing this document" можно отобразить "John, Kate and 2 others are viewing this document". Атрибут offset позволяет сместить число на любое значение. Давайте посмотрим на пример:
<ng-pluralize count="personCount" offset=2
when="{'0': 'Nobody is viewing.',
'1': '{{person1}} is viewing.',
'2': '{{person1}} and {{person2}} are viewing.',
'one': '{{person1}}, {{person2}} and one other person are viewing.',
'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
</ng-pluralize>
Обратите внимание, что мы по-прежнему используем две категории множественного числа (one, other), но добавили три явных правила для чисел 0, 1 и 2. Когда один человек, например, Джон, просматривает документ, отобразится "John is viewing". Когда трое людей просматривают документ, явное правило для этого числа не найдено, поэтому от 3 отнимается смещение 2, и Angular использует 1 для определения категории множественного числа. В этом случае совпадает категория множественного числа 'one', и отображается "John, Mary and one other person are viewing".
Обратите внимание, что при указании смещения необходимо предоставить явные правила для чисел от 0 до и включая смещение. Если вы используете смещение 3, например, вы должны предоставить явные правила для 0, 1, 2 и 3. Вы также должны предоставить строки для категорий множественного числа "one" и "other".
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
- как элемент: (Эта директива может использоваться как пользовательский элемент, но имейте в виду ограничения IE).
<ng-pluralize count="" when="" [offset=""]> ... </ng-pluralize>
- как атрибут:
<ANY count="" when="" [offset=""]> ... </ANY>
Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| count | stringexpression | Переменная, к которой будет привязано значение. |
| when | string | Сопоставление между категорией множественного числа и соответствующими строками. |
| offset (необязательно) | number | Смещение, которое вычитается из общего числа. |
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.3.20/docs/api/ng/directive/ngPluralize