Signatur
Beschreibung
locale_get_default() liefert den aktuell gültigen Standard-Locale-Bezeichner als String zurück. Dieser Wert wird entweder aus der PHP-Konfigurationsdirektive intl.default_locale (in der php.ini) gelesen oder wurde zuvor zur Laufzeit über locale_set_default() gesetzt.
Der Rückgabewert entspricht einem IETF-Sprach-Tag (BCP 47), zum Beispiel de_DE, en_US oder fr_FR. Diese Locale-Bezeichner werden von sämtlichen Klassen und Funktionen der Intl-Erweiterung (z. B. Collator, NumberFormatter, DateFormatter) als Standardwert herangezogen, wenn kein expliziter Locale-Parameter übergeben wird.
Die Funktion ist der prozedurale Stil der Methode Locale::getDefault() aus der Locale-Klasse – beide sind funktional identisch. Sie eignet sich gut, um im Anwendungsstart zu prüfen, welches Locale aktiv ist, bevor formatierungsabhängige Ausgaben erfolgen.
Wurde in der Konfiguration kein Locale gesetzt und wurde locale_set_default() nie aufgerufen, gibt die Funktion in der Regel den systemseitigen ICU-Standardwert zurück (häufig en oder eine leere Zeichenkette, je nach Umgebung).
Rückgabewert
de_DE oder en_US). Ist kein Locale explizit gesetzt, wird der ICU-Standardwert zurückgegeben.Beispiele
Standard-Locale auslesen
<?php
// Aktuelles Standard-Locale ausgeben
$locale = locale_get_default();
echo 'Aktuelles Standard-Locale: ' . $locale . PHP_EOL;
Locale setzen und anschließend auslesen
<?php
// Locale auf Deutsch (Deutschland) setzen
locale_set_default('de_DE');
$locale = locale_get_default();
echo 'Gesetztes Locale: ' . $locale . PHP_EOL;
// Objektorientierter Stil (identisches Ergebnis)
$localeOO = Locale::getDefault();
echo 'OO-Stil: ' . $localeOO . PHP_EOL;
// NumberFormatter verwendet das Standard-Locale automatisch
$formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(1234.56, 'EUR') . PHP_EOL;
// Wichtig · Fallstricke
Konfiguration: Der Standardwert wird durch die INI-Direktive intl.default_locale in der php.ini gesteuert. Ist diese leer, nutzt die ICU-Bibliothek ein eigenes Systemstandard-Locale, was zu unerwarteten Ergebnissen führen kann. Es empfiehlt sich daher, das Locale zu Beginn jeder Anfrage explizit mit locale_set_default() zu setzen.
Unterschied zu setlocale(): locale_get_default() betrifft ausschließlich die Intl-Erweiterung und hat keinen Einfluss auf POSIX-Locale-Funktionen wie strftime() oder number_format(), die über setlocale() gesteuert werden.