博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WP7应用开发笔记(18) 本地化与多语言
阅读量:5024 次
发布时间:2019-06-12

本文共 2430 字,大约阅读时间需要 8 分钟。

WP程序面向的是App Hub市场发布,支持多种语言是一个很重要的需求,也能为程序提供更广泛的用户群。

如何实现让程序实现语言本地化呢?

 

使用资源文件

熟悉.net开发都知道资源文件中是可以支持多语言与本地化的基本。

创建资源文件

右键单击项目名称,在“添加新项”对话框中,选择“资源文件”,可以命名为 AppResources.resx。此文件包含应用程序默认语言的资源。

最常用的是字符串资源。字符串资源是一种键-值(还有备注)方式的表,如下图。

AppResources.resx资源文件会自动生成AppResources类用于获取资源的值。

 

使用资源文件替换文本

现在要做的是将所有界面相关的字符串全部换成资源文件。

如:

ErrMessage = "接收器无法连接";

换成

ErrMessage =  AppResources.Could_not_connect;

这个操作比较单调容易出错,推荐使用Resharp工具的move操作。

 

綁定资源文件

除了代码以外,Xaml里面也难免会遇到文本信息。不过不能Xaml中直接使用资源文件,需要一个比较麻烦的工作:

首先创建一个包装类,我命名为LocalizedStrings,将AppResources的所有静态属性变成成员属性。

如下:

public class LocalizedStrings     {
public string ThanksString { get { return AppResources.ThanksString; } } public string UseString { get { return AppResources.UseString; } } public string Discussions { get { return AppResources.Discussions; } } ... }

 

将LocalizedStrings添加到App.xaml里

 

 

将界面上的文本信息全部换成LocalizedStrings的静态绑定:

换成:

 

添加多语言的资源文件

将界面文本全部移动到资源文件AppResources.resx后。

复制AppResources.resx重命名为AppResources.en-US.resx 

en-US表示美国英语,将全部键对应的值翻译成英文,然后系统根据当前语言自动选择需要的资源文件。

还可以添加AppResources.zh-TW.resx 繁体中文之类的。

 

完整的区域性名称表请参考:

 

修改项目文件 

用记事本或Notepad++打开RemoteControl.csproj

找到 SupportedCultures元素,添加需要支持的区域性名称。

en-US;zh-TW;zh-CN;

 

测试语言支持

在WP模拟器中选择“设置”,进入“区域和语言”,将显示语言换成你需要测试的语言,根据提示重启。

运行程序看看是否是对应的语言。

 

使用语言资源 DLL

资源文件只能改变程序内部的语言,但是如果想修改WP应用程序列表中的标题或磁贴上的标题就不行了。

这就需要使用语言资源DLL,语言资源DLL需要用C++项目创建上有比较详细的介绍,但是太麻烦了。

 

国外的有人写了一个WP7 AppResLib DLL Generator帮助我们生成 语言资源 DLL

原文地址:

首先下载

复制Sample.xml 命名为项目名RemoteControl.xml

编辑内容,国家代码LocaleID可以在Locale_ID_List.txt查询到,没添加就表示默认,Name可以随便取。

示例:

RemoteControl
RemoteControl
多媒体遥控器
多媒体遥控器
RemoteControl
RemoteControl
多媒體遙控器
多媒體遙控器

 

 

然后再CMD里面运行WP7AppResLib RemoteControl.xml

就会在下生成目录RemoteControl,里面包含了AppResLib.dll,AppResLib.dll.0404.mui等。

 

全部拷贝到项目根目录,就是App.xaml所在地目录,“添加现有项”到项目中。

查看属性,将生成操作全部设置为“内容”。

 

修改WMAppManifest.xml替换2个地方:

 

 

...
@AppResLib.dll,-200 ...

 

好了这样应用程序列表中的标题或磁贴上的标题就支持本地化了。赶紧测试一下。

 

参考文档:

Windows Phone 全球化和本地化

转载于:https://www.cnblogs.com/kiminozo/archive/2012/02/01/2335063.html

你可能感兴趣的文章
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>
函数式编程与参数
查看>>
flush caches
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
查看>>
CTF常用工具之汇总
查看>>
java的面向对象 (2013-09-30-163写的日志迁移
查看>>