设备故障监测诊断平台多语言技术研究

2012-03-17 07:20陈容红江志农
电子设计工程 2012年11期
关键词:主程序字符串语种

陈 京,陈容红,江志农

(1.北京化工大学 诊断与自愈工程研究中心,北京 100029;2.北京电子科技职业学院 自动化工程学院,北京 100176)

随着时代进步、国际化接轨,软件多语言版本的需求日益增强,设备故障监测诊断平台也同样如此[1]。同时由于嵌入式环境的特殊性,各方面资源都受到一定限制,因此它对多语言技术具有一定的特殊需求。基于Json的多语言实现技术相对于传统方案在速度、空间利用方面有所提高,同时利于拓展与修改,能满足嵌入式多语言的需求,同时通过开发资源管理工具对多语言资源进行管理,释放了开发人员的精力,使其能更集中于核心业务之中。目前该技术已应用于大型故障监测诊断平台与手持式巡检仪中。

1 多语言技术现状及其缺陷

目前的程序多语言技术通过资源文件状态大致可以分为以下3种:

1)资源内嵌式多语言技术;

2)资源文件二进制化;

3)资源文件文本化。

传统的多语言程序多使用内嵌式多语言化技术。即将多种语言所需要使用的资源硬编码到程序代码中,程序启动时通过某个参数来确定使用将哪一种资源展现给用户。

内嵌式多语言技术具有资源加载速度快,占用资源较少的优点。但由于资源定义于程序当中,一旦资源发生变动,便需要重新编译整个项目文件。这会大幅降低软件开发进程,无法满足当前日益增快的软件迭代速度要求[2]。

基于这一点,较新的多语言实现技术将多语言资源从程序中提取出来,作为单独的资源文件存在,即资源文件二进制化。这时的资源文件通常体现为Dll的形式。这种形式的资源文件同样具有资源加载快、占用空间小的优点,同时由于资源文件与主程序相分离,资源方面的改动不会影响到主程序。但这种多语言化技术的资源仍存在资源变动难的问题,资源每次更新后仍需开发人员进行编译发布,这种多语言实现技术通常是通过定义VC的纯资源Dll并提供相应的管理接口来实现[3-4]。

目前最新的多语言技术则属于资源文件文本化。即将资源文件完全与主程序剥离开来,以文本文件的形式存在,主程序通过中间的管理类来与资源文件进行交互,无法直接对资源文件进行读取。这种方法相对于前两种方法来说修改灵活,使用方便并且易于拓展和升级,但由于文本实现机制的不同,往往各种方式的性能、空间占用率等方面都存在很大差别。目前比较通用的是使用Xm l文件来对资源文件进行存储。

Xm l(extensiblemarkup language)是一种用于标记电子文件使其具有结构性的标记语言,可以用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

基于Xml的实现方案将字符串与对应的ID定义与Xml文件中,应用程序通过解析Xm l文件中的信息来获取相应的字符串[5]。其大致思路与本文相同,但Xm l在效率上存在一定问题。Xml文件中存在很多用于解析的附加信息,而一般程序中的字符串量都很大。这些附加信息导致Xml资源文件变得臃肿,占用额外的空间并影响程序的解析速率。

2 Json多语言技术

2.1 Json交换格式

Json(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition-December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++, C#,Java, JavaScript, Perl, Python 等)。 这些特 性 使Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

Json中的对象通常可以分为两种类型:键/值对与值的有序列表。键/值对在Json中的表达方式为:{“Key”:Value}。相对于更加直观的表达式Key=Value,这种表达方式占有更多的空间,但当文件中存在很多键值对时,这种表达方式更易于理解,可读性更强,而且相对与Xml来说,它可以用更小的空间来体现相当的含义[6]。

2.2 多语言方案

Json多语言技术是属于资源文件文本化的一种多语言技术。因此程序与文本化资源之间需要一个接口来对资源进行读取、切换语种等操作。这个接口需要将资源的变化与主程序隔离开来。使得修改资源文件时,主程序不会受到影响。同时,这个接口还需要具有良好的拓展性,便于添加新的语种文件。

基于此,可以采用将可用语种与相关资源路径都定义于Json配置文件中,而将存取接口定义与资源管理Dll中的方案。资源管理Dll中所必须的接口有:获取默认语种,设置默认语种,获取多语言资源,设置多语言资源等。程序获取多语言资源时,只需要与资源管理Dll交互,而不用关心当前的语种、资源文件的种类、路径等信息。

而需要拓展时只需在配置文件中添加相关语种定义及对应资源即可。程序中与语言种类相关的资源通常有字符串、图片、语音等,因此,配置文件一般内容如表1所示。

程序通过接口读取配置文件中的默认语种种类,并寻找对应资源路径,来初始化程序的界面显示。同时程序获取所有可用语种,并向用户提供相应选项来达到实时切换语种的目的。

表1 配置字段Tab.1 Config fields

对于需要使用的资源,程序中定义的是资源的一个ID,程序通过这个ID与当前语种的资源路径名来获取对应的语种资源。相对与图片、语音等资源,字符串的资源定义最为直接,他只需在Json文件中存储与ID相对应的字符串资源,主程序就能通过解析Json文件得到所需的字符串。字符串资源文件所需字段如下:

1)字符串ID:与主程序中定义的字符串ID相对应。

2)字符串值:主程序所想要展现给用户的最终字符串。不同语种统一ID对应的值表达的意义应相同。体现在Json文件中则是如下格式:

图片资源与语音资源相对复杂,因为文本文件中无法直接存储对应的语种资源。本文采取的解决方案时键值所对应的是资源所在的路径。其资源定义字段为:

1)资源ID:和字符串类型一样,与主程序中定义的ID保持一致。

2)资源路径:主程序展现给用户的最终图片或语音文件的路径。

体现在Json文件中,其格式如下:

2.3 资源库维护程序

尽管Json文件定义清晰,利于理解,但仍然不是很贴切自然语言的使用方式,这对资源的维护带来了一定的困难。

专门制作一款用于维护资源库的辅助工具,按照预先定义好的协议将资源信息写入Json文件中。这样可以便利的添加与删除资源,使非开发人员也能熟练的对资源文件进行操作,减小开发量。

辅助工具可以使用与主程序相同的接口库对资源文件进行存取,而不必进行特意的开发。在界面展示上,辅助工具可以借助已有的表格工具,将Json内容转换为csv格式,通过Excel进行显示,方便快捷。

3 对比与实现

3.1 方案比较

由于资源文件内嵌式多语言技术与资源文件二进制化多语言技术均难以对需求的变更进行及时的响应,同时其拓展性也有很大的限制,本文未将其进行对比。本文进行对比的是同为资源文本化的Xml多语言化技术。

在一个程序中多语言资源最主要的部分就是字符串,因此本文主要针对字符串存取的3个方面对其进行的测试比较。

测试字符串均为 “TestString”,测试结果分别如表2、表3、表 4所示。

表2 字符串读取速度Tab.2 Reading tim e

表3 字符串写入速度Tab.3 W riting tim e

表4 资源文件占用空间大小Tab.4 File size

由测试结果可知,在存取速度上,Json多语言技术是Xml多语言技术的2.3倍左右,而Json文件的大小则为Xm l文件的1/2左右。Json多语言技术相对于Xm l技术来说具有很明显的优势,更符合嵌入式开发各种条件都受到限制的环境。

3.2 实现效果

通过实现WinCE系统下的手持式巡检系统的多语言化,证明了该方案的可行性。

实现效果图如图1、图2所示。

4 结 论

图1 中文主界面Fig.1 Chinese interface

图2 英文主界面Fig.2 English interface

国家交流日益频繁,多语言技术发展难以避免。本文针对嵌入式软件平台的特殊性提出的基于Json的多语言实现技术。经过与传统方案的对比,具有切实的可行性与操作性。同时开发对资源文件进行维护的拓展工具的维护方法,可以减小开发人员任务量,使其能专注于核心业务,具有实用性。

[1]宋秋贵,岳峰,石正海,等.一种应用于Unicode设计多语言实时切换应用程序的解决方案 [J].电脑开发与应用,2006,19(3):53-55.

SONGQiu-gui,YUE Feng,SHIIZheng-hai,etal.Solution for designing multilanguage real-time switchover application program with unicode[J].Computer Development& Applications,2006,19(3):53-55.

[2]翼斌.Windows平台下应用软件多语言支持 [J].计算机工程,2004,30(1):163-164.

JIBin.Applicationmulti-lingual supporton windows platform[J].Computer Engineering,2004,30(1):163-164.

[3]唐勇,李秀龙,陈晶,等.多语言用户界面的研究与实现[J].计算机应用研究,2002,4(1):112-113.

TANG Yong,LIXiu-long,CHEN Jing,et al.The study of the technology of multi-language user interface[J].Application Research of Computers,2002,4(1):112-113.

[4]蒋衍君.电力监控软件多语言支持 [J].电力自动化设备,2008(3):91-95 JIANG Yan-jun.Multi-language support of power SCADA software[J].Electric Power Automation Equipment,2008(3):91-95.

[5]王锋,魏晓丽,江开耀.基于XML的C#多语言界面实现[J].计算机工程与设计,2008,29(15):4073-4074.WANG Feng,WEIXiao-li,JIANG Kai-yao.Implemention of multi-language interface on C#based on XML[J].Computer Engineering and Design,2008,29(15):4073-4074.

[6]高静,段会川.JSON的数据传输效率研究[J].计算机工程与设计,2011,23(7):2267-2270.

GAO Jing,DUAN Hui-chuan.Research on data transmission efficiency of JSON[J].Computer Engineering and Design,2011,23(7):2267-2270.

猜你喜欢
主程序字符串语种
《波斯语课》:两个人的小语种
基于文本挖掘的语词典研究
浅谈数控铣削技术代码程序的嵌套方式研究
电控冰箱软件模块化设计
浅谈小语种的学习方法和就业方向
时光倒流 换回PotPlayer老图标
一种新的基于对称性的字符串相似性处理算法
高效的top-k相似字符串查询算法
一种针对Java中字符串的内存管理方案
走出报考小语种专业的两大误区