Angular предоставляет встроенные возможности для
плюрализации (pluralization) текстов на основе числовых
значений через директиву i18nPlural. Этот механизм
позволяет корректно формировать формы слов для разных чисел, учитывая
правила языка.
@Component({
selector: 'app-example',
template: `
<div>{{ messages.length | i18nPlural: messageMapping }}</div>
`
})
export class ExampleComponent {
messages = [1, 2, 3];
messageMapping: { [k: string]: string } = {
'=0': 'Нет сообщений',
'=1': 'Одно сообщение',
'other': '# сообщений'
};
}
messages.length — числовое значение, на основе которого выбирается форма.
messageMapping — объект, где ключи задают конкретные правила:
=0, =1, =2 и т.д. — точные
совпадения чисел.other — правило по умолчанию для всех остальных
значений.# внутри строки автоматически заменяется на текущее
числовое значение.
@angular/common с настройкой локали.messageMapping: { [k: string]: string } = {
'=0': 'Нет сообщений',
'=1': 'Одно сообщение',
'=2': 'Два сообщения',
'=3': 'Три сообщения',
'few': '# сообщения',
'many': '# сообщений',
'other': '# сообщений'
};
Ключи few и many соответствуют правилам
языка, позволяя корректно отображать количество.
other как запасной вариант, чтобы
избежать ошибок при неожиданных числах.one,
few, many, other).Использование временных функций и плюрализации в Angular позволяет создавать интерфейсы, которые одновременно плавны, динамичны и корректны с точки зрения языковой локализации.