Vue多語言支持

i18n插件實現多語言支持,本文以中英文爲例記錄一下配置過程。css

1.配置html

1.1安裝:npm install vue-i18n --save
1.2建立中英文配置項文件
src/lang目錄下建立如下文件:
 
en.js  // 配置英文顯示的內容
1 export default {
2   'home': {
3     'route': 'Tour Route',
4     'report': 'Issue Report'
5   }
6 }

zh.js  // 配置中文顯示的內容vue

1 export default {
2   'home': {
3     'route': '遊覽路線',
4     'report': '問題上報'
5   }
6 }

1.3配置i18nios

 i18n.js  //這裏面配置i18n插件npm

引入Vue, vue-i18n,導入中英文內容文件zh.js 和en.jsaxios

(項目使用了iview組件,因此有iview相關的文件引入) app

 1 import Vue from 'vue'
 2 import I18n from 'vue-i18n'
 3 import zh from './zh'
 4 import en from './en'
 5 import iviewEn from 'iview/dist/locale/en-US'
 6 import iviewZh from 'iview/dist/locale/zh-CN'
 7 
 8 Vue.use(I18n)
 9 const messages = {
10   en: Object.assign(en, iviewEn),
11   zh: Object.assign(zh, iviewZh)
12 }
13 
14 function getLocal () {
15   let lang = 'en'
16   if (Vue.env && Vue.env.language) {
17     lang = Vue.env.language
18   }
19   return lang
20 }
21 
22 const i18n = new I18n({
23   locale: getLocal(),
24   messages
25 })
26 
27 export default i18n
 
main.js中導入i18n,放入Vue的實例中,這樣全部組件均可以使用了。
(  項目使用了iview組件,因此有以下配置
13 Vue.use(iView, {
14   i18n: (key, value) => i18n.t(key, value) 15 })
) 
 1 import Vue from 'vue'
 2 import App from './App'
 3 import router from './router'
 4 import './assets/iconfont/iconfont.css'
 5 import iView from 'iview'
 6 import './assets/css/mapbox-gl-v0.54.0.css'
 7 import './assets/iview-styles/iview.css'
 8 import axios from 'axios'
 9 import i18n from './lang/i18n'
10 
11 Vue.config.productionTip = false
12 
13 Vue.use(iView, {
14   i18n: (key, value) => i18n.t(key, value)
15 })
16 
17 new Vue({
18   el: '#app',
19   router,
20   i18n,
21   components: {App},
22   template: '<App/>'
23 })

 

2.使用:iview

html中直接使用 $t("home.report") 便可獲取zh.js或en.js中home對象的report屬性this

1 <i-col span="11" >
2      <Button size="large" type="text" custom-icon="iconfont icon-shangbaowenti" @click="report">
3                 {{$t("home.report")}}
4       </Button>
5 </i-col>

js中經過Vue實例的$t獲取spa

1 mounted () {
2     console.info(this.$t("home.report"))
3   }

 

切換語言時只須要改變$i18n.locale的值便可。

1 switchLanguage () {
2     this.$i18n.locale = 'zh'  // 'en'
3 }

 使用vue-i18n插件作語言切換比較方便,記錄一下,歡迎留言交流~

相關文章
相關標籤/搜索