Signatur
Beschreibung
locale_get_display_region() extrahiert den Regions-Teil (z. B. DE, US, AT) aus einem Locale-Bezeichner und gibt ihn als menschenlesbaren, lokalisierten Namen zurück. So wird z. B. aus dem Locale de_DE mit Anzeigesprache en der String Germany – oder mit Anzeigesprache de der String Deutschland.
Der zweite Parameter displayLocale legt die Sprache fest, in der der Regionsname ausgegeben werden soll. Wird er weggelassen, wird das Standard-Locale der Laufzeitumgebung (ini_get('intl.default_locale')) verwendet.
Die Funktion ist die prozedurale Variante von Locale::getDisplayRegion() und basiert auf der ICU-Bibliothek. Sie eignet sich besonders für mehrsprachige Anwendungen, die Regions- oder Ländernamen in der Sprache des Benutzers darstellen möchten – etwa in Formularen mit Länderauswahl.
Enthält der Locale-String keine Regionsangabe (z. B. de ohne Ländercode), gibt die Funktion einen leeren String zurück. Bei einem ungültigen Locale-Bezeichner wird false zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der Locale-Bezeichner, dessen Region angezeigt werden soll (z. B. de_DE, en_US, fr_CH). |
|
| $displayLocale | string | null | Das Locale, in dessen Sprache der Regionsname ausgegeben wird. Wird null übergeben oder weggelassen, wird das Standard-Locale aus intl.default_locale verwendet. |
Rückgabewert
false zurück, wenn der Locale-Bezeichner ungültig ist.Beispiele
Regionsname auf Deutsch und Englisch ausgeben
<?php
// Regionsname von 'de_AT' (Österreich) in verschiedenen Anzeigesprachen
$locale = 'de_AT';
echo locale_get_display_region($locale, 'de') . PHP_EOL; // Österreich
echo locale_get_display_region($locale, 'en') . PHP_EOL; // Austria
echo locale_get_display_region($locale, 'fr') . PHP_EOL; // Autriche
Ländernamen für ein Auswahlformular generieren
<?php
// Mehrere Locales – Ländernamen in der Sprache des Benutzers anzeigen
$userLocale = 'de_DE'; // Sprache des eingeloggten Benutzers
$locales = ['de_DE', 'en_US', 'fr_FR', 'ja_JP', 'pt_BR'];
foreach ($locales as $loc) {
$region = locale_get_display_region($loc, $userLocale);
if ($region !== false && $region !== '') {
echo $loc . ' → ' . $region . PHP_EOL;
}
}
Verhalten ohne Regionsangabe im Locale
<?php
// Locale ohne Ländercode – leerer String wird zurückgegeben
$result = locale_get_display_region('de', 'de');
var_dump($result); // string(0) ""
// Wichtig · Fallstricke
Abhängigkeit von ICU: Die zurückgegebenen Regionsnamen hängen von der auf dem Server installierten ICU-Version ab. Unterschiedliche ICU-Versionen können leicht abweichende Schreibweisen liefern.
Leerer Rückgabewert: Wenn kein Regions-Subtag im Locale vorhanden ist (z. B. de oder zh-Hans), gibt die Funktion einen leeren String zurück – nicht false. Prüfen Sie daher immer mit !== false && $result !== ''.
OOP-Äquivalent: Diese Funktion ist identisch mit der statischen Methode Locale::getDisplayRegion($locale, $displayLocale).