美文网首页
vue网站多语言设置

vue网站多语言设置

作者: 散樱乱舞 | 来源:发表于2019-05-27 00:01 被阅读0次

1.创建
  • i18n.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

const i18n = new VueI18n({
    locale: localStorage.getItem('locale') || 'zh',
    messages: {
        'zh': require('./langs/zh'),
        'en': require('./langs/en')
    }
})
export default i18n
  • en.js
module.exports = {
    language:'english',
    nav:{
        Home: 'Home',
        News:'News'
    }
 }
  • zh.js
module.exports = {
    language:'中文',
    nav:{
        Home: '首页',
        News:'新闻资讯'
    }
 }
  • main.js
import i18n from './i18n/i18n'
new Vue({
  i18n
}).$mount('#app')
2.使用
  • 任意.vue
<div v-text="$t('nav.Home')"></div>
<div v-text="$t('nav.News')"></div>
3.自行切换
  • store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    lang: 'zh',
  },
  mutations: {
    swi_lang(state, arg){
      state.lang = arg;
    }
  },
  getters: {
    get_lang(state){
      return state.lang;
    }
  },
  actions: {

  }
})

  • 任意.vue
<div @click="swi_zh()"></div>
<div @click="swi_en()"></div>
import {mapMutations} from 'vuex'
methods: {
    ...mapMutations({
        swi_lang: 'swi_lang'
    }),
    swi_zh(){
        this.$i18n.locale = 'zh';
        this.swi_lang('zh');
    },
    swi_en(){
        this.$i18n.locale = 'en';
        this.swi_lang('en');
    }
}

相关文章

网友评论

      本文标题:vue网站多语言设置

      本文链接:https://www.haomeiwen.com/subject/frmqtctx.html