Windows Phone - 多語系應用程式名稱

Windows Phone - 多語系應用程式名稱

在撰寫<Winodws Phone 7 – Localize on your App (多語系作法)>篇時,沒注意應用程式名稱在程式清單與

Application Tile的多語系,導致這次送審時被退件,因此,該篇文章即把遺漏掉的這一個部分補充上來,

讓多語系的處理更加完整。

 

〉程式清單與Application Tile多語系的範圍

     IC452713(應用程式清單)IC452714(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

         000

 

     b. 透過Win32 Application精靈設定Application Type與相關資訊;

          001 

          選擇應用程式類型為:DLL其他選項為:空專案

          00

 

     c. 透過Solution Explorer在專案檔按右鍵選擇屬性,進入屬性視窗,按照下方圖示指定值為:Yes (/NOENTRY)

         01      

         [注意] /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類型,輸入下方二個重要的參數;

         0402

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.

          如下圖示:

          03

 

    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++多語系包)

 

Dotblogs Tags: