Quick-Tipp: Web-Apps richtig lokalisieren (Daten und Zahlen)

Dies ist mal wieder eine schnelle Übersetzung eines offiziellen Xojo-Blogbeitrags, in dem es um die landestypisch korrekte Ausgabe von Daten (im Sinne von Datumsangaben) und Zahlen geht.

Wenn sich Ihre App auf dem Desktop tummelt, ist das kinderleicht:

Dim Heute As Xojo.Core.Date = Xojo.Core.Date.Now
EinControl.Text = Heute.toText(Xojo.Core.Locale.Current)

gibt das Datum so aus, wie es sich gemäß der Einstellungen des Benutzerrechners gehört. Gleiches gilt auch für Zahlen oder Geldbeträge, wo u.a. die Bedeutung von Punkten und Kommata landestypisch vertauscht sein kann.

Versuchen Sie das bei einer Web-App, wird die Ausgabe mit hoher Wahrscheinlichkeit angloamerikanischen Gepflogenheiten folgen. Warum? Xojo.Core.Locale.Current greift auf die Einstellungen des Webservers zu, nicht auf die per Browser übermittelten Sesssion-Benutzerdaten. Die Server laufen häufig mit englischer Spracheinstellung.

Wie kommt man nun an die Anwendervorgaben? Einfach so:

Dim langCode As Text = Session.LanguageCode.DefineEncoding(Encodings.UTF8).ToText
Dim locale As New Xojo.Core.Locale(langCode)

Session.LanguageCode liefert einen String der Art „de“ oder „en“ – jedenfalls was immer gebraucht wird, um gemäß der Liste an ISO 639-Sprachcodes eine Locale zu erzeugen. Allerdings als Text, und da die Quelle für Session.LanguageCode nicht direkt Xojo entstammt, sondern dem Web-Framework, muss zur Umwandlung nach Text eine Zeichencodierung definiert werden. UTF8 ist richtig für Systemauskünfte.

Daraus dann die locale erzeugt, und

EinControl.Text = Heute.toText(Locale)

sieht für jeden Besucher völlig richtig aus.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s