Signatur
Beschreibung
resolvedOptions() zeigt, mit welcher Konfiguration eine Intl.PluralRules-Instanz tatsächlich arbeitet. Die Optionen, die Sie dem Konstruktor übergeben, sind nur Wünsche. Die Laufzeitumgebung prüft die Locale gegen ihre verfügbaren Daten, greift bei Bedarf auf eine Ersatz-Locale zurück und ergänzt fehlende Werte durch Standardwerte. Das Ergebnis dieser Auflösung liefert die Methode als einfaches Objekt.
Das zurückgegebene Objekt enthält unter anderem:
locale: BCP-47-Tag der tatsächlich verwendeten Locale, z. B."de-DE"oder eine Ersatz-Locale.type:"cardinal"(Mengen: 1 Datei, 2 Dateien) oder"ordinal"(Reihenfolge: 1st, 2nd, 3rd).pluralCategories: Array der Pluralkategorien, die es für diese Locale und diesen Typ gibt. Mögliche Werte sind"zero","one","two","few","many"und"other".- Zahlenformat-Optionen:
minimumIntegerDigits,minimumFractionDigits,maximumFractionDigitssowieminimumSignificantDigits/maximumSignificantDigits. Die signifikanten Stellen erscheinen nur, wenn sie verwendet werden. - In neueren Umgebungen (ES2023+) außerdem
roundingIncrement,roundingMode,roundingPriorityundtrailingZeroDisplay.
Am nützlichsten ist in der Praxis pluralCategories. Damit prüfen Sie, ob eine Übersetzungsdatei für jede Kategorie der Zielsprache einen Text enthält. Außerdem erkennen Sie am Feld locale, ob Ihre gewünschte Sprache unterstützt wird oder ob die Umgebung auf eine andere zurückgefallen ist.
Rückgabewert
locale, type, pluralCategories, Ziffern- und Rundungsoptionen). Wenn Sie es ändern, hat das keine Auswirkung auf die PluralRules-Instanz.Beispiele
Aufgelöste Optionen einer deutschen Instanz anzeigen
const pr = new Intl.PluralRules('de-DE');
const opts = pr.resolvedOptions();
console.log(opts.locale);
console.log(opts.type);
console.log(opts.pluralCategories);
console.log(opts.minimumFractionDigits, opts.maximumFractionDigits);
Übersetzungen auf fehlende Pluralkategorien prüfen
const messages = {
pl: { one: 'plik', few: 'pliki', other: 'pliku' } // 'many' fehlt
};
const findMissingCategories = (lang) => {
const { pluralCategories } = new Intl.PluralRules(lang).resolvedOptions();
return pluralCategories.filter((cat) => !(cat in messages[lang]));
};
console.log(findMissingCategories('pl'));
Ersatz-Locale erkennen und Ordinalzahlen prüfen
const requested = 'xx-XX'; // nicht unterstützte Locale
const { locale } = new Intl.PluralRules(requested).resolvedOptions();
if (locale !== requested) {
console.log(`Ersatz-Locale verwendet: ${locale}`);
}
const ordinal = new Intl.PluralRules('en-US', { type: 'ordinal' });
const cats = ordinal.resolvedOptions().pluralCategories;
console.log(cats.length, cats.includes('two'));
// Wichtig · Fallstricke
- Reihenfolge von
pluralCategories: Ältere Engines geben die Kategorien in keiner festgelegten Reihenfolge zurück, bei V8 etwa["few", "one", "two", "other"]. Neuere Fassungen der Spezifikation schreiben die Reihenfolgezero, one, two, few, many, othervor. Verlassen Sie sich deshalb nicht auf Indexpositionen. Prüfen Sie stattdessen mitincludes()oderin. - Umgebungsabhängige Werte: Welche Locale bei einem Rückfall gewählt wird, hängt von den ICU/CLDR-Daten des Browsers bzw. von Node.js ab. Node.js-Builds mit
small-icu(ältere Versionen) unterstützen oft nuren. - Neuere Felder:
roundingMode,roundingPriority,roundingIncrementundtrailingZeroDisplaygibt es nur in Umgebungen mit Unterstützung für NumberFormat v3 (Chrome 106+, Firefox 116+, Safari 15.4+). In älteren Umgebungen fehlen diese Eigenschaften. minimumSignificantDigits/maximumSignificantDigitssind nur vorhanden, wenn signifikante Stellen angegeben wurden. Prüfen Sie deshalb aufundefined.- Jeder Aufruf erzeugt ein neues Objekt. Wenn Sie die Werte häufig brauchen (z. B. in Render-Schleifen), speichern Sie das Ergebnis zwischen.