DevExpress控件汉化.doc

上传人:博****1 文档编号:551001807 上传时间:2022-11-16 格式:DOC 页数:10 大小:232.51KB
返回 下载 相关 举报
DevExpress控件汉化.doc_第1页
第1页 / 共10页
DevExpress控件汉化.doc_第2页
第2页 / 共10页
DevExpress控件汉化.doc_第3页
第3页 / 共10页
DevExpress控件汉化.doc_第4页
第4页 / 共10页
DevExpress控件汉化.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《DevExpress控件汉化.doc》由会员分享,可在线阅读,更多相关《DevExpress控件汉化.doc(10页珍藏版)》请在金锄头文库上搜索。

1、基础知识学习系列本地化DevExpress控件文件状态: 草稿 正式发布 正在修改文件标识:基础知识学习系列DevExpress控件本地化文件编号:当前版本:V1.0作 者:陈洪完成日期:2007年3月24日星期六版本控制版本号作者参与者起止日期备注V1.0陈洪2007年3月24日文档建立修改记录说明版本号作者参与者日期修改说明1. 文档导读本文档以颜色区分内容的重要性和不同性,阅读本文档时请注意以下事项:1. 红色部分表示需要注意的重点内容;(加粗的尤甚)2. 蓝色部分表示相应于前版本新增的内容;3. 紫色部分表示跟前版本不同的内容;本文档的变动历史都记录在“修改记录说明”一节。本文通过用到

2、英文单词的地方,也是本人理解不是很深刻的地方,如果有什么好的建议,欢迎指正。不胜感激!我的email:。2. 基础知识2.1. Net Framework知识在Visual Studio .NET里面,本地化资源,比如字符串、图片之类的,都是跟culture(语言文化)有关,这些东西都是存储在单独的文件中并且根据相应的culture设定进行加载,如果要了解怎样加载你自己的本地化资源,那就需要了解资源文件的组织结构关系:1. .Net在加载资源文件的时候,它选取资源文件的方式,可以说是按照自下而上的方式,写过程序的都知道继承的概念,有父类之类之说,可以说父类就是上层建筑,也就是那些伟大的领导们,

3、而子类就是广大百姓了,呵呵,这个比喻不是很恰当,纯粹娱乐。Framework里面,父类就对应english,也是唯一的一种没有自身资源文件的,其实也并不是没有,而是存在main assembly里面。2. 在父类之下,可以有多种多样的culture的资源,我们说的culture是指语言文化并不是指windows控制面板中的区域,比如,法国(French简写为“fr”)就是一个culture。其实english简写成“en”也是一个culture,只不过它比较特别,没办法,谁让现在的it世界是在老外统治着呢。3. 在这些culture之下,又有一些特定区域的culture,这些特定区域的cult

4、ure,它有两点属性,不仅包含语言文化,还加上区域特色,就好比中国有中国的文化,而福建还有它自身的区域性文化。偶们的官方语言是普通话,而我们福建还有N多种方言,鄙人不才,也就只会一种咱们家乡的本地话,在同事们听来,有点外星人嫌疑。老美也有老美的文化,有美式英语和英式英语区分,今天刚看了“姨妈的后现代生活”,就是因为她只会英式英语而不追逐美式英语这个大潮流而被解聘了。在一个程序试图加载一个资源的时候,好比一个字符串,并且还没有找到,它就会沿着上面所说的层次结构一层一层的往上爬,直到找到为止。如果仕途有这么顺利那就好了,呵呵。在进行本地话的过程中,最好的方法是建立相对通用的资源文件,也就是上文中第

5、2条中的而不是第3条中,就好比我们在汉化的过程中,一般汉化成普通话,而不是汉化成福建话,或者是台湾话。也就是越通用越好,假设你有一个French Belgian (fr-BE)的资源文件,而且它的直接上级就立马到了最高级english,那么当你的区域设置改变成French Canadian,系统降会寻找对应的fr-CA资源,而此时已经无法找到,就会选用处于main assambly中的资源,也就是英文。下图显示的就是你不想看到的场景。如果你愿意,你可以为fr culture放置尽可能多的资源文件,这样French Canadian的用户虽然无法看见fr-BE的资源文件,但是它至少可以获得Fre

6、nch的资源文件,以下图片就是推荐的方式。以上我们说的资源文件,还有另一种比较高雅的叫法,叫Satellite Assemblies,翻译成中文可以叫做卫星配件,还真有点卫星绕地球的感觉。需要注意的是这些资源配件的strong name必须跟main assembly的相一致,如果它们不匹配的话,也就无法加载了。2.2. 本地化WinFormVS提供了较丰富的本地化方法,通过VS开发环境实现本地化有两种方法,第一种是用系统工具为各种UI元素生成资源文件,然后把这些资源文件编译到卫星配件中去;第二种方法是添加一个资源文件模版然后使用内置的XML Designer进行编辑;第二种方法的好处是还可以

7、本地化messagebox种出现的文本。下面我们用一个工程简单演示一下这两种本地化步骤:2.2.1. 用VS生成资源文件1. 创建一个工程,我的工程名叫:WindowsApplication2;2. 设置窗体的Localizable为true;此时Language属性已经被设置成了“(Default)”;3. 往窗体上拉一个Text控件,还是老规矩,设置它的值为“Hello World”;4. 设置窗体的Language属性为“German (Germany)”;5. 重新设置Text控件的值为“Hallo Welt”;6. 设置窗体的Language属性为“French (France)”;

8、7. 再设置Text控件的值为“Bonjour le Monde”;8. 保存并编译工程文件。这时VS为我们生成的文件如上图所示。9. 按F5执行程序。生成的文件如上图所示,两个子目录下分别包含资源配件。如“de-DE”目录下包含的“WindowsApplication2.resources.dll”。10. 简单吧,需要做的工作已经完成了,你已经拥有了一个拥有德文和法文的应用程序了,不过具体显示什么就取决于你操作系统的区域配置了。当然你也可以在程序中指定要显示的语言。下面将通过代码的方式详细说明。这是需要的命名空间:/ C#using System.Globalization;using S

9、ystem.Threading;/ C#/ Sets the UI culture to French (France)Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo(fr-FR);Application.Run(new Form1();经过以上处理,我们现在看到的就是法语了,嘎嘎,太简单了,似乎没什么挑战性。不过这种硬编码的方式并不推荐,可以通过用户喜好设

10、定或者是程序设定来更改界面。2.2.2. 添加资源模版并编辑添加Resource File类型文件,这里命名为:WinFormStrings,然后编辑文件如下:法文和德文的添加方法类似,不过需要变动一下文件名,参看下图:大致修改的情况如下所示:resource file namenameValueCommentWinFormStrings.de-DE.resxstrMessageHallo WeltWinFormStrings.fr-FR.resxstrMessageBonjour le Monde资源文件是添加好了,下面讲述如何访问这些资源文件:1. 添加命名空间:using System.

11、Resources;2. 为主窗口添加一个button,不过此时需要注意的是把窗体的Localizable属性设置为False,否则将无法添加。(我这里懒得用新项目,还是前文提到的那个项目)3. 为这个button的Click事件编写代码如下,需要注意的是ResourceManager的参数。且默认的ResourceManager是大小写敏感的,虽然也可以设置忽略大小写,不会有造成性能上的损失。/ C#/ Declare a Resource Manager instanceResourceManager LocRM = new ResourceManager(WindowsApplicati

12、on1.WinFormStrings,typeof(Form1).Assembly);/ Assign the string for the strMessage key to a messageboxMessageBox.Show(LocRM.GetString(strMessage);4. 编译并执行即可显示效果。这时如果要更改显示语言的话,还是使用Thread.CurrentThread.CurrentUICulture = new CultureInfo(fr-FR);这种方式进行更改。3. 本地化DevExprss通过以上知识的了解,我们是时候开始进行DevExpress的汉化工作了

13、J。通常有两种做法,其一是使用Localizer,不过这种方法还是要编写一点代码,觉得还不是很爽,且这种方法的灵活性不够,只能本地化为一种语言。另一种方法是使用前文说到的卫星配件的方式,这种方式无需编写任何代码,只需本地化资源文件之后,编译成资源配件,并把这些配件放在程序的启动目录下即可,就可以改变相应的界面语言,并且可以放置多种语言的配件。这样的好处是你可以任意的控制你的界面显示了,想英文就英文,想中文就中文。真是好处多多啊,那我们快开始吧。DevExpress公司已经为我们准备好了很多东西,官方网站上已经提供了较多语言的资源文件的下载,最新版本的Dev控件,截至2007-3-25该控件的本

14、版是7.1.1,中文的资源文件已经包含如下几个:剩下的工作就是按各自的需要自己汉化了。3.1.1. 使用Localizer下面我们以一个简单的例子描述XtraGrid中的比较符的本地化。代码如下所示:private void Form1_Load(object sender, System.EventArgs e) GridLocalizer.Active = new MyGridLocalizer();public class MyGridLocalizer : GridLocalizer public override string GetLocalizedString(GridStringId id) string ret = ; switch(id) / . case GridStringId.CustomFilterDialogConditionEQU : return =; case GridStringId.CustomFilterDialogConditionNEQ : return ; case GridStringId.CustomFilterDialogConditionGT : return ; case GridStringId.CustomFilterDialogConditionGTE : retur

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号