Wie entwerfe ich meine Webseite, so dass unterschiedliche internationale Datumsformate dargestellt werden können?
Besucher einer Website aus verschiedenen Ländern können ein Datumsformat falsch verstehen. Das Format MM/TT/JJ ist für US-Amerikaner eindeutig. In Europa wird hauptsächlich das Format TT/MM/JJ verwendet. Japan verwendet JJ/MM/TT. Die Separatoren können Slashs, Striche oder Punkte sein.In manchen Ländern werden kleine Zahlen mit einer vorstehenden Null ergänzt, andere lassen diese weg. Angenommen ein gebürtiger Japaner liest eine im amerikanischen Englisch verfasste Webseite aus Deutschland die das Datum 03/04/02 enthält. Wie interpretiert er dieses Datum?
Ihr erster Impuls ist vielleicht anzunehmen, dass das Problem bei der Übersetzung der Website in andere Sprachen gelöst wird - d.h. lass den Übersetzter das Problem lösen. Widerstehen Sie diesem Impuls. Wollen Sie wirklich zwei Kopien des Dokumentes für eine englische und eine amerikanische Version pflegen, die sich nur anhand des Datumsformates unterscheiden? Auf jeden Fall müssen Sie mit mehrsprachigen Lesern umgehen, wie dem im oben gezeigten Beispiel.
Sie haben hierzu drei Möglichkeiten, alle mit Vor- und Nachteilen:
ISO 8601 spezifiziert das Format YYYY-MM-DD. 2003-04-02 ist eindeutiger als 03/04/02. (Manche modifizieren das ISO-Format und verwenden ein Kürzel für den Monat, um ihn von der Tagesangabe zu trennen. Z.B. 2003-Apr-02, jedoch ist dies nun nicht mehr ortsunabhängig.)
Pro:
Contra:
Hierzu verwenden Sie einen Namen für den Monat (abgekürzt oder vollständig) und eine vierstellige Zahl für alle Jahresangaben des gregorianischen Kalenders. Zum Beispiel: 2. April 2003.
Pro:
Contra:
Der HTTP Accept-Language-Header bestimmt nur die Spracheinstellungen des Benutzers, wird aber ebenfalls gewöhnlich für die Ortsangabe verwendet.
Die Methode funktioniert gut bei dynamisch generierten Web-Dokumenten, wenn auf einer Seite ein Datum aus einer im Hintergrund gelagerten Datensammlung eingefügt werden soll, sofern die Erwartungen eines Benutzers an ein Datumsformat klar sind. Ausschlaggebend ist eher der sprachliche Kontext als nur die Einstellungen des Browsers. Zum Beispiel:
Wie dies umgesetzt wird, ist unterschiedlich und abhängig von Ihrer Entwicklungsumgebung. Hier sind einige Hinweise für die gängigsten Umgebungen.
Rufen Sie die Methode getLocale
des ServletRequest
oder des HttpServletRequest
Objekts auf. Verwenden Sie das erhaltene Locale
Objekt, um DateFormat
aufzurufen. Beachten Sie, dass das SHORT Format nur Zahlen verwendet. Wenn Sie eindeutige Formate wünschen, verwenden Sie FULL. In einigen Ländern ist selbst LONG numerisch.
Beachten Sie auch ICU4J seit es mehr up to date Daten (und mehr Funktionalität) als die JDK-Programme enthält.
Verwenden Sie Request.ServerVariables('HTTP_ACCEPT_LANGUAGE')
, um die Benutzer-Einstellungen zu erhalten. Ermitteln Sie die erste Angabe von der Liste der akzeptierten Länder. Sie müssen ein eigenes Mapping von der Ortsangabe in Buchstaben zu einem nummerischen Bezeichner durchführen. Setzen Sie Session.LCID
auf den resultierenden Wert. Rufen Sie FormatDateTime
zur Formatierung des Datums auf.
Verwenden Sie vbLongDate, um Mehrdeutigkeit zu vermeiden.
Verwenden Sie $ENV{'HTTP_ACCEPT_LANGUAGE'}
, um die bevorzugte Sprache zu erhalten und POSIX:strftime
zur Formatierung der Datumswerte.
Sie müssen ein eigenes Mapping von den Sprachwerten zu dem Formatierungsstring durchführen.
Es gibt keine ideale Lösung für die Problematik. Wägen Sie die Möglichkeiten ab und entscheiden Sie gemäß Ihren Prioritäten und Ihrer Sachlage.
Ist aus der Sicht des Benutzers eine Doppeldeutigkeit möglich, ist es üblich Namen für den Monat und vierstellige Jahreszahlen für Daten des gregorianischen Kalenders anzugeben oder zumindest auf der Seite anzugeben, wie die Daten zu interpretieren sind.
Datumsangaben können durch dynamische Technologien, zur Anpassung an den sprachlichen Kontext der Seite, neu formatiert werden.
Manche haben den Entwurf eines <date>-Tags empfohlen, das die Datumsangaben anhand der Ortsangaben des Benutzers darstellen würde. Dies neigt zur gleichen Problematik, wie sie das Beispiel des Japaners für die dynamische Generierung des Datums beschreibt. Das angemessene Format ist öfters abhängig vom sprachlichen Kontext der Seite, als von der Plattform des Benutzers.