Globalisierung für Windows Presentation Foundation
Aktualisiert: November 2007
In diesem Thema werden Aspekte beschrieben, die Sie beim Schreiben von Windows Presentation Foundation (WPF)-Anwendungen für den weltweiten Markt beachten sollten. Die Programmierelemente für die Globalisierung werden in Microsoft .NET in System.Globalization definiert.
Dieses Thema enthält folgende Abschnitte.
- XAML-Globalisierung
- Entwerfen einer internationalen Benutzeroberfläche mit XAML
- Entwickeln von lokalisierbaren Anwendungen
- Verwenden von ClickOnce in lokalisierten Anwendungen
- Verwandte Abschnitte
XAML-Globalisierung
Extensible Application Markup Language (XAML) basiert auf XML und nutzt die in der XML-Spezifikation definierte Globalisierungsunterstützung. In den folgenden Abschnitten werden einige wichtige XAML-Features beschrieben, die Sie beachten sollten.
Zeichenverweise
Ein Zeichenverweis gibt die Nummer für das jeweilige Unicode-Zeichen im Dezimal- oder Hexadezimalformat an. Im folgenden Beispiel wird ein Dezimalzeichenverweis veranschaulicht.
Ϩ
In diesem Beispiel wird ein Hexadezimalzeichenverweis veranschaulicht. Beachten Sie, dass vor der Hexadezimalzahl ein x steht.
Ϩ
Codierung
XAML unterstützt die Codierungen ASCII, Unicode UTF-16 und UTF-8. Die Codierungsanweisung steht am Anfang des XAML-Dokuments. Wenn kein Codierungsattribut vorhanden ist und keine Bytereihenfolge festgelegt ist, verwendet der Parser standardmäßig UTF-8. UTF-8 und UTF-16 sind die bevorzugten Codierungen. UTF-7 wird nicht unterstützt. Im folgenden Beispiel wird veranschaulicht, wie Sie eine UTF-8-Codierung in einer XAML-Datei angeben.
?xml encoding="UTF-8"?
Language-Attribut
XAML verwendet xml:lang, um das Sprachattribut eines Elements darzustellen. Um die CultureInfo-Klasse zu nutzen, muss als Sprachattributwert einer der von CultureInfo vordefinierten Kulturnamen verwendet werden. xml:lang ist in der Elementstruktur vererbbar (durch XML-Regeln, nicht unbedingt wegen der Vererbung einer Abhängigkeitseigenschaft). Der Standardwert ist eine leere Zeichenfolge, sofern keine explizite Zuweisung vorhanden ist.
Das Sprachattribut ist sehr nützlich für die Angabe von Dialekten. Zum Beispiel hat Französisch eine andere Rechtschreibung, ein anderes Vokabular und eine andere Aussprache in Frankreich, Quebec, Belgien und der Schweiz. Auch Chinesisch, Japanisch und Koreanisch nutzen Codepunkte in Unicode gemeinsam, während sich die ideografischen Formen unterscheiden und völlig andere Schriftarten verwendet werden.
Im folgenden Extensible Application Markup Language (XAML)-Beispiel wird das fr-CA-Sprachattribut verwendet, um kanadisches Französisch anzugeben.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
XAML unterstützt alle Unicode-Features einschließlich der Ersatzzeichen. Solange der Zeichensatz Unicode zugeordnet werden kann, wird er unterstützt. GB18030 führt beispielsweise einige Zeichen ein, die der Chinesisch, Japanisch und Koreanisch (CFK)-Erweiterung A and B sowie Ersatzzeichenpaaren zugeordnet werden. Daher wird dieser Zeichensatz voll unterstützt. Eine WPF-Anwendung kann mit StringInfo Zeichenfolgen bearbeiten, ohne zu wissen, ob es dafür Ersatzzeichenpaare oder Kombinationszeichen gibt.
Entwerfen einer internationalen Benutzeroberfläche mit XAML
In diesem Abschnitt werden Features der Benutzeroberfläche (user interface, UI) beschrieben, die Sie beim Schreiben einer Anwendung beachten sollten.
Internationaler Text
WPF beinhaltet die integrierte Verarbeitung aller Schreibsysteme, die Microsoft .NET Framework unterstützt.
Zurzeit werden die folgenden Skripts unterstützt:
Arabisch
Bengali
Devanagari
Kyrillisch
Griechisch
Gujarati
Gurmukhi
Hebräisch
Ideografische Skripts
Kannada
Laotisch
Lateinisch
Malayalam
Mongolisch
Oriya
Syrisch
Tamil
Telugu
Thaana
Thailändisch*
Tibetanisch
*In dieser Version werden die Anzeige und Bearbeitung, nicht jedoch die Worttrennung in thailändischem Text unterstützt.
Die folgenden Skripts werden zurzeit nicht unterstützt:
Khmer
Koreanisch (Hangul)
Myanmar
Sinhala
Alle Schreibsystemmodule unterstützen OpenType-Schriften. OpenType-Schriften können die OpenType-Layouttabellen enthalten. Sie erleichtern den Entwicklern das Entwerfen internationaler und hochwertiger typografischer Schriften. Die Layouttabellen für OpenType-Schriften enthalten Informationen über Symbolersetzungen, die Symbolpositionierung, die Ausrichtung und die Baselinepositionierung. Mit ihrer Hilfe können Textverarbeitungsanwendungen das Textlayout optimieren.
OpenType-Schriften ermöglichen die Verwaltung großer Symbolsätze mithilfe der Unicode-Codierung. Diese Codierung gewährleistet eine breite internationale Unterstützung sowie typografische Symbolvarianten.
Für das Textrendering nutzt WPF die Subpixel-Technologie von Microsoft ClearType. Diese Technologie unterstützt die Auflösungsunabhängigkeit. Sie verbessert die Lesbarkeit enorm und ermöglicht Dokumenten für alle Skripts eine Qualität wie bei hochwertigen Magazinen.
Internationales Layout
WPF bietet eine sehr komfortable Möglichkeit der Unterstützung horizontaler, bidirektionaler und vertikaler Layouts. In PresentationFramework kann die FlowDirection-Eigenschaft zur Definition des Layouts verwendet werden. Folgende Flussrichtungsmuster stehen zur Verfügung:
LeftToRight - horizontales Layout für Lateinisch, ostasiatische Sprachen usw.
RightToLeft - bidirektional für Arabisch, Hebräisch usw.
Entwickeln von lokalisierbaren Anwendungen
Wenn Sie eine Anwendung für die weltweite Nutzung schreiben, müssen Sie auf die Lokalisierbarkeit der Anwendung achten. In den folgenden Themen werden relevante Punkte in diesem Zusammenhang erörtert.
Mehrsprachige Benutzeroberfläche
Durch die mehrsprachigen Benutzeroberflächen (MUI, Multilanguage User Interface) unterstützt Microsoft das Umschalten von einer Sprache zu einer anderen in den UIs. Eine WPF-Anwendung verwendet das Assemblymodell zur Unterstützung von MUI. Eine Anwendung enthält sprachneutrale Assemblys sowie sprachabhängige Satellitenressourcenassemblys. Der Einstiegspunkt ist eine verwaltete .EXE-Datei in der Hauptassembly. Das WPF-Ressourcenladeprogramm nutzt den Ressourcenmanager von Framework, um die Ressourcensuche und das Fallback zu unterstützen. Mehrere Sprachsatellitenassemblys arbeiten mit derselben Hauptassembly. Die geladene Ressourcenassembly hängt von der CurrentUICulture des aktuellen Threads ab.
Lokalisierbare Benutzeroberfläche
WPF-Anwendungen definieren ihre Benutzeroberfläche mit XAML. Mit XAML können Entwickler eine Hierarchie von Objekten mit einem Satz von Eigenschaften und Logik angeben. XAML wird hauptsächlich verwendet, um WPF-Anwendungen zu entwickeln. Sie können damit aber auch eine Hierarchie beliebiger common language runtime (CLR)-Objekte angeben. Die meisten Entwickler gestalten mit XAML die Benutzeroberfläche ihrer Anwendung und verwenden eine Programmiersprache wie C# für Reaktionen auf Benutzerinteraktion.
Aus Ressourcensicht ist eine XAML-Datei, die eine sprachabhängige Benutzeroberfläche beschreiben soll, ein Ressourcenelement. Daher muss ihr endgültiges Verteilungsformat lokalisierbar sein, um internationale Sprachen zu unterstützen. Da XAML keine Ereignisse verwalten kann, enthalten viele XAML-Anwendungen zu diesem Zweck Codeblöcke. Weitere Informationen finden Sie unter Übersicht über XAML. Code wird entfernt und in verschiedenen Binärdateien kompiliert, wenn eine XAML-Datei in binäre XAML (BAML) mit Token versehen wird. BAML-Dateien, Bilder und andere Arten verwalteter Ressourcenobjekte werden entweder in die Satellitenressourcenassembly eingebettet, die in andere Sprachen lokalisiert werden kann, oder in die Hauptassembly, wenn keine Lokalisierung vorgesehen ist.
Tipp
WPF-Anwendungen unterstützen alle Framework-CLR-Ressourcen einschließlich Zeichenfolgentabellen, Bilder usw.
Erstellen von lokalisierbaren Anwendungen
Lokalisierung bedeutet, eine Benutzeroberfläche für andere Länder anzupassen. Wenn eine WPF-Anwendung lokalisierbar sein soll, müssen Entwickler alle lokalisierbaren Ressourcen in einer Ressourcenassembly erstellen. Die Ressourcenassembly wird in verschiedene Sprachen lokalisiert, und der Code-Behind wird mithilfe der Ressourcenverwaltungs-API geladen. Eine der erforderlichen Dateien für eine WPF-Anwendung ist eine Projektdatei (.proj). Alle in der Anwendung verwendeten Ressourcen müssen in der Projektdatei enthalten sein. Im folgenden Beispiel aus einer CSPROJ-Datei wird veranschaulicht, wie Sie dafür vorgehen müssen.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Um eine Ressource in der Anwendung zu verwenden, instanziieren Sie ResourceManager, und laden Sie die zu verwendende Ressource. Im folgenden Beispiel wird veranschaulicht, wie Sie dafür vorgehen müssen.
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
Verwenden von ClickOnce in lokalisierten Anwendungen
ClickOnce ist eine neue Windows Forms-Bereitstellungstechnologie, die im Lieferumfang von Microsoft Visual Studio 2005 enthalten ist. Es ermöglicht die Anwendungsinstallation und Aktualisierung von Webanwendungen. Wenn eine mit ClickOnce bereitgestellte Anwendung lokalisiert ist, kann sie nur in der lokalisierten Kultur angezeigt werden. Beispiel: Wenn eine bereitgestellte Anwendung in Japanisch lokalisiert ist, kann sie nur unter dem japanischen Microsoft Windows und nicht unter dem englischen Windows angezeigt werden. Dies ist ein Problem, weil japanische Benutzer häufig auch eine englische Version von Windows ausführen.
Dieses Problem wird durch die Einstellung des neutralen Sprachfallbackattributs gelöst. Ein Anwendungsentwickler kann optional Ressourcen aus der Hauptassembly entfernen und angeben, dass sich die Ressourcen in einer Satellitenassembly für eine spezifische Kultur befinden. Zur Steuerung dieses Prozesses verwenden Sie NeutralResourcesLanguageAttribute. Der Konstruktor der NeutralResourcesLanguageAttribute-Klasse hat zwei Signaturen. Eine Signatur verwendet einen UltimateResourceFallbackLocation-Parameter, um die Position anzugeben, an der ResourceManager die Fallbackressourcen extrahieren soll: die Hauptassembly oder eine Satellitenassembly. Im folgenden Beispiel wird veranschaulicht, wie Sie das Attribut verwenden. Für die endgültige Fallbackposition weist der Code ResourceManager an, im Verzeichnis der aktuell ausgeführten Assembly im Unterverzeichnis "de" nach den Ressourcen zu suchen.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]