发明内容
本发明实施例提供一种处理软件资源的方法及装置,用以解决现有技术中处理国际化软件资源的过程较为繁琐的问题。
本发明实施例处理软件资源的方法包括:
确定通用JavaScript文件中的替换标记,其中,所述通用JavaScript文件中对应软件资源文件中不同语言的内容的位置为替换标记;
针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容。
较佳地,确定通用JavaScript文件中的替换标记,包括:
通过对所述通用JavaScript文件进行扫描,确定所述通用JavaScript文件中的替换标记。
较佳地,针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容之前,还包括:
将所述通用JavaScript文件对应的国际化软件资源文件按照不同语言,划分为不同语言的软件资源文件。
较佳地,所述替换标记包括用于识别替换标记的占位标识符;
所述确定通用JavaScript文件中的替换标记,包括:
根据所述占位标识符,确定所述通用JavaScript文件中的替换标记。
较佳地,所述替换标记包括:软件资源文件内容对应的关键字信息;
针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容,包括:
针对一种语言的软件资源文件,查找该软件资源文件中与所述替换标记的关键字信息对应的软件资源文件内容,并将所述替换标记替换为查找到的软件资源文件内容。
本发明实施例处理软件资源的装置,包括:
确定模块,用于确定通用JavaScript文件中的替换标记,其中,所述通用JavaScript文件中对应软件资源文件中不同语言的内容的位置为替换标记;
替换模块,用于针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容。
本发明实施例通过确定通用JavaScript文件中的替换标记,针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容,从而自动将通用JavaScript文件转换生成对应不同语言的JavaScript文件,解决了现有技术中处理国际化软件资源的过程较为繁琐的问题。
具体实施方式
本发明实施例通过确定通用JavaScript文件中的替换标记,针对一种语言的软件资源文件,将通用JavaScript文件中的替换标记替换为该软件资源文件中对应该替换标记的软件资源文件内容,从而自动将通用JavaScript文件转换生成对应不同语言的JavaScript文件,解决了现有技术中处理国际化软件资源的过程较为繁琐的问题。
下面结合说明书附图对本发明实施例作进一步详细叙述。
如图1所示,为本发明实施例处理软件资源的方法流程图,包括:
S101:确定通用JavaScript文件中的替换标记,其中,该通用JavaScript文件中对应软件资源文件中不同语言的内容的位置为替换标记;
S102:针对一种语言的软件资源文件,将通用JavaScript文件中的替换标记替换为该软件资源文件中对应替换标记的软件资源文件内容。
本发明实施例的执行主体可以为服务器,也可以为独立的计算机设备;
本发明实施例的基本思想是采用替换标记对通用JavaScript文件中需国际化的内容进行标记,需国际化的内容也即对应不同语言的软件资源文件内容,在需要对应一种语言的专用JavaScript文件时,只需将该通用JavaScript文件中的替换标记替换为该替换标记所对应的针对该种语言的软件资源文件内容,采用同样的方法,可以分别得到对应不同语言的专用JavaScript文件。采用本发明实施例的方法,在进行JavaScript文件维护时,只需维护通用JavaScript文件,而无需维护针对不同语言的多个专用JavaScript文件,大大降低了维护负担。
较佳地,替换标记包括占位标识符;
步骤S101中,确定通用JavaScript文件中的替换标记,包括:
根据占位标识符,确定通用JavaScript文件中的替换标记。
较佳地,替换标记包括:软件资源文件内容对应的关键字信息;
步骤S102中,针对一种语言的软件资源文件,将通用JavaScript文件中的替换标记替换为该软件资源文件中对应替换标记的软件资源文件内容,包括:
针对一种语言的软件资源文件,查找该软件资源文件中与替换标记的关键字信息对应的软件资源文件内容,并将替换标记替换为与该替换标记对应的查找到的软件资源文件内容。
本发明实施例中的替换标记,也可称为占位符,包括占位标识符和关键字信息Key,如,对于替换标记“${hello.msg}”,其中,“${}”为占位标识符,可用于识别替换标记,而文本数据“hello.msg”为该替换标记的Key,即关键字信息,该替换标记就是通过Key来对应软件资源文件中不同语言的内容的。在具体实施过程中,在开发的软件资源文件中,采用关键字信息“hello.msg”来对实际不同语言内容进行存储。例如:采用“hello.msg=Goodmorning{0}!”来对英文语言内容“Good morning{0}!”进行存储,采用“hello.msg=早上好,{0}!”来对中文语言内容“早上好,{0}!”进行存储。
在具体实施过程中,可以首先对通用JavaScript文件进行解析,也即查找通用JavaScript文件中的替换标记,在查找到由“$”开始并用“{}”组合而成的占位符,也即替换标记时,记录下这些替换标记,根据这些替换标记检测国际化软件资源文件,当检测到国际化软件资源文件中的软件资源文件内容与通用JavaScript文件中替换标记的Key一致时,记录该与通用JavaScript文件中的替换标记对应的软件资源文件内容,这里的国际化软件资源文件是包括多种语言的软件资源文件的统一软件资源文件;最后,针对一种语言,将通用JavaScript文件中的每个替换标记替换为替换标记对应的该语言的软件资源文件内容,得到对应该语言的专用JavaScript文件。
在国际化软件资源文件中,有些数据可能是来自于程序动态的,所以在国际化软件资源文件中存在数字占位符,这种数字占位符是用一对“{}”标识中间带一个数字来组成,如国际化软件资源文件“welcome.msg=欢迎您,{0}!”中的“{0}”,国际化软件资源文件中的数字占位符被包括在软件资源文件内容中一起替换掉通用JavaScript文件中的替换标记。
在具体实施过程中,可采用format函数实现对软件资源文件中带数字标识的占位符的动态替换,如采用背景技术生成的一段通用JavaScript文件中的代码为alert('欢迎您,Bill!');采用本发明实施例生成的代码为alert(format('${welcome.msg}',’Bill’));这里的format函数是辅助实现对国际化软件资源文件中的数字占位符进行动态替换的函数,采用format函数,国际化软件资源文件“welcome.msg=欢迎您,{0}!”中的“{0}”将被替换为“Bill”,当有多个需要动态替换的参数时,依次用“,”分隔,本发明实施例中,国际化软件资源文件中的动态参数依次用数字占位符进行占位。
如图2A所示,为本发明实施例中文专用JavaScript文件的代码生成示意图;如图2B所示,为本发明实施例英文专用JavaScript文件的代码生成示意图;在本发明实施例中,分别采用中文和英文的软件资源文件,如messages_zh_CN.properties和messages_en.properties的内容替换通用JavaScript文件中的替换标记后,得到分别对应中文和英文的专用JavaScript文件的代码。这里,假设通用JavaScript文件名称为xxx.js,生成的中文专用JavaScript文件名称为xxx_zh_CN.js,生成的英文专用JavaScript文件名称为xxx_en.js。采用本发明实施例生成对应不同语言的专用JavaScript文件后,在需要引入JavaScript文件的JSP位置处,通过获取的客户端语言标识,如上述文件名称中的_zh_CN、_en,通过该语言标识动态引用相应语言环境对应的专用JavaScript文件。
较佳地,确定通用JavaScript文件中的替换标记,包括:
通过对所述通用JavaScript文件进行扫描,确定该通用JavaScript文件中的替换标记。
在具体实施过程中,可以首先判断是否需要查找该通用JavaScript文件中的替换标记,也即针对某个通用JavaScript文件,判断该通用JavaScript文件是否已经生成对应不同语言的专用JavaScript文件或该通用JavaScript文件是否被修改过,若该通用JavaScript文件未生成对应不同语言的专用JavaScript文件或该通用JavaScript文件已经被修改过,则需要查找该通用JavaScript文件中的替换标记。具体地,可以采用JavaScript文件解析器读取通用JavaScript文件后,对该通用JavaScript文件进行逐行扫描,检查是否存在需要被软件资源文件内容替换的替换标记。
较佳地,针对一种语言的软件资源文件,将通用JavaScript文件中的替换标记替换为该软件资源文件中对应替换标记的软件资源文件内容之前,还包括:
将通用JavaScript文件对应的全部软件资源文件按照不同语言,划分为不同语言的软件资源文件。
在具体实施过程中,首先读取该通用JavaScript文件对应的国际化软件资源文件,将该国际化软件资源文件按语言分类,对每一种语言下的软件资源文件进行扫描,当检测到有软件资源文件内容与需要解析的通用JavaScript文件中替换标记的Key一致时,确定该软件资源文件内容为需要替换该替换标记的内容。
关于软件***的维护,其中最大的问题就是开发代码的冗余,本发明实施例中在软件***维护中,针对一个国际化软件资源文件,只需维护该国际化软件资源文件对应的通用JavaScript文件,而无需维护对应不同语言的专用JavaScript文件;采用本发明实施例可以将软件开发中唯一份代码,即通用JavaScript文件的代码,自动转换成对应不同语言的代码,如此可以避免大量的冗余代码,有效的降低了要维护的代码。另外,本发明实施例还提高了对占位符的定义能力,在软件资源文件中,通过对数字占位符的定义,实现了对动态参数的不同语义表达。
如图3所示,为本发明实施例根据通用JavaScript文件生成对应不同语言的专用JavaScript文件的方法流程图,包括:
S301:判断是否需要查找通用JavaScript文件中的替换标记,如果需要则进入步骤S302,否则,结束操作;
这里,判断是否需要查找通用JavaScript文件中的替换标记,也即判断是否已存在对应不同语言的专用JavaScript文件或该通用JavaScript文件是否被修改过,若不存在对应不同语言的专用JavaScript文件或该通用JavaScript文件已被修改过,则需要查找通用JavaScript文件中的替换标记。
S302:查找通用JavaScript文件中的替换标记。
S303:检测国际化软件资源文件中对应替换标记的软件资源文件内容;
在具体实施过程中,首先读取国际化软件资源文件中的全部软件资源文件,将全部软件资源文件按语言分类,分别划分对对应不同语言的软件资源文件,对每一种语言下的软件资源文件采用扫描的方式进行检测,当检测到软件资源文件内容与通用JavaScript文件中替换标记的Key一致时,确定该软件资源文件内容为需要替换该替换标记的内容。
S304:根据检测到的软件资源文件内容以及对应的语言类型,将通用JavaScript文件中的替换标记替换为接收的软件资源文件内容,得到对应不同语言类型的专用JavaScript文件。
如图4所示,为本发明实施例专用JavaScript文件生成示意图;图中,软件资源文件1、软件资源文件2……软件资源文件N为对应不同语言的软件资源文件,通过本发明实施例,JSP在引用各专用JavaScript文件时,获取客户端语言标识,如_zh_CN、_en,将该语言标识添加为JavaScript文件后缀,实现根据客户端语言环境动态引用对应语言的专用JavaScript文件。
本发明实施例中,每个专用JavaScript文件都是在Java EE容器第一次初始化创建的,所以对于客户端浏览器的缓存不会造成任何的影响。同时,本发明实施例还可以为软件资源文件提供参数化支持,如上例中,被format函数返回的值将是“欢迎您,Bill!”,原来软件资源文件中的“{0}”被传入的参数“Bill”替换,以次类推,不管有多少参数,都可以在软件资源文件中定义,这些参数可以通过动态生成并传入。因此,采用本发明实施例在后期程序设计时可以采用此种数字占位符的模式开发软件资源,以获取灵活的语言切换与处理能力。
基于同一发明构思,本发明实施例还提供了与前述处理软件资源的方法对应的处理软件资源的装置,由于该装置所解决问题的原理与前述处理软件资源的方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
如图5所示,为本发明实施例处理软件资源的装置结构图,包括:
确定模块51,用于确定通用JavaScript文件中的替换标记,其中,该通用JavaScript文件中对应软件资源文件中不同语言的内容的位置为替换标记;
替换模块52,用于针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容。
较佳地,确定模块51具体用于:
通过对所述通用JavaScript文件进行扫描,确定所述通用JavaScript文件中的替换标记。
较佳地,该装置还包括:
划分模块53,用于在所述替换模块针对一种语言的软件资源文件,将所述通用JavaScript文件中的替换标记替换为该软件资源文件中对应所述替换标记的软件资源文件内容之前,将所述通用JavaScript文件对应的国际化软件资源文件按照不同语言,划分为不同语言的软件资源文件。
较佳地,确定模块51具体用于:
根据用于识别替换标记的占位标识符,确定所述通用JavaScript文件中的替换标记。
较佳地,替换模块52具体用于:
针对一种语言的软件资源文件,查找该软件资源文件中与替换标记的关键字信息对应的软件资源文件内容,并将所述替换标记替换为查找到的软件资源文件内容。
本领域内的技术人员应明白,本发明的实施例可提供为方法、设备、或计算机程序产品。因此,本发明可采用完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理装置的处理器以产生一个机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备或装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理装置上,使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。此段为说明书的最后一段。