vue-i18n國(guó)際化使用

1莫其、安裝 vue-i18n

npm install vue-i18n

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

import VueI18n from 'vue-i18n'

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

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

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

上面的代碼正式將 vue-i18n 引入 vue 項(xiàng)目中遗契,創(chuàng)建一個(gè) i18n 實(shí)例對(duì)象辐棒,方便全局調(diào)用。我們通過(guò) this.$i18n.locale 來(lái)進(jìn)行語(yǔ)言的切換牍蜂,同樣的我這邊的例子里就是通過(guò)點(diǎn)擊事件漾根,點(diǎn)擊‘’網(wǎng)易云音樂(lè)‘’,來(lái)觸發(fā)事件鲫竞,切換locale 的值辐怕。
3、ok, 引入的事情就是這樣从绘,那么既然實(shí)現(xiàn)國(guó)際化寄疏,這邊簡(jiǎn)單的是中英文切換,那么自然我們需要中英文兩套語(yǔ)言的文件顶考,vue-i18n中相對(duì)簡(jiǎn)單赁还,只需要兩個(gè) js 文件,通過(guò) require 的形式引入到 main.js驹沿。


zh.js中文語(yǔ)言包

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

最后我們只需要通過(guò)觸發(fā)事件的形式艘策,來(lái)控制 locale 的值,去調(diào)用對(duì)應(yīng)的語(yǔ)言包就可以實(shí)現(xiàn)國(guó)際化啦渊季。
4朋蔫、組件中如何去切換 locale 的值,實(shí)現(xiàn)語(yǔ)言切換却汉。

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

在 main.js 中的代碼中驯妄,可以看到,當(dāng) locale 的值為‘zh-CN’時(shí)合砂,版本為中文青扔;當(dāng) locale 的值為‘en-US’,版本為英文。當(dāng)然你也可以換成 zh 和 en翩伪,這個(gè)不固定微猖,只需要對(duì)應(yīng)上。

好了缘屹,現(xiàn)在來(lái)看一下凛剥,我組件中的一個(gè)點(diǎn)擊事件中如何進(jìn)行切換。

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

這邊的重點(diǎn)就是轻姿,點(diǎn)出的‘’關(guān)鍵語(yǔ)句‘’:this.$i18n.locale,當(dāng)你賦值為‘zh-CN’時(shí)犁珠,導(dǎo)航欄就變成中文逻炊;當(dāng)賦值為 ‘en-US’時(shí),就變成英文犁享。效果圖就是文章前面的樣子余素。
5、到這饼疙,前端 vue-i18n 國(guó)際化插件在 vue-cli 模塊化環(huán)境中的開發(fā)實(shí)踐就全部完成了溺森。
6、vue-i18n 數(shù)據(jù)渲染的模板語(yǔ)法
我們知道 vue 中對(duì)于文字?jǐn)?shù)據(jù)的渲染窑眯,有以‘’{{}}‘’或者 v-text屏积、v-html等的形式,同樣的使用國(guó)際化后磅甩,依舊可以沿用炊林,但需要一點(diǎn)修改。
v-text:

<span v-text="$t('m.music')"></span>

{{}}:

<span>{{$t('m.music')}}</span>

如果要使用到組件的data中 使用this.$t('m.xxxx')

data() {
    return {
      pohonePlaceholder: this.$t('m.course_input_answer')
    }
}

字組件根據(jù)父組件傳來(lái)的props設(shè)置default值

data () {
  return {
    default:this.$t('m.create_pls_chooes')
  }
},
props: {
  placeholder: {
    type: String,
    default: this.default
  }
}
使用中存在的問(wèn)題

如果要js里面使用的話有兩種方式
第一種:直接this.$t('m.xxx')

第二種: 如果在外配置i18n(不在main)
可以引入配置的這個(gè)文件
import i18n from '@/common'
i18n.t('m.common_title')

vant ui 配置國(guó)際化環(huán)境
Vant 通過(guò) Locale 組件實(shí)現(xiàn)多語(yǔ)言支持卷要,使用 Locale.use 方法可以切換當(dāng)前使用的語(yǔ)言渣聚。

import { Locale } from 'vant';
import enUS from 'vant/lib/locale/lang/en-US';
// 設(shè)置為英文
Locale.use('en-US', enUS);

直接設(shè)置此,vant ui 全局的文字都會(huì)變?yōu)橛⑽?/p>

在vue項(xiàng)目的js里使用

import i18n from '@/common'
title: i18n.t('m.common_title'),

通過(guò).t方法來(lái)調(diào)用僧叉,但是注意奕枝,在頁(yè)面內(nèi)進(jìn)行語(yǔ)言切換并不會(huì)跟隨改變

路由的標(biāo)題跟隨多語(yǔ)言變化、路由定義的時(shí)候

   {
      path: '/login',
      name: 'Login',
      component: Login,
      meta: {
        title: {
          en: 'Login',
          zh: '登錄',
          es: 'Iniciar sesión'
        }
      }
    }

在main根據(jù)變化替換拿到title瓶堕,根據(jù)當(dāng)前的值來(lái)判斷獲取

router.afterEach((to, from) => {
  // console.log('afterEach')
  // 路由發(fā)生變化修改頁(yè)面title
  var type = i18n.locale
  if (to.meta.title) {
    // document.title = to.meta.title
    if(type === 'zh-CN') {
      document.title = to.meta.title.zh
    } else if(type === 'en-US') {
      document.title = to.meta.title.en
    } else if(type === 'es') {
      document.title = to.meta.title.es
    }
  }
})

但是在切換按鈕的時(shí)候不會(huì)跟隨變化隘道,所以切換頁(yè)面要手動(dòng)更改一下title,根據(jù)點(diǎn)擊改變當(dāng)前頭
document.title = this.$route.meta.title.zh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末郎笆,一起剝皮案震驚了整個(gè)濱河市谭梗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宛蚓,老刑警劉巖激捏,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凄吏,居然都是意外死亡远舅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門痕钢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)图柏,“玉大人,你說(shuō)我怎么就攤上這事盖喷。” “怎么了难咕?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵课梳,是天一觀的道長(zhǎng)距辆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)暮刃,這世上最難降的妖魔是什么跨算? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮椭懊,結(jié)果婚禮上诸蚕,老公的妹妹穿的比我還像新娘。我一直安慰自己氧猬,他們只是感情好背犯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盅抚,像睡著了一般漠魏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妄均,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天柱锹,我揣著相機(jī)與錄音,去河邊找鬼丰包。 笑死禁熏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邑彪。 我是一名探鬼主播瞧毙,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锌蓄!你這毒婦竟也來(lái)了升筏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瘸爽,失蹤者是張志新(化名)和其女友劉穎您访,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剪决,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灵汪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柑潦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片享言。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖渗鬼,靈堂內(nèi)的尸體忽然破棺而出览露,到底是詐尸還是另有隱情,我是刑警寧澤譬胎,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布差牛,位于F島的核電站命锄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏偏化。R本人自食惡果不足惜脐恩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侦讨。 院中可真熱鬧驶冒,春花似錦、人聲如沸韵卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怜俐。三九已至身堡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拍鲤,已是汗流浹背贴谎。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留季稳,地道東北人擅这。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像景鼠,于是被迫代替她去往敵國(guó)和親仲翎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359