JavaScript Intl.PluralRules — українська множина: 1 файл, 2 файли, 5 файлів
Intl.PluralRules визначає, яку форму множини брати для числа — за правилами конкретної мови.
Загальний опис
Англійською все просто: 1 file, 2 files. Тому й код, писаний з англійською в голові, робить count === 1 ? 'файл' : 'файли' — і ламається на «5 файли».
Українська має три форми: one (1 файл), few (2–4 файли), many (5–20 файлів). І це не просто «більше трьох»: 21 знову бере форму one — «21 файл».
PluralRules знає всі ці правила й повертає ім'я форми — лишається підставити своє слово.
- Порада
-
Пишеш «знайдено N результатів» — не вгадуй закінчення умовою. 21, 22, 25 поводяться по-різному, і ручна перевірка обов'язково десь помилиться.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| PluralRules | 63+ | 58+ | 13+ | 50+ | 18+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| PluralRules | 63+ | yes | yes | 13+ |
Приклади
+ запропонувати свій приклад у пісочниці
Правильне закінчення для будь-якого числа.
const plural = new Intl.PluralRules('uk-UA');
console.log(plural.select(1)); // 'one'
console.log(plural.select(3)); // 'few'
console.log(plural.select(5)); // 'many'
console.log(plural.select(21)); // 'one' (!) — 21 файл
const forms = {
one: 'файл',
few: 'файли',
many: 'файлів',
other: 'файлу',
};
function files(count) {
return count + ' ' + forms[plural.select(count)];
}
console.log(files(1), files(3), files(5), files(21));
// 1 файл, 3 файли, 5 файлів, 21 файл
Коментарі
Коментарів ще немає — будьте першим!