CN106775914B - 一种自动生成键值的代码国际化方法及装置 - Google Patents
一种自动生成键值的代码国际化方法及装置 Download PDFInfo
- Publication number
- CN106775914B CN106775914B CN201611229623.1A CN201611229623A CN106775914B CN 106775914 B CN106775914 B CN 106775914B CN 201611229623 A CN201611229623 A CN 201611229623A CN 106775914 B CN106775914 B CN 106775914B
- Authority
- CN
- China
- Prior art keywords
- packet
- key
- chinese
- internationalization
- code
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提供一种自动生成键值的代码国际化方法及装置,包含以下步骤:获取需要进行国际代码化的内容;对中文连续字段和非中文连续字段进行分组,得到第一分组;将第一分组转换为字母加声调形式,得到第二分组;将第二分组中的标点符号都替换为第一符号得到第三分组;将第三分组中的非中文区替换为第二符号,得到第四分组;连接第四分组得到该段文字的国际化键Key;将第一分组中的中文替换为国际化代码和国际化键Key的形式,得到第五分组;使用第五分组连接得到国际化后的代码;将第一分组中的非中文分组替换为第二符号,得到第六分组;连接第六分组得到翻译前的本国语言值Value1;翻译获得相应的国际化语言值Value2;生成或修改国际化键值信息。
Description
技术领域
本发明属于计算机网络技术领域,具体涉及一种自动生成键值的代码国际化方法及装置。
背景技术
随着软件在世界各国的广泛应用,软件处理语言的单一性给软件的普及和用户的应用带来了不便。如何使软件能够处理多种语言已成为人们关注的问题,软件的国际化是解决这一问题的有效途径。这需要每个程序员将自己开发的软件部分的源代码和资源文件分离,按照语言的不同,分成若干个资源文件,软件中一般使用Properties来存储国际化数据。Properties文件是一种用于存储Key-Value(键-值)对的属性存储文件,其中格式为:每个Key-Value对独立占一行,Key与Value之间使用等号(=)分隔;文件一般以.properties作为后缀。
一般一个Properties的文件对应于一种语言。由于Properties文件是使用Key-Value对的方式存储数据,所以一般Key用于软件程序中使用,而Value则用于对应的显示。
现有技术中公开了一种实现软件国际化的方法和装置,提取中文软件源代码中的中文字符串,并在相关位置添加调用函数;针对所提取的各个中文字符串,采用哈希算法生成所述中文字符串的哈希值;生成至少一个资源文件,所述资源文件中包括所述哈希值以及所述中文字符串对应的翻译文本串;当该中文软件执行时,根据通过调用函数获取到的中文字符串,生成所述中文字符串的哈希值,根据所述哈希值从资源文件中获取相应的翻译文本串;在该中文软件界面显示所述翻译文本串。
上述实现方式是通过中文字符串哈希值作为键进行代码国际化操作的。没有对整段文字被分割成多段的情况提供解决方案,这样就造成了翻译人员拿到的都是断句,不能结合上下文进行准确的翻译。
发明内容
为克服上述现有技术的不足,本发明提供了一种自动生成键值的代码国际化方法,包含以下步骤:
S101、获取需要进行国际代码化的内容;
S102、使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;记录第一分组中哪些是中文哪些是非中文;
S103、将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;
S104、将第二分组中的标点符号都替换为第一符号得到第三分组;
S105、将第三分组中的非中文区替换为第二符号,得到第四分组;
S106、连接第四分组得到该段文字的国际化键Key;
S107、将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;得到第五分组;
S108、使用第五分组连接得到国际化后的代码;
S109、将第一分组中的非中文分组替换为第二符号,得到第六分组;
S110、连接第六分组得到翻译前的本国语言值Value1;
S111、将本国语言值Value1进行翻译,获得相应的国际化语言值Value2;
S112、根据翻译的国际化语言值Value2生成或修改国际化键值信息。
本发明还提供了一种自动生成键值的代码国际化装置,包括以下模块:
获取模块,用于获取需要进行国际代码化的内容;
第一分组模块,用于使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;并记录第一分组中哪些是中文哪些是非中文;
第二分组模块,用于将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;
第三分组模块,用于将第二分组中的标点符号都替换为第一符号得到第三分组;根据本发明的一个优选实施方式,第一符号为~,替换的标点符号包含中文的所有标点符号;
第四分组模块,用于将第三分组中的非中文区替换为第二符号,得到第四分组;
第一连接模块,用于连接第四分组得到该段文字的国际化键Key;
第五分组模块,用于将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;
第二连接模块,用于使用第五分组连接得到国际化后的代码;
第六分组模块,用于将第一分组中的非中文分组替换为第二符号,得到第六分组;
第三连接模块,用于连接第六分组得到翻译前的本国语言值Value1;
翻译模块,用于将本国语言值Value1进行翻译,获得相应的国际化语言值Value2;
国际化键值生成、修改模块,用于根据翻译的国际化语言值Value2生成或修改国际化键值信息。
根据本发明的一个优选实施方式,第一符号为~;第二符号为_。
根据本发明的一个优选实施方式,对于多音字和/或同音不同字,分别设置不同的国际化键Key。
根据本发明的一个优选实施方式,针对不同的标点符号合并国际化键Key,统一翻译;或者分别设置键值进行翻译。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1示出了根据本发明的一个实施例的一种自动生成键值的代码国际化方法;
图2示出了根据本发明的一个实施例的一种自动生成键值的代码国际化装置;
图3示出了根据本发明的一个实施例的一种在国际化语言编辑器中自动生成键值的代码国际化方法。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的自动生成键值的代码国际化方法其具体实施方式、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
在代码中找到需要国际化的文字时,一般通过自定义键值或哈希值的方式进行国际化操作。自定义键最常用序号法进行定义,比如:0001、0002、0003…的形式。当0001、0002、0003…在代码中出现的时候,技术人员无法直观的获得这些键的含义,必须要通过键值映射查找,这造成了源代码阅读上的不便。当使用哈希值的方式进行国际化的时候,在代码区会有原始字符串出现在代码中的问题,比如This.Text=LoadSDSting(“测试字符串”),这种代码虽然方便阅读,但在国际化配置文件中“测试字符串”被映射成了“5f633e42db2cd5dbcb1087ae6e2f50237a90668c”这样一段哈希值,这造成了国际化配置文件和代码不方便对应,增加了对键值进行增、删、查、改操作的难度。另外在程序遇到国际化方法LoadSDSting时,每次都需要计算传进中文的哈希值,这造成了国际化后程序运算量变大,程序的执行效率降低。
现有技术没有对整段句子进行键值自动生成的规则,而是按切分好的断句进行自动键值生成,比如:
文字您还有200优惠券,请在2016/11/11前使用。
代码您还有${user.coupon}优惠券,请在${user.expirationDate}前使用。
国际化配置
key6=…
key7=您还有
key8=优惠券,请在
key9=前使用。
key10=…
这样只能将整段的句子分开进行国际化,当翻译人员拿到这样的翻译列表,他不知道key6与key7是否有关系,也不能断定key7跟key8就一定有关系,这最终会造成翻译结果的不准确。
另外在排重规则上,现有技术使用冲突区列表解决哈希值冲突问题,哈希值与句子的内容并无直接关系,所以相近的句子不会产生相同的哈希值,这就造成了,即使很类似的句子也不能合并到一起,例如:
文字“您好。”VS“您好!”
国际化配置
sha1=您好。
sha2=您好!
因为他们的哈希值完全不同,所以不会提醒是否合并。排重规则在翻译系统中有着举足轻重的作用,比如一个词在软件系统中多处用到,在国际化过程中,第一次找到这个词的代码区定义键为0001,当在代码其它地方发现这个词的时候,因为操作人员不记得或不好找,因而重新定义这个词为的键为XXXX,这样使得翻译文件庞大冗余,增加了翻译人员的工作量,同时造成系统的无序和混乱。
根据本发明的一个具体实施方式,提供一种自动生成中文国际化键值,进行国际化代码的方法。
将获取的本国语言转换成拼音加声调的格式;例如:
你好->中文[你好]->拼音[nǐhǎo]->Key[ni3hao3]
遇到标点符号使用~进行替换;例如:
你好!->中文[你好!]->拼音[nǐhǎo~]->Key[ni3hao3~]
如果翻译中遇到整段中文被变量分割成两部分或更多时,使用如下方式进行替换:
您还有200优惠券,请在2016/11/11前使用。
->中文[您还有_优惠券,请在_前使用。]
->拼音[nǐn hǎi_yōu huì quàn~qǐng zài_qián shǐ yòng~]
->Key[nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~]
根据本发明的一个具体实施方式,提供一种值Value存储方法。
根据本发明的一个优选实施方式,例如需要进行国际化的文字为“你好”,可以转换为如下形式进行存储:
需要国际化文字: 你好!
中文cms_zh.properties中: ni3hao3~=你好!
日语cms_ja.properties中: ni3hao3~=こんにちは!
英文cms_en.properties中: ni3hao3~=Hello!
根据本发明的一个优选实施方式,例如需要进行国际化的文字为“您还有200优惠券,请在2016/11/11前使用”,可以转换为如下形式进行存储:
需要国际化文字: 您还有200优惠券,请在2016/11/11前使用。
中文cms_zh.properties中:nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=您还有_优惠券,请在_前使用。
因为nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4这个键太长,现在简写为key,现在实现下述方法,使得中文环境中
language.get(“key-0”)=您还有
language.get(“key-1”)=优惠券,请在
language.get(“key-2”)=前使用。
那么拼写“您还有200优惠券,请在2016/11/11前使用。”就改写为如下形式:
${language.get(“key-0”)}200${language.get(“key-1”)}2016/11/11${language.get(“key-2”)}
用上述方法可以保证翻译语句的完整性和一致性,这样翻译人员用类似做填空题的方式,进行语境分析和翻译。如果遇到大段文字需要国际化,可能生成超长的国际化键Key,这时候可以将生成的国际化键Key进行简化为“0001、0002”等自定义形式,以方便阅读,并且减轻超长国际化键Key给软件带来的计算压力。
下面看一下其它语言的文件存贮,使用上述相同方式:
日语cms_ja.properties中: key=あなたは_クーポンを持って、_前に使用してください。
使用同上方法,使得日语环境中
language.get(“key-0”)=あなたは
language.get(“key-1”)=クーポンを持って、
language.get(“key-2”)=前に使用してください。
最终得到翻译语句为:
あなたは200クーポンを持って、2016/11/11前に使用してください。
英文cms_en.properties中:key=You have_coupons,please use before_.
使用同上方法,使得英语环境中
language.get(“key-0”)=You have
language.get(“key-1”)=coupons,please use before
language.get(“key-2”)=.
最终得到翻译语句为:
You have 200coupons,please use before 2016/11/11.
一般程序会动态添加的200和2016/11/11这两个数值,使用模版的方式类似如下格式:
您还有${user.coupon}优惠券,请在${user.expirationDate}前使用。
最终“您还有200优惠券,请在2016/11/11前使用。”被国际化后显示为如下形式:
${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-0”)}${user.coupon}${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-1”)}${user.expirationDate}${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-2”)}
对于国际化代码”${language.get(Key)}”名称或实现方式不同的,可以使用配置模版进行配置,程序实现的只是替换生成的国际化键Key,这里可以对任意语言源码进行国际化,在C++、C、PHP、Python等实现的国际化的方法都可以进行替换。
在翻译过程中难免遇到多音字,造成它们的国际化键Key重复,这时通过分析它们的分组后的本地语言,提示是否合并这个国际化键Key,通过审核的方式,达到合并或分离国际化键Key的目的。
根据本发明的一个具体实施例,针对多音字的情形,例如:
“这个自行车行{háng卖车商家}”VS“这个自行车行{xíng可以的意思}”
因为无法通过字面获得“行”的准确发音,可以选择其中一个作为发音。这时候可以选择新建一个国际化键Key,用纠正发音的方式区别两个需要翻译的文字。
zhe4ge4zi4xing2che1hang2=自行车行{háng卖车商家}
zhe4ge4zi4xing2che1xing2=自行车行{xíng可以的意思}
根据本发明的一个具体实施例,针对同音不同字的情形,例如:
“百度”VS“摆渡”
因为读音完全一样,这需要通过两个不同后缀区别它们
bai3du4a=百度
bai3du4b=摆渡
根据本发明的一个具体实施例,针对标点符号不同的情形,例如:
“您好。”VS“您好!”
则可以选择合并国际化键Key,统一翻译
nin2hao3~=您好!
也可以选择不合并,分别翻译
nin2hao3~a=您好。
nin2hao3~b=您好!
如图1所示,根据本发明的一个具体实施方式,提供了一种自动生成键值的代码国际化方法,生成键值过程,实现的步骤如下:
S101、获取需要进行国际代码化的内容;
例:您还有200优惠券,请在2016/11/11前使用。
S102、使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;记录第一分组中哪些是中文哪些是非中文;
例如:第一分组:1、您还有
2、200
3、优惠券,请在
4、2016/11/11
5、前使用。
记录1、3、5为中文,2、4为非中文
S103、将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;
第二分组:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
S104、将第二分组中的标点符号都替换为第一符号得到第三分组;根据本发明的一个优选实施方式,第一符号为~,替换的标点符号包含中文的所有标点符号。
第三分组:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
S105、将第三分组中的非中文区替换为第二符号,得到第四分组;根据本发明的一个优选实施方式,第二符号为_;
第四分组:1、nin3hai3you3
2、_
3、you1hui4quan4~qing3zai4
4、_
5、qian2shi3yong4~
S106、连接第四分组得到该段文字的国际化键Key;
Key:nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~
S107、将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;得到第五分组;
第五分组:1、${language.get(“key-0”)}
2、200
3、${language.get(“key-1”)}
4、2016/11/11
5、${language.get(“key-2”)}
这里简写nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~为key
S108、使用第五分组连接得到国际化后的代码;
${language.get(“key-0”)}200${language.get(“key-1”)}2016/11/11${language.get(“key-2”)}
S109、将第一分组中的非中文分组为替换为第二符号,得到第六分组;根据本发明的一个优选实施方式,第二符号为_;
第六分组:1、您还有
2、_
3、优惠券,请在
4、_
5、前使用。
S110、连接第六分组得到翻译前的本国语言值Value1;
中文值Value1:您还有_优惠券,请在_前使用。
S111、将本国语言值Value1进行翻译,获得相应的国际化语言值Value2。
例如:翻译为日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
S112、根据翻译的国际化语言值Value2生成或修改国际化键值信息。
上述例子保存信息:
代码区
${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-0”)}200${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-1”)}2016/11/11${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-2”)}
国际化配置文件
cms_zh.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=您还有_优惠券,请在_前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=You have_coupons,please use before_.
如图2所示,根据本发明的一个具体实施方式,提供了一种自动生成键值的代码国际化装置,包括以下模块:
获取模块,用于获取需要进行国际代码化的内容;根据本发明的一个优选实施方式,当前需要进行国际代码化的内容为:您还有200优惠券,请在2016/11/11前使用;
第一分组模块,用于使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;并记录第一分组中哪些是中文哪些是非中文;所得到的第一分组,例如:
第一分组,1、您还有
2、200
3、优惠券,请在
4、2016/11/11
5、前使用。
记录1、3、5为中文,2、4为非中文
第二分组模块,用于将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;所得到的第二分组,例如:
第二分组:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
第三分组模块,用于将第二分组中的标点符号都替换为第一符号得到第三分组;根据本发明的一个优选实施方式,第一符号为~,替换的标点符号包含中文的所有标点符号;所得到的第三分组,例如:
第三分组:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
第四分组模块,用于将第三分组中的非中文区替换为第二符号,得到第四分组;根据本发明的一个优选实施方式,第二符号为_;所得到的第四分组,例如:
第四分组:1、nin3hai3you3
2、_
3、you1hui4quan4~qing3zai4
4、_
5、qian2shi3yong4~
第一连接模块,用于连接第四分组得到该段文字的国际化键Key;所述国际化键Key例如:
Key:nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~
第五分组模块,用于将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;得到第五分组;所得到的第二分组,例如:
第五分组:1、${language.get(“key-0”)}
2、200
3、${language.get(“key-1”)}
4、2016/11/11
5、${language.get(“key-2”)}
这里简写nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~为key
第二连接模块,用于使用第五分组连接得到国际化后的代码;所述代码例如:
${language.get(“key-0”)}200${language.get(“key-1”)}2016/11/11${language.get(“key-2”)}
第六分组模块,用于将第一分组中的非中文分组为替换为第二符号,得到第六分组;根据本发明的一个优选实施方式,第二符号为_;所述第六分组例如:
第六分组:1、您还有
2、_
3、优惠券,请在
4、_
5、前使用。
第三连接模块,用于连接第六分组得到翻译前的本国语言值Value1;所述本国语言值Value1例如:
中文值Value1:您还有_优惠券,请在_前使用。
翻译模块,用于将本国语言值Value1进行翻译,获得相应的国际化语言值Value2。
例如:翻译为日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
国际化键值生成、修改模块,用于根据翻译的国际化语言值Value2生成或修改国际化键值信息。
上述例子保存信息:
代码区
${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-0”)}200${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-1”)}2016/11/11${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-2”)}
国际化配置文件
cms_zh.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=您还有_优惠券,请在_前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=You have_coupons,please use before_.
如图3所示,根据本发明的一个具体实施方式,提供了一种在国际化语言编辑器中自动生成键值的代码国际化方法,生成键值过程,实现的步骤如下:
S301、选择编辑器代码段落拖放到国际化语言编辑器;
S302、获取拖放的内容;
例:您还有200优惠券,请在2016/11/11前使用。
S303、使用正则表达式,对中文连续字段和非中文连续字段进行分组,记录分组中哪些是中文哪些是非中文;
分组1:1、您还有
2、200
3、优惠券,请在
4、2016/11/11
5、前使用。
记录1、3、5为中文,2、4为非中文
S304、对S303分组的中文,通过汉字转拼音API转换为字母加声调形式,得到新分组;
分组2:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
S305、对S304分组中的所有标点符号都替换为~形式,得到新分组;
分组3:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
替换的标点符号包含中文的所有标点符号。
S306、对S305分组非中文区替换为_,得到新分组;
分组4:1、nin3hai3you3
2、_
3、you1hui4quan4~qing3zai4
4、_
5、qian2shi3yong4~
S307、连接S306分组得到该段文字的国际化键Key
Key:nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~
S308、替换S303分组的中文为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;
分组5:1、${language.get(“key-0”)}
2、200
3、${language.get(“key-1”)}
4、2016/11/11
5、${language.get(“key-2”)}
这里简写nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~为key
S309、使用S308分组连接得到这段本国语言国际化后的代码;
${language.get(“key-0”)}200${language.get(“key-1”)}2016/11/11${language.get(“key-2”)}
S310、使用S303分组,替换非中文分组为_,得到新分组;
分组6:1、您还有
2、_
3、优惠券,请在
4、_
5、前使用。
S311、连接S310分组得到翻译前的本国语言值Value1;
中文值Value1:您还有_优惠券,请在_前使用。
S312、使用S307生成的国际化键Key和S311中生成的中文Value1填充国际化配置文件编辑器表格中相应区域;
S313、在编辑器中替换选中未国际化的代码为S309生成的国际化后代码;
S314、通过人工或自动化翻译API直接对国际化配置文件编辑器中的本国语言值Value1进行翻译。并替换国际化配置文件编辑器表格中相应区域的国际化语言值Value2。
例如:翻译为日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
S315、若保存全部更改,则在代码编辑器保存国际化后的代码,国际化配置文件编辑器在相应的国际化配置文件中保存S312和S314生成或修改的国际化键值信息。
上述例子保存信息:
代码区
${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-0”)}200${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-1”)}2016/11/11${language.get(“nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~-2”)}
国际化配置文件
cms_zh.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=您还有_优惠券,请在_前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=You have_coupons,please use before_.
通过采用本发明所提供的自动生成键值代码国际化实现方法及装置不但解放了操作者自定义键值的劳动,而且对翻译内容进行了自动排重提醒,提高了翻译的效率。使用整段话自动生成键值的方法让操作者更有效把控翻译句子的完整度,最终翻译人员拿到的是完整的句子而不是一些字词列表。对一个大型游戏页游联运平台进行翻译,整个过程从几天缩短到几个小时,节约了国际化上线过程,提高了工作效率。
本方案的国际化配置部分,不限定是WEB页面、服务器代码、Android或IOS等APP代码,格式既可以是本文提到的Propeties、XML格式,也可以是其它格式化文本如Json或二进制数据。
本方案中涉及到的国际化配置文件,既可以保存在客户端本地,也可以保存在服务器,由服务器主动推送或者由客户端去获取。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种自动生成键值的代码国际化方法,包含以下步骤:
S101、获取需要进行国际化代码的内容;
S102、使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;记录第一分组中哪些是中文哪些是非中文;
S103、将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;
S104、将第二分组中的标点符号都替换为第一符号得到第三分组;
S105、将第三分组中的非中文区替换为第二符号,得到第四分组;
S106、连接第四分组得到该段文字的国际化键Key;
S107、将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;得到第五分组;
S108、使用第五分组连接得到国际化后的代码;
S109、将第一分组中的非中文分组替换为第二符号,得到第六分组;
S110、连接第六分组得到翻译前的本国语言值Value1;
S111、将本国语言值Value1进行翻译,获得相应的国际化语言值Value2;
S112、根据翻译的国际化语言值Value2生成或修改国际化键值信息。
2.根据权利要求1所述的方法,其特征在于:
第一符号为~;第二符号为_。
3.根据权利要求2所述的方法,其特征在于:
对于多音字和/或同音不同字,分别设置不同的国际化键Key。
4.根据权利要求1-3任一所述的方法,其特征在于:
针对不同的标点符号合并国际化键Key,统一翻译;或者分别设置键值进行翻译。
5.一种自动生成键值的代码国际化装置,包括以下模块:
获取模块,用于获取需要进行国际化代码的内容;
第一分组模块,用于使用正则表达式,对中文连续字段和非中文连续字段进行分组,得到第一分组;并记录第一分组中哪些是中文哪些是非中文;
第二分组模块,用于将第一分组通过汉字转拼音API转换为字母加声调形式,得到第二分组;
第三分组模块,用于将第二分组中的标点符号都替换为第一符号得到第三分组;
第四分组模块,用于将第三分组中的非中文区替换为第二符号,第二符号为_,得到第四分组;
第一连接模块,用于连接第四分组得到该段文字的国际化键Key;
第五分组模块,用于将第一分组中的中文替换为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;
第二连接模块,用于使用第五分组连接得到国际化后的代码;
第六分组模块,用于将第一分组中的非中文分组替换为第二符号,第二符号为_,得到第六分组;
第三连接模块,用于连接第六分组得到翻译前的本国语言值Value1;
翻译模块,用于将本国语言值Value1进行翻译,获得相应的国际化语言值Value2;
国际化键值生成、修改模块,用于根据翻译的国际化语言值Value2生成或修改国际化键值信息。
6.根据权利要求5所述的装置,其特征在于:
第一符号为~;第二符号为_。
7.根据权利要求6所述的装置,其特征在于:
对于多音字和/或同音不同字,分别设置不同的国际化键Key。
8.根据权利要求5-7任一所述的装置,其特征在于:
针对不同的标点符号合并国际化键Key,统一翻译;或者分别设置键值进行翻译。
9.一种在国际化语言编辑器中自动生成键值的代码国际化方法,步骤如下:
S301、选择编辑器代码段落拖放到国际化语言编辑器;
S302、获取拖放的内容;
S303、使用正则表达式,对中文连续字段和非中文连续字段进行分组,记录分组中哪些是中文哪些是非中文;
S304、对S303分组的中文,通过汉字转拼音API转换为字母加声调形式,得到新分组;
S305、对S304分组中的所有标点符号都替换为~形式,得到新分组;
S306、对S305分组非中文区替换为_,得到新分组;
S307、连接S306分组得到该段文字的国际化键Key;
S308、替换S303分组的中文为国际化代码和国际化键Key的形式,并按照替换的中文的位置,分别对国际化键Key叠加中线和序号,序号从0开始,每次加1;
S309、使用S308分组连接得到这段本国语言国际化后的代码;
S310、使用S303分组,替换非中文分组为_,得到新分组;
S311、连接S310分组得到翻译前的本国语言值Value1;
S312、使用S307生成的国际化键Key和S311中生成的本国语言值Value1填充国际化配置文件编辑器表格中相应区域;
S313、在编辑器中替换选中未国际化的代码为S309生成的国际化后代码;
S314、通过人工或自动化翻译API直接对国际化配置文件编辑器中的本国语言值Value1进行翻译;并替换国际化配置文件编辑器表格中相应区域的国际化语言值Value2;
S315、若保存全部更改,则在代码编辑器保存国际化后的代码,国际化配置文件编辑器在相应的国际化配置文件中保存S312和S314生成或修改的国际化键值信息。
10.根据权利要求9所述的方法,其特征在于:所述国际化配置文件,保存在客户端本地;或保存在服务器,由服务器主动推送或者由客户端去获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611229623.1A CN106775914B (zh) | 2016-12-27 | 2016-12-27 | 一种自动生成键值的代码国际化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611229623.1A CN106775914B (zh) | 2016-12-27 | 2016-12-27 | 一种自动生成键值的代码国际化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775914A CN106775914A (zh) | 2017-05-31 |
CN106775914B true CN106775914B (zh) | 2018-03-30 |
Family
ID=58922848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611229623.1A Active CN106775914B (zh) | 2016-12-27 | 2016-12-27 | 一种自动生成键值的代码国际化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775914B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413574B (zh) * | 2019-07-30 | 2023-04-07 | 深圳市携众通科技有限公司 | 一种自动生成代码国际化资源的方法 |
CN110806896B (zh) * | 2019-09-29 | 2020-11-13 | 上海派拉软件股份有限公司 | 基于maven扩展插件实现软件开发中国际化信息提取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093513A (zh) * | 2007-08-14 | 2007-12-26 | 金蝶软件(中国)有限公司 | 一种用于解决计算机软件多语言支持问题的方法和系统 |
CN102279847A (zh) * | 2011-08-17 | 2011-12-14 | 瑞斯康达科技发展股份有限公司 | 软件系统国际化方法和装置 |
US8468494B2 (en) * | 2007-01-22 | 2013-06-18 | Oracle Taleo Llc | In-line editor |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983238B2 (en) * | 2001-02-07 | 2006-01-03 | American International Group, Inc. | Methods and apparatus for globalizing software |
CN105354072A (zh) * | 2015-10-23 | 2016-02-24 | 北京京东尚科信息技术有限公司 | 一种基于Eclipse平台的代码生成方法 |
-
2016
- 2016-12-27 CN CN201611229623.1A patent/CN106775914B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468494B2 (en) * | 2007-01-22 | 2013-06-18 | Oracle Taleo Llc | In-line editor |
CN101093513A (zh) * | 2007-08-14 | 2007-12-26 | 金蝶软件(中国)有限公司 | 一种用于解决计算机软件多语言支持问题的方法和系统 |
CN102279847A (zh) * | 2011-08-17 | 2011-12-14 | 瑞斯康达科技发展股份有限公司 | 软件系统国际化方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106775914A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4993319B2 (ja) | ソフトウェアの国際化の検証を支援する装置及び方法 | |
JP6518981B1 (ja) | 翻訳装置、翻訳装置の制御プログラム、および翻訳装置を用いた翻訳方法 | |
US8160865B1 (en) | Systems and methods for managing coordinate geometry for a user interface template | |
CN106648819B (zh) | 一种基于编辑器的国际化代码转换方法 | |
KR102078627B1 (ko) | 사용자-입력 컨텐츠와 연관된 실시간 피드백 정보 제공 방법 및 시스템 | |
CN113220836A (zh) | 序列标注模型的训练方法、装置、电子设备和存储介质 | |
CN103488488A (zh) | 文本输入检查方法、装置及移动终端 | |
CN104239289A (zh) | 音节划分方法和音节划分设备 | |
CN107203500A (zh) | 基于递归替换展开回溯的excel公式面向对象语言的自动转换方法 | |
CN106775914B (zh) | 一种自动生成键值的代码国际化方法及装置 | |
CN106933811A (zh) | 一种词条自动生成方法和装置 | |
Kudi et al. | Online Examination with short text matching | |
CN107526742A (zh) | 用于处理多语言文本的方法和设备 | |
CN112667208A (zh) | 翻译错误识别方法、装置、计算机设备及可读存储介质 | |
CN110362691B (zh) | 一种句法树库构建系统 | |
CN104123138A (zh) | 一种erp系统的快速构建方法 | |
US9613019B2 (en) | Techniques for automatically generating test data | |
US20180032510A1 (en) | Automated translation of source code | |
CN111611779B (zh) | 辅助文本标注方法、装置、设备及其存储介质 | |
CN102955842A (zh) | 一种多特征融合识别中文机构名的控制方法 | |
US11087097B2 (en) | Automatic item generation for passage-based assessment | |
CN111652007A (zh) | 一种多种语言混合文件的翻译方法及装置 | |
CN110096259A (zh) | 一种Web页面元素定位方法及系统 | |
Kardava et al. | Computer Application of Georgian Words | |
US20230334069A1 (en) | Cross-platform content management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |