i18n vue 多语言配置,切换刷新

实现项目多语言切换

1.引入i18n插件

npm install i18n --save-dev

2.在main.js中挂载

import i18n from '@/plugins/i18n'
new Vue({
    i18n
}).$mount('#app')

3.创建i18n.js文件添加配置

复制代码
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from '@/lang'
import ElementLocale from 'element-ui/lib/locale'

Vue.use(VueI18n)

const lang = (localStorage.getItem('languageSet') || 'zh').toLowerCase()
export const i18n = new VueI18n({
  locale: lang, // 当前语言环境 this.$i18n.locale = 'en'
  fallbackLocale: 'zh', // 默认语言环境。如果locale中无匹配项则采用该项值
  messages, // set locale messages
  silentTranslationWarn: true
})
i18n.setLang = (lang) => {
  i18n.locale = lang
  return lang
}

i18n.setTitle = (lang) => {
  if (i18n.locale === lang && document.title && document.title.indexOf('menu') !== -1) {
    const titles = document.title.split('-')
    document.title = titles.length > 1 ? i18n.t(titles[0].trim()) + ' - ' + i18n.t(titles[1].trim()) : i18n.t(titles[0].trim())
  }
}

i18n.loadModules = () => {
  import('@/lang/zh.js').then((messages) => {
    const newMessages = Object.assign(i18n.getLocaleMessage('zh'), messages.default)
    i18n.setLocaleMessage('zh', newMessages)
    i18n.setTitle('zh')
  })
  import('@/lang/en.js').then((messages) => {
    const newMessages = Object.assign(i18n.getLocaleMessage('en'), messages.default)
    i18n.setLocaleMessage('en', newMessages)
    i18n.setTitle('en')
  })
  Vue.locale = () => {}
  Vue.config.lang = lang
  ElementLocale.i18n((key, value) => i18n.t(key, value))
}
export default i18n
复制代码

4.在App.vue中添加监听,监听以后可以实时切换语言且页面没有整体刷新效果

  watch: {
    '$i18n.locale'(newVal, oldVal) {
      if (newVal !== oldVal) {
        this.reload()
      }
    },
  },

5.在页面对应位置添加事件切换语言

// 切换语言
    changeLang(type) {
      localStorage.setItem('languageSet', type)
      this.$i18n.locale = type  //用于切换语言监听,实时刷新语言
      this.s_local = type  //用于本地控制选中状态
    }

 

posted @   念初~逝水  阅读(1934)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示