Windows Phone - 多語系應用程式名稱
在撰寫<Winodws Phone 7 – Localize on your App (多語系作法)>篇時,沒注意應用程式名稱在程式清單與
Application Tile的多語系,導致這次送審時被退件,因此,該篇文章即把遺漏掉的這一個部分補充上來,
讓多語系的處理更加完整。
〉程式清單與Application Tile多語系的範圍:
上述二張圖片是分別應用程式除了內容之外,外觀要處理多語系的部分。不過很可惜這裡語系的處理方式,
不像Android可以直接定義在Strings.xml,透過AndroidManifest.xml指定一個@AppName這麼方便。
因此,根據MSDN中<How to: Localize an Application Title for Windows Phone>介紹的方式來往下實作:
1. 建置多語系必要的Dll():
a. 使用Visual Studio 2010建立一個C++的專案,並且選擇Win32專案,命名:AppResLib;
b. 透過Win32 Application精靈設定Application Type與相關資訊;
選擇應用程式類型為:DLL;其他選項為:空專案;
c. 透過Solution Explorer在專案檔按右鍵選擇屬性,進入屬性視窗,按照下方圖示指定值為:Yes (/NOENTRY);
[注意] /NOENTRY prevents the linker from linking a reference to _main into the DLL;
this option is required to create a resource-only DLL.
d. 透過Solution Explorer在專案檔按右鍵建立一個新的資源,選擇為:String Table類型,輸入下方二個重要的參數;
ID | Value | Caption |
AppTitle | 100 | The language-neutral name of your application to be displayed in the application list. |
AppTileString | 200 | The language-neutral name of your application to be displayed in the application Tile when pinned to Start. |
如下圖示:
e. 進行該專案AppResLib的建置,產生AppResLib.dll。
2. 利用步驟一建置好的多語系Dll,根據需要語系建立成特定的語言包(mui):
步驟一建立好的Dll是Windows Phone運作時主要引用的Dll,接著搭配想要支援的語言,進行語言包的建立。
語言包,指的是Windows Phone在設定中「地區+語言」中的「顯示語言」, 根據MSDN上針對不同語系有對應
語言包的命名方式,可參考<How to: Localize an Application Title for Windows Phone>。
往下列出常見的語系:
Culture name | Culture code | Dll file name |
Chinese Simplified (PRC) | zh-CN | AppResLib.dll.0804.mui |
Chinese Traditional (Taiwan) | zh-TW | AppResLib.dll.0404.mui |
English (United States) | en-US | AppResLib.dll.0409.mui |
以下介紹建立二個語系:en-US(AppResLib.dll.0409.mui)與zh-TW(AppResLib.dll.0404.mui)的方式。
a. 開啟步驟一的AppResLib專案,並進入所新增的String Table資源檔;
b. 根據en-US與zh-TW分別修改String Table,如下:
‧en-US:Caption的值是自訂的
ID | Value | Caption |
AppTile | 100 | My Application |
AppTileString | 200 | My Application |
‧zh-TW
ID | Value | Caption |
AppTile | 100 | 我的應用程式 |
AppTileString | 200 | 我的應用程式 |
c. en-US改好String Table後,進行專案的建置,自動產出AppResLib.dll,並將Dll更名為:AppResLib.dll.0409.mui;
d. zh-TW改好String Table後,進行專案的建置,自動產出AppResLib.dll,並將Dll更名為:AppResLib.dll.0404.mui;
3. 將Dll與語言包放置於Windows Phone Project中與App.xaml同層的資料夾:
將AppResLib.dll、AppResLib.dll.0409.mui與AppResLib.dll.0404.mui放置於Windows Phone Project專案中,
一定要與App.xaml檔案同層資料夾,通常就是專案的根目錄。接著把三個檔案透過Solution Explorer加入專案,
並將三個項目的Build Action設定為Content;
4. 修改Windows Phone Application專案中的WMAppManifest.xml,並且重新對專案重新建置:
a. 調整<App />標籤中的Title屬性:
將Title改為@AppResLib.dll,-100,讓系統根據AppResLib找到String Table中Value = 100的Caption值。
1: <App xmlns=""
2: ProductID="{product id}"
3: Title="@AppResLib.dll,-100"
4: RuntimeType="Silverlight"
5: Version="1.0.0.0"
6: Genre="apps.normal"
7: Author="author"
8: Description="description"
9: Publisher="publisher">
b. 調整<PrimaryToken />標籤中的Title屬性:
將Title改為@AppResLib.dll,-200,讓系統根據AppResLib找到String Table中Value = 200的Caption值。
1: <PrimaryToken TokenID="WindowsPhoneApplicationToken" TaskName="_default">
2: <TemplateType5>
3: <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
4: <Count>0</Count>
5: <Title>@AppResLib.dll,-200</Title>
6: </TemplateType5>
7: </PrimaryToken>
d. 重新建置Application專案,並且佈署至實體設備或Emulator進行測試。
=>測試時,透過更換設定中「地區+語言」中的「顯示語言」的值來進行測試。
======
以上是補充如何對應用程式的名稱在Windows Phoneo程式清單與Application Tile二個範圍實作多語系的方式。
另外有找到一篇已經幫我們建立好的範例文件:How to localize The Title in a WP7 Silverlight application。
References:
‧How to: Localize an Application Title for Windows Phone
‧How to localize The Title in a WP7 Silverlight application (有建立好的豐富C++多語系包)