Empfehlungen für die Entwicklung weltweit einsatzfähiger Anwendungen
Aktualisiert: November 2007
In diesem Abschnitt wird die empfohlene Vorgehensweise zum Entwickeln von weltweit einsatzfähigen Anwendungen beschrieben.
Empfohlene Vorgehensweise für die Globalisierung
Erstellen Sie den Anwendungs-Unicode intern.
Verwenden Sie die vom System.Globalization-Namespace bereitgestellten kulturfähigen Klassen, um Daten zu ändern und zu formatieren.
Verwenden Sie zum Sortieren die SortKey-Klasse und die CompareInfo-Klasse.
Verwenden Sie für Zeichenfolgenvergleiche die CompareInfo-Klasse.
Verwenden Sie zum Formatieren von Datum und Uhrzeit die DateTimeFormatInfo-Klasse.
Verwenden Sie zum Formatieren von numerischen Daten die NumberFormatInfo-Klasse.
Verwenden Sie für gregorianische und nicht gregorianische Kalender die Calendar-Klasse oder eine der spezifischen Calendar-Implementierungen.
Verwenden Sie die in den entsprechenden Situationen von der System.Globalization.CultureInfo-Klasse bereitgestellten Kultureigenschafteneinstellungen. Verwenden Sie für Formatierungsaufgaben (wie das Formatieren von Datum und Uhrzeit oder zum Formatieren numerischer Daten) die CultureInfo.CurrentCulture-Eigenschaft. Verwenden Sie zum Abrufen von Ressourcen die CultureInfo.CurrentUICulture-Eigenschaft. Die CurrentCulture-Eigenschaft und die CurrentUICulture-Eigenschaft können pro Thread festgelegt werden.
Aktivieren Sie für die Anwendung das Lesen und Schreiben von Daten für eine Vielzahl von Codierungen, indem Sie die Codierungsklassen im System.Text-Namespace verwenden. Gehen Sie nicht von ASCII-Daten aus. Gehen Sie davon aus, dass internationale Zeichen überall dort zur Verfügung gestellt werden, wo der Benutzer Text eingeben kann. Lassen Sie beispielsweise internationale Zeichen in Servernamen, Verzeichnissen, Dateinamen, Benutzernamen und URLs zu.
Wenn Sie die UTF8Encoding-Klasse verwenden, empfiehlt sich aus Sicherheitsgründen der Einsatz der Fehlererkennungsfunktion, die von dieser Klasse bereitgestellt wird. Zum Aktivieren der Fehlererkennung erstellen Sie eine Instanz der Klasse mithilfe des Konstruktors, der einen throwOnInvalidBytes-Parameter akzeptiert, und legen Sie throwOnInvalidBytes auf true fest.
Behandeln Sie Zeichenfolgen möglichst als ganze Zeichenfolgen und nicht als eine Reihe einzelner Zeichen. Dies ist besonders beim Sortieren von und Suchen nach untergeordneten Zeichenfolgen von Bedeutung. Dadurch werden Probleme vermieden, die beim Analysieren von kombinierten Zeichen auftreten können.
Zeigen Sie Text mithilfe der Klassen im System.Drawing-Namespace an.
Damit die betriebssystemübergreifende Konsistenz gewährleistet ist, dürfen Benutzereinstellungen CultureInfo nicht überschreiben. Verwenden Sie den CultureInfo-Konstruktor, der einen useUserOverride-Parameter akzeptiert, und legen Sie den Wert auf false fest.
Testen Sie die Anwendung auf internationalen Betriebssystemen mithilfe von internationalen Daten.
Wenn eine Sicherheitsentscheidung auf dem Ergebnis eines Zeichenfolgenvergleichs oder einer Änderung der Groß-/Kleinschreibung beruht, führen Sie eine kulturunabhängige Operation durch, indem Sie die CultureInfo.InvariantCulture-Eigenschaft explizit festlegen. Durch diese Vorgehensweise wird sichergestellt, dass das Ergebnis nicht durch den Wert von CultureInfo.CurrentCulture beeinflusst wird Unter Benutzerdefinierte Schreibungszuordnungen und Sortierregeln finden Sie ein Beispiel dafür, wie kulturabhängige Zeichenfolgenvergleiche zu inkonsistenten Ergebnissen führen können.
Empfohlene Vorgehensweise für die Lokalisierung
Verschieben Sie alle lokalisierbaren Ressourcen in DLLs, die nur für Ressourcen vorgesehen sind. Lokalisierbare Ressourcen sind Benutzeroberflächenelemente wie Zeichenfolgen, Fehlermeldungen, Dialogfelder, Menüs und eingebettete Objektressourcen.
Zeichenfolgen und Benutzeroberflächenressourcen dürfen nicht hart codiert werden.
Legen Sie in den DLLs, die nur für Ressourcen vorgesehen sind, keine nicht lokalisierbaren Ressourcen ab, um Unklarheiten bei der Übersetzung zu vermeiden.
Verwenden Sie keine zusammengesetzten Zeichenfolgen, die während der Laufzeit aus verketteten Ausdrücken erstellt werden. Das Lokalisieren von zusammengesetzten Zeichenfolgen ist schwer, weil bei der Reihenfolge häufig von der englischen Grammatik ausgegangen wird, die in anderen Sprachen nicht zutrifft.
Vermeiden Sie unklare Konstrukte wie "Empty Folder", in denen die Zeichenfolgen in Abhängigkeit davon, welche grammatische Rolle den Komponenten der Zeichenfolgen zugeordnet wird, unterschiedlich übersetzt werden können. "Empty" kann beispielsweise entweder ein Verb oder ein Adjektiv sein, d. h., das Konstrukt kann unterschiedlich übersetzt werden.
Vermeiden Sie in der Anwendung die Verwendung von Bildern und Symbolen, die Text enthalten. Das Lokalisieren dieser Texte ist teuer.
Für die Zeichenfolgen sollte auf der Benutzeroberfläche viel Platz vorhanden sein, denn in einigen Sprachen sind für manche Ausdrücke 50 bis 75 % mehr Platz erforderlich.
Verwenden Sie die System.Resources.ResourceManager-Klasse, um Ressourcen basierend auf der Kultur abzurufen.
Verwenden Sie Microsoft Visual Studio 2005, um Windows Forms-Dialogfelder zu erstellen, damit diese mit dem Windows Forms Resource Editor-Tool (Winres.exe) lokalisiert werden können. Windows Forms-Dialogfelder dürfen nicht manuell codiert werden.
Es empfiehlt sich, eine professionelle Lokalisierung (Übersetzung) anfertigen zu lassen.
Eine vollständige Beschreibung des Erstellens und Lokalisierens von Ressourcen finden Sie unter Ressourcen in Anwendungen.
Empfohlene Vorgehensweise für die Globalisierung von ASP.NET-Anwendungen
Legen Sie die CurrentUICulture-Eigenschaft und die CurrentCulture-Eigenschaft in der Anwendung explizit fest. Verlassen Sie sich nicht auf Standardwerte.
Bei ASP.NET-Anwendungen handelt es sich um verwaltete Anwendungen, und sie können daher dieselben Klassen wie andere verwaltete Anwendungen zum Abrufen, Anzeigen und Bearbeiten von Informationen auf der Grundlage der Kultur verwenden.
Sie können in ASP.NET die folgenden drei Codierungstypen angeben:
requestEncoding gibt die Codierung an, die der Clientbrowser empfängt.
responseEncoding gibt die Codierung an, die an den Clientbrowser gesendet wird. In den meisten Fällen sollte responseEncoding mit requestEncoding übereinstimmen.
fileEncoding gibt die Standardcodierung für die Analyse von ASPX-, ASMX- und ASAX-Dateien an.
Geben Sie die Werte für das requestEncoding-Attribut, das responseEncoding-Attribut, das fileEncoding-Attribut, das culture-Attribut und das uiCulture-Attribut an den folgenden drei Stellen in der ASP.NET-Anwendung an:
Im Globalisierungsabschnitt einer Web.config-Datei. Diese Datei befindet sich außerhalb der ASP.NET-Anwendung. Weitere Informationen finden Sie unter <globalization>-Element.
In einer Seitendirektive. Wenn sich eine Anwendung auf einer Seite befindet, wurde die Datei bereits gelesen. Daher können für fileEncoding und requestEncoding keine Werte mehr festgesetzt werden. Nur für uiCulture, Culture und responseEncoding können in einer Seitendirektive Werte angegeben werden.
Programmgesteuert im Anwendungscode. Diese Einstellung kann auf Anforderung geändert werden. Wie bei der Seitendirektive ist es bei Erreichen des Anwendungscodes bereits zu spät für die Festlegung von Werten für fileEncoding und requestEncoding. Nur uiCulture, Culture und responseEncoding können im Anwendungscode angegeben werden.
Für die uiCulture kann die vom Browser akzeptierte Sprache festgelegt werden. Weitere Informationen finden Sie im Beispiel "Arbeiten mit Ressourcen" im Schnellstart zu ASP.NET.