Start · Sprachen · JavaScript · Referenz · Intl.Locale.prototype.collation

Intl.Locale.prototype.collation

Eigenschaft

Gibt den Kollationstyp (Sortierregel) eines <code>Intl.Locale</code>-Objekts zurück, z. B. <code>"phonebk"</code> oder <code>"pinyin"</code>, oder <code>undefined</code>, wenn keiner gesetzt ist.

seit JavaScript ES2020 (Intl.Locale); Baseline: alle modernen Brow Kategorie: method-property

Signatur

get Intl.Locale.prototype.collation

Beschreibung

Die Accessor-Eigenschaft collation liefert den Kollationstyp eines Intl.Locale-Objekts. Er legt fest, nach welchen Regeln Zeichenketten sortiert und verglichen werden. Viele Sprachen haben mehrere übliche Sortierordnungen, zum Beispiel die deutsche Telefonbuch-Sortierung ("phonebk", bei der „ü“ wie „ue“ behandelt wird) oder bei Chinesisch die Sortierung nach Pinyin ("pinyin") bzw. nach Strichzahl ("stroke").

Den Wert setzt du auf zwei Wegen: über die Unicode-Erweiterung -u-co- im Sprach-Tag (z. B. "de-DE-u-co-phonebk") oder über die Option collation im Konstruktor new Intl.Locale(tag, { collation }). Kommt beides vor, gilt die Option. Ist kein Kollationstyp angegeben, gibt die Eigenschaft undefined zurück.

Richtig nützlich wird die Eigenschaft zusammen mit Intl.Collator oder String.prototype.localeCompare(): Ein Locale-Objekt mit Kollationstyp kannst du direkt an einen Collator übergeben, um nach einer bestimmten Sortierordnung zu sortieren. Die Eigenschaft hat nur einen Getter. Sie ist also schreibgeschützt; für einen anderen Wert erzeugst du ein neues Intl.Locale-Objekt.

Rückgabewert

Typ
string | undefined
Beschreibung
Der Kollationstyp als Unicode-Typbezeichner (z. B. "phonebk", "pinyin", "stroke", "emoji", "eor") oder undefined, wenn keiner angegeben wurde.

Beispiele

Kollationstyp aus dem Sprach-Tag lesen

const locale = new Intl.Locale("de-DE-u-co-phonebk");
console.log(locale.collation);
console.log(locale.baseName);
phonebk de-DE

Kollationstyp über die Konstruktor-Option setzen

const zh = new Intl.Locale("zh-CN", { collation: "pinyin" });
console.log(zh.collation);
console.log(zh.toString());

// Die Option hat Vorrang vor der Erweiterung im Tag
const ueberschrieben = new Intl.Locale("zh-u-co-stroke", { collation: "pinyin" });
console.log(ueberschrieben.collation);

// Ohne Angabe: undefined
console.log(new Intl.Locale("de").collation);
pinyin zh-CN-u-co-pinyin pinyin undefined

Praxis: Namen nach deutscher Telefonbuch-Ordnung sortieren

const namen = ["Müller", "Muffler", "Mueller"];

const standard = new Intl.Locale("de");
const telefonbuch = new Intl.Locale("de", { collation: "phonebk" });

const sortiere = (locale) =>
  [...namen].sort(new Intl.Collator(locale).compare);

console.log(standard.collation ?? "(Standard)", sortiere(standard));
console.log(telefonbuch.collation, sortiere(telefonbuch));
(Standard) [ 'Mueller', 'Muffler', 'Müller' ] phonebk [ 'Mueller', 'Müller', 'Muffler' ]

Prüfen, ob die Kollation tatsächlich unterstützt wird

const locale = new Intl.Locale("en-US", { collation: "pinyin" });
console.log(locale.collation); // wird nicht geprüft

const collator = new Intl.Collator(locale);
console.log(collator.resolvedOptions().collation);
pinyin default

// Wichtig · Fallstricke

  • Keine Prüfung auf Unterstützung: Intl.Locale kontrolliert nur, ob die Schreibweise stimmt (3–8 alphanumerische Zeichen). Ob die Kollation für die Sprache existiert, prüft es nicht. Welche Kollation tatsächlich greift, zeigt erst new Intl.Collator(locale).resolvedOptions().collation; nicht unterstützte Werte werden dort zu "default".
  • Ungültige Werte: Eine syntaktisch falsche Option wie { collation: \"x\" } wirft einen RangeError.
  • "standard" und "search": Diese Werte ignoriert Intl.Collator absichtlich. Für die Suche verwendest du stattdessen die Collator-Option usage: \"search\".
  • Schreibgeschützt: Die Eigenschaft hat nur einen Getter. Eine Zuweisung bleibt ohne Wirkung und wirft im Strict Mode einen TypeError.
  • Alle verfügbaren Kollationen eines Locales liefert Intl.Locale.prototype.getCollations(). In älteren Engines heißt das Gegenstück collations und ist dort als Eigenschaft umgesetzt. Die Liste unterstützter Werte insgesamt gibt Intl.supportedValuesOf(\"collation\") zurück.
  • Kompatibilität: Chrome 74+, Firefox 75+, Safari 14+, Node.js 12+ (mit vollständigen ICU-Daten).