Signatur
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
'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
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;
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.';
}
// 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.