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

Intl.Locale.prototype.region

Eigenschaft

Gibt den Regions-Subtag eines <code>Intl.Locale</code>-Objekts zurück (meist ein Ländercode wie <code>"DE"</code>) oder <code>undefined</code>, wenn keine Region angegeben ist.

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

Signatur

get Intl.Locale.prototype.region

Beschreibung

Die Zugriffseigenschaft region liefert den Regions-Subtag eines BCP-47-Sprach-Tags. Meist ist das ein Ländercode aus zwei Großbuchstaben nach ISO 3166-1 (z. B. "DE", "AT", "CH"). Es kann aber auch ein dreistelliger UN-M.49-Code für größere Gebiete sein, etwa "419" für Lateinamerika oder "150" für Europa.

Die Region legt regionale Unterschiede innerhalb einer Sprache fest. Dazu gehören Zahlen- und Datumsformate, Währungskonventionen und Schreibweisen: de-DE und de-CH sind beide Deutsch, formatieren Zahlen aber unterschiedlich. Mit region kannst du diesen Teil gezielt auslesen, ohne den Tag selbst mit regulären Ausdrücken zu zerlegen. Das ist z. B. nützlich für länderspezifische Voreinstellungen, Versandlogik oder die Auswahl einer Standardwährung.

Die Region lässt sich entweder direkt im Tag angeben ("en-GB") oder über die Option region im Konstruktor setzen bzw. überschreiben. Die Eigenschaft kann nur gelesen werden, einen Setter gibt es nicht. Wenn du eine andere Region brauchst, erzeugst du ein neues Intl.Locale-Objekt.

Rückgabewert

Typ
string | undefined
Beschreibung
Der normalisierte Regions-Subtag (Buchstabencodes in Großbuchstaben, z. B. "US", oder ein dreistelliger Zifferncode wie "419"). undefined, wenn das Gebietsschema keine Region enthält.

Beispiele

Region aus einem Sprach-Tag auslesen

const locales = ['de-DE', 'de-CH', 'en', 'es-419', 'zh-Hant-TW'];

for (const tag of locales) {
  const locale = new Intl.Locale(tag);
  console.log(tag, '→', locale.region);
}
de-DE → DE de-CH → CH en → undefined es-419 → 419 zh-Hant-TW → TW

Region über die Konstruktor-Option setzen oder überschreiben

const basis = new Intl.Locale('en-US');
const britisch = new Intl.Locale('en-US', { region: 'gb' });

console.log(basis.region);       // US
console.log(britisch.region);    // GB (normalisiert)
console.log(britisch.toString()); // en-GB
US GB en-GB

Fehlende Region mit maximize() ergänzen

const nutzerLocale = new Intl.Locale(navigator.language || 'de');

// maximize() leitet die wahrscheinlichste Region ab (Likely Subtags)
const region = nutzerLocale.region ?? nutzerLocale.maximize().region;

const waehrungen = { DE: 'EUR', AT: 'EUR', CH: 'CHF', US: 'USD', GB: 'GBP' };
const waehrung = waehrungen[region] ?? 'EUR';

const preis = new Intl.NumberFormat(nutzerLocale, {
  style: 'currency',
  currency: waehrung,
}).format(1234.5);

console.log(region, waehrung, preis);
DE EUR 1.234,50 € (bei Browsersprache „de“)

Regionsnamen lesbar anzeigen

const locale = new Intl.Locale('fr-CA');
const namen = new Intl.DisplayNames(['de'], { type: 'region' });

console.log(`Region: ${namen.of(locale.region)}`);
Region: Kanada

// Wichtig · Fallstricke

  • Die Region ist optional: Bei Tags wie "de" oder "en" ist region undefined. Prüfe den Wert deshalb immer, z. B. mit ??, oder ergänze ihn mit maximize(). Die Region, die maximize() liefert, ist nur geschätzt und sagt nichts über den tatsächlichen Standort des Nutzers.
  • Region ist nicht gleich Sprache: navigator.language gibt die Spracheinstellung des Browsers wieder, nicht das Land, in dem sich der Nutzer befindet. Für rechtlich relevante Entscheidungen wie Steuern, Versand oder Geo-Sperren ist der Wert nicht verlässlich.
  • Normalisierung: Buchstabencodes werden in Großbuchstaben zurückgegeben ("gb" wird zu "GB"). Vergleiche deshalb immer mit Großbuchstaben.
  • Zifferncodes: UN-M.49-Codes wie "419" sind Zeichenketten, keine Zahlen, und stehen für Regionen, nicht für einzelne Länder. Nachschlagetabellen, die nur Ländercodes kennen, sollten dafür einen Ausweichwert haben.
  • Nur lesbar: Eine Zuweisung wie locale.region = 'AT' bleibt ohne Wirkung (im Strict Mode gibt es einen TypeError). Erzeuge stattdessen ein neues Objekt mit der Option region.
  • Ungültige Werte: Eine syntaktisch ungültige Region in den Optionen (z. B. { region: 'Deutschland' }) wirft einen RangeError.
  • Kompatibilität: Intl.Locale wird in allen modernen Browsern (Chrome 74+, Firefox 75+, Safari 14+, Edge 79+) und in Node.js ab 12 unterstützt.