2014/12/08

[筆記] Windows Store App 多國語系開發

之前無聊自己摸 Android App 時發現 Android App 的 resource 設定可以很快速的開發出多國語言版本,但寫  Windwos Store  App 時參考了兩三本書都沒有提到有關 string resource 的設定

Android 的 resource 除了 string resource 之外還有 layout, image 等等,而且在開啟專案時預設的範本就會有,只要添加新的語系目錄或是解析度目錄就可以了

微軟的預設範本只有 Assets目錄,沒有類似 android 下面的 res/values-{loc} 目錄

直到找到這篇  快速入門:使用字串資源 (XAML)

才知道原來微軟也有一樣的東西!!!!!


簡單的說

要先在 Package.appxmanifest 裡面的 Application 中設定好預設語言,這個步驟沒做預設的設定會是開發工具的顯示語系的樣子

之後要在專案目錄下面開一個 strings 目錄,下面開一個跟預設語系一樣的目錄名稱,裡面開一個 resource.resx 檔,
長得像這樣




之後左鍵雙擊兩下 .resw 即可開始編輯

資源的設定方式為使用 x:Uid 提取,假設畫面上有一個 textblock控制項,要用rsource控制要顯示的文字時,要給 textblock 指定 Uid,該Uid 與 Resource 的名稱相同

<grid background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <textblock> </textblock>
</grid>

但 resource 裡面除了指定名稱之外,還要指定對應的 Uid 要對應的屬性,像上面的 textblock 要顯示 "Hello!!" ,如果直接寫死在code 裡面是

<TextBlock Text="Hello!!" />


用 resource 對應時 resource 要這樣設定



然後 Uid 這樣下

<textblock x:uid="AppName"> </textblock>


到這邊之後直接 F5 給他跑下去,就可以看到結果啦

多國語言的部分,只要在 strings 目錄下面開對應的語系目錄,然後把原本的resource.resw 翻譯過後放進去即可

app 啟動時會先看有沒有跟系統語系對應的 Resource,如果沒有的話,就是用 Package.appxmanifest 裡面指定的語系資源了


另外 memo 一下語系對應表
http://msdn.microsoft.com/en-us/library/windows/apps/jj657969.aspx


沒有留言:

張貼留言