因为项目需求须要配置国际化,使用的UI框架为iview, 按照官方要求下载 vue-i18n(8.14.0),版本大于6.0 按照官方提供的6.0配置方案解决。vue
第一步: 建立一个新的目录 language 目录, 在该目录下建立 index.js、en-US.json、zh-CN.json。json
index.js 配置i18n: 按照官方文档引入须要的包,而后配置 (全是按照官方文档一步一步走)这里直接上代码app
import Vue from 'vue'; import iView from 'iview'; import VueI18n from 'vue-i18n'; import en from 'iview/dist/locale/en-US'; import zh from 'iview/dist/locale/zh-CN'; import US from './en-US'; import CN from './zh-CN' Vue.use(VueI18n); Vue.locale = () => {}; const messages = { en: Object.assign(US, en), //将本身的英文包和iview提供的结合 zh: Object.assign(CN, zh) //将本身的中文包和iview提供的结合 }; const i18n = new VueI18n({ locale: localStorage.getItem("locale") || 'en', // 设置语言,若是本地存储了则用本地的,没有则默认 'en' messages // set locale messages }); Vue.use(iView, { i18n: (key, value) => i18n.t(key, value) }) //上面这个比较重要 按照官网提供的方法 new Vue({ i18n }).$mount('#app'); 运行会出错 提示没法找到 _t 属性。 按照上述方法配置能够解决此问题(网上找的方法,亲测没问题) //将i18n 导出,在main.js 的 new Vue({}) 中须要配置 export default i18n
main.js 中只须要导入该文件,就能够正常使用了框架
import i18n from './language' new Vue({ el: '#app', router, i18n, //不配置会不生效的 components: { App }, template: '<App/>' })
en-US.json 配置英文翻译 这个应该很简单 我随便举了几个例子iview
{ "hello" : "Hello", "welcome": "Welcome" }
zh-CN.json 配置中文翻译 这个也同样spa
{ "hello" : "你好", "welcome": "欢迎光临" }
在vue文件中使用 {{$t('变量名')}}翻译
<template> <div class="containt"> {{ $t('welcome') }} </div> </template> <script> export default { name: "index" } </script> <style scoped> .containt{ height: 100%; width: 100%; background-color: #15162C; color: #fff; } </style>
结果:code
没有实现按键切换, 因此直接修改language/index.js 文件中的 内容将i8n 改成以下:component
const i18n = new VueI18n({ locale: 'zh', // set locale messages // set locale messages });
结果以下:router
上面的配置就能够实现iview的国际化,但愿对你们有帮助