最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:51:56
文檔

基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧

基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧:一般商業(yè)網(wǎng)站都有一個(gè)語(yǔ)言的需求,就是為了照顧使用正體中文的國(guó)人,會(huì)特地提供一個(gè)切換到正體中文的選項(xiàng)(或曰繁體中文)。傳統(tǒng)做法是在服務(wù)端完成的,即通過(guò)某些控件或者過(guò)濾器轉(zhuǎn)換文本語(yǔ)言。這里筆者介紹一種簡(jiǎn)單可行的方法,不是在服務(wù)端而是利用前端
推薦度:
導(dǎo)讀基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧:一般商業(yè)網(wǎng)站都有一個(gè)語(yǔ)言的需求,就是為了照顧使用正體中文的國(guó)人,會(huì)特地提供一個(gè)切換到正體中文的選項(xiàng)(或曰繁體中文)。傳統(tǒng)做法是在服務(wù)端完成的,即通過(guò)某些控件或者過(guò)濾器轉(zhuǎn)換文本語(yǔ)言。這里筆者介紹一種簡(jiǎn)單可行的方法,不是在服務(wù)端而是利用前端
一般商業(yè)網(wǎng)站都有一個(gè)語(yǔ)言的需求,就是為了照顧使用正體中文的國(guó)人,會(huì)特地提供一個(gè)切換到正體中文的選項(xiàng)(或曰“繁體中文”)。傳統(tǒng)做法是在服務(wù)端完成的,即通過(guò)某些控件或者過(guò)濾器轉(zhuǎn)換文本語(yǔ)言。這里筆者介紹一種簡(jiǎn)單可行的方法,不是在服務(wù)端而是利用前端的 JavaScript 就可以切換正體中文。
如下圖,我們把切換按鈕放在頁(yè)腳(當(dāng)然你也可以放置在“導(dǎo)航”或者其他更醒目的位置)。

由于頁(yè)面假設(shè)設(shè)定均使用 Unicode 字符集,于是一般不用考慮 GB2312/BIG5 字符集問(wèn)題,偉大的 Unicode 字符集已經(jīng)涵蓋了繁體字的字符了(UTF-8 編碼)。

怎么在頁(yè)面調(diào)用這個(gè)功能呢?很簡(jiǎn)單,首先引入下面 Js(注意還依賴 Function.prototype.delegate(), 下面會(huì)提及):

然后綁定按鈕事件,我們簡(jiǎn)單地使用 onclick 綁定來(lái)全局函數(shù) window.toChinese(el)、window.toSimpleChinese(el)。el 是按鈕元素。

js 代碼中比較長(zhǎng)的兩個(gè)字符串變量分別是簡(jiǎn)體中文和繁體中文,他們切換沒有什么神奇之處,只是所有文本經(jīng)過(guò)這些變量一一對(duì)應(yīng)即可。當(dāng)然這里只是常用的繁簡(jiǎn)對(duì)應(yīng),而且是機(jī)械的,有些特殊的翻譯需要聯(lián)系上下文的,這種高級(jí)轉(zhuǎn)換不在此討論之列。

首先我們看看變量函數(shù) translate,執(zhí)行它會(huì)通過(guò)遞歸遍歷完整個(gè) DOM(可以說(shuō)比較笨的方法)

轉(zhuǎn)換 DOM 內(nèi)容,我們第一時(shí)間想到的可能是 el.innerHTML,但其實(shí)大可不必,而且遞歸的時(shí)候不太方便。不妨再想想看,我們其實(shí)只需要對(duì)文本轉(zhuǎn)換即可,DOM API 能夠判斷 文本節(jié)點(diǎn)(node.nodeType == 3),然后可讀可寫的 data 屬性就是設(shè)置文本的(textNode.data),由此我們就是完成到繁體的切換。節(jié)點(diǎn)其他屬性 title、alt、value 也是同樣原理。另外,if (("||BR|HR|TEXTAREA|".indexOf("|" + node.tagName + "|")) > 0)continue; 是排除某些節(jié)點(diǎn)的方法,其思路比較特別,可以多借鑒下。

至于 coverntFn 是一函數(shù)參數(shù)。通過(guò)根函數(shù) translateText(text, isBig5) 新生成兩個(gè)函數(shù) :var traditionalized = translateText.delegate(null, true), simplized = translateText.delegate(null, false);

Function.prototype.delegate() 方法如下。

繁簡(jiǎn)的轉(zhuǎn)換基本如此了。值得一提的是,瀏覽器其實(shí)替我們識(shí)別語(yǔ)言環(huán)境的變量,主要是 navigator.userLanguage || navigator.language。這個(gè)變量在服務(wù)端也可以獲取,頭讀取:Request.ServerVariables("http_accept_language")。

最后我們還通過(guò) cookie 來(lái)保存語(yǔ)言狀態(tài)。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧

基于JavaScript實(shí)現(xiàn)快速轉(zhuǎn)換文本語(yǔ)言(繁體中文和簡(jiǎn)體中文)_javascript技巧:一般商業(yè)網(wǎng)站都有一個(gè)語(yǔ)言的需求,就是為了照顧使用正體中文的國(guó)人,會(huì)特地提供一個(gè)切換到正體中文的選項(xiàng)(或曰繁體中文)。傳統(tǒng)做法是在服務(wù)端完成的,即通過(guò)某些控件或者過(guò)濾器轉(zhuǎn)換文本語(yǔ)言。這里筆者介紹一種簡(jiǎn)單可行的方法,不是在服務(wù)端而是利用前端
推薦度:
標(biāo)簽: 轉(zhuǎn)換 繁體 中文
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top