Share via


Gewusst wie: Lokalisieren einer Anwendung

Aktualisiert: November 2007

In diesem Lernprogramm wird erläutert, wie lokalisierte Anwendungen unter Verwendung des LocBaml-Tools erstellt werden.

Tipp

Das LocBaml-Tool ist keine produktionsbereite Anwendung. Es wird als Beispiel präsentiert, das einen Teil der Lokalisierungs-APIs verwendet und veranschaulicht, wie Sie ein Lokalisierungstool schreiben können.

Dieses Thema enthält folgende Abschnitte.

  • Übersicht
  • Anforderungen
  • Erstellen einer Beispielanwendung
  • Erstellen der Satellitenassembly mit den neutralen Sprachressourcen
  • Erstellen des LocBaml-Tools
  • Verwenden von LocBaml zum Analysieren einer Datei
  • Übersetzen des lokalisierbaren Inhalts
  • Verwenden von LocBaml zum Generieren einer neuen .resources.dll-Datei
  • Einige Tipps zum Verwenden von LocBaml
  • Weitere Informationen
  • Verwandte Abschnitte

Übersicht

Diese Diskussion liefert schrittweise Anweisungen zum Lokalisieren einer Anwendung. Zuerst bereiten Sie Ihre Anwendung so vor, dass der zu übersetzende Text extrahiert werden kann. Nachdem der Text übersetzt wurde, führen Sie den übersetzten Text mit einer neuen Kopie der ursprünglichen Anwendung zusammen.

Anforderungen

Im Verlauf dieser Diskussion verwenden Sie Microsoft-Buildmodul (MSBuild), ein Compiler, der über die Befehlszeile ausgeführt wird.

Außerdem werden Sie angewiesen, eine Projektdatei zu verwenden. Anweisungen zur Verwendung von MSBuild und Projektdateien finden Sie unter Erstellen und Bereitstellen von Windows Presentation Foundation-Anwendungen.

Alle Beispiele in dieser Diskussion verwenden als Kultur US-amerikanisches Englisch (English-US). Dies ermöglicht es Ihnen, die Beispielschritte durchzuarbeiten, ohne eine andere Sprache installieren zu müssen.

Erstellen einer Beispielanwendung

In diesem Schritt bereiten Sie Ihre Anwendung auf die Lokalisierung vor. In den Windows Presentation Foundation (WPF)-Beispielen wird die Musteranwendung HelloApp angeboten, das für die Codebeispiele in dieser Diskussion verwendet wird. Wenn Sie dieses Beispiel verwenden möchten, laden Sie die Extensible Application Markup Language (XAML)-Dateien von Beispiel zum LocBaml-Tool herunter.

  1. Entwickeln Sie Ihre Anwendung bis zu dem Punkt, an dem Sie die Lokalisierung starten möchten.

  2. Geben Sie die Entwicklungssprache in der Projektdatei so an, dass MSBuild eine Hauptassembly und eine Satellitenassembly (eine Datei der Erweiterung .resources.dll) erzeugt, die die neutralen Sprachressourcen enthält. Die Projektdatei im Beispiel HelloApp ist HelloApp.csproj. In dieser Datei wird die Entwicklungssprache in folgender Weise identifiziert:

    <UICulture>en-US</UICulture>

  3. Fügen Sie den XAML-Dateien UIDs hinzu. UIDs werden verwendet, um Änderungen an Dateien nachzuverfolgen und die Elemente zu identifizieren, die übersetzt werden müssen. Um UIDs den Dateien hinzuzufügen, führen updateuid für die Projektdatei aus:

    msbuild /t:updateuid helloapp.csproj

    Um sicherzustellen, dass keine UIDs fehlen bzw. doppelt vorhanden sind, führen Sie checkuid aus:

    msbuild /t:checkuid helloapp.csproj

    Nach Ausführen von updateuid sollten Ihre Dateien UIDs enthalten. In der Datei Pane1.xaml von HelloApp sollte beispielsweise Folgendes vorhanden sein:

    <StackPanel x:Uid="StackPanel_1">

      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>

      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>

    </StackPanel>

Erstellen der Satellitenassembly mit den neutralen Sprachressourcen

Nachdem die Anwendung so konfiguriert wurde, dass eine Satellitenassembly mit den neutralen Sprachressourcen generiert wird, erstellen Sie die Anwendung. Auf diese Weise werden die Hauptassembly der Anwendung und die Satellitenassembly mit den neutralen Sprachressourcen generiert, die LocBaml für die Lokalisierung benötigt. So erstellen Sie die Anwendung

  1. Kompilieren Sie HelloApp, um eine Dynamic Link Library (DLL) zu erstellen:

    msbuild helloapp.csproj

  2. Die neu erstellte Hauptassembly der Anwendung, HelloApp.exe, wird im folgenden Ordner erstellt:

    C:\HelloApp\Bin\Debug\

  3. Die neu erstellte Satellitenassembly mit den neutralen Sprachressourcen, HelloApp.resources.dll, wird im folgenden Ordner erstellt:

    C:\HelloApp\Bin\Debug\en-US\

Erstellen des LocBaml-Tools

  1. Alle für das Erstellen von LocBaml notwendigen Dateien befinden sich in den WPF-Beispielen. Laden Sie die C#-Dateien aus dem Beispiel Beispiel zum LocBaml-Tool herunter.

  2. Führen Sie in der Befehlszeile die Projektdatei (locbaml.csproj) aus, um das Tool zu erstellen:

    msbuild locbaml.csproj

  3. Wechseln Sie zum Verzeichnis Bin\Release, in dem die neu erstellte ausführbare Datei (locbaml.exe) enthalten ist. Beispiel: C:\LocBaml\Bin\Release\locbaml.exe.

  4. Beim Ausführen von LocBaml können Sie folgende Optionen angeben:

    • parse oder -p: Analysiert Baml, Ressourcen oder DLL-Dateien, um eine CSV- oder TXT-Datei zu generieren.

    • generate oder -g: Generiert eine lokalisierte Binärdatei unter Verwendung einer übersetzten Datei.

    • out oder -o [Dateiverzeichnis]: Name der Ausgabedatei.

    • culture oder -cul [Kultur]: Gebietsschema der Ausgabeassemblys.

    • translation oder -trans [translation.csv]: Übersetzte oder lokalisierte Datei.

    • asmpath oder -asmpath: [Dateiverzeichnis]: Wenn Ihr XAML-Code benutzerdefinierte Steuerelemente enthält, müssen Sie den asmpath für die benutzerdefinierte Steuerelementassembly angeben.

    • nologo: Zeigt Logo oder Copyrightinformationen nicht an.

    • verbose: Zeigt Informationen im ausführlichen Modus an.

    Tipp

    Wenn Sie beim Ausführen des Tools eine Liste der Optionen benötigen, geben Sie LocBaml.exe ein, und drücken Sie die EINGABETASTE.

Verwenden von LocBaml zum Analysieren einer Datei

Nachdem Sie das LocBaml-Tool erstellt haben, sind Sie bereit, dieses Tool zum Analysieren der Datei HelloApp.resources.dll zu verwenden, um den zu lokalisierenden Textinhalt zu extrahieren.

  1. Kopieren Sie LocBaml.exe in den Ordner bin\debug der Anwendung, in dem die Hauptassembly der Anwendung erstellt wurde.

  2. Zum Analysieren der Satellitenassemblydatei und zum Speichern der Ausgabe in einer CSV-Datei verwenden Sie den folgenden Befehl:

    LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv

    Tipp

    Wenn die Eingabedatei HelloApp.resources.dll sich nicht im selben Ordner wie LocBaml.exe befindet, verschieben Sie eine der Dateien, damit sich beide Dateien im selben Verzeichnis befinden.

  3. Wenn Sie LocBaml zum Analysieren von Dateien ausführen, besteht die Ausgabe aus sieben durch Kommas (CSV-Dateien) oder Tabulatoren (TXT-Dateien) getrennte Felder. Nachfolgend wird die analysierte CSV-Datei für den HelloApp.resources.dll dargestellt:

    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;

    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World

    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    Die sieben Felder sind:

    1. BAML Name. Der Name der BAML-Ressource bezogen auf die Satellitenassembly für die Ausgangssprache.

    2. Resource Key. Der lokalisierte Ressourcenbezeichner.

    3. Category. Der Werttyp. Informationen hierzu finden Sie unter Lokalisierungsattribute und -kommentare.

    4. Readability. Angabe dazu, ob der Wert von einem Lokalisierungstool gelesen werden kann. Informationen hierzu finden Sie unter Lokalisierungsattribute und -kommentare.

    5. Modifiability. Angabe dazu, ob der Wert von einem Lokalisierungstool geändert werden kann. Informationen hierzu finden Sie unter Lokalisierungsattribute und -kommentare.

    6. Comments. Zusätzliche Beschreibung des Werts, die zu bestimmen hilft, wie ein Wert lokalisiert wird. Informationen hierzu finden Sie unter Lokalisierungsattribute und -kommentare.

    7. Value. Der Textwert, der in die gewünschte Sprache übersetzt werden soll.

    Die folgende Tabelle zeigt, wie diese Felder den durch Kommas getrennten Werten der CSV-Datei zugeordnet werden:

    BAML name

    Resource key

    Kategorie

    Lesbarkeit

    Modifiability

    Comments

    Value

    HelloApp.g.en-US.resources:window 1.baml

    Stack1:System.Windows.Controls.StackPanel.$Content

    Ignorieren

    FALSE

    FALSE

    #Text1;#Text2

    HelloApp.g.en-US.resources:window 1.baml

    Text1:System.Windows.Controls.TextBlock.$Content

    None

    TRUE

    TRUE

    Hello World

    HelloApp.g.en-US.resources:window 1.baml

    Text2:System.Windows.Controls.TextBlock.$Content

    None

    TRUE

    TRUE

    Goodbye World

    Beachten Sie, dass alle Werte für das Feld Comments keinen Inhalt haben; wenn ein Feld keinen Wert hat, ist es leer. Beachten Sie auch, dass das Element in der ersten Zeile weder lesbar noch änderbar ist und dass als Wert für die Category "Ignorieren" angegeben ist. Das bedeutet, dass dieser Wert nicht lokalisierbar ist.

  4. Um das Erkennen von lokalisierbaren Elementen in analysierten Dateien, insbesondere in großen Dateien, zu vereinfachen, können Sie die Elemente nach den Werten für Category, Readability und Modifiability sortieren oder filtern. Sie können beispielsweise nicht lesbare und nicht änderbare Werte herausfiltern.

Übersetzen des lokalisierbaren Inhalts

Verwenden Sie ein beliebiges Tool, das Ihnen zur Verfügung steht, um den extrahierten Inhalt zu übersetzen. Eine gute Möglichkeit besteht darin, die Ressourcen in eine CSV-Datei zu schreiben, in Microsoft Excel anzuzeigen und die letzte Spalte (den Wert) in den übersetzten Wert zu ändern.

Verwenden von LocBaml zum Generieren einer neuen .resources.dll-Datei

Nachdem die Inhalte, die durch das Analysieren von HelloApp.resources.dll mit LocBaml identifiziert wurden, übersetzt sind, müssen sie wieder mit der ursprünglichen Anwendung zusammengeführt werden. Verwenden Sie die generate-Option oder die -g-Option, eine neue .resources.dll-Datei zu generieren.

  1. Verwenden Sie die folgende Syntax, um eine neue HelloApp.resources.dll-Datei zu generieren. Kennzeichnen Sie die Kultur als en-US (/cul:en-US).

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    Tipp

    Wenn die Eingabedatei Hello.csv sich nicht im selben Ordner wie die ausführbare Datei LocBaml.exe befindet, verschieben Sie eine der Dateien, damit sich beide Dateien im selben Verzeichnis befinden.

  2. Ersetzen Sie die alte HelloApp.resources.dll-Datei im Verzeichnis C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll durch die neu erstellte Datei HelloApp.resources.dll.

  3. "Hello World" und "Goodbye World" sollte jetzt in die Anwendung übersetzt sein.

  4. Um in eine andere Kultur zu übersetzen, verwenden Sie die Kultur der Sprache, in die Sie übersetzen. Das folgende Beispiel zeigt, wie in Französisch für Kanada übersetzt wird:

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. Erstellen Sie in derselben Assembly wie der Hauptassembly der Anwendung einen neuen kulturspezifischen Ordner, in den die neue Satellitenassembly aufgenommen werden soll. Für Französisch für Kanada wäre der Ordner fr-CA.

  6. Kopieren Sie die generierte Satellitenassembly in den neuen Ordner.

  7. Um die neue Satellitenassembly zu testen, müssen Sie die Kultur ändern, in der Ihre Anwendung ausgeführt wird. Dazu haben Sie zwei Möglichkeiten:

    • Ändern Sie die Einstellung für das Gebietsschema (Start | Systemsteuerung | Regions- und Sprachoptionen) des Betriebssystems.

    • Fügen Sie in der Anwendung zu App.xaml.cs den folgenden Code hinzu:

      <Application
          xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      

Einige Tipps zum Verwenden von LocBaml

  • Alle abhängigen Assemblys, die benutzerdefinierte Steuerelemente definieren, müssen in das lokale Verzeichnis von LocBaml kopiert oder im globalen Assemblycache (GAC) installiert werden. Das ist notwendig, da die Lokalisierungs-API beim Lesen von binäre XAML (BAML) auf abhängige Assemblys zugreifen können muss.

  • Wenn die Hauptassembly signiert ist, muss auch die generierte Ressourcen-DLL signiert sein, um geladen werden zu können.

  • Die Version der lokalisierten Ressourcen-DLL muss mit der Hauptassembly synchronisiert werden.

Weitere Informationen

Sie kennen nun die grundlegende Verwendung des LocBaml-Tools. Sie sollten in der Lage sein, eine Datei zu erstellen, die UIDs enthält. Unter Verwendung des LocBaml-Tools sollten Sie in der Lage sein, eine Datei zu analysieren, um den lokalisierbaren Inhalt zu extrahieren, und nach der Übersetzung des Inhalts sollten Sie eine .resources.dll-Datei generieren können, die den übersetzten Inhalt zusammenführt. In diesem Thema werden nicht alle Einzelheiten aufgeführt, aber Sie verfügen nun über das notwendige Wissen, um LocBaml zur Lokalisierung Ihrer Anwendungen einzusetzen.

Siehe auch

Konzepte

Globalisierung für Windows Presentation Foundation

Übersicht über die Verwendung eines automatischen Layouts