1. 程式人生 > >使用vue進行國際化

使用vue進行國際化

相對於網站等一些需求 我們有需要做國際化的需求,具體步驟如下:

首先安裝 vue-i18n

npm install vue-i18n

import VueI18n from 'vue-i18n'

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

const i18n = new VueI18n({
    locale: 'zh-CN',    // 語言標識
    //this.$i18n.locale // 通過切換locale的值來實現語言切換
    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 專案中,建立一個 i18n 例項物件,方便全域性呼叫。我們通過 this.$i18n.locale 來進行語言的切換

需要兩個 js 檔案,通過 require 的形式引入到 main.js。

en.js 英文語言包:

export const m = {
music: 'Music',//網易雲音樂
findMusic: 'FIND MUSIC',//發現音樂
myMusic: 'MY MUSIC',//我的音樂
friend: 'FRIEND',//朋友
musician: 'MUSICIAN',//音樂人
download: 'DOWNLOAD'//下載客戶端
}
zh.js中文語言包:

export const m = { music: '網易雲音樂', findMusic: '發現音樂', myMusic: '我的音樂', friend: '朋友', musician: '音樂人', download: '下載客戶端' }

元件中如何去切換 locale 的值,實現語言切換。

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

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

這邊的重點就是,點出的‘’關鍵語句‘’:this.$i18n.locale,當你賦值為‘zh-CN’時,導航欄就變成中文;當賦值為 ‘en-US’時,就變成英文。

vue-i18n 資料渲染的模板語法
我們知道 vue 中對於文字資料的渲染,有以‘’{{}}‘’或者 v-text、v-html等的形式,同樣的使用國際化後,依舊可以沿用,但需要一點修改。
v-text:

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

{{}}:

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