admin 管理员组

文章数量: 1086019


2024年4月20日发(作者:钙是矿物质还是微量元素)

长江大学学报(自然科学版) 2008年12月第5卷第4期:理工 一 

Journal of Yangtze University(Nat Sci Edit)Dec.2008。Vo1.5 No.4:sci&Eng 

基于XML和LINQ开发多语言应用软件 

李文华,施晓红 (长江大学计算机科学学院,湖北荆州434023) 

[摘要]在.NET平台下,用C#语言结合LINQ to XML方法将界面显示信息从源程序中分离出来,保 

存在XML文档中并适时调用它及其语言副本,实现应用程序的多语言化。 

[关键词]XML;LINQ;多语言应用软件 

[中国分类号]TP311.1 [文献标识码]A [文章编号]1673~1409(2008)04一N221—02 

随着全球信息水平的不断提高,软件的生产也趋向于国际化。无论是技术的交流,还是个人的使 

用,跨国流通的应用程序需要不同语言的软件界面。而与之相关的“应用程序多语言化”早已不再是新 

话题。在早期,为了达到应用程序多语言化的目的,一般是先开发出一种语言的应用程序,然后根据需 

要再开发出其它语言的版本。由 这种软件界面信息和源程序紧密结合的开发方式,应用软件需要完全 

测试后才能发布,使得每发布一种新语言版本的应用程序时都要修改翻译源程序并重新测试,从而花去 

大量的时间。另外,不同语言版本的应用程序发布时间不同,以及众多的软件版本给软件升级和维护带 

来了很大的困难。笔者在.NET平台下,用C#语言结合LINQ to XML方法将界面显示信息从源程序 

中分离出来,保存在XML文档中并适时调用它及其语言副本,实现应用程序的多语言化。 

1 xML文档生成 

应用程序通常由多个窗体组成,每个窗体往往又包含多个简单或复杂的控件,如果手动书写XML 

文档来描述窗体控件信息的话,可能会极其损时耗力并容易出错。于是,让XML文档能够自动生成就 

显得意义重大。生成XML文档的具体步骤如下:①以项目名称为根节点;②添加以<WinForm 

Name:frmName><WinForm>为根节点的子元素,表示窗体元素(frmName为窗体名称,用以标 

识不同的窗体);③以窗体为单位,遍历其包含的所有组件(包括窗体信息,如名称),以这些组件的 

Name属性值为元素标签、Text属性值为元素值生成的元素作为相应窗体元素的子元素;④重复②③ 

两步,遍历应用程序的所有窗体;⑤在相应窗体中添加子元素 ̄promptInfo) ̄PromptInfo>,表示 

提示信息,程序中的提示信息(如:警告信息、自定义信息等)部分别以节点的形式作为它的子元素。 

因为有些提示信息并不依赖于某个控件存在,所以必要时还得手动添加,以臻完美。 

以生成的XML文档为模板,所有元素的标签不变,翻译全部窗体元素的元素名称成为需要的语言 

版本,制得新的XML文档。这样,就得到了多种语言的XML文档。示例程序的英文界面和中文界面 

的XML文档信息分别如图1和图2所示。 

图1英文界面的XML信息文档 图2中文界面的XML信息文档 

[收稿日期]2008—09—27 

[作者简介]李文华(1965一),男。1986年大学毕业,副教授。现主要从事数据库技术方面的研究工作。 

・ 222・ 长江大学学报(自然科学版) 2008年12月 

2窗体显示信息加载 

这个过程就是将已创建的XML文档中的元素加载到应用程序中,就是XML文档的读取。方法原 

理如下: 

遍历递归窗体上所有组件(包括窗体信息,提示信息等),用UNQ to XML查询XML文档中与各组 

件名称值对应的节点信息,并将其返回,赋值给相应的组件的Text属性或显示信息载体。相关代码如下: 

//获取窗体各对象的Text属性 

public void GetObjeetText(Form winForm) 

{ 

//如果所需语言文件存在,读取并设置语言属性 

if(IsXmlFileExist(1anguage)) 

{ 

//设置窗体各对象的Text属性 

SetObjectText(winForm); 

) 

l 

嚣 

3多语言切换 

语言切换,就是调用不同的XML语言文件,重新加载窗体显示信息。一般可以在安装程序时配置 

它的语言版本,指定要选用的XML文件;也可以在程序运行后,临时加载不同的语言信息(如选项、 

环境配置菜单或对话框等来设置)。 

如以ComboBox为例在程序中切换语言,相关代码如下: 

//选择语言 

private void cboSelectLanguage

SeleetedlndexChanged( 

object sender,EventArgs e) 

{ 

//当前语言为ComboBox框中选中项语言 

language一 

一 一 

((Language) (cboSelectLanguage.SeleetedIndex)) .ToString O; 

//重新加载应用程序的相应语言版本的窗体显示信息 

languageSet:new LanguageSet(this,

一 

language); 

//当前语言状态 

lb1LanguageState.Text:cboSe1ectLanguage.Items[index].ToString(); 

} 

4 示 例 

多语言应用程序示例效果如图 

3所示。 

这样,源程序独一无二、XML 

文档一式多份,既能同时发布不同 

语言版本的应用程序,又可以方轻 

松地添加显示语言。这样不仅大大 

的缩短了软件开发周期,还解决了 

图3简体中文界面和英文界面 

传统多语言应用程序会在后期软件 

升级维护时留下后遗症的问题。 

[编辑] 洪云飞 


本文标签: 语言 窗体 元素 应用程序 信息