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

Intl.Locale.prototype.script

Eigenschaft

Liefert den Schrift-Subtag (ISO 15924, z. B. <code>"Latn"</code>, <code>"Cyrl"</code>, <code>"Hant"</code>) eines <code>Intl.Locale</code>-Objekts oder <code>undefined</code>, wenn keiner angegeben ist.

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

Signatur

get Intl.Locale.prototype.script

Beschreibung

Die Accessor-Eigenschaft script gibt das Schriftsystem zurück, in dem die Sprache eines Gebietsschemas geschrieben wird. Der Wert entspricht dem Script-Subtag eines BCP-47-Sprach-Tags: ein vierstelliger Code nach ISO 15924 mit großem Anfangsbuchstaben, etwa Latn (lateinisch), Cyrl (kyrillisch), Arab (arabisch), Hans (vereinfachtes Chinesisch) oder Hant (traditionelles Chinesisch).

Das ist vor allem bei Sprachen wichtig, die in mehreren Schriften geschrieben werden, z. B. Serbisch (sr-Latn / sr-Cyrl), Usbekisch, Aserbaidschanisch oder Chinesisch. Mit script kann man etwa passende Schriftarten, Übersetzungsdateien oder Textrichtungen auswählen.

Der Wert kann auf zwei Wegen gesetzt werden: direkt im Tag (new Intl.Locale("sr-Cyrl")) oder über die Option script im Konstruktor. Die Option überschreibt dabei den Subtag im Tag. Ist keine Schrift angegeben, liefert die Eigenschaft undefined – eine wahrscheinliche Schrift erhält man erst über maximize().

Rückgabewert

Typ
string | undefined
Beschreibung
Der vierstellige ISO-15924-Schriftcode in kanonischer Schreibweise (z. B. "Latn") oder undefined, wenn das Gebietsschema keinen Script-Subtag enthält.

Beispiele

Schrift aus Tag und Option auslesen

const serbischKyrillisch = new Intl.Locale("sr-Cyrl-RS");
console.log(serbischKyrillisch.script);

// Option überschreibt den Subtag im Tag
const serbischLatein = new Intl.Locale("sr-Cyrl-RS", { script: "Latn" });
console.log(serbischLatein.script);
console.log(serbischLatein.toString());

// Kein Script-Subtag vorhanden
console.log(new Intl.Locale("de-DE").script);
Cyrl Latn sr-Latn-RS undefined

Wahrscheinliche Schrift mit maximize() ermitteln

const ermittleSchrift = (tag) => {
  const locale = new Intl.Locale(tag);
  // script ist oft undefined – maximize() ergänzt die wahrscheinlichste Schrift
  return locale.script ?? locale.maximize().script;
};

console.log(ermittleSchrift("de"));
console.log(ermittleSchrift("ru"));
console.log(ermittleSchrift("zh-TW"));
console.log(ermittleSchrift("zh-CN"));
console.log(ermittleSchrift("ar"));
Latn Cyrl Hant Hans Arab

Passende Schriftart je nach Schriftsystem wählen

const schriftarten = {
  Latn: "'Inter', sans-serif",
  Cyrl: "'Inter', 'PT Sans', sans-serif",
  Arab: "'Noto Naskh Arabic', serif",
  Hans: "'Noto Sans SC', sans-serif",
  Hant: "'Noto Sans TC', sans-serif",
};

const schriftartFuer = (tag) => {
  const { script } = new Intl.Locale(tag).maximize();
  return schriftarten[script] ?? "sans-serif";
};

console.log(schriftartFuer("zh-Hant-HK"));
console.log(schriftartFuer("fa"));
'Noto Sans TC', sans-serif 'Noto Naskh Arabic', serif

// Wichtig · Fallstricke

  • Nur lesbar: script ist ein Getter ohne Setter. Eine Zuweisung wird ignoriert (im Strict Mode gibt es einen TypeError). Ändern lässt sich die Schrift nur durch ein neues Intl.Locale-Objekt mit der Option script.
  • Häufig undefined: Die meisten Tags wie "en-US" enthalten keinen Script-Subtag. Wer immer einen Wert braucht, nutzt maximize().script – das Ergebnis ist aber nur eine Wahrscheinlichkeitsannahme auf Basis der CLDR-Daten.
  • Kanonisierung: Die Schreibweise wird vereinheitlicht, z. B. wird aus "sr-cyrl" der Wert "Cyrl". Ungültige Werte in der Option (z. B. { script: "Latin" }) lösen einen RangeError aus.
  • Keine Textrichtung: script sagt nichts direkt über die Schreibrichtung aus; dafür gibt es getTextInfo() bzw. textInfo (noch nicht in allen Engines, Firefox fehlt teilweise).
  • Kompatibilität: Intl.Locale gibt es seit Chrome 74, Firefox 75, Safari 14 und Node.js 12. Sehr alte Umgebungen benötigen ein Polyfill (z. B. @formatjs/intl-locale).