某调度平台国际化语言的解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某调度平台国际化语言的解决方案【关键词】调度平台系统;语言;国际化;方案
一、引言
目前该系统的国际化的背景主要来自两个方面,其一,系统只支持中文,无法接收、处理、发送其他语言字符集;其二,由于面向的不同的国家地区有着不同的使用习惯,例如时间、日期、货币的表达方式,阅读顺序(从左到右或从右到左)等,因此必须要对软件进行改动,使之能够处理不同的语言文字,提供本地语言信息,支持不同的使用习惯等。而这种修改如果变动大量的源代码,这就违背了软件工程中组件以及重用的思想,会造成升级困难,伸缩性差,不易维护,成本升高等一系列问题。
1.软件的国际化
软件的国际化(Internationaliza—tion),是指不对软件系统使用者做任何假设的开发方法。这包括了使用者的语言,文字编码方式,习惯数据表达方式,书写方向,宗教信仰等。经国际化方法开发的软件可以按特定的地域环境要求改变自身的表现行为,而这仅仅需要软件后期施工人员作少许的配置变更,而不是更改大量的程序源代码。由于不需要重新编译,从而降低了对施工人员的技术要求,更利于开发团队作为一个有机整体进行分工运作。采用了国际化开发方法,系统的本地化就变得较为简单。
一个真正国际化的软件应该满足:(1)数据的透明性,能处理各种类型的语言。(2)编码的独立性,系统对所处理字符的编码方式不作任何限制。(3)单一的源程序,并支持地域数据库。系统的源程序只有一个版本,该版本经编译、连接后,在运行时能根据不同的地域数据库处理与地域相关的数据。在同一系统中,存在多个地域数据库,用户可选择任一个地域数据库。(4)遵循相关的国际标准,保证程序的可移植性。
2.现状
该调度平台国际化语言的开发,从语言翻译的内容上看可分为四个部分:人机界面、数据库表、程序输出和配置文件。
1)人机界面语言翻译,是指界面上标题栏、菜单栏、工具栏、状态栏、界面内的文字标签、各种对话框和属性框中的文字翻译(由用户录入的画面文件内容一般不存在语言翻译的问题),这部分的语言翻译有比较成熟的QT国际化方案的支持,目前已经在开发当中;
2)数据库表的语言翻译,主要考虑的是数据字典表,如表名表、域名表、菜单表(由
用户录入的表内容一般不存在语言翻译的问题);
3)程序输出的语言翻译,这里的输出即是指打印在后台屏幕或文件中的日志输出,也是指保存到实时库或商用库中的写库输出,同时也是指一个应用程序到另一个应用程序的交互输出;
4)配置文件的语言翻译,程序输出指的是输出的源头来源于程序本身,这里指的是输出的源头来源于配置文件,所以也必须把好配置文件这一关口,才能使得整个系统得到全方位的语言翻译。
二、软件国际化的现行做法
1.QT国际化
QT提供了国际化语言的支持,其语言翻译的过程是:(1)提取源代码中的待翻译文本;(2)翻译人员对提取的文本进行语言翻译并形成翻译文件;(3)程序运行时将加载该翻译文件并动态查找对应的翻译文本进行替换。
QT提供了三种相关的工具:Lupdate是文本提取工具,提取的文本存放在翻译文件.ts 中;Linguist是翻译人员使用的翻译工具,对.ts文件的内容进行翻译;Lrelease对翻译文件.ts进行压缩,形成高压缩比的.qm文件。若要使程序源码中的一个字符串能够被Lupdate 所提取,必须将这个字符串放在QT提供的一个静态函数tr()中,才能够被Lupdate工具识别并提取出来。如:saveButton—>setText(tr)"保存"))。运行时如果翻译文件中有翻译字符,则tr()将尝试使用翻译字符来替换字符串文字,否则它将使用原文本。
此方法的缺点在于只适合应用于qt环境,无法在C++环境中使用。
2.Mac国际化
Mac OS X操作系统是一个国际化的操作系统。Mac的国际化通过束(bundle)来实现的。
束是Mac OS X中重要的文件组织形式,里面分开存放了本地化与非本地化资源。束(bundle)是在文件系统中存放可执行代码及与该代码有关软件资源的一种目录。束目录包含资源,资源包括诸如图像、声音以及某些软件使用的本地化字符串等。束(bundle)可包含多个资源组,每一组按语言、地区以及平台对资源进行分组整合。通过将这些资源组和可执行代码集合成一个单一的包,就能创建一个可在任何被支持的平台上正常运行的应用程序、框架或插件的版本。通过使用此模型,能根据用户的语言预置参数自动地本地化应用程序的人机界面。
Mac OS X中束分为三种类型:1)应用程序(application),应用程序包是一个包含了那些对于启动应用程序所必需的资源(包括应用程序可执行文件)的束。2)框架(framework)框架是一个包含了动态共享库和与该库相关的所有资源(例如:头文件、图像以及文档)的束。3)可加载束(loadable bundle)象应用程序一样,可加载束通常包含可执行代码以及相关的资源。
系统根据需要针对不同语言、国家或文化区域来定制或本地化束。实际上,束在运行时究竟使用哪一组本地化资源是由用户决定的。
国际化
.NET通过CLR来实现国际化。当基于.NET开发的应用程序启动时,CLR (CommonLanguage Runtime)将原程序的执行分成了两个步骤:首先CLR会对托管原代码进行即时编译,转化为IL(Intermediate Language),然后CLR会根据系统开发人员指定的国家或地区设置,从资源包中获取相应的资源文件,最终显示在系统的表现界面上。下图展现了在.NET中实现国际化与本地化的流程,如图1。
4.Unix国际化
Unix国际化可以分成三个部分,如图2所示。
(1)内核的国际化
该层次是指对操作系统的基本组成部分,如设备管理、文件系统进行改造,使之具有独立于具体语言行为的能力。一种典型的实现方法是在内核中采用基于ISO 10646.1标准的