Start · Sprachen · PHP · Referenz · msgfmt_get_locale

msgfmt_get_locale

Funktion

Gibt das Locale zurück, für das der <code>MessageFormatter</code>-Objekt erstellt wurde.

seit PHP 5.3.0 Kategorie: string

Signatur

msgfmt_get_locale(MessageFormatter $formatter): string

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

Typ
string
Beschreibung
Gibt den Locale-String zurück, der beim Erstellen des Formatters verwendet wurde (z. B. '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;
Formatter-Locale: de_DE

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]);
Formatter wurde auf de_DE umgestellt. Maria hat 42 Nachrichten.

// 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).