vue中使用vue-i18n实现国际化配置以及js中语言切换

使用vuex进行状态管理

首先需要下载vue-i18n以及js-cookie:

    npm i vue-i18n 

    npm i js-cookie

目录文件:

|-- src

    |-- components  //组件

        |-- changeLang.vue

    |-- store

        |-- index.js

        |--modules

            |-- routes.js

    |-- lang // 语言库

        |-- en.js // 英文

        |-- zh.js // 中文

        |-- index.js  // 入口文件

    |-- main.js

    |-- app.vue

在main.js里面配置:

import i18n from './lang'
Vue.use(ElementUI, {
i18n: (key, value) => i18n.t(key, value)
})
new Vue({
el: '#app',
router,
store,
i18n,
template: '<App/>',
components: {App}
})

lang--index.js

vue中使用vue-i18n实现国际化配置以及js中语言切换

en.js: 

export default {
version: {
info: 'authorization info',
email: 'EMaill',
vs: 'version number '
}
}


zh.js:

export default {
version: {
info: '授权信息',
email: '邮箱',
vs: '版本号'
}
}

routes.js:

import Cookies from 'js-cookie'
const routes = {
state: {
language: Cookies.get('language') || 'zh'
    },
getters: {
language: state => {
return state.language
}
},
mutations: {
set_language: (state, language) => {
state.language = language
Cookies.set('language', language)
}
}
}
export default routes


语言切换组件changeLang.vue

vue中使用vue-i18n实现国际化配置以及js中语言切换

在相应位置引用此组件即可。

在页面上绑定:

<span>{{$t('version.email')}}</span>
<el-form-item :label="$t('table.license_no')" prop="license">
<el-input v-model="dataform.license" :disabled="disabled" :placeholder="$t('table.license_no')"></el-input>
</el-form-item>

如果某些js中含有字符需要切换语言(包括rules),需要写在computed中。 

js中语言切换:

computed: {
rules1 () {
return {
upImg: [
{required: true, message: this.$t('table.face_idnotEmpty'), trigger: 'blur'}
]
}
}
  }

语言切换参考项目: http://panjiachen.github.io/vue-element-admin/#/dashboard