Signatur
Beschreibung
msgfmt_get_locale() ist die prozedurale Variante der Methode MessageFormatter::getLocale() und liefert den Locale-String, der beim Erstellen des Formatters angegeben wurde. Das Locale steuert, wie Nachrichten, Zahlen, Datumsangaben und Pluralformen in der formatierten Ausgabe interpretiert werden.
Die Funktion ist nützlich, wenn man nachträglich überprüfen möchte, für welche Sprache oder Region ein bereits vorhandenes MessageFormatter-Objekt konfiguriert ist – etwa in mehrsprachigen Anwendungen, die Formatter dynamisch erzeugen und wiederverwenden.
Das zurückgegebene Locale entspricht dem BCP-47-/ICU-Locale-Format (z. B. de_DE, en_US) und kann direkt an andere Intl-Funktionen weitergegeben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | MessageFormatter | Das MessageFormatter-Objekt, dessen Locale abgefragt werden soll. |
Rückgabewert
'de_DE' oder 'en_US').Beispiele
Locale eines MessageFormatters ausgeben
<?php
$fmt = msgfmt_create('de_DE', '{0} hat {1,number} Nachrichten.');
$locale = msgfmt_get_locale($fmt);
echo 'Formatter-Locale: ' . $locale;
Locale prüfen und Formatter bei Bedarf neu erstellen
<?php
$fmt = new MessageFormatter('en_US', '{0} has {1,number} messages.');
// Prozedurale Abfrage des Locales
$locale = msgfmt_get_locale($fmt);
if ($locale !== 'de_DE') {
// Erstelle einen neuen Formatter für Deutsch
$fmt = new MessageFormatter('de_DE', '{0} hat {1,number} Nachrichten.');
echo 'Formatter wurde auf de_DE umgestellt.' . PHP_EOL;
}
echo msgfmt_format($fmt, ['Maria', 42]);
// Wichtig · Fallstricke
Die Funktion ist identisch mit dem Aufruf von MessageFormatter::getLocale() auf einem Objekt. Beide Varianten liefern exakt dasselbe Ergebnis. In objektorientiertem Code ist die OOP-Schreibweise bevorzugt; die prozedurale Form eignet sich für Legacy-Code oder einfache Skripte.
Beachte, dass ICU das angegebene Locale intern normalisieren kann, sodass der zurückgegebene String leicht vom ursprünglich übergebenen abweichen kann (z. B. 'de-DE' kann als 'de_DE' zurückgegeben werden).