Signatur
Beschreibung
locale_get_display_language() ist die prozedurale Variante von Locale::getDisplayLanguage() aus der Intl-Erweiterung. Sie extrahiert den Sprachteil eines Locale-Strings (z. B. de aus de_DE) und gibt dessen menschenlesbaren Namen zurück – übersetzt in die Sprache des optionalen zweiten Parameters $displayLocale.
Wird $displayLocale nicht angegeben oder ist null, wird das Standard-Locale des Systems verwendet (gesetzt über Locale::setDefault() bzw. locale_set_default()). Das Ergebnis ist dabei vollständig von der ICU-Bibliothek des Systems abhängig.
Typische Anwendungsfälle sind mehrsprachige Benutzeroberflächen, in denen Sprachauswahl-Dropdowns mit menschenlesbaren Bezeichnungen gefüllt werden sollen, oder wenn Locale-Informationen in der jeweils aktiven Sprache des Benutzers dargestellt werden.
- Der Sprach-Tag folgt dem BCP 47-Standard (IETF Language Tags).
- Die Funktion ist abhängig von der php-intl-Erweiterung und der installierten ICU-Bibliothek.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der Locale-String, aus dem der Sprachanteil extrahiert und angezeigt werden soll, z. B. 'de_DE', 'en_US' oder 'zh_Hans_CN'. |
|
| $displayLocale | string|null | null | Das Locale, in dessen Sprache der Anzeigename zurückgegeben werden soll. Ist dieser Parameter null oder nicht angegeben, wird das Standard-Locale verwendet. |
Rückgabewert
string zurück, oder false im Fehlerfall (z. B. bei einem ungültigen Locale-String).Beispiele
Sprachname auf Deutsch und Englisch ausgeben
<?php
// Sprachanteil von 'fr_FR' auf Deutsch anzeigen
$sprache_de = locale_get_display_language('fr_FR', 'de_DE');
echo $sprache_de; // Französisch
// Sprachanteil von 'fr_FR' auf Englisch anzeigen
$sprache_en = locale_get_display_language('fr_FR', 'en_US');
echo "\n" . $sprache_en; // French
Sprachauswahl-Dropdown mit lokalisierten Namen befüllen
<?php
// Verfügbare Locales der Anwendung
$locales = ['de_DE', 'en_US', 'fr_FR', 'ja_JP', 'zh_Hans_CN'];
// Aktive Sprache des Benutzers (z. B. aus Session)
$userLocale = 'de_DE';
echo '<select name="language">' . PHP_EOL;
foreach ($locales as $locale) {
$label = locale_get_display_language($locale, $userLocale);
echo " <option value=\"$locale\">$label</option>" . PHP_EOL;
}
echo '</select>';
// Wichtig · Fallstricke
Erweiterung erforderlich: Die Funktion ist Teil der intl-Erweiterung. Diese muss im PHP-Build aktiviert sein (z. B. extension=intl in der php.ini). Fehlt sie, führt der Aufruf zu einem fatalen Fehler.
ICU-Version: Das genaue Ausgabe-Format und verfügbare Übersetzungen hängen von der auf dem Server installierten ICU-Bibliothek ab. Bei älteren ICU-Versionen können Übersetzungen fehlen oder abweichen.
Standard-Locale: Wenn $displayLocale nicht gesetzt wird und kein Standard-Locale via locale_set_default() definiert wurde, kann die Ausgabe je nach Systemkonfiguration variieren. Es empfiehlt sich, $displayLocale immer explizit zu übergeben.