• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 政法军事 > 正文

    一种基于数据库技术的多语言软件用户界面解决方案

    时间:2021-04-08 07:54:43 来源:达达文档网 本文已影响 达达文档网手机站

    摘要:在分析多语言软件用户界面的多种实现技术的基础上,提出基于数据库技术的多语言软件用户界面解决方案。该方案可以轻松实现不同语言的切换。维护方便。

    关键词:数据库技术;多语言;用户界面;SQL;Unicode

    0 引言

    随着计算机应用的不断深入、全球信息化水平的不断提高,软件产品也正趋向国际化,越来越多的软件产品支持多语言用户界面,能给不同国家和不同语言用户提供本地化的操作环境,有效提高了客户满意度。

    多语言软件用户界面有多种实现技术:多独立应用程序技术、多语言的纯资源DLL技术、多独立单资源的纯资源DLL技术、引用外部语言包技术等。前面三种实现技术都要求更新源代码才能新添语言,用户在不同语言间切换缺少灵活性,语言信息的维护比较困难;第四种实现技术虽然可以自由添加新的语言,但语言信息的维护仍然比较困难。

    本文提出的基于据数据库技术的多语言软件用户界面解决方案,以SQL Server为平台,建立语言方案数据库,将不同语言方案软件界面元素的显示信息存于指定数据库,应用程序从该数据库提取指定语言的显示信息,动态更新软件的用户显示界面。用户可以在不同语言方案间自由切换,而且系统自动即时更新显示界面;开发人员(其实从技术角度讲,并不要求一定是开发人员,任何有授权的用户都可以完成)不需要修改任何源代码就可以自由增删语言方案,轻松维护各语言方案的所有信息。考虑到不同语言的显示效果,在选择数据库管理系统和应用程序开发工具时,一定要选择支撑Unicode字符编码的开发工具。

    1 多语言软件用户界面分析

    软件界面主要有数据信息和提示信息,数据信息一般直接来自数据库,用户可在系统数据录入时实现本地化,因此多语言软件用户界面本地化主要针对提示信息进行。根据提示信息与数据库的相关性提示信息可分为三类:数据库无关提示信息,如按钮标题,菜单标题、对话框信息等;字段相关提示信息,如数据绑定文本框前的标签提示信息;表(数据表、数据查询、数据视图)相关的提示信息,如DBgrid的列标题。

    对于与数据库无关的提示信息,可以建立信息表,将所有提示信息添加到该表;对于与字段相关的提示信息,可以从数据库的syscolumns表提取字段信息,从sysobjects表提取表信息,然后将其存入信息表;对于表相关的提示信息,不需要在信息表存储任何信息,可将其数据源表名和当前语言方案编号存于界面元素当前信息表中,根据数据源表字段和当前语言方案编号信息,在信息表中动态的选择对应字段的当前显示文本。

    信息表建立过程如下:首先,根据syscolumns表和sysobjects表获取字段信息项目,将其存入信息表,根据库软件项目界面确定界面元素;对于数据库无关提示信息的信息项目则通过手工方法加入信息表中。其次,建立界面元素与信息表映射,确定界面元素与信息表对应关系。再次根据当前语言方案确定界面的显示文本。最后将其应用到软件项目中。处理流程如图1所示。

    2 主要表设计

    (1)语言方案表Language_TABLE。用于存储各个语言方案基本信息。其关键字段如表1所示。LID字段自动生成,第一个语言方案的编号为“00001”;L_state有两个值,0表示有效,1表示禁用。

    (2)信息表Message_TABLE。用于存储各个信息元素的不同语言文本,其关键字段如表2所示。对于数据库无关提示信息,M_ID采用系统自动编码;对与字段相关提示信息,M_ID采用“表名_字段名”的规则表示。

    (3)界面元素当前信息表ProjectSelMsg TABLE。用于存储各个界面元素当前语言方案显示信息,其关键字段如表3所示。部分对象多个属性需要本地化,因此系统以属性作为基本单位。P_Object字段用来识别控件所处的位置,在程序中还可以P_Object为选择条件,一次性将该窗体或报表所有界面元素全部从信息表中读出,减少查找时间,提高效率。对于非表相关信息,M_ID用来存储信息编号;对于表相关信息,则保存控件数据源的表名。P_SelText字段属于冗余字段,对于非表相关信息,用来存储该界面元素在当前语言方案条件下的显示文本,减少在信息表中查询时间,以空间换时间;对于表相关信息,则用来存储当前语言方案编号。Type字段有三个值:0表示数据库无关提示信息;1表示字段相关提示信息;2表示表相关信息。

    (4)表间关系,通过LAD字段为表Language_TABLE和表Message_TABLE建立关联。

    3 方案设计

    基于数据库技术的多语言软件用户界面解决方案如图2所示。

    (1)“语言方案选择处理”可放置在应用项目的系统选项设置中,用下拉列表框显示系统所有有效语言方案供用户选择,用户选择某个方案后记录方案编号。当用户确认选择且关闭选项设置窗体时,对于非表相关信息,根据用户所选语言方案编号,用Message_TABLE表对应文本更新ProjeetSetMsg_TABLE表中各个界面元素的显示文本,即P_SelText字段值;对于表相关提示信息,则将选择选择的语言方案编号存于P_SelText。

    (2)“界面元素项目导入”用于确定界面元素的项目,可手工处理,也可让自动扫描窗体的控件,然后手工确定界面元素对应的控件属性即可。它属于临时处理模块,项目导入后即要清除相关代码。将所有界面元素信息全部存入表Project-SelMsg_TABLE中。

    (3)“报表界面处理”放在报表设计模块中。读取Project-SelMsg_TABLE中各界面元素对应的P_SelText值,实现报表界面元素的本地化。

    (4)“窗体界面处理”放在报表设计模块中。对于数据库无关提示信息和字段相关信息,读取ProjectSelMsg_TABLE中各界面元素对应的P_SelText值,实现窗体界面元素的本地化;对于表相关提示信息,则在M_ID中读取表名,获最该表的相关字段,然后根据P_SelText的值,在Message_TABLE表中提取各字段对应的显示文本。

    (5)“语言方案信息维护”主要提供语言方案的增加、修改、删除、状态修改等操作。每增加一个新的语言,除了在Language_TABLE表中增加记录外,还要在Messag_TABLE为每个项目添加此语言文本。删除语言方案时,不仅要删除Language_TABLE表中对应信息,还要删除Message_TABLE表中信息。因为项目界面元素项目多,信息表中对应信息量非常大,录入相对费时,所以要慎用删除功能。通过L_state可控制语言方案的状态,加强对语言方案的控制。

    (6)“数据字段导入”用于自动将应用系统数据库的各个字段添加到信息表中。可以从数据库的syseolumns表提取字段信息,从sysobjects表提取表信息,按“表名一字段名”规则组合,存于ProjectSelMsg_TABLE的P_ID字段。初始导入时LID的值全部设为“00001”;非初始导入时,提示输入该项目已有各语言方案的显示文本。

    (7)“手工添加信息表元素项目”用于处理与数据库无关信息元素项目的确定,信息元素编号自动生成。初始导入时LID的值全部设为“00001”;非初始导入时,提示输入该项目已有各语言方案的显示文本。

    (8)“界面元素与信息表映射处理”用来建立界面元素与信息表的对应关系。对于非表相关信息,将Message_TABLE表中的M_ID值,存入ProjectSelMsg_TABLE对应界面元素的M_ID字段中;对于表相关信息,则将该控件的数据源表名存入M_ID中。

    (9)“信息表维护”主要提供信息元素的修改功能。系统每增加一种新的语言,此表自动按信息元素个数N,新增N条记录,自动填充M_ID元素编号,L_ID自动填充新增语言方案的编号,通过修改功能给每个语言元素输入新语言的对应的文本。

    (10)“导入导出”用于各表数据的导入与导出。提供两种导入方式:覆盖导入和追加导入。

    4 结束语

    本方案已成功应用到广州一软件公司开发的餐饮管理系统。在用户界面语言切换方面,客户满意度高。系统添加新语言操作简便,只要更新相应的信息表即可,这些表独立于程序,信息表的修改不影响程序的正常运行,软件升级方便。本方案还存在一些不足,受开发工具本身的限制,部分元素如系统提供的公共对话框中的按钮等不能完全本地化。

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网