Start · Sprachen · JavaScript · Referenz · Intl.ListFormat

Intl.ListFormat

Klasse

Formatiert JavaScript-Arrays als sprachsensitive, lokalisierte Listen (z. B. „A, B und C" auf Deutsch).

seit JavaScript ES2021 (Baseline: alle modernen Browser) Kategorie: core

Signatur

class Intl.ListFormat

Beschreibung

Intl.ListFormat ist Teil der ECMAScript-Internationalisierungs-API (Intl) und ermöglicht es, JavaScript-Arrays oder iterierbare Werte als natürlichsprachliche Listen darzustellen – korrekt lokalisiert für die gewünschte Sprache und Region. Statt manuell Kommas und Konjunktionen zu setzen, übernimmt Intl.ListFormat die sprachspezifischen Trennzeichen, Konjunktionen (und/oder) und Disjunktionen automatisch.

Ein Intl.ListFormat-Objekt wird mit einem Locale-String (z. B. "de", "en-US") und einem optionalen Options-Objekt erstellt, das den Listentyp (conjunction, disjunction, unit) und den Stil (long, short, narrow) steuert. Die eigentliche Formatierung erfolgt dann über die Methoden format(), formatToParts() und supportedLocalesOf().

Typische Anwendungsfälle sind die Darstellung von Aufzählungen in Benutzeroberflächen, die Ausgabe von Fehlermeldungen oder die Anzeige von Auswahlmöglichkeiten – überall dort, wo eine „A, B und C"-Formulierung sprachlich korrekt sein muss. Dabei reicht das Spektrum von einfachen und-Verknüpfungen über oder-Listen bis hin zu Einheits-Listen wie „3 Stunden, 15 Minuten".

Die Klasse ist nicht konstruierbar ohne new – ein direkter Aufruf als Funktion wirft einen TypeError. Locale-Angaben folgen dem BCP-47-Standard; ungültige Locales lösen einen RangeError aus.

Rückgabewert

Typ
Intl.ListFormat
Beschreibung
Eine neue Intl.ListFormat-Instanz, die mit dem angegebenen Locale und den Optionen konfiguriert ist.

// Wichtig · Fallstricke

Browser-Kompatibilität: Intl.ListFormat ist seit Chrome 72, Firefox 78, Safari 14.1 und Edge 79 verfügbar. In älteren Umgebungen (z. B. IE 11) wird ein Polyfill benötigt (FormatJS). Node.js unterstützt Intl.ListFormat ab v12 (mit full-icu).

Leere Listen: format([]) gibt einen leeren String ("") zurück – dies sollte in der Anzeige-Logik berücksichtigt werden, da ein leeres Label für Nutzer verwirrend sein kann.

Performance: Das Erstellen von Intl.ListFormat-Instanzen ist teuer. Bei wiederholter Verwendung desselben Locale/Optionen-Paares sollte die Instanz wiederverwendet (gecacht) werden, statt sie in jedem Render-Zyklus neu zu erzeugen.

Typen im Detail: type: "unit" erzeugt in einigen Locales eine Liste ohne explizite Konjunktion (z. B. Englisch: "3 hours, 15 minutes, 30 seconds"), was sich von conjunction unterscheiden kann. Das genaue Trennzeichen ist locale-abhängig und darf nicht hartcodiert werden.