Postupy: Lokalizace aplikace

Tento kurz vysvětluje, jak vytvořit lokalizovanou aplikaci pomocí nástroje LocBaml.

Poznámka:

Nástroj LocBaml není aplikace připravená pro produkční prostředí. Zobrazuje se jako ukázka, která používá některá z lokalizačních rozhraní API a ukazuje, jak můžete napsat lokalizační nástroj.

Přehled

Tento článek obsahuje podrobný přístup k lokalizaci aplikace. Nejprve připravíte aplikaci tak, aby se text, který se přeloží, bylo možné extrahovat. Po přeložení textu sloučíte přeložený text do nové kopie původní aplikace.

Vytvoření ukázkové aplikace

V tomto kroku připravíte aplikaci na lokalizaci. V ukázkách Windows Presentation Foundation (WPF) je zadána ukázka HelloApp, která se použije pro příklady kódu v této diskuzi. Pokud chcete použít tuto ukázku, stáhněte si soubory XAML (Extensible Application Markup Language) z ukázky nástroje LocBaml.

  1. Vyvíjejte aplikaci v místě, kde chcete zahájit lokalizaci.

  2. Zadejte jazyk pro vývoj v souboru projektu tak, aby nástroj MSBuild vygeneroval hlavní sestavení a satelitní sestavení (soubor s příponou .resources.dll), který bude obsahovat neutrální jazykové zdroje. Soubor projektu v ukázce HelloApp je HelloApp.csproj. V souboru najdete vývojový jazyk identifikovaný následujícím způsobem:

    <UICulture>en-US</UICulture>

  3. Přidejte do souborů XAML Uid. Uid se používají ke sledování změn souborů a k identifikaci položek, které je potřeba přeložit. Pokud chcete do souborů přidat Uid, spusťte updateuid ho v souboru projektu:

    msbuild -t:updateuid helloapp.csproj

    Pokud chcete ověřit, že nemáte žádné chybějící nebo duplicitní identifikátory UID, spusťte checkuidpříkaz :

    msbuild -t:checkuid helloapp.csproj

    Po spuštění updateuidby vaše soubory měly obsahovat UID. Například v souboru Pane1.xaml aplikace HelloApp byste měli najít následující:

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

Vytvoření satelitního sestavení prostředků neutrálního jazyka

Jakmile je aplikace nakonfigurovaná tak, aby vygenerovala satelitní sestavení prostředků neutrálního jazyka, sestavíte aplikaci. Tím se vygeneruje hlavní sestavení aplikace a satelitní sestavení prostředků neutrálního jazyka, které vyžaduje LocBaml pro lokalizaci.

Sestavení aplikace:

  1. Zkompilujte Aplikaci HelloApp a vytvořte dynamickou knihovnu (DLL):

    msbuild helloapp.csproj

  2. Nově vytvořené hlavní sestavení aplikace HelloApp.exe se vytvoří v následující složce: C:\HelloApp\Bin\Debug

  3. Nově vytvořené satelitní sestavení neutrálních prostředků HelloApp.resources.dll je vytvořeno v následující složce: C:\HelloApp\Bin\Debug\en-US

Sestavení nástroje LocBaml

  1. Všechny soubory potřebné k sestavení LocBaml jsou umístěny v ukázkách WPF. Stáhněte si soubory C# z ukázky nástroje LocBaml.

  2. Z příkazového řádku spusťte soubor projektu (locbaml.csproj) a sestavte nástroj:

    msbuild locbaml.csproj

  3. Přejděte do adresáře Bin\Release a vyhledejte nově vytvořený spustitelný soubor (locbaml.exe). Příklad: C:\LocBaml\Bin\Release\locbaml.exe

  4. Možnosti, které můžete určit při spuštění LocBaml, jsou následující.

    Možnost Popis
    parse nebo -p Parsuje soubory Baml, resources nebo DLL za účelem vygenerování souboru .csv nebo .txt.
    generate nebo -g Generuje lokalizovaný binární soubor pomocí přeloženého souboru.
    out nebo -o {filedirectory] Název výstupního souboru
    culture nebo -cul {culture] Národní prostředí výstupních sestavení.
    translation nebo -trans {translation.csv] Přeložený nebo lokalizovaný soubor
    asmpath nebo -asmpath {filedirectory] Pokud kód XAML obsahuje vlastní ovládací prvky, musíte zadat asmpath sestavení vlastního ovládacího prvku.
    nologo Nezobrazuje žádné logo ani informace o autorských právech.
    verbose Zobrazí podrobné informace o režimu.

    Poznámka:

    Pokud potřebujete seznam možností při spuštění nástroje, zadejte LocBaml.exe a stiskněte Enter.

Analýza souboru pomocí LocBaml

Teď, když jste vytvořili nástroj LocBaml, jste připraveni jej použít k analýze HelloApp.resources.dll k extrahování textového obsahu, který bude lokalizován.

  1. Zkopírujte Soubor LocBaml.exe do složky bin\debug vaší aplikace, kde bylo vytvořeno hlavní sestavení aplikace.

  2. K analýze souboru satelitního sestavení a uložení výstupu jako souboru .csv použijte následující příkaz:

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

    Poznámka:

    Pokud vstupní soubor HelloApp.resources.dll není ve stejném adresáři jako LocBaml.exe přesuňte jeden ze souborů tak, aby oba soubory byly ve stejném adresáři.

  3. Když spustíte LocBaml pro analýzu souborů, výstup se skládá ze sedmi polí oddělených čárkami (soubory CSV) nebo tabulátory (soubory TXT). Následující příklad ukazuje analyzovaný soubor .csv pro HelloApp.resources.dll:

    Parsovaný soubor .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,,Hello World
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    Sedm polí:

    Následující tabulka ukazuje, jak se tato pole mapují na hodnoty s oddělovači souboru .csv:

    Název BAML Klíč prostředku Kategorie Čitelnost Modifiability Komentáře Hodnota
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignorovat FALSE FALSE #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Nic TRUE TRUE Hello World
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Nic TRUE TRUE Sbohem Svět

    Všimněte si, že všechny hodnoty pole Komentáře neobsahují žádné hodnoty. Pokud pole nemá hodnotu, je prázdné. Všimněte si také, že položka v prvním řádku není čitelná ani modifikovatelná a má jako hodnotu Kategorie možnost Ignorovat, což znamená, že hodnota není lokalizovatelná.

  4. Chcete-li usnadnit zjišťování lokalizovatelných položek v parsovaných souborech, zejména ve velkých souborech, můžete položky řadit nebo filtrovat podle kategorie, čitelnosti a modifiability. Můžete například filtrovat nečitelné a nemodifikovatelné hodnoty.

Překlad lokalizovatelného obsahu

K překladu extrahovaného obsahu použijte libovolný nástroj, který máte k dispozici. Dobrým způsobem, jak to udělat, je zapsat prostředky do souboru .csv a zobrazit je v Microsoft Excelu a provést změny překladu do posledního sloupce (hodnoty).

Použití LocBaml k vygenerování nového souboru .resources.dll

Obsah, který byl identifikován parsováním HelloApp.resources.dll s LocBaml byl přeložen a musí být sloučen zpět do původní aplikace. generate Pomocí nebo -g možnosti vygenerujte nový soubor .resources.dll.

  1. Pomocí následující syntaxe vygenerujte nový soubor HelloApp.resources.dll. Označte jazykovou verzi jako en-US (/cul:en-US).

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

    Poznámka:

    Pokud vstupní soubor Hello.csv není ve stejném adresáři jako spustitelný soubor LocBaml.exe, přesuňte jeden ze souborů tak, aby oba soubory byly ve stejném adresáři.

  2. Nahraďte starý soubor HelloApp.resources.dll v adresáři C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll nově vytvořeným souborem HelloApp.resources.dll .

  3. "Hello World" a "Goodbye World" by teď měly být přeloženy ve vaší aplikaci.

  4. Pokud chcete přeložit na jinou jazykovou verzi, použijte jazykovou verzi jazyka, do kterého překládáte. Následující příklad ukazuje, jak přeložit na francouzštinu-kanadskou:

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

  5. Ve stejném sestavení jako hlavní sestavení aplikace vytvořte novou složku specifickou pro jazykovou verzi pro umístění nového satelitního sestavení. Pro francouzštinu-Kanadu by složka byla fr-CA.

  6. Zkopírujte vygenerované satelitní sestavení do nové složky.

  7. Pokud chcete otestovat nové satelitní sestavení, musíte změnit jazykovou verzi, ve které bude vaše aplikace běžet. Můžete to udělat jedním ze dvou způsobů:

    • Změňte místní nastavení operačního systému.

    • Do souboru App.xaml.cs přidejte do aplikace následující kód:

      <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
      

Tipy pro použití LocBaml

  • Všechna závislá sestavení, která definují vlastní ovládací prvky, musí být zkopírována do místního adresáře LocBaml nebo nainstalována do GAC. To je nezbytné, protože rozhraní API lokalizace musí mít přístup k závislým sestavením při čtení binárního souboru XAML (BAML).

  • Pokud je hlavní sestavení podepsáno, musí být také vygenerovaná knihovna DLL prostředků podepsána, aby byla načtena.

  • Verze lokalizované knihovny DLL prostředků musí být synchronizována s hlavním sestavením.

Viz také