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
})
相关推荐
学习ing小白1 小时前
JavaWeb - 5 - 前端工程化
前端·elementui·vue
一只小阿乐1 小时前
前端web端项目运行的时候没有ip访问地址
vue.js·vue·vue3·web端
码力码力我爱你9 小时前
QT + WebAssembly + Vue环境搭建
vue.js·vue·wasm·webassembly·emscripten
尸僵打怪兽17 小时前
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)
vue.js·vue
是梦终空1 天前
JAVA毕业设计176—基于Java+Springboot+vue3的交通旅游订票管理系统(源代码+数据库)
java·spring boot·vue·毕业设计·课程设计·源代码·交通订票
天下无贼!1 天前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
这个需求建议不做1 天前
vue3打包配置 vite、router、nginx配置
前端·nginx·vue
QGC二次开发1 天前
Vue3 : Pinia的性质与作用
前端·javascript·vue.js·typescript·前端框架·vue
罗_三金2 天前
前端框架对比和选择?
javascript·前端框架·vue·react·angular