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 System.Globalization oboru názvů.

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 dává jednotce kódu UTF16 konkrétního znaku Unicode, který představuje v desítkovém nebo šestnáctkovém formátu. Následující příklad ukazuje desetinný znak odkaz pro KOPTIC CAPITAL LETTER HORI nebo 'Ϩ':

Ϩ

Následující příklad ukazuje šestnáctkový znak 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 CultureInfo třídy, hodnota atributu jazyka musí být jedním z názvů jazykových verzí předdefinovaných .CultureInfo xml:lang je zděděný 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 dotazů. 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 náhradní páry A a B a náhradní, proto je plně podporován. Aplikace WPF může používat StringInfo k manipulaci s řetězci, aniž by porozuměla tomu, jestli mají náhradní páry 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

  • Laoskou

  • Latinské

  • Malajalámština

  • Mongolština

  • Udijština

  • Syrské

  • Tamilština

  • Telugština

  • Thaana

  • Thajština*

  • Tibetština

*V této verzi je podporováno zobrazení a úpravy thajského textu; slovo rozbití není.

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

  • Khmer

  • 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í FlowDirection lze vlastnost použít k definování rozložení. 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.

sada MUI (Multilingual User Interface)

sada MUI (Multilingual User Interface)s (MUI) je podpora Microsoftu pro přepínání uživatelských rozhraní z jednoho jazyka na jiný. Aplikace WPF používá model sestavení k podpoře MUI. Jedna aplikace obsahuje sestavení neutrální jazyka a také sestavení satelitních prostředků 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ů architektury k podpoře vyhledávání prostředků a náhradního prostředku. 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ím vlákně.

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 nemůže zpracovat události, které mnoho aplikací XAML obsahuje bloky kódu k tomu. Další informace najdete 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ů jsou vložena do satelitního sestavení prostředků, které lze lokalizovat do jiných jazyků, nebo hlavní sestavení v případě, že 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 lokalizované do různých jazyků a kód za kódem používá k načtení rozhraní API pro správu prostředků. 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 použít prostředek v aplikaci, vytvořte ResourceManager instanci a načtěte prostředek, který chcete použít. Následující příklad demonstruje, jak to udělat.

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í model Windows Forms, která se dodává 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í konkrétní jazykové verzi. K řízení tohoto procesu použijte NeutralResourcesLanguageAttribute. Konstruktor NeutralResourcesLanguageAttribute třídy má dva podpisy, jeden, který přebírá UltimateResourceFallbackLocation parametr určující umístění, kam ResourceManager má extrahovat záložní prostředky: hlavní sestavení nebo satelitní sestavení. Následující příklad ukazuje, jak použít atribut. V případě konečného záložního umístění kód způsobí ResourceManager vyhledání prostředků v podadresáři "de" adresáře aktuálně spuštěného sestavení.

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

Viz také