Nefunkční lokalizace ve WinRT?

Tento týden jsem musel řešit velice záhadné chování při snaze o lokalizaci aplikace pro Windows 8.1.

Jako obvykle jsem si připravil třídu pro lokalizaci, přidal odpovídající soubory *.resw, texty pro lokalizaci v en a cs a nakonec na XAML stránkách stringy přes binding napojil. Vše se zdálo v pořádku až na ten malý detail, že fungovala pouze anglická (neutral) varianta. Situace se ještě více zkomplikovala ve chvíli, kdy jsem vytvořil nový projekt, který se po přesně stejném nastavení choval správně.

Po delším hledání jsem našel nepříliš zřejmou příčinu problému. Soubor Package.appmanifest, který obsahuje různá nastavení chování aplikace v systému obsahuje některá nastavení, která přes vizuální návrhář nejsou dostupná. Soubor AppManifest je totiž ve skutečnosti jen převlečený klasický textový XML dokument, který můžete otevřít ve Visual Studiu kliknutím pravým tlačítkem myši na tento soubor v Solution Exploreru a následně výběrem příikazu Open With… nebo View Code.

Otevření Package.appmanifest v XML editoru

Zdrojem  mých problémů byl jeden z elementů manifestu – konkrétně element Resources. Tento element ovlivňuje chování souborů resource v projektu a především určuje jejich dostupné jazyky.  V mém případě vypadal takto:

Pokud bych chtěl přidat další jazyky, mohl bych zopakovat element Resource s dalšími ISO zkratkami jazyků, které požaduji. Toto však jak jistě uznáte není příliš praktické. Lepší řešení nabízí podoba, která je výchozí po vytvoření nového Windows 8.1 projektu:

Speciální konstanta x-generate určuje, že při sestavování balíčku se automaticky vygenerují příslušné lokalizace na základě toho, jaké budou nalezeny soubory *.resw v projektu.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*