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 dit onderwerp worden problemen geïntroduceerd waarmee u rekening moet houden bij het schrijven van WPF-toepassingen (Windows Presentation Foundation) voor de wereldwijde markt. De globalisatieprogrammeerelementen worden gedefinieerd in .NET in de System.Globalization naamruimte.
XAML-globalisering
Extensible Application Markup Language (XAML) is gebaseerd op XML en profiteert van de globalisatieondersteuning die is gedefinieerd in de XML-specificatie. In de volgende secties worden enkele XAML-functies beschreven waarvan u rekening moet houden.
Karakterreferenties
Een tekenreferentie geeft de UTF16-code-eenheid van het specifieke Unicode-teken dat het vertegenwoordigt, in decimaal of hexadecimaal. In het volgende voorbeeld ziet u een decimale tekenverwijzing voor de KOPTISCHE HOOFDLETTER HORI of 'Ϩ':
Ϩ
In het volgende voorbeeld ziet u een hexadecimale tekenreferentie. U ziet dat het een x voor het hexadecimale getal heeft.
Ϩ
Codering
De codering die wordt ondersteund door XAML zijn ASCII, Unicode UTF-16 en UTF-8. De coderingsinstructie bevindt zich aan het begin van het XAML-document. Als er geen coderingskenmerk bestaat en er geen bytevolgorde is, wordt de parser standaard ingesteld op UTF-8. UTF-8 en UTF-16 zijn de voorkeurscoderingen. UTF-7 wordt niet ondersteund. In het volgende voorbeeld ziet u hoe u een UTF-8-codering opgeeft in een XAML-bestand.
?xml encoding="UTF-8"?
Taalkenmerk
XAML gebruikt xml:lang om het taalkenmerk van een element weer te geven. Als u wilt profiteren van de CultureInfo klasse, moet de waarde van het taalkenmerk een van de cultuurnamen zijn die vooraf zijn gedefinieerd door CultureInfo. xml:lang kan worden overgenomen in de elementstructuur (door XML-regels, niet noodzakelijkerwijs vanwege overname van afhankelijkheden) en de standaardwaarde is een lege tekenreeks als deze niet expliciet wordt toegewezen.
Het taalkenmerk is erg handig voor het opgeven van regionale talen. Frans heeft bijvoorbeeld verschillende spelling, woordenlijst en uitspraak in Frankrijk, Quebec, België en Zwitserland. Ook Chinese, Japanse en Koreaanse talen delen codepunten in Unicode, maar de ideografische vormen verschillen en ze gebruiken totaal verschillende lettertypen.
In het volgende voorbeeld van Extensible Application Markup Language (XAML) wordt het fr-CA taalkenmerk gebruikt om Canadees Frans op te geven.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
XAML ondersteunt alle Unicode-functies, waaronder surrogaten. Zolang de tekenset kan worden toegewezen aan Unicode, wordt deze ondersteund. GB18030 introduceert bijvoorbeeld enkele tekens die zijn toegewezen aan de Chinese, Japanse en Koreaanse extensies A en B en surrogaatparen, en daarom wordt dit volledig ondersteund. Een WPF-toepassing kan tekenreeksen StringInfo bewerken zonder te begrijpen of ze surrogaatparen hebben of tekens combineren.
Een internationale gebruikersinterface ontwerpen met XAML
In deze sectie worden de gebruikersinterfacefuncties beschreven die u moet overwegen bij het schrijven van een toepassing.
Internationale tekst
WPF bevat ingebouwde verwerking voor alle door Microsoft .NET Framework ondersteunde schrijfsystemen.
De volgende scripts worden momenteel ondersteund:
Arabisch
Bengaals
Devanagari
Cyrillisch
Grieks
Gujarati
Gurmukhi
Hebreeuws
Ideografische schriften
Kannada
Laotiaans
Latijn
Malajalam
Mongools
Odia
Syrisch-Aramees
Tamil
Telugu
Thaana
Thais*
Tibetaans
*In deze release wordt het weergeven en bewerken van Thaise tekst ondersteund; woordbreking is niet.
De volgende scripts worden momenteel niet ondersteund:
Khmer
Koreaanse oude hangul-schrift
Myanmar
Sinhala
Alle schrijfsysteemen ondersteunen OpenType-lettertypen. OpenType-lettertypen kunnen de OpenType-indelingstabellen bevatten waarmee makers van lettertypen betere internationale en hoogwaardige typografische lettertypen kunnen ontwerpen. De OpenType-tekenindelingstabellen bevatten informatie over vervangingen van glyph, plaatsing van glyph, rechtvaardiging en plaatsing van basislijnen, waardoor tekstverwerkingstoepassingen de tekstindeling kunnen verbeteren.
Met OpenType-lettertypen kunnen grote glyph-sets worden verwerkt met Unicode-codering. Dergelijke codering maakt brede internationale ondersteuning en typografische glyph-varianten mogelijk.
WPF-tekstweergave wordt mogelijk gemaakt door microsoft ClearType-sub pixeltechnologie die ondersteuning biedt voor onafhankelijkheid van resolutie. Dit verbetert de leesbaarheid aanzienlijk en biedt de mogelijkheid om documenten in magazinestijl van hoge kwaliteit te ondersteunen voor alle scripts.
Internationale indeling
WPF biedt een zeer handige manier om horizontale, bidirectionele en verticale indelingen te ondersteunen. In het presentatieframework kan de FlowDirection eigenschap worden gebruikt om de indeling te definiëren. De stroomrichtingspatronen zijn:
LeftToRight - horizontale indeling voor Latijns, Oost-Aziatisch, enzovoort.
RightToLeft - bidirectioneel voor Arabisch, Hebreeuws, enzovoort.
Lokaliseerbare toepassingen ontwikkelen
Wanneer u een toepassing schrijft voor globaal verbruik, moet u er rekening mee houden dat de toepassing kan worden gelokaliseerd. In de volgende onderwerpen worden de aandachtspunten besproken.
Meertalige gebruikersinterface
Meertalige gebruikersinterfaces (MUI) is een Microsoft-ondersteuning voor het overschakelen van UIs van de ene taal naar de andere. Een WPF-toepassing maakt gebruik van het assemblymodel ter ondersteuning van MUI. Eén toepassing bevat taalneutrale assembly's en taalafhankelijke satellietresource-assembly's. Het toegangspunt is een beheerd .EXE in de hoofdassembly. WPF-resourcelaadprogramma maakt gebruik van de resourcemanager van het Framework om het opzoeken van resources en het terugvallen hierop te ondersteunen. Satellietassemblies in meerdere talen werken met dezelfde hoofdassemblage. De resource-assemblage die wordt geladen, is afhankelijk van het CurrentUICulture van de huidige thread.
Lokaliseerbare gebruikersinterface
WPF-toepassingen gebruiken XAML om hun gebruikersinterface te definiëren. Met XAML kunnen ontwikkelaars een hiërarchie van objecten opgeven met een set eigenschappen en logica. Het primaire gebruik van XAML is het ontwikkelen van WPF-toepassingen, maar kan worden gebruikt om een hiërarchie op te geven van eventuele CLR-objecten (Common Language Runtime). De meeste ontwikkelaars gebruiken XAML om de gebruikersinterface van hun toepassing op te geven en een programmeertaal zoals C# te gebruiken om te reageren op gebruikersinteractie.
Vanuit een resourcepunt is een gebruikersinterface een resource-element en moet de uiteindelijke distributie-indeling daarom worden gelokaliseerd om internationale talen te ondersteunen. Omdat XAML geen gebeurtenissen kan afhandelen, bevatten veel XAML-toepassingen codeblokken om dit te doen. Zie XAML in WPFvoor meer informatie. Code wordt verwijderd en gecompileerd in verschillende binaire bestanden wanneer een XAML-bestand wordt getokeniseerd in de BAML-vorm van XAML. De BAML-vorm van XAML-bestanden, afbeeldingen en andere typen beheerde resourceobjecten worden ingesloten in de assembly van satellietresources, die in andere talen kunnen worden gelokaliseerd, of in de hoofdassembly wanneer lokalisatie niet noodzakelijk is.
Opmerking
WPF-toepassingen ondersteunen alle FrameworkCLR-resources, waaronder tekenreekstabellen, afbeeldingen enzovoort.
Lokaliseerbare toepassingen bouwen
Lokalisatie betekent dat u een gebruikersinterface aanpast aan verschillende culturen. Om een WPF-toepassing te lokaliseren, moeten ontwikkelaars alle lokaliseerbare resources in een resourceassembly bouwen. De resourceassembly is gelokaliseerd in verschillende talen en de code-behind gebruikt resourcebeheer-API om te laden. Een van de bestanden die vereist zijn voor een WPF-toepassing is een projectbestand (.proj). Alle resources die u in uw toepassing gebruikt, moeten worden opgenomen in het projectbestand. In het volgende voorbeeld van een .csproj-bestand ziet u hoe u dit doet.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Als u een resource in uw toepassing wilt gebruiken, maakt u een ResourceManager instantie en laadt u de resource die u wilt gebruiken. In het volgende voorbeeld ziet u hoe u dit doet.
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
ClickOnce gebruiken met gelokaliseerde toepassingen
ClickOnce is een nieuwe Windows Forms-implementatietechnologie die wordt geleverd met Visual Studio 2005. Hiermee kunt u toepassingen installeren en upgraden van webtoepassingen. Wanneer een toepassing die is geïmplementeerd met ClickOnce is gelokaliseerd, kan deze alleen worden weergegeven in de gelokaliseerde cultuur. Als een geïmplementeerde toepassing bijvoorbeeld is gelokaliseerd in het Japans, kan deze alleen worden weergegeven in Japanse Microsoft Windows, niet in Engelse Windows. Dit is een probleem omdat het een veelvoorkomend scenario is voor Japanse gebruikers om een Engelse versie van Windows uit te voeren.
De oplossing voor dit probleem is het instellen van het neutraal taalterugvalkenmerk. Een toepassingsontwikkelaar kan eventueel resources verwijderen uit de hoofdassembly en opgeven dat de resources kunnen worden gevonden in een satellietassembly die overeenkomt met een specifieke cultuur. Als u dit proces wilt beheren, gebruikt u de NeutralResourcesLanguageAttribute. De constructor van de NeutralResourcesLanguageAttribute klasse heeft twee signaturen, waarvan er één een UltimateResourceFallbackLocation parameter gebruikt om de locatie op te geven waaruit de ResourceManager de terugvalresources moet halen: hoofdassembly of satellietassembly. In het volgende voorbeeld ziet u hoe u het kenmerk gebruikt. Voor de ultieme terugvallocatie zorgt de code ervoor dat ResourceManager de resources opzoekt in de submap 'de' van de momenteel draaiende assembly.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]
Zie ook
- Overzicht van WPF-globalisatie en lokalisatie
.NET Desktop feedback