CN101667118A - 多语言版本的开发、替换方法及装置 - Google Patents
多语言版本的开发、替换方法及装置 Download PDFInfo
- Publication number
- CN101667118A CN101667118A CN200810198258A CN200810198258A CN101667118A CN 101667118 A CN101667118 A CN 101667118A CN 200810198258 A CN200810198258 A CN 200810198258A CN 200810198258 A CN200810198258 A CN 200810198258A CN 101667118 A CN101667118 A CN 101667118A
- Authority
- CN
- China
- Prior art keywords
- code
- content
- language
- file
- replacement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种多语言版本开发中实现代码替换的方法和装置,一种实现多语言版本的开发的方法及装置,以及一种计算机可读介质。其中,所述多语言版本开发中实现代码替换的方法,包括如下步骤:遍历源代码文件,搜索出需要进行替换的第一语言代码;对所述搜索出的第一语言代码配置替换内容;根据所述配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。本发明实施例解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种多语言版本开发中实现代码替换的方法和装置,一种实现多语言版本的开发的方法及装置。
背景技术
随着科学技术的发展以及经济全球化的逐步形成,信息技术(Infonnation Technology,IT)业务产品的国际化问题已经渐渐提上日程,即逐渐需要IT业务产品支持多种国家与地区的语言,如何更好地解决IT业务产品的国际化问题是人们关注与研究的热点。
现有技术中,实现支持国际化多语言的过程中,需要开发人员手工地逐个从源代码文件中提取需要进行替换的代码信息,此过程是一个人工纯体力操作过程,容易出现人为的错误,造成遗漏等问题,而且一旦造成遗漏后需要花费更大的测试流程进行弥补,另外需要开发人员手工地逐个将需要进行替换的代码信息进行替换,并手工地记录整理所述要进行替换的代码信息与替换内容的对应关系,耗费大量的人力,不能在短时间内推出产品的多语言版本。
发明内容
本发明实施例在于提供一种多语言版本开发中实现代码替换的方法及装置,一种实现多语言版本的开发的方法及装置,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题。
为了达到上述技术效果,本发明实施例提出了一种多语言版本开发中实现代码替换的方法,该方法包括如下步骤:
遍历源代码文件,搜索出需要进行替换的第一语言代码;
对所述搜索出的第一语言代码配置替换内容;
根据所述配置的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。
相应的,本发明实施例还公开了一种实现多语言版本的开发的方法,其特征在于,包括如下步骤:
遍历源代码文件,搜索出需要进行替换的第一语言代码;
对所述搜索出的第一语言代码配置替换内容;
根据所述配置的配置结果,自动将所述源代码文件中所述第一语言代码替换成所述替换内容;
并根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;
根据所述配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。
相应的,本发明实施例还公开了一种多语言版本开发中实现代码替换的装置,其特征在于,包括:
遍历模块,用于遍历源代码文件,搜索出需要进行替换的第一语言代码;
内容配置模块,用于对所述遍历模块搜索出的第一语言代码配置替换内容;
内容替换模块,用于根据所述内容配置模块的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。
相应的,本发明实施例还公开了一种实现多语言版本的开发的装置,其特征在于,包括:
遍历模块,用于遍历源代码文件,搜索出需要进行替换的第一语言代码;
内容配置模块,用于对所述遍历模块搜索出的第一语言代码配置替换内容;
替换模块,用于根据所述内容配置模块的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容;
文件配置模块,用于根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;
文件替换模块,用于根据所述文件配置模块配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。
实施本发明实施例,通过遍历源代码文件,自动搜索出所有需要进行替换的第一语言代码信息,并为所述第一语言代码配置替换内容,根据配置结果自动将所述源代码文件中的所述第一语言代码替换成所述替换内容,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的多语言版本开发中实现代码替换的方法第一实施例的流程图;
图2是本发明的多语言版本开发中实现代码替换的方法实施例的流程图;
图3是本发明实施例的实现多语言版本的开发的方法流程图;
图4是本发明的多语言版本开发中实现代码替换的装置的第一实施例的结构示意图;
图5是本发明实施例的遍历模块的结构示意图;
图6是本发明实施例的配置模块的结构示意图;
图7是本发明的多语言版本开发中实现代码替换的装置的实施例的结构示意图;
图8是本发明实施例的实现多语言版本的开发的装置的结构示意图。
具体实施方式
本发明实施例提供了一种多语言版本开发中实现代码替换的方法和装置,一种实现多语言版本的开发的方法和装置及一种计算机可读介质,通过遍历源代码文件,自动搜索出所有需要进行替换的第一语言代码信息,并为所述第一语言代码配置替换内容,根据配置结果自动将所述源代码文件中的所述第一语言代码替换成所述替换内容,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题,并使产品完成国际化的流程更加方便快捷,更加灵活地满足海外运营商对当地语言的支持需求。
请参阅图1,图1示出了本发明的多语言版本开发中实现代码替换的方法第一实施例的流程图,包括如下步骤:
步骤S101:遍历源代码文件,搜索出需要进行替换的第一语言代码;
具体地,所述第一语言代码可为中文代码、英文代码、日文代码,法文代码等。所述源代码文件可为JSP源代码文件、Java源代码文件以及C++语言源代码文件等中任一种或者其结合。
步骤S102:对所述搜索出的第一语言代码配置替换内容;
具体地,所述配置替换内容可包括:为所述搜索出的第一语言代码中的每一代码设置替换内容;生成数据库存储所述替换内容与所述第一语言代码的替换映射关系。所述替换内容可为STRUTS替换标签或自定义的替换内容(比如,XML静态函数),比如,当需要替换JSP源代码文件中的中文代码时,所述替换内容可以为STRUTS的替换标签<bean:message key=“标签”/>,生成的替换映射关系可为:标签=第一语言代码。
例如,JSP源代码文件中的“中国”,对应的替换标签可为<bean:message key=“CN”。生成的替换映射关系可为:CN=中国;
JSP源代码中的“查找”,对应的替换标签可为<bean:message key=“search”。生成的替换映射关系可为:search=查找。
当需要替换C++或Java等源代码文件的代码时,所述配置的替换内容可以为某个类的静态函数,如CMessage::GetMessage(LAN_FLAG,”标签”)。
步骤S103:根据所述配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。比如,原来界面上有一个按钮叫“确定”,那么在JSP源代码中写为<input type=″button″value=”确定”,对应所述“确定”的替换标签可为<bean:message key=’buttoncaption’>”,则将所述中文确定替换成成替换内容后,所述源代码变成<input type=″button″value=”<bean:messagekey=’buttoncaption’>”。
上述实施例,通过遍历源代码文件,自动搜索出所有需要进行替换的第一语言代码信息,并为所述第一语言代码配置替换内容,根据配置结果自动将所述源代码文件中的所述第一语言代码替换成所述替换内容,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题。
下面结合一个JSP为源代码的中文版本的产品实现支持国际化多语言的例子,进一步详细说明本发明的多语言版本开发中实现代码替换的方法,如图2示出的本发明的多语言版本开发中实现代码替换的方法实施例的流程图,包括如下步骤:
步骤S201:遍历***中的文件夹,搜索出需要进行语言版本替换的JSP源代码文件;
具体地,***可以利用Windows Application Programming Interface,简称Windows API函数遍历***中的文件夹,搜索出需要进行替换的源代码文件,如JSP源代码文件、C++语言源代码文件等。
步骤S202:遍历所述搜索出的JSP源代码文件中的代码,在所述源代码文件的代码中查找出不在特殊字符之间的代码;
具体地,将所述搜索出的JSP源代码文件中的代码分解成每行进行查找处理,所述特殊字符包括注释符号和/或字符串符号等,所述注释字符包括双斜杠符号(即“//”符号)以及“/*”符号等,所述字符串符号包括单引符号以及双引符号等,所述不在特殊字符之间的代码即为有效执行代码,在所述源代码文件的代码中查找出不在所述特殊字符之间的代码,即为在所述源代码文件的代码中查找出除了注释代码和/或字符串代码等之外的有效执行代码。
步骤S203:检测所述查找出的代码中是否含有中文字符;
具体地,如果是中文字符则其高位数据为大于128,则整个int值在表现为<0,当所述检测结果为是时,执行步骤S204,当所述检测结果为否时,执行步骤S207。
步骤S204:记录所述检测的所有中文字符对应的代码信息;
具体地,所述代码信息包括代码类型(标签、表头、按钮、对画框、冒泡等)代码内容、文件名以及所述代码内容在所述文件中的行号等,分别记录代码的类型,代码中各中文字符对应的中文内容,所述中文字符所在的文件夹的名称以及所述中文字符所在的文件的行号等。
步骤S205:对所述中文字符配置STRUTS格式的替换标签;
具体地,以原来界面上的一个叫“确定”的按钮为例进行说明,JSP源代码中的形式为<input type=″button″value=”确定”,对其中的中文字符(即确定)配置的替换标签可为<bean:message key=’buttoncaption’>。
步骤S206:根据所述替换标签将所述中文字符替换成所述替换标签。
具体地,以上述的原来界面上的一个叫“确定”的按钮为例进行说明,把JSP源代码<input type=″button″value=”确定”中的中文字符替换成所述替换标签,那么替换后的JSP源代码形式为<input type=″button″value=”<bean:messagekey=’buttoncaption’>”。
需要说明的是,执行步骤S202时,具体地,需要针对搜索出的文件进行逐行逐字的解析,可以预先定义中文开关和预先为单引号、双引号、“//”符号以及“/*”符号等分别定义标识开关,并定义每一个标识开关打开之后等待该开关关闭之前,其他的标识开关不允许打开(即某一种特殊字符之间出现的其他特殊字符将会被忽略),在所有标识开关都关闭的情况下,标识当前的代码是有效执行代码,另外,针对很大一部分的中文字符是出现在引号当中的情况,开发人员可以设定引号的标识开关打开的情况下,也标识当前的代码是有效执行代码。标识出有效执行代码后,查找所述有效执行代码的中文字符,当检测到中文字符,则所述中文开关打开,检测到中文字符结束,则中文开关关闭,并记录中文开关打开和关闭时的代码位置,最后通过记录的代码位置信息输出所述位置中的中文字符。
特殊地,在JSP页面中的对于一些特殊字符的特殊处理一般分为如下几中情况:
1、<%...%>的情况,<%...%>中的中文字符不能用标签进行替换,因为这中间的代码是在服务端执行的,所以替换方式应该和现有中对的Java源代码的替换方案保持统一。对于这种情况本发明是通过设定进行二次替换来处理,即对于JSP文件的替换首先不考虑<%...%>的情况,通过本发明实施例的统一替换之后,JSP文件的HTML语句和JS脚本中的中文信息已经被<bean:messagekey=””/>的标签替换完毕了,然后在设定的进行二次替换的时候只针对<%...%>中的内容进行替换。上述替换操作可以在控制界面中设置复选框来进行控制。
2、 ;的情况,如“中 ;文”,按照正常的逻辑当文件的分析到&符号时,文件分析接口会认为中文结束,最后导致“中 ;文”被分割为两段中文信息,因此可以判断组合字符串 ;,通过预先设定组合字符串 ;的情况,当在中文开关打开的期间出现组合字符串 ;不视为中文结束。
3、“English中文english”的情况,所述English与english泛指非中文字符,此情况需要通过规则来进行设置,如果预设需要提取“中文”,则选择进行引号部分提取,如果预设需要提取“English中文english”,则选择进行引号全量提取,所述引号全量提取表示只要引号中出现中文则整段引号部分都视为中文进行资源提取。
需要说明的是,执行步骤S206时,具体地,如果按照关键字直接进行替换的话,会存在因为字符串存在包含关系而出现错误的替换的问题,比如***检索出需要替换中文信息“集团属性”以及“集团”,那么就必须要保证替换“集团属性”的时候不要单独替换掉“集团属性”中的集团的字符,否则“集团属性”就会被替换成<bean:message key=””/>属性的形式,而不是开发人员希望的把“集团属性”替换成<bean:message key=””/>的形式,从而造成了搜索和替换不统一。为了解决上述出现的替换问题,提高替换的准确性,执行替换的步骤前,可以重新对文件进行分析,然后执行替换的步骤,即在步骤S205后,重新执行步骤S201到步骤S203,完成对文件的代码的重新分析,然后直接执行步骤S206,具体地,重新执行完步骤S203后,即再次遍历搜索出的中文代码后,***可以检测所述再次遍历搜索出的中文代码是否与步骤S204所述记录的代码信息一致,如果所述检测的结果不一致,即上述两次搜索出的中文不相同,则结束流程,如果所述检测的结果一致,则执行步骤S206,把搜索出的需要进行替换的代码根据之前的步骤S205配置的替换内容进行替换,避免了按照关键字直接进行替换出现的替换问题,提高搜索和替换的准确性。
需要说明的是,本发明实施例的步骤还包括,在文件替换的最后一步判断JSP中是否存在“<%@taglib uri=″/WEB-INF/struts-bean.tld″prefix=″bean″%>”,如果不存在,则自动为程序添加上述代码行至文件头中。
下面结合图3示出的本发明实施例的实现多语言版本的开发的方法流程图,说明本发明实施例的实现多语言版本的开发的方法,包括如下步骤:
步骤S301:遍历源代码文件,搜索出需要进行替换的第一语言代码;
步骤S302:对所述搜索出的第一语言代码配置替换内容;
步骤S303:根据所述配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。
步骤S304:根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;具体地,以一个JSP为源代码的中文版本的产品实现支持国际化多语言(,至少两种,比如,可包括中文版本,英文版本日文版本等)为例子,JSP标签的资源文件可定义在struts-config.xml文件中,格式如下:<message-resources parameter=″resources.Application_CN.properties″/>。在所述资源文件中,将所述多种语言版本的代码与所述配置的相应的替换格式内容的对应关系按照标签=value的格式进行输出,如中文版本与所述替换内容的替换映射关系为:
groupAttrConfigMainFrame_jsp.ProdType=产品类型
groupProdTypeAttrList_jsp.PropShowType=属性显示类型
英文版本与所述替换内容的替换映射关系为:
groupAttrConfigMainFrame_jsp.ProdType=stufftype
groupAttrConfigMainFrame_jsp.ProdType=configtype
步骤S305:根据所述配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。具体实现中,可将所述替换后生成的源代码文件保存在内存相应文件中,拷贝到STUTS架构resources.Application_CN.properties文件中。也可将源代码存放在***运行时,可访问的硬盘会外部存储介质中。
下面结合图4示出的本发明的多语言版本开发中实现代码替换的装置的第一实施例的结构示意图,说明本发明实施例中的一种多语言版本开发中实现代码替换的装置,包括:
遍历模块40,用于遍历源代码文件,搜索出需要进行替换的第一语言代码;具体地,所述第一语言代码可为中文代码、英文代码、日文代码,法文代码等。所述源代码文件可为JSP源代码文件、Java源代码文件以及C++语言源代码文件中任一种。
内容配置模块42,用于对所述遍历模块40搜索出的第一语言代码配置替换内容;具体地,所述替换内容可为STRUTS替换标签或自定义的替换内容(比如,XML静态函数)。
内容替换模块44,用于根据所述内容配置模块42配置的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。比如,原来界面上有一个按钮叫“确定”,那么在JSP源代码中写为<input type=″button″value=”确定”,对应所述“确定”的替换标签可为<bean:message key=’buttoncaption’>”,则所述内容替换模块44将所述中文“确定”替换成成替换内容后,所述源代码变成<input type=″button″value=”<bean:message key=’buttoncaption’>”。
上述实施例,通过遍历源代码文件,自动搜索出所有需要进行替换的第一语言代码信息,并为所述第一语言代码配置替换内容,根据配置结果自动将所述源代码文件中的所述第一语言代码替换成所述替换内容,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题,并且使产品完成国际化的流程更加方便快捷,更加灵活地满足海外运营商对当地语言的支持需求。
需要说明的是,本发明实施例的多语言版本开发中实现代码替换的装置还可以包括遍历文件夹模块,所述遍历文件夹模块可以利用Windows ApplicationProgramming Interface,简称Windows API函数遍历***中的文件夹,搜索出需要进行替换的源代码文件,如JSP源代码文件、C++语言源代码文件等,然后供遍历模块40进行遍历,从所述需要进行替换的源代码文件中搜索出需要进行替换的第一语言代码。
下面结合图5示出的本发明实施例的遍历模块40的结构示意图,进一步详细说明本发明实施例的一种多语言版本开发中实现代码替换的装置,遍历模块40包括:
查找模块401,用于在所述源代码文件中查找出不在特殊字符之间的代码,所述特殊字符包括注释符号和/或字符串符号;比如当源代码为JSP源代码时,所述查找模块401将所述搜索出的JSP源代码文件中的代码分解成每行进行查找处理,所述特殊字符包括注释符号和/或字符串符号等,所述注释字符包括双斜杠符号(即“//”符号)以及“/*”符号等,所述字符串符号包括单引符号以及双引符号等,所述不在特殊字符之间的代码即为有效执行代码,在所述源代码文件的代码中查找出不在所述特殊字符之间的代码,即为在所述源代码文件的代码中查找出除了注释代码和/或字符串代码等之外的有效执行代码。
检测处理模块403,用于在所述查找模块401查找出的代码中检测并找出需要进行替换的第一语言代码。
下面结合图6示出的本发明实施例的内容配置模块42的结构示意图,进一步详细说明本发明实施例的一种多语言版本开发中实现代码替换的装置,内容配置模块42包括:
设置模块421,用于为所述搜索出的第一语言代码中的每一代码设置替换内容;
存储模块423,用于生成数据库存储所述替换内容与所述第一语言代码的替换映射关系。
比如,当需要替换JSP源代码文件中的中文代码时,所述替换内容可以为STRUTS的替换标签<bean:message key=“标签”/>,生成的替换映射关系可为:标签=第一语言代码。
例如,JSP源代码文件中的“中国”,所述设置模块421设置的替换标签可为<bean:message key=“CN”。所述存储模块423生成的替换映射关系可为:CN=中国;
JSP源代码中的“查找”,所述设置模块421设置的替换标签可为<bean:message key=“search”。所述存储模块423生成的替换映射关系可为:search=查找。
下面结合图7示出的本发明的多语言版本开发中实现代码替换的装置的实施例的结构示意图,进一步详细说明本发明实施例中的一种多语言版本开发中实现代码替换的装置,除了包括上述的遍历模块40、内容配置模块42以及内容替换模块44以外,还包括:
记录模块46,用于记录所述遍历模块40搜索出的需要进行替换的第一语言代码的具体内容及其在所述源代码中的位置信息。所述具体内容及位置信息包括:包括代码类型(标签、表头、按钮、对画框、冒泡等)代码内容、文件名以及所述代码内容在所述文件中的行号等,分别记录代码的类型,代码中各中文字符对应的中文内容,所述中文字符所在的文件夹的名称以及所述中文字符所在的文件的行号等。
下面结合一个JSP为源代码的中文版本的产品实现支持国际化多语言的例子,进一步详细说明本发明的多语言版本开发中实现代码替换的装置的功能以及结构:
遍历模块40中的查找模块401在搜索出的源代码文件的代码中查找出不在特殊字符之间的代码,所述特殊字符包括注释符号和/或字符串符号等,所述注释字符包括双斜杠符号(即“//”符号)以及“/*”符号等,所述字符串符号包括单引符号以及双引符号等,所述不在特殊字符之间的代码即为有效执行代码,在所述源代码文件的代码中查找出不在所述特殊字符之间的代码,即为在所述源代码文件的代码中查找出除了注释代码和/或字符串代码等之外的有效执行代码;具体地,需要针对搜索出的文件进行逐行逐字的解析,可以预先定义中文开关和预先为单引号、双引号、“//”符号以及“/*”符号等分别定义标识开关,并定义每一个标识开关打开之后等待该开关关闭之前,其他的标识开关不允许打开(即某一种特殊字符之间出现的其他特殊字符将会被忽略),在所有标识开关都关闭的情况下,标识当前的代码是有效执行代码,另外,针对很大一部分的中文字符是出现在引号当中的情况,开发人员可以设定引号的标识开关打开的情况下,也标识当前的代码是有效执行代码。标识出有效执行代码后,查找所述有效执行代码的中文字符,当检测到中文字符,则所述中文开关打开,检测到中文字符结束,则中文开关关闭,并记录中文开关打开和关闭时的代码位置,最后通过记录的代码位置信息输出所述位置中的中文字符。
特殊地,在JSP页面中的对于一些特殊字符的特殊处理一般分为如下几中情况:
1、<%...%>的情况,<%...%>中的中文字符不能用标签进行替换,因为这中间的代码是在服务端执行的,所以替换方式应该和现有中对的Java源代码的替换方案保持统一。对于这种情况本发明是通过设定进行二次替换来处理,即对于JSP文件的替换首先不考虑<%...%>的情况,通过本发明实施例的统一替换之后,JSP文件的HTML语句和JS脚本中的中文信息已经被<bean:messagekey=””/>的标签替换完毕了,然后在设定的进行二次替换的时候只针对<%...%>中的内容进行替换。上述替换操作可以在控制界面中设置复选框来进行控制。
2、 ;的情况,如“中 ;文”,按照正常的逻辑当文件的分析到&符号时,文件分析接口会认为中文结束,最后导致“中 ;文”被分割为两段中文信息,因此可以判断组合字符串 ;,通过预先设定组合字符串 ;的情况,当在中文开关打开的期间出现组合字符串 ;不视为中文结束。
3、“English中文english”的情况,所述English与english泛指非中文字符,此情况需要通过规则来进行设置,如果预设需要提取“中文”,则选择进行引号部分提取,如果预设需要提取“English中文english”,则选择进行引号全量提取,所述引号全量提取表示只要引号中出现中文则整段引号部分都视为中文进行资源提取。
遍历模块40中的检测处理模块403检测所述查找模块401查找出的代码中是否含有中文字符,当检测处理模块403的检测结果为是时,触发记录模块46记录所述检测处理模块4032检测的所有中文字符对应的代码信息,具体地,所述代码信息包括代码内容、文件名以及所述代码内容在所述文件中的行号,分别记录代码中各中文字符对应的中文内容,所述中文字符所在的文件夹的名称,所述中文字符所在的文件的行号。
内容配置模块42对所述检测处理模块403检测的中文字符配置替换标签,具体地,配置的替换标签的模式为预先设置的替换逻辑的模式,如开发人员预先设置的替换逻辑的模式为<bean:message key=””/>,以原来界面上的一个叫“确定”的按钮为例进行说明,代码中的形式为<input type=″button″value=”确定”,对其中的中文字符(即确定)配置<bean:message key=’buttoncaption’>的替换标签。
内容替换模块44根据内容配置模块42配置的替换标签自动将所述中文字符替换成所述替换标签,具体地,以上述的原来界面上的一个叫“确定”的按钮为例进行说明,把<input type=″button″value=”确定”中的中文字符替换成所述替换标签,那么替换后的形式为<input type=″button″value=”<bean:messagekey=’buttoncaption’>”。
需要说明的是,内容替换模块44执行替换时,如果按照关键字直接进行替换的话,会存在因为字符串存在包含关系而出现错误的替换的问题,比如***检索出需要替换中文信息“集团属性”以及“集团”,那么就必须要保证替换“集团属性”的时候不要单独替换掉“集团属性”中的集团的字符,否则“集团属性”就会被替换成<bean:message key=””/>属性的形式,而不是开发人员希望的把“集团属性”替换成<bean:message key=””/>的形式,从而造成了搜索和替换不统一。为了解决上述出现的替换问题,提高替换的准确性,内容替换模块44执行替换前,可以重新触发遍历模块40对文件再次进行分析,再次遍历搜索出的第一语言代码后,可以检测所述再次遍历搜索出的第一语言代码是否与记录模块46记录的代码信息一致,如果所述检测的结果不一致,即遍历模块40两次搜索出的第一语言代码不相同,则结束流程,如果所述检测的结果一致,则根据之前内容配置模块42配置的替换内容进行替换,避免了按照关键字直接进行替换出现的替换问题,提高搜索和替换的准确性。
下面结合图8示出的本发明实施例的实现多语言版本的开发的装置的结构示意图,说明本发明实施例的实现多语言版本的开发的装置,除了包括上述的遍历模块40、内容配置模块42、内容替换模块44以及记录模块46外,还包括:
文件配置模块48,用于根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;
文件替换模块50,用于根据所述文件配置模块48配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。
具体地,以一个JSP为源代码的中文版本的产品实现支持国际化多语言(,至少两种,比如,可包括中文版本,英文版本日文版本等)为例子,JSP标签的资源文件可定义在struts-config.xml文件中,格式如下:<message-resourcesparameter=″resources.Application_CN.properties″/>。在所述资源文件中,将所述多种语言版本的代码与所述配置的相应的替换格式内容的对应关系按照标签=value的格式进行输出,如中文版本与所述替换内容的替换映射关系为:
groupAttrConfigMainFrame_jsp.ProdType=产品类型
groupProdTypeAttrList_jsp.PropShowType=属性显示类型
英文版本与所述替换内容的替换映射关系为:
groupAttrConfigMainFrame_jsp.ProdType=stufftype
groupAttrConfigMainFrame_jsp.ProdType=configtype
具体实现中,可将所述替换后生成的源代码文件保存在内存相应文件中,拷贝到STUTS架构resources.Application_CN.properties文件中。也可将源代码存放在***运行时,可访问的硬盘会外部存储介质中。
综上所述,实施本发明实施例,通过遍历源代码文件,自动搜索出所有需要进行替换的第一语言代码信息,并为所述第一语言代码配置替换内容,根据配置结果自动将所述源代码文件中的所述第一语言代码替换成所述替换内容,解决了手工搜索提取以及替换代码而造成的遗漏,耗费大量人力的问题。
需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明实施例中的较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (15)
1、一种多语言版本开发中实现代码替换的方法,其特征在于,包括如下步骤:
遍历源代码文件,搜索出需要进行替换的第一语言代码;
对所述搜索出的第一语言代码配置替换内容;
根据所述配置的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。
2、如权利要求1所述的方法,其特征在于,所述搜索出需要进行替换的第一语言代码包括:
在所述源代码文件中查找出不在特殊字符之间的代码,所述特殊字符包括注释符号和/或字符串符号;
在所述查找出的代码中检测并找出需要进行替换的第一语言代码。
3、如权利要求1所述的方法,其特征在于,所述对所述搜索出的第一语言代码配置替换内容之前,还包括:
记录所述搜索出的需要进行替换的第一语言代码的具体内容及其在所述源代码中的位置信息。
4、如权利要求1所述的方法,其特征在于,所述对所述搜索出的第一语言代码配置替换内容包括:
为所述搜索出的第一语言代码中的每一代码设置替换内容;
生成数据库存储所述替换内容与所述第一语言代码的替换映射关系。
5、如权利要求4所述的方法,其特征在于,所述根据所述配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容包括:
再次遍历源代码文件,搜索出需要进行替换的第一国家语音代码;
根据所述数据库中所述替换内容与所述第一语言代码的替换映射关系,自动将所述源代码文件中的所述第一国家语音代码替换成所述替换内容。
6、如权利要求5所述的方法,其特征在于,所述根据所述数据库中所述替换内容与所述第一语言代码的替换映射关系,自动将所述源代码文件中的所述第一国家语音代码替换成所述替换内容包括:
检测所述再次遍历搜索出的需要进行替换的第一语言代码及其位置是否与所述记录的代码相同;
根据所述数据库中所述替换内容与所述第一语言代码的替换映射关系,自动将所述源代码中与所述记录的代码信息及位置相同的第一语言代码替换成所述替换内容。
7、如权利要求1-6中任一项所述的方法,其特征在于,所述替换内容为STRUTS替换标签或自定义的替换内容。
8、如权利要求1-6所述的方法,其特征在于,所述源代码文件为JSP源代码文件、Java源代码文件以及C++语言源代码文件中任一种。
9、一种实现多语言版本的开发的方法,其特征在于,包括如下步骤:
遍历源代码文件,搜索出需要进行替换的第一语言代码;
对所述搜索出的第一语言代码配置替换内容;
根据所述配置的配置结果,自动将所述源代码文件中所述第一语言代码替换成所述替换内容;
并根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;
根据所述配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。
10、一种多语言版本开发中实现代码替换的装置,其特征在于,包括:
遍历模块,用于遍历源代码文件,搜索出需要进行替换的第一语言代码;
内容配置模块,用于对所述遍历模块搜索出的第一语言代码配置替换内容;
内容替换模块,用于根据所述内容配置模块的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容。
11、如权利要求10所述的装置,其特征在于,所述遍历模块包括:
查找模块,用于在所述源代码文件中查找出不在特殊字符之间的代码,所述特殊字符包括注释符号和/或字符串符号;
检测处理模块,用于在所述查找模块查找出的代码中检测并找出需要进行替换的第一语言代码。
12、如权利要求10所述的装置,其特征在于,所述装置还包括:
记录模块,用于记录所述遍历模块搜索出的需要进行替换的第一语言代码的具体内容及其在所述源代码中的位置信息。
13、如权利要求10所述的装置,其特征在于,所述内容配置模块包括:
设置模块,用于为所述搜索出的第一语言代码中的每一代码设置替换内容;
存储模块,用于生成数据库存储所述替换内容与所述第一语言代码的替换映射关系。
14、一种实现多语言版本的开发的装置,其特征在于,包括:
遍历模块,用于遍历源代码文件,搜索出需要进行替换的第一语言代码;
内容配置模块,用于对所述遍历模块搜索出的第一语言代码配置替换内容;
内容替换模块,用于根据所述内容配置模块的配置结果,自动将所述源代码文件中的所述第一语言代码替换成所述替换内容;
文件配置模块,用于根据所述替换内容配置资源文件,建立所述替换内容与至少一种语言版本代码的替换映射关系;
文件替换模块,用于根据所述文件配置模块配置的资源文件将所述源代码文件中的所述替换内容替换成所述至少一种语言版本代码,并保存所述替换后生成的源代码文件。
15、一种计算机可读介质,其特征在于,其内存储有计算机程序,所述计算机程序运行时可使得一个或多个处理器执行如权1或权9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810198258A CN101667118A (zh) | 2008-09-02 | 2008-09-02 | 多语言版本的开发、替换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810198258A CN101667118A (zh) | 2008-09-02 | 2008-09-02 | 多语言版本的开发、替换方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101667118A true CN101667118A (zh) | 2010-03-10 |
Family
ID=41803745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810198258A Pending CN101667118A (zh) | 2008-09-02 | 2008-09-02 | 多语言版本的开发、替换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101667118A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467376A (zh) * | 2010-11-10 | 2012-05-23 | 金蝶软件(中国)有限公司 | 一种文字信息的修改方法及装置 |
CN104899010A (zh) * | 2014-03-04 | 2015-09-09 | 北京金山云网络技术有限公司 | 源代码的多语言化方法及*** |
US9639348B2 (en) | 2012-12-06 | 2017-05-02 | International Business Machines Corporation | Program code library searching and selection in a networked computing environment |
CN107153607A (zh) * | 2016-03-03 | 2017-09-12 | 展讯通信(天津)有限公司 | 检查移动终端界面语言的方法、装置及*** |
CN107273549A (zh) * | 2017-07-24 | 2017-10-20 | 山东中创软件工程股份有限公司 | 一种词条转化方法及装置 |
CN107329957A (zh) * | 2017-05-18 | 2017-11-07 | 网易(杭州)网络有限公司 | 替换代码中文字符串的方法以及计算机可读存储介质 |
CN107357568A (zh) * | 2017-06-12 | 2017-11-17 | 北京天健通泰科技有限公司 | 一种基于多国语标签的原语言替换方法 |
CN107577482A (zh) * | 2017-08-28 | 2018-01-12 | 北京锐安科技有限公司 | 软件语种的自动转换方法和装置 |
CN108228179A (zh) * | 2017-12-22 | 2018-06-29 | 东软集团股份有限公司 | 页面国际化的处理方法、装置、计算机及存储介质 |
CN110806896A (zh) * | 2019-09-29 | 2020-02-18 | 上海派拉软件股份有限公司 | 基于maven插件实现软件开发中国际化信息提取方法 |
CN110941441A (zh) * | 2019-11-12 | 2020-03-31 | 望海康信(北京)科技股份公司 | 源代码升级方法及*** |
WO2020259084A1 (zh) * | 2019-06-27 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 页面信息处理方法、装置及存储介质 |
CN112256365A (zh) * | 2020-09-27 | 2021-01-22 | 福建天泉教育科技有限公司 | 一种自动化管理多语言版本的方法及终端 |
CN112486623A (zh) * | 2020-12-16 | 2021-03-12 | 恩亿科(北京)数据科技有限公司 | 基于界面自动支持多语言的开发方法、***和电子设备 |
CN113705252A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 一种web***的实现方法和装置 |
CN113760246A (zh) * | 2021-09-06 | 2021-12-07 | 网易(杭州)网络有限公司 | 应用程序文本语言处理方法、装置、电子设备及存储介质 |
CN113918254A (zh) * | 2021-09-27 | 2022-01-11 | 腾讯科技(深圳)有限公司 | 语言文本管理方法、装置、存储介质及电子设备 |
-
2008
- 2008-09-02 CN CN200810198258A patent/CN101667118A/zh active Pending
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467376B (zh) * | 2010-11-10 | 2015-07-15 | 金蝶软件(中国)有限公司 | 一种文字信息的修改方法及装置 |
CN102467376A (zh) * | 2010-11-10 | 2012-05-23 | 金蝶软件(中国)有限公司 | 一种文字信息的修改方法及装置 |
US9639348B2 (en) | 2012-12-06 | 2017-05-02 | International Business Machines Corporation | Program code library searching and selection in a networked computing environment |
CN103853549B (zh) * | 2012-12-06 | 2017-05-10 | 国际商业机器公司 | 用于在网络化计算环境中进行程序代码库搜索和选择的方法和*** |
US9891896B2 (en) | 2012-12-06 | 2018-02-13 | International Business Machines Corporation | Program code library searching and selection in a networked computing environment |
US10169031B2 (en) | 2012-12-06 | 2019-01-01 | International Business Machines Corporation | Program code library searching and selection in a networked computing environment |
CN104899010B (zh) * | 2014-03-04 | 2018-12-21 | 北京金山云网络技术有限公司 | 源代码的多语言化方法及*** |
CN104899010A (zh) * | 2014-03-04 | 2015-09-09 | 北京金山云网络技术有限公司 | 源代码的多语言化方法及*** |
CN107153607A (zh) * | 2016-03-03 | 2017-09-12 | 展讯通信(天津)有限公司 | 检查移动终端界面语言的方法、装置及*** |
CN107329957A (zh) * | 2017-05-18 | 2017-11-07 | 网易(杭州)网络有限公司 | 替换代码中文字符串的方法以及计算机可读存储介质 |
CN107329957B (zh) * | 2017-05-18 | 2020-08-18 | 网易(杭州)网络有限公司 | 替换代码中文字符串的方法以及计算机可读存储介质 |
CN107357568A (zh) * | 2017-06-12 | 2017-11-17 | 北京天健通泰科技有限公司 | 一种基于多国语标签的原语言替换方法 |
CN107273549A (zh) * | 2017-07-24 | 2017-10-20 | 山东中创软件工程股份有限公司 | 一种词条转化方法及装置 |
CN107577482A (zh) * | 2017-08-28 | 2018-01-12 | 北京锐安科技有限公司 | 软件语种的自动转换方法和装置 |
CN108228179A (zh) * | 2017-12-22 | 2018-06-29 | 东软集团股份有限公司 | 页面国际化的处理方法、装置、计算机及存储介质 |
WO2020259084A1 (zh) * | 2019-06-27 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 页面信息处理方法、装置及存储介质 |
CN110806896A (zh) * | 2019-09-29 | 2020-02-18 | 上海派拉软件股份有限公司 | 基于maven插件实现软件开发中国际化信息提取方法 |
CN110806896B (zh) * | 2019-09-29 | 2020-11-13 | 上海派拉软件股份有限公司 | 基于maven扩展插件实现软件开发中国际化信息提取方法 |
CN110941441A (zh) * | 2019-11-12 | 2020-03-31 | 望海康信(北京)科技股份公司 | 源代码升级方法及*** |
CN113705252A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 一种web***的实现方法和装置 |
CN112256365A (zh) * | 2020-09-27 | 2021-01-22 | 福建天泉教育科技有限公司 | 一种自动化管理多语言版本的方法及终端 |
CN112256365B (zh) * | 2020-09-27 | 2022-06-07 | 福建天泉教育科技有限公司 | 一种自动化管理多语言版本的方法及终端 |
CN112486623A (zh) * | 2020-12-16 | 2021-03-12 | 恩亿科(北京)数据科技有限公司 | 基于界面自动支持多语言的开发方法、***和电子设备 |
CN113760246A (zh) * | 2021-09-06 | 2021-12-07 | 网易(杭州)网络有限公司 | 应用程序文本语言处理方法、装置、电子设备及存储介质 |
CN113760246B (zh) * | 2021-09-06 | 2023-08-11 | 网易(杭州)网络有限公司 | 应用程序文本语言处理方法、装置、电子设备及存储介质 |
CN113918254A (zh) * | 2021-09-27 | 2022-01-11 | 腾讯科技(深圳)有限公司 | 语言文本管理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101667118A (zh) | 多语言版本的开发、替换方法及装置 | |
US7149971B2 (en) | Method, apparatus, and system for providing multi-language character strings within a computer | |
US7546315B2 (en) | Device for reporting software problem information | |
US10229115B2 (en) | System and method for creating an internationalized web application | |
US7441184B2 (en) | System and method for internationalizing the content of markup documents in a computer system | |
US7165020B2 (en) | Multi-language phrase editor and method thereof | |
US8683324B2 (en) | Dynamic generation of target files from template files and tracking of the processing of target files | |
US20080195377A1 (en) | Method, device, and program product for verifying translation in resource file | |
US8468494B2 (en) | In-line editor | |
US20080300859A1 (en) | System and Method for Automatic Natural Language Translation of Embedded Text Regions in Images During Information Transfer | |
US7398214B2 (en) | Method for translating slide presentations into different languages | |
US6466900B1 (en) | Multi-language phrase editor and method thereof | |
EP2162833A1 (en) | A method, system and computer program for intelligent text annotation | |
US20110191381A1 (en) | Interactive System for Extracting Data from a Website | |
US9195653B2 (en) | Identification of in-context resources that are not fully localized | |
US7711548B2 (en) | Method and structures to enable national language support for dynamic data | |
CN106873971B (zh) | 一种flash应用的多语言展示方法和*** | |
CN112418875B (zh) | 跨平台税务智能客服语料迁移方法及装置 | |
CN104182479A (zh) | 一种处理信息的方法及装置 | |
CN113297856A (zh) | 文档翻译方法、装置及电子设备 | |
CN113407678B (zh) | 知识图谱构建方法、装置和设备 | |
CN108228179A (zh) | 页面国际化的处理方法、装置、计算机及存储介质 | |
CN106648618B (zh) | 虚拟应用的文本信息生成方法和装置 | |
JP2016031572A (ja) | 用語を適切な粒度で分割する方法、並びに、用語を適切な粒度で分割するためのコンピュータ及びそのコンピュータ・プログラム | |
CN109948251B (zh) | 基于cad的数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100310 |