Улучшить эту документацию Просмотреть исходный код ngPluralize
- директива в модуле ng
Обзор
ngPluralize — это директива, которая отображает сообщения в соответствии с правилами локализации en-US. Эти правила включены в angular.js, но могут быть переопределены (см. руководство по локализации AngularJS i18n). Вы настраиваете директиву ngPluralize, указав соответствия между категориями множественного числа и строками, которые нужно отобразить.
Категории множественного числа и явные правила для чисел
В стандартной локализации en-US AngularJS используются две категории множественного числа: "one" и "other".
Хотя категория множественного числа может соответствовать многим числам (например, в локали en-US категория "other" может соответствовать любому числу, не равному 1), явное правило для числа может соответствовать только одному числу. Например, явное правило для числа "3" соответствует числу 3. Примеры категорий множественного числа и явных правил для чисел приведены далее в этой документации.
Настройка ngPluralize
Вы настраиваете ngPluralize, указав два атрибута: count и when. Вы также можете указать необязательный атрибут offset.
Значение атрибута count может быть строкой или выражением AngularJS; эти выражения вычисляются в текущем контексте для связанного значения.
Атрибут 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".
Можно использовать пару фигурных скобок ({}) в качестве заполнитель для числа, которое нужно подставить в строку с множественным числом. В предыдущем примере AngularJS заменит {} на {{personCount}}. Фигурные скобки {} — это плейсхолдер для {{numberExpression}}.
Если для какой-либо категории не определено правило, то отображается пустая строка, и генерируется предупреждение. Обратите внимание, что некоторые локали содержат больше категорий, чем one и other. Например, fr-fr определяет few и many.
Настройка ngPluralize с параметром offset
Атрибут 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), отобразится "John is viewing". Когда документ просматривают три человека, явное правило не найдено, поэтому из 3 вычитается смещение 2, и AngularJS использует 1 для определения категории множественного числа. В этом случае соответствует категория множественного числа 'one', и отображается "John, Mary and one other person are viewing".
Обратите внимание, что при указании смещения необходимо указать явные правила для чисел от 0 до и включая смещение. Если используется смещение 3, например, необходимо указать явные правила для 0, 1, 2 и 3. Также необходимо указать строки для категорий множественного числа "one" и "other".
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
- как элемент:
<ng-pluralize count="" when="string" [offset="number"]> ... </ng-pluralize>
- как атрибут:
<ANY ng-pluralize count="" when="string" [offset="number"]> ... </ANY>
Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| count | stringexpression | Переменная, к которой будет привязано значение. |
| when | string | Соответствие между категорией множественного числа и соответствующими строками. |
| offset (необязательно) | number | Смещение для вычитания из общего числа. |
Примеры
© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ng/directive/ngPluralize