3.Vue2结合element-ui实现国际化多语言i18n

1.安装vue-i18n

bash 复制代码
npm install vue-i18n@8.2.1

说明:Vue2使用vue-i18n是8.x,Vue3使用的版本是9.x以上,使用错了会导致报错

2.创建多语言文件

在src/下创建src/lang/langs/zh.js和src/lang/langs/en.js两个文件,里面内容如下:

src/lang/langs/zh.js

bash 复制代码
export const zh = {
    'common': {
        'button': {
            'search': '搜索'
        }
}

export default zh

src/lang/langs/en.js

bash 复制代码
export const en = {
    'common': {
        'button': {
            'search': 'Search'
        }
}

export default en

3.创建i18n

在在src/下创建src/lang/i18n.js文件,如下:

javascript 复制代码
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import zh from './langs/zh'
import en from './langs/en'

Vue.use(VueI18n)

const messages = {
  en: en,
  zh: zh
}

const i18n = new VueI18n({
  locale: 'zh',
  messages,
  globalInjection: true
})

export default i18n

4.引入i18n

在main.js中加入下面代码

javascript 复制代码
import i18n from './lang/i18n'

new Vue({
  i18n,
  render: h => h(App)
})

5.在组件中使用

5.1.Html中使用

html 复制代码
<div>{{ $t('common.button.search') }}</div>

5.2.在html作为变量使用

html 复制代码
<input :placeholder="$t('common.button.search')"/>

5.3.在props使用

javascript 复制代码
export default {
	props: {
		name: String,
		default() {
			return this.$t('common.button.search')
		}
	}
}

5.4.在script的方法使用

javascript 复制代码
this.$t('common.button.search')

6.Element-UI使用i18n

6.1.引入element-ui的多语言

在src/lang/i18n.js文件内添加

javascript 复制代码
import elementEN from 'element-ui/lib/locale/lang/en'
import elementZH from 'element-ui/lib/locale/lang/zh-CN'

const messages = {
  en: {
    ...en,
    ...elementEN
  },
  zh: {
    ...zh,
    ...elementZH
  }
}

6.2.引用element-ui的多语言

在src/main.js中添加

javascript 复制代码
Vue.use(Element, {
  size: Cookies.get('size') || 'small',
  i18n: (key, value) => i18n.t(key, value)
})

7.实时切换多语言

在切换多语言的时候,调用下面方法

javascript 复制代码
changeLang(lang) {
  this.$i18n.locale = lang
  localStorage.setItem('el_local_lang', lang)
}

并且在src/lang/i18n.js文件中,优先从localStorage获取当前语言

javascript 复制代码
const i18n = new VueI18n({
  locale: localStorage.getItem('el_local_lang') ? localStorage.getItem('el_local_lang') : 'zh',
  messages,
  globalInjection: true
})
相关推荐
落魄实习生3 小时前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
bpmf_fff6 小时前
二九(vue2-05)、父子通信v-model、sync、ref、¥nextTick、自定义指令、具名插槽、作用域插槽、综合案例 - 商品列表
vue
java_heartLake12 小时前
Vue3之状态管理Vuex
vue·vuex·前端状态管理
小马超会养兔子12 小时前
如何写一个数字老虎机滚轮
开发语言·前端·javascript·vue
小阳生煎15 小时前
多个Echart遍历生成 / 词图云
vue
小马超会养兔子2 天前
如何写一个转盘
开发语言·前端·vue
bpmf_fff2 天前
二八(vue2-04)、scoped、data函数、父子通信、props校验、非父子通信(EventBus、provide&inject)、v-model进阶
vue
好开心332 天前
04、Vue与Ajax
前端·ajax·前端框架·vue·js
工业互联网专业3 天前
Python毕业设计选题:基于Python的社区爱心养老管理系统设计与实现_django
python·django·vue·毕业设计·源码·课程设计
平行线也会相交3 天前
云图库平台(一)后端项目初始化
spring boot·vue·云图库平台