利用第三方翻譯API翻譯整個網(wǎng)站

最新一個項目需要全站翻譯诗芜,但是有沒有做國際化恨闪。改起來比較麻煩究飞。所以就想有沒有什么好的方法可以直接翻譯整個網(wǎng)站置谦。

思路:

利用第三方翻譯API,把網(wǎng)頁中所有的中文發(fā)過去亿傅,拿到返回值之后把所有中文替換成英文霉祸。

1 百度翻譯開發(fā)平臺注冊

官網(wǎng)有很詳細(xì)的問題,一步一步走就OK啦袱蜡。附上它的官網(wǎng)丝蹭。
http://api.fanyi.baidu.com/api/trans/product/index

2 怎么使用

直接上代碼吧,注釋也還算清晰坪蚁。

<!doctype html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <div>測試
        <div>橘子</div>
    </div>
    <div>梨</div>
    <div>測試</div>
    <div>零食</div>
    <div>水果</div>
    <div>上班</div>
    <script src="js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="./js/md5.js"></script>
    <script type="text/javascript">
        transformLanguage('en');
        function transformLanguage(newLanguage) {
            // 獲取所有dom元素中文
            let transformStr = '';
            // 獲取所有dom元素
            function getChildDom(dom, type, data = {}) {
                if(type == 'read') {
                    [...dom.children].forEach(v => {
                        // 判斷中文
                        // /^[\u0391-\uFFE5]+$/
                        let re= /[\u4e00-\u9fa5]/g;
                        // 防止某些標(biāo)簽有內(nèi)容并且有標(biāo)簽 奔穿,或者有空格 
                        let vHtml = $(v).contents().filter(function (index, content) {return content.nodeType === 3}).text().trim();
                        // 跳過script標(biāo)簽
                        if (re.test(vHtml) && v.tagName != 'SCRIPT') {
                            transformStr += `${vHtml},`
                        }
                        // 遞歸獲取元素
                        getChildDom(v, type, data);
                    })
                }else {
                    let transOld = data.trans_result[0].src.split(',');
                    let transNew = data.trans_result[0].dst.split(',');
                    [...dom.children].forEach(v => {
                        // 判斷中文
                        // /^[\u0391-\uFFE5]+$/
                        let re= /[\u4e00-\u9fa5]/g;
                        let vHtml = $(v).contents().filter(function (index, content) {return content.nodeType === 3}).text().trim();
                        // 跳過script標(biāo)簽
                        if (re.test(vHtml) && v.tagName != 'SCRIPT') {
                            // 防止標(biāo)簽里面還有標(biāo)簽,所以只替換里面的html,使用replace
                            $(v).html(
                                $(v).html().replace(
                                transOld[transOld.findIndex(arrList => arrList == vHtml)]
                                ,
                                transNew[transOld.findIndex(arrList => arrList == vHtml)]
                                )
                            )
                        }
                        // 遞歸獲取元素
                        getChildDom(v, type, data);
                    })
                }
            }
            getChildDom(document,'read');
            getTranslateData();
            // 獲取翻譯
            function getTranslateData() {
                let appid = '*******************';   // 百度翻譯API的appid
                let key = '*********************';   // 百度翻譯API的key
                let salt = (new Date).getTime();
                let query = transformStr;
                let from = 'zh';
                let to = newLanguage;
                let str1 = appid + query + salt + key;
                let sign = MD5(str1);
                $.ajax({
                    url: 'http://api.fanyi.baidu.com/api/trans/vip/translate',
                    type: 'get',
                    dataType: 'jsonp',
                    data: {
                        q: query,
                        appid: appid,
                        salt: salt,
                        from: from,
                        to: to,
                        sign: sign
                    },
                    success: function(data) {
                        data.trans_result && getChildDom(document,'write',data);
                        console.log(data);
                    }
                });
            }
        }
    </script>
</body>

網(wǎng)上隨便找一個jq,和md5.js放進(jìn)去就好啦敏晤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贱田,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嘴脾,更是在濱河造成了極大的恐慌男摧,老刑警劉巖蔬墩,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耗拓,居然都是意外死亡拇颅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門乔询,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樟插,“玉大人,你說我怎么就攤上這事竿刁』拼福” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵食拜,是天一觀的道長鸵熟。 經(jīng)常有香客問我,道長负甸,這世上最難降的妖魔是什么旅赢? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮惑惶,結(jié)果婚禮上煮盼,老公的妹妹穿的比我還像新娘。我一直安慰自己带污,他們只是感情好僵控,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鱼冀,像睡著了一般报破。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上千绪,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天充易,我揣著相機與錄音,去河邊找鬼荸型。 笑死盹靴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瑞妇。 我是一名探鬼主播稿静,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辕狰!你這毒婦竟也來了改备?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蔓倍,失蹤者是張志新(化名)和其女友劉穎悬钳,沒想到半個月后盐捷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡默勾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年碉渡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灾测。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖垦巴,靈堂內(nèi)的尸體忽然破棺而出媳搪,到底是詐尸還是另有隱情,我是刑警寧澤骤宣,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布秦爆,位于F島的核電站,受9級特大地震影響憔披,放射性物質(zhì)發(fā)生泄漏等限。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一芬膝、第九天 我趴在偏房一處隱蔽的房頂上張望望门。 院中可真熱鬧,春花似錦锰霜、人聲如沸筹误。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厨剪。三九已至,卻和暖如春友存,著一層夾襖步出監(jiān)牢的瞬間祷膳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工屡立, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留直晨,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓膨俐,卻偏偏與公主長得像抡秆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吟策,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345