Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie wordt uitgelegd hoe u een gelokaliseerde toepassing maakt met behulp van het hulpprogramma LocBaml.
Opmerking
Het LocBaml-hulpprogramma is geen toepassing die gereed is voor productie. Het wordt weergegeven als een voorbeeld dat gebruikmaakt van een aantal lokalisatie-API's en laat zien hoe u een lokalisatieprogramma kunt schrijven.
Overzicht
In dit artikel krijgt u een stapsgewijze benadering voor het lokaliseren van een toepassing. Eerst bereidt u uw toepassing voor, zodat de tekst die wordt vertaald, kan worden geëxtraheerd. Nadat de tekst is vertaald, voegt u de vertaalde tekst samen in een nieuwe kopie van de oorspronkelijke toepassing.
Een voorbeeldtoepassing maken
In deze stap bereidt u uw app voor op lokalisatie. In de WPF-voorbeelden (Windows Presentation Foundation) wordt een HelloApp-voorbeeld geleverd dat wordt gebruikt voor de codevoorbeelden in deze discussie. Als u dit voorbeeld wilt gebruiken, downloadt u de XAML-bestanden (Extensible Application Markup Language) uit het LocBaml-hulpprogrammavoorbeeld.
Ontwikkel uw toepassing tot het punt waar u de lokalisatie wilt starten.
Geef de ontwikkeltaal in het projectbestand op, zodat MSBuild een hoofdassembly en een satellietassembly (een bestand met de extensie .resources.dll) genereert om de neutrale taalbronnen te bevatten. Het projectbestand in het HelloApp-voorbeeld is HelloApp.csproj. In dat bestand vindt u de ontwikkelingstaal die als volgt wordt geïdentificeerd:
<UICulture>en-US</UICulture>Voeg Uids toe aan uw XAML-bestanden. Uids worden gebruikt om wijzigingen in bestanden bij te houden en items te identificeren die moeten worden vertaald. Als u Uids wilt toevoegen aan uw bestanden, voert u het volgende uit
updateuidop het projectbestand:msbuild -t:updateuid helloapp.csprojAls u wilt controleren of u geen ontbrekende of dubbele Uids hebt, voert u het volgende uit
checkuid:msbuild -t:checkuid helloapp.csprojNa het uitvoeren van
updateuidmoeten uw bestanden Uids bevatten. In het bestand Pane1.xaml van HelloApp vindt u bijvoorbeeld het volgende:<StackPanel x:Uid="StackPanel_1"> <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock> <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock> </StackPanel>
De satellietassemblage voor neutrale taalbronnen maken
Nadat de toepassing is geconfigureerd voor het genereren van een satellietassembly voor neutrale taalbronnen, bouwt u de toepassing. Hiermee wordt de hoofdtoepassingsassembly en de satellietassembly voor neutraal taalbronnen gegenereerd die door LocBaml is vereist voor lokalisatie.
De toepassing bouwen:
Compileer HelloApp om een DLL (Dynamic Link Library) te maken:
msbuild helloapp.csprojDe zojuist gemaakte hoofdtoepassingsassembly, HelloApp.exe, wordt gemaakt in de volgende map: C:\HelloApp\Bin\Debug
De recentelijk aangemaakte satellietsamenstelling voor neutrale taalbronnen, HelloApp.resources.dll, is aangemaakt in de volgende map: C:\HelloApp\Bin\Debug\en-US
Het locbaml-hulpprogramma bouwen
Alle bestanden die nodig zijn om LocBaml te bouwen, bevinden zich in de WPF-voorbeelden. Download de C#-bestanden uit het LocBaml Tool-voorbeeld.
Voer vanaf de opdrachtregel het projectbestand (locbaml.csproj) uit om het hulpprogramma te bouwen:
msbuild locbaml.csprojGa naar de map Bin\Release om het zojuist gemaakte uitvoerbare bestand (locbaml.exe) te vinden. Voorbeeld: C:\LocBaml\Bin\Release\locbaml.exe
De opties die u kunt opgeven wanneer u LocBaml uitvoert, zijn als volgt.
Optie Beschrijving parseof-pParseert Baml-, resources- of DLL-bestanden om een .csv- of .txt-bestand te genereren. generateof-gGenereert een gelokaliseerd binair bestand met behulp van een vertaald bestand. outof-o{bestandsmap]Naam van uitvoerbestand. cultureof-cul{cultuur}Taalinstelling van uitvoerassemblages. translationof-trans{translation.csv}Vertaald of gelokaliseerd bestand. asmpathof-asmpath{bestandsmap]Als uw XAML-code aangepaste besturingselementen bevat, moet u de asmpathopgeven voor de aangepaste besturingsassemblage.nologoGeeft geen logo- of copyrightgegevens weer. verboseGeeft uitgebreide modusgegevens weer. Opmerking
Als u een lijst met de opties nodig hebt wanneer u het hulpprogramma uitvoert, voert u enter
LocBaml.exein en drukt u op Enter.
LocBaml gebruiken om een bestand te parseren
Nu u het hulpprogramma LocBaml hebt gemaakt, kunt u het gebruiken om HelloApp.resources.dll te parseren om de tekstinhoud te extraheren die wordt gelokaliseerd.
Kopieer LocBaml.exe naar de map bin\debug van uw toepassing, waar de hoofdtoepassingsassembly is gemaakt.
Gebruik de volgende opdracht om het satellietassemblybestand te parseren en de uitvoer op te slaan als een .csv-bestand:
LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csvOpmerking
Als het invoerbestand, HelloApp.resources.dll, zich niet in dezelfde map bevindt als LocBaml.exe een van de bestanden verplaatsen, zodat beide bestanden zich in dezelfde map bevinden.
Wanneer u LocBaml uitvoert om bestanden te parseren, bestaat de uitvoer uit zeven velden gescheiden door komma's (.csv bestanden) of tabbladen (.txt bestanden). Hieronder ziet u het geparseerde .csv-bestand voor de HelloApp.resources.dll:
Het .csv-bestand is geparseerd 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,,Hallo Wereld HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,, Vaarwel Wereld De zeven velden zijn:
BAML-naam. De naam van de BAML-resource met betrekking tot de satellietassemblage van de brontaal.
Resourcesleutel. De gelokaliseerde resource-id.
Categorie. Het waardetype. Zie Lokalisatiekenmerken en opmerkingen.
leesbaarheid. Of de waarde kan worden gelezen door een localizer. Zie Lokalisatiekenmerken en opmerkingen.
wijzigbaarheid. Of de waarde kan worden gewijzigd door een localizer. Zie Lokalisatiekenmerken en opmerkingen.
Opmerkingen. Aanvullende beschrijving van de waarde om te bepalen hoe een waarde wordt gelokaliseerd. Zie Lokalisatiekenmerken en opmerkingen.
Waarde. De tekstwaarde die moet worden vertaald naar de gewenste cultuur.
In de volgende tabel ziet u hoe deze velden worden gekoppeld aan de afgebakende waarden van het .csv-bestand.
BAML-naam Resourcesleutel Categorie Leesbaarheid Wijzigbaarheid Opmerkingen Waarde HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Negeren ONWAAR ONWAAR #Text1;#Text2 HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Geen WAAR WAAR Hallo mensen HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Geen WAAR WAAR Vaarwel Wereld U ziet dat alle waarden voor het veld Opmerkingen geen waarden bevatten; als een veld geen waarde heeft, is het leeg. U ziet ook dat het item in de eerste rij niet leesbaar of wijzigbaar is en 'Negeren' heeft als categoriewaarde , die allemaal aangeeft dat de waarde niet kan worden gelokaliseerd.
Om de detectie van lokaliseerbare items in geparseerde bestanden mogelijk te maken, met name in grote bestanden, kunt u de items sorteren of filteren op categorie, leesbaarheid en wijzigbaarheid. U kunt bijvoorbeeld onleesbare en niet-aanpasbare waarden filteren.
De lokaliseerbare inhoud vertalen
Gebruik elk hulpprogramma dat u beschikbaar hebt om de geëxtraheerde inhoud te vertalen. Een goede manier om dit te doen, is door de resources naar een .csv bestand te schrijven en deze weer te geven in Microsoft Excel, waardoor vertaalwijzigingen worden aangebracht in de laatste kolom (waarde).
LocBaml gebruiken om een nieuw .resources.dll-bestand te genereren
De inhoud die is geïdentificeerd door het parseren van HelloApp.resources.dll met LocBaml is vertaald en moet weer worden samengevoegd in de oorspronkelijke toepassing. Gebruik de generate of -g optie om een nieuw .resources.dll-bestand te genereren.
Gebruik de volgende syntaxis om een nieuw HelloApp.resources.dll-bestand te genereren. Markeer de cultuur als en-US (/cul:en-US).
LocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-USOpmerking
Als het invoerbestand, Hello.csv, zich niet in dezelfde map bevindt als het uitvoerbare bestand, LocBaml.exe, verplaatst u een van de bestanden zodat beide bestanden zich in dezelfde map bevinden.
Vervang het oude HelloApp.resources.dll-bestand in de C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll map door het zojuist gemaakte HelloApp.resources.dll-bestand .
'Hallo wereld' en 'Vaarwel wereld' dienen nu te worden vertaald in uw toepassing.
Als u wilt vertalen naar een andere cultuur, gebruikt u de cultuur van de taal waarnaar u vertaalt. In het volgende voorbeeld ziet u hoe u vertaalt naar Frans-Canadees:
LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CAMaak binnen dezelfde assembly als de hoofdtoepassingsassembly een nieuwe cultuurspecifieke map om de nieuwe satellietassembly in te plaatsen. Voor Frans-Canadees zou de map fr-CAzijn.
Kopieer de gegenereerde satellietassemblage naar de nieuwe map.
Als u de nieuwe satellietassembly wilt testen, moet u de cultuur wijzigen waaronder uw toepassing wordt uitgevoerd. U kunt dit op twee manieren doen:
Wijzig de landinstellingen van uw besturingssysteem.
Voeg in uw toepassing de volgende code toe aan App.xaml.cs:
<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 voor het gebruik van LocBaml
Alle afhankelijke assembly's die aangepaste besturingselementen definiëren, moeten worden gekopieerd naar de lokale map van LocBaml of geïnstalleerd in de GAC. Dit is nodig omdat de lokalisatie-API toegang moet hebben tot de afhankelijke assembly's wanneer deze de binaire XAML (BAML) leest.
Als de hoofdassembly is ondertekend, moet ook de gegenereerde bron-DLL worden ondertekend om te kunnen worden geladen.
De versie van het gelokaliseerde bron-DLL-bestand moet worden gesynchroniseerd met de hoofdassembly.
Zie ook
.NET Desktop feedback