Start · Sprachen · PHP · Referenz · datefmt_get_locale

datefmt_get_locale

Funktion

Gibt das Locale zurück, das vom angegebenen <code>IntlDateFormatter</code>-Objekt verwendet wird.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_get_locale(IntlDateFormatter $formatter, int $type = Locale::ACTUAL_LOCALE): string|false

Beschreibung

datefmt_get_locale() ist die prozedurale Version der Methode IntlDateFormatter::getLocale() und liefert das Locale, das beim Erstellen des Formatters festgelegt wurde oder intern von der ICU-Bibliothek als tatsächliches Locale verwendet wird.

Der optionale Parameter $type steuert, welche Art von Locale zurückgegeben wird: Mit Locale::ACTUAL_LOCALE (Standard) erhält man das tatsächlich von ICU verwendete Locale, während Locale::VALID_LOCALE das gültige, von ICU anerkannte Locale liefert. Diese können voneinander abweichen, wenn das angeforderte Locale nicht vollständig unterstützt wird und ICU auf ein Fallback-Locale zurückfällt.

Die Funktion ist nützlich, wenn man nachträglich überprüfen möchte, welches Locale ein Formatter wirklich verwendet – insbesondere wenn der Formatter mit einem generischen oder ungenauen Locale-String erstellt wurde und man das tatsächlich aktive Locale inspizieren will.

Diese Funktion ist Teil der Intl-Erweiterung und setzt voraus, dass diese in der PHP-Installation verfügbar ist.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht IntlDateFormatter Das IntlDateFormatter-Objekt, dessen Locale abgefragt werden soll.
$type int Locale::ACTUAL_LOCALE Gibt an, welcher Locale-Typ zurückgegeben werden soll. Mögliche Werte: Locale::ACTUAL_LOCALE (tatsächlich von ICU verwendetes Locale) oder Locale::VALID_LOCALE (von ICU als gültig anerkanntes Locale).

Rückgabewert

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

Beispiele

Locale eines Formatters abfragen

<?php
$formatter = datefmt_create(
    'de_DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN
);

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

Vergleich von ACTUAL_LOCALE und VALID_LOCALE

<?php
$formatter = datefmt_create(
    'de_DE_PHONEBOOK',
    IntlDateFormatter::LONG,
    IntlDateFormatter::LONG,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN
);

$actual = datefmt_get_locale($formatter, Locale::ACTUAL_LOCALE);
$valid  = datefmt_get_locale($formatter, Locale::VALID_LOCALE);

echo "Tatsächliches Locale: " . $actual . "\n";
echo "Gültiges Locale:      " . $valid  . "\n";
Tatsächliches Locale: de_DE Gültiges Locale: de_DE_PHONEBOOK

OOP-Variante mit IntlDateFormatter::getLocale()

<?php
$formatter = new IntlDateFormatter(
    'fr_FR',
    IntlDateFormatter::MEDIUM,
    IntlDateFormatter::MEDIUM,
    'Europe/Paris'
);

// Prozedurale Variante
echo datefmt_get_locale($formatter) . "\n";

// OOP-Variante — gleichwertig
echo $formatter->getLocale() . "\n";
fr_FR fr_FR

// Wichtig · Fallstricke

Wenn die Intl-Erweiterung nicht installiert oder aktiviert ist, steht diese Funktion nicht zur Verfügung. In diesem Fall wirft PHP einen fatalen Fehler. Stellen Sie sicher, dass die Erweiterung in der php.ini aktiviert ist (extension=intl).

Das zurückgegebene Locale kann vom ursprünglich angegebenen abweichen, wenn ICU das exakte Locale nicht kennt und intern auf ein Fallback zurückgreift. Mit Locale::ACTUAL_LOCALE lässt sich dieses tatsächliche Verhalten transparent machen.