Start · Sprachen · JavaScript · Referenz · Intl.PluralRules.prototype.resolvedOptions()

Intl.PluralRules.prototype.resolvedOptions()

Methode

Gibt ein neues Objekt mit den Optionen zurück, die beim Erzeugen des <code>Intl.PluralRules</code>-Objekts tatsächlich festgelegt wurden, darunter Locale, Typ und Pluralkategorien.

seit JavaScript ES2018 (ECMA-402 5. Ausgabe); Baseline: alle moder Kategorie: method-property

Signatur

Intl.PluralRules.prototype.resolvedOptions()

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, maximumFractionDigits sowie minimumSignificantDigits/maximumSignificantDigits. Die signifikanten Stellen erscheinen nur, wenn sie verwendet werden.
  • In neueren Umgebungen (ES2023+) außerdem roundingIncrement, roundingMode, roundingPriority und trailingZeroDisplay.

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

Typ
Object
Beschreibung
Ein neues Objekt mit den aufgelösten Optionen (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);
de-DE cardinal ["one", "other"] 0 3

Ü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'));
["many"]

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'));
Ersatz-Locale verwendet: en-US (abhängig von der Standard-Locale der Umgebung) 4 true

// 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 Reihenfolge zero, one, two, few, many, other vor. Verlassen Sie sich deshalb nicht auf Indexpositionen. Prüfen Sie stattdessen mit includes() oder in.
  • 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 nur en.
  • Neuere Felder: roundingMode, roundingPriority, roundingIncrement und trailingZeroDisplay gibt 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/maximumSignificantDigits sind nur vorhanden, wenn signifikante Stellen angegeben wurden. Prüfen Sie deshalb auf undefined.
  • Jeder Aufruf erzeugt ein neues Objekt. Wenn Sie die Werte häufig brauchen (z. B. in Render-Schleifen), speichern Sie das Ergebnis zwischen.