TOPlist

Vyvíjíme aplikace pro WP: Vícejazyčná lokalizace (2. díl)

V druhém díle seriálu o vývoji aplikací pro Windows Phone se podíváme na to, jak vytvořit aplikace s vícejazyčnou lokalizací.

V předchozím díle jsme si ukázali všechny procesy (kroky) nutné k tomu, aby úplný začátečník vypublikoval svou jednoduchou aplikaci „Hello world!“ do Marketplace. I v druhém díle se pokusíme zůstat co nejvíce u klikání a zodpovíme jednu z nejčastějších otázek – jak vytvořit dvojjazyčnou aplikaci?

Budeme stavět na jednoduchém základu, aby co největší část článku obsahovaly kroky spjaté s dvojjazyčností a nemátla vás zbytečná omáčka kolem. Zároveň však vybereme aplikaci reálnou, existující a stažitelnou v Marketplace, protože si ukážeme i tak trochu novou publikační část v App Hubu.

Mluvímeli o vícejazyčnosti, tak nejčastější případy, které vývojář musí řešit jsou tyto:
– vícejazyčný text na „stránce“ aplikace (XAML, neboli „design“ část),
– vícejazyčný text ve vyskakující hlášce „MessageBox“ (C#, neboli v “kódu”),
– vícejazyčný text ve spodním menu „ApplicationBar“ (opět C#).

-

Pro demonstrační účely vybereme aplikaci Chrastítko (Marketplace, diskuze ve fóru), u které všechny tři případy vyřešíme a možná si vykouzlíme i úsměv na tváři :-).

Ve zkratce

Principem je vytvořit si přímo ve Visual Studiu uvnitř rozdělané aplikace takzvané „resource files“ (jeden pro češtinu, druhý pro angličtinu), což jsou prostě soubory obsahující nějaká naše data. Do nich přesuneme veškerou textaci, kterou v aplikaci máme v podobě klíč-hodnota. Příkladem budiž název aplikace „Chrastítko“. Pro něj si v resource filech vytvoříme klíč s názvem „textNazevApp“. V českém resource file mu přiřadíme hodnotu „Chrastítko“ a v anglickém hodnotu „Shake Rattle“. Poté již stačí jen zanést nějaké ty informace o našem plánu (rozšíření aplikace o druhý jazyk) do vlastností projektu a upravit aplikaci.

Pozor… Protože my volíme jako primární jazyk angličtinu, resource file pro angličtinu nazveme AppResources.resx a pro češtinu pak AppResources.cs-CZ.resx. Tím zajistíme, že když si aplikaci stáhne třeba číňan (tedy jazyk ani český ani anglický), aplikace na něj bude mluvit v základu anglicky a ne česky. Následuje rychlý textově obrázkový postup.

1. Primární resource file pro češtinu

Spustit Visual Studio  ->  otevřít existující řešení, aka „solution“ (v našem případě Chrastítko):

-

Pravé tlačítko myši na název projektu  ->  Add  ->  New Item:

-

V dialogu přepsat Name na „AppResources.cs-CZ.resx“  ->  kliknout na Add:

-

Postupně přidávat naše klíče („proměnné“), vždy název a hodnotu:

- 

Nakonec uložíme pomocí  File  ->  Save all.

2. Vytvoření resource file pro angličtinu

Zkopírovat a vložit kopii právě vytvořeného českého resource file:

-

Přepsat název nově vytvořené kopie na „AppResources.resx“:

-

Poklikat na AppResources.resx  ->  vyplnit anglický překlad  ->  File  ->  Save all:

-

3. Nastavení primárního (default) jazyku

Solution Explorer  ->  poklepat na Properties  ->  klik na tlačítko  Assembly Information  ->  Neutral language změnit na „English (United States)“:

-

4. Úprava <název projektu>.csproj

Zavřít Visual Studio  ->  přes Průzkumníka se dostat do projektové složky  ->  najít a editovat soubor <název projektu>.csproj:

-

Najít tag SupportedCultures  ->  připsat „cs-CZ;“ (přidáváme pouze češtinu, protože angličtina je defaultní a my pouze přidáváme jazyky „navíc“)  ->  uložit:

-

5. Úpravy a resource files a propojení s aplikací

Znovu spustit Visual Studio  ->  otevřít naše „řešení“ (solution)  ->  v Solution Exploreru poklepat na AppResources.cs-CZ.resx  ->   v comboboxu Access Modifier zvolit Public:

-

To samé zopakovat u AppResources.resx  ->  File  ->  Save all:

-

V solution Exploreru najdeme MainPage.xaml.cs  ->  poklikáme a úplně dolů do kódu vložíme následující třídu:

-

Solution Explorer  ->  poklikat na App.xaml  ->  ekvivalentně rozšířit blok Application.Resources (Chrastitko je název namespace viz. vršek kódu MainPage.xaml.cs):

-

6. Přepsání textací v XAML

Solution Explorer  ->  poklikat na MainPage.xaml  ->  přepsat textace ze statických na odkazy na názvy klíčů (našich „proměnných“) z resource files viz.:

-

Ekvivalentně k předchozímu kroku upravíme všechny textace v MainPage.xaml. Přímo v náhledu vlevo pak uvidíme, že se nám texty rovnou změnily (CHRASTÍTKO  ->  SHAKE RATTLE):

-

7. Přepsání textace MessageBoxu

Solution Explorer  ->  poklikat na MainPage.xaml.cs  ->  přepsat „hardcoded“ textace na „dynamické“:

-

8. Přepsání textace ApplicationBaru

Ačkoli se popisky jednotlivých položek menu v ApplicationBaru dají přímo editovat v XAML (stejně jako popisky TextBlocků, Buttonů atd.), nelze u nich použít „binding“, který jsme použili v bodu 6. ApplicationBar není plnohodnotná Silverlight komponenta, ale pouze wrapper – pokud nevíte co tím myslím, vůbec to nevadí a stačí, když si zapamatujete, že to prostě musíte dělat podle následujícího (jiného) postupu…

Solution Explorer  ->  poklikat na MainPage.xaml.cs  ->  najít řádek „InitializeComponent();“  ->  pod něj vložit uvedený kód:

-

9. Publikování na Marketplace

Samotný proces publikování aplikace do Marketplace jsme si ukazovali již v prvním díle seriálu, nyní ale budeme čelit malé, ale vítané změně: pro každý jazyk budeme moci vyplnil vlastní popis aplikace, nahrát vlastní screenshoty a nastavit různou cenu. A to hned v druhém kroku po nahrání XAP souboru aplikace – App Hub si ho totiž po uložení na své servery rovnou přečte.

-

Závěr

Poslední věcí, kterou by v našem případě bylo vhodné udělat, by bylo lokalizování samotného názvu aplikace na živé dlaždici a v seznamu aplikací, protože nyní tam budeme mít stále jen „Chrastítko“. Protože to má své nevýhody a není to úplně nejběžnější záležitost (např. aplikaci Internet Explorer píšeme i u nás prostě Internet Explorer, a ne Prohlížeč Internetu…), ponecháme tento úkol na samostudium. Postup je skvěle popsán na MSDN.

A to je vše. Vše o globalizaci a lokalizaci si můžete přečíst opět přímo na stránkách MSDN (anglicky). I v dalších dílech seriálu se můžete těšit na řešené úlohy – například stažení a zpracování dat z internetu, implementace trial verze, vytvoření živé dlaždice a další.

O autorovi – Robert Varga

- Aktuálně pracuji v GE Money Bank na pozici IT Systems Analyst a čtvrtým rokem jsem Microsoft Influencer. Programování je více než dekádu mým „hobby na doma“ a mimo dosavadní online (VymenaVeci.cz, CzechGamer.com…) a offline (ComputeMark, RemoteServerAdmin…) světy v posledních dvou letech kotvím ve vodách Windows Phone (TV Program, Počasí, Rádio, Svátky, Program Kin, WP Bench…). Aplikace ComputeMark a WP Bench jsou používány v recenzích nejvýznamnějších webů průmyslu (Engadget.com, AnandTech.com…). Aktuálně úzce spolupracuji s Nokia ČR a SR.

Autor článku Robert Varga
Robert Varga

Kapitoly článku