PHP locale Date: Lokalisierung von Datumsausgaben

Die bisher angesprochenen Beispiele zur Programmierung der Ausgabe von Datumsinformationen sind recht unflexibel was die Ausgabe von Datum und Zeit angeht. Datumsspezifische Informationen, wie die Textbezeichnung von Monat, Tag oder Wochentag, werden hier stets in englischer Sprache ausgegeben. Ist der Programmierer an einer Ausgabe mit deutschen Bezeichnungen dieser Daten interessiert, so bleibt ihm unter Verwendung der Funktion date nur die „händische” Umwandlung dieser Informationen.

Eine andere Möglichkeit eröffnet die Verwendung von setlocale und einer anschließenden Konvertierung in ein String mit der Funktion strftime. Setlocale legt fest, in welcher Sprache die Ausgabe von Datumsinformationenen und gegebenenfalls auch Monetäre Daten oder Zahlen – im englischsprachigen Raum wird etwa der Dezimaltrenner nicht durch ein Komma, sondern durch einen Punkt dargestellt – erfolgen soll. Diese Länderspezifischen Ausgaben werden von bestimmten Funktionen, wie beispielsweise die Funktion strftime, bei der Konvertierung der Daten in Strings berücksichtigt. Als Locale für deutschsprachige Ausgaben verwendet man im Allgemeinen das Locale mit der Bezeichnung „de_DE”.

Die Funktion strftime funktioniert ähnlich wie die Funktion date und erwartet die selben Parameter. Der einzige Unterschied besteht darin, dass die Platzhalter mit einem Prozentzeichen eingeleitet werden und dass die Platzhalter hier anders belegt sind. Im Falle von strftime werden die folgenden Platzhalter unterstützt:

Auch im nun folgenden Script-Beispiel werden Datum und Zeit mit Hilfe der Funktion echo ausgegeben. Das Script stellt nacheinander unterschiedliche Locales ein und erzeugt dann die Ausgabe des eingestellten Datums, welches zuvor durch die Funktion strftime und unter Beachtung des eingestellten Locale in ein String konvertiert wurde. Die Zeilenumbrüche werden durch Ausgabe des dafür vorgesehenen HTML-Code erzeugt, damit nicht alles in einer einzigen Zeile landet.

<?php
    // Datum und Zeit mit dem gewünschten Timestamp vorbelegen
    $ts = mktime (14, 00, 00, 11, 6, 2008);
    // Ausgabe der eingestellten Datum- und Zeit-Informationen nach dem standardmäßig auf
    // dem Webserver eingestellten Locale.
    echo strftime ('%A, %d. %B %Y', $ts) . '<br>';

    // Alle durch Locales definierten Formate zur Datenausgabe auf die deutsche Sprache
    // umstellen, damit beispielsweise Wochentage und Monate künftig nicht mehr auf
    // englisch ausgegeben werden.
    setlocale (LC_ALL, 'de_DE');
    // Im Grunde reicht hier auch folgende Zeile, die nur die Ausgabe von Datum und Zeit
    // auf das gewünschte Locale einstellt:
    // setlocale (LC_TIME, 'de_DE');
    // Allerdings werden in diesem Fall nur Datum und Zeitangaben auf Deutsch ausgegeben,
    // alle anderen Locales werden dagegen nicht angerührt. Man kann allerdings davon
    // ausgehen, dass die Ausgabe von anderen landesspezifischen Daten ebenfalls nach deren
    // Vorgaben erfolgen soll. Schließlich ist es selten gewollt, dass Ausgaben eines Datums
    // nach deutschen Vorgaben, Dezimaltrenner aber nach englischem Maßstab erfolgen sollen.

    // Und nun nocheinmal die Datumsausgabe wie zuvor aber mit dem neu eingestellten Locale.
    echo strftime ('%A, %d. %B %Y', $ts) . '<br>';

    // Weil es so schön war, die gleiche Ausgabe auf Französisch
    // Hier ist allerdings nur die Ausgabe von Datum- und Zeitangaben betroffen, da nur das
    // Locale der Zeitangaben über das Script entsprechend eingestellt wird.
    setlocale (LC_TIME, 'fr_FR');
    echo strftime ('%A, %d. %B %Y', $ts) . '<br>';
?>

Thursday, 06. November 2008
Donnerstag, 06. November 2008
jeudi, 06. novembre 2008

¬ Tutorials



¬ Insolvenzrecht