InChatter系统之本地化
来源:互联网 发布:photoshop软件版本 编辑:程序博客网 时间:2024/04/29 10:38
InChatter现在支持本地化了,其实这个只是很细节的东西,但是咱也是可以走走国际范。哈哈
其实最重要的原因只是想进行一次本地化的开发。这个概念相信大部分人都有,但是在实际项目中真的很少会涉及到,我也就InChatter这个项目来实践下本地化开发。
一、InChatter的本地化实施
1.新建一个新的类库,命名为:InChatter.Localization
2.在项目右键->属性,打开项目工程的属性窗口
3.选择资源页签,修改资源的访问修饰符为Public(这样我们才可以访问资源)
4.按图中的方式添加你定义你的系统资源。保存以后,可以在Properties文件夹中看到我们的资源文件Resources.resx
5.在项目工程属性窗口,你是无法添加两个资源文件的,我们可以直接将上述的Resources.resx复制一份,修改为Resources.en.resx
6.将语言内容修改为对应的英文即可
通过上述部分,我们变可以成功的完成资源的创建,编译项目以后的文件目录:
InChatter.Localization.dllen\而在en目录中,存在InChatter.Localization.resources.dll
我们默认的资源存储在InChatter.Localization.dll中,而我们英文的资源存在InChatter.Localization.resources.dll中
如果我们删除en文件夹,在英文的环境下,因为无法找到en资源,系统将直接使用默认的中文资源。
二、本地化系统窗体
1.使用生成的dll添加系统引用(需要将默认资源dll以及各个语言资源文件夹copy到系统的bin\Debug目录下),解决方案下的项目可直接引用项目
2.在WPF中使用项目资源
(1)Xaml中绑定资源
由于Resource中存在的都是静态属性的资源,在Xaml中绑定静态属性即可
<Window x:Class="InChatter.Client.WPFClient.View.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:InChatter.Client.WPFClient.Utility" Title="{x:Static rex:Resources.MessageWindow}" Height="600" Width="800" WindowStartupLocation="CenterScreen" xmlns:rex="clr-namespace:InChatter.Localization.Properties;assembly=InChatter.Localization" Visibility="{Binding WindowStatus,Mode= TwoWay}" ></Window>
这里我们引用前缀,并绑定了Title属性
(2)代码中的绑定
ResourceManager rm = new ResourceManager("InChatter.Localization.Properties.Resources", typeof(InChatter.Localization.Properties.Resources).Assembly)
我们本地测试时,在窗体的InitializeComponent()之前设置:
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
强制程序设置为英文的语言环境。
需要注意的是,在WPF由于MVVM绑定,处理时会引入新的线程,所以在WPF测试中,在ViewModel中也需要加入该设置才能保证ViewModel中设置的资源也为英文,这里的都是针对当前运行线程的,如果程序中加入了新的线程,都需要做这样的处理,当然这是在中文环境下。这里仅限于测试,真实使用时,会根据本地环境自动加载中文或英文,其他语言也可自行开发。
三、CurrentCulture和CurrentUICulture
资源信息的加载主要是有CurrentUICulture来决定的,而一些格式化选项则是有CurrentCulture来决定。
CurrentCulture是操作系统的用户区域环境的设置,而CurrentUICulture则是操作系统的语言设置。
附:
Winform添加资源方式
1.使用我们上述的第二种Code的方式
2.对窗体进行自定义,设置窗体属性的Localizable为true,在默认语言下设置窗体语言,完成以后,将窗体的Language修改为需要本地化的语言(默认为Default),然后再设置窗体界面语言即可。这种方式,资源是跟窗体关联的。
可本地化语言信息:
http://www.science.co.il/Language/Locale-codes.asp
- InChatter系统之本地化
- NGUI本地化系统应用
- iOS本地化系统控件
- 系统按钮本地化
- IOS 之 本地化语言
- 本地化(基于系统语言)
- Hibernate之Session线程本地化
- iOS 开发之本地化 国际化
- 本地化
- 本地化
- 本地化
- 本地化
- 本地化
- 本地化
- 本地化
- 本地化MFMessageComposeViewController,UIImagePickerController等系统页面
- Gentoo本地化中文设置--Locale系统介绍
- 本地化(不基于系统语言)
- javascript 使用方式
- linux下rm命令使用详解---linux删除文件或目录命令
- 关于锚点跳转及jQuery下相关操作与插件
- 京东在美上市背后究竟暗藏啥玄机?
- JAVA操作ZIP文件 -
- InChatter系统之本地化
- 程序员相关
- 局域网中域和工作组的概念
- iOS的运作周期
- 第一次
- 使用ant剪切、重命名、修改文件访问时间
- js 数组,字符串,JSON,bind, Name
- VS2010查看内存方法
- selenium+python针对登录功能的用户名,密码和断言组合进行的测试