本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種網(wǎng)站的翻譯方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,全球越來(lái)越多的用戶使用網(wǎng)絡(luò)從事社交活動(dòng)。為此,提供服務(wù)的網(wǎng)站需要有不同國(guó)家語(yǔ)言版本以滿足不同國(guó)家的用戶需求。傳統(tǒng)的網(wǎng)站提供者會(huì)針對(duì)每種語(yǔ)言開(kāi)發(fā)對(duì)應(yīng)的一套版本,需要投入大量的人力來(lái)整理和翻譯增量的文本、開(kāi)發(fā)或復(fù)制多套代碼及校驗(yàn)多版本功能的一致性等,造成極大的成本消耗。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)傳統(tǒng)的網(wǎng)站針對(duì)每種語(yǔ)言開(kāi)發(fā)一套版本,需要開(kāi)發(fā)人員對(duì)每套版本進(jìn)行單獨(dú)維護(hù),極大消耗成本的問(wèn)題,提供一種網(wǎng)站的翻譯方法和裝置,不需要開(kāi)發(fā)人員維護(hù)多套版本,降低了成本。
一種網(wǎng)站的翻譯方法,包括:
獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù);
查找所述腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將所述源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯;
查找所述超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將所述超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯;
查找所述返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將所述返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
一種網(wǎng)站的翻譯裝置,包括:
數(shù)據(jù)獲取模塊,用于獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù);
第一翻譯模塊,用于查找所述腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將所述源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯;
第二翻譯模塊,用于查找所述超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將所述超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯;
第三翻譯模塊,用于查找所述返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將所述返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
上述網(wǎng)站的翻譯方法和裝置,通過(guò)獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù),查找其中的指定語(yǔ)言字符串進(jìn)行翻譯,開(kāi)發(fā)人員只需維護(hù)一個(gè)語(yǔ)言版本的網(wǎng)站即可,轉(zhuǎn)化成其他語(yǔ)言時(shí),將網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯,即可快速翻譯成其他語(yǔ)言的網(wǎng)站,降低了成本。
附圖說(shuō)明
圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖;
圖1B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
圖2為一個(gè)實(shí)施例中網(wǎng)站的翻譯方法的流程圖;
圖3為一個(gè)實(shí)施例中查找該腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將該源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯的步驟的流程圖;
圖4為一個(gè)實(shí)施例中網(wǎng)站的翻譯裝置的結(jié)構(gòu)框圖;
圖5為一個(gè)實(shí)施例中第一翻譯模塊的內(nèi)部結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
可以理解,本發(fā)明所使用的術(shù)語(yǔ)“第一”、“第二”等可在本文中用于描述各種元件,但這些元件不受這些術(shù)語(yǔ)限制。這些術(shù)語(yǔ)僅用于將第一個(gè)元件與另一個(gè)元件區(qū)分。舉例來(lái)說(shuō),在不脫離本發(fā)明的范圍的情況下,可以將第一客戶端稱為第二客戶端,且類似地,可將第二客戶端稱為第一客戶端。第一客戶端和第二客戶端兩者都是客戶端,但其不是同一客戶端。
圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖。如圖1A所示,該終端包括通過(guò)系統(tǒng)總線連接的處理器、非易失性存儲(chǔ)介質(zhì)、內(nèi)存儲(chǔ)器、網(wǎng)絡(luò)接口、顯示屏和輸入裝置。其中,終端的非易失性存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng),還包括一種網(wǎng)站的翻譯裝置,該網(wǎng)站的翻譯裝置用于實(shí)現(xiàn)一種網(wǎng)站的翻譯方法。該處理器用于提供計(jì)算和控制能力,支撐整個(gè)終端的運(yùn)行。終端中的內(nèi)存儲(chǔ)器為非易失性存儲(chǔ)介質(zhì)中的網(wǎng)站的翻譯裝置的運(yùn)行提供環(huán)境,該內(nèi)存儲(chǔ)器中可儲(chǔ)存有計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令被所述處理器執(zhí)行時(shí),可使得所述處理器執(zhí)行一種網(wǎng)站的翻譯方法。網(wǎng)絡(luò)接口用于與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信。終端的顯示屏可以是液晶顯示屏或者電子墨水顯示屏等,輸入裝置可以是顯示屏上覆蓋的觸摸層,也可以是終端外殼上設(shè)置的按鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸控板或鼠標(biāo)等。該終端可以是手機(jī)、平板電腦或者個(gè)人數(shù)字助理或穿戴式設(shè)備等。本領(lǐng)域技術(shù)人員可以理解,圖1A中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的終端的限定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
圖1B為一個(gè)實(shí)施例中服務(wù)器(或云端等)的內(nèi)部結(jié)構(gòu)示意圖。如圖1B所示,該服務(wù)器包括通過(guò)系統(tǒng)總線連接的處理器、非易失性存儲(chǔ)介質(zhì)、內(nèi)存儲(chǔ)器和網(wǎng)絡(luò)接口。其中,該服務(wù)器的非易失性存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫(kù)和網(wǎng)站的翻譯裝置,數(shù)據(jù)庫(kù)中存儲(chǔ)有各種語(yǔ)言之間的對(duì)應(yīng)關(guān)系的翻譯詞典,該網(wǎng)站的翻譯裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種網(wǎng)站的翻譯方法。該服務(wù)器的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi)存儲(chǔ)器為非易失性存儲(chǔ)介質(zhì)中的網(wǎng)站的翻譯裝置的運(yùn)行提供環(huán)境,該內(nèi)存儲(chǔ)器中可儲(chǔ)存有計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令被所述處理器執(zhí)行時(shí),可使得所述處理器執(zhí)行一種網(wǎng)站的翻譯方法。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過(guò)網(wǎng)絡(luò)連接通信等。服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來(lái)實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖1B中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
圖2為一個(gè)實(shí)施例中網(wǎng)站的翻譯方法的流程圖。如圖2所示,一種網(wǎng)站的翻譯方法,運(yùn)行于終端或服務(wù)器上,包括:
步驟202,獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù)。
本實(shí)施例中,網(wǎng)站是在因特網(wǎng)上根據(jù)一定的規(guī)則,使用HTML(Hyper TextMarkup Language,超文本標(biāo)記語(yǔ)言)等工具制作的用于展示特定內(nèi)容的網(wǎng)頁(yè)集合。網(wǎng)站數(shù)據(jù)包括腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的后端(后端是指網(wǎng)站后臺(tái))返回?cái)?shù)據(jù)等。
通常網(wǎng)站有需要翻譯的內(nèi)容散落在JavaScript(腳本源碼)、HTML結(jié)構(gòu)數(shù)據(jù)和后端Ajax(數(shù)據(jù)獲取層)返回?cái)?shù)據(jù)中。
HTML結(jié)構(gòu)數(shù)據(jù)可包含圖片、鏈接、文本、音樂(lè)、程序等元素。超文本標(biāo)記語(yǔ)言結(jié)構(gòu)包括頭部分和主體部分,頭部分用于提供關(guān)于網(wǎng)頁(yè)的信息,主體部分用于提供網(wǎng)頁(yè)的具體內(nèi)容。
步驟204,查找該腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將該源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯。
具體地,源碼節(jié)點(diǎn)是指腳本源碼中的節(jié)點(diǎn)。腳本源碼中節(jié)點(diǎn)可包括第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。第一節(jié)點(diǎn)類型可為BinaryExpression,表示包含“+”、“-”、“*”和“/”等連接運(yùn)算的節(jié)點(diǎn)。第二節(jié)點(diǎn)類型可為L(zhǎng)iteral,表示單文本節(jié)點(diǎn)。
通過(guò)遞歸遍歷查找腳本源碼中的節(jié)點(diǎn),查找到包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),再對(duì)該指定語(yǔ)言字符串按照詞典中記載的指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言。其中,指定語(yǔ)言為根據(jù)需要設(shè)定的人類語(yǔ)言。例如,腳本源碼由中國(guó)人開(kāi)發(fā)設(shè)計(jì),其中可能包含中文,該中文可作為指定語(yǔ)言。腳本源碼由美國(guó)人開(kāi)發(fā)設(shè)計(jì),其中可能包含英文,該英文可作為指定語(yǔ)言。目標(biāo)語(yǔ)言是指需要轉(zhuǎn)化得到的人類語(yǔ)言。例如,網(wǎng)站顯示的是中文版,需要顯示英文版,則需要將中文轉(zhuǎn)化為英文,則網(wǎng)站中的中文為指定語(yǔ)言,英文為目標(biāo)語(yǔ)言,則將網(wǎng)站中的指定語(yǔ)言字符串進(jìn)行翻譯,得到目標(biāo)語(yǔ)言字符串。
遞歸遍歷是指從根目錄逐級(jí)獲取節(jié)點(diǎn)。
根據(jù)不同的翻譯需求,采用不同的詞典進(jìn)行翻譯。詞典可記錄各種語(yǔ)言之間的對(duì)應(yīng)關(guān)系。
步驟206,查找該超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,超文本結(jié)構(gòu)節(jié)點(diǎn)是指超文本語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中的節(jié)點(diǎn)。超文本語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中可包括元素節(jié)點(diǎn)、文本節(jié)點(diǎn)、屬性節(jié)點(diǎn)、注釋節(jié)點(diǎn)等。元素節(jié)點(diǎn)是指包含完整信息的節(jié)點(diǎn)。文本節(jié)點(diǎn)包含在元素節(jié)點(diǎn)內(nèi)。屬性節(jié)點(diǎn)是記錄元素屬性信息的節(jié)點(diǎn)。元素有一些屬性,屬性的作用是對(duì)元素進(jìn)行詳細(xì)描述,如元素名稱、元素標(biāo)識(shí)等。注釋節(jié)點(diǎn)是指注釋。
查找超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串按照詞典中的記載的指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言。
步驟208,查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,數(shù)據(jù)獲取層中接收返回?cái)?shù)據(jù),在返回?cái)?shù)據(jù)中可能包含指定語(yǔ)言字符串,通過(guò)遞歸遍歷可查找到返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,將指定語(yǔ)言字符串按照詞典中的記載的指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言。
上述網(wǎng)站的翻譯方法,通過(guò)獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù),查找其中的指定語(yǔ)言字符串進(jìn)行翻譯,開(kāi)發(fā)人員只需維護(hù)一個(gè)語(yǔ)言版本的網(wǎng)站即可,轉(zhuǎn)化成其他語(yǔ)言時(shí),將網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯,即可快速翻譯成其他語(yǔ)言的網(wǎng)站,降低了成本。
在一個(gè)實(shí)施例中,如圖3所示,該查找該腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將該源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯的步驟包括:
步驟302,解析該腳本源碼,生成抽象語(yǔ)法樹(shù)。
具體地,抽象語(yǔ)法樹(shù)是腳本源碼抽象語(yǔ)法的樹(shù)狀表現(xiàn)形式。
步驟304,遞歸遍歷該抽象語(yǔ)法樹(shù),得到第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。
具體地,源碼節(jié)點(diǎn)是指腳本源碼中的節(jié)點(diǎn)。腳本源碼中節(jié)點(diǎn)可包括第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。第一節(jié)點(diǎn)類型可為BinaryExpression,表示包含“+”、“-”、“*”和“/”等連接運(yùn)算的節(jié)點(diǎn)。第二節(jié)點(diǎn)類型可為L(zhǎng)iteral,表示單文本節(jié)點(diǎn)。
步驟306,遞歸遍歷該第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn),從該第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中查找到屬于第二節(jié)點(diǎn)類型且節(jié)點(diǎn)屬性中包含指定語(yǔ)言字符串的源碼子節(jié)點(diǎn)時(shí),將該源碼子節(jié)點(diǎn)中的變量替換為占位符,將該源碼子節(jié)點(diǎn)中的指定語(yǔ)言字符串與占位符形成完整字符串,為該完整字符串分配索引標(biāo)識(shí),將該源碼子節(jié)點(diǎn)替換為函數(shù)類型節(jié)點(diǎn),將該函數(shù)類型節(jié)點(diǎn)中的完整字符串進(jìn)行翻譯,在翻譯之后,將該翻譯后的完整字符串中的占位符替換為變量,得到翻譯結(jié)果。
本實(shí)施例中,對(duì)第一節(jié)點(diǎn)類型BinaryExpression的源碼節(jié)點(diǎn)進(jìn)行遞歸遍歷,若查找到類型為第二節(jié)點(diǎn)類型Literal且Value(節(jié)點(diǎn)屬性)中包含指定語(yǔ)言字符串的源碼子節(jié)點(diǎn),則將源碼子節(jié)點(diǎn)中的變量替換為占位符,將源碼子節(jié)點(diǎn)中的指定語(yǔ)音字符與占位符形成完整字符串,為該完整字符串分配索引標(biāo)識(shí),在腳本源碼頭部為該源碼子節(jié)點(diǎn)建立索引標(biāo)識(shí)與完整字符串的映射關(guān)系。
將該源碼子節(jié)點(diǎn)替換為函數(shù)類型節(jié)點(diǎn),如callexpression類型,通過(guò)函數(shù)類型節(jié)點(diǎn)可以包含值為數(shù)組的arguments節(jié)點(diǎn)屬性,用于傳遞函數(shù)變量。Arguments數(shù)組中的值可包括索引標(biāo)識(shí)、占位符等。
第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中包含拼接字符串,即包括指定語(yǔ)言字符串和變量等。
例如,指定語(yǔ)言字符串為:var tips=‘你輸入的字符超出’+length+’個(gè)’。將指定語(yǔ)音字符串中的變量“+length+”替換為占位符“()”,將占位符與指定語(yǔ)言字符串形成完整字符串。為該完整字符串分配索引標(biāo)識(shí)10001。
索引標(biāo)識(shí):10001:你輸入的字符超出()個(gè)
源碼:var tips=_f8e02fb18b140036(10001,[length],‘()’);
對(duì)完整字符串進(jìn)行翻譯得到目標(biāo)語(yǔ)言(這里是英文)字符串The charactersyou entered are more than()。
則索引標(biāo)識(shí):10001:The characters you entered are more than()
源碼:var tips=_f8e02fb18b140036(10001,[length],‘()’);
再將翻譯后的完整字符串中占位符替換為對(duì)應(yīng)的變量,即The characters youentered are more than‘+length+’。再將替換為變量后的翻譯結(jié)果進(jìn)行修正處理,得到修正后的翻譯結(jié)果,如The characters you entered are more than length。
步驟308,獲取該第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中包含的指定語(yǔ)言字符串,將該指定語(yǔ)言字符串直接進(jìn)行翻譯。
本實(shí)施例中,第二節(jié)點(diǎn)類型Literal的源碼節(jié)點(diǎn)中指定語(yǔ)言字符串,按照詞典中的指定語(yǔ)言和目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到目標(biāo)語(yǔ)言字符串。
上述對(duì)腳本源碼進(jìn)行解析得到抽象語(yǔ)法樹(shù),通過(guò)遞歸遍歷抽象語(yǔ)法樹(shù)得到第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn),針對(duì)包含指定語(yǔ)言字符串和變量的字符串的源碼節(jié)點(diǎn),通過(guò)對(duì)變量采用占位符替換,對(duì)該源碼節(jié)點(diǎn)采用函數(shù)類型節(jié)點(diǎn)進(jìn)行替換,在翻譯后,實(shí)現(xiàn)函數(shù)返回,確保翻譯后的語(yǔ)句通順、正確。
在一個(gè)實(shí)施例中,查找該超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯,包括查找該超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串。
具體地,預(yù)先建立了各種詞典,詞典中記錄有各種語(yǔ)言相互之間的對(duì)應(yīng)關(guān)系。
在一個(gè)實(shí)施例中,該查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯,包括:查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串。
在一個(gè)實(shí)施例中,該查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯,包括:通過(guò)該數(shù)據(jù)獲取層和數(shù)據(jù)處理層中插入的中間件,對(duì)該返回?cái)?shù)據(jù)進(jìn)行遞歸遍歷,對(duì)該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,中間件是指設(shè)置在數(shù)據(jù)獲取層Ajax和數(shù)據(jù)處理層之間的過(guò)濾層。通過(guò)中間件對(duì)返回?cái)?shù)據(jù)進(jìn)行遞歸遍歷,查找到返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯得到目標(biāo)語(yǔ)言字符串。
此外,可根據(jù)指定語(yǔ)言代碼自動(dòng)生成或手動(dòng)整理得到數(shù)據(jù)的對(duì)照表,對(duì)照表中記錄有指定語(yǔ)音字符串到指定語(yǔ)言字符串的映射。在翻譯過(guò)程中,將對(duì)照表中映射關(guān)系替換為指定語(yǔ)言字符串到目標(biāo)語(yǔ)言字符串的映射。
在一個(gè)實(shí)施例中,上述網(wǎng)站的翻譯方法還包括:獲取待翻譯的增量文件及待翻譯的增量文件對(duì)應(yīng)的翻譯文件,將增量文件與對(duì)應(yīng)的翻譯文件更新到詞典。
本實(shí)施例中,查找到網(wǎng)站的腳本源碼、超文件標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,判斷指定語(yǔ)言字符串在詞典中是否存在對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串,若不存在,則指定語(yǔ)言字符串為增量字符串,將增量字符串聚集在一起形成待翻譯的增量文件,將待翻譯的增量文件進(jìn)行翻譯得到對(duì)應(yīng)的翻譯文件,將增量文件和翻譯文件更新到詞典中。
翻譯人員可在翻譯項(xiàng)目下配置好輸入、輸出及詞典路徑,啟動(dòng)執(zhí)行程序,程序會(huì)根據(jù)詞典分析源碼進(jìn)行文本或變量轉(zhuǎn)換,輸出翻譯后的網(wǎng)站版本。其中,輸入為待翻譯的源碼文件存儲(chǔ)路徑,輸出為完成翻譯后的源碼文件存儲(chǔ)路徑。有增量文件時(shí),由翻譯人員對(duì)增量文件進(jìn)行翻譯得到翻譯文件。
翻譯人員在網(wǎng)站入口處根據(jù)語(yǔ)言環(huán)境或者參數(shù)來(lái)引入對(duì)應(yīng)版本的資源文件,完成網(wǎng)站的語(yǔ)言版本的切換。
圖4為一個(gè)實(shí)施例中網(wǎng)站的翻譯裝置的結(jié)構(gòu)框圖。如圖4所示,一種網(wǎng)站的翻譯裝置,包括數(shù)據(jù)獲取模塊402、第一翻譯模塊404、第二翻譯模塊406和第三翻譯模塊408。其中:
數(shù)據(jù)獲取模塊402用于獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù)。
本實(shí)施例中,通常網(wǎng)站有需要翻譯的內(nèi)容散落在JavaScript、HTML結(jié)構(gòu)數(shù)據(jù)和后端Ajax返回?cái)?shù)據(jù)中。HTML結(jié)構(gòu)數(shù)據(jù)可包含圖片、鏈接、文本、音樂(lè)、程序等元素。超文本標(biāo)記語(yǔ)言結(jié)構(gòu)包括頭部分和主體部分,頭部分用于提供關(guān)于網(wǎng)頁(yè)的信息,主體部分用于提供網(wǎng)頁(yè)的具體內(nèi)容。
第一翻譯模塊404用于查找該腳本源碼中包含指定語(yǔ)言字符串的源碼節(jié)點(diǎn),將該源碼節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯。
具體地,源碼節(jié)點(diǎn)是指腳本源碼中的節(jié)點(diǎn)。腳本源碼中節(jié)點(diǎn)可包括第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。第一節(jié)點(diǎn)類型可為BinaryExpression,表示包含“+”、“-”、“*”和“/”等連接運(yùn)算的節(jié)點(diǎn)。第二節(jié)點(diǎn)類型可為L(zhǎng)iteral,表示單文本節(jié)點(diǎn)。
第二翻譯模塊406用于查找該超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,超文本結(jié)構(gòu)節(jié)點(diǎn)是指超文本語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中的節(jié)點(diǎn)。超文本語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中可包括元素節(jié)點(diǎn)、文本節(jié)點(diǎn)、屬性節(jié)點(diǎn)、注釋節(jié)點(diǎn)等。元素節(jié)點(diǎn)是指包含完整信息的節(jié)點(diǎn)。文本節(jié)點(diǎn)包含在元素節(jié)點(diǎn)內(nèi)。屬性節(jié)點(diǎn)是記錄元素屬性信息的節(jié)點(diǎn)。元素有一些屬性,屬性的作用是對(duì)元素進(jìn)行詳細(xì)描述,如元素名稱、元素標(biāo)識(shí)等。注釋節(jié)點(diǎn)是指注釋。
第三翻譯模塊408用于查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,數(shù)據(jù)獲取層中接收返回?cái)?shù)據(jù),在返回?cái)?shù)據(jù)中可能包含指定語(yǔ)言字符串,通過(guò)遞歸遍歷可查找到返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,將指定語(yǔ)言字符串按照詞典中的記載的指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言。
上述網(wǎng)站的翻譯裝置,通過(guò)獲取網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)獲取層接收的返回?cái)?shù)據(jù),查找其中的指定語(yǔ)言字符串進(jìn)行翻譯,開(kāi)發(fā)人員只需維護(hù)一個(gè)語(yǔ)言版本的網(wǎng)站即可,轉(zhuǎn)化成其他語(yǔ)言時(shí),將網(wǎng)站的腳本源碼、超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯,即可快速翻譯成其他語(yǔ)言的網(wǎng)站,降低了成本。
圖5為一個(gè)實(shí)施例中第一翻譯模塊的內(nèi)部結(jié)構(gòu)框圖。如圖5所示,第一翻譯模塊404包括解析單元4041、遞歸單元4042、第一翻譯單元4043和第二翻譯單元4044。其中:
解析單元4041用于解析該腳本源碼,生成抽象語(yǔ)法樹(shù)。
具體地,抽象語(yǔ)法樹(shù)是腳本源碼抽象語(yǔ)法的樹(shù)狀表現(xiàn)形式。
遞歸單元4042用于遞歸遍歷該抽象語(yǔ)法樹(shù),得到第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。
具體地,源碼節(jié)點(diǎn)是指腳本源碼中的節(jié)點(diǎn)。腳本源碼中節(jié)點(diǎn)可包括第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)。第一節(jié)點(diǎn)類型可為BinaryExpression,表示包含“+”、“-”、“*”和“/”等連接運(yùn)算的節(jié)點(diǎn)。第二節(jié)點(diǎn)類型可為L(zhǎng)iteral,表示單文本節(jié)點(diǎn)。
第一類翻譯單元4043用于遞歸遍歷該第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn),從該第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中查找到屬于第二節(jié)點(diǎn)類型且節(jié)點(diǎn)屬性中包含指定語(yǔ)言字符串的源碼子節(jié)點(diǎn)時(shí),將該源碼子節(jié)點(diǎn)中的變量替換為占位符,將該源碼子節(jié)點(diǎn)中的指定語(yǔ)言字符串與占位符形成完整字符串,為該完整字符串分配索引標(biāo)識(shí),將該源碼子節(jié)點(diǎn)替換為函數(shù)類型節(jié)點(diǎn),將該函數(shù)類型節(jié)點(diǎn)中的完整字符串進(jìn)行翻譯,在翻譯之后,將該翻譯后的完整字符串中的占位符替換為變量,得到翻譯結(jié)果。
本實(shí)施例中,對(duì)第一節(jié)點(diǎn)類型BinaryExpression的源碼節(jié)點(diǎn)進(jìn)行遞歸遍歷,若查找到類型為第二節(jié)點(diǎn)類型Literal且Value(節(jié)點(diǎn)屬性)中包含指定語(yǔ)言字符串的源碼子節(jié)點(diǎn),則將源碼子節(jié)點(diǎn)中的變量替換為占位符,將源碼子節(jié)點(diǎn)中的指定語(yǔ)音字符與占位符形成完整字符串,為該完整字符串分配索引標(biāo)識(shí),在腳本源碼頭部為該源碼子節(jié)點(diǎn)建立索引標(biāo)識(shí)與完整字符串的映射關(guān)系。
將該源碼子節(jié)點(diǎn)替換為函數(shù)類型節(jié)點(diǎn),如callexpression類型,通過(guò)函數(shù)類型節(jié)點(diǎn)可以包含值為數(shù)組的arguments節(jié)點(diǎn)屬性,用于傳遞函數(shù)變量。Arguments數(shù)組中的值可包括索引標(biāo)識(shí)、占位符等。
第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中包含拼接字符串,即包括指定語(yǔ)言字符串和變量等。
第二類翻譯單元4044用于獲取該第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)中包含的指定語(yǔ)言字符串,將該指定語(yǔ)言字符串直接進(jìn)行翻譯。
本實(shí)施例中,第二節(jié)點(diǎn)類型Literal的源碼節(jié)點(diǎn)中指定語(yǔ)言字符串,按照詞典中的指定語(yǔ)言和目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到目標(biāo)語(yǔ)言字符串。
上述對(duì)腳本源碼進(jìn)行解析得到抽象語(yǔ)法樹(shù),通過(guò)遞歸遍歷抽象語(yǔ)法樹(shù)得到第一節(jié)點(diǎn)類型的源碼節(jié)點(diǎn)和第二節(jié)點(diǎn)類型的源碼節(jié)點(diǎn),針對(duì)包含指定語(yǔ)言字符串和變量的字符串的源碼節(jié)點(diǎn),通過(guò)對(duì)變量采用占位符替換,對(duì)該源碼節(jié)點(diǎn)采用函數(shù)類型節(jié)點(diǎn)進(jìn)行替換,在翻譯后,實(shí)現(xiàn)函數(shù)返回,確保翻譯后的語(yǔ)句通順、正確。
在一個(gè)實(shí)施例中,該第二翻譯模塊406還用于查找該超文本標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)中包含指定語(yǔ)言字符串的超文本結(jié)構(gòu)節(jié)點(diǎn),將該超文本結(jié)構(gòu)節(jié)點(diǎn)中的指定語(yǔ)言字符串按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串。
具體地,預(yù)先建立了各種詞典,詞典中記錄有各種語(yǔ)言相互之間的對(duì)應(yīng)關(guān)系。
在一個(gè)實(shí)施例中,第三翻譯模塊408還用于查找該返回?cái)?shù)據(jù)中包含指定語(yǔ)言字符串的返回?cái)?shù)據(jù),將該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯,得到對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串。
在一個(gè)實(shí)施例中,該第三翻譯模塊408還用于通過(guò)該數(shù)據(jù)獲取層和數(shù)據(jù)處理層中插入的中間件,根據(jù)對(duì)照表,對(duì)該返回?cái)?shù)據(jù)進(jìn)行遞歸遍歷,對(duì)該返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串進(jìn)行翻譯。
本實(shí)施例中,中間件是指設(shè)置在數(shù)據(jù)獲取層Ajax和數(shù)據(jù)處理層之間的過(guò)濾層。通過(guò)中間件對(duì)返回?cái)?shù)據(jù)進(jìn)行遞歸遍歷,查找到返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,按照詞典中指定語(yǔ)言與目標(biāo)語(yǔ)言之間的對(duì)應(yīng)關(guān)系進(jìn)行翻譯得到目標(biāo)語(yǔ)言字符串。
在一個(gè)實(shí)施例中,上述網(wǎng)站的翻譯裝置還包括:更新模塊,用于獲取待翻譯的增量文件及待翻譯的增量文件對(duì)應(yīng)的翻譯文件,將增量文件與對(duì)應(yīng)的翻譯文件更新到詞典。
本實(shí)施例中,查找到網(wǎng)站的腳本源碼、超文件標(biāo)記語(yǔ)言結(jié)構(gòu)數(shù)據(jù)和返回?cái)?shù)據(jù)中的指定語(yǔ)言字符串,判斷指定語(yǔ)言字符串在詞典中是否存在對(duì)應(yīng)的目標(biāo)語(yǔ)言字符串,若不存在,則指定語(yǔ)言字符串為增量字符串,將增量字符串聚集在一起形成待翻譯的增量文件,將待翻譯的增量文件進(jìn)行翻譯得到對(duì)應(yīng)的翻譯文件,將增量文件和翻譯文件更新到詞典中。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。