1.准备工作
这项功能看着很高大上,但是执行起来却很简单,因为我们的vue本身就内置一个语言转换的方法
名为i18n,全名 internationalization 缩写取其头尾字母然后中间还剩18个字母,使用方法当然得先下包了
代码:npm i vue-i18n
2.实列中使用
在项目文件夹中创建一个新得文件夹最好取名为“lang/index.js”大致内容如下
// 进行多语言支持配置
import Vue from 'vue' // 引入Vue
import VueI18n from 'vue-i18n' // 引入国际化的插件包
import locale from 'element-ui/lib/locale'
import elementEN from 'element-ui/lib/locale/lang/en' // 引入饿了么的英文包
import elementZH from 'element-ui/lib/locale/lang/zh-CN' // 引入饿了么的中文包
// 引入得包根据所需在element-ui自行寻找
Vue.use(VueI18n) // 全局注册国际化包
// 创建国际化插件的实例
const i18n = new VueI18n({
// 指定语言类型 zh表示中文 en表示英文
locale: 'zh',
// 将elementUI语言包加入到插件语言数据里
messages: {
// 英文环境下的语言数据
en: {
...elementEN
},
// 中文环境下的语言数据
zh: {
...elementZH
}
}
})
// 配置elementUI 语言转换关系
locale.i18n((key, value) => i18n.t(key, value))
export default i18n
2.1在min.js中挂载
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n({
locale: 'zh', //默认中文
message: {
'zh': require('./lang/zh'),
'en': require('./lang/en')
}
})
2.2切换语言
在此处根据所需得语言切换
3.实现动态切换中英文-封装组件
3.1在放置公共组件的位置:lang/index.js
<template>
<el-dropdown trigger="click" @command="changeLanguage">
<div>
<svg-icon style="color:#fff;font-size:20px" icon-class="language" />
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="zh" :disabled="'zh'=== $i18n.locale ">中文</el-dropdown-item>
<el-dropdown-item command="en" :disabled="'en'=== $i18n.locale ">en</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
<script>
export default {
methods: {
changeLanguage(lang) {
this.$i18n.locale = lang // 设置给本地的i18n插件
this.$message.success('切换多语言成功')
}
}
}
</script>
3.2在component/index.js中进行全局组件注册
import Lang from './Lang'
export default {
// 插件的初始化, 插件给你提供的全局的功能, 都可以在这里配置
install(Vue) {
// 进行组件的全局注册
Vue.component('Lang', Lang)
}
}
3.3在Navbar组件中引入使用组件
<!-- 语言包 -->
<lang class="right-menu-item" />