Start · Sprachen · PHP · Referenz · locale_get_display_region

locale_get_display_region

Funktion

Gibt den lokalisierten Anzeigenamen der Region (Ländercode) eines Locale-Strings zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

locale_get_display_region(string $locale, string $displayLocale = null): string|false

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

Typ
string|false
Beschreibung
Gibt den lokalisierten Regionsnamen als String zurück. Gibt einen leeren String zurück, wenn der Locale keine Regionsangabe enthält. Gibt 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
Österreich Austria 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;
    }
}
de_DE → Deutschland en_US → Vereinigte Staaten fr_FR → Frankreich ja_JP → Japan pt_BR → Brasilien

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) ""
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).