Start · Sprachen · PHP · Referenz · numfmt_get_locale

numfmt_get_locale

Funktion

Gibt das Locale des angegebenen <code>NumberFormatter</code>-Objekts zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_locale(NumberFormatter $formatter, int $type = ULOC_ACTUAL_LOCALE): string|false

Beschreibung

numfmt_get_locale() ist die prozedurale Variante der Methode NumberFormatter::getLocale() und liefert das Locale, das dem übergebenen Formatter zugeordnet ist. Das Locale steuert, wie Zahlen formatiert werden – etwa Dezimal- und Tausendertrennzeichen sowie Währungssymbole.

Über den optionalen Parameter $type lässt sich steuern, ob das tatsächlich verwendete Locale (ULOC_ACTUAL_LOCALE) oder das gewünschte Locale (ULOC_VALID_LOCALE) zurückgegeben wird. Diese können abweichen, wenn das angeforderte Locale nicht vollständig unterstützt wird und ICU auf ein Fallback-Locale ausgewichen ist.

Die Funktion ist besonders nützlich bei der Fehlersuche, wenn man prüfen möchte, welches Locale tatsächlich aktiv ist, oder wenn man das Locale eines Formatters dynamisch auslesen und weiterverwenden will.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Das NumberFormatter-Objekt, dessen Locale abgefragt werden soll.
$type int ULOC_ACTUAL_LOCALE Gibt an, welcher Locale-Typ zurückgegeben werden soll. Mögliche Werte sind ULOC_ACTUAL_LOCALE (das tatsächlich verwendete Locale) und ULOC_VALID_LOCALE (das nächste gültige Locale, das von ICU unterstützt wird).

Rückgabewert

Typ
string|false
Beschreibung
Gibt das Locale als String zurück (z. B. 'de_DE' oder 'en_US'). Bei einem Fehler wird false zurückgegeben.

Beispiele

Einfaches Auslesen des Locales

<?php
$formatter = numfmt_create('de_DE', NumberFormatter::DECIMAL);

$locale = numfmt_get_locale($formatter);
echo $locale; // de_DE
de_DE

Vergleich von ACTUAL vs. VALID Locale

<?php
// Ein Locale anfordern, das möglicherweise nicht vollständig unterstützt wird
$formatter = numfmt_create('de_DE_custom', NumberFormatter::DECIMAL);

$actual = numfmt_get_locale($formatter, ULOC_ACTUAL_LOCALE);
$valid  = numfmt_get_locale($formatter, ULOC_VALID_LOCALE);

echo 'Actual Locale: ' . $actual . PHP_EOL;
echo 'Valid Locale:  ' . $valid  . PHP_EOL;
Actual Locale: de Valid Locale: de_DE

Locale eines Formatters prüfen und weiterverwenden

<?php
$formatter = numfmt_create('fr_FR', NumberFormatter::CURRENCY);

$locale = numfmt_get_locale($formatter);

if ($locale !== false) {
    echo 'Formatter-Locale: ' . $locale . PHP_EOL;
    // Locale z. B. für einen weiteren Formatter verwenden
    $formatter2 = numfmt_create($locale, NumberFormatter::PERCENT);
    echo numfmt_format($formatter2, 0.85); // 85 %
} else {
    echo 'Fehler beim Abrufen des Locales.';
}
Formatter-Locale: fr_FR 85 %

// Wichtig · Fallstricke

Die Konstanten ULOC_ACTUAL_LOCALE und ULOC_VALID_LOCALE sind Klassenkonstanten von NumberFormatter (bzw. stammen aus der ICU-Bibliothek) und sind in PHP als globale Konstanten verfügbar, wenn die intl-Erweiterung geladen ist.

Wenn kein Fallback nötig ist, liefern ULOC_ACTUAL_LOCALE und ULOC_VALID_LOCALE dasselbe Ergebnis. Nur wenn ICU kein exaktes Locale finden konnte, können die Werte abweichen.