Pluralize Counts With Intl.PluralRules
Choose singular or plural forms by CLDR plural category, including custom two and few forms for non-English locales.
Code
export function pluralize(count, singular, plural, locale = "en") {
if (typeof count !== "number" || !Number.isFinite(count)) {
throw new TypeError("count must be a finite number");
}
const rules = new Intl.PluralRules(locale);
const category = rules.select(count);
const forms = typeof plural === "string"
? { one: singular, other: plural }
: { one: singular, other: singular, ...plural };
const word = forms[category] ?? forms.other ?? singular;
return String(count) + " " + word;
}
export function pluralizeWithNumber(count, singular, plural, locale = "en") {
const formatted = new Intl.NumberFormat(locale).format(count);
const text = pluralize(count, singular, plural, locale);
const separator = text.indexOf(" ");
return separator === -1 ? text : formatted + text.slice(separator);
}Report a problem with this exampleOpens a pre-filled issue on GitHub.