Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här självstudien beskrivs hur du skapar ett lokaliserat program med hjälp av LocBaml-verktyget.
Anmärkning
LocBaml-verktyget är inte ett produktionsklart program. Det visas som ett exempel som använder några av lokaliserings-API:erna och illustrerar hur du kan skriva ett lokaliseringsverktyg.
Översikt
Den här artikeln ger dig en stegvis metod för att lokalisera ett program. Först förbereder du applikationen så att den text som ska översättas kan extraheras. När texten har översatts sammanfogar du den översatta texten till en ny kopia av det ursprungliga programmet.
Skapa ett exempelprogram
I det här steget förbereder du appen för lokalisering. I WPF-exempel (Windows Presentation Foundation) tillhandahålls ett HelloApp-exempel som används för kodexemplen i den här diskussionen. Om du vill använda det här exemplet laddar du ned XAML-filerna (Extensible Application Markup Language) från LocBaml Tool Sample.
Utveckla programmet till den punkt där du vill starta lokaliseringen.
Ange utvecklingsspråket i projektfilen så att MSBuild genererar en huvudsammansättning och en satellitsammansättning (en fil med .resources.dll-tillägget) för att innehålla neutrala språkresurser. Projektfilen i HelloApp-exemplet är HelloApp.csproj. I den filen hittar du det utvecklingsspråk som identifieras på följande sätt:
<UICulture>en-US</UICulture>
Lägg till Uids i dina XAML-filer. Uid:er används för att hålla reda på ändringar i filer och för att identifiera objekt som måste översättas. Om du vill lägga till Uids i dina filer kör du
updateuid
på projektfilen:msbuild -t:updateuid helloapp.csproj
Kontrollera att du inte saknar eller duplicerar Uid:er genom att köra
checkuid
:msbuild -t:checkuid helloapp.csproj
När du har kört
updateuid
ska filerna innehålla Uids. I filen Pane1.xaml i HelloApp bör du till exempel hitta följande:<StackPanel x:Uid="StackPanel_1"> <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock> <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock> </StackPanel>
Skapa satellitmonteringen för neutrala språkresurser
När programmet har konfigurerats för att generera en satellitsammansättning för neutrala resurser skapar du programmet. Detta genererar huvudprogramförsamlingen samt satellitförsamlingen för resurser på ett neutralt språk som krävs av LocBaml för lokalisering.
Så här skapar du programmet:
Kompilera HelloApp för att skapa ett DLL-bibliotek (Dynamic Link Library):
msbuild helloapp.csproj
Den nyligen skapade huvudprogramsammansättningen, HelloApp.exe, skapas i följande mapp: C:\HelloApp\Bin\Debug
Den nyligen skapade satellitsammansättningen för neutrala resurser, HelloApp.resources.dll, skapas i följande mapp: C:\HelloApp\Bin\Debug\en-US
Skapa LocBaml-verktyget
Alla filer som behövs för att skapa LocBaml finns i WPF-exemplen. Ladda ned C#-filerna från LocBaml-verktygsexemplet.
Från kommandoraden kör du projektfilen (locbaml.csproj) för att skapa verktyget:
msbuild locbaml.csproj
Gå till katalogen Bin\Release för att hitta den nyligen skapade körbara filen (locbaml.exe). Exempel: C:\LocBaml\Bin\Release\locbaml.exe
De alternativ som du kan ange när du kör LocBaml är följande.
Alternativ Beskrivning parse
eller-p
Parsar Baml-, resurser- eller DLL-filer för att generera en .csv- eller .txt-fil. generate
eller-g
Genererar en lokaliserad binär fil med hjälp av en översatt fil. out
eller-o
{filedirectory]Namn på utdatafil. culture
eller-cul
{kultur]Regionala inställningar för utdataenheter. translation
eller-trans
{translation.csv]Översatt eller lokaliserad fil. asmpath
eller-asmpath
{filedirectory]Om XAML-koden innehåller anpassade kontroller måste du ange asmpath
till den anpassade kontrollsammansättningen.nologo
Visar ingen logotyp eller upphovsrättsinformation. verbose
Visar utförlig lägesinformation. Anmärkning
Om du behöver en lista över alternativen när du kör verktyget anger
LocBaml.exe
du och trycker sedan på Retur.
Använda LocBaml för att parsa en fil
Nu när du har skapat LocBaml-verktyget är du redo att använda det för att parsa HelloApp.resources.dll för att extrahera textinnehållet som ska lokaliseras.
Kopiera LocBaml.exe till programmets bin\debug-mapp, där huvudprogramsammansättningen skapades.
Använd följande kommando för att parsa satellitsammansättningsfilen och lagra utdata som en .csv fil:
LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csv
Anmärkning
Om indatafilen, HelloApp.resources.dll, inte finns i samma katalog som LocBaml.exe flytta en av filerna så att båda filerna finns i samma katalog.
När du kör LocBaml för att parsa filer består utdata av sju fält avgränsade med kommatecken (.csv filer) eller flikar (.txt filer). Följande visar den parsade .csv-filen för HelloApp.resources.dll:
Parsed .csv-filen 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,,Hej Världen HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hej då Världen De sju fälten är:
BAML-namn. Namnet på BAML-resursen med avseende på källspråkets satellitsammansättning.
Resursnyckel. Den lokaliserade resursidentifieraren.
Kategori. Värdetypen. Se Lokaliseringsattribut och kommentarer.
Läsbarhet. Huruvida värdet kan läsas av en översättare. Se Lokaliseringsattribut och kommentarer.
Modifierbarhet. Om värdet kan ändras av en lokaliserare. Se Lokaliseringsattribut och kommentarer.
Kommentarer. Ytterligare beskrivning av värdet för att avgöra hur ett värde lokaliseras. Se Lokaliseringsattribut och kommentarer.
Värde. Textvärdet som ska översättas till önskad kultur.
I följande tabell visas hur dessa fält mappas till de avgränsade värdena för .csv-filen:
BAML-namn Resursnyckel Kategori Läsbarhet Modifierbarhet Kommentarer Värde HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignorera Falskt Falskt #Text1;#Text2 HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Ingen SANN SANN Hej världen HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Ingen SANN SANN Hej då världen Observera att alla värden för fältet Kommentarer inte innehåller några värden. Om ett fält inte har något värde är det tomt. Observera också att objektet på den första raden varken är läsbart eller ändringsbart och har "Ignorera" som kategorivärde , vilket alla anger att värdet inte kan lokaliseras.
För att underlätta identifiering av lokaliserade objekt i parsade filer, särskilt i stora filer, kan du sortera eller filtrera objekten efter kategori, läsbarhet och modifiering. Du kan till exempel filtrera bort oläsbara och omodifierbara värden.
Översätta det lokaliserade innehållet
Använd alla verktyg som du har tillgängliga för att översätta det extraherade innehållet. Ett bra sätt att göra detta är att skriva resurserna till en .csv fil och visa dem i Microsoft Excel och göra översättningsändringar i den sista kolumnen (värde).
Använd LocBaml för att generera en ny .resources.dll fil
Innehållet som identifierades genom att parsa HelloApp.resources.dll med LocBaml har översatts och måste sammanfogas tillbaka till det ursprungliga programmet.
generate
Använd alternativet eller -g
för att generera en ny .resources.dll fil.
Använd följande syntax för att generera en ny HelloApp.resources.dll fil. Markera kulturen som en-US (/cul:en-US).
LocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US
Anmärkning
Om indatafilen, Hello.csv, inte finns i samma katalog som den körbara filen LocBaml.exeflyttar du en av filerna så att båda filerna finns i samma katalog.
Ersätt den gamla HelloApp.resources.dll-filen i katalogenC:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll med din nyligen skapade HelloApp.resources.dll-fil .
"Hello World" och "Goodbye World" bör nu översättas i ditt program.
Om du vill översätta till en annan kultur använder du kulturen i det språk som du översätter till. I följande exempel visas hur du översätter till fransk-kanadensisk:
LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA
I samma sammansättning som huvudprogramsammansättningen skapar du en ny kulturspecifik mapp som rymmer den nya satellitsammansättningen. För fransk-kanadensiska skulle mappen vara fr-CA.
Kopiera den genererade satellitsammansättningen till den nya mappen.
För att testa den nya satellitsammansättningen måste du ändra den kultur som programmet ska köras under. Du kan göra detta på något av två sätt:
Ändra operativsystemets regionala inställningar.
Lägg till följande kod i App.xaml.cs i ditt program:
<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
Tips för att använda LocBaml
Alla beroende sammansättningar som definierar anpassade kontroller måste kopieras till den lokala katalogen för LocBaml eller installeras i GAC. Detta är nödvändigt eftersom lokaliserings-API:et måste ha åtkomst till de beroende sammansättningarna när det läser det binära XAML (BAML).
Om huvudsammansättningen är signerad måste den genererade resurs-DLL:en också signeras för att den ska kunna läsas in.
Versionen av den lokaliserade resurs-DLL:en måste synkroniseras med huvudsammansättningen.
Se även
.NET Desktop feedback