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

Intl.ListFormat.prototype.resolvedOptions()

Methode

Gibt ein neues Objekt mit den Optionen <code>locale</code>, <code>type</code> und <code>style</code> zurück, die beim Erzeugen des <code>Intl.ListFormat</code>-Objekts tatsächlich festgelegt wurden.

seit JavaScript ES2021 (Baseline: alle modernen Browser seit 2021, Kategorie: method-property

Signatur

Intl.ListFormat.prototype.resolvedOptions()

Beschreibung

Die Methode resolvedOptions() zeigt dir, mit welchen Einstellungen eine Intl.ListFormat-Instanz tatsächlich arbeitet. Das kann von dem abweichen, was du dem Konstruktor übergeben hast: Die Laufzeitumgebung handelt die gewünschte Locale mit den verfügbaren Locales aus und ergänzt fehlende Optionen durch Standardwerte.

Das zurückgegebene Objekt hat folgende Eigenschaften:

  • locale – der BCP-47-Sprach-Tag der tatsächlich verwendeten Locale (z. B. "de" oder "en-US").
  • type – "conjunction" (und-Liste), "disjunction" (oder-Liste) oder "unit" (Einheitenliste, ohne Verbindungswort bzw. mit Komma).
  • style – "long", "short" oder "narrow".

Nützlich ist die Methode vor allem zum Debuggen, zum Protokollieren der verwendeten Einstellungen und zum Prüfen, ob eine angeforderte Locale unterstützt wird oder auf eine andere zurückgefallen ist. Außerdem kannst du die Optionen verwenden, um eine gleich konfigurierte Instanz zu erzeugen.

Rückgabewert

Typ
{ locale: string, type: string, style: string }
Beschreibung
Ein neues Objekt mit den aufgelösten Eigenschaften locale, type und style. Wenn du es veränderst, hat das keine Auswirkung auf die Instanz.

Beispiele

Standardwerte auslesen

const lf = new Intl.ListFormat('de');
console.log(lf.resolvedOptions());
{ locale: 'de', type: 'conjunction', style: 'long' }

Fallback der Locale erkennen

// Die Locale 'de-XX' existiert nicht – die Engine fällt auf 'de' zurück
const lf = new Intl.ListFormat('de-XX', { type: 'disjunction' });
const { locale, type, style } = lf.resolvedOptions();
console.log(locale, type, style);
console.log(lf.format(['Tee', 'Kaffee', 'Wasser']));
de disjunction long Tee, Kaffee oder Wasser

Formatter mit gleichen Einstellungen klonen

const original = new Intl.ListFormat('en', { style: 'short', type: 'unit' });
const { locale, ...options } = original.resolvedOptions();

// Neue Instanz mit identischen Optionen erzeugen
const kopie = new Intl.ListFormat(locale, options);
console.log(kopie.format(['5 lb', '12 oz']));
5 lb, 12 oz

Verwendete Einstellungen protokollieren

const userLocale = navigator.language ?? 'de-DE';
const lf = new Intl.ListFormat(userLocale, { style: 'narrow' });

const opts = lf.resolvedOptions();
console.info(`ListFormat aktiv: ${opts.locale} / ${opts.type} / ${opts.style}`);
ListFormat aktiv: de-DE / conjunction / narrow

// Wichtig · Fallstricke

  • Locale kann abweichen: locale gibt die tatsächlich verwendete Locale zurück, nicht unbedingt die angeforderte. Unbekannte Regionen oder Unicode-Erweiterungen (-u-…) fallen oft weg. Prüfe die Unterstützung vorab mit Intl.ListFormat.supportedLocalesOf().
  • Jedes Mal ein neues Objekt: Jeder Aufruf erzeugt ein frisches Objekt, deshalb gilt lf.resolvedOptions() === lf.resolvedOptions() als false. Vergleiche einzelne Eigenschaften, nicht die Objekte.
  • Nur auf Instanzen aufrufbar: Rufst du die Methode mit einem this auf, das keine Intl.ListFormat-Instanz ist, wird ein TypeError ausgelöst.
  • Kompatibilität: Unterstützt ab Chrome 72, Firefox 78, Safari 14.1 und Node.js 12.17 (mit vollständigen ICU-Daten). In älteren Umgebungen fehlt Intl.ListFormat ganz – hier hilft ein Polyfill wie @formatjs/intl-listformat.
  • Die Option localeMatcher aus dem Konstruktor erscheint nicht im Ergebnis.