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
})
相关推荐
那年那棵树4 天前
基于WebGis的人生如旅地图系统
前端·arcgis·vue·课程设计
冒险的豆子7 天前
Vue2 、Vue3 响应式对比及优劣
vue
NetX行者8 天前
用 Vite + Vue3 + UnoCSS 搭建企业级项目模板(一):基础骨架
vue·vite·unocss
java水泥工8 天前
什么是前端
java·vue·html5
mont evergreen9 天前
一封从外部世界寄来的信:二维码数据如何穿越三重门,抵达你的屏幕
electron·vue·事件
志尊宝10 天前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
怦然丶心动10 天前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
我最爱吃鱼香茄子12 天前
【毕业设计优选】人力资源管理系统|Java|SpringBoot|Vue|前后端分离|带详细文档+部署教学视频
java·vue·毕业设计·springboot
骑着蜗牛撵大象32713 天前
SpringBoot+Vue3 企业智能体侧挂架构:独立服务、独立数据库与主线零侵入落地
数据库·spring boot·架构·vue·springboot·事件驱动·服务拆分
码艺-Alimjan15 天前
Tauri 网站To桌面应用实战总结
前端·javascript·vue