Sdílet prostřednictvím


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

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

  2. V souboru projektu zadejte vývojový jazyk, 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 Uidy. 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 v souboru projektu:

    msbuild -t:updateuid helloapp.csproj

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

    msbuild -t:checkuid helloapp.csproj

    Po spuštění updateuidby 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í zdrojů pro neutrální jazyk, 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.exese vytvoří v následující složce: C:\HelloApp\Bin\Debug

  3. Nově vytvořené satelitní sestavení prostředků neutrálního jazyka HelloApp.resources.dllse vytvoří 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 soubory jazyka C# z ukázky nástroje LocBaml tool.

  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í .csv nebo .txt souboru.
    generate nebo -g Generuje lokalizovaný binární soubor pomocí přeloženého souboru.
    out nebo -o {adresáři souborů] Název výstupního souboru
    culture nebo -cul {kultura] Lokalizace výstupních sestavení.
    translation nebo -trans {translation.csv] Přeložený nebo lokalizovaný soubor
    asmpath nebo -asmpath {adresář souborů] Pokud váš kód XAML obsahuje vlastní ovládací prvky, musíte zadat asmpath do sestavení vlastní ovládací prvky.
    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 ho použít k analýze HelloApp.resources.dll k extrahování textového obsahu, který bude lokalizovaný.

  1. Zkopírujte 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 .csv souboru 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řesunout jeden ze souborů tak, aby oba soubory byly ve stejném adresáři.

  3. Když spustíte LocBaml pro parsování souborů, výstup obsahuje sedm polí oddělených čárkami (.csv soubory) nebo tabulátory (.txt soubory). 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,,Ahoj světe
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Sbohem světe

    Sedm polí:

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

    Název BAML Klíč zdroje Kategorie Čitelnost Přizpůsobitelnost Komentáře Hodnota
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignorovat NEPRAVDA NEPRAVDIVÝ #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Žádný PRAVDIVÝ PRAVDIVÝ Ahoj světe
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Žádný PRAVDIVÝ PRAVDIVÝ 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 upravitelná a má jako hodnotu Kategorie hodnotu 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, čitelnostia 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, zobrazit je v Microsoft Excelu a provést změny v překladu v posledním sloupci (hodnotě).

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

Obsah, který byl identifikován analýzou HelloApp.resources.dll pomocí LocBaml, byl přeložen a musí být sloučen zpět do původní aplikace. K vygenerování nového souboru .resources.dll použijte možnost generate nebo -g.

  1. K vygenerování nového souboru HelloApp.resources.dll použijte následující syntaxi. Označte kulturu 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. Starý HelloApp.resources.dll soubor v adresáři C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll nahraďte 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. Chcete-li překládat do jiné kultury, použijte kulturní kontext 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 jazykově specifickou složku pro uložení nového satelitního sestavení. Pro francouzsko-kanadskou verzi by složka byla fr-CA.

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

  7. Abyste otestovali nové satelitní sestavení, musíte změnit kulturu, 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 aplikace přidejte do App.xaml.cs 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žívání 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é