feat: Added Internationalization(vue-i18n)

pull/921/head
冯建军 3 years ago committed by 冯建军
parent 16542c8bc8
commit dc1926a8d4

@ -59,6 +59,7 @@
"vue": "2.6.10", "vue": "2.6.10",
"vue-cookie": "^1.1.4", "vue-cookie": "^1.1.4",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-i18n": "^6.1.3",
"vue-router": "3.0.2", "vue-router": "3.0.2",
"vue-splitpane": "1.0.4", "vue-splitpane": "1.0.4",
"vue2-jsoneditor": "^1.0.6", "vue2-jsoneditor": "^1.0.6",
@ -68,7 +69,7 @@
"devDependencies": { "devDependencies": {
"@babel/core": "7.0.0", "@babel/core": "7.0.0",
"@babel/register": "7.0.0", "@babel/register": "7.0.0",
"@vue/cli-plugin-babel": "3.5.3", "@vue/cli-plugin-babel": "~4",
"@vue/cli-plugin-eslint": "3.5.1", "@vue/cli-plugin-eslint": "3.5.1",
"@vue/cli-plugin-unit-jest": "3.5.3", "@vue/cli-plugin-unit-jest": "3.5.3",
"@vue/cli-service": "3.5.3", "@vue/cli-service": "3.5.3",

@ -18,7 +18,7 @@
<!-- </el-tooltip>--> <!-- </el-tooltip>-->
</template> </template>
<langChange />
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img src="../../../public/hippo4j.gif" class="user-avatar"> <img src="../../../public/hippo4j.gif" class="user-avatar">
@ -45,12 +45,14 @@
import Breadcrumb from '@/components/Breadcrumb' import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger' import Hamburger from '@/components/Hamburger'
import ErrorLog from '@/components/ErrorLog' import ErrorLog from '@/components/ErrorLog'
import langChange from '@/locale/langChange'
export default { export default {
components: { components: {
Breadcrumb, Breadcrumb,
Hamburger, Hamburger,
ErrorLog ErrorLog,
langChange
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
@ -106,7 +108,7 @@
float: right; float: right;
height: 100%; height: 100%;
line-height: 50px; line-height: 50px;
display: flex;
&:focus { &:focus {
outline: none; outline: none;
} }

@ -0,0 +1,28 @@
// 导入elementUi默认中英文语言包
import elZh from 'element-ui/lib/locale/lang/zh-CN'
import elEn from 'element-ui/lib/locale/lang/en'
import zh from './lang/zh'
import en from './lang/en'
export const i18nConfig = {
locale: 'en', // 默认语种
messages: {
zh: { ...zh, ...elZh }, // 中文包
en: { ...en, ...elEn } // 英文包
}
}
export const langSelectList = () => {
return [
{
lang: 'zh',
name: '中文'
},
{
lang: 'en',
name: 'English'
}
]
}

@ -0,0 +1,10 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import { i18nConfig } from './config'
Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig)
export default i18n

@ -0,0 +1,53 @@
<template>
<div class="lang-drop-wrap">
<el-dropdown @command="selectedLang" trigger="click">
<span class="el-dropdown-link">
{{ currentLangName }}
<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
v-for="item in langSelectList"
:key="item.lang"
:command="item.lang"
>
<span class="dropdown-item-text" :data-active="item.lang === currentLang">{{ item.name }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
<script>
import { langSelectList } from './config'
export default {
data() {
return {
langSelectList: langSelectList(),
currentLang: ''
}
},
computed: {
currentLangName() {
const langItem = this.langSelectList.find(item => item.lang === this.currentLang)
return langItem?.name || '选择语言'
}
},
methods: {
//
selectedLang(value) {
this.currentLang = value
}
}
}
</script>
<style lang="scss" scoped>
.lang-drop-wrap{
height: 100%;
margin-right: 15px;
.dropdown-item-text{
&[data-active=true] {
color: var(--jjext-color-dropdown-text) !important;
}
}
}
</style>

@ -17,6 +17,7 @@ import './icons'; // icon
import './permission'; // permission control import './permission'; // permission control
// import './utils/error-log' // error log // import './utils/error-log' // error log
import i18n from '@/locale'
import * as filters from './filters'; // global filters import * as filters from './filters'; // global filters
import echarts from 'echarts'; import echarts from 'echarts';
Vue.prototype.$echarts = echarts; Vue.prototype.$echarts = echarts;
@ -25,6 +26,7 @@ Vue.prototype.$cookie = cookie;
Vue.use(Element, { Vue.use(Element, {
size: Cookies.get('size') || 'medium', // set element-ui default size size: Cookies.get('size') || 'medium', // set element-ui default size
i18n: (key, value) => i18n.t(key, value)
}); });
// register global utility filters // register global utility filters
@ -38,5 +40,6 @@ new Vue({
el: '#app', el: '#app',
router, router,
store, store,
i18n,
render: (h) => h(App), render: (h) => h(App),
}); });

@ -35,7 +35,7 @@ module.exports = {
}, },
proxy: { proxy: {
'/hippo4j/v1/cs': { '/hippo4j/v1/cs': {
target: `http://127.0.0.1:6691/hippo4j/v1/cs`, target: `http://console.hippo4j.cn:80/hippo4j/v1/cs`,
changOrigin: true, changOrigin: true,
secure: false, secure: false,
pathRewrite: { pathRewrite: {

Loading…
Cancel
Save