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.
Vyvíjejte aplikaci v místě, kde chcete zahájit lokalizaci.
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>
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
checkuid
příkaz :msbuild -t:checkuid helloapp.csproj
Po spuštění
updateuid
by 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:
Zkompilujte Aplikaci HelloApp a vytvořte dynamickou knihovnu (DLL):
msbuild helloapp.csproj
Nově vytvořené hlavní sestavení aplikace HelloApp.exe se vytvoří v následující složce: C:\HelloApp\Bin\Debug
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
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.
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í 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.
Zkopírujte Soubor 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 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.
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ázev BAML. Název prostředku BAML s ohledem na satelitní 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.
Modifiability. 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 na požadovanou jazykovou verzi.
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á.
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.
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.
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 .
"Hello World" a "Goodbye World" by teď měly být přeloženy ve vaší aplikaci.
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
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.
Zkopírujte vygenerované satelitní sestavení do nové složky.
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é
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro