TOC

This article has been localized into German by the community.

Arbeiten mit Kultur & Regionen:

Einleitung

Die Zeit, in der Sie eine Software erstellt haben, die nur auf ein paar lokalen Computern ausgeführt werden soll, ist so gut wie vorbei. Dank der Globalisierung und insbesondere des Internets wird Software heute weltweit auf den unterschiedlichsten Geräten eingesetzt. Das bedeutet, dass Ihr Code viele kulturspezifische Fälle behandeln muss, wie z.B. den Umgang mit Zahlen und Daten in einem anderen Format als dem, was Sie erwarten. Wussten Sie zum Beispiel, dass in vielen Ländern eine Zahl mit Brüchen (z.B. 1.42) keinen Punkt, sondern ein Komma als Dezimaltrennzeichen verwendet (z.B. 1,42)? Und wissen Sie, dass in vielen Ländern der Tag vor dem Monat in einem Datum geschrieben wird, während andere das Jahr zuerst schreiben?

Der Umgang mit all dem kann ein großer Aufwand sein, aber zum Glück hat das .NET-Framework mehrere Klassen, die uns helfen können, mit diesen Situationen umzugehen. Die am häufigsten verwendete ist die CultureInfo-Klasse, die wir im nächsten Artikel diskutieren werden, aber .NET bietet auch Klassen für die Arbeit mit Regionen und sogar bestimmten Kalendern (Sie wissen, dass sogar der Kalender nicht überall auf der Welt gleich ist?).

Dieses Thema ist besonders wichtig, wenn Sie an einer Anwendung arbeiten, die mehrere Sprachen unterstützen sollte, aber selbst wenn dies nicht der Fall ist, müssen Sie sich dennoch damit befassen, dass sie möglicherweise auf einem Gerät verwendet wird, das nicht dieselbe Notationen verwendet für z.B.: Daten und Zahlen. Um zu verdeutlichen, wie wichtig das ist, betrachten Sie dieses Beispiel:

string inputNumber = "1.425";
double usNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("en-US"));
double germanNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("de-DE"));
Console.WriteLine(usNumber.ToString() + " is not the same as " + germanNumber);

Betrachten Sie die Variable inputNumber als etwas, das wir gerade vom Benutzer der Anwendung erhalten haben, z.B. etwas, das in ein Textfeld auf einem Webformular eingegeben wurde. Wir verwenden die Methode double.Parse(), um sie in einen Float zu verwandeln, aber wir übergeben einen zweiten Parameter vom Typ CultureInfo - wenn wir diesen Parameter nicht übergeben, werden die Systemeinstellungen verwendet, die dann Englisch, Deutsch oder etwas ganz anderes sein können. Beachten Sie nun die Ausgabe:

1,425 is not the same as 1425

Ganz recht! Unser Zahlenwert ist gerade tausendmal größer geworden, weil in Deutschland ein Komma als Dezimaltrennzeichen verwendet wird, während ein Punkt als Tausendertrennzeichen dient. Das wäre in den meisten Anwendungen ein großes Problem, aber die gute Nachricht ist, dass das Beispiel zwar das Problem veranschaulicht, aber auch die Lösung: Sie müssen immer die Kontrolle darüber haben, wie Sie Eingaben erhalten, und dann entsprechend damit umgehen, denn wie Sie sehen können, ist .NET dank der CultureInfo-Klasse in der Lage, eine Zahl (und auch Daten!) in jedem der möglichen Formate zu parsen, solange Sie ihr sagen, was sie erwartet.

Zusammenfassung

Der Umgang mit kulturellen und regionalen Unterschieden ist beim Programmieren vielleicht noch wichtiger als im wirklichen Leben. Zum Glück für uns kann das .NET-Framework in dieser Hinsicht eine große Hilfe sein, solange Sie wissen, wo Sie suchen müssen. In den nächsten Artikeln werden wir die Werkzeuge des .NET-Frameworks zum Umgang mit diesen Unterschieden diskutieren.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!