本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種自動生成鍵值的代碼國際化方法及裝置。
背景技術(shù):
隨著軟件在世界各國的廣泛應(yīng)用,軟件處理語言的單一性給軟件的普及和用戶的應(yīng)用帶來了不便。如何使軟件能夠處理多種語言已成為人們關(guān)注的問題,軟件的國際化是解決這一問題的有效途徑。這需要每個程序員將自己開發(fā)的軟件部分的源代碼和資源文件分離,按照語言的不同,分成若干個資源文件,軟件中一般使用Properties來存儲國際化數(shù)據(jù)。Properties文件是一種用于存儲Key-Value(鍵-值)對的屬性存儲文件,其中格式為:每個Key-Value對獨(dú)立占一行,Key與Value之間使用等號(=)分隔;文件一般以.properties作為后綴。
一般一個Properties的文件對應(yīng)于一種語言。由于Properties文件是使用Key-Value對的方式存儲數(shù)據(jù),所以一般Key用于軟件程序中使用,而Value則用于對應(yīng)的顯示。
現(xiàn)有技術(shù)中公開了一種實(shí)現(xiàn)軟件國際化的方法和裝置,提取中文軟件源代碼中的中文字符串,并在相關(guān)位置添加調(diào)用函數(shù);針對所提取的各個中文字符串,采用哈希算法生成所述中文字符串的哈希值;生成至少一個資源文件,所述資源文件中包括所述哈希值以及所述中文字符串對應(yīng)的翻譯文本串;當(dāng)該中文軟件執(zhí)行時,根據(jù)通過調(diào)用函數(shù)獲取到的中文字符串,生成所述中文字符串的哈希值,根據(jù)所述哈希值從資源文件中獲取相應(yīng)的翻譯文本串;在該中文軟件界面顯示所述翻譯文本串。
上述實(shí)現(xiàn)方式是通過中文字符串哈希值作為鍵進(jìn)行代碼國際化操作的。沒有對整段文字被分割成多段的情況提供解決方案,這樣就造成了翻譯人員拿到的都是斷句,不能結(jié)合上下文進(jìn)行準(zhǔn)確的翻譯。
技術(shù)實(shí)現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種自動生成鍵值的代碼國際化方法,包含以下步驟:
S101、獲取需要進(jìn)行國際代碼化的內(nèi)容;
S102、使用正則表達(dá)式,對中文連續(xù)字段和非中文連續(xù)字段進(jìn)行分組,得到第一分組;記錄第一分組中哪些是中文哪些是非中文;
S103、將第一分組通過漢字轉(zhuǎn)拼音API轉(zhuǎn)換為字母加聲調(diào)形式,得到第二分組;
S104、將第二分組中的標(biāo)點(diǎn)符號都替換為第一符號得到第三分組;
S105、將第三分組中的非中文區(qū)替換為第二符號,得到第四分組;
S106、連接第四分組得到該段文字的國際化鍵Key;
S107、將第一分組中的中文替換為國際化代碼和國際化鍵Key的形式,并按照替換的中文的位置,分別對國際化鍵Key疊加中線和序號,序號從0開始,每次加1;得到第五分組;
S108、使用第五分組連接得到國際化后的代碼;
S109、將第一分組中的非中文分組替換為第二符號,得到第六分組;
S110、連接第六分組得到翻譯前的本國語言值Value1;
S111、將本國語言值Value1進(jìn)行翻譯,獲得相應(yīng)的國際化語言值Value2;
S112、根據(jù)翻譯的國際化語言值Value2生成或修改國際化鍵值信息。
本發(fā)明還提供了一種自動生成鍵值的代碼國際化裝置,包括以下模塊:
獲取模塊,用于獲取需要進(jìn)行國際代碼化的內(nèi)容;
第一分組模塊,用于使用正則表達(dá)式,對中文連續(xù)字段和非中文連續(xù)字段進(jìn)行分組,得到第一分組;并記錄第一分組中哪些是中文哪些是非中文;
第二分組模塊,用于將第一分組通過漢字轉(zhuǎn)拼音API轉(zhuǎn)換為字母加聲調(diào)形式,得到第二分組;
第三分組模塊,用于將第二分組中的標(biāo)點(diǎn)符號都替換為第一符號得到第三分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第一符號為~,替換的標(biāo)點(diǎn)符號包含中文的所有標(biāo)點(diǎn)符號;
第四分組模塊,用于將第三分組中的非中文區(qū)替換為第二符號,得到第四分組;
第一連接模塊,用于連接第四分組得到該段文字的國際化鍵Key;
第五分組模塊,用于將第一分組中的中文替換為國際化代碼和國際化鍵Key的形式,并按照替換的中文的位置,分別對國際化鍵Key疊加中線和序號,序號從0開始,每次加1;
第二連接模塊,用于使用第五分組連接得到國際化后的代碼;
第六分組模塊,用于將第一分組中的非中文分組替換為第二符號,得到第六分組;
第三連接模塊,用于連接第六分組得到翻譯前的本國語言值Value1;
翻譯模塊,用于將本國語言值Value1進(jìn)行翻譯,獲得相應(yīng)的國際化語言值Value2;
國際化鍵值生成、修改模塊,用于根據(jù)翻譯的國際化語言值Value2生成或修改國際化鍵值信息。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第一符號為~;第二符號為_。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,對于多音字和/或同音不同字,分別設(shè)置不同的國際化鍵Key。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,針對不同的標(biāo)點(diǎn)符號合并國際化鍵Key,統(tǒng)一翻譯;或者分別設(shè)置鍵值進(jìn)行翻譯。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,并可依照說明書的內(nèi)容予以實(shí)施,以下以本發(fā)明的較佳實(shí)施例并配合附圖詳細(xì)說明如后。
附圖說明
圖1示出了根據(jù)本發(fā)明的一個實(shí)施例的一種自動生成鍵值的代碼國際化方法;
圖2示出了根據(jù)本發(fā)明的一個實(shí)施例的一種自動生成鍵值的代碼國際化裝置;
圖3示出了根據(jù)本發(fā)明的一個實(shí)施例的一種在國際化語言編輯器中自動生成鍵值的代碼國際化方法。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對依據(jù)本發(fā)明提出的自動生成鍵值的代碼國際化方法其具體實(shí)施方式、特征及其功效,詳細(xì)說明如后。在下述說明中,不同的“一實(shí)施例”或“實(shí)施例”指的不一定是同一實(shí)施例。此外,一或多個實(shí)施例中的特定特征、結(jié)構(gòu)、或特點(diǎn)可由任何合適形式組合。
在代碼中找到需要國際化的文字時,一般通過自定義鍵值或哈希值的方式進(jìn)行國際化操作。自定義鍵最常用序號法進(jìn)行定義,比如:0001、0002、0003…的形式。當(dāng)0001、0002、0003…在代碼中出現(xiàn)的時候,技術(shù)人員無法直觀的獲得這些鍵的含義,必須要通過鍵值映射查找,這造成了源代碼閱讀上的不便。當(dāng)使用哈希值的方式進(jìn)行國際化的時候,在代碼區(qū)會有原始字符串出現(xiàn)在代碼中的問題,比如This.Text=LoadSDSting(“測試字符串”),這種代碼雖然方便閱讀,但在國際化配置文件中“測試字符串”被映射成了“5f633e42db2cd5dbcb1087ae6e2f50237a90668c”這樣一段哈希值,這造成了國際化配置文件和代碼不方便對應(yīng),增加了對鍵值進(jìn)行增、刪、查、改操作的難度。另外在程序遇到國際化方法LoadSDSting時,每次都需要計(jì)算傳進(jìn)中文的哈希值,這造成了國際化后程序運(yùn)算量變大,程序的執(zhí)行效率降低。
現(xiàn)有技術(shù)沒有對整段句子進(jìn)行鍵值自動生成的規(guī)則,而是按切分好的斷句進(jìn)行自動鍵值生成,比如:
文字您還有200優(yōu)惠券,請?jiān)?016/11/11前使用。
代碼您還有${user.coupon}優(yōu)惠券,請?jiān)?{user.expirationDate}前使用。
國際化配置
key6=…
key7=您還有
key8=優(yōu)惠券,請?jiān)?/p>
key9=前使用。
key10=…
這樣只能將整段的句子分開進(jìn)行國際化,當(dāng)翻譯人員拿到這樣的翻譯列表,他不知道key6與key7是否有關(guān)系,也不能斷定key7跟key8就一定有關(guān)系,這最終會造成翻譯結(jié)果的不準(zhǔn)確。
另外在排重規(guī)則上,現(xiàn)有技術(shù)使用沖突區(qū)列表解決哈希值沖突問題,哈希值與句子的內(nèi)容并無直接關(guān)系,所以相近的句子不會產(chǎn)生相同的哈希值,這就造成了,即使很類似的句子也不能合并到一起,例如:
文字“您好?!盫S“您好!”
國際化配置
sha1=您好。
sha2=您好!
因?yàn)樗麄兊墓V低耆煌?,所以不會提醒是否合并。排重?guī)則在翻譯系統(tǒng)中有著舉足輕重的作用,比如一個詞在軟件系統(tǒng)中多處用到,在國際化過程中,第一次找到這個詞的代碼區(qū)定義鍵為0001,當(dāng)在代碼其它地方發(fā)現(xiàn)這個詞的時候,因?yàn)椴僮魅藛T不記得或不好找,因而重新定義這個詞為的鍵為XXXX,這樣使得翻譯文件龐大冗余,增加了翻譯人員的工作量,同時造成系統(tǒng)的無序和混亂。
根據(jù)本發(fā)明的一個具體實(shí)施方式,提供一種自動生成中文國際化鍵值,進(jìn)行國際化代碼的方法。
將獲取的本國語言轉(zhuǎn)換成拼音加聲調(diào)的格式;例如:
你好->中文[你好]->拼音[nǐhǎo]->Key[ni3hao3]
遇到標(biāo)點(diǎn)符號使用~進(jìn)行替換;例如:
你好!->中文[你好!]->拼音[nǐhǎo~]->Key[ni3hao3~]
如果翻譯中遇到整段中文被變量分割成兩部分或更多時,使用如下方式進(jìn)行替換:
您還有200優(yōu)惠券,請?jiān)?016/11/11前使用。
->中文[您還有_優(yōu)惠券,請?jiān)赺前使用。]
->拼音[nǐn hǎi_yōu huì quàn~qǐng zài_qián shǐ yòng~]
->Key[nin3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4~]
根據(jù)本發(fā)明的一個具體實(shí)施方式,提供一種值Value存儲方法。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,例如需要進(jìn)行國際化的文字為“你好”,可以轉(zhuǎn)換為如下形式進(jìn)行存儲:
需要國際化文字:你好!
中文cms_zh.properties中: ni3hao3~=你好!
日語cms_ja.properties中:ni3hao3~=こんにちは!
英文cms_en.properties中: ni3hao3~=Hello!
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,例如需要進(jìn)行國際化的文字為“您還有200優(yōu)惠券,請?jiān)?016/11/11前使用”,可以轉(zhuǎn)換為如下形式進(jìn)行存儲:
需要國際化文字:您還有200優(yōu)惠券,請?jiān)?016/11/11前使用。
中文cms_zh.properties中:nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=您還有_優(yōu)惠券,請?jiān)赺前使用。
因?yàn)閚in3hai3_you1hui4quan4~qing3zai4_qian2shi3yong4這個鍵太長,現(xiàn)在簡寫為key,現(xiàn)在實(shí)現(xiàn)下述方法,使得中文環(huán)境中
language.get(“key-0”)=您還有
language.get(“key-1”)=優(yōu)惠券,請?jiān)?/p>
language.get(“key-2”)=前使用。
那么拼寫“您還有200優(yōu)惠券,請?jiān)?016/11/11前使用?!本透膶憺槿缦滦问剑?/p>
${language.get(“key-0”)}200${language.get(“key-1”)}2016/11/11${language.get(“key-2”)}
用上述方法可以保證翻譯語句的完整性和一致性,這樣翻譯人員用類似做填空題的方式,進(jìn)行語境分析和翻譯。如果遇到大段文字需要國際化,可能生成超長的國際化鍵Key,這時候可以將生成的國際化鍵Key進(jìn)行簡化為“0001、0002”等自定義形式,以方便閱讀,并且減輕超長國際化鍵Key給軟件帶來的計(jì)算壓力。
下面看一下其它語言的文件存貯,使用上述相同方式:
日語cms_ja.properties中: key=あなたは_クーポンを持って、_前に使用してください。
使用同上方法,使得日語環(huán)境中
language.get(“key-0”)=あなたは
language.get(“key-1”)=クーポンを持って、
language.get(“key-2”)=前に使用してください。
最終得到翻譯語句為:
あなたは200クーポンを持って、2016/11/11前に使用してください。
英文cms_en.properties中:key=Y(jié)ou have_coupons,please use before_.
使用同上方法,使得英語環(huán)境中
language.get(“key-0”)=Y(jié)ou have
language.get(“key-1”)=coupons,please use before
language.get(“key-2”)=.
最終得到翻譯語句為:
You have 200coupons,please use before 2016/11/11.
一般程序會動態(tài)添加的200和2016/11/11這兩個數(shù)值,使用模版的方式類似如下格式:
您還有${user.coupon}優(yōu)惠券,請?jiān)?{user.expirationDate}前使用。
最終“您還有200優(yōu)惠券,請?jiān)?016/11/11前使用?!北粐H化后顯示為如下形式:
${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)}”名稱或?qū)崿F(xiàn)方式不同的,可以使用配置模版進(jìn)行配置,程序?qū)崿F(xiàn)的只是替換生成的國際化鍵Key,這里可以對任意語言源碼進(jìn)行國際化,在C++、C、PHP、Python等實(shí)現(xiàn)的國際化的方法都可以進(jìn)行替換。
在翻譯過程中難免遇到多音字,造成它們的國際化鍵Key重復(fù),這時通過分析它們的分組后的本地語言,提示是否合并這個國際化鍵Key,通過審核的方式,達(dá)到合并或分離國際化鍵Key的目的。
根據(jù)本發(fā)明的一個具體實(shí)施例,針對多音字的情形,例如:
“這個自行車行{háng賣車商家}”VS“這個自行車行{xíng可以的意思}”
因?yàn)闊o法通過字面獲得“行”的準(zhǔn)確發(fā)音,可以選擇其中一個作為發(fā)音。這時候可以選擇新建一個國際化鍵Key,用糾正發(fā)音的方式區(qū)別兩個需要翻譯的文字。
zhe4ge4zi4xing2che1hang2=自行車行{háng賣車商家}
zhe4ge4zi4xing2che1xing2=自行車行{xíng可以的意思}
根據(jù)本發(fā)明的一個具體實(shí)施例,針對同音不同字的情形,例如:
“百度”VS“擺渡”
因?yàn)樽x音完全一樣,這需要通過兩個不同后綴區(qū)別它們
bai3du4a=百度
bai3du4b=擺渡
根據(jù)本發(fā)明的一個具體實(shí)施例,針對標(biāo)點(diǎn)符號不同的情形,例如:
“您好?!盫S“您好!”
則可以選擇合并國際化鍵Key,統(tǒng)一翻譯
nin2hao3~=您好!
也可以選擇不合并,分別翻譯
nin2hao3~a=您好。
nin2hao3~b=您好!
如圖1所示,根據(jù)本發(fā)明的一個具體實(shí)施方式,提供了一種自動生成鍵值的代碼國際化方法,生成鍵值過程,實(shí)現(xiàn)的步驟如下:
S101、獲取需要進(jìn)行國際代碼化的內(nèi)容;
例:您還有200優(yōu)惠券,請?jiān)?016/11/11前使用。
S102、使用正則表達(dá)式,對中文連續(xù)字段和非中文連續(xù)字段進(jìn)行分組,得到第一分組;記錄第一分組中哪些是中文哪些是非中文;
例如:第一分組:1、您還有
2、200
3、優(yōu)惠券,請?jiān)?/p>
4、2016/11/11
5、前使用。
記錄1、3、5為中文,2、4為非中文
S103、將第一分組通過漢字轉(zhuǎn)拼音API轉(zhuǎn)換為字母加聲調(diào)形式,得到第二分組;
第二分組:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
S104、將第二分組中的標(biāo)點(diǎn)符號都替換為第一符號得到第三分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第一符號為~,替換的標(biāo)點(diǎn)符號包含中文的所有標(biāo)點(diǎn)符號。
第三分組:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
S105、將第三分組中的非中文區(qū)替換為第二符號,得到第四分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第二符號為_;
第四分組: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、將第一分組中的非中文分組為替換為第二符號,得到第六分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第二符號為_;
第六分組:1、您還有
2、_
3、優(yōu)惠券,請?jiān)?/p>
4、_
5、前使用。
S110、連接第六分組得到翻譯前的本國語言值Value1;
中文值Value1:您還有_優(yōu)惠券,請?jiān)赺前使用。
S111、將本國語言值Value1進(jìn)行翻譯,獲得相應(yīng)的國際化語言值Value2。
例如:翻譯為日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
S112、根據(jù)翻譯的國際化語言值Value2生成或修改國際化鍵值信息。
上述例子保存信息:
代碼區(qū)
${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~=您還有_優(yōu)惠券,請?jiān)赺前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=Y(jié)ou have_coupons,please use before_.
如圖2所示,根據(jù)本發(fā)明的一個具體實(shí)施方式,提供了一種自動生成鍵值的代碼國際化裝置,包括以下模塊:
獲取模塊,用于獲取需要進(jìn)行國際代碼化的內(nèi)容;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,當(dāng)前需要進(jìn)行國際代碼化的內(nèi)容為:您還有200優(yōu)惠券,請?jiān)?016/11/11前使用;
第一分組模塊,用于使用正則表達(dá)式,對中文連續(xù)字段和非中文連續(xù)字段進(jìn)行分組,得到第一分組;并記錄第一分組中哪些是中文哪些是非中文;所得到的第一分組,例如:
第一分組,1、您還有
2、200
3、優(yōu)惠券,請?jiān)?/p>
4、2016/11/11
5、前使用。
記錄1、3、5為中文,2、4為非中文
第二分組模塊,用于將第一分組通過漢字轉(zhuǎn)拼音API轉(zhuǎn)換為字母加聲調(diào)形式,得到第二分組;所得到的第二分組,例如:
第二分組:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
第三分組模塊,用于將第二分組中的標(biāo)點(diǎn)符號都替換為第一符號得到第三分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第一符號為~,替換的標(biāo)點(diǎn)符號包含中文的所有標(biāo)點(diǎn)符號;所得到的第三分組,例如:
第三分組:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
第四分組模塊,用于將第三分組中的非中文區(qū)替換為第二符號,得到第四分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第二符號為_;所得到的第四分組,例如:
第四分組: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”)}
第六分組模塊,用于將第一分組中的非中文分組為替換為第二符號,得到第六分組;根據(jù)本發(fā)明的一個優(yōu)選實(shí)施方式,第二符號為_;所述第六分組例如:
第六分組:1、您還有
2、_
3、優(yōu)惠券,請?jiān)?/p>
4、_
5、前使用。
第三連接模塊,用于連接第六分組得到翻譯前的本國語言值Value1;所述本國語言值Value1例如:
中文值Value1:您還有_優(yōu)惠券,請?jiān)赺前使用。
翻譯模塊,用于將本國語言值Value1進(jìn)行翻譯,獲得相應(yīng)的國際化語言值Value2。
例如:翻譯為日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
國際化鍵值生成、修改模塊,用于根據(jù)翻譯的國際化語言值Value2生成或修改國際化鍵值信息。
上述例子保存信息:
代碼區(qū)
${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~=您還有_優(yōu)惠券,請?jiān)赺前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=Y(jié)ou have_coupons,please use before_.
如圖3所示,根據(jù)本發(fā)明的一個具體實(shí)施方式,提供了一種在國際化語言編輯器中自動生成鍵值的代碼國際化方法,生成鍵值過程,實(shí)現(xiàn)的步驟如下:
S301、選擇編輯器代碼段落拖放到國際化語言編輯器;
S302、獲取拖放的內(nèi)容;
例:您還有200優(yōu)惠券,請?jiān)?016/11/11前使用。
S303、使用正則表達(dá)式,對中文連續(xù)字段和非中文連續(xù)字段進(jìn)行分組,記錄分組中哪些是中文哪些是非中文;
分組1:1、您還有
2、200
3、優(yōu)惠券,請?jiān)?/p>
4、2016/11/11
5、前使用。
記錄1、3、5為中文,2、4為非中文
S304、對S303分組的中文,通過漢字轉(zhuǎn)拼音API轉(zhuǎn)換為字母加聲調(diào)形式,得到新分組;
分組2:1、nin3hai3you3
2、200
3、you1hui4quan4,qing3zai4
4、2016/11/11
5、qian2shi3yong4。
S305、對S304分組中的所有標(biāo)點(diǎn)符號都替換為~形式,得到新分組;
分組3:1、nin3hai3you3
2、200
3、you1hui4quan4~qing3zai4
4、2016/11/11
5、qian2shi3yong4~
替換的標(biāo)點(diǎn)符號包含中文的所有標(biāo)點(diǎn)符號。
S306、對S305分組非中文區(qū)替換為_,得到新分組;
分組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、優(yōu)惠券,請?jiān)?/p>
4、_
5、前使用。
S311、連接S310分組得到翻譯前的本國語言值Value1;
中文值Value1:您還有_優(yōu)惠券,請?jiān)赺前使用。
S312、使用S307生成的國際化鍵Key和S311中生成的中文Value1填充國際化配置文件編輯器表格中相應(yīng)區(qū)域;
S313、在編輯器中替換選中未國際化的代碼為S309生成的國際化后代碼;
S314、通過人工或自動化翻譯API直接對國際化配置文件編輯器中的本國語言值Value1進(jìn)行翻譯。并替換國際化配置文件編輯器表格中相應(yīng)區(qū)域的國際化語言值Value2。
例如:翻譯為日文、英文
日文Value2:あなたは_クーポンを持って、_前に使用してください。
英文Value2:You have_coupons,please use before_.
S315、若保存全部更改,則在代碼編輯器保存國際化后的代碼,國際化配置文件編輯器在相應(yīng)的國際化配置文件中保存S312和S314生成或修改的國際化鍵值信息。
上述例子保存信息:
代碼區(qū)
${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~=您還有_優(yōu)惠券,請?jiān)赺前使用。
cms_ja.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=あなたは_クーポンを持って、_前に使用してください。
cms_en.properties
nin3hai3you3_you1hui4quan4~qing3zai4_qian2shi3yong4~=Y(jié)ou have_coupons,please use before_.
通過采用本發(fā)明所提供的自動生成鍵值代碼國際化實(shí)現(xiàn)方法及裝置不但解放了操作者自定義鍵值的勞動,而且對翻譯內(nèi)容進(jìn)行了自動排重提醒,提高了翻譯的效率。使用整段話自動生成鍵值的方法讓操作者更有效把控翻譯句子的完整度,最終翻譯人員拿到的是完整的句子而不是一些字詞列表。對一個大型游戲頁游聯(lián)運(yùn)平臺進(jìn)行翻譯,整個過程從幾天縮短到幾個小時,節(jié)約了國際化上線過程,提高了工作效率。
本方案的國際化配置部分,不限定是WEB頁面、服務(wù)器代碼、Android或IOS等APP代碼,格式既可以是本文提到的Propeties、XML格式,也可以是其它格式化文本如Json或二進(jìn)制數(shù)據(jù)。
本方案中涉及到的國際化配置文件,既可以保存在客戶端本地,也可以保存在服務(wù)器,由服務(wù)器主動推送或者由客戶端去獲取。
以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。