Szenario
Die Redaxo-Website verfügt über verschiedene Sprachen. Ein Datum ist im MYSQL-Format hinterlegt und soll in Abhängigkeit der Sprache korrekt formatiert ausgegeben werden.
Lösung
setlocale()
in PHP mit Sprach-Metainfos setzen.
Schritt-für-Schritt-Anleitung
Die Funktion setlocale()
benötigt eine Kombination aus Language Code
und Country Code
.
- Im Addon
Meta Infos
unterSprachen
ein neues Feldclang_country
einfügen:
Spaltenname: country
Feldbezeichnung: Country Code (ISO 3166)
Feldtyp: Text
Feldattribut (optional): pattern="[A-Z]{2}"
- In
System
unter Sprachen die gewünschten Sprachen anlegen und dabei in den FeldernCode
(fürLanguage Code
) undCountry Code
den korrekten Sprach- und Region-Codes eintragen, z.B.de
undDE
,de
undAT
,en
undGB
oderen
undUS
. Eine Liste der
Eine vollständige Liste an korrekten Country-Codes gibt es auf oracle.com: Language Codes und Country Codes
- Im
project
-Addon in derboot.php
folgenden Code einfügen
$clang = rex_clang::getCurrent();
setlocale(LC_TIME, $clang->getCode()."_".$clang->getValue('country').".utf8");
- Nun ist der aktuelle Sprachcode überal gesetzt und ein Datum kann ganz einfach mit
strftime()
formatiert werden, z.B.
strftime('%d. %B %Y', strtotime($event['date_begin'])) // Ergibt 03. Februar 2013