diff --git a/package.json b/package.json index 27c16e0..60d7a25 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "vue-count-to": "^1.0.13", "vue-cropper": "0.4.9", "vue-echarts": "^5.0.0-beta.0", + "vue-i18n": "^8.28.2", "vue-image-crop-upload": "^2.5.0", "vue-router": "3.0.2", "vue-splitpane": "1.0.4", diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue index 2d49dd8..f09bc10 100644 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -3,14 +3,14 @@ - {{ tag.title }} + {{$t(tag.title )}} diff --git a/src/main.js b/src/main.js index db43ceb..011a5eb 100644 --- a/src/main.js +++ b/src/main.js @@ -4,7 +4,14 @@ import Cookies from 'js-cookie' import 'normalize.css/normalize.css' import VueClipboard from 'vue-clipboard2' + +import ElementUI from 'element-ui' import Element, { Table, TableColumn } from 'element-ui' + +import VueI18n from 'vue-i18n' +import locale from 'element-ui/lib/locale' +import enLocale from './i18n/en' +import zhCNLocale from './i18n/zh-CN' const TableProps = Element.Table.props const TableColumnProps = Element.TableColumn.props TableProps.border = { type: Boolean, default: true } // 边框 @@ -14,10 +21,11 @@ TableColumnProps.showOverflowTooltip = { type: Boolean, default: true } // 文 TableColumnProps.sortable = { type: Boolean, default: true } // 置默认的排序列和排序顺序 Vue.use(Table) Vue.use(TableColumn) +Vue.use(ElementUI, { locale }) // 数据字典 import dict from './components/Dict' -import FileSaver from "file-saver"; -import XLSX from "xlsx"; +import FileSaver from 'file-saver' +import XLSX from 'xlsx' // 权限指令 import checkPer from '@/utils/permission' import permission from './components/Permission' @@ -36,16 +44,32 @@ Vue.use(VueClipboard) Vue.use(checkPer) Vue.use(permission) Vue.use(dict) + +Vue.use(VueI18n) + +const messages = { + en: enLocale, + 'zh': zhCNLocale +} + +const i18n = new VueI18n({ + locale: 'en', // 设置默认语言 + messages +}) + Vue.use(Element, { size: Cookies.get('size') || 'small' // set element-ui default size }) +locale.i18n((key, value) => i18n.t(key, value)) +Vue.use(ElementUI, { i18n: (key, value) => i18n.t(key, value) }) Vue.prototype.$fileSaver = FileSaver Vue.prototype.$xlsx = XLSX Vue.config.productionTip = false new Vue({ + i18n, el: '#app', router, store, diff --git a/src/router/index.js b/src/router/index.js index 6c3aa27..5dfb0b1 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -9,7 +9,7 @@ import { filterAsyncRouter } from '@/store/modules/permission' NProgress.configure({ showSpinner: false })// NProgress Configuration -const whiteList = ['/login', '/401', '404', '/system2/report']// no redirect whitelist +const whiteList = ['/login', '/login_en', '/401', '404', '/system2/report']// no redirect whitelist router.beforeEach((to, from, next) => { if (to.meta.title) { diff --git a/src/router/routers.js b/src/router/routers.js index c575ab9..9f05650 100644 --- a/src/router/routers.js +++ b/src/router/routers.js @@ -9,6 +9,10 @@ export const constantRouterMap = [ meta: { title: '登录', noCache: false ,keepAlive:true}, component: (resolve) => require(['@/views/login'], resolve), hidden: true + },{ path: '/login_en', + meta: { title: 'Login', noCache: false ,keepAlive:true}, + component: (resolve) => require(['@/views/login_en'], resolve), + hidden: true },{ path: '/home', meta: { title: '登录', noCache: false ,keepAlive:true}, component: (resolve) => require(['@/views/home'], resolve), diff --git a/src/views/login.vue b/src/views/login.vue index 1ae52bc..d8f2ff8 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -1,38 +1,66 @@