In der folgenden Grafik wird die Ausgabe des Beispiels für das Dialogfeld Ausführen gezeigt.
Englisch:
.png)
Deutsch:
.png)
Entwerfen eines globalen Dialogfelds Ausführen
In diesem Beispiel wird das Dialogfeld Ausführen mit WPF und XAML erzeugt. Dieses Dialogfeld ist identisch mit dem Dialogfeld Ausführen, das im Microsoft Windows-Startmenü zur Verfügung steht.
Das vollständige Beispiel finden Sie unter Beispiel für das Globalisieren des Dialogfelds zum Ausführen.
Beim Erstellen von globalen Dialogfeldern ist Folgendes zu betonen:
Automatic Layout
In Window1.xaml:
<Window SizeToContent="WidthAndHeight">
Die vorherige Window-Eigenschaft passt die Größe des Fensters automatisch an die Größe des Inhalts an. Durch diese Eigenschaft wird verhindert, dass Inhalt, der nach der Lokalisierung an Größe zunimmt, abgeschnitten wird. Sollte der Inhalt nach der Lokalisierung an Größe abnehmen, wird nicht benötigter Platz außerdem entfernt.
<Grid x:Uid="Grid_1">
Uid-Eigenschaften werden benötigt, damit die WPF-Lokalisierungs-APIs ordnungsgemäß ausgeführt werden.
Sie werden durch WPF-Lokalisierungs-APIs verwendet, um Änderungen zwischen der Entwicklung und der Lokalisierung der Benutzeroberfläche (user interface, UI) nachzuverfolgen. Mithilfe der Uid-Eigenschaften können Sie eine neuere Version der Benutzeroberfläche mit einer älteren Lokalisierung der Benutzeroberfläche zusammenführen. Sie fügen eine Uid-Eigenschaft hinzu, indem Sie msbuild /t:updateuid RunDialog.csproj in der Windows SDK-Befehlsshell ausführen. Hierbei handelt es sich um die empfohlene Methode zum Hinzufügen von Uid-Eigenschaften, da manuelles Hinzufügen normalerweise sehr zeitaufwändig und wenig präzise ist. Sie können überprüfen, ob Uid-Eigenschaften ordnungsgemäß festgelegt sind, indem Sie msbuild /t:checkuid RunDialog.csproj ausführen.
Die Benutzeroberfläche wird mithilfe des Grid-Steuerelements strukturiert. Dieses Steuerelement eignet sich für automatische Layouts in WPF. Beachten Sie, dass das Dialogfeld in drei Zeilen und fünf Spalten geteilt wird. Keine der Zeilen- oder Spaltendefinitionen hat eine feste Größe. Daher können sich die Benutzeroberfläche-Elemente, die sich in jeder Zelle befinden, während der Lokalisierung an jede Größenänderung anpassen.
Die ersten beiden Spalten, in die die Bezeichnungen Öffnen: und ComboBox eingefügt sind, nehmen 10 Prozent der Gesamtbreite der Benutzeroberfläche ein.
Beachten Sie, dass im Beispiel das Feature für die gemeinsame Größenänderung von Grid verwendet wird. Die letzten drei Spalten nutzen diesen Umstand, indem sie in derselben SharedSizeGroup eingefügt werden. Wie aufgrund des Eigenschaftennamens zu erwarten ist, ermöglicht dies den Spalten, dieselbe Größe zu verwenden. Wenn also "Browse…" in die längere Zeichenfolge "Durchsuchen…" lokalisiert wird, nehmen alle Schaltflächen an Breite zu, anstatt dass eine kleine Schaltfläche "OK" und eine unverhältnismäßig große Schaltfläche "Durchsuchen…" angezeigt werden.
Xml:lang
Xml:lang="en-US"
Beachten Sie, dass xml:lang-Behandlung in XAML am Stammelement der Benutzeroberfläche platziert ist. Diese Eigenschaft beschreibt die Kultur eines bestimmten Elements und seiner untergeordneten Elemente. Dieser Wert wird von mehreren Features in WPF verwendet und sollte im Rahmen der Lokalisierung entsprechend geändert werden. Dieser Wert bestimmt, welches Sprachwörterbuch zur Silbentrennung und Rechtschreibprüfung verwendet wird. Außerdem wirkt er sich auf die Anzeige von Ziffern aus und bestimmt, welche Schriftart durch die automatische Schriftartauswahl ausgewählt wird. Schließlich beeinflusst diese Eigenschaft die Anzeige von Nummern und die Gestaltung von Text in komplexen Skripts. Der Standardwert ist "en-US".
Building a Satellite Resource Assembly
In .csproj:
<UICulture>en-US</UICulture>
Beachten Sie die zusätzliche UICulture-Eigenschaft. Wird diese auf einen gültigen CultureInfo-Wert festgelegt, z. B. en-US, wird durch das Erstellen des Projekts eine Satellitenassembly mit sämtlichen lokalisierbaren Ressourcen erzeugt.
<Resource Include="RunIcon.JPG">
<Localizable>False</Localizable>
</Resource>
Die Datei RunIcon.JPG muss nicht lokalisiert werden, da sie für alle Kulturen identisch angezeigt werden sollte. Localizable ist auf False festgelegt, damit es in der sprachneutralen Hauptassembly verbleibt anstatt in der Satellitenassembly. Für den Standardwert aller nicht kompilierbaren Ressourcen wird Localizable auf True festgelegt.
Lokalisieren des Dialogfelds Ausführen
Parse
Die Analyse der lokalisierbaren Ressourcen aus der Satellitenassembly ist der erste Schritt der Lokalisierung, nachdem die Anwendung erstellt wurde. Verwenden Sie für dieses Thema das LocBaml-Beispieltool, das sich unter Beispiel zum LocBaml-Tool befindet. Bedenken Sie, dass LocBaml lediglich ein Beispieltool und dafür konzipiert ist, Ihnen den Einstieg in das Erstellen eines Lokalisierungstools zu erleichtern, das sich dem Lokalisierungsprozess anpasst. Analysieren Sie mithilfe von LocBaml Folgendes: LocBaml /parse RunDialog.resources.dll /out:, um die Datei "RunDialog.resources.dll.CSV" zu generieren.
Localize
Verwenden Sie Ihren bevorzugten CSV-Editor, der Unicode unterstützt, um diese Datei zu bearbeiten. Filtern Sie alle Einträge mit der Lokalisierungskategorie "None" heraus. Folgende Einträge sollten angezeigt werden:
Resource key | Localization Category | Value |
Button_1:System.Windows.Controls.Button.$Content | Button | OK |
Button_2:System.Windows.Controls.Button.$Content | Button | Cancel |
Button_3:System.Windows.Controls.Button.$Content | Button | Browse... |
ComboBox_1:System.Windows.Controls.ComboBox.$Content | ComboBox | |
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Text | Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource ein, die daraufhin von Windows für Sie geöffnet wird. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Text | Open: |
Window_1:System.Windows.Window.Title | Title | Run |
Eine Lokalisierung der Anwendung ins Deutsche macht folgende Übersetzungen erforderlich:
Ressourcenschlüssel | Lokalisierungskategorie | Wert |
Button_1:System.Windows.Controls.Button.$Content | Schaltfläche | OK |
Button_2:System.Windows.Controls.Button.$Content | Schaltfläche | Abbrechen |
Button_3:System.Windows.Controls.Button.$Content | Schaltfläche | Durchsuchen… |
ComboBox_1:System.Windows.Controls.ComboBox.$Content | ComboBox | |
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Text | Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource ein, die daraufhin von Windows für Sie geöffnet wird. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Text | Öffnen: |
Window_1:System.Windows.Window.Title | Titel | Ausführen |
Generate
Der letzte Lokalisierungsschritt umfasst das Erstellen der neu lokalisierten Satellitenassembly. Dies kann mit dem folgenden LocBaml-Befehl ausgeführt werden:
LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DE
Wenn diese Datei resources.dll im deutschen Windows in den Ordner de-DE neben der Hauptassembly platziert wird, dann wird automatisch diese Ressource anstelle der Ressource im Ordner es-US geladen. Wenn Sie keine deutsche Version von Windows besitzen, um das zu testen, legen Sie die Kultur auf eine beliebige Kultur des verwendeten Windows fest (z. B. en-US). Ersetzen Sie anschließend die ursprüngliche resources.dll-Datei.
Satellite Resource Loading
MyDialog.exe | en-US\MyDialog.resources.dll | de-DE\MyDialog.resources.dll |
|---|
Code | Ursprüngliche englische BAML | Lokalisierte BAML |
Kulturell neutrale Ressourcen | Weitere Ressourcen auf Englisch | Weitere ins Deutsche lokalisierte Ressourcen |
Basierend auf der Thread.CurrentThread.CurrentUICulture der Anwendung wählt .NET Framework die zu ladende Satellitenressourcenassembly automatisch aus. Dies wird die Standardkultur des Windows-Betriebssystems. Wenn Sie also das deutsche Windows verwenden, wird de-DE\MyDialog.resources.dll geladen und beim englischen Windows wird en-US\MyDialog.resources.dll geladen. Sie können für die Anwendung die endgültige Fallbackressource festlegen, indem Sie NeutralResourcesLanguage in der Datei AssemblyInfo.* des Projekts angeben. Wenn Sie beispielsweise Folgendes angeben:
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
wird die en-US\MyDialog.resources.dll mit der deutschen Windows-Version verwendet, falls weder de-DE\MyDialog.resources.dll noch de\MyDialog.resources.dll verfügbar sind.