您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于XML和反射技术的多语言界面研究与实现 正文
基于XML和反射技术的多语言界面研究与实现

基于XML和反射技术的多语言界面研究与实现

点击数:7571 次   录入时间:03-04 11:54:00   整理:http://www.55dianzi.com   嵌入式系统-技术

    为保证飞行安全、降低事故发生率,国内外民航系统普遍重视飞行员的培训工作。目前,国内飞行员培训中心对飞行员操作水平的评估一般都是采用教练员观 察和打分的方式,不够客观和全面。飞行员飞行品质评估系统是一个能够实现自动规范评分的软件,它面向的客户是训练中心的教员、各航空公司的受训飞行员和高 层管理者等,因此,要求软件能够针对不同国家的用户,提供不同语言版本的界面,以便于用户能够更快地接受和使用该产品。

    多语言界面软件的设计,通常采取应用程序和界面文字显示相分离的技术[1]:程序代码独立编写,语言资源从核心代码中分离出来储存到文件,运行时根据用 户需求选择相应的语言资源文件并显示。常用的方法有:(1)将系统支持的语言资源生成一个多语言的可执行文件或独立的资源文件[2]。这种方法比较常用, 但是资源更新时需要重新编译,扩展性差;(2)将支持的语言资源存放在外部语言包中,通过替换语言包达到切换语种的目的[3-4]。这种方法不需要重新编 译程序,外部语言包保持独立,可以动态修改。

    基于软件开发过程中提出的对源程序进行最少的修改,达到尽可能高的效率、可靠性和扩展性的要求,本文利用XML外部语言包实现多语言界面,并且在系统运 行的同时生成语言包文件,便于扩展;对界面文字的导入/导出功能进行了封装处理,避免了代码的冗余,对源程序修改代价最小,后期维护方便;在语言包处理过 程中运用了.NET的反射技术以提取和组装界面提示文字信息,增加了程序的灵活性和直观性。

    1 XML语言文件包格式

    实现多语言界面的一个重要步骤是设计外部语言包文件。可扩展标记语言XML具有自解释性和灵活的结构,可实现跨平台交互,表述任意复杂程度的数据格式和无限量的自定义格式描述符,适合作为语言包的格式。

    用户从软件获取的信息都显示在用户界面上,用户界面由控件对象组成,而语言信息都是由文本控件对象的属性值来体现的。建立XML语言包文件的基本思想, 就是从用户界面中获取所有文本控件的标识和属性值,按照结构类别存放到XML文档中,这样语言包文件即可通过控件的标识映射到用户界面。应用程序的用户界 面通常包含的文本组件如图1所示。

67m

    用户界面要处理的文本控件对象主要有以下部分:

    (1)Framework:菜单栏、工具栏、状态栏等显示文本信息的窗体框架,其文字信息包括各栏框架Bar的Text属性、各栏菜单项baritem 的Caption属性(显示文字)和Hint属性(提示文字)。基于美化界面和方便使用的要求,本文中使用BarManager控件来组装 Framework,在程序中分别遍历其Bar和ItEMS成员即可获取框架和菜单项的信息。

    (2)TextControl:只具有(需要)显示文字功能的控件,如标签控件Label等。

    (3)PromptMsg:人机交互过程中显示的提示信息。提示信息是解决方案中所有窗体共用的,因此,将其以公共静态变量的形式存放在一个全局静态类中。软件运行时,利用C#的反射技术动态获取该类的信息,或创建类的实例并调用和访问这些实例。

    (4)UIText:在程序中需要处理而在界面上没有显示(或需要经过处理后显示)的文字信息,如表格控件GridView的表头等。

    为确保切换语言时能够置换所有的界面文字信息,所有的文本控件对象都必须在XML语言包中有唯一的节点与之对应。本文中设定的XML语言包文件的结构如图2所示。

565n

    根据文本控件在软件界面中的关系,采用树形结构来描述语言环境,以解决方案为根节点;所有的窗体都是解决方案的子节点,其子节点是窗体中各种结构类别的文本控件;解决方案根节点的子节点还包括全局提示信息,其子节点是所有的全局提示信息。

    2 多语言界面的实现

    2.1 软件模块与数据结构设计

    程序设计中采用独立界面独立模块的模式,每个模块均由一个独立界面提供相应功能。.NET中定义Form类为所有窗体类的基类,项目中窗体间的关系如图3所示。

    58

 




本文关键字:技术  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术