Start · Sprachen · PHP · Referenz · locale_get_display_language

locale_get_display_language

Funktion

Gibt den lokalisierten Anzeigenamen der Sprache eines Locale-Strings zurück, z. B. <code>'de'</code> als <code>'Deutsch'</code> oder <code>'German'</code>.

seit PHP 5.3.0 Kategorie: string

Signatur

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

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

Typ
string|false
Beschreibung
Gibt den lokalisierten Anzeigenamen der Sprache als 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
Französisch 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>';
<select name="language"> <option value="de_DE">Deutsch</option> <option value="en_US">Englisch</option> <option value="fr_FR">Französisch</option> <option value="ja_JP">Japanisch</option> <option value="zh_Hans_CN">Chinesisch</option> </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.