Spec-Zone.ru › Angular.js 1.6

Улучшить эту документацию Посмотреть исходный код ngPluralize

  1. Директива в модуле ng

Обзор

ngPluralize — это директива, которая отображает сообщения в соответствии с правилами локализации en-US. Эти правила включены в angular.js, но могут быть переопределены (см. руководство по международной локализации AngularJS AngularJS i18n). Вы настраиваете директиву ngPluralize, указав соответствия между категориями множественного числа и строками для отображения.

Категории множественного числа и явные правила для чисел

В стандартной локализации en-US AngularJS используются две категории множественного числа: «one» и «other».

Хотя категория множественного числа может соответствовать многим числам (например, в локали en-US, «other» может соответствовать любому числу, кроме 1), явное правило для числа может соответствовать только одному числу. Например, явное правило для числа «3» соответствует числу 3. Примеры категорий множественного числа и явных правил для чисел приведены в остальной части этой документации.

Настройка ngPluralize

Вы настраиваете ngPluralize, предоставив 2 атрибута: 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 позволяет дополнительно настроить текст с множественным числом, что может улучшить пользовательский опыт. Например, вместо сообщения «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. Когда документ просматривает один человек, например, Иван, отобразится «Иван просматривает». Когда документ просматривают три человека, явное правило для числа не найдено, поэтому от 3 вычитается смещение 2, и AngularJS использует 1 для определения категории множественного числа. В этом случае соответствует категория «one», и отобразится «Иван, Мария и еще один человек просматривают».

Обратите внимание, что при указании смещений необходимо предоставить явные правила для чисел от 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–2018 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.6.9/docs/api/ng/directive/ngPluralize

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API