Übersicht über WPF-Globalisierung und -LokalisierungWPF Globalization and Localization Overview

Wenn Sie die Verfügbarkeit Ihres Produkts auf eine Sprache beschränken, beschränken Sie damit auch Ihre potentielle Kundenbasis auf einen Bruchteil der 6,5 Milliarden Einwohner unseres Planeten.When you limit your product's availability to only one language, you limit your potential customer base to a fraction of our world’s 6.5 billion population. Wenn Ihre Anwendung eine globale Zielgruppe erreichen soll, ist die kostengünstige Lokalisierung Ihres Produktes eine der besten und effizientesten Möglichkeiten, mehr Kunden zu erreichen.If you want your applications to reach a global audience, cost-effective localization of your product is one of the best and most economical ways to reach more customers.

In dieser Übersicht werden die Globalisierung und Lokalisierung in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)eingeführt.This overview introduces globalization and localization in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF). Unter Globalisierung versteht man den Entwurf und die Entwicklung von Anwendungen, die an verschiedenen Orten funktionieren.Globalization is the design and development of applications that perform in multiple locations. So unterstützt Globalisierung z.B. lokalisierte Benutzeroberflächen und regionale Daten für Benutzer in unterschiedlichen Kulturen.For example, globalization supports localized user interfaces and regional data for users in different cultures. WPFWPF bietet globalisierte Entwurfs Features, einschließlich automatischem Layout, Satellitenassemblys und lokalisierten Attributen und Kommentaren.provides globalized design features, including automatic layout, satellite assemblies, and localized attributes and commenting.

Unter Lokalisierung versteht man die Übersetzung von Anwendungsressourcen in lokalisierte Versionen für die jeweiligen von der Anwendung unterstützten Kulturen.Localization is the translation of application resources into localized versions for the specific cultures that the application supports. Wenn Sie in WPFWPFlokalisieren, verwenden Sie die APIs im System.Windows.Markup.Localizer-Namespace.When you localize in WPFWPF, you use the APIs in the System.Windows.Markup.Localizer namespace. Diese APIs unterliegen dem Befehlszeilen Tool " LocBaml Tool Sample ".These APIs power the LocBaml Tool Sample command-line tool. Weitere Informationen zum Erstellen und Verwenden von LocBaml finden Sie unter Lokalisieren einer Anwendung.For information about how to build and use LocBaml, see Localize an Application.

Bewährte Methoden zur Globalisierung und Lokalisierung in WPF.Best Practices for Globalization and Localization in WPF

Sie können die in WPFWPF integrierten Globalisierungs-und Lokalisierungs Funktionen optimal nutzen, indem Sie das Design der Benutzeroberfläche und die Lokalisierungs bezogenen Tipps befolgen, die in diesem Abschnitt enthalten sind.You can make the most of the globalization and localization functionality that is built into WPFWPF by following the UI design and localization-related tips that this section provides.

Bewährte Methoden für den Entwurf von WPF-BenutzeroberflächenBest Practices for WPF UI Design

Wenn Sie einen WPFWPF– basierten UIUIentwerfen, sollten Sie die folgenden bewährten Methoden implementieren:When you design a WPFWPF–based UIUI, consider implementing these best practices:

  • Schreiben Sie Ihre UIUI in XAMLXAML; vermeiden Sie es, UIUI im Code zu erstellen.Write your UIUI in XAMLXAML; avoid creating UIUI in code. Wenn Sie Ihre UIUI mithilfe von XAMLXAMLerstellen, machen Sie Sie über integrierte Lokalisierungs-APIs verfügbar.When you create your UIUI by using XAMLXAML, you expose it through built-in localization APIs.

  • Vermeiden Sie die Verwendung absoluter Positionen und fester Größe zum Anordnen von Inhalt. Verwenden Sie stattdessen die relative oder die automatische Größenanpassung.Avoid using absolute positions and fixed sizes to lay out content; instead, use relative or automatic sizing.

    • Verwenden Sie SizeToContent, und halten Sie breiten und Höhen auf Autofest.Use SizeToContent and keep widths and heights set to Auto.

    • Vermeiden Sie die Verwendung von Canvas, um UIUIs festzulegen.Avoid using Canvas to lay out UIUIs.

    • Verwenden Sie Grid und dessen Größen Freigabe Feature.Use Grid and its size-sharing feature.

  • Lassen Sie an den Rändern zusätzlichen freien Platz, da lokalisierter Text häufig mehr Platz beansprucht.Provide extra space in margins because localized text often requires more space. Zusätzlicher Leerraum kann überstehende Zeichen aufnehmen.Extra space allows for possible overhanging characters.

  • Aktivieren Sie TextWrapping auf TextBlock, um Clipping zu vermeiden.Enable TextWrapping on TextBlock to avoid clipping.

  • Legen Sie das xml:lang -Attribut fest.Set the xml:lang attribute. Dieses Attribut beschreibt die Kultur eines bestimmten Elements und seiner untergeordneten Elemente.This attribute describes the culture of a specific element and its child elements. Der Wert dieser Eigenschaft ändert das Verhalten mehrerer Features in WPFWPF.The value of this property changes the behavior of several features in WPFWPF. Es ändert z.B. das Verhalten von Silbentrennung, Rechtschreibprüfung, Zahlenersetzung, Formen komplexer Schriften und die Ausweich-Schriftart.For example, it changes the behavior of hyphenation, spell checking, number substitution, complex script shaping, and font fallback. Weitere Informationen zum Festlegen der XML: lang-Behandlung in XAMLfinden Sie unter Globalisierung für WPF .See Globalization for WPF for more information about setting the xml:lang Handling in XAML.

  • Erstellen Sie eine angepasste zusammengesetzte Schriftart, um eine bessere Kontrolle der Schriftarten zu erhalten, die für verschiedene Sprachen verwendet werden.Create a customized composite font to obtain better control of fonts that are used for different languages. Standardmäßig verwendet WPFWPF die Schriftart GlobalUserInterface. Composite in Ihrem Verzeichnis Windows\Fonts.By default, WPFWPF uses the GlobalUserInterface.composite font in your Windows\Fonts directory.

  • Wenn Sie Navigationsanwendungen erstellen, die in einer Kultur lokalisiert werden können, die Text in einem Format von rechts nach links darstellt, legen Sie explizit den FlowDirection jeder Seite fest, um sicherzustellen, dass die Seite nicht FlowDirection vom NavigationWindowerbt.When you create navigation applications that may be localized in a culture that presents text in a right-to-left format, explicitly set the FlowDirection of every page to ensure the page does not inherit FlowDirection from the NavigationWindow.

  • Wenn Sie eigenständige Navigationsanwendungen erstellen, die außerhalb eines Browsers gehostet werden, legen Sie die StartupUri für die erste Anwendung auf einen NavigationWindow statt auf eine Seite (z. b. <Application StartupUri="NavigationWindow.xaml">).When you create stand-alone navigation applications that are hosted outside a browser, set the StartupUri for your initial application to a NavigationWindow instead of to a page (for example, <Application StartupUri="NavigationWindow.xaml">). Dieser Entwurf ermöglicht es Ihnen, die FlowDirection des Fensters und der Navigationsleiste zu ändern.This design enables you to change the FlowDirection of the Window and the navigation bar. Weitere Informationen und ein Beispiel finden Sie unter Beispiel für eine Globalisierungs Homepage.For more information and an example, see Globalization Homepage Sample.

Bewährte Methoden für die Lokalisierung in WPFBest Practices for WPF Localization

Wenn Sie WPFWPF– basierten Anwendungen lokalisieren, sollten Sie die folgenden bewährten Methoden implementieren:When you localize WPFWPF–based applications, consider implementing these best practices:

  • Verwenden Sie Lokalisierungs Kommentare, um zusätzlichen Kontext für Lokalisierer bereitzustellen.Use localization comments to provide extra context for localizers.

  • Verwenden Sie Lokalisierungs Attribute, um die Lokalisierung zu steuern, anstatt Uid Eigenschaften für Elemente selektiv auszulassen.Use localization attributes to control localization instead of selectively omitting Uid properties on elements. Weitere Informationen finden Sie unter Lokalisierungs Attribute und-Kommentare .See Localization Attributes and Comments for more information.

  • Verwenden Sie msbuild -t:updateuid und -t:checkuid, um Uid Eigenschaften in Ihrem XAMLXAMLhinzuzufügen und zu überprüfen.Use msbuild -t:updateuid and -t:checkuid to add and check Uid properties in your XAMLXAML. Verwenden Sie Uid Eigenschaften, um Änderungen zwischen Entwicklung und Lokalisierung zu verfolgen.Use Uid properties to track changes between development and localization. Uid Eigenschaften helfen Ihnen beim Lokalisieren neuer Entwicklungsänderungen.Uid properties help you localize new development changes. Wenn Sie Uid Eigenschaften manuell zu einem UIUIhinzufügen, ist die Aufgabe in der Regel mühsam und weniger genau.If you manually add Uid properties to a UIUI, the task is typically tedious and less accurate.

    • Bearbeiten oder ändern Sie Uid Eigenschaften nicht, nachdem Sie mit der Lokalisierung begonnen haben.Do not edit or change Uid properties after you begin localization.

    • Verwenden Sie keine doppelten Uid Eigenschaften (Beachten Sie diesen Tipp, wenn Sie den Befehl "Kopieren und Einfügen" verwenden).Do not use duplicate Uid properties (remember this tip when you use the copy-and-paste command).

    • Legen Sie den UltimateResourceFallback Speicherort in AssemblyInfo. * fest, um die für das Fall Back geeignete Sprache anzugeben (z. b. [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]).Set the UltimateResourceFallback location in AssemblyInfo.* to specify the appropriate language for fallback (for example, [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 den UltimateResourceFallback Speicherort als Hauptassembly anstelle des Satelliten (z. b. [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]) fest.If you decide to include your source language in the main assembly by omitting the <UICulture> tag in your project file, set the UltimateResourceFallback location as the main assembly instead of the satellite (for example, [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]).

Lokalisieren einer WPF-AnwendungLocalize a WPF Application

Wenn Sie eine WPFWPF Anwendung lokalisieren, haben Sie mehrere Optionen.When you localize a WPFWPF application, you have several options. Beispielsweise können Sie die lokalisierbaren Ressourcen in der Anwendung an eine XML-Datei binden, lokalisierbaren Text in RESX-Tabellen speichern oder den Lokalisierer verwenden, um Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) Dateien zu verwenden.For example, you can bind the localizable resources in your application to an XML file, store localizable text in resx tables, or have your localizer use Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) files. In diesem Abschnitt wird ein Lokalisierungs Workflow beschrieben, der die BAML-Form von XAML verwendet, die mehrere Vorteile bietet:This section describes a localization workflow that uses the BAML form of XAML, which provides several benefits:

  • Sie können lokalisieren, nachdem Sie erstellt haben.You can localize after you build.

  • Sie können auf eine neuere Version der BAML-Form von XAML aktualisieren, indem Sie lokzierungen aus einer älteren Version der BAML-Form von XAML durchsetzen, sodass Sie die Lokalisierung gleichzeitig durchsetzen können.You can update to a newer version of the BAML form of XAML with localizations from an older version of the BAML form of XAML so that you can localize at the same time that you develop.

  • Sie können die ursprünglichen Quell Elemente und die Semantik zur Kompilierzeit überprüfen, da die BAML-Form von XAML die kompilierte Form von XAMLXAMList.You can validate original source elements and semantics at compile time because the BAML form of XAML is the compiled form of XAMLXAML.

Buildprozess für die LokalisierungLocalization Build Process

Wenn Sie eine WPFWPF Anwendung entwickeln, lautet der Buildprozess für die Lokalisierung wie folgt:When you develop a WPFWPF application, the build process for localization is as follows:

  • Der Entwickler erstellt und globalisiert die WPFWPF Anwendung.The developer creates and globalizes the WPFWPF application. In der Projektdatei legt der Entwickler <UICulture>en-US</UICulture> fest, damit bei der Kompilierung der Anwendung eine sprachneutrale Hauptassembly generiert wird.In the project file the developer sets <UICulture>en-US</UICulture> so that when the application is compiled, a language-neutral main assembly is generated. Diese Assembly verfügt über eine ausgelagerte .resources.dll-Datei, die alle lokalisierbaren Ressourcen enthält.This assembly has a satellite .resources.dll file that contains all the localizable resources. Optional können Sie die Quellsprache in der Hauptassembly belassen, da unsere Lokalisierungs-APIs Extraktion aus der Hauptassembly unterstützen.Optionally, you can keep the source language in the main assembly because our localization APIs support extraction from the main assembly.

  • Wenn die Datei in den Build kompiliert wird, wird der XAMLXAML in die BAML-Form von XAML konvertiert.When the file is compiled into the build, the XAMLXAML is converted to the BAML form of XAML. Die Kultur neutrale MyDialog.exe und die Kultur abhängigen (englischen) MyDialog.resources.dll Dateien werden dem englischsprachigen Kunden freigegeben.The culturally neutral MyDialog.exe and the culturally dependent (English) MyDialog.resources.dll files are released to the English-speaking customer.

LokalisierungsworkflowLocalization Workflow

Der Lokalisierungsprozess beginnt, nachdem die nicht lokalisierte MyDialog.resources.dll Datei erstellt wurde.The localization process begins after the unlocalized MyDialog.resources.dll file is built. Die UIUI Elemente und Eigenschaften in der ursprünglichen XAMLXAML werden mithilfe der APIs unter System.Windows.Markup.Localizeraus der BAML-Form von XAML in Schlüssel-Wert-Paare extrahiert.The UIUI elements and properties in your original XAMLXAML are extracted from the BAML form of XAML into key-value pairs by using the APIs under System.Windows.Markup.Localizer. Lokalisierer verwenden die Schlüssel-Wert-Paare, um die Anwendung zu lokalisieren.Localizers use the key-value pairs to localize the application. Sie können nach Abschluss der Lokalisierung aus den neuen Werten eine neue .resource.dll-Datei generieren.You can generate a new .resource.dll from the new values after localization is complete.

Die Schlüssel der Schlüssel-Wert-Paare sind x:Uid Werte, die vom Entwickler in der ursprünglichen XAMLXAMLplatziert werden.The keys of the key-value pairs are x:Uid values that are placed by the developer in the original XAMLXAML. Diese x:Uid Werte ermöglichen der API das Nachverfolgen und Zusammenführen von Änderungen, die während der Lokalisierung zwischen dem Entwickler und dem Lokalisierer erfolgen.These x:Uid values enable the API to track and merge changes that happen between the developer and the localizer during localization. Wenn der Entwickler z. b. die UIUI ändert, nachdem der Lokalisierer mit der Lokalisierung begonnen hat, können Sie die Entwicklungs Änderung mit der bereits abgeschlossenen Lokalisierungsarbeit zusammenführen, damit die minimale Übersetzungsarbeit verloren geht.For example, if the developer changes the UIUI after the localizer begins localizing, you can merge the development change with the already completed localization work so that minimal translation work is lost.

Die folgende Abbildung zeigt einen typischen auf der BAML-Form von XAML-basierenden Lokalisierungsworkflow.The following graphic shows a typical localization workflow that is based on the BAML form of XAML. Dieses Diagramm setzt voraus, dass der Entwickler die Anwendung in Englisch schreibt.This diagram assumes the developer writes the application in English. Der Entwickler erstellt und globalisiert die WPF-Anwendung.The developer creates and globalizes the WPF application. Der Entwickler legt in der Projektdatei <UICulture>en-US</UICulture> fest, sodass bei der Erstellung eine sprachneutrale Hauptassembly mit einem Satelliten. resources. dll-Code generiert wird, der alle lokalisierbaren Ressourcen enthält.In the project file the developer sets <UICulture>en-US</UICulture> so that on build, a language neutral main assembly gets generated with a satellite .resources.dll containing all localizable resources. Alternativ dazu können Sie auch Ihre Quellsprache in der Hauptassembly belassen, da unsere Lokalisierungs-APIs eine Extraktion aus der Hauptassembly unterstützen.Alternately, one could keep the source language in the main assembly because WPF localization APIs support extraction from the main assembly. Nach dem Buildprozess wird XAML in BAML kompiliert.After the build process, the XAML get compiled into BAML. Die kulturneutrale Datei „MyDialog.exe.resources.dll” wird an den englischsprachigen Kunden ausgeliefert.The culturally neutral MyDialog.exe.resources.dll get shipped to the English speaking customer.

Diagramm, das den Lokalisierungs Workflow anzeigt.

Diagramm, das den nicht lokalisierten Workflow anzeigt.

Beispiele für WPF-LokalisierungExamples of WPF Localization

Dieser Abschnitt enthält Beispiele für lokalisierte Anwendungen, die Ihnen helfen zu verstehen, wie WPFWPF Anwendungen erstellt und lokalisiert werden.This section contains examples of localized applications to help you understand how to build and localize WPFWPF applications.

Beispiel-Dialogfeld „Ausführen”Run Dialog Box Example

Die folgende Grafik zeigt die Ausgabe des Beispiels für das Dialogfeld " Ausführen ".The following graphics show the output of the Run dialog box sample.

Englisch:English:

Screenshot, der ein englisches Dialogfeld "ausführen" anzeigt.

Deutsch:German:

Screenshot, der das Dialogfeld "Deutsch ausführen" anzeigt.

Entwerfen eines globalen Dialogfelds „Ausführen”Designing a Global Run Dialog Box

In diesem Beispiel wird ein Dialogfeld Ausführen mithilfe WPFWPF und XAMLXAMLerzeugt.This example produces a Run dialog box by using WPFWPF and XAMLXAML. Dieses Dialogfeld entspricht dem Dialogfeld Ausführen , das im Microsoft Windows-Startmenü verfügbar ist.This dialog box is equivalent to the Run dialog box that is available from the Microsoft Windows Start menu.

Einige Highlights beim Erstellen von globalen Dialogfeldern sind:Some highlights for making global dialog boxes are:

Automatisches LayoutAutomatic Layout

In der Datei Window1.xaml:In Window1.xaml:

<Window SizeToContent="WidthAndHeight">

Die obige Window-Eigenschaft sorgt dafür, dass sich die Fenstergröße automatisch der Inhaltsgröße entsprechend anpasst.The previous Window property automatically resizes the window according to the size of the content. Diese Eigenschaft verhindert, dass Inhalt, der nach der Lokalisierung an Größe zunimmt, abgeschnitten wird. Im Gegenzug wird auch unnötiger Leerraum entfernt, wenn die Größe des Inhalts nach der Lokalisierung geschrumpft ist.This property prevents the window from cutting off content that increases in size after localization; it also removes unneeded space when content decreases in size after localization.

<Grid x:Uid="Grid_1">

Uid Eigenschaften sind erforderlich, damit WPFWPF Lokalisierungs-APIs ordnungsgemäß funktionieren.Uid properties are needed in order for WPFWPF localization APIs to work correctly.

Sie werden von WPFWPF Lokalisierungs-APIs verwendet, um Änderungen zwischen der Entwicklung und Lokalisierung der Benutzeroberfläche (User Interface, UI)user interface (UI)zu verfolgen.They are used by WPFWPF localization APIs to track changes between the development and localization of the Benutzeroberfläche (User Interface, UI)user interface (UI). mit Uid-Eigenschaften können Sie eine neuere Version der UIUI mit einer älteren Lokalisierung der UIUIzusammenführen.Uid properties enable you to merge a newer version of the UIUI with an older localization of the UIUI. Sie fügen eine Uid-Eigenschaft hinzu, indem Sie msbuild -t:updateuid RunDialog.csproj in einer Befehlsshell ausführen.You add a Uid property by running msbuild -t:updateuid RunDialog.csproj in a command shell. Dies ist die empfohlene Methode zum Hinzufügen von Uid Eigenschaften, da Sie in der Regel zeitaufwändig und weniger genau hinzugefügt werden.This is the recommended method of adding Uid properties because manually adding them is typically time-consuming and less accurate. Sie können überprüfen, ob Uid Eigenschaften ordnungsgemäß festgelegt sind, indem Sie msbuild -t:checkuid RunDialog.csprojausführen.You can check that Uid properties are correctly set by running msbuild -t:checkuid RunDialog.csproj.

Die UIUI wird mit dem Grid-Steuerelement strukturiert, das ein nützliches Steuerelement ist, um das automatische Layout in WPFWPFzu nutzen.The UIUI is structured by using the Grid control, which is a useful control for taking advantage of the automatic layout in WPFWPF. Beachten Sie, dass das Dialogfeld in drei Zeilen und fünf Spalten unterteilt ist.Note that the dialog box is split into three rows and five columns. Nicht eine der Zeilen-und Spaltendefinitionen hat eine Größe mit fester Größe. Daher können sich die UIUI Elemente, die in jeder Zelle positioniert sind, bei der Lokalisierung an die Größe vergrößert und verkleinert.Not one of the row and column definitions has a fixed size; hence, the UIUI elements that are positioned in each cell can adapt to increases and decreases in size during localization.

<Grid.ColumnDefinitions>
  <ColumnDefinition x:Uid="ColumnDefinition_1" />
  <ColumnDefinition x:Uid="ColumnDefinition_2" />

Die ersten beiden Spalten, in denen die " Open: Label"-und "ComboBox" platziert werden, verwenden 10 Prozent der UIUI Gesamtbreite.The first two columns where the Open: label and ComboBox are placed use 10 percent of the UIUI total width.

  <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 im Beispiel das Feature für die gemeinsame Größenänderung von Gridverwendet wird.Note that of the example uses the shared-sizing feature of Grid. Die letzten drei Spalten nutzen dies, indem Sie sich im gleichen SharedSizeGroupplatzieren.The last three columns take advantage of this by placing themselves in the same SharedSizeGroup. Wie aus dem Namen der Eigenschaft zu erwarten ist, ermöglicht dies den Spalten, dieselbe Größe zu verwenden.As one would expect from the name of the property, this allows the columns to share the same size. Wenn also "Durchsuchen..." wird in die längere Zeichenfolge "Durchsuchen..." lokalisiert. alle Schaltflächen werden in der Breite vergrößert, anstatt eine kleine Schaltfläche "OK" und eine unverhältnismäßig große "Durchsuchen..." gedrückt.So when the "Browse…" gets localized to the longer string "Durchsuchen…", all buttons grow in width instead of having a small "OK" button and a disproportionately large "Durchsuchen…" button.

XML: langxml:lang

xml:lang="en-US"

Beachten Sie, dass die XML: lang-Behandlung in XAML am Stamm Element der UIUIplatziert wird.Notice the xml:lang Handling in XAML placed at the root element of the UIUI. Diese Eigenschaft beschreibt die Kultur eines bestimmten Elements und seiner untergeordneten Elemente.This property describes the culture of a given element and its children. Dieser Wert wird von mehreren Features in WPFWPF verwendet und sollte bei der Lokalisierung entsprechend geändert werden.This value is used by several features in WPFWPF and should be changed appropriately during localization. Dieser Wert bestimmt, welches Sprachwörterbuch für Silbentrennung und Rechtschreibprüfung verwendet wird.This value changes what language dictionary is use to hyphenate and spell check words. Es wirkt sich auch auf die Anzeige von Ziffern aus, und wie das Fallbacksystem für Schriftarten entscheidet, welche Schriftart zu benutzen ist.It also affects the display of digits and how the font fallback system selects which font to use. Schließlich beeinflusst die Eigenschaft auch, wie Zahlen formatiert und in welcher Form komplexe Schriften dargestellt werden.Finally, the property affects the way numbers are displayed and the way texts written in complex scripts are shaped. Der Standardwert ist „en-US”.The default value is "en-US".

Erstellen eine SatellitenressourcenassemblyBuilding a Satellite Resource Assembly

In .csproj:In .csproj:

Bearbeiten Sie die Datei .csproj, und fügen Sie das folgende-Tag zu einem bedingungslosen <PropertyGroup>hinzu:Edit the .csproj file and add the following tag to an unconditional <PropertyGroup>:

<UICulture>en-US</UICulture>

Beachten Sie das Hinzufügen eines UICulture Werts.Notice the addition of a UICulture value. Wenn dies auf einen gültigen CultureInfo Wert wie z. b. en-US festgelegt ist, wird beim Erstellen des Projekts eine Satellitenassembly mit allen lokalisierbaren Ressourcen erstellt.When this is set to a valid CultureInfo value such as en-US, building the project will generate a satellite assembly with all localizable resources in it.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

Der RunIcon.JPG muss nicht lokalisiert werden, da er für alle Kulturen identisch angezeigt werden sollte.The RunIcon.JPG does not need to be localized because it should appear the same for all cultures. Localizable ist auf false festgelegt, sodass Sie nicht in der Satellitenassembly, sondern in der sprach neutralen Hauptassembly verbleibt.Localizable is set to false so that it remains in the language neutral main assembly instead of the satellite assembly. Der Standardwert aller nicht Kompilier baren Ressourcen ist Localizable auf truefestgelegt.The default value of all noncompilable resources is Localizable set to true.

Lokalisieren des Dialogfelds „Ausführen”Localizing the Run Dialog

AuslesenParse

Nachdem die Anwendung erstellt, ist der erste Schritt bei der Lokalisierung, die lokalisierbaren Ressourcen aus der Satellitenassembly auszulesen.After building the application, the first step in localizing it is parsing the localizable resources out of the satellite assembly. Verwenden Sie für dieses Thema das Beispiel-LocBaml-Tool, das Sie unter LocBaml Tool Samplefinden.For the purposes of this topic, use the sample LocBaml tool which can be found at LocBaml Tool Sample. Beachten Sie, dass LocBaml lediglich ein Beispieltool ist, das Ihnen beim Erstellen eines Lokalisierungstools helfen soll, das Ihrem Lokalisierungsprozess entspricht.Note that LocBaml is only a sample tool meant to help you get started in building a localization tool that fits into your localization process. Führen Sie mithilfe von LocBaml Folgendes aus, um Folgendes zu analysieren: LocBaml/parse RunDialog. resources. dll/out: , um eine RunDialog. resources. dll. CSV-Datei zu generieren.Using LocBaml, run the following to parse: LocBaml /parse RunDialog.resources.dll /out: to generate a "RunDialog.resources.dll.CSV" file.

LokalisierenLocalize

Verwenden Sie zum Bearbeiten dieser Datei Ihren bevorzugten Unicode-fähigen CSV-Editor.Use your favorite CSV editor that supports Unicode to edit this file. Filtern Sie alle Einträge mit einer Lokalisierungskategorie von „None” heraus.Filter out all entries with a localization category of "None". Sie sollten folgende Einträge sehen:You should see the following entries:

RessourcenschlüsselResource Key LokalisierungskategorieLocalization Category WertValue
Button_1:System.Windows.Controls.Button.$ContentButton_1:System.Windows.Controls.Button.$Content SchaltflächeButton OKOK
Button_2:System.Windows.Controls.Button.$ContentButton_2:System.Windows.Controls.Button.$Content SchaltflächeButton AbbrechenCancel
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content SchaltflächeButton Durchsuchen...Browse...
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content TextText Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource ein, damit Windows das entsprechende Objekt öffnet.Type the name of a program, folder, document, or Internet resource, and Windows will open it for you.
TextBlock_2:System.Windows.Controls.TextBlock.$ContentTextBlock_2:System.Windows.Controls.TextBlock.$Content TextText Öffnen:Open:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title TitelTitle RunRun

Um die Anwendung auf Deutsch zu lokalisieren, sind die folgenden Übersetzungen erforderlich:Localizing the application to German would require the following translations:

RessourcenschlüsselResource Key LokalisierungskategorieLocalization Category WertValue
Button_1:System.Windows.Controls.Button.$ContentButton_1:System.Windows.Controls.Button.$Content SchaltflächeButton OKOK
Button_2:System.Windows.Controls.Button.$ContentButton_2:System.Windows.Controls.Button.$Content SchaltflächeButton AbbrechenAbbrechen
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content SchaltflächeButton Durchsuchen…Durchsuchen…
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content TextText Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource an.Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2:System.Windows.Controls.TextBlock.$ContentTextBlock_2:System.Windows.Controls.TextBlock.$Content TextText Öffnen:Öffnen:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title TitelTitle RunRun

GenerierenGenerate

Der letzte Schritt der Lokalisierung umfasst das Erstellen der neu lokalisierten Satellitenassembly.The last step of localization involves creating the newly localized satellite assembly. Dies kann mithilfe des folgenden LocBaml-Befehls erreicht werden:This can be accomplished with the following LocBaml command:

LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DELocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DE

Wenn sich diese Datei "Resources. dll" in einem Ordner "de-de" neben der Hauptassembly befindet, wird diese Ressource automatisch anstelle der im Ordner "en-US" geladen.On German Windows, if this resources.dll is placed in a de-DE folder next to the main assembly, this resource will automatically load instead of the one in the en-US folder. Wenn Sie nicht über eine deutsche Version von Windows verfügen, um dies zu testen, legen Sie die Kultur auf eine beliebige Kultur von Fenstern fest (z. b. en-US), und ersetzen Sie die ursprüngliche Ressourcen-DLL.If you do not have a German version of Windows to test this, set the culture to whatever culture of Windows you are using (for example, en-US), and replace the original resources DLL.

Laden der SatellitenressourcenSatellite Resource Loading

MyDialog.exeMyDialog.exe en-US\MyDialog.resources.dllen-US\MyDialog.resources.dll de-DE\MyDialog.resources.dllde-DE\MyDialog.resources.dll
CodeCode Ursprüngliche englische BAMLOriginal English BAML Lokalisierte BAMLLocalized BAML
Kulturneutrale RessourcenCulturally neutral resources Weitere Ressourcen auf EnglischOther resources in English Weitere ins Deutsche lokalisierte RessourcenOther resources localized to German

.NET Framework wählt basierend auf dem Thread.CurrentThread.CurrentUICultureder Anwendung automatisch aus, welche Satellitenressourcenassembly geladen werden soll.The .NET framework automatically chooses which satellite resources assembly to load based on the application’s Thread.CurrentThread.CurrentUICulture. Standardmäßig wird die Kultur Ihres Windows-Betriebssystems verwendet.This defaults to the culture of your Windows OS. Wenn Sie also Deutsch Fenster verwenden, lädt de-DE\MyDialog.resources.dll, wenn Sie englische Fenster verwenden, die en-US\MyDialog.resources.dll-Auslastung.So if you are using German Windows, the de-DE\MyDialog.resources.dll loads, if you are using English Windows, the en-US\MyDialog.resources.dll loads. Sie können für Ihre Anwendung die endgültige Fallbackressource durch Angabe von NeutralResourcesLanguage in der AssemblyInfo.* Ihres Projekts festlegen.You can set the ultimate fallback resource for your application by specifying the NeutralResourcesLanguage in your project’s AssemblyInfo.*. Wenn Sie also z.B. folgendes angeben:For example if you specify:

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

dann wird in einem deutschen Windows die „en-US\MyDialog.resources.dll” verwendet, wenn weder „de-DE\MyDialog.resources.dll” noch „de\MyDialog.resources.dll” verfügbar sind.then the en-US\MyDialog.resources.dll will be used with German Windows if a de-DE\MyDialog.resources.dll or de\MyDialog.resources.dll are both unavailable.

Homepage von Microsoft Saudi-ArabienMicrosoft Saudi Arabia Homepage

Die folgende Abbildung zeigt eine englische und eine arabische Homepage.The following graphics show an English and Arabic Homepage. Das gesamte Beispiel, das diese Grafiken erzeugt, finden Sie unter Beispiel für eine Globalisierungs Homepage.For the complete sample that produces these graphics see Globalization Homepage Sample.

Englisch:English:

Screenshot, der eine englische Startseite anzeigt.

Arabisch:Arabic:

Screenshot, der eine arabische Startseite zeigt.

Entwerfen einer globalen Microsoft-StartseiteDesigning a Global Microsoft home page

Dieses Modell der Microsoft Saudi-Arabien Website veranschaulicht die Globalisierungsfeatures für Sprachen in rechts-nach-links-Schreibweise.This mock up of the Microsoft Saudi Arabia web site illustrates the globalization features provided for RightToLeft languages. Sprachen, wie z. b. Hebräisch und Arabisch, haben eine Lesereihenfolge von rechts nach links, sodass das Layout von UIUI häufig anders angeordnet werden muss als in den Sprachen von links nach rechts (z. b. Englisch).Languages such as Hebrew and Arabic have a right-to-left reading order so the layout of UIUI must often be laid out quite differently than it would be in left-to-right languages such as English. Die Lokalisierung von einer links-nach-rechts-Sprache in eine rechts-nach-links-Sprache oder umgekehrt kann sehr anspruchsvoll sein.Localizing from a left-to-right language to a right-to-left language or vice versa can be quite challenging. WPFWPF wurde entwickelt, um solche Lokalisierungsanforderungen wesentlich zu erleichtern.has been designed to make such localizations much easier.

FlowDirectionFlowDirection

Homepage.xaml: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.Notice the FlowDirection property on Page. Wenn Sie diese Eigenschaft in RightToLeft ändern, ändert sich die FlowDirection der Page und der zugehörigen untergeordneten Elemente, sodass das Layout dieser UIUI von rechts nach links gekippt wird, so wie ein arabischer Benutzer erwartet.Changing this property to RightToLeft will change the FlowDirection of the Page and its children elements so that the layout of this UIUI is flipped to become right-to-left as an Arabic user would expect. Sie können das Vererbungs Verhalten überschreiben, indem Sie einen expliziten FlowDirection für ein beliebiges Element angeben.One can override the inheritance behavior by specifying an explicit FlowDirection on any element. Die FlowDirection-Eigenschaft ist für alle FrameworkElement-oder Dokument bezogenen Elemente verfügbar und hat den impliziten Wert LeftToRight.The FlowDirection property is available on any FrameworkElement or document related element and has an implicit value of LeftToRight.

Beachten Sie, dass auch die Hintergrund Farbverlaufs Pinsel ordnungsgemäß gekippt werden, wenn der Stamm FlowDirection geändert wird:Observe that even the background gradient brushes are flipped correctly when the root FlowDirection is changed:

FlowDirection="LeftToRight"FlowDirection="LeftToRight"

Screenshot, der den Farbverlaufs Fluss von links nach rechts anzeigt.

FlowDirection="RightToLeft"FlowDirection="RightToLeft"

Screenshot, der den Farbverlauf von rechts nach Links anzeigt

Verwenden Sie keine feste Abmessungen für Bereiche und SteuerelementeAvoid Using Fixed Dimensions for Panels and Controls

Sehen Sie sich die Datei "Homepage. XAML" an. Beachten Sie, dass abgesehen von der festgelegten Breite und Höhe, die für die gesamte UIUI oben DockPanelangegeben wurde, keine anderen fixierten Dimensionen vorhanden sind.Take a look through Homepage.xaml, notice that aside from the fixed width and height specified for the entire UIUI on the top DockPanel, there are no other fixed dimensions. Vermeiden Sie feste Abmessungen, um zu vermeiden, dass lokalisierter Text, der länger als der Quelltext werden kann, abgeschnitten wird.Avoid using fixed dimensions to prevent clipping localized text that may be longer than the source text. WPFWPF-Bereiche und Steuerelemente passen ihre Größe automatisch dem ihres Inhalts an.panels and controls will automatically resize based on the content that they contain. Die meisten Steuerelemente verfügen auch über minimale und maximale Abmessungen, die Sie für mehr Kontrolle festlegen können (z. b. MinWidth = "20").Most controls also have minimum and maximum dimensions that you can set for more control (for example, MinWidth="20"). Mit Gridkönnen Sie auch relative breiten und Höhen festlegen, indem Sie "*" (z. b. Width="0.25*") verwenden oder die Freigabe Funktion für Zellen Größe verwenden.With Grid, you can also set relative widths and heights by using ‘*’ (for example, Width="0.25*") or use its cell size sharing feature.

LokalisierungskommentareLocalization Comments

Es gibt viele Fälle, in denen Inhalt mehrdeutig und schwierig zu übersetzen sein kann.There are many cases where content may be ambiguous and difficult to translate. Der Entwickler oder Designer verfügt über die Möglichkeit, zusätzlichen Kontext und Kommentare für Lokalisierer über Lokalisierungskommentare bereitzustellen.The developer or designer has the ability to provide extra context and comments to localizers through localization comments. So verdeutlicht z.B. „Localization.Comments” im nachstehenden Beispiel die Verwendung des Zeichens '&#124'.For example the Localization.Comments below clarifies the usage of the character ‘|’.

<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 TextBlock_1's-Inhalt zugeordnet, und im Fall des LocBaml-Tools (siehe Lokalisieren einer Anwendung), kann er in der 6. Spalte der TextBlock_1-Zeile in der CSV-Ausgabedatei angezeigt werden:This comment becomes associated with TextBlock_1’s content and in the case of the LocBaml Tool, ( see Localize an Application), it can be seen in the 6th column of the TextBlock_1 row in the output .csv file:

RessourcenschlüsselResource Key KategorieCategory LesbarReadable ÄnderbarModifiable KommentarComment WertValue
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content TextText trueTRUE trueTRUE Dieses Zeichen wird als dekorative Abgrenzungslinie verwendet.This character is used as a decorative rule. ||

Kommentare können auf den Inhalt oder die Eigenschaften jedes Elements mithilfe der folgenden Syntax platziert werden:Comments can be placed on the content or property of any element using the following syntax:

<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>

LokalisierungsattributeLocalization Attributes

Häufig muss der Entwickler oder Lokalisierungsmanager Kontrolle darüber haben, was Lokalisierer lesen und ändern können.Often the developer or localization manager needs control of what localizers can read and modify. Sie möchten z.B. nicht, dass der Lokalisierer den Namen Ihres Unternehmens oder eine rechtliche Floskel übersetzt.For example, you might not want the localizer to translate the name of your company or legal wording. WPFWPF bietet Attribute, mit denen Sie die Lesbarkeit, Änderbarkeit und Kategorie des Inhalts eines Elements oder einer Eigenschaft festlegen können. Diese Attribute kann Ihr Lokalisierungstool zum Sperren, Ausblenden oder Sortieren von Elementen verwenden.provides attributes that enable you to set the readability, modifiability, and category of an element’s content or property which your localization tool can use to lock, hide, or sort elements. Weitere Informationen finden Sie unter Attributes.For more information, see Attributes. Für die Zwecke dieses Beispiels gibt das LocBaml-Tool nur die Werte dieser Attribute aus.For the purposes of this sample, the LocBaml Tool just outputs the values of these attributes. Alle WPFWPF-Steuerelemente besitzen Standardwerte für diese Attribute, die Sie aber überschreiben können.WPFWPF controls all have default values for these attributes, but you the can override them. Im folgenden Beispiel werden die Standard Lokalisierungs Attribute für TextBlock_1 überschrieben und der Inhalt so festgelegt, dass er lesbar, aber nicht änderbar für Lokalisierer ist.For example, the following example overrides the default localization attributes for TextBlock_1 and sets the content to be readable but unmodifiable for localizers.

<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
  Microsoft Corporation
</TextBlock>

Zusätzlich zu den Attributen für die Lesbarkeit und Modifizierbarkeit stellt WPFWPF eine Enumeration allgemeiner Benutzeroberflächen Kategorien (LocalizationCategory) bereit, die verwendet werden können, um Lokalisierern mehr Kontext zu geben.In addition to the readability and modifiability attributes, WPFWPF provides an enumeration of common UI categories (LocalizationCategory) that can be used to give localizers more context. Die WPFWPF Standardkategorien für Platt Form Steuerelemente können auch in XAMLXAML überschrieben werden:The WPFWPF default categories for platform controls can be overridden in XAMLXAML as well:

<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 standardmäßigen Lokalisierungs Attribute, die WPFWPF bereitstellt, können auch durch Code überschrieben werden, sodass Sie die richtigen Standardwerte für benutzerdefinierte Steuerelemente ordnungsgemäß festlegen können.The default localization attributes that WPFWPF provides can also be overridden through code, so you can correctly set the right default values for custom controls. Beispiel:For example:

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
    // ...
}

Die in XAMLXAML festgelegten Attribute pro Instanz haben Vorrang vor den Werten, die im Code für benutzerdefinierte Steuerelemente festgelegt werden.The per instance attributes set in XAMLXAML will take precedence over the values set in code on custom controls. Weitere Informationen zu Attributen und Kommentaren finden Sie unter Lokalisierungs Attribute und-Kommentare.For more information on attributes and comments, see Localization Attributes and Comments.

Schriftart-Fallback und zusammengesetzte SchriftartenFont Fallback and Composite Fonts

Wenn Sie eine Schriftart angeben, die einen bestimmten Code punktbereich nicht unterstützt, wird WPFWPF automatisch auf einen Fall Back zurückgreifen, der mithilfe der globalen Benutzeroberfläche. compositefont im Verzeichnis "Windows\Fonts" verwendet wird.If you specify a font that does not support a given codepoint range, WPFWPF will automatically fallback to one that does by using the Global User Interface.compositefont that is located in your Windows\Fonts directory. Zusammengesetzte Schriftarten funktionieren genauso wie jede andere Schriftart und können explizit durch Festlegen des FontFamily eines Elements (z. FontFamily="Global User Interface") verwendet werden.Composite fonts work just as any other font and can be used explicitly by setting an element’s FontFamily (for instance, FontFamily="Global User Interface"). Sie können Ihre eigene bevorzugte Ausweichschriftart angeben, indem Sie eine eigene zusammengesetzte Schriftart erstellen und angeben, welche Schriftart jeweils für bestimmte Codepunkt-Bereiche und Sprachen verwendet werden soll.You can specify your own font fallback preference by creating your own composite font and specifying what font to use for specific codepoint ranges and languages.

Weitere Informationen zu zusammengesetzten Schriftarten finden Sie unter FontFamily.For more information on composite fonts see FontFamily.

Lokalisieren der Microsoft-HomepageLocalizing the Microsoft Homepage

Sie können die gleichen Schritte wie im Beispiel zum Dialogfeld „Ausführen” nutzen, um diese Anwendung zu lokalisieren.You can follow the same steps as the Run Dialog example to localize this application. Die lokalisierte CSV-Datei für Arabisch steht Ihnen im Beispiel für die Globalisierungs Homepagezur Verfügung.The localized .csv file for Arabic is available for you in the Globalization Homepage Sample.