如何優(yōu)雅的實現前端國際化

今天小編會使用boostrap框架搭建一個配有中英文切換功能的網頁,還有就是使用nodejs搭建后臺服務落剪,從頭實現一個完整的前端國際化開發(fā)項目,內容不算很復雜,很適合前端已入門的胖友們吠撮。


01 、前端國際化概述

港真讲竿,自己剛接到這個需求的時候,也是不知如何下手弄屡,畢竟也沒經驗题禀,后面就找了百度,經過一番探索膀捷,最終圓滿的完成了任務迈嘹,下面就把我的經驗寫下來,有需要的朋友拿去全庸,不謝~~~

首先我們先來普及一下什么是國際化秀仲?國際化這個英文單詞為:Internationalization,又稱 i18n壶笼,“i”為單詞的第一個字母神僵,“18”為“i”和“n”之間單詞的個數,而“n”代表這個單詞的最后一個字母覆劈。在計算機領域保礼,國際化是指設計能夠適應各種區(qū)域和語言環(huán)境的軟件的過程。在計算機領域這塊责语,大家聽起來或許有些懵逼炮障,不過大家可以把它理解為一個頁面可以使用不同語言進行切換顯示的一個過程。

經過一番學習之后坤候,得知胁赢,目前常用的前端國際化實現方式有:

1、針對不同的語言白筹,各寫一套界面智末。

2、使用配置文件的方式遍蟋,使用的是同一套界面吹害,根據語言的不同加載對應的配置文件。

剛開始的時候為了盡快完成任務虚青,竟然選擇了使用第一種方式它呀,其實第一種方式的實現效率是最高的,因為在你寫完一個頁面之后,經過復制然后把內容改成對應的語言就好了纵穿。殊不知下隧,當你需要修改的頁面的某個地方的時候,你要把復制的頁面都一并改了谓媒,不然出問題了就不好找淆院,還有個問題就是每次切換的時候都需要重新發(fā)送請求,每次都要重新加載整個頁面句惯,對性能的影響較大土辩,不利于后續(xù)的維護。

出于以上問題的考慮抢野,后面還是使用了第二種方式拷淘。最終選擇了jQuery的國際化插件jQuery.i18n.properties ,它是一款輕量級的插件指孤,壓縮后僅 4kb启涯,api也比較簡單,它的國際化資源文件以“.properties”為后綴恃轩,包含了各語言相關的鍵值對结洼。

下面就開始擼代碼:

02 、前端國際化實現

1叉跛、首先搭建項目結構:

結構說明:

1.1松忍、component: 用來存放引入的組件,如boostrap

1.2昧互、i18n:存放jquery-i18n-properties插件和國際化資源配置文件

1.3挽铁、imgs:存放相關圖片

1.4、js:引入的相關腳本

1.5敞掘、server:存放nodeJs實現的后臺服務器叽掘,因為加載國際化文件需要走服務

1.6、index.html:國際化測試頁面

index.html的頁面結構如下:

2玖雁、開發(fā)步驟說明

靜態(tài)頁面開發(fā)完成后更扁,首先就要搭建后臺的服務,否則在加載國際化文件的時候會報錯赫冬。

2.1浓镜、搭建nodeJs后臺服務器

它主要的思路是發(fā)送請求的時候能夠返回對應的內容。它監(jiān)聽的是localhost的8888端口劲厌,

啟動node服務器:

然后瀏覽器訪問:http://localhost:8888/

說明服務已經啟動成功膛薛,接下來就實現前端國際化。

2.2补鼻、i18n插件的使用

2.2.1哄啄、首先定義不同語言的國際化資源文件:

需要注意的是:不同配置文件中的key必須要一樣雅任,并且key中不能帶空格,不能有重復的key否則會被覆蓋咨跌。

2.2.2沪么、在頁面定義需要翻譯的地方,在切換的時候其實就是替換它的文本內容:

這里需要注意的是锌半,每個需要翻譯的地方都需要有一個定義方便后續(xù)定位到它禽车,實行內容替換。

2.2.3刊殉、接下來看具體的實現切換的過程:

兩個地方需要加載國際化資源文件殉摔,一是頁面加載完畢的時候:

另外就是點擊中英文切換按鈕的時候需要重新加載:

下面看看切換效果:

2.2.4、實現過程中的幾個注意點

(1)冗澈、之所以使用cookie緩存钦勘,是因為在做語言切換的時候,能記錄你切換后的語言亚亲,如果你退出之后,再進來顯示的還是你上次選擇的語言腐缤,而不是重新加載默認的語言捌归。

(2)、如果是初次訪問岭粤,默認加載的是瀏覽器的語言惜索。使用瀏覽器語言的時候需要注意自己的設置,下面用谷歌為例來說說瀏覽器語言的設置問題剃浇。有的或許有疑問就是我瀏覽器設置了英文巾兆,但是頁面上顯示的仍然是中文。

這里會有兩種情況:

一種是你之前已經訪問過該網站了虎囚,所以它會讀取cookie緩存中的語言角塑,解決辦法是清了cookie里的緩存

另一種是瀏覽器設置語言的時候讀的是排在最上面的語言淘讥。

比如上圖你設置了英文圃伶,但是英文排在了第二的位置,所以它讀的是最上面的簡體中文蒲列。

03 窒朋、總結

根據上面的實現,我們發(fā)現使用資源配置文件實現前端國際化會有以下優(yōu)缺點:

優(yōu)點:在進行語言切換時蝗岖,速度會很快侥猩,不會進行整個頁面的刷新,適合靜態(tài)頁面使用抵赢。

缺點:當頁面中有動態(tài)注入的內容時可能處理起來比較麻煩欺劳。每個需要翻譯的地方都要加一個class和name屬性唧取,比較麻煩。

能力有限杰标,如有更好的辦法兵怯,歡迎大家分享出來,一起學習腔剂。如果文章對你有幫助媒区,請動動手指關注我喲干奢!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末伸头,一起剝皮案震驚了整個濱河市暮现,隨后出現的幾起案子厨喂,更是在濱河造成了極大的恐慌唐含,老刑警劉巖球昨,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彻亲,死亡現場離奇詭異堕担,居然都是意外死亡介褥,警方通過查閱死者的電腦和手機座掘,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柔滔,“玉大人溢陪,你說我怎么就攤上這事【龋” “怎么了形真?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長超全。 經常有香客問我咆霜,道長,這世上最難降的妖魔是什么嘶朱? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任蛾坯,我火速辦了婚禮,結果婚禮上见咒,老公的妹妹穿的比我還像新娘偿衰。我一直安慰自己,他們只是感情好改览,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布下翎。 她就那樣靜靜地躺著,像睡著了一般宝当。 火紅的嫁衣襯著肌膚如雪视事。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天庆揩,我揣著相機與錄音俐东,去河邊找鬼跌穗。 笑死,一個胖子當著我的面吹牛虏辫,可吹牛的內容都是我干的蚌吸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砌庄,長吁一口氣:“原來是場噩夢啊……” “哼羹唠!你這毒婦竟也來了?” 一聲冷哼從身側響起娄昆,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤佩微,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后萌焰,有當地人在樹林里發(fā)現了一具尸體哺眯,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年扒俯,在試婚紗的時候發(fā)現自己被綠了奶卓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撼玄,死狀恐怖寝杖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情互纯,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布磕蒲,位于F島的核電站留潦,受9級特大地震影響,放射性物質發(fā)生泄漏辣往。R本人自食惡果不足惜兔院,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望站削。 院中可真熱鬧坊萝,春花似錦、人聲如沸许起。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽园细。三九已至惦积,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猛频,已是汗流浹背狮崩。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工蛛勉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睦柴。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓诽凌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坦敌。 傳聞我的和親對象是個殘疾皇子侣诵,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 一、背景 很多網站的用戶分布在世界各地恬试,因此網站需要針對不同國家的用戶展示不同語言的內容窝趣,因此就有了國際化實現的需...
    丘八老爺閱讀 3,394評論 0 3
  • 9.2 添加國際化和本地化 Django提供了完整的國際化和本地化支持。它允許你把應用翻譯為多種語言训柴,它會處理特定...
    lakerszhy閱讀 1,129評論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,100評論 1 32
  • 一哑舒、需求描述 項目需要做整體的國際化。通常的解決思路有兩種幻馁,一種解決方案是重新部署一套專門針對所在語言國家的國際站...
    GeekerLou閱讀 2,950評論 0 2
  • 忘了什么時候寫的了洗鸵,大概五六七八年了吧?...... 桃園結義十處桃花七美人仗嗦,兩分裝點武陵春膘滨。更留一份香涿郡,義氣...
    訥言不敏閱讀 918評論 12 25