Windows Phone - 多语系应用程序名称
在撰写
Application Tile的多语系,导致这次送审时被退件,因此,该篇文章即把遗漏掉的这一个部分补充上来,
让多语系的处理更加完整。
〉程序清单与Application Tile多语系的范围:
(应用程序清单)(Application Tile)
上述二张图片是分别应用程序除了内容之外,外观要处理多语系的部分。不过很可惜这里语系的处理方式,
不像Android可以直接定义在Strings.xml,透过AndroidManifest.xml指定一个@AppName这么方便。
因此,根据MSDN中
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上针对不同语系有对应
语言包的命名方式,可参考
往下列出常见的语系:
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. 调整
将Title改为@AppResLib.dll,-100,让系统根据AppResLib找到String Table中Value = 100的Caption值。
1: 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. 调整
标签中的Title属性: 将Title改为@AppResLib.dll,-200,让系统根据AppResLib找到String Table中Value = 200的Caption值。
1:2:3:Background.png 4:0 5:@AppResLib.dll,-200 6:7:
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: Windows Phone
原文:大专栏 Windows Phone - 多语系应用程序名称