摘要:本文基于三资企业的实际需求和软件开发商开发成本的考虑,提出一种新的开发思路:在保证软件系统业务规则和作业流程符合国际惯例的前提下,开发一种集成两种或多种语言环境的应用系统,以满足国内、国际市场的需求;而且,中外双方的使用者可以在同一个系统中任意切换,以便于双方更好地利用软件系统提升企业的管理水平。与传统的软件产品相比较,这种软件产品具有国内外市场空间大、软件开发成本低、软件性价比高等优势。
关键词:国际化;本地化;多语种软件系统;数据库
1 前言
随着一些应用软件的国际化,不同国家的用户对软件的操作界面提出了多语种化的需求。如果软件具有多语种支持能力,则不必为每个语种开发其相应版本,从而降低开发成本,提高软件的使用灵活性。
如何在一套软件系统中解决语言环境不同带来的一系列问题,就要求在软件系统设计时是面向多种语言的,因此,软件编程阶段时就不得不设法解决软件的国际化。
所谓的“国际化”是指把原来为英文设计的计算机系统或应用软件改写为同时支持多种语言和文化习俗的过程。在软件创作的初期,一般的编程语言编译、开发都是只支持英文的,为了适应更广的语言和文化习俗,软件有必要在设计结构和机制上支持多语言的扩展特性,这一过程称为国际化。
一个国际化的软件系统通常具有以下特征:有一个附加的本地化数据及拥有在全世界各个地区执行的能力;文本的元素,比如状态信息或GUI截面的标签,不是直接写在程序中,而是被存储在本地化的数据中,并且能被程序正确的动态的使用;支持新的语言时,不需要修改程序,不需要重新编译;对于文化差异的数据,比如日期和货币,必须根据用户的语言和习惯显示不同的格式;可以被迅速本地化。
2 系统分析
一套软件系统的正常运行,离不开软件本身和操作系统的支撑。现在流行的操作系统有多种语言版本,而且,中文版操作系统已经完全支持中英文的录入和显示,在此无须考虑操作系统的语言支持问题。对软件使用者而言,软件系统操作语言障碍是影响软件使用效率的最大问题。因此,在多语种软件系统设计时,必须提供多语种版本的选择或切换功能。
目前软件界面多语切换主要有两种方法,即使用配置文件和第三方多语种控件。使用配置文件时,多种语种数据存放在用户可见的文本文件中,因而容易造成数据的丢失或损坏。而使用第三方多语种控件时,如果输入大量的多语种数据,这些数据都编译到可执行文件中,导致系统载入速度变慢,性能降低,另外如需修改某些翻译值,则必须重新编译,从而给使用带来不便。本文使用的动态数据库载入方式配合面向对象编程的继承思想,可以避免上述缺陷。在数据库中可以录入大量的多语种数据,减少可执行文件大小,系统启动快;当系统损坏或重做系统后,可以使用数据库恢复机制,恢复系统数据,且不影响其他数据的使用。
作者归纳出与该系统实现有关的两个主要方面:
系统界面主要包括:标题栏、菜单、工具栏、状态栏、MDI子窗体的label标识、按钮标签、快捷键提示等;
人机交互信息主要包括:人机交互的提示信息、帮助信息、出错信息等。
3 系统实现
根据以上分析结果,结合系统开发工具和数据库所提供的功能,笔者提出实现多语种软件系统的一种通用方法:将系统界面信息和交互信息归类合并,动态地从数据库表中提取系统界面和人机交互信息所需的显示内容,并通过改变系统全局变量来提供中英文实时切换功能。
传统的软件开发方法都是把界面中的各种栏位标识在程序设计阶段设定好,这种方法在单一的语言环境下可行,但在多语种集成环境下,界面的语言显示方式由用户选择,因此,必须选择弹性的开发方法。
换一种思路,直接从数据库表中提取系统各个栏位的中(英)文标识,而且,针对每一个所要显示的内容,在相关表中建立两个字段分别代表该标识的两种语言显示内容,通过系统全局变量(boolean类型)来控制两种语言使用环境。
然而,在系统设计和软件实现中,所要考虑的因素较多。如果对每个数据库表及其字段都设置中英文两个方式,再通过程序调用,这种方法可行,但浪费数据库资源,并且在程序实现时较繁琐。
经过对多语言软件系统功能和实现方法的仔细分析和反复实验,并考虑该实现方法的模块化和通用性,提出了一种简单易行而又高效的实现方法,即:新建与中英文语言版本转换相关的三个数据库表单,采用组件方法开发了对应的三个类。
说明如下:
FormName表:该表单与系统主菜单有关,包含所有数据库表单的中英文名称,提供MDI主窗体的菜单显示内容;
FieldName表:该表单包括全部数据库表及其对应的所有字段的中英文内容。提供MDI子窗体中的栏位标识;
SystemInfo表:该表单包含人机交互信息和标题栏、状态栏、按钮标签、快捷键提示等的中英文字段;
ClsMenu类:和TableName对应,包含与中英文菜单转换有关的函数和子程序,其中最主要的子程序是SetMenuCaption,该子程序根据系统全局变量来设置MDI主窗体的中(英)文菜单;
ClsField类:与FieldName表对应,包括与MDI子窗体中的栏位标识有关的函数和子程序,其中主要的子程序是GetFieldName,该子程通过调用FieldName表提取label标识的显示内容;
ClsInfo类:与SystemInfo表对应,其中的主要函数是LoadInfo,负责调用SystemInfo表单,提供系统人机交互信息和标题栏、按钮标签、快捷键提示等的显示内容。
在软件实现时,为了满足不同使用者的要求,该方法提供了两种工作方式:
(1)在用户登录时,可以选择系统的语言环境(中文或英文),系统将以用户所选的语言作为系统运行语言;
(2)在进入系统后,利用热键可自动切换系统中英文语言环境。
其中第二种工作方式的部分实现例程如下: Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
If KeyCode=vbKeyF5 Then改变系统全局变量
ChangeGlobleVar
调用ClsMenu类,初始化中(英)文菜单InitMenu
‘调用ClsInfo类,设置界面中的标题栏
‘按钮、状态栏、快捷键提示信息。
SetWindowInfo
‘调用ClsField类,设置MDI子窗体栏位标识
GetLblCaption
End If
End Sub
4 结束语
以上介绍了中英文语言环境集成的软件实现方法,实际上,这种方法具有很强的通用性。在保障系统商业规则和业务流程满足国际化的前提下,系统地使用语言可以根据需要来拓展。即可以使用日文、韩文、泰文等语言环境,形成双语的中/日、中/韩、中/泰等应用系统,或者只选择其中一种语言环境。这样就为国产软件的国际化创造了必备的前期条件。在系统设计时采用面向对象编程的继承思想提高了代码的利用率,不仅保持了应用软件界面的一致性风格,而且提高了应用软件的开发效率。
参考文献
[1]李华宇.Java的国际化和本地化原理及解决方法[J].微型机与应用,2001(11):32-33.
[2]包竹苇,李淼,张建.Java网络传输中字符编码问题的研究[J]].计算机工程与应用,2007(04):93-95.
[3]许晖,李涓子.J2EE系统国际化问题的解决方案[J].计算机工程,2005(18):79-80.
[4]苏红帆,黄宁宁,韦录丰.Windows环境下软件国际化开发的解决方案[J].广西科学院学报,2006,22(4):279-283.
[5]姜湘岗,章小莉.实现软件多语言用户界面方法之分析[J].北京电子科技学院学报,2006(2):15-18.
[6]刘瑞新,等.VISUAL BASIC程序设计[M].北京:机械工业出版社,2006.
点此咨询学术顾问 快人一步得到答案