Vue I18n 是 Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中。
安装
vue2的版本,官网教程npm无法安装:版本冲突
vue2安装:
npm install vue-i18n@6
创建单独的语言包
语言包对象 最后可能会比较大,属性比较多,所以最好的办法是将其定义成单独的 js 文件,然后再进行整合
src 目录下新建 langurage 目录,在其中新建 ch.js 和 en.js 文件,然后将上面的语言包代码拷贝进来,因为一会要使用语言包对象,所以要导出
ch.js
// 中文语言包
export default{
table: {
username: '用户名',
email: '邮箱',
mobile: '手机'
}
}
en.js
// 英文语言包
export default {
table: {
username: 'Username',
email: 'Email',
mobile: 'Mobile'
}
}
整合语言包文件
我们将整合语言包对象和创建 VueI18n 实例并配置的过程写到一个 js 文件中,然后在 main.js 中导入
langurage 目录中新建 index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
// 从语言包文件中导入语言包对象
import ch from './ch'
import en from './en'
Vue.use(VueI18n)
const messages = {
ch,
en
}
const i18n = new VueI18n({
messages,
locale: 'ch' // 在这里切换语言
})
export default i18n
main.js 中引入
// 多语言
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
import i18n from './langurage'
Vue.config.productionTip = false
new Vue({
i18n, // 挂载 i18n
router,
render: h => h(App),
}).$mount('#app')
组件中使用多语言
// 直接使用
<template>
<div>
<span>多语言测试</span>
<p>{{ $t('table.username') }}</p>
<p>{{ $t('table.email') }}</p>
<p>{{ $t('table.mobile') }}</p>
</div>
</template>
切换语言,需要修改 langurage/index.js
中的 locale
的值