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 det här avsnittet beskrivs problem som du bör känna till när du skriver WPF-program (Windows Presentation Foundation) för den globala marknaden. Programmeringselementen för globalisering definieras i .NET i System.Globalization namnområdet.
XAML-globalisering
XAML (Extensible Application Markup Language) baseras på XML och utnyttjar det globaliseringsstöd som definieras i XML-specifikationen. I följande avsnitt beskrivs några XAML-funktioner som du bör känna till.
Teckenreferenser
En teckenreferens ger UTF16-kodenheten för det specifika Unicode-tecken som det representerar, antingen decimalt eller hexadecimalt. I följande exempel visas en decimalteckenreferens för DEN KOPTISKA VERSAL BOKSTAVEN HORI, eller "Ϩ":
Ϩ
I följande exempel visas en hexadecimal teckenreferens. Observera att den har ett x framför hexadecimalt tal.
Ϩ
Kodning
Kodningen som stöds av XAML är ASCII, Unicode UTF-16 och UTF-8. Kodningssatsen finns i början av XAML-dokumentet. Om det inte finns något kodningsattribut och det inte finns någon byteordning, är parsern som standard UTF-8. UTF-8 och UTF-16 är de föredragna kodningarna. UTF-7 stöds inte. I följande exempel visas hur du anger en UTF-8-kodning i en XAML-fil.
?xml encoding="UTF-8"?
Språkattribut
XAML använder xml:lang för att representera språkattributet för ett element. För att kunna dra nytta av CultureInfo klassen måste värdet för språkattributet vara ett av kulturnamnen som är fördefinierade av CultureInfo. xml:lang kan ärvas i elementträdet (enligt XML-regler, inte nödvändigtvis på grund av arv av beroendeegenskap) och dess standardvärde är en tom sträng om den inte uttryckligen tilldelas.
Språkattributet är mycket användbart för att ange regionala språk. Till exempel har franska olika stavning, vokabulär och uttal i Frankrike, Quebec, Belgien och Schweiz. Även kinesiska, japanska och koreanska delar kodpunkter i Unicode, men de ideografiska formerna är olika och de använder helt olika teckensnitt.
I följande XAML-exempel (Extensible Application Markup Language) används språkattributet fr-CA för att ange kanadensisk franska.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
XAML stöder alla Unicode-funktioner, inklusive surrogater. Så länge teckenuppsättningen kan mappas till Unicode stöds den. Till exempel introducerar GB18030 vissa tecken som är mappade till filnamnstillägget A och B och surrogatpar för kinesiska, japanska och koreanska (CFK), och därför stöds det fullt ut. Ett WPF-program kan använda StringInfo för att ändra strängar utan att förstå om de har surrogatpar eller om de kombinerar tecken.
Utforma ett internationellt användargränssnitt med XAML
I det här avsnittet beskrivs användargränssnittsfunktioner som du bör tänka på när du skriver ett program.
Internationell text
WPF innehåller inbyggd bearbetning för alla skrivsystem som stöds av Microsoft .NET Framework.
Följande skript stöds för närvarande:
Arabiska
bengali
Devanagari
Kyrillisk
Grekiska
Gujarati
Gurmukhi
Hebreiska
Ideografiska skript
Kannada
lao
Latin
Malayalam
Mongoliska
Odia
Syriska
tamil
Telugu
Thaana
Thai*
Tibetanska
I den här versionen stöds visning och redigering av thailändsk text, men ordbrytning stöds inte.
Följande skript stöds inte för närvarande:
Khmer
Koreansk gammal hangul
Myanmar
Sinhala
Alla skrivarsystemmotorer stöder OpenType-teckensnitt. OpenType-teckensnitt kan innehålla OpenType-layouttabeller som gör det möjligt för teckensnittsskapare att utforma bättre internationella och avancerade typografiska teckensnitt. OpenType-tabellerna för teckensnittslayout innehåller information om teckenersättningar, positionering av glyfer, justering och baslinjeplacering, vilket gör det möjligt för textbearbetningsprogram att förbättra textlayouten.
Med OpenType-teckensnitt kan du hantera stora glyph-uppsättningar med unicode-kodning. Sådan kodning möjliggör brett internationellt stöd samt för typografiska glyfvarianter.
WPF-textrendering drivs av Microsoft ClearType-underpunktsteknik som stöder upplösningsoberoende. Detta förbättrar läsbarheten avsevärt och ger möjlighet att stödja högkvalitativa dokument i tidningsstil för alla skript.
Internationell layout
WPF är ett mycket bekvämt sätt att stödja horisontella, dubbelriktade och lodräta layouter. I presentationsramverket FlowDirection kan egenskapen användas för att definiera layout. Flödesriktningsmönstren är:
LeftToRight – vågrät layout för latin, östasiatiska och så vidare.
RightToLeft – dubbelriktad för arabiska, hebreiska och så vidare.
Utveckla lokala program
När du skriver ett program för global förbrukning bör du komma ihåg att programmet måste vara localizable. Följande avsnitt pekar på saker att tänka på.
Flerspråkigt användargränssnitt
Flerspråkiga användargränssnitt (MUI) är ett Microsoft-stöd för att växla UIs från ett språk till ett annat. Ett WPF-program använder sammansättningsmodellen för att stödja MUI. Ett program innehåller språkneutrala sammansättningar samt språkberoende satellitresurssammansättningar. Startpunkten är en hanterad .EXE i huvudsammansättningen. WPF-resursinläsaren drar nytta av plattformens resurshanterare för att stödja sökning av resurser och reservlösningar. Flera språksatellitsammansättningar fungerar med samma huvuduppsättning. Vilken resurssammansättning som läses in beror på den CurrentUICulture aktuella trådens.
Lokaliserbart användargränssnitt
WPF-program använder XAML för att definiera användargränssnittet. Med XAML kan utvecklare ange en hierarki med objekt med en uppsättning egenskaper och logik. Den primära användningen av XAML är att utveckla WPF-program, men det kan användas för att ange en hierarki för alla CLR-objekt (Common Language Runtime). De flesta utvecklare använder XAML för att ange programmets användargränssnitt och använda ett programmeringsspråk som C# för att reagera på användarinteraktion.
Ur resurssynpunkt är ett användargränssnitt ett resurselement och därför måste dess slutliga distributionsformat vara localizable för att stödja internationella språk. Eftersom XAML inte kan hantera händelser innehåller många XAML-program kodblock för detta. Mer information finns i XAML i WPF. Koden tas bort och kompileras till olika binärfiler när en XAML-fil tokeniseras till BAML-formen av XAML. BAML-formen av XAML-filer, bilder och andra typer av hanterade resursobjekt bäddas in i satellitresurssammansättningen, som kan lokaliseras till andra språk eller huvudsammansättningen när lokalisering inte krävs.
Anmärkning
WPF-program stöder alla FrameworkCLR-resurser, inklusive strängtabeller, bilder och så vidare.
Skapa lokala program
Lokalisering innebär att anpassa ett användargränssnitt till olika kulturer. För att göra ett WPF-program lokaliserat måste utvecklare skapa alla lokala resurser i en resurssammansättning. Resurssammansättningen är lokaliserad till olika språk och koden bakom använder resurshanterings-API:et för att läsa in. En av filerna som krävs för ett WPF-program är en projektfil (.proj). Alla resurser som du använder i ditt program ska ingå i projektfilen. I följande exempel från en .csproj-fil visas hur du gör detta.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Om du vill använda en resurs i programmet instansierar du en ResourceManager och läser in den resurs som du vill använda. I följande exempel visas hur du gör detta.
void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}
Använda ClickOnce med lokaliserade program
ClickOnce är en ny Windows Forms-distributionsteknik som levereras med Visual Studio 2005. Det möjliggör programinstallation och uppgradering av webbprogram. När ett program som distribuerades med ClickOnce lokaliseras kan det bara visas i den lokaliserade kulturen. Om ett distribuerat program till exempel är lokaliserat till japanska kan det bara visas på japanska Microsoft Windows, inte på engelska Windows. Det här är ett problem eftersom det är ett vanligt scenario för japanska användare att köra en engelsk version av Windows.
Lösningen på det här problemet är att ange attributet för neutralt språkåterfall. En programutvecklare kan också ta bort resurser från huvudsammansättningen och ange att resurserna kan hittas i en satellitsammansättning som motsvarar en specifik kultur. Om du vill styra den här processen använder du NeutralResourcesLanguageAttribute. Konstruktorn för NeutralResourcesLanguageAttribute klassen har två signaturer, en som tar en UltimateResourceFallbackLocation parameter för att ange platsen där ResourceManager ska extrahera reservresurserna: huvudsammansättning eller satellitsammansättning. I följande exempel visas hur du använder attributet. För den ultimata reservplatsen orsakar koden ResourceManager att den söker efter resurserna i underkatalogen "de" i katalogen för det aktuellt körande sammansättningen.
[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]
Se även
.NET Desktop feedback