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
})
相关推荐
梁辰兴10 小时前
企业培训笔记:Vue3前端框架配置
笔记·前端框架·npm·vue·vue3·node
一斤代码17 小时前
vue3 下载图片(标签内容可转图)
前端·javascript·vue
sunbyte1 天前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleVerticalSlider(双垂直滑块)
前端·javascript·css·vue.js·vue
普宁彭于晏1 天前
Uni-app 生命周期与钩子:程序的“生命”旅程
uni-app·vue
你喜欢喝可乐吗?1 天前
RuoYi-Cloud 验证码处理流程
java·spring cloud·微服务·vue
魂兮归乡1 天前
B2、进度汇报(— 25/06/16)
经验分享·spring boot·ai·vue·团队开发·课程设计·web app
灰海1 天前
封装WebSocket
前端·网络·websocket·网络协议·vue
布兰妮甜2 天前
开发在线商店:基于Vue2+ElementUI的电商平台前端实践
前端·javascript·elementui·vue
大菠萝学姐2 天前
基于Spring Boot和Vue的高校图书馆座位预约系统的设计与实现
java·vue.js·spring boot·后端·python·mysql·vue
黄焖鸡能干四碗2 天前
系统安全设计方案,软件系统安全设计方案
开发语言·数据库·安全·vue·系统安全