vue-i18n國際化實(shí)例

demo 場景需求分析

在這里插入圖片描述

需求很簡單,左上角 ‘’網(wǎng)易云音樂‘’就是一個中英文切換的按鈕风喇,點(diǎn)擊彈出提示框,確認(rèn)切換語言后缕探,實(shí)現(xiàn)英文版本魂莫。


在這里插入圖片描述

切換成英文版本:


在這里插入圖片描述

三、實(shí)現(xiàn)國際化

1爹耗、我們得先有開發(fā)環(huán)境耙考,先有項(xiàng)目跑起來谜喊,我推薦如果是喜歡用 vue 的小伙伴,可以嘗試 vue-cli 官方腳手架

2倦始、我們需要安裝 vue-i18n, 推薦 npm 包依賴:

$ npm install vue-i18n

當(dāng)然你也可以這樣:

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-i18n/dist/vue-i18n.js"></script>

3斗遏、注入 vue 實(shí)例中,項(xiàng)目中實(shí)現(xiàn)調(diào)用 api 和 模板語法
這邊我是順著使用 npm 安裝依賴進(jìn)行鞋邑。先在 main.js 中引入 vue-i18n诵次。

import VueI18n from 'vue-i18n'

Vue.use(VueI18n) // 通過插件的形式掛載

const i18n = new VueI18n({
    locale: 'zh-CN',    // 語言標(biāo)識
    //this.$i18n.locale // 通過切換locale的值來實(shí)現(xiàn)語言切換
    messages: {
      'zh-CN': require('./common/lang/zh'),   // 中文語言包
      'en-US': require('./common/lang/en')    // 英文語言包
    }
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  i18n,  // 不要忘記
  store,
  router,
  template: '<App/>',
  components: { App }
})

上面的代碼正式將 vue-i18n 引入 vue 項(xiàng)目中,創(chuàng)建一個 i18n 實(shí)例對象枚碗,方便全局調(diào)用逾一。我們通過 this.$i18n.locale 來進(jìn)行語言的切換,同樣的我這邊的例子里就是通過點(diǎn)擊事件视译,點(diǎn)擊‘’網(wǎng)易云音樂‘’,來觸發(fā)事件归敬,切換locale 的值酷含。

4、ok, 引入的事情就是這樣汪茧,那么既然實(shí)現(xiàn)國際化椅亚,這邊簡單的是中英文切換,那么自然我們需要中英文兩套語言的文件舱污,vue-i18n中相對簡單呀舔,只需要兩個 js 文件,通過 require 的形式引入到 main.js扩灯。


在這里插入圖片描述

en.js 英文語言包:

export const m = { 
  music: 'Music',//網(wǎng)易云音樂
  findMusic: 'FIND MUSIC',//發(fā)現(xiàn)音樂
  myMusic: 'MY MUSIC',//我的音樂
  friend: 'FRIEND',//朋友
  musician: 'MUSICIAN',//音樂人
  download: 'DOWNLOAD'//下載客戶端
}

zh.js中文語言包:

export const m = {
  music: '網(wǎng)易云音樂',
  findMusic: '發(fā)現(xiàn)音樂',
  myMusic: '我的音樂',
  friend: '朋友',
  musician: '音樂人',
  download: '下載客戶端'
}

最后我們只需要通過觸發(fā)事件的形式媚赖,來控制 locale 的值,去調(diào)用對應(yīng)的語言包就可以實(shí)現(xiàn)國際化珠插。

5惧磺、組件中如何去切換 locale 的值,實(shí)現(xiàn)語言切換捻撑。

locale: 'zh-CN',    // 語言標(biāo)識
    messages: {
      'zh-CN': require('./common/lang/zh'),   // 中文語言包
      'en-US': require('./common/lang/en')    // 英文語言包
    }

在 main.js 中的代碼中磨隘,可以看到,當(dāng) locale 的值為‘zh-CN’時顾患,版本為中文番捂;當(dāng) locale 的值為‘en-US’,版本為英文。當(dāng)然你也可以換成 zh 和 en江解,這個不固定设预,只需要對應(yīng)上。
好了犁河,現(xiàn)在來看一下絮缅,我組件中的一個點(diǎn)擊事件中如何進(jìn)行切換鲁沥。

/**
 * 切換語言 
 */ 
 changeLangEvent() {
   this.$confirm('確定切換語言嗎?', '提示', {
       confirmButtonText: '確定',
       cancelButtonText: '取消',
       type: 'warning'
    }).then(() => {
       if ( this.lang === 'zh-CN' ) {
          this.lang = 'en-US';
          this.$i18n.locale = this.lang;//關(guān)鍵語句
       }else {
          this.lang = 'zh-CN';
          this.$i18n.locale = this.lang;//關(guān)鍵語句
       }
    }).catch(() => {
       this.$message({
           type: 'info',
       });          
    });
}

這邊的重點(diǎn)就是,點(diǎn)出的‘’關(guān)鍵語句‘’:this.$i18n.locale,當(dāng)你賦值為‘zh-CN’時耕魄,導(dǎo)航欄就變成中文画恰;當(dāng)賦值為 ‘en-US’時,就變成英文吸奴。效果圖就是文章前面的樣子允扇。

6、到這则奥,前端 vue-i18n 國際化插件在 vue-cli 模塊化環(huán)境中的開發(fā)實(shí)踐就全部完成了考润。

四、vue-i18n 數(shù)據(jù)渲染的模板語法

我們知道 vue 中對于文字?jǐn)?shù)據(jù)的渲染读处,有以‘’{{}}‘’或者 v-text糊治、v-html等的形式,同樣的使用國際化后罚舱,依舊可以沿用井辜,但需要一點(diǎn)修改。
v-text:

<span v-text="$t('m.music')"></span>
{{}}:
<span>{{$t('m.music')}}</span>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末管闷,一起剝皮案震驚了整個濱河市粥脚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌包个,老刑警劉巖刷允,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碧囊,居然都是意外死亡树灶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門糯而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來破托,“玉大人,你說我怎么就攤上這事歧蒋⊥辽埃” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵谜洽,是天一觀的道長萝映。 經(jīng)常有香客問我,道長阐虚,這世上最難降的妖魔是什么序臂? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上奥秆,老公的妹妹穿的比我還像新娘逊彭。我一直安慰自己,他們只是感情好构订,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布侮叮。 她就那樣靜靜地躺著,像睡著了一般悼瘾。 火紅的嫁衣襯著肌膚如雪囊榜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天亥宿,我揣著相機(jī)與錄音卸勺,去河邊找鬼。 笑死烫扼,一個胖子當(dāng)著我的面吹牛曙求,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播映企,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悟狱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卑吭?” 一聲冷哼從身側(cè)響起芽淡,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤马绝,失蹤者是張志新(化名)和其女友劉穎豆赏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體富稻,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掷邦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了椭赋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抚岗。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哪怔,靈堂內(nèi)的尸體忽然破棺而出宣蔚,到底是詐尸還是另有隱情,我是刑警寧澤认境,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布胚委,位于F島的核電站,受9級特大地震影響叉信,放射性物質(zhì)發(fā)生泄漏亩冬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一硼身、第九天 我趴在偏房一處隱蔽的房頂上張望硅急。 院中可真熱鬧覆享,春花似錦、人聲如沸营袜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽连茧。三九已至核蘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啸驯,已是汗流浹背客扎。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罚斗,地道東北人徙鱼。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像针姿,于是被迫代替她去往敵國和親袱吆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容