在Windows Phone 8的时候,要对应用程序在列表中显示的名称和锁定到开始屏幕的磁贴的名称进行多语言化是十分困难的,需要使用C++建立一个多语言资源库。但是,在WinRT中,这变得简单多了,无需再使用C++,资源文件即可解决。当然,在WinRT中,磁贴中的名称跟应用名称是一致的,不再区分。
首先,我们需要在工程目录建立相应的资源文件(resw),如下图:
根文件夹的名字必须为"Strings"。
然后Strings文件夹里的子文件夹的名称为语言名称,图中的则是简体中文和美国英文。
接下来在Resources.resw文件中添加一项用于测试:
zh-CN的Resources.resw:
en-US的Resources.resw:
修改MainPage。
<Page x:Class="LocalizationDemo.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:LocalizationDemo" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <StackPanel> <TextBlock x:Uid="txtTest" /> </StackPanel> </Grid> </Page>
定义一个控件的x:Uid跟资源文件中的名称的点号前相同。
运行程序:
zh-CN时:
然后进入设置:
进入语言
添加语言,找English(United States)
添加后重启,再次进入程序。
可以见到效果了,如果不成功,请认真仔细检查以上基础步骤是否成功!
接下来开始进行应用程序名称的多语言化:
在Resources.resw中添加一项新的,这里我命名为DisplayName。
zh-CN的:
en-US的:
接下来关键的一步来了,修改Package.appxmanifest:
像上面的图片,修改显示名称为ms-resource:DisplayName。同理,这里的说明也可以按照同样的方法修改。
接下来就可以运行了。
zh-CN:
en-US: