Улучшить документацию Просмотреть исходный код ngPluralize
- директива в модуле ng
ngPluralize — это директива, которая отображает сообщения в соответствии с правилами локализации en-US. Эти правила включены в angular.js, но могут быть переопределены (см. руководство по международной локализации Angular). Вы настраиваете директиву ngPluralize, указав соответствие между категориями множественного числа и строками, которые должны быть отображены.
Категории множественного числа и явные правила для чисел
В стандартной локали en-US Angular использует две категории множественного числа: «one» и «other».
Хотя категория множественного числа может соответствовать многим числам (например, в локали en-US категория «other» может соответствовать любому числу, кроме 1), явное правило для числа может соответствовать только одному числу. Например, явное правило для числа «3» соответствует числу 3. Примеры категорий множественного числа и явных правил для чисел приведены далее в этой документации.
Настройка ngPluralize
Вы настраиваете ngPluralize, предоставив два атрибута: 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}}.
Если для категории не определено правило, отображается пустая строка, и генерируется предупреждение. Обратите внимание, что некоторые локали определяют больше категорий, чем one и other. Например, fr-fr определяет few и many.
Настройка ngPluralize с отступом
Атрибут offset позволяет дополнительно настроить текст множественного числа, что может улучшить пользовательский опыт. Например, вместо сообщения «4 человека просматривают этот документ» можно отобразить «Иван, Мария и еще 2 человека просматривают этот документ». Атрибут 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. Когда документ просматривает один человек, возможно Иван, отобразится «Иван просматривает». Когда документ просматривают трое, явное правило не найдено, поэтому от отступа 2 отнимается 3, и Angular использует 1 для определения категории множественного числа. В этом случае совпадает категория «one», и отображается «Иван, Мария и ещё один человек просматривают».
Обратите внимание, что при указании отступов необходимо предоставить явные правила для чисел от 0 и до включительно отступа. Если вы используете отступ 3, например, вы должны предоставить явные правила для 0, 1, 2 и 3. Вы также должны предоставить строки для категорий множественного числа «one» и «other».
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
- как элемент: (Эта директива может использоваться как пользовательский элемент, но учитывайте ограничения IE).
<ng-pluralize count="" when="string" [offset="number"]> ... </ng-pluralize>
- как атрибут:
<ANY count="" when="string" [offset="number"]> ... </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.4.14/docs/api/ng/directive/ngPluralize