Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie die Verfügbarkeit Ihres Produkts auf nur eine Sprache beschränken, beschränken Sie Ihre potenzielle Kundenbasis auf einen Bruchteil der Weltweiten 7,5 Milliarden Einwohner. Wenn Sie möchten, dass Ihre Anwendungen ein globales Publikum erreichen, ist die kostengünstige Lokalisierung Ihres Produkts eine der besten und wirtschaftlichsten Möglichkeiten, mehr Kunden zu erreichen.
In dieser Übersicht werden Globalisierung und Lokalisierung in Windows Presentation Foundation (WPF) vorgestellt. Globalisierung ist das Design und die Entwicklung von Anwendungen, die an mehreren Standorten ausgeführt werden. So unterstützt die Globalisierung beispielsweise lokalisierte Benutzeroberflächen und regionale Daten für Benutzer in verschiedenen Kulturen. WPF bietet globalisierte Designfunktionen, einschließlich automatisches Layout, "Satellitenassemblys" und lokalisierter Attribute und Kommentare.
Lokalisierung ist die Übersetzung von Anwendungsressourcen in lokalisierte Versionen für die spezifischen Kulturen, die die Anwendung unterstützt. Wenn Sie in WPF lokalisieren, verwenden Sie die APIs im System.Windows.Markup.Localizer Namespace. Diese APIs unterstützen das Befehlszeilentool LocBaml Sample. Informationen zum Erstellen und Verwenden von LocBaml finden Sie unter Lokalisieren einer Anwendung.
Warnung
Das LocBaml-Tool funktioniert nur mit WPF für .NET Framework-Projekten, es funktioniert nicht mit WPF für .NET.
Bewährte Methoden für Globalisierung und Lokalisierung in WPF
Sie können die in WPF integrierten Globalisierungs- und Lokalisierungsfunktionen optimal nutzen, indem Sie auf die in WPF integrierten Benutzeroberflächendesigns und lokalisierungsbezogenen Tipps folgen, die dieser Abschnitt bereitstellt.
Bewährte Methoden für den WPF-UI-Entwurf
Wenn Sie eine WPF-basierte Benutzeroberfläche entwerfen, sollten Sie die folgenden bewährten Methoden implementieren:
Schreiben Sie Ihre UI in XAML; Vermeiden Sie das Erstellen der Benutzeroberfläche im Code. Wenn Sie Ihre Benutzeroberfläche mithilfe von XAML erstellen, machen Sie sie über integrierte Lokalisierungs-APIs verfügbar.
Vermeiden Sie absolute Positionen und feste Größen zum Layout von Inhalten. Verwenden Sie stattdessen die relative oder automatische Größenanpassung.
Verwenden Sie SizeToContent und behalten Sie die Breiten und Höhen auf
Auto
bei.Vermeiden Sie es, Canvas zum Gestalten von UIs zu verwenden.
Verwenden Sie Grid und nutzen Sie die Größenfreigabe-Funktion.
Stellen Sie zusätzlichen Platz in Seitenrändern bereit, da lokalisierter Text häufig mehr Platz benötigt. Zusätzlicher Leerraum ermöglicht mögliche überhängende Zeichen.
Aktivieren Sie TextWrapping auf TextBlock, um Zuschneiden zu vermeiden.
Legen Sie das
xml:lang
Attribut fest. Dieses Attribut beschreibt die Kultur eines bestimmten Elements und seiner untergeordneten Elemente. Der Wert dieser Eigenschaft ändert das Verhalten mehrerer Features in WPF. Beispielsweise ändert es das Verhalten der Silbentrennung, rechtschreibprüfung, Zahlenersetzung, komplexe Skriptgestaltung und Schriftfallback. Weitere Informationen zum Festlegen der XML:lang-Verarbeitung in XAML finden Sie unter Globalisierung für WPF.Erstellen Sie eine angepasste zusammengesetzte Schriftart, um eine bessere Kontrolle über Schriftarten zu erhalten, die für verschiedene Sprachen verwendet werden. Standardmäßig verwendet WPF die Schriftart "GlobalUserInterface.composite" in Ihrem Verzeichnis "Windows\Fonts".
Wenn Sie Navigationsanwendungen erstellen, die möglicherweise in einer Kultur lokalisiert werden, die Text in einem Rechts-nach-links-Format darstellt, legen Sie explizit die FlowDirection jeder Seite fest, um sicherzustellen, dass die Seite FlowDirection nicht von der NavigationWindow erbt.
Wenn Sie eigenständige Navigationsanwendungen erstellen, die außerhalb eines Browsers gehostet werden, legen Sie die StartupUri anfängliche Anwendung auf eine NavigationWindow statt auf eine Seite fest (z. B.
<Application StartupUri="NavigationWindow.xaml">
). Mit diesem Design können Sie das FlowDirection des Fensters und der Navigationsleiste ändern. Weitere Informationen und ein Beispiel finden Sie unter "Globalization Homepage Sample".
Bewährte Methoden für die WPF-Lokalisierung
Wenn Sie WPF-basierte Anwendungen lokalisieren, sollten Sie die folgenden bewährten Methoden implementieren:
Verwenden Sie Lokalisierungskommentare, um zusätzlichen Kontext für Lokalisierer bereitzustellen.
Verwenden Sie Lokalisierungsattribute, um die Lokalisierung zu steuern, anstatt Eigenschaften für Elemente selektiv auszulassen Uid . Weitere Informationen finden Sie unter Lokalisierungsattribute und Kommentare .
Verwenden Sie
msbuild -t:updateuid
und-t:checkuid
, um Uid-Eigenschaften in Ihrem XAML hinzuzufügen und zu überprüfen. Verwenden Sie Uid Eigenschaften, um Änderungen zwischen Entwicklung und Lokalisierung nachzuverfolgen. Uid Mithilfe von Eigenschaften können Sie neue Entwicklungsänderungen lokalisieren. Wenn Sie einer Benutzeroberfläche manuell Eigenschaften hinzufügen Uid , ist die Aufgabe in der Regel mühsam und weniger genau.Ändern oder bearbeiten Sie die Uid Eigenschaften nicht, nachdem Sie mit der Lokalisierung begonnen haben.
Verwenden Sie keine doppelten Uid Eigenschaften (denken Sie an diesen Tipp, wenn Sie den Befehl "Kopieren und Einfügen" verwenden).
Legen Sie den
UltimateResourceFallback
Speicherort in AssemblyInfo.* fest, um die entsprechende Sprache für den Fallback anzugeben (z. B.[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
).Wenn Sie Ihre Quellsprache in die Hauptassembly einschließen möchten, indem Sie das
<UICulture>
-Tag in der Projektdatei weglassen, legen Sie denUltimateResourceFallback
Speicherort als Hauptassembly anstatt des Satelliten fest (z. B.[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
).
Lokalisieren einer WPF-Anwendung
Wenn Sie eine WPF-Anwendung lokalisieren, haben Sie mehrere Optionen. Sie können beispielsweise die lokalisierbaren Ressourcen in Ihrer Anwendung an eine XML-Datei binden, lokalisierbaren Text in Resx-Tabellen speichern oder ihren Lokalisierer XAML-Dateien verwenden lassen. In diesem Abschnitt wird ein Lokalisierungsworkflow beschrieben, der die BAML-Form von XAML verwendet, die mehrere Vorteile bietet:
Sie können nach dem Erstellen lokalisieren.
Sie können eine neuere Version der BAML-Form von XAML mit Lokalisierungen aus einer älteren Version der BAML-Form von XAML aktualisieren, sodass Sie gleichzeitig lokalisieren können, während Sie entwickeln.
Sie können ursprüngliche Quellelemente und Semantik zur Kompilierungszeit überprüfen, da die BAML-Form von XAML die kompilierte Form von XAML ist.
Lokalisierungs-Build-Prozess
Wenn Sie eine WPF-Anwendung entwickeln, lautet der Buildprozess für die Lokalisierung wie folgt:
Der Entwickler erstellt und globalisiert die WPF-Anwendung. In der Projektdatei legt der Entwickler fest
<UICulture>en-US</UICulture>
, dass beim Kompilieren der Anwendung eine sprachneutrale Hauptassembly generiert wird. Diese Assembly verfügt über eine Satellitendatei .resources.dll, die alle lokalisierbaren Ressourcen enthält. Optional können Sie die Quellsprache in der Hauptassembly beibehalten, da unsere Lokalisierungs-APIs die Extraktion aus der Hauptassembly unterstützen.Wenn die Datei in den Build kompiliert wird, wird der XAML-Code in die BAML-Form von XAML konvertiert. Die kulturneutralen
MyDialog.exe
und kulturabhängigen (englischen)MyDialog.resources.dll
Dateien werden dem englischsprachigen Kunden freigegeben.
Lokalisierungsworkflow
Der Lokalisierungsprozess beginnt, nachdem die nicht lokalisierte MyDialog.resources.dll
Datei erstellt wurde. Die UI-Elemente und -Eigenschaften in Ihrem ursprünglichen XAML-Code werden aus der BAML-Form von XAML in Schlüsselwertpaare extrahiert, indem sie die APIs unter System.Windows.Markup.Localizerverwenden. Lokalisierer verwenden die Schlüssel-Wert-Paare, um die Anwendung zu lokalisieren. Sie können nach Abschluss der Lokalisierung eine neue .resource.dll aus den neuen Werten generieren.
Die Schlüssel der Schlüssel-Wert-Paare sind x:Uid
Werte, die vom Entwickler im ursprünglichen XAML-Code platziert werden. Diese x:Uid
Werte ermöglichen der API das Nachverfolgen und Zusammenführen von Änderungen, die zwischen dem Entwickler und dem Lokalisierer während der Lokalisierung auftreten. Wenn der Entwickler beispielsweise die Benutzeroberfläche ändert, nachdem der Lokalisierer mit der Lokalisierung begonnen hat, können Sie die Entwicklungsänderung mit der bereits abgeschlossenen Lokalisierungsarbeit zusammenführen, sodass minimale Übersetzungsarbeiten verloren gehen.
Die folgende Abbildung zeigt einen typischen Lokalisierungsworkflow, der auf der BAML-Form von XAML basiert. In diesem Diagramm wird davon ausgegangen, dass der Entwickler die Anwendung in Englisch schreibt. Der Entwickler erstellt und globalisiert die WPF-Anwendung. In der Projektdatei legt der Entwickler fest <UICulture>en-US</UICulture>
, dass beim Build eine sprachneutrale Hauptassembly mit einem Satelliten-.resources.dll generiert wird, der alle lokalisierbaren Ressourcen enthält. Alternativ könnte die Quellsprache in der Hauptassembly beibehalten werden, da WPF-Lokalisierungs-APIs die Extraktion aus der Hauptassembly unterstützen. Nach dem Buildvorgang wird der XAML-Code in BAML kompiliert. Die kulturneutrale MyDialog.exe.resources.dll werden an den englischsprachigen Kunden ausgeliefert.
Beispiele für die WPF-Lokalisierung
Dieser Abschnitt enthält Beispiele für lokalisierte Anwendungen, die Ihnen helfen, zu verstehen, wie Sie WPF-Anwendungen erstellen und lokalisieren.
Beispiel für das Dialogfeld "Ausführen"
Die folgende Grafik zeigt die Ausgabe des Beispiels für das Dialogfeld "Ausführen ".
Englisch:
Deutsch:
Entwerfen eines Dialogfelds für eine globale Ausführung
In diesem Beispiel wird ein Dialogfeld "Ausführen " mithilfe von WPF und XAML erstellt. Dieses Dialogfeld entspricht dem Dialogfeld "Ausführen ", das im Microsoft Windows-Startmenü verfügbar ist.
Einige Highlights für die Erstellung globaler Dialogfelder sind:
Automatisches Layout
In Window1.xaml:
<Window SizeToContent="WidthAndHeight">
Die vorherige Window-Eigenschaft ändert die Größe des Fensters automatisch entsprechend der Größe des Inhalts. Diese Eigenschaft verhindert, dass das Fenster Inhalte abschneidet, die nach der Lokalisierung größer werden; Außerdem wird nicht benötigte Speicherplatz entfernt, wenn inhalte nach der Lokalisierung verkleinert werden.
<Grid x:Uid="Grid_1">
Uid Eigenschaften sind erforderlich, damit WPF-Lokalisierungs-APIs ordnungsgemäß funktionieren.
Sie werden von WPF-Lokalisierungs-APIs verwendet, um Änderungen zwischen der Entwicklung und Lokalisierung der Benutzeroberfläche (UI) nachzuverfolgen. Eigenschaften von Uid ermöglichen es Ihnen, eine neuere Version der Benutzeroberfläche mit einer älteren Lokalisierung der Benutzeroberfläche zusammenzuführen. Sie fügen eine Uid Eigenschaft hinzu, indem Sie msbuild -t:updateuid RunDialog.csproj
in einer Befehlsshell ausführen. Dies ist die empfohlene Methode zum Hinzufügen Uid von Eigenschaften, da das manuelle Hinzufügen in der Regel zeitaufwändig und weniger genau ist. Sie können überprüfen, ob Uid Eigenschaften korrekt festgelegt sind, indem Sie ausführen msbuild -t:checkuid RunDialog.csproj
.
Die Benutzeroberfläche ist mithilfe des Grid Steuerelements strukturiert, das ein nützliches Steuerelement für die Nutzung des automatischen Layouts in WPF ist. Beachten Sie, dass das Dialogfeld in drei Zeilen und fünf Spalten unterteilt ist. Keine der Zeilen- und Spaltendefinitionen weist eine feste Größe auf; Daher können sich die UI-Elemente, die in jeder Zelle positioniert sind, anpassen, um die Größe während der Lokalisierung zu vergrößern und zu verkleinern.
<Grid.ColumnDefinitions>
<ColumnDefinition x:Uid="ColumnDefinition_1" />
<ColumnDefinition x:Uid="ColumnDefinition_2" />
Die ersten beiden Spalten, in denen die Beschriftung "Öffnen": und ComboBox platziert werden, verwenden 10 Prozent der Gesamtbreite der Benutzeroberfläche.
<ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
<ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
<ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>
Beachten Sie, dass das Beispiel die gemeinsame Größenanpassungsfunktion von Grid verwendet. Die letzten drei Spalten nutzen dies, indem sie sich selbst in dasselbe SharedSizeGroup setzen. Wie man von dem Namen der Eigenschaft erwarten würde, können die Spalten die gleiche Größe aufweisen. Also, wenn "Browse…" in die längere Zeichenfolge "Durchsuchen…" lokalisiert wird, werden alle Schaltflächen breiter, anstatt einer kleinen "OK"-Schaltfläche und einer unverhältnismäßig großen "Durchsuchen…"-Schaltfläche.
xml:lang
xml:lang="en-US"
Beachten Sie die xml:lang-Verarbeitung in XAML , die 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 während der Lokalisierung entsprechend geändert werden. Dieser Wert ändert, welches Sprachwörterbuch für die Silbentrennung und Rechtschreibprüfung von Wörtern verwendet wird. Sie wirkt sich auch auf die Anzeige von Ziffern aus und wie das Schriftarten-Fallbacksystem auswählt, welche Schriftart verwendet werden soll. Schließlich wirkt sich die Eigenschaft auf die Art und Weise aus, wie Zahlen angezeigt werden, und die Art und Weise, wie Texte in komplexen Schriften geschrieben werden, gestaltet werden. Der Standardwert ist "en-US".
Erstellen einer Satellitenressourcenzusammenstellung
In CSPROJ:
Bearbeiten Sie die .csproj
Datei, und fügen Sie das folgende Tag zu einem bedingungslosen <PropertyGroup>
Tag hinzu:
<UICulture>en-US</UICulture>
Beachten Sie das Hinzufügen eines UICulture
Werts. Wenn dies auf einen gültigen CultureInfo Wert wie en-USfestgelegt ist, wird beim Erstellen des Projekts eine Satelliten-Assembly mit allen lokalisierbaren Ressourcen generiert.
<Resource Include="RunIcon.JPG">
<Localizable>False</Localizable>
</Resource>
Das RunIcon.JPG
muss nicht lokalisiert werden, da es für alle Kulturen identisch sein sollte.
Localizable
ist so false
eingestellt, dass es in der sprachneutralen Hauptassembly statt in der Satellitenassembly verbleibt. Der Standardwert aller nicht kompilierbaren Ressourcen ist Localizable
auf true
.
Lokalisieren des Ausführen-Dialogs
Analyse
Nach dem Erstellen der Anwendung besteht der erste Schritt bei der Lokalisierung darin, die lokalisierbaren Ressourcen aus der Satellitenassembly zu analysieren. Verwenden Sie für die Zwecke dieses Themas das Beispiel-LocBaml-Tool, das unter LocBaml Tool Sample zu finden ist. Beachten Sie, dass LocBaml nur ein Beispieltool ist, das Ihnen bei den ersten Schritten beim Erstellen eines Lokalisierungstools helfen soll, das in Ihren Lokalisierungsprozess passt. Führen Sie unter Verwendung von LocBaml Folgendes aus, um zu parsen: LocBaml /parse RunDialog.resources.dll /out: um eine "RunDialog.resources.dll.CSV-Datei" zu generieren.
Warnung
Das LocBaml-Tool funktioniert nur mit WPF für .NET Framework-Projekten, es funktioniert nicht mit WPF für .NET.
Lokalisieren
Verwenden Sie Ihren bevorzugten CSV-Editor, der Unicode zum Bearbeiten dieser Datei unterstützt. Filtert alle Einträge mit einer Lokalisierungskategorie von "Keine". Die folgenden Einträge sollten angezeigt werden:
Ressourcenschlüssel | Lokalisierungskategorie | Wert |
---|---|---|
Button_1:System.Windows.Controls.Button.$Content | Schaltfläche | OKAY |
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 einer Programm-, Ordner-, Dokument- oder Internetressource ein, und Windows öffnet sie für Sie. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Text | Offen: |
Window_1:System.Windows.Window.Title | Titel | Laufen |
Die Lokalisierung der Anwendung auf Deutsch erfordert folgende Übersetzungen:
Ressourcenschlüssel | Lokalisierungskategorie | Wert |
---|---|---|
Button_1:System.Windows.Controls.Button.$Content | Schaltfläche | OKAY |
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, Dokumente oder einer Internetresource an. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Text | Öffnen: |
Window_1:System.Windows.Window.Title | Titel | Laufen |
generieren
Der letzte Schritt der Lokalisierung umfasst die Erstellung der neu lokalisierten Satellitenassembly. Dies kann mit dem folgenden LocBaml-Befehl erreicht werden:
LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll. CSV /out: . /cul:de-DE
Wenn diese resources.dll in einem de-DE Ordner neben der Hauptassembly platziert wird, wird diese Ressource automatisch anstelle des Ordners en-US geladen. Wenn Sie nicht über eine deutsche Version von Windows verfügen, um dies zu testen, legen Sie die Kultur auf die Kultur von Windows fest, en-US
die Sie verwenden (z. B. ), und ersetzen Sie die ursprüngliche Ressourcen-DLL.
Satellitenressourcen wird geladen
MyDialog.exe | en-US\MyDialog.resources.dll | de-DE\MyDialog.resources.dll |
---|---|---|
Programmcode | Original Englisch BAML | Lokalisierte BAML |
Kulturneutrale Ressourcen | Weitere Ressourcen in Englisch | Weitere Ressourcen, die auf Deutsch lokalisiert sind |
.NET wählt automatisch aus, basierend auf der Anwendung, welche Satellitenressourcenassembly geladen werden soll Thread.CurrentUICulture. Dies ist standardmäßig die Kultur Ihres Windows-Betriebssystems. Wenn Sie deutsch Windows verwenden, wird die de-DE\MyDialog.resources.dll Datei geladen. Wenn Sie Englisch Windows verwenden, wird die en-US\MyDialog.resources.dll Datei geladen. Sie können die ultimative Fallbackressource für Ihre Anwendung festlegen, indem Sie das Attribut in der NeutralResourcesLanguage
AssemblyInfo-Datei Ihres Projekts angeben. Wenn Sie beispielsweise Folgendes angeben:
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
dann wird die en-US\MyDialog.resources.dll Datei mit deutschem Windows verwendet, wenn keine der folgenden Dateien verfügbar ist: de-DE\MyDialog.resources.dll oder de\MyDialog.resources.dll.
Microsoft Saudi-Arabien -Homepage
Die folgenden Grafiken zeigen eine englische und arabische Homepage. Das vollständige Beispiel, das diese Grafiken erzeugt, finden Sie unter Globalization Homepage Sample.
Englisch:
Arabisch:
Entwerfen einer globalen Microsoft-Startseite
Dieses Modell der Microsoft Saudi-Arabien-Website veranschaulicht die Globalisierungsfeatures, die für RightToLeft-Sprachen bereitgestellt werden. Sprachen wie Hebräisch und Arabisch haben eine Leserichtung von rechts nach links, sodass das Layout der Benutzeroberfläche oft ganz anders angeordnet sein muss als in Links-nach-rechts-Sprachen wie Englisch. Das Lokalisieren von einer Sprache von links nach rechts in eine Sprache von rechts nach links oder umgekehrt kann sehr schwierig sein. WPF wurde entwickelt, um solche Lokalisierungen wesentlich einfacher zu gestalten.
Durchflussrichtung
Homepage.xaml:
<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
FlowDirection="LeftToRight"
Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
xml:lang="en-US">
Beachten Sie die FlowDirection Eigenschaft auf Page. Wenn Sie diese Eigenschaft auf RightToLeft ändern, wird die Anordnung der FlowDirection von Page und ihrer untergeordneten Elemente so geändert, dass das Layout dieser Benutzeroberfläche umgedreht wird, um von rechts nach links zu wechseln, wie es ein arabischer Benutzer erwarten würde. Das Vererbungsverhalten kann durch die Angabe eines expliziten FlowDirection auf jedem Element überstimmt werden. Die FlowDirection Eigenschaft ist für ein beliebiges FrameworkElement oder dokumentbezogenes Element verfügbar und hat einen impliziten Wert von LeftToRight.
Beachten Sie, dass auch die Hintergrundverlaufpinsel korrekt gedreht werden, wenn der Stamm FlowDirection geändert wird:
FlowDirection="LeftToRight"
FlowDirection="RightToLeft"
Vermeiden der Verwendung fester Abmessungen für Panels und Steuerelemente
Sehen Sie sich "Homepage.xaml" an, beachten Sie, dass neben der festen Breite und Höhe, die für die gesamte Benutzeroberfläche oben DockPanelangegeben ist, keine anderen festen Dimensionen vorhanden sind. Vermeiden Sie feste Abmessungen, um zu verhindern, dass lokalisierter Text, der möglicherweise länger als der Quelltext ist, abgeschnitten wird. WPF-Bereiche und -Steuerelemente ändern die Größe automatisch basierend auf dem inhalt, den sie enthalten. Die meisten Steuerelemente verfügen auch über mindeste und maximale Abmessungen, die Sie für mehr Kontrolle festlegen können (z. B. MinWidth="20"). Mit Grid können Sie auch relative Breiten und Höhen festlegen, indem Sie "*" (z. B. Width="0.25*"
) verwenden, oder die Funktion zur Zellengrößenfreigabe nutzen.
Lokalisierungskommentare
Es gibt viele Fälle, in denen Inhalte mehrdeutig und schwer zu übersetzen sind. Der Entwickler oder Designer hat die Möglichkeit, zusätzlichen Kontext und Kommentare für Lokalisierer über Lokalisierungskommentare bereitzustellen. Die nachstehende Lokalisierung.Comments erläutert beispielsweise die Verwendung des Zeichens '|'.
<TextBlock
x:Uid="TextBlock_2"
DockPanel.Dock="Right"
Foreground="White"
Margin="5,0,5,0"
Localization.Comments="$Content(This character is used as a decorative rule.)">
|
</TextBlock>
Dieser Kommentar wird dem Inhalt TextBlock_1 zugeordnet, und im Fall des LocBaml-Tools ( siehe Lokalisieren einer Anwendung) kann er in der 6. Spalte der TextBlock_1 Zeile in der Ausgabedatei .csv angezeigt werden:
Ressourcenschlüssel | Kategorie | Lesenswert | Änderbar | Kommentar | Wert |
---|---|---|---|---|---|
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Text | WAHR | WAHR | Dieses Zeichen wird als dekorative Regel verwendet. | | |
Kommentare können für den Inhalt oder die Eigenschaft eines beliebigen Elements mithilfe der folgenden Syntax platziert werden:
<TextBlock
x:Uid="TextBlock_1"
DockPanel.Dock="Right"
Foreground="White"
Margin="5,0,5,0"
Localization.Comments="$Content(This is a comment on the TextBlock's content.)
Margin(This is a comment on the TextBlock's Margin property.)">
|
</TextBlock>
Lokalisierungsattribute
Häufig benötigt der Entwickler oder Lokalisierungs-Manager die Kontrolle darüber, was Lokalisierer lesen und ändern können. Sie möchten beispielsweise nicht, dass der Lokalisierer den Namen Ihres Unternehmens oder den rechtlichen Wortlaut übersetzt. WPF stellt Attribute bereit, mit denen Sie die Lesbarkeit, Modifizierbarkeit und Kategorie des Inhalts oder der Eigenschaft eines Elements festlegen können, mit dem Ihr Lokalisierungstool Elemente sperren, ausblenden oder sortieren kann. Weitere Informationen finden Sie unter Attributes. Im Rahmen dieses Beispiels gibt das LocBaml-Tool nur die Werte dieser Attribute aus. WPF-Steuerelemente verfügen alle über Standardwerte für diese Attribute, aber Sie können sie außer Kraft setzen. Im folgenden Beispiel wird die Standardeinstellung der Lokalisierungsattribute für TextBlock_1
überschrieben und der Inhalt für Lokalisierer lesbar, aber nicht modifizierbar gemacht.
<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
Neben den Lesbarkeits- und Modifizierbarkeitsattributen stellt WPF eine Aufzählung allgemeiner UI-Kategorien (LocalizationCategory) bereit, die verwendet werden können, um Lokalisierern mehr Kontext zu verleihen. Die WPF-Standardkategorien für Plattformsteuerelemente können auch in XAML außer Kraft gesetzt werden:
<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>
Die von WPF bereitgestellten Standardlokalisierungsattribute können auch über Code überschrieben werden, sodass Sie die richtigen Standardwerte für benutzerdefinierte Steuerelemente richtig festlegen können. Beispiel:
[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
// ...
}
Die in XAML festgelegten Instanzenattribute haben Vorrang vor den Werten, die im Code für benutzerdefinierte Steuerelemente festgelegt sind. Weitere Informationen zu Attributen und Kommentaren finden Sie unter Lokalisierungsattribute und Kommentare.
Schriftartenfallback und zusammengesetzte Schriftarten
Wenn Sie eine Schriftart angeben, die möglicherweise einen bestimmten Codepunktbereich nicht unterstützt, wird WPF automatisch auf eine Schriftart zurückgreifen, die diesen unterstützt, indem die Global User Interface.compositefont verwendet wird, die sich in Ihrem Windows\Fonts-Verzeichnis befindet. Zusammengesetzte Schriftarten funktionieren genauso wie jede andere Schriftart und können explizit verwendet werden, indem sie einem Element FontFamily
zugewiesen werden (z. B. FontFamily="Global User Interface"
). Sie können Ihre eigene Schriftart-Fallbackeinstellung angeben, indem Sie eine eigene zusammengesetzte Schriftart erstellen und angeben, welche Schriftart für bestimmte Codepointbereiche und -sprachen verwendet werden soll.
Weitere Informationen zu zusammengesetzten Schriftarten finden Sie unter FontFamily.
Lokalisieren der Microsoft-Homepage
Sie können die gleichen Schritte ausführen wie das Beispiel "Dialogfeld ausführen", um diese Anwendung zu lokalisieren. Die lokalisierte .csv Datei für Arabisch steht Ihnen im Beispiel für die Globalisierungs-Homepage zur Verfügung.
.NET Desktop feedback