Instrukcje: lokalizowanie aplikacji

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

Uwaga

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.

Omówienie

Ten artykuł zawiera szczegółowe podejście do lokalizowania aplikacji. Najpierw należy przygotować aplikację, aby tekst, który zostanie przetłumaczony, można wyodrębnić. Po przetłumaczeniu tekstu scalisz przetłumaczony tekst na 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 przykładu narzędzia LocBaml.

  1. Opracuj aplikację do punktu, w którym 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 polecenie updateuid w pliku projektu:

    msbuild -t:updateuid helloapp.csproj

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

    msbuild -t:checkuid helloapp.csproj

    Po uruchomieniu updateuidplik powinien 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 zestawu satelitarnego zasobów neutralnego języka

Po skonfigurowaniu aplikacji do generowania zestawu satelitarnego zasobów neutralnego języka należy skompilować aplikację. Spowoduje to wygenerowanie głównego zestawu aplikacji, a także zestawu satelitarnego zasobów języka neutralnego, który jest wymagany przez LocBaml na potrzeby lokalizacji.

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ładu 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 {filedirectory] Nazwa pliku wyjściowego.
    culture lub -cul {culture] Ustawienia regionalne zestawów wyjściowych.
    translation lub -trans {translation.csv] Przetłumaczony lub zlokalizowany plik.
    asmpath lub -asmpath {filedirectory] Jeśli kod XAML zawiera kontrolki niestandardowe, należy podać go asmpath do niestandardowego zestawu kontrolek.
    nologo Wyświetla żadne informacje o logo ani prawach autorskich.
    verbose Wyświetla pełne informacje o trybie.

    Uwaga

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

Analizowanie pliku za pomocą metody LocBaml

Po utworzeniu narzędzia LocBaml możesz użyć go do przeanalizowania pliku HelloApp.resources.dll w celu wyodrębnienia zawartości tekstowej, która zostanie zlokalizowana.

  1. Skopiuj plik 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

    Uwaga

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

  3. Po uruchomieniu metody LocBaml do analizowania plików dane wyjściowe składają się z siedmiu pól rozdzielonych przecinkami (plikami CSV) lub kartami (pliki txt). Poniżej przedstawiono przeanalizowany plik CSV dla biblioteki HelloApp.resources.dll:

    Przeanalizowany plik CSV
    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,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

    Siedem pól to:

    W poniższej tabeli przedstawiono sposób mapowania tych pól na rozdzielane wartości pliku CSV:

    Nazwa BAML Klucz zasobu Kategoria Czytelność Modifiability Komentarze Wartość
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignoruj FAŁSZ FAŁSZ #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content None PRAWDA PRAWDA Witaj, świecie
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content None PRAWDA PRAWDA Ż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 element w pierwszym wierszu nie jest ani czytelny, ani modyfikowalny, i ma wartość "Ignoruj" jako wartość Kategoria , z których wszystkie wskazują, ż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ści i modyfikacji. 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 przy użyciu biblioteki LocBaml

Zawartość, która została zidentyfikowana przez przeanalizowanie biblioteki HelloApp.resources.dll z locBaml, została przetłumaczona i musi zostać scalona z powrotem z oryginalną aplikacją. generate Użyj opcji 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

    Uwaga

    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 były w tym samym katalogu.

  2. Zastąp stary plik HelloApp.resources.dll w pliku 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żesz to zrobić na dwa sposoby:

    • 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
      

Wskazówki na potrzeby 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ż interfejs API lokalizacji musi mieć dostęp do zestawów zależnych podczas odczytywania binarnego kodu 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 zestawem.

Zobacz też