Sdílet prostřednictvím


Globalizace pro WPF

Toto téma představuje problémy, o které byste měli vědět při psaní aplikací Windows Presentation Foundation (WPF) pro globální trh. Programovací prvky globalizace jsou definovány v .NET v oboru názvů System.Globalization.

Globalizace XAML

Jazyk XAML (Extensible Application Markup Language) je založený na jazyce XML a využívá podporu globalizace definovanou ve specifikaci XML. Následující části popisují některé funkce XAML, o nichž byste měli vědět.

Odkazy na znaky

Odkaz na znak udává jednotku kódu UTF-16 konkrétního znaku Unicode buď v desítkovém, nebo šestnáctkovém formátu. Následující příklad ukazuje desetinný číselný odkaz pro koptické velké písmeno HORI, nebo 'Ϩ':

Ϩ

Následující příklad ukazuje hexadecimální znakový odkaz. Všimněte si, že má před šestnáctkovým číslem x.

Ϩ

Kódování

Kódování podporované XAML jsou ASCII, Unicode UTF-16 a UTF-8. Příkaz kódování je na začátku dokumentu XAML. Pokud neexistuje žádný atribut kódování a neexistuje žádné bajtové pořadí, parser ve výchozím nastavení je UTF-8. UTF-8 a UTF-16 jsou upřednostňované kódování. UTF-7 se nepodporuje. Následující příklad ukazuje, jak určit kódování UTF-8 v souboru XAML.

?xml encoding="UTF-8"?

Atribut jazyka

XAML používá xml:lang k reprezentaci atributu jazyka elementu. Aby bylo možné využít výhod třídy CultureInfo, musí být hodnota atributu jazyka jedním z názvů kultur předem definovaných CultureInfo. xml:lang je možné dědit ve stromu elementů (podle pravidel XML, ne nutně kvůli dědičnosti vlastností závislostí) a jeho výchozí hodnota je prázdný řetězec, pokud není explicitně přiřazen.

Atribut jazyka je velmi užitečný pro zadávání regionálních jazyků. Například francouzština má jiný pravopis, slovní zásobu a výslovnost ve Francii, Quebecu, Belgii a Švýcarsku. Také čínské, japonské a korejské sdílejí body kódu v Unicode, ale ideografické obrazce se liší a používají zcela různá písma.

Následující příklad XAML (Extensible Application Markup Language) používá atribut jazyka fr-CA k určení kanadské francouzštiny.

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

XAML podporuje všechny funkce Unicode, včetně náhradních symbolů. Pokud je možné namapovat znakovou sadu na Unicode, podporuje se. Například GB18030 zavádí některé znaky, které jsou namapovány na čínská, japonská a korejská rozšíření A a B a na náhradní páry, proto je plně podporován. Aplikace WPF může pomocí StringInfo manipulovat s řetězci, aniž by porozuměla tomu, jestli mají náhradní dvojice nebo kombinují znaky.

Návrh mezinárodního uživatelského rozhraní pomocí XAML

Tato část popisuje funkce uživatelského rozhraní, které byste měli při psaní aplikace zvážit.

Mezinárodní text

WPF zahrnuje integrované zpracování pro všechny systémy zápisu podporované rozhraním Microsoft .NET Framework.

V současné době se podporují následující skripty:

  • Arabština

  • Bengálština

  • Devanagari

  • Cyrilice

  • Řečtina

  • Gudžarátština

  • Gurmukhi

  • Hebrejština

  • Ideografické skripty

  • Kannadština

  • Laoština

  • Latina

  • Malajalámština

  • Mongolština

  • Odia

  • Syrština

  • Tamilština

  • Telugština

  • Thaana

  • Thajština*

  • Tibeťan

*V této verzi je podporováno zobrazení a úprava thajského textu; rozdělování slov však není.

V současné době nejsou podporovány následující skripty:

  • Khmerština

  • Korejský starý Hangul

  • Myanmar

  • Sinhala

Všechny moduly pro psaní podporují písma OpenType. Písma OpenType můžou obsahovat tabulky rozložení OpenType, které autorům písem umožňují navrhovat lepší mezinárodní a komplexní typografická písma. Tabulky rozložení písma OpenType obsahují informace o náhradách glyfů, umístění glyfů, zarovnání a umístění podle směrného plánu, což umožňuje aplikacím pro zpracování textu zlepšit rozložení textu.

Písma OpenType umožňují zpracování velkých sad glyfů pomocí kódování Unicode. Takové kódování umožňuje širokou mezinárodní podporu i pro typografické varianty glyfů.

Vykreslování textu WPF využívá technologii Microsoft ClearType sub-pixel, která podporuje nezávislost rozlišení. To výrazně zlepšuje čitelnost a poskytuje možnost podporovat vysoce kvalitní dokumenty ve stylu časopisů pro všechny skripty.

Mezinárodní rozložení

WPF poskytuje velmi pohodlný způsob, jak podporovat vodorovná, obousměrná a svislá rozložení. V prezentačním rozhraní lze k definování rozložení použít vlastnost FlowDirection. Vzory směru toku jsou:

  • LeftToRight – vodorovné rozložení pro latinku, východoasijské jazyky atd.

  • RightToLeft - obousměrný pro arabštinu, hebrejštinu atd.

Vývoj lokalizovatelných aplikací

Při psaní aplikace pro globální spotřebu byste měli mít na paměti, že aplikace musí být lokalizovatelná. V následujících tématech se dozvíte, co je potřeba vzít v úvahu.

Vícejazyčné uživatelské rozhraní

Vícejazyčná uživatelská rozhraní (MUI) je podpora Microsoftu pro přepínání uživatelských rozhraní z jednoho jazyka do jiného. Aplikace WPF používá model sestavení k podpoře MUI. Jedna aplikace obsahuje jazykově neutrální sestavení a také satelitní sestavení zdrojů závislých na jazyce. Vstupním bodem je spravovaný soubor .EXE v hlavním sestavení. Zavaděč prostředků WPF využívá správce prostředků frameworku pro vyhledávání a nahrazování prostředků. Více jazykových satelitních sestavení funguje se stejným hlavním sestavením. Sestavení prostředků, které je načteno, závisí na CurrentUICulture aktuálního vlákna.

Lokalizovatelné uživatelské rozhraní

Aplikace WPF používají XAML k definování uživatelského rozhraní. XAML umožňuje vývojářům určit hierarchii objektů se sadou vlastností a logiky. Primárním použitím XAML je vývoj aplikací WPF, ale dá se použít k určení hierarchie všech objektů CLR (Common Language Runtime). Většina vývojářů používá XAML k určení uživatelského rozhraní aplikace a k reakci na interakci uživatelů používá programovací jazyk, jako je C#.

Z hlediska prostředků je uživatelské rozhraní prvkem prostředku, a proto musí být jeho konečný formát distribuce lokalizovatelný pro podporu mezinárodních jazyků. Vzhledem k tomu, že XAML nedokáže zpracovávat události, mnoho aplikací XAML obsahuje bloky kódu pro toto zpracování. Další informace naleznete v tématu XAML ve WPF. Kód se odstraní a zkompiluje do různých binárních souborů, když je soubor XAML tokenizován do formátu BAML XAML. Forma BAML souborů XAML, obrázků a dalších typů spravovaných objektů prostředků je vložena do satelitního sestavení prostředků, které lze lokalizovat do jiných jazyků, nebo do hlavního sestavení, pokud lokalizace není nutná.

Poznámka

Aplikace WPF podporují všechny prostředky FrameworkCLR, včetně řetězcových tabulek, obrázků atd.

Vytváření lokalizovatelných aplikací

Lokalizace znamená přizpůsobení uživatelského rozhraní různým jazykovým verzím. Aby bylo možné lokalizovat aplikaci WPF, musí vývojáři sestavit všechny lokalizovatelné prostředky do sestavení prostředků. Sestavení prostředků je lokalizováno do různých jazyků a kód na pozadí používá rozhraní API pro správu prostředků k jejich načtení. Jeden ze souborů požadovaných pro aplikaci WPF je soubor projektu (.proj). Všechny prostředky, které používáte ve své aplikaci, by měly být zahrnuty do souboru projektu. Následující příklad ze souboru .csproj ukazuje, jak to provést.

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

Pokud chcete v aplikaci použít prostředek, vytvořte instanci ResourceManager a načtěte daný prostředek, který chcete použít. Následující příklad ukazuje, jak to provést.

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

Použití ClickOnce s lokalizovanými aplikacemi

ClickOnce je nová technologie nasazení Windows Forms, která bude dodávána se sadou Visual Studio 2005. Umožňuje instalaci a upgrade webových aplikací. Když je aplikace nasazená pomocí Technologie ClickOnce lokalizovaná, je možné ji zobrazit pouze v lokalizované jazykové verzi. Pokud je například nasazená aplikace lokalizovaná do japonštiny, lze ji zobrazit pouze v japonském systému Microsoft Windows, nikoli v anglickém systému Windows. To představuje problém, protože se jedná o běžný scénář pro japonské uživatele, aby spustili anglickou verzi Systému Windows.

Řešením tohoto problému je nastavení atributu pro náhradní použití neutrálního jazyka. Vývojář aplikace může volitelně odebrat prostředky z hlavního sestavení a určit, že prostředky lze najít v satelitním sestavení odpovídajícím konkrétní kulturní verzi. K řízení tohoto procesu použijte NeutralResourcesLanguageAttribute. Konstruktor třídy NeutralResourcesLanguageAttribute má dva podpisy: jeden přijímá parametr UltimateResourceFallbackLocation k určení, kde má ResourceManager extrahovat záložní prostředky, což může být buď hlavní sestavení, nebo satelitní sestavení. Následující příklad ukazuje, jak použít atribut. Pro nejzazší záložní umístění způsobí kód, že ResourceManager bude hledat prostředky v podadresáři "de" adresáře aktuálně spuštěného sestavení.

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

Viz také