Signatur
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
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());
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']));
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']));
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}`);
// Wichtig · Fallstricke
- Locale kann abweichen:
localegibt 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 mitIntl.ListFormat.supportedLocalesOf(). - Jedes Mal ein neues Objekt: Jeder Aufruf erzeugt ein frisches Objekt, deshalb gilt
lf.resolvedOptions() === lf.resolvedOptions()alsfalse. Vergleiche einzelne Eigenschaften, nicht die Objekte. - Nur auf Instanzen aufrufbar: Rufst du die Methode mit einem
thisauf, das keineIntl.ListFormat-Instanz ist, wird einTypeErrorausgelö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.ListFormatganz – hier hilft ein Polyfill wie@formatjs/intl-listformat. - Die Option
localeMatcheraus dem Konstruktor erscheint nicht im Ergebnis.