Signatur
Beschreibung
Die statische Methode Intl.Collator.supportedLocalesOf() prüft, welche der angegebenen Sprachumgebungen (BCP-47-Sprach-Tags) die aktuelle JavaScript-Umgebung beim sprachabhängigen Vergleichen und Sortieren von Zeichenketten direkt unterstützt. Zurückgegeben werden nur die unterstützten Tags in kanonischer Schreibweise. Nicht unterstützte Tags fallen weg, statt dass stillschweigend die Standard-Locale verwendet wird.
Das hilft vor allem dann, wenn eine Anwendung eine Liste bevorzugter Sprachen hat (zum Beispiel aus navigator.languages oder dem HTTP-Header Accept-Language) und vorher wissen will, ob eine korrekte Sortierung nach den Regeln dieser Sprache möglich ist. So lässt sich gezielt ein eigener Fallback wählen oder ein Hinweis anzeigen.
Ein Tag gilt als unterstützt, wenn die Umgebung es selbst oder eine allgemeinere Variante davon kennt. "de-CH" kann also als unterstützt gelten, wenn nur Daten für "de" vorhanden sind. Die Reihenfolge der Eingabe bleibt im Ergebnis erhalten. Welche Locales tatsächlich verfügbar sind, hängt von der Engine und ihren ICU-Daten ab.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locales | string | string[] | Intl.Locale | Intl.Locale[] | undefined | undefined | Ein BCP-47-Sprach-Tag, ein Intl.Locale-Objekt oder ein Array davon. Bei undefined ist das Ergebnis ein leeres Array. Ungültige Tags lösen einen RangeError aus. |
| $options | object | undefined | Optionales Objekt mit der Eigenschaft localeMatcher: "lookup" oder "best fit" (Standard). Legt den Algorithmus für den Locale-Abgleich fest. |
Rückgabewert
Beispiele
Unterstützte Locales aus einer Liste filtern
const gewuenscht = ['de-DE', 'ban', 'sv', 'zh-Hans-CN'];
const unterstuetzt = Intl.Collator.supportedLocalesOf(gewuenscht);
console.log(unterstuetzt);
Sortier-Locale mit eigenem Fallback wählen
const waehleSortierLocale = (bevorzugt, fallback = 'en') => {
const [erste] = Intl.Collator.supportedLocalesOf(bevorzugt, { localeMatcher: 'lookup' });
return erste ?? fallback;
};
const locale = waehleSortierLocale(['xx-YY', 'sv-SE']);
const namen = ['Örjan', 'Anna', 'Zlatan', 'Åsa'];
namen.sort(new Intl.Collator(locale).compare);
console.log(locale, namen);
Kanonisierung und Fehlerbehandlung
console.log(Intl.Collator.supportedLocalesOf('DE-de'));
console.log(Intl.Collator.supportedLocalesOf(new Intl.Locale('fr', { region: 'CA' })));
try {
Intl.Collator.supportedLocalesOf('de_DE'); // Unterstrich ist ungültig
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- Engine-abhängig: Das Ergebnis hängt von den mitgelieferten ICU-Daten ab. Node.js-Builds mit
small-icu(vor Node 13) unterstützten oft nuren. Browser unterscheiden sich ebenfalls. - Ist ein Tag „unterstützt“, heißt das nicht, dass es eigene Sortierregeln dafür gibt. Oft greift nur die allgemeinere Sprache oder die Unicode-Standardsortierung (DUCET/CLDR root).
- Syntaktisch ungültige Tags (z. B.
"de_DE","") lösen einenRangeErroraus, statt still herausgefiltert zu werden. Nutzereingaben daher mittry…catchabsichern. - Der Unterschied zwischen
"lookup"und"best fit"ist implementierungsabhängig. In der Praxis liefern beide meist dasselbe Ergebnis. - Unicode-Erweiterungen wie
-u-co-phonebkbleiben im Rückgabewert erhalten. Ob die gewünschte Kollation aktiv ist, zeigt erstnew Intl.Collator(tag).resolvedOptions().collation.