在工作中,遇到了对项目使用多语言切换的需求,该怎么做
装包: npm i vue-i18n@8.22.2
配置i18n
// 进行多语言支持配置
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' // 引入ele的英文包
import elementZH from 'element-ui/lib/locale/lang/zh-CN' // 引入ele的中文包
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
挂载 i18n的插件
// 省略其他...
import i18n from '@/lang'
// 加入到根实例配置项中
new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
自定义内容多语言配置
将文件放在index.js同一级
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' // 引入饿了么的中文包
import elementUG from 'element-ui/lib/locale/lang/ug-CN' // 引入饿了么的阿拉伯包
// 引入自定义中文包
import customZH from './zh'
// 引入自定义英文包
import customEN from './en'
Vue.use(VueI18n) // 全局注册国际化包
// 创建国际化插件的实例
const i18n = new VueI18n({
// 指定语言类型 zh表示中文 en表示英文
locale: 'en',
// 将elementUI语言包加入到插件语言数据里
messages: {
// 英文环境下的语言数据
en: {
...elementEN,
...customEN
},
// 中文环境下的语言数据
zh: {
...elementZH,
...customZH
},
// 阿拉伯环境下的语言数据
ug: {
...elementUG
}
}
})
// 配置elementUI 语言转换关系
locale.i18n((key, value) => i18n.t(key, value))
export default i18n
新增内容截图
在en.js和zh.中分别设置哪个需要更改转换的内容
用t(′属性名′)来生成标题。这里的t('属性名')来生成标题。这里的t(′属性名′)来生成标题。这里的t是引入了i18n之后,自动挂载在vue实例上的功能。
eg:
<el-dropdown-item divided @click.native="logout">
<span style="display:block;"> 退出登录</span>
</el-dropdown-item>
<el-dropdown-item divided @click.native="logout">
<span style="display:block;">{{ $t('navbar.logOut') }}</span>
</el-dropdown-item>
locale: '',转换 en 或 zh 即可
熟悉用法后,还是需要去封装全局组件,达到全屏转换的效果.