收稿日期:2019-01-07
基金项目:湖南省教育厅科研项目(项目编号:17C0843)
作者简介:王康(1983-),男,湖南株洲人,工程师,本科学历,主要研究方向:软件测试技术、人工智能与机器学习。
一种基于Eclipse Babel 的软件国际化解决方案
(湖南软件职业学院,
湖南湘潭411100)
摘要:介绍了一个基于Eclipse 开发工具的软件国际化项目Babel ,分析了它的设计思想,原理以及整体架构。
作为一个实例,针对Eclipse 插件Jubula 的国际化问题,总结了一种基于Eclipse Babel 的解决方案。关键词:国际化;Babel ;Eclipse 中图分类号:TP311.5
文献标识码:A
A Software Internationalization Solution Based on Eclipse Babel
WANG Kang
(Hunan Software Vocational Institute,Xiangtan 411100,China)
Abstract :Eclipse Babel is a software internationalization tool for Eclipse.Its design principal and overall architecture is analyzed.A solution based on Eclipse Babel is introduced to solve the problem of internationalization of Eclipse plugin Jubula.
Key words:Internationalization;Babel;Eclipse;
计算机软件领域的国际化和本地化是指在与开发环境不同的环境下,使软件对外国或者异文化具有适应能力的手段。国际化常常和本地化作为一对概念加
以讨论。
国际化(Internationalization,常简写为i18n )一般是指在软件工程中,软件不需要经过技术上的变更就能够适应多种不同的语言和地域的技术。本地化(Localization,常简写为l18n )一般是指在软件工程中,通过添加地域固有的组件或翻译文本,使软件和特定地域和语言相适应的技术。
在软件工程发展过程中,很长一段时间里,为了实现软件的本地化和多语言化,往往需要根据需求进行技术上的变更。但是这种方法,
随着软件的规模扩大,需要对应的语言增多,开发以及维护需要花掉很多时间和金钱,从而出现难以适应的问题。
随着90年全,编程语言和操作系统的国际化功能实现了标准化,从一开始就以国际化的标准设计软件,从而使得地域固有的数据追加和最小程序的变更成为可能。
需要进行国际化的对象一般包括:
字符集(标准字符编码,如使用Unicode );文字的书写顺序
(从左到右,从右到左等);使用的语言(一般需要进行翻译)
;书写的格式(数值和日期);时差的问题;
货币的表示。一个国际化的软件一般具有以下的一些特征:(1)通过添加本地化的数据,可执行程序可以在世界范围内执行。
(2)文字内容,包括消息和标签里的文字,不是直接硬编码的,而是存储在外部,
动态的获得的。(3)不需要重新编译就能支持新的语言。
(4)依赖于不同文化的数据,比如说日期和货币,能显示成适合最终用户地区和语言的。
(5)可以被迅速的本地化。
1Java 编程语言的国际化功能
1.1文字表示
Java 编程语言是基于Unicode 字符集的。Unicode
是一个支持世界上所有的主流文字,同是也包含主要技术符号的一种国际标准字符集。初始的Unicode 标准用16位的定长的方式定义字符(也就是UTF-16),后来Unicode 的标准被改成允许使用超过16位的方式定义(也就是UTF-8)。现在所有允许的字符编码范
第27卷第3期
围是:U+0000to U+10FFFF。
Java编程语言里的原始数据类型char,是一个无符号的整数,使用的是UTF-16编码。Java里表示各种字符序列的类(如String类),也是基于UTF-16的。1.2Locale识别和本地化
在Java平台上,一个Locale就是一个语言和地区的组合。它不是一些Locale相关的属性。而是由Locale 敏感的类来保持它的相关信息。通过这种设计,用户和系统对象维护它们的Locale相关资源时的方式是一样的。它们都使用标准的本地化机制。
Java语言里没有一个单独的全局Locale,所有Lo cale敏感的信息可以通过参数指定。对于不需要管理Locale的程序来说,可以使用默认的Locale。
一个Locale对象表示一个地理,政治或文化地区。一个操作如果需要指定Locale来执行,则称它是Lo cale敏感的。比如说表示一个数字就是一个Locale敏感的操作。在Java平台上,没有一个唯一的支持的Locale的集合,这是因为每一个类都有它自己的本地化方式。但是Java运行时支持一些标准的Locale集合。最后,所有的本地化的资源,最好是按不同的Lo cale来分组,然后将它们与程序中那些Locale中性的部分分开。
ResourceBundle类是一个抽象类,用来表示资源的容器。程序员可以创建它的子类,用来包含一个特定的Locale。新的资源可以加入到一个ResourceBundle 的实例中去,或者新的ResourceBundle的实例可以加入到一个系统里而不影响使用它的代码。将资源打包为类,可以让开发者利用Java的类装载技术来寻资源。资源包包含特定Locale的对象,这使得程序员可以写出基本上独立于用户Locale的程序,可以很容易的翻译,可以同时处理多个Locale,可以很容易的添加新的Locales。
ISO-639标准定义了标准语言代码,ISO-3166标准定义了标准的国家/地区代码,一些常见的语言和国家/地区代码见表1:
表1常见的语言和国家代码1.3日期和时间的处理
对于日期和时间而言,Java提供了一种独立于Locale的和时区的类,java.util.Date,它的问题是,它虽然提供了一些处理日期和时间的方法,但是它们与国际化不兼容,因此不建议使用。一般使用Calendar类来进行日期和时间的转换,用DateFormat类来格式化和解析日期字符串。Calendar类是一个抽象类,一般使用GregorianCalendar。TimeZone类是一个抽象类,用来表示时区,以格林尼治标准时间(GMT)为准。Calendar类的子类使用TimeZone来转换本地时间和标准时,因此程序一般不需要直接使用TimeZone类。
1.4文本处理
不同的文化对数据的输出格式有不同的规定,数字,日期,时间,消息等都需要在显示之前进行格式化。Java平台提供了一些灵活的格式化类,可以处理标准的Locale格式和由程序员自己定义的定制格式。这些格式化类还可以将格式化的字符串解析为原来它们所对应的对象。
Format类是一个抽象类,它有几个主要的子类:DateFormat,NumberFormat和MessageFormat,分别用来处理日期和时间,数字,消息。
1.5字符编码转换
Java平台使用Unicode作为它的本地字符编码;但是许多Java程序仍然需要处理其它字符编码的文本数据。Java提供了一些类可以进行许多标准字符编码和Unicode编码的转换。这时,Java程序需要处理非Unicode文本,将它转换成Unicode,处理数据后,再转换回原来的编码。InputStreamReader和Output-StreamWriter类提供了这种类型的方法。
2Eclipse插件架构原理
Eclipse最初由IBM的软件开发团队设计,它的主体是一个Java的集成开发环境,但因为其强大的插件机制,它不仅可以用作其它语言开发,还可以作为一个软件平台使用,在它上面开发各种有用的软件。可以这么说,整个Eclipse就是由插件组成的。下面简单介绍一个整个Eclipse的插件层次关系:底
层是RCP(Rich Client Platform)的untime,lipse. ui;中间是构成Eclipse本身Workbench的大量插件如lipse.swt,lipse.jface,lipse.platform,最上层是一些专用的功能插件。
因为Eclipse采用了Java编程语言编写,并采用了插件的架构,要实现国际化,就需要同时对Eclipse平台和Eclipse插件本身进行国际化。由于插件是由不同
语言代码国家地区代码代号
中文zh中国大陆CN
英语enTW
法语fr中国香港HK
德语de英国EN
日语ja美国US
韩语ko加拿大CA
王康:一种基于Eclipse Babel的软件国际化解决方案·57·
电脑与信息技术2019年6月
的开发人员编写的,出于灵活性考虑,再加上国际化本身的复杂性,Eclipse并没有对国际化作出统一的规定,但是对于文本的翻译,可以借助Eclipse Babel项目来解决。最终的效果是,用户可以用统一的方式对E clipse及其插件国际化。
3Eclipse Babel项目
Eclipse是一个国际化的开发者社区。最大可能地将Eclipse里的项目翻译成各个地方的语言是对每个人都有好处的事情。Babel是一个Eclipse的一个孵化中(Incubation)的项目,它是一些能使Eclipse国际化变得更加简单的工具的集合。全世界对此感兴趣的人都可以提供它们所选择的语言的翻译。
Babel项目包括一些用来使Eclipse的其它项目成果能运行于其它的语言环境下,比如法语,中文,日语等环境下的一些工具。也就是说,Eclipse本身,以及基于Eclipse的插件,都可以用一种统一的方式进行翻译,与Eclipse代表的开源精神相一致,这些翻译的内容也来自网络。Babel现在已经接受了47种语言,40个以上Eclipse子项目的翻译。
3.1Babel语言包安装步骤
第一步,启动Eclipse平台,打开安装向导,'Help'> 'Install '。
第二步,添加Babel项目的p2资源库:http: ///technology/babel/update-site/R0.
16.0/photon/。
第三步,选择要安装的语言包。
第四步,重启Eclipse,如果你的操作系统语言和你要使用的语言包不一致,可以使用。-nl命令行参数来启动Eclipse。最后你将得到一个翻译好的Eclipse。
3.2使用Babel翻译工具
Babel项目提供的主要工具就是Babel Translation Tool,它是一个基于LAMP架构的软件翻译工具,已经集成到了Eclipse,用户可以通过Eclipse的用户账号登录该系统,然后选择翻译相应的语言的内容。翻译的成果最终将通过Babel项目来进行发布。3.3Babel的应用
Jubula是一款基于Eclipse的面向Java与HTML 应用的自动化功能测试工具。可以通过拖拽内建的测试库来创建测试而无需应用记录或是测试编程。Jubula 是Eclipse for Testers包的一部分,但也可以作为独立的RCP应用下载。
可按以下步骤利用Babel实现Jubula的国际化:(1)将可翻译的字符串移到属性文件中
(2)分离依赖于界面的参数
(3)使用合适的Locale敏感的数据格式
(4)使用本地语言测试
(5)创建初始的翻译好的插件
(6)使用Babel项目提供的Jubula翻译
(7)部署Jubula
4结束语
Eclipse Babel项目是一个有效的且成本极低的软件国际化项目,它已经取得了一定的成功。它的创新之处在于使用网络合作的方式,就像开源软件的组织形式一样,它是免费的可以自由使用的。不同插件有相同的内容翻译时,还可以相互借鉴。但它的局限性在于只能解决文本的翻译问题,其它方面的国际化程度,主要看编写插件程序员本身对国际化的重视与否。
参考文献:
[1]李敏.基于struts2-hibernate-spring的Java Web系统国际化
设计与实现[J].软件,2016,37(02):166-169.
[2]刘建国.软件项目国际化和本地化的研究[D].华北电力大
学,2013.
[3]王晓哲.Java中的国际化问题[J].数字技术与应用,2013(01):
189.
[4]朱峰.软件国际化与本地化自动化转换模型和方法[D].浙江
大学,2012.
[5]苏蕴.Java Web开发中国际化问题的设计与实现[J].中国科
技信息,2010(20):112-113.eclipse开发手机app
[6]陈勇.基于J2EE的Web应用系统的多语言实现[D].北京邮
电大学,2008.
·58·

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。