一种多语种菜单实现方法 【技术领域】
本发明属于菜单实现方法,具体涉及一种多语种菜单实现方法。
背景技术
目前计算机程序的工作语言多由操作系统的工作语言界面确定,有些程序可以在不同语言方式下工作,例如windows、VC++等。现有的多语言菜单基本都是在编写程序的过程中固定该程序使用菜单的语言,同时该菜单文件随同编写的程序一同编译,形成可执行文件。这种菜单实现方法的缺点在于:①大部分程序仅支持一个语种的菜单。②即使在编写过程中预先设置了多个语种的菜单,在实际使用过程中由于受到操作系统语言的限制,往往只能正确显示与操作系统语言相同的菜单。③菜单语种固定,如果需要增加新语种的菜单就必须在原文件中增加语言内容,然后对整个程序进行编译,才能生成具有新语种菜单的可执行程序。另外一种情况是为改变程序菜单的显示语言安装新的语言包,安装过程时间长,安装过程非常容易产生错误。总之增加菜单语种过程繁琐,耗费时间长。④使用多语种菜单的程序为网络程序时,使用该程序的所有用户往往只能使用同一语种的菜单,对需要使用不同语种工作的人来说非常不方便。⑤切换语言过程繁琐,如前所述当工作人员需要切换菜单语言时,需要安装新语言的升级包。切换完成后如果还想使用第三种语言,仍需再次安装第三种语言的安装包。而且如果希望使用原先使用过的语言,也需要重新安装该语言的语言包。切换过程非常繁琐,造成时间和人力不必要的浪费。除了上述缺点外,现有的带有语言切换功能的程序基本都为windows平台下的程序,在unix平台下尚无对菜单进行语言切换的方法。
【发明内容】
本发明的目的是提供一种可以实时进行语言切换的多语种菜单实现方法。
本发明是这样实现的:一种多语种菜单实现方法,包括如下步骤:
(1)针对不同语种制作菜单文件、帮助信息文件和错误与提示信息文件;
(2)根据需要将所选语言的相关文件与执行程序关联
将所选语言的相关文件与执行程序关联;当需要进行语言切换的时候,断开现有语言相关文件与执行程序的关联,建立执行程序与所需语言的关联。
如上所述的一种多语种菜单实现方法,其中,所述的步骤(1)可以通过下述步骤实现:
(1.1)编写安装文件
安装文件共两个,分别为name.ist和namee.ist,其中name.ist文件在菜单名下面按照菜单语种的顺序依次记录各个语种的帮助信息,每个语种帮助信息的末尾用“.”表示结束,在帮助信息后面依次排列每个菜单选项对应的不同语言的翻译;namee.ist用于记录与该菜单选项相应的信息;
(1.2)形成菜单文件、帮助信息文件和错误与提示信息文件
读入namee.ist文件的每一条信息,按照语言种类分别依次写入到相应语种的nameN.err文件中,然后打开文件name.ist读入菜单号,各语言菜单名,接着读入该菜单下相应语种的帮助信息,并将其写入相应帮助信息文件,生成帮助信息文件nameN.hlp,同时记下此菜单帮助信息在帮助信息文件中的记录位置,当读到‘.’时开始将帮助信息写入到下一个语种的帮助信息文件中,再读到‘.’时开始读入该菜单的中文和英文菜单选项,并将各个选项依次写入到每个语种的菜单文件中,再读到‘.’时,此菜单所有信息处理完成。
使用本发明的效果是:通过将菜单语言文件与执行程序分开开发,可以实现同一个执行程序包含多个可选择语言菜单的目的。菜单语言仅依赖于菜单相关文件组中语言的编写,因此无论操作系统为何种语言菜单都能显示正确的语言。当需要增加新语种的菜单时,仅需要制作相应的菜单文件组,而且菜单文件组的制作与执行程序分离,制作好的菜单文件组可以实时与执行程序关联,继而实现菜单语种的实时切换。另外菜单文件组与操作系统无关,因此无论windows平台还是unix平台,或其它操作系统平台都可以使用该方法方便地实现菜单语言的切换。
【附图说明】
图1是多语言辅助文件的结构示意图;
图2是另一个多语言辅助文件的结构示意图;
图3是形成菜单文件组的流程示意图;
图4是菜单文件的结构示意图;
图5是菜单文件组与执行程序关联的示意图。
【具体实施方式】
下面结合具体实施方式对本发明进行进一步说明。
在对本发明提供的方法进行说明前,首先说明本发明方法中菜单结构的定义方式:每个菜单除了有菜单名字和对应的菜单选项外,还都有一个唯一的菜单编号,菜单编号定义了菜单系统的树状结构,0000是主菜单。主菜单的选项1,将得到1000菜单,选项2将得到2000菜单。例如:
0000:1000:1100
1200
2000:2100
2200:2210
2220
菜单选项中可以有各种输入数据要求,如输入数据的长度和类型,可以是整型,实型或字符型数据。
一种多语种菜单实现方法,包括如下步骤:
(1)针对不同语种制作菜单文件、帮助信息文件和错误与提示信息文件
上述三个文件可以通过下述步骤得到,也可以通过其它方式得到,只要三个文件的格式符合下述要求即可:
(1.1)编写安装文件
安装文件共两个,分别为name.ist和namee.ist,这两个安装文件的格式分别如图1和图2所示,它们也称为多语言辅助文件组。其中name.ist用于记录菜单的基本信息,例如菜单号,中文菜单名,英文菜单名(如果需要还可以增加法文、德文等)。在菜单名下面按照菜单语种的顺序依次记录各个语种的帮助信息,每个语种帮助信息的末尾用“.”表示结束。在帮助信息后面依次排列每个菜单选项对应的不同语言的翻译,例如若图1中的“中文菜单选项1”为“打开”命令时,在其下方的“英文菜单选项1”就应为“open”。在菜单选项同一行可以增加中括号,中括号中的长度为该菜单选项输入参数的长度,在中括号后为一个数字,该数字表示中括号中输入参数的类型,数字为1~4中的一个,其中1表示参数为整型,2表示参数为实型,3表示参数为字符串,4表示参数为布尔型,可以是Y(yes)或者N(no)中的一个。在数字后面为相应语种的提示信息,例如菜单选项需要带字符串实型参数时,由中括号所选定的长度确定该实行参数的长度,用数字“2”表示参数类型为实型,中文提示信息可以写为“请输入实型参数”,或者其它类似信息。依照上述规则填写完全部菜单选项的各语种信息。当然也可以在该文件中增加其它菜单的内容,如图1中的“另一个菜单内容”。namee.ist用于记录与菜单选项不直接相关的信息。如图2所示,信息种类代码有三种,分别用数字1、2、3表示,其中1表示警告,2表示错误,3表示提示。中文信息或英文信息就是信息种类的具体内容,例如当信息种类代码为3时,中文信息或英文信息就是提示信息的具体内容。其余菜单选项也依次类推,直到将菜单中的全部菜单选项都定义完成。
(1.2)形成菜单文件、帮助信息文件和错误与提示信息文件
其中菜单文件用nameN.men表示,帮助信息文件用nameN.hlp表示,错误与提示信息文件用nameN.err表示。这三个文件的文件名中都有一个语言代码N,对不同的语言用不同的N表示,例如00表示中文,01表示英语,那么name00.men,name00.hlp和name00.err为中文菜单的相关文件,name01.men,name01.hlp和name01.err为英文菜单的相关文件。如果还有其它语种,按照此规则继续类推。
形成菜单文件、帮助信息文件和错误与提示信息文件的过程如下:下面以name.ist和namee.ist中仅有中文和英文信息为例进行说明。读入namee.ist文件的每一条信息,按照语言种类分别依次写入到name00.err和name01.err文件中。然后打开文件name.ist,依照如图3所示的顺序进行执行,具体为:首先读入菜单号,中英文菜单名,接着读入该菜单下的中文帮助信息,并将其写入中文帮助信息文件,生成帮助信息文件name00.hlp,同时记下此菜单帮助信息在帮助信息文件中的记录位置,当读到‘.’时开始将帮助信息写入到英文帮助信息文件name01.hlp中,再读到‘.’时开始读入该菜单的中文菜单选项,再读入该菜单的英文菜单选项,并将各个选项依次写入到中文菜单文件name00.men中,以及英文菜单文件name01.men中,再读到‘.’时,此菜单所有信息处理完成,再转到下一个菜单的处理工作。直到所有菜单处理完成,就完成了生成帮助信息文件.hlp的工作。同时所有菜单文件的选项也都记录下来了。然后把已经得到的各菜单控制信息依次写入到菜单选项后面,最后形成的菜单文件nameN.men的结构如图4所示。菜单文件分为三部分:1)第一个记录是三个内容,它是控制信息,包括有菜单个数N和菜单总选择数NS;2)是所有菜单的选项清单,共有NS个记录,从第二个记录开始;3)是每个菜单的控制信息内容,它包括有每个菜单的菜单名字,菜单选项的记录位置,选项个数,帮助信息在帮助信息文件中的记录位置,帮助信息长度,它是从NS+1个记录开始的,共有N个记录。
至此所需的菜单文件、帮助信息文件和错误与提示信息文件制作完成。
(2)根据需要将所选语言的相关文件与执行程序关联
将所选语言的相关文件与执行程序关联,如图5所示将中文文件组与执行程序相关联时,根据name00.men,name00.hlp和name00.err提供的相关信息,菜单就显示为中文,帮助信息与错误提示等信息也显示为中文。关联通过下述过程实现:程序执行时,首先从菜单文件的第一个记录读入菜单个数N和菜单总选择数NS。然后读入每个菜单的菜单号并记录下该菜单控制信息在菜单文件中的记录位置。接下来的工作是根据用户的选择确定使用的菜单号,并由菜单号和刚刚得到的记录位置,再由.men文件直接得到:菜单名字,菜单选项的记录位置,选项个数,帮助信息在帮助信息文件中的记录位置,帮助信息长度。这些信息保证了可以正确的显示所有菜单信息。确定菜单号的方法是由当前的菜单号和用户的选择号确定,如用户的选择不是零,则把当前的菜单号中的第一个“0”改为用户的选择号,如“4500”时用户选“3”,则当前菜单号变为“4530”。如果用户的选择是零则把当前的菜单号中的第一个非“0”字符改为“0”,同样,如“4530”时用户选“0”,则当前菜单号变为“4500”。除主菜单“0000”的“0”选择是终止程序执行外,所有菜单的“0”选项全部是退回到上一级菜单去。
当需要进行语言切换的时候,通过热键或命令可以断开现有语言相关文件与执行程序的关联,建立执行程序与所需语言的关联,这样就方便的实现了菜单语言的实时切换。