Ce face Intl.PluralRules
select(n) returnează categoria de plural: "zero", "one", "two", "few", "many" sau "other". Româna folosește trei: one (1 produs), few (2–19 produse, dar și 0, 101–119…) și other (20 de produse, cu „de”).
Cu { type: "ordinal" } primești categoriile pentru numerale ordinale (în engleză: 1st, 2nd, 3rd). selectRange dă categoria pentru un interval, resolvedOptions arată și lista categoriilor limbii (pluralCategories).
Parametri
| Parametru | Descriere |
|---|---|
limba |
Opțional. Codul limbii. |
optiuni |
Opțional. { type: "cardinal" } (implicit) sau "ordinal". |
Ce returnează
Un obiect cu reguli de plural.
Exemple
Exemplul 1: Pluralul corect în română
const reguli = new Intl.PluralRules("ro");
const forme = { one: "produs", few: "produse", other: "de produse" };
for (const n of [0, 1, 2, 19, 20, 101, 120]) {
console.log(n, forme[reguli.select(n)]);
}
console.log(reguli.resolvedOptions().pluralCategories);
Rezultat
0 produse
1 produs
2 produse
19 produse
20 de produse
101 produse
120 de produse
[ 'one', 'few', 'other' ]
Exemplul 2: Ordinale în engleză și intervale
const ord = new Intl.PluralRules("en", { type: "ordinal" });
const sufix = { one: "st", two: "nd", few: "rd", other: "th" };
console.log([1, 2, 3, 4, 11, 22].map((n) => n + sufix[ord.select(n)]).join(" "));
console.log(new Intl.PluralRules("ro").selectRange(1, 5), Intl.PluralRules.supportedLocalesOf("ro"));
Rezultat
1st 2nd 3rd 4th 11th 22nd
few [ 'ro' ]
Greșeli frecvente
- Scrii
n === 1 ? "produs" : "produse". În română, de la 20 în sus apare „de” („20 de produse”), iar regula se repetă la 101, 102 etc.
Comenzi înrudite
Intl.NumberFormat: Formatează numere după regulile unei limbi: monedă, procente, unități, forme compacte (1,2 mil.).Intl.RelativeTimeFormat: Formatează timpul relativ: „acum 3 zile”, „peste 2 ore”, „ieri”, „mâine”.template literals: Șiruri între backtick-uri (`) în care pui variabile și expresii direct în text.