Delen via


Overzicht van WPF Globalization and Localization

Wanneer u de beschikbaarheid van uw product beperkt tot slechts één taal, beperkt u uw potentiële klantenbestand tot een fractie van de 7,5 miljard inwoners van onze wereld. Als u wilt dat uw toepassingen een wereldwijd publiek bereiken, is kosteneffectieve lokalisatie van uw product een van de beste en meest voordelige manieren om meer klanten te bereiken.

Dit overzicht introduceert globalisatie en lokalisatie in Windows Presentation Foundation (WPF). Globalisatie is het ontwerp en de ontwikkeling van toepassingen die op meerdere locaties worden uitgevoerd. Globalisatie ondersteunt bijvoorbeeld gelokaliseerde gebruikersinterfaces en regionale gegevens voor gebruikers in verschillende culturen. WPF biedt geglobaliseerde ontwerpfuncties, waaronder automatische lay-out, satellietassembly's en gelokaliseerde kenmerken en opmerkingen.

Lokalisatie is de vertaling van toepassingsbronnen in gelokaliseerde versies voor de specifieke culturen die de toepassing ondersteunt. Wanneer u in WPF lokaliseer, gebruikt u de API's in de System.Windows.Markup.Localizer naamruimte. Deze API's vormen de aandrijving voor het opdrachtregelprogramma LocBaml Tool Sample. Zie Localize an Applicationvoor meer informatie over het bouwen en gebruiken van LocBaml.

Waarschuwing

Het LocBaml-hulpprogramma werkt alleen met WPF voor .NET Framework-projecten. Het werkt niet met WPF voor .NET.

Aanbevolen procedures voor globalisatie en lokalisatie in WPF

U kunt optimaal gebruikmaken van de globaliserings- en lokalisatiefunctionaliteit die is ingebouwd in WPF door de tips voor het ontwerpen en lokaliseren van de gebruikersinterface te volgen die in deze sectie worden geboden.

Aanbevolen procedures voor WPF UI-ontwerp

Wanneer u een gebruikersinterface op basis van WPF ontwerpt, kunt u overwegen deze aanbevolen procedures te implementeren:

  • Schrijf uw gebruikersinterface in XAML; vermijd het maken van een gebruikersinterface in code. Wanneer u uw gebruikersinterface maakt met behulp van XAML, maakt u deze beschikbaar via ingebouwde lokalisatie-API's.

  • Vermijd het gebruik van absolute posities en vaste grootten om inhoud in te delen; Gebruik in plaats daarvan relatieve of automatische grootte.

    • Gebruik SizeToContent en houd breedten en hoogten ingesteld op Auto.

    • Vermijd het gebruik van Canvas om UIs in te stellen.

    • Gebruik Grid en de functie voor het delen van grootten.

  • Extra ruimte in marges bieden, omdat gelokaliseerde tekst vaak meer ruimte nodig heeft. Extra ruimte biedt de mogelijkheid voor overhangende tekens.

  • Schakel TextWrapping in op TextBlock om knipsels te voorkomen.

  • Stel het kenmerk xml:lang in. Dit kenmerk beschrijft de cultuur van een specifiek element en zijn subelementen. De waarde van deze eigenschap wijzigt het gedrag van verschillende functies in WPF. Het wijzigt bijvoorbeeld het gedrag van woordafbreking, spellingcontrole, nummervervanging, complexe scriptvormgeving en lettertype-terugvalmechanisme. Zie Globalization for WPF voor meer informatie over het instellen van de xml:lang Handling in XAML.

  • Maak een aangepast samengesteld lettertype om betere controle te krijgen over lettertypen die worden gebruikt voor verschillende talen. WPF maakt standaard gebruik van het lettertype GlobalUserInterface.composite in de map Windows\Fonts.

  • Wanneer u navigatietoepassingen maakt die kunnen worden gelokaliseerd in een cultuur waarin tekst in een indeling van rechts naar links wordt weergegeven, stelt u expliciet de FlowDirection van elke pagina in om ervoor te zorgen dat de pagina geen FlowDirection over neemt van het NavigationWindow.

  • Wanneer u zelfstandige navigatietoepassingen maakt die buiten een browser worden gehost, stelt u de StartupUri voor uw eerste toepassing in op een NavigationWindow in plaats van op een pagina (bijvoorbeeld <Application StartupUri="NavigationWindow.xaml">). Met dit ontwerp kunt u de FlowDirection van het venster en de navigatiebalk wijzigen. Zie voor meer informatie en een voorbeeld Globalization Homepage Sample.

Aanbevolen procedures voor WPF-lokalisatie

Wanneer u WPF-toepassingen lokaliseer, kunt u overwegen deze aanbevolen procedures te implementeren:

  • Gebruik lokalisatieopmerkingen om extra context te bieden voor localizers.

  • Lokalisatiekenmerken gebruiken om lokalisatie te beheren in plaats van selectief Uid eigenschappen op elementen weg te laten. Zie lokalisatiekenmerken en opmerkingen voor meer informatie.

  • Gebruik msbuild -t:updateuid en -t:checkuid om Uid eigenschappen toe te voegen en te controleren in uw XAML. Gebruik Uid eigenschappen om wijzigingen tussen ontwikkeling en lokalisatie bij te houden. Uid eigenschappen helpen u bij het lokaliseren van nieuwe ontwikkelingswijzigingen. Als u handmatig Uid eigenschappen aan een gebruikersinterface toevoegt, is de taak doorgaans tijdrovend en minder nauwkeurig.

    • Bewerk of wijzig Uid eigenschappen niet nadat u de lokalisatie hebt gestart.

    • Gebruik geen dubbele Uid eigenschappen (onthoud deze tip wanneer u de opdracht kopiëren en plakken gebruikt).

    • Stel de UltimateResourceFallback locatie in AssemblyInfo.* in om de juiste taal op te geven voor terugval (bijvoorbeeld [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]).

      Als u besluit de brontaal op te nemen in de hoofdassembly door de <UICulture> tag in het projectbestand weg te laten, stelt u de UltimateResourceFallback locatie in als de hoofdassembly in plaats van de satelliet (bijvoorbeeld [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]).

Een WPF-toepassing lokaliseren

Wanneer u een WPF-toepassing lokaliseer, hebt u verschillende opties. U kunt bijvoorbeeld de lokaliseerbare resources in uw toepassing binden aan een XML-bestand, lokaliseerbare tekst opslaan in resx-tabellen of uw localizer XAML-bestanden laten gebruiken. In deze sectie wordt een lokalisatiewerkstroom beschreven die gebruikmaakt van de BAML-vorm van XAML, die verschillende voordelen biedt:

  • U kunt lokaliseren nadat u de build hebt uitgevoerd.

  • U kunt bijwerken naar een nieuwere versie van de BAML-vorm van XAML met lokalisaties uit een oudere versie van de BAML-vorm van XAML, zodat u op hetzelfde moment dat u ontwikkelt, kunt lokaliseren.

  • U kunt de oorspronkelijke bronelementen en semantiek tijdens het compileren valideren omdat de BAML-vorm van XAML de gecompileerde vorm van XAML is.

Buildproces voor localisatie

Wanneer u een WPF-toepassing ontwikkelt, is het buildproces voor lokalisatie als volgt:

  • De ontwikkelaar maakt en globaliseert de WPF-toepassing. In het projectbestand stelt de ontwikkelaar <UICulture>en-US</UICulture> in, zodat wanneer de toepassing wordt gecompileerd, een taalneutrale hoofdassembly wordt gegenereerd. Deze assembly heeft een satellietbestand .resources.dll dat alle lokaliseerbare resources bevat. Desgewenst kunt u de brontaal in de hoofdassembly behouden, omdat onze lokalisatie-API's extractie van de hoofdassembly ondersteunen.

  • Wanneer het bestand wordt gecompileerd in de build, wordt de XAML geconverteerd naar de BAML-vorm van XAML. De cultureel neutrale MyDialog.exe en de cultureel afhankelijke (Engelse) MyDialog.resources.dll bestanden worden vrijgegeven aan de Engelssprekende klant.

Lokalisatiewerkstroom

Het lokalisatieproces begint nadat het niet-gelokaliseerde MyDialog.resources.dll-bestand is gemaakt. De UI-elementen en -eigenschappen in uw oorspronkelijke XAML worden geëxtraheerd uit de BAML-vorm van XAML in sleutel-waardeparen met behulp van de API's onder System.Windows.Markup.Localizer. Localizers gebruiken de sleutel-waardeparen om de toepassing te lokaliseren. U kunt een nieuwe .resource.dll genereren op basis van de nieuwe waarden nadat de lokalisatie is voltooid.

De sleutels van de key-value-paren bestaan uit x:Uid-waarden die door de ontwikkelaar in de oorspronkelijke XAML worden geplaatst. Met deze x:Uid waarden kan de API wijzigingen bijhouden en samenvoegen die plaatsvinden tussen de ontwikkelaar en de lokalisatie tijdens de lokalisatie. Als de ontwikkelaar bijvoorbeeld de gebruikersinterface wijzigt nadat de lokalisatie is gestart, kunt u de ontwikkelingswijziging samenvoegen met het reeds voltooide lokalisatiewerk, zodat minimale vertaalwerkzaamheden verloren gaan.

In de volgende afbeelding ziet u een typische lokalisatiewerkstroom die is gebaseerd op de BAML-vorm van XAML. In dit diagram wordt ervan uitgegaan dat de ontwikkelaar de toepassing in het Engels schrijft. De ontwikkelaar maakt en globaliseert de WPF-toepassing. In het projectbestand stelt de ontwikkelaar <UICulture>en-US</UICulture> zo in dat bij het bouwen een taalneutrale hoofdassembly wordt gegenereerd met een satelliet-.resources.dll met alle lokaliseerbare resources. U kunt ook de brontaal in de hoofdassembly behouden, omdat WPF-lokalisatie-API's extractie van de hoofdassembly ondersteunen. Na het buildproces wordt de XAML gecompileerd in BAML. De cultureel neutrale MyDialog.exe.resources.dll worden verzonden naar de Engels sprekende klant.

Diagram met de lokalisatieworkflow.

diagram met de niet-gelokaliseerde werkstroom.

Voorbeelden van WPF-lokalisatie

Deze sectie bevat voorbeelden van gelokaliseerde toepassingen om u te helpen begrijpen hoe u WPF-toepassingen kunt bouwen en lokaliseren.

Voorbeeld van dialoogvenster Uitvoeren

De volgende grafieken tonen de uitvoer van het dialoogvenstervoorbeeld Uitvoeren.

Engels:

Schermopname met het dialoogvenster Engels uitvoeren.

Duits:

Schermopname van een Uitvoeren-dialoogvenster in het Duits.

Globaal uitvoeren-dialoogvenster ontwerpen

In dit voorbeeld wordt een dialoogvenster Run gegenereerd met behulp van WPF en XAML. Dit dialoogvenster is gelijk aan het dialoogvenster Uitvoeren dat beschikbaar is in het menu Start van Microsoft Windows.

Enkele belangrijke punten voor het maken van algemene dialoogvensters zijn:

Automatische indeling

In Window1.xaml:

<Window SizeToContent="WidthAndHeight">

De vorige venstereigenschap wijzigt automatisch de grootte van het venster op basis van de grootte van de inhoud. Met deze eigenschap voorkomt u dat het venster inhoud afkapt die na lokalisatie groter wordt; het verwijdert ook overbodige ruimte wanneer de inhoud na lokalisatie kleiner wordt.

<Grid x:Uid="Grid_1">

Uid eigenschappen zijn nodig om WPF-lokalisatie-API's correct te laten werken.

Ze worden gebruikt door WPF-lokalisatie-API's om wijzigingen bij te houden tussen de ontwikkeling en lokalisatie van de gebruikersinterface (UI). Met de Uid-eigenschappen kunt u een nieuwere versie van de gebruikersinterface samenvoegen met een oudere localisatie van de gebruikersinterface. U voegt een eigenschap Uid toe door msbuild -t:updateuid RunDialog.csproj uit te voeren in een opdrachtshell. Dit is de aanbevolen methode voor het toevoegen van Uid eigenschappen, omdat het handmatig toevoegen ervan doorgaans tijdrovend en minder nauwkeurig is. U kunt controleren of Uid eigenschappen correct zijn ingesteld door msbuild -t:checkuid RunDialog.csprojuit te voeren.

De gebruikersinterface is gestructureerd met behulp van het Grid-besturingselement. Dit is een handig besturingselement voor het gebruik van de automatische indeling in WPF. Houd er rekening mee dat het dialoogvenster is gesplitst in drie rijen en vijf kolommen. Niet een van de rij- en kolomdefinities heeft een vaste grootte; Daarom kunnen de UI-elementen die in elke cel zijn geplaatst, zich aanpassen aan toenamen en afnamen in grootte tijdens lokalisatie.

<Grid.ColumnDefinitions>
  <ColumnDefinition x:Uid="ColumnDefinition_1" />
  <ColumnDefinition x:Uid="ColumnDefinition_2" />

De eerste twee kolommen waarin het Open-label en ComboBox staan, gebruiken 10 procent van de totale breedte van de gebruikersinterface.

  <ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>

Houd er rekening mee dat in het voorbeeld de functie voor gedeelde grootte van Gridwordt gebruikt. De laatste drie kolommen profiteren hiervan door zichzelf in dezelfde SharedSizeGroupte plaatsen. Zoals u zou verwachten van de naam van de eigenschap, kunnen de kolommen hierdoor dezelfde grootte delen. Dus wanneer de 'Bladeren...' wordt gelokaliseerd in de langere tekenreeks "Durchsuchen...", worden alle knoppen breder in plaats van een kleine "OK" knop en een onevenredig grote "Durchsuchen..." knop.

xml:lang-

xml:lang="en-US"

Let op de xml:lang Handling in XAML geplaatst in het hoofdelement van de gebruikersinterface. Deze eigenschap beschrijft de cultuur van een bepaald element en de elementen die daarvan afgeleid zijn. Deze waarde wordt gebruikt door verschillende functies in WPF en moet op de juiste wijze worden gewijzigd tijdens lokalisatie. Deze waarde verandert welke taalwoordenlijst wordt gebruikt om woorden af te breken met streepjes en voor spellingcontrole. Het is ook van invloed op de weergave van cijfers en hoe het lettertype terugvalsysteem selecteert welk lettertype moet worden gebruikt. Ten slotte is de eigenschap van invloed op de manier waarop getallen worden weergegeven en de manier waarop teksten in complexe scripts worden vormgegeven. De standaardwaarde is 'en-US'.

Een satelliet-resource-assemblage bouwen

In .csproj:

Bewerk het .csproj bestand en voeg de volgende tag toe aan een onvoorwaardelijke <PropertyGroup>:

<UICulture>en-US</UICulture>

Let op de toevoeging van een UICulture waarde. Wanneer dit is ingesteld op een geldige CultureInfo waarde zoals en-US, genereert het bouwen van het project een satellietassembly met alle lokaliseerbare resources erin.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

De RunIcon.JPG hoeft niet te worden gelokaliseerd omdat het voor alle culturen hetzelfde moet lijken. Localizable is ingesteld op false zodat deze in de taalneutrale hoofdassemblage blijft in plaats van de satellietassemblage. De standaardwaarde van alle niet-compileerbare resources is Localizable op true.

Dialoogvenster Uitvoeren Lokaliseren

parseren

Na het bouwen van de toepassing is de eerste stap bij het lokaliseren ervan het parseren van de lokaliseerbare resources uit de satellietassembly. Voor de doeleinden van dit onderwerp gebruikt u het voorbeeldhulpprogramma LocBaml dat u kunt vinden op LocBaml Tool Sample. LocBaml is alleen een voorbeeldhulpprogramma dat is bedoeld om u te helpen aan de slag te gaan met het bouwen van een lokalisatieprogramma dat in uw lokalisatieproces past. Voer met behulp van LocBaml het volgende uit om te parseren: LocBaml /parse RunDialog.resources.dll /out: om een "RunDialog.resources.dll.CSV"-bestand te genereren.

Waarschuwing

Het LocBaml-hulpprogramma werkt alleen met WPF voor .NET Framework-projecten. Het werkt niet met WPF voor .NET.

Lokaliseren

Gebruik uw favoriete CSV-editor die Unicode ondersteunt om dit bestand te bewerken. Filter alle vermeldingen met een lokalisatiecategorie 'Geen' eruit. U zou de volgende vermeldingen moeten zien:

Resourcesleutel Lokalisatiecategorie Waarde
Button_1:System.Windows.Controls.Button.$Content Knop OK
Button_2:System.Windows.Controls.Button.$Content Knop Annuleren
Button_3:System.Windows.Controls.Button.$Content Knop Bladeren...
ComboBox_1:System.Windows.Controls.ComboBox.$Content Combobox
TextBlock_1:System.Windows.Controls.TextBlock.$Inhoud Tekst Typ de naam van een programma, map, document of internetbron en Windows opent deze voor u.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Tekst Openen:
Window_1:System.Windows.Window.Title Titel Rennen

Voor het lokaliseren van de toepassing in het Duits zijn de volgende vertalingen vereist:

Resourcesleutel Lokalisatiecategorie Waarde
Button_1:System.Windows.Controls.Button.$Content Knop OK
Button_2:System.Windows.Controls.Button.$Content Knop Annuleren
Button_3:System.Windows.Controls.Button.$Content Knop Durchsuchen...
ComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$Content Tekst Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Tekst Openen
Window_1:System.Windows.Window.Title Titel Rennen

genereren

De laatste stap van lokalisatie omvat het maken van de nieuw gelokaliseerde satelliet-assemblage. Dit kan worden bereikt met de volgende LocBaml-opdracht:

LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll. CSV/out: . /cul:de-DE

Op Duitse Windows-systemen, als deze resources.dll in een de-DE-map naast de hoofdassembly wordt geplaatst, zal deze resource automatisch laden in plaats van die in de map en-US. Als u geen Duitse versie van Windows hebt om dit te testen, stelt u de cultuur in op elke cultuur van Windows die u gebruikt (bijvoorbeeld en-US) en vervangt u de oorspronkelijke resources DLL.

Laden van satellietresources

MyDialog.exe en-US\MyDialog.resources.dll de-DE\MyDialog.resources.dll
Code Originele Engelse BAML Gelokaliseerde BAML
Cultureel neutrale bronnen Andere informatiebronnen in het Engels Andere resources die zijn gelokaliseerd in het Duits

.NET kiest automatisch welke satellietbron-assembly moet worden geladen op basis van de Thread.CurrentUICulturevan de toepassing. Dit is standaard ingesteld op de cultuur van uw Windows-besturingssysteem. Als u Duitse Windows gebruikt, wordt het de-DE\MyDialog.resources.dll bestand geladen. Als u Engels Windows gebruikt, wordt het en-US\MyDialog.resources.dll-bestand geladen. U kunt de ultieme terugvalresource voor uw toepassing instellen door het kenmerk NeutralResourcesLanguage in het AssemblyInfo-bestand van uw project op te geven. Als u bijvoorbeeld het volgende opgeeft:

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

dan wordt het bestand en-US\MyDialog.resources.dll gebruikt met Duitse Windows als geen van de volgende bestanden beschikbaar zijn: de-DE\MyDialog.resources.dll of de\MyDialog.resources.dll.

Startpagina van Microsoft Saoedi-Arabië

In de volgende afbeeldingen ziet u een Engelse en Arabische startpagina. Voor het volledige voorbeeld dat deze afbeeldingen produceert, raadpleegt u Globalization Homepage Sample.

Engels:

Schermopname met een Engelse startpagina.

Arabisch:

Schermopname van een Arabische startpagina.

Een algemene startpagina van Microsoft ontwerpen

Deze mock-up van de website van Microsoft Saoedi-Arabië illustreert de globaliseringsfuncties voor RightToLeft-talen. Talen zoals Hebreeuws en Arabisch hebben een leesrichting van rechts naar links, zodat de indeling van de gebruikersinterface vaak heel anders moet worden ingedeeld dan in van links naar rechts geschreven talen zoals Engels. Lokaliseren van een van links naar rechts taal naar een van rechts naar links taal of omgekeerd kan behoorlijk lastig zijn. WPF is ontworpen om dergelijke lokalisaties veel eenvoudiger te maken.

FlowDirection-

Homepage.xaml:

<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    FlowDirection="LeftToRight" 
    Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
    xml:lang="en-US">

Let op de eigenschap FlowDirection op Page. Door deze eigenschap te wijzigen naar RightToLeft, verandert u de FlowDirection van Page en diens onderliggende elementen, waardoor de indeling van deze gebruikersinterface van rechts naar links wordt omgekeerd, zoals een Arabische gebruiker verwacht. U kunt het overnamegedrag overschrijven door een expliciete FlowDirection op elk element op te geven. De eigenschap FlowDirection is beschikbaar op elk FrameworkElement of documentgerelateerd element en heeft een impliciete waarde van LeftToRight.

U ziet dat zelfs de achtergrondovergangsborstels correct worden gespiegeld wanneer de wortel FlowDirection wordt gewijzigd:

Stroomrichting="LinksNaarRechts"

Schermopname van de kleurovergang van links naar rechts.

Stroomrichting="RechtsNaarLinks"

Schermopname van de kleurovergang van rechts naar links.

Vermijd het gebruik van vaste afmetingen voor panelen en besturingselementen

Bekijk Homepage.xaml, let op: naast de vaste breedte en hoogte die is opgegeven voor de gehele gebruikersinterface bovenaan DockPanel, zijn er geen andere vaste afmetingen. Vermijd het gebruik van vaste afmetingen om te voorkomen dat gelokaliseerde tekst, die langer kan zijn dan de brontekst, wordt afgebroken. WPF-panelen en -besturingselementen worden automatisch aangepast op basis van de inhoud die ze bevatten. De meeste besturingselementen hebben ook minimale en maximale afmetingen die u kunt instellen voor meer controle (bijvoorbeeld MinWidth="20"). Met Gridkunt u ook relatieve breedte en hoogte instellen met behulp van '*' (bijvoorbeeld Width="0.25*") of de functie voor het delen van celgrootten gebruiken.

Lokalisatieopmerkingen

Er zijn veel gevallen waarin inhoud dubbelzinnig en moeilijk te vertalen kan zijn. De ontwikkelaar of ontwerper heeft de mogelijkheid om extra context en opmerkingen te bieden aan localizers via lokalisatieopmerkingen. De onderstaande localization.Comments verduidelijkt bijvoorbeeld het gebruik van het teken |.

<TextBlock 
  x:Uid="TextBlock_2" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This character is used as a decorative rule.)">
  |
</TextBlock>

Deze opmerking wordt gekoppeld aan de inhoud van TextBlock_1 en in het geval van het LocBaml-hulpprogramma (zie Een toepassinglokaliseren), kan deze worden weergegeven in de 6e kolom van de rij TextBlock_1 in het uitvoerbestand .csv:

Resource-sleutel Categorie Leesbaar Wijzigbaar Commentaar Waarde
TextBlock_1:System.Windows.Controls.TextBlock.$Content Tekst WAAR WAAR Dit teken wordt gebruikt als decoratieve regel. |

Opmerkingen kunnen worden geplaatst op de inhoud of eigenschap van een element met behulp van de volgende syntaxis:

<TextBlock 
  x:Uid="TextBlock_1" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This is a comment on the TextBlock's content.)
     Margin(This is a comment on the TextBlock's Margin property.)">
  |
 </TextBlock>

lokalisatiekenmerken

Vaak heeft de ontwikkelaar of lokalisatiebeheerder controle nodig over welke lokalisaties kunnen worden gelezen en gewijzigd. U wilt bijvoorbeeld niet dat de localizer de naam van uw bedrijf of juridische formulering vertaalt. WPF biedt kenmerken waarmee u de leesbaarheid, wijziging en categorie van de inhoud of eigenschap van een element kunt instellen die door uw lokalisatieprogramma kan worden gebruikt om elementen te vergrendelen, te verbergen of te sorteren. Zie Attributesvoor meer informatie. Voor dit voorbeeld voert het LocBaml-hulpprogramma alleen de waarden van deze kenmerken uit. WPF-besturingselementen hebben allemaal standaardwaarden voor deze kenmerken, maar u kunt ze overschrijven. In het volgende voorbeeld worden bijvoorbeeld de standaardlokalisatiekenmerken voor TextBlock_1 overschreven en wordt ingesteld dat de inhoud leesbaar is, maar niet kan worden gewijzigd voor lokalisaties.

<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
  Microsoft Corporation
</TextBlock>

Naast de leesbaarheid en aanpassingskenmerken biedt WPF een opsomming van algemene UI-categorieën (LocalizationCategory) die kunnen worden gebruikt om localizers meer context te geven. De WPF-standaardcategorieën voor platformbesturingselementen kunnen ook worden overschreven in XAML:

<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>

De standaardlokalisatiekenmerken die WPF biedt, kunnen ook worden overschreven via code, zodat u de juiste standaardwaarden voor aangepaste besturingselementen correct kunt instellen. Bijvoorbeeld:

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
    // ...
}

De kenmerken per instantie die in XAML zijn ingesteld, hebben voorrang op de waarden die zijn ingesteld in code voor aangepaste besturingselementen. Zie lokalisatiekenmerken en opmerkingenvoor meer informatie over kenmerken en opmerkingen.

lettertype terugval- en samengestelde lettertypen

Als u een lettertype opgeeft dat geen ondersteuning biedt voor een bepaald codepuntbereik, valt WPF automatisch terug naar een lettertype dat dit wel ondersteunt, met behulp van de Global User Interface.compositefont die zich in uw Windows\Fonts-map bevindt. Samengestelde lettertypen werken net als elk ander lettertype en kunnen expliciet worden gebruikt door de FontFamily van een element in te stellen (bijvoorbeeld FontFamily="Global User Interface"). U kunt uw eigen voorkeur voor lettertypeterugval opgeven door uw eigen samengestelde lettertype te maken en op te geven welk lettertype moet worden gebruikt voor specifieke codepointbereiken en -talen.

Zie FontFamilyvoor meer informatie over samengestelde lettertypen.

De startpagina van Microsoft lokaliseren

U kunt dezelfde stappen volgen als in het voorbeeld van het dialoogvenster Uitvoeren om deze toepassing te lokaliseren. Het gelokaliseerde .csv bestand voor Arabisch is beschikbaar in de Globalization Homepage Sample.