先现在项目中安装vue-i18n的依赖

1
npm install vue-i18n --save

在src下建一个lang的文件夹,并且在其下面建一个index.js文件,然后在里面写如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import Vue from "vue"; // 引入Vue
import VueI18n from "vue-i18n"; // 引入国际化的包
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en' //引入el自带得国际化语言包,防止内部插件出现乱码
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'//引入el自带得国际化语言包,防止内部插件出现乱码
Vue.use(VueI18n); // 全局注册国际化包


// 准备翻译的语言环境信息
const i18n = new VueI18n({
locale: localStorage.getItem('locale')||"en", // 从cookie中获取语言类型 获取不到就是中文
messages: {
'zh': Object.assign(require('./zh.js'), zhLocale) , // 中文语言包
'en': Object.assign(require('./en.js'), enLocale) // 英文语言包

}
});

ElementLocale.i18n((key, value) => i18n.t(key, value))
export default i18n

lang文件夹下面建en.js和zh.js文件,语言包内部示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
/**zh.js文件**/
module.exports = {
menu : {
home:"首页"
},
content:{
main:"这里是内容"
}
}

/**en.js文件**/
module.exports = {
menu : {
home:"home"
},
content:{
main:"this is content"
}
}

在main.js中引入vue-i18n并挂在到vue实例上

1
2
3
4
5
6
7
8
9
10
// 国际化
import i18n from "@/lang/index";
import locale from 'element-ui/lib/locale/lang/en'
Vue.use(ElementUI,{locale});
new Vue({
router,
store,
i18n,
render: h => h(App)
}).$mount("#app");

在页面中使用示例如下

1
2
3
4
5
(1)在标签内作为正文内容
<div class="title">{{$t('menu.home')}}</div>

(2)作为标签属性使用
<input :placeholder="$t('content.main')" type="text">

切换语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        <el-dropdown szie="mini" class="changeLang" @command="handleCommand">
<span>
切换语言<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown" >
<el-dropdown-item command="en">English</el-dropdown-item>
<el-dropdown-item command="zh">中文简体</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>



methods:{
// 切换语言
handleCommand(command) {
// console.log(command)
this.$i18n.locale = command;
localStorage.setItem('locale',command)
},
}

可能会遇到的问题,Cannot read properties of undefined (reading ‘install‘) at Function.Vue.use

报错的原因主要是因为当前使用的版本不匹配,在这里提供一个可行的其中一种方法。
下载@8版本的就好

1
npm install vue-i18n@8