前端开发项目,特别是国际化的项目,需要进行多语言的支持
vue项目中的多语言支持使用的是vue-i18n
一、安装多语言包并进行配置
1.安装vue-i18n
的包
npm i vue-i18n@8.22.2
2.进行ElementUI的多语言配置
pc端的vue项目,大部分使用的Element组件库的组件,这里我也是直接引入的ElementUI
的多语言包
我们自己的项目中有些需要自定义文字的地方,需要我们自己写成语言包,再进行引入
最后展开到相应的语言环境下就可以了
// 进行多语言支持配置
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 customZH from './zh'
// 引入自定义英文包
import customEN from './en'
Vue.use(VueI18n) // 全局注册国际化包
// 创建国际化插件的实例
const i18n = new VueI18n({
// 指定语言类型 zh表示中文 en表示英文
locale: 'zh', // 这里我们可以自己进行修改,试一试自己的语言包是不能正常切换
// 将elementUI语言包加入到插件语言数据里
messages: {
// 英文环境下的语言数据
en: {
...elementEN
//...en 自己定义的英文文件包
},
// 中文环境下的语言数据
zh: {
...elementZH
//...zh 自己定义的中文文件包
}
}
})
// 配置elementUI 语言转换关系
locale.i18n((key, value) => i18n.t(key, value))
export default i18n
3.在main.js中挂载 i18n的插件
我们配置完毕之后,需要到main.js文件中进行挂载
// 省略其他...
import i18n from '@/lang'
// 加入到根实例配置项中
new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
这样我们使用前的准备工作基本就已经完事了
二、创建切换多语言组件,点击进行语言的切换
一般情况下,语言的版本是由用户决定的,所以我们需要准备一个语言切换的组件,以便用户根据自己的需求进行与语言的切换
以我目前的中英文语言包的切换为例
在vue身上挂载i18n
后,我们就可以直接通过 $ t
访问语言包里面的数据,也是通过这个$t
来给自定义的语言设置展现的文字
<div class="app-breadcrumb">
{{ $t('navbar.companyName') }}
<span class="breadBtn">体验版</span>
</div>
进行切换前可以创建一个公共组件Lang/index.vue
<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>
然后将组件进行全局注册
import Lang from './Lang'
Vue.component('Lang', Lang)
最后在需要的位置引用我们的组件就可以了
<!-- 语言包 -->
<lang class="right-menu-item" />
<!-- 全屏组件 -->
<screen-full class="right-menu-item" />
需要其他语言的话,最主要的就是对应语言的js包,然后继续配置文件包就可以了
有不对的地方可以评论指出!