背景技术
随着网络应用的深入和电子商务的广泛应用,门户站点市场成为增长速度最快的计算机软件市场之一,随之对门户站点语言应用的要求也越来越高,应用范围也越来越广泛。现在多语言技术在Web应用中已经相当成熟和广泛,基本上所有的Web应用框架都提供了多语言的解决方案。
图1所示为现有技术中Web界面多语言方案的操作流程,如图1所示,多语言实现的通用方式如下:
S1:为每种语言定义单独的资源文件,资源文件以语言名称简写作为后缀,例如:en、zh分别表示英文与中文。
在每种语言的资源文件中,定义一系列的键值对,例如:在messages_en.properties文件中定义name=Name,在messages_zh.properties文件中定义name=姓名。
S2:为程序界面指定需要装载的多语言资源文件名称;
S3:为界面指定多语言对应的key值。需要显示多语言的界面元素中,使用在多语言资源文件中的key值作为标识,而不直接使用最终的字符串,例如:<label id=”name”value=”#{msgs.name}”/>;
S4:界面渲染;
S5~S7:在程序运行过程中,首先根据当前语言,以及多语言资源文件名称,找到对应的资源文件装载,然后根据界面元素中所制定的key值,在资源文件中找到匹配的键值对,取出实际的值赋给界面元素。
S8:根据赋值后的界面元素以及界面渲染结果将界面展示出来,显示出来的将是定义在资源文件中的实际的值,这样可以达到多语言的效果。
在现有的多语言解决方案中,程序员需要定义多语言资源文件、为界面指定多语言资源文件名称以及为界面元素指定多语言的key值;由于在现有的Web应用中,需要展示多语言的界面和界面元素数量庞大,因此,开发人员要面对大量的多语言数据做重复劳动,所需做的工作不但耗时,而且容易出错。
发明内容
为了解决现有多语言解决方案中的重复劳动问题,提升开发效率,本发明提供一种Web应用中的多语言绑定方法,包括如下步骤:
S1:定义多语言资源文件;
S2:开始界面渲染,解析界面地址,进入步骤S3;
S3:根据当前语言以及界面的地址找到对应的多语言资源文件;
S4:根据界面元素的id,在多语言资源文件中找到对应的实际值;
S5:将实际值赋给界面元素;
S6:根据赋值后的界面元素及界面渲染结果展示所选择语言的界面。
其中,在定义多语言资源文件过程中,用已经存在的界面元素id作为多语言的key。在多语言资源文件定义完成后,以界面地址作为文件名称保存该多语言资源文件。
另一方面,本发明还提供一种Web应用中的多语言绑定系统,其特征在于该系统包括:
多语言资源文件定义单元,用于在Web应用软件开发过程中定义多语言资源文件;
界面渲染单元,用于解析Web界面并调用界面上的组件;
资源文件定位单元,用于根据当前语言以及界面的地址找到对应的多语言资源文件;
实际值定位单元,用于根据界面元素的id,在多语言资源文件中找到对应的实际值;
界面元素赋值单元,用于将实际值赋给界面元素;
界面展示单元,用于根据赋值后的界面元素展示所选择语言的界面。
其中,多语言资源文件定义单元包括:
key指定单元,用于将已经存在的界面元素id作为多语言资源文件的key。
地址匹配单元,用于在多语言资源文件定义完成后以界面地址作为文件名称保存该多语言资源文件。
本发明利用在开发过程中已经定义了的界面元素id,来关联多语言资源文件中的key值的方式,使Web应用在开发过程中可以自动的对界面上的多语言信息进行绑定,在用户切换语言时,自动根据所选的语言显示对应的内容,从而节省开发人员工作,并达到自动实现多语言绑定的目的。
与现有技术相比,本发明具有以下优点:
1.开发人员可以不必为界面指定对应的资源文件名称;
2.开发人员可以不必在界面中,为每个界面元素定义多语言的key;
3.节省了大量的重复劳动,提升开发效率,减少错误率。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提供一种Web界面多语言方案,据具体表现为一种自动对界面多语言进行绑定的系统,包括多语言资源文件定义单元、界面渲染单元、资源文件定位单元、实际值定位单元、界面元素赋值单元和界面展示单元。
多语言资源文件定义单元用于在Web应用软件开发过程中定义多语言资源文件,其中包括key指定单元和地址匹配单元,其中key指定单元用于将已经存在的界面元素id作为多语言资源文件的key,地址匹配单元用于在多语言资源文件定义完成后以界面地址作为文件名称保存该多语言资源文件。
在资源文件定位单元、实际值定位单元中,分别根据当前语言以及界面的地址找到对应的多语言资源文件,然后根据界面元素的id在多语言资源文件中找到对应的实际值。
界面元素赋值单元将实际值定位单元中找到的实际值赋值给界面元素,然后由界面展示单元展示界面。
本发明并未从根本上改变多语言绑定的运作机制,而是通过界面地址与资源文件名称作为关联来获取资源文件;通过id与多语言资源文件key的对应方式,自动绑定多语言;由此来节省开发人员为界面元素指定多语言资源文件名称和为界面元素指定多语言对应的key值的工作。
下面以一个具体的多语言应用场景为例对本发明的Web界面多语言方案进行说明。
图3展示了一个普通的Web应用的界面,界面上包含三个功能按钮。当使用中文的操作系统访问这个网页的时候,按钮上应该显示的文字为“按钮1”、“按钮2”、“按钮3”(图3a);当使用英文的操作系统访问这个网页的时候,按钮上应该显示的文字为“Button1”、“Button2”、“Button3”(图3b)。
对此多语言应用的标准需求来说,目前业界的常规解决方案如下:
(1)定义多语言的资源文件
多语言的资源文件一般以Key=Value形式定义在扩展名为properties的文件之中,并且,资源文件需要被放置在如图4所示的应用的类路径中。在图4的示例中,定义了三个多语言资源文件,分别是如图5所示的默认(图5a)、英文(图5b)、中文(图5b)三个,位于应用的类路径下的resources目录中。
(2)为界面元素指定资源文件的key
定义好了多语言资源后,需要绘制如图3所示的界面部分,界面最终表现的形式也是一个文件,一般以jsp或xhtml为扩展名,页面包含了一个装载多语言资源的组件和三个按钮组件,图4所示示例所用的界面文件表现如6所示。
上述(1)、(2)属于开发期的步骤,执行主体为Web应用开发者;运行期的执行主体为Web应用服务器以及各个服务器端组件,步骤如下:
(3)客户端发起调用
客户端在浏览器中输入请求地址,请求demo这个页面,例如:
http://localhost/webapp/pages/demo.xhtml
(4)服务器端收到访问请求
浏览器发送请求时,通常会将本地系统的语言,放入到请求头中发送给服务器端。服务器端收到访问请求,将请求中的“本地系统的语言”视之为“当前语言”。
(5)界面渲染
界面渲染就是服务器端对界面进行界面解析、调用界面上的各个组件等的行为。服务器端根据请求的地址(在本实例中为“pages/demo.xhtml”)开始界面渲染,首先找到对应位置的demo.xhtml并解析,发现其中含有4个组件(即前述“一个装载多语言资源的组件和三个按钮组件”),然后服务器端对这4个组件依次进行调用。
(6)从多语言资源组件中,找到对应的多语言资源文件,然后从多语言资源文件中找到实际值
该步骤的执行主体为多语言装载组件。当“多语言装载组件”(图6中的loadResource)被服务器调用时,根据多语言资源文件的位置参数(见图6中的“basename=resource.Messages”)以及当前的语言(如果没有则为默认)在应用的类路径中找到对应的资源文件,例如:如果当前语言为英文,则找到“Messages_en_US.properties”文件,如果当前语言为中文,则找到“Messages_zh_CN.properties”文件,如果没有获取到“当前语言”,则默认装载“Messages.properties”文件。
当资源文件被唯一确定了之后,“多语言装载组件”将这个资源文件进行解析并按照指定的名称(见图6中的“var=msgs”)创建一个键值对类型的容器变量,该容器具备根据指定的key获取对应值的能力。
(7)赋值
该步骤的执行主体为按钮组件。当执行到按钮组件时,由于页面为其value属性指定了值(值为#{msgs.label1}),按钮取出了这个值并经过计算后,赋给自身的value属性。“#{msgs.label1}”这句话的意思是说:“从名称为msgs的变量中取出key为label1的值”。由于msgs变量已经在第(6)步中被定义,经过第(6)步的处理,目前的msgs变量中已经具备了3个元素,因此能够取得key等于label1对应的值为Button1或者“按钮1”。
(8)展示界面
最后,服务器端根据赋值后的界面元素以及界面渲染结果,将最后的结果展示给客户端浏览器。
针对上述传统的多语言机制,本发明在定义多语言资源文件环节对其作出改进,从而能够以以下更为简便的步骤实现上述的例子,在节约开发资源的同时获得同样的开发效果。
图2是本发明中Web界面多语言方案流程示意图。如图2所示,本发明提供的Web应用中多语言的自动绑定方法包括如下步骤:
S1:定义多语言资源文件;
如图7所示,本示例中将多语言名字定义为demo并放置在pages的目录下,是为了与请求的页面映射,当客户端请求demo.xhtml页面时,需要在浏览器地址栏内输入http://localhost/webapp/pages/demo.xhtml,此时,服务器端就能够知道客户端试图访问的是demo.xhtml页面,而多语言资源与页面位置定义为一致之后,在发生请求时则可按照一样的原理找到页面所需的多语言资源文件。
多语言资源文件的内容如图8所示,在多语言资源文件中,key值是特殊的,其意义表示为“元素id.元素属性名”,例如图8中所示的btn1.value、btn2.value、btn3.value,这样在运行期的时候,就可以通过解析key的值,来实现为元素赋值的目的了。
根据上述不同与传统方式的多语言资源文件的内容,可以看到图9表示的界面文件中也没有加入如图6所示的传统方式中的多语言的组件,也没有指定多语言资源文件的位置,以及按钮应该显示什么文字。
大部分情况下,界面元素的id是需要指定的,但在本发明中,如步骤S11所示,在定义多语言资源文件的过程中,使用已经存在的界面元素id作为多语言的key(如图8所示),可以省略现有技术中“为界面元素指定多语言的key”(如图6所示)的步骤,从而达到开发人员无需为界面元素定义多语言key值即可实现界面多语言的目的。此外,在Web应用开发过程中,界面元素一旦确定,则其地址也相应的确定,如orderList表示订单列表的界面,本发明通过命名约定的方式,在多语言资源文件定义完成后,以界面地址作为文件名称保存(步骤S12),可以省略现有技术中在执行期的时候“为界面指定多语言资源文件名称”(如图6所示)的步骤。因此就得到了如图9所示的比传统方式下更为简单的界面文件。
S2:界面渲染;
界面渲染行为是一种服务器框架的行为,属于现有技术中的一种框架技术,在此不再赘述。用户打开一个Web界面时,开始界面渲染;界面渲染开始后,服务器端会进行界面解析、调用界面上的各个组件等行为。在现有技术中,需要界面渲染至界面上的多语言资源组件时,才会进入找寻对应多语言资源文件的步骤;而在本发明中,由于以界面地址作为多语言资源文件文件名称保存,因此在解析请求的界面地址时,就能够进入找寻对应多语言资源文件的步骤(S3)。
S3:根据当前语言以及界面的地址找到对应的资源文件;
例如,请求的界面地址为:http://localhost/webapp/pages/demo.xhtml当前语言为“简体中文”(当前语言对应码为zh_CN),则可以找到对应的资源文件为应用的类路径目录下的pages子目录下面的demo_zh_CN.properties文件。
其中,“当前语言”是找到多语言资源文件的一个必要条件。“多语言资源文件名称”+“当前语言”可以找到唯一的一个物理文件。例如:每种语言都对应着一个物理文件,如中文对应Messages_zh_CN.properties、英文对应Messages_en_US.properties。多语言资源文件名称为“Messages”,当前语言为“zh_CN”那么才能决定当前的资源文件为“Messages_zh_CN.properties”
S4:根据界面元素的id,在资源文件中找到对应的实际值;
例如,界面元素的id为btn1,则在资源文件中找到了btn1.value=按钮1,实际值为“按钮1”。
S5:将实际值赋给界面元素;
在S4步中找到了btn1.value=按钮1,意味着需要把“按钮1”这个实际值赋值给btn1这个组件的value属性。
S6:展示界面;
根据赋值后的界面元素以及界面渲染结果,最终向用户展示所选择语言的界面。
由上述示例的对比可以看出,本发明提供的Web界面多语言方案无需在每个页面中定义多语言加载组件;也无需为每个用到多语言的地方都去显式的进行装载多语言资源的行为;并且能够自动根据以下规则进行多语言的绑定:
●多语言资源文件的位置映射规则,根据当前请求页面的地址进行映射;
●多语言资源文件的key是特殊的key,映射为需要作用在页面元素上的ID。
从而在用户切换语言时,能够借助上述绑定自动根据所选的语言显示对应的内容,达到自动实现多语言绑定的目的。据此有效解决了开发人员在Web应用开发过程中的重复劳动问题,大大减轻的工作量,提升开发效率。
以上对本发明所提供的一种自动对界面多语言进行绑定的方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。