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.
Vyvíjejte aplikaci v místě, kde chcete zahájit lokalizaci.
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>
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í
updateuid
by 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:
Zkompilujte Aplikaci HelloApp a vytvořte dynamickou knihovnu (DLL):
msbuild helloapp.csproj
Nově vytvořené hlavní sestavení aplikace HelloApp.exese vytvoří v následující složce: C:\HelloApp\Bin\Debug
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
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.
Z příkazového řádku spusťte soubor projektu (locbaml.csproj) a sestavte nástroj:
msbuild locbaml.csproj
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
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ý.
Zkopírujte LocBaml.exe do složky bin\debug vaší aplikace, kde bylo vytvořeno hlavní sestavení aplikace.
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.
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ázev BAML. Název zdroje BAML ve vztahu k satelitnímu sestavení zdrojového jazyka.
klíč prostředku. Lokalizovaný identifikátor prostředku.
kategorie. Typ hodnoty. Viz atributy lokalizace a komentáře.
čitelnost. Zda lze hodnotu přečíst lokalizátorem. Viz atributy lokalizace a komentáře.
Modifikovatelnost. Určuje, zda lze hodnotu změnit lokalizátorem. Viz atributy lokalizace a komentáře.
Komentáře. Další popis hodnoty, která vám pomůže určit, jak se hodnota lokalizuje. Viz atributy lokalizace a komentáře.
hodnota. Textová hodnota, která se má přeložit do požadované jazykové verze.
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á.
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
.
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.
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.
"Hello World" a "Goodbye World" by teď měly být přeloženy ve vaší aplikaci.
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
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.
Zkopírujte vygenerované satelitní sestavení do nové složky.
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é
.NET Desktop feedback