Udostępnij za pośrednictwem


Instrukcje: lokalizowanie aplikacji

W tym samouczku wyjaśniono, jak utworzyć zlokalizowaną aplikację przy użyciu narzędzia LocBaml.

Notatka

Narzędzie LocBaml nie jest aplikacją gotową do produkcji. Jest on przedstawiony jako przykład, który używa niektórych interfejsów API lokalizacji i ilustruje, jak można napisać narzędzie lokalizacji.

Przegląd

Ten artykuł zawiera szczegółowe podejście do lokalizowania aplikacji. Najpierw należy przygotować aplikację, aby można było wyodrębnić tekst, który zostanie przetłumaczony. Po przetłumaczeniu tekstu łączy się przetłumaczony tekst z nową kopią oryginalnej aplikacji.

Tworzenie przykładowej aplikacji

W tym kroku przygotujesz aplikację do lokalizacji. W przykładach programu Windows Presentation Foundation (WPF) podano przykład HelloApp, który będzie używany do przykładów kodu w tej dyskusji. Jeśli chcesz użyć tego przykładu, pobierz pliki Extensible Application Markup Language (XAML) z LocBaml Tool Sample.

  1. Opracuj aplikację do etapu, gdzie chcesz rozpocząć lokalizację.

  2. Określ język programowania w pliku projektu, aby program MSBuild wygenerował główny zestaw i zestaw satelitarny (plik z rozszerzeniem .resources.dll) zawierający neutralne zasoby językowe. Plik projektu w przykładzie HelloApp to HelloApp.csproj. W tym pliku znajdziesz język programowania zidentyfikowany w następujący sposób:

    <UICulture>en-US</UICulture>

  3. Dodaj identyfikatory UID do plików XAML. Identyfikatory Uid służą do śledzenia zmian w plikach i identyfikowania elementów, które należy przetłumaczyć. Aby dodać identyfikatory UID do plików, uruchom updateuid w pliku projektu:

    msbuild -t:updateuid helloapp.csproj

    Aby sprawdzić, czy nie brakuje lub nie ma zduplikowanych identyfikatorów Uid, uruchom polecenie checkuid:

    msbuild -t:checkuid helloapp.csproj

    Po uruchomieniu updateuidpliki powinny zawierać identyfikatory UID. Na przykład w pliku Pane1.xaml aplikacji HelloApp powinny znajdować się następujące elementy:

    <StackPanel x:Uid="StackPanel_1">
      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>
      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>
    </StackPanel>
    

Tworzenie satelitarnego zestawu zasobów języka neutralnego

Po skonfigurowaniu aplikacji do generowania satelitarnego zestawu zasobów w neutralnym języku, skompiluj aplikację. Wynikiem tego jest wygenerowanie głównego zestawu aplikacji oraz satelitarnego zestawu zasobów neutralnojęzykowych, który jest wymagany przez LocBaml do celów lokalizacyjnych.

Aby skompilować aplikację:

  1. Skompiluj aplikację HelloApp, aby utworzyć bibliotekę linku dynamicznego (DLL):

    msbuild helloapp.csproj

  2. Nowo utworzony główny zestaw aplikacji, HelloApp.exe, jest tworzony w następującym folderze: C:\HelloApp\Bin\Debug

  3. Nowo utworzony zestaw satelitarny zasobów w języku neutralnym, HelloApp.resources.dll, jest tworzony w następującym folderze: C:\HelloApp\Bin\Debug\en-US

Kompilowanie narzędzia LocBaml

  1. Wszystkie pliki niezbędne do skompilowania LocBaml znajdują się w przykładach WPF. Pobierz pliki języka C# z przykładowego narzędzia LocBaml.

  2. W wierszu polecenia uruchom plik projektu (locbaml.csproj), aby skompilować narzędzie:

    msbuild locbaml.csproj

  3. Przejdź do katalogu Bin\Release, aby znaleźć nowo utworzony plik wykonywalny (locbaml.exe). Przykład: C:\LocBaml\Bin\Release\locbaml.exe

  4. Opcje, które można określić podczas uruchamiania LocBaml, są następujące.

    Opcja Opis
    parse lub -p Analizuje pliki Baml, resources lub DLL, aby wygenerować plik .csv lub .txt.
    generate lub -g Generuje zlokalizowany plik binarny przy użyciu przetłumaczonego pliku.
    out lub -o {katalog plików] Nazwa pliku wyjściowego.
    culture lub -cul {kultury] Ustawienia regionalne zestawów wyjściowych.
    translation lub -trans {translation.csv] Przetłumaczony lub zlokalizowany plik.
    asmpath lub -asmpath {katalog plików} Jeśli kod XAML zawiera kontrolki niestandardowe, należy podać asmpath do niestandardowego zestawu kontrolek.
    nologo Nie wyświetla logo ani informacji o prawach autorskich.
    verbose Wyświetla szczegółowe informacje trybu verbose.

    Uwaga

    Jeśli potrzebujesz listy opcji podczas uruchamiania narzędzia, wprowadź LocBaml.exe, a następnie naciśnij Enter.

Analizowanie pliku za pomocą metody LocBaml

Teraz, gdy utworzyłeś narzędzie LocBaml, jesteś gotowy, aby użyć go do przeanalizowania HelloApp.resources.dll w celu wyodrębnienia zawartości tekstowej, która zostanie zlokalizowana.

  1. Skopiuj LocBaml.exe do folderu bin\debug aplikacji, w którym utworzono główny zestaw aplikacji.

  2. Aby przeanalizować plik zestawu satelitarnego i zapisać dane wyjściowe jako plik .csv, użyj następującego polecenia:

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

    Notatka

    Jeśli plik wejściowy, HelloApp.resources.dll, nie znajduje się w tym samym katalogu, co LocBaml.exe przenieść jeden z plików, tak aby oba pliki znajdują się w tym samym katalogu.

  3. Po uruchomieniu LocBaml do parsowania plików dane wyjściowe składają się z siedmiu pól oddzielonych przecinkami (dla plików.csv) lub tabulatorami (dla plików.txt). Poniżej przedstawiono przeanalizowany plik .csv dla HelloApp.resources.dll:

    Przeanalizowany plik .csv
    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,,Witaj świecie
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    Siedem pól to:

    • nazwa BAML. Nazwa zasobu BAML w kontekście zestawu satelitarnego języka źródłowego.

    • klucz zasobu. Zlokalizowany identyfikator zasobu.

    • kategoria. Typ wartości. Zobacz Atrybuty lokalizacji i komentarze.

    • czytelność. Czy wartość może być odczytywana przez lokalizator. Zobacz Atrybuty lokalizacji i komentarze.

    • modyfikowalność. Określa, czy wartość można modyfikować za pomocą lokalizatora. Zobacz atrybuty lokalizacji i komentarze .

    • komentarze. Dodatkowy opis wartości, aby ułatwić określenie lokalizacji wartości. Zobacz Atrybuty lokalizacji i komentarze.

    • wartość. Wartość tekstowa do tłumaczenia na żądaną kulturę.

    Poniższa tabela pokazuje, w jaki sposób te pola są mapowane na rozdzielane wartości pliku .csv.

    Nazwa BAML Klucz zasobu Kategoria Czytelność Modyfikowalność Komentarze Wartość
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignoruj FAŁSZYWY FAŁSZYWY #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Żaden PRAWDZIWY PRAWDZIWY Witaj świecie
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Żaden PRAWDZIWY PRAWDZIWY Żegnaj Świat

    Zwróć uwagę, że wszystkie wartości pola komentarze nie zawierają wartości; Jeśli pole nie ma wartości, jest puste. Należy również zauważyć, że pozycja w pierwszym rzędzie nie jest ani czytelna, ani modyfikowalna, a jej kategoria jest określona jako "Ignoruj" (Category), co wskazuje, że wartość nie jest lokalizowalna.

  4. Aby ułatwić odnajdywanie elementów lokalizowalnych w plikach analizowanych, szczególnie w dużych plikach, można sortować lub filtrować elementy według kategorii, czytelnościi modyfikowalnej. Na przykład można odfiltrować nieprzeczytane i niezmodyfikowane wartości.

Tłumaczenie zawartości lokalizowalnej

Użyj dowolnego dostępnego narzędzia do tłumaczenia wyodrębnionej zawartości. Dobrym sposobem jest zapisanie zasobów w pliku .csv i wyświetlenie ich w programie Microsoft Excel, wprowadzenie zmian tłumaczenia w ostatniej kolumnie (wartość).

Generowanie nowego pliku .resources.dll za pomocą narzędzia LocBaml

Zawartość zidentyfikowana przez analizę HelloApp.resources.dll z LocBaml została przetłumaczona i musi zostać scalona z powrotem do oryginalnej aplikacji. Użyj opcji generate lub -g, aby wygenerować nowy plik .resources.dll.

  1. Użyj następującej składni, aby wygenerować nowy plik HelloApp.resources.dll. Oznacz kulturę jako en-US (/cul:en-US).

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

    Notatka

    Jeśli plik wejściowy, Hello.csv, nie znajduje się w tym samym katalogu co plik wykonywalny, LocBaml.exe, przenieś jeden z plików, aby oba pliki znajdują się w tym samym katalogu.

  2. Zastąp stary plik HelloApp.resources.dll w katalogu C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll nowo utworzonym plikiem HelloApp.resources.dll.

  3. "Hello World" i "Goodbye World" powinny być teraz tłumaczone w aplikacji.

  4. Aby przetłumaczyć na inną kulturę, użyj kultury języka, na który tłumaczysz. W poniższym przykładzie pokazano, jak przetłumaczyć na język francuski-kanadyjski:

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

  5. W tym samym zestawie co główny zestaw aplikacji utwórz nowy folder specyficzny dla kultury, aby pomieścić nowy zestaw satelitarny. W przypadku Francuzów-Kanadyjczyk folder będzie fr-CA.

  6. Skopiuj wygenerowany zestaw satelitarny do nowego folderu.

  7. Aby przetestować nowy zestaw satelitarny, należy zmienić kulturę, w której będzie uruchamiana aplikacja. Można to zrobić na jeden z dwóch sposobów:

    • Zmień ustawienia regionalne systemu operacyjnego.

    • W aplikacji dodaj następujący kod do pliku App.xaml.cs.

      <Application
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      
      using System.Windows;
      using System.Globalization;
      using System.Threading;
      
      namespace SDKSample
      {
          public partial class App : Application
          {
              public App()
              {
                  // Change culture under which this application runs
                  CultureInfo ci = new CultureInfo("fr-CA");
                  Thread.CurrentThread.CurrentCulture = ci;
                  Thread.CurrentThread.CurrentUICulture = ci;
              }
          }
      }
      
      
      Imports System.Windows
      Imports System.Globalization
      Imports System.Threading
      
      Namespace SDKSample
          Partial Public Class App
              Inherits Application
              Public Sub New()
                  ' Change culture under which this application runs
                  Dim ci As New CultureInfo("fr-CA")
                  Thread.CurrentThread.CurrentCulture = ci
                  Thread.CurrentThread.CurrentUICulture = ci
              End Sub
          End Class
      End Namespace
      

Porady dotyczące korzystania z locBaml

  • Wszystkie zależne zestawy, które definiują kontrolki niestandardowe, muszą być kopiowane do katalogu lokalnego LocBaml lub zainstalowane w GAC. Jest to konieczne, ponieważ API lokalizacji musi mieć dostęp do zależnych bibliotek podczas odczytywania binarnego XAML (BAML).

  • Jeśli zestaw główny jest podpisany, wygenerowana biblioteka DLL zasobu musi być również podpisana, aby można było go załadować.

  • Wersja zlokalizowanej biblioteki DLL zasobu musi być zsynchronizowana z głównym elementem zestawu.

Zobacz też