2023-03-06 16:07:42
Из интересного, в комментариях под видео мне подсказали, что у Intl есть встроенный способ подбирать плюральную (множественную) форму - Intl.PluralRules.
Вот небольшой пример:
const rulesRu = new Intl.PluralRules('ru');
rulesRu.select(0); // 'many'
rulesRu.select(1); // 'one'
rulesRu.select(2); // 'few'
rulesRu.select(3); // 'few'
rulesRu.select(10); // 'many'
Попробовал и с другими языками - работает отлично.
В плане [поддержки браузеров](https://caniuse.com/intl-pluralrules) - тут кажется тоже нету проблем (все, кроме IE).
Кажется, что уже на одну проблему меньше. Добавлю в библиотеку вот такую реализацию:
export function createPluralize(locale: string) {
const rules = new Intl.PluralRules(locale);
const pluralize = (count: number) => {
return rules.select(count);
};
return pluralize;
}
А если нужна поддержка старых браузеров - можно просто написать реализацию самому.
Новую версию планирую выпустить сегодня вечером.
Старые функции pluralizeRu/pluralizeEn удалять сразу не буду, побудут некоторое время в статусе deprecated.
Как-то так, буду держать в курсе.
#devtips #i18n
819 viewsAyub Begimkulov, edited 13:07