Skip to content

Commit 29b9569

Browse files
author
Lison
authored
Merge pull request #1015 from iview/2.0
添加多语言示例页,支持自定义指定首页
2 parents 6267026 + 97491cc commit 29b9569

File tree

12 files changed

+145
-25
lines changed

12 files changed

+145
-25
lines changed

Diff for: package-lock.json

+11-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"cropperjs": "^1.2.2",
1919
"echarts": "^4.0.4",
2020
"html2canvas": "^1.0.0-alpha.12",
21-
"iview": "^3.0.0",
21+
"iview": "^3.1.3",
2222
"iview-area": "^1.5.17",
2323
"js-cookie": "^2.2.0",
2424
"simplemde": "^1.11.2",

Diff for: src/config/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ export default {
88
* 如果不使用,则需要在路由中给需要在菜单中展示的路由设置meta: {title: 'xxx'}
99
* 用来在菜单中显示文字
1010
*/
11-
useI18n: false,
11+
useI18n: true,
1212
/**
1313
* @description api请求基础路径
1414
*/
1515
baseUrl: {
1616
dev: 'https://www.easy-mock.com/mock/5add9213ce4d0e69998a6f51/iview-admin/',
1717
pro: 'https://produce.com'
18-
}
18+
},
19+
/**
20+
* @description 默认打开的首页的路由name值,默认为home
21+
*/
22+
homeName: 'home'
1923
}

Diff for: src/libs/util.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export const getTagNavListFromLocalstorage = () => {
100100
* @param {Array} routers 路由列表数组
101101
* @description 用于找到路由列表中name为home的对象
102102
*/
103-
export const getHomeRoute = routers => {
103+
export const getHomeRoute = (routers, homeName = 'home') => {
104104
let i = -1
105105
let len = routers.length
106106
let homeRoute = {}
@@ -110,7 +110,7 @@ export const getHomeRoute = routers => {
110110
let res = getHomeRoute(item.children)
111111
if (res.name) return res
112112
} else {
113-
if (item.name === 'home') homeRoute = item
113+
if (item.name === homeName) homeRoute = item
114114
}
115115
}
116116
return homeRoute
@@ -320,3 +320,11 @@ export const routeHasExist = (tagNavList, routeItem) => {
320320
})
321321
return res
322322
}
323+
324+
export const localSave = (key, value) => {
325+
localStorage.setItem(key, value)
326+
}
327+
328+
export const localRead = (key) => {
329+
return localStorage.getItem(key) || ''
330+
}

Diff for: src/locale/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Vue from 'vue'
22
import VueI18n from 'vue-i18n'
3+
import { localRead } from '@/libs/util'
34
import customZhCn from './lang/zh-CN'
45
import customZhTw from './lang/zh-TW'
56
import customEnUs from './lang/en-US'
@@ -12,7 +13,7 @@ Vue.use(VueI18n)
1213
// 自动根据浏览器系统语言设置语言
1314
const navLang = navigator.language
1415
const localLang = (navLang === 'zh-CN' || navLang === 'en-US') ? navLang : false
15-
let lang = window.localStorage.lang || localLang || 'zh-CN'
16+
let lang = localLang || localRead('local') || 'zh-CN'
1617

1718
Vue.config.lang = lang
1819

Diff for: src/locale/lang/en-US.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
home: 'Home',
23
components: 'Components',
34
count_to_page: 'Count-to',
45
tables_page: 'Table',
@@ -16,5 +17,15 @@ export default {
1617
directive_page: 'Directive',
1718
level_1: 'level-1',
1819
level_2: 'level-2',
19-
level_2_1: 'level-2-1'
20+
level_2_1: 'level-2-1',
21+
excel: 'Excel',
22+
'upload-excel': 'Upload Excel',
23+
'export-excel': 'Export Excel',
24+
tools_methods_page: 'Tools Methods',
25+
drag_list_page: 'Drag-list',
26+
i18n_page: 'Internationalization',
27+
modalTitle: 'Modal Title',
28+
content: 'This is the modal box content.',
29+
buttonText: 'Show Modal',
30+
'i18n-tip': 'Note: Only this page is multi-language, other pages do not add language content to the multi-language package.'
2031
}

Diff for: src/locale/lang/zh-CN.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
home: '首页',
23
components: '组件',
34
count_to_page: '数字渐变',
45
tables_page: '多功能表格',
@@ -16,5 +17,15 @@ export default {
1617
directive_page: '指令',
1718
level_1: 'level-1',
1819
level_2: 'level-2',
19-
level_2_1: 'level-2-1'
20+
level_2_1: 'level-2-1',
21+
excel: 'Excel',
22+
'upload-excel': '上传excel',
23+
'export-excel': '导出excel',
24+
tools_methods_page: '工具函数',
25+
drag_list_page: '拖拽列表',
26+
i18n_page: '多语言',
27+
modalTitle: '模态框题目',
28+
content: '这是模态框内容',
29+
buttonText: '显示模态框',
30+
'i18n-tip': '注:仅此页做了多语言,其他页面没有在多语言包中添加语言内容'
2031
}

Diff for: src/locale/lang/zh-TW.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
home: '首頁',
23
components: '组件',
34
count_to_page: '数字渐变',
45
tables_page: '多功能表格',
@@ -16,5 +17,15 @@ export default {
1617
directive_page: '指令',
1718
level_1: 'level-1',
1819
level_2: 'level-2',
19-
level_2_1: 'level-2-1'
20+
level_2_1: 'level-2-1',
21+
excel: 'Excel',
22+
'upload-excel': '上傳excel',
23+
'export-excel': '導出excel',
24+
tools_methods_page: '工具函數',
25+
drag_list_page: '拖拽列表',
26+
i18n_page: '多語言',
27+
modalTitle: '模態框題目',
28+
content: '這是模態框內容',
29+
buttonText: '顯示模態框',
30+
'i18n-tip': '注:僅此頁做了多語言,其他頁面沒有在多語言包中添加語言內容'
2031
}

Diff for: src/router/routers.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ export default [
3838
meta: {
3939
hideInMenu: true,
4040
title: '首页',
41-
notCache: true
41+
notCache: true,
42+
icon: 'md-home'
4243
},
4344
component: () => import('@/view/single-page/home')
4445
}
@@ -221,6 +222,25 @@ export default [
221222
}
222223
]
223224
},
225+
{
226+
path: '/i18n',
227+
name: 'i18n',
228+
meta: {
229+
hide: true
230+
},
231+
component: Main,
232+
children: [
233+
{
234+
path: 'i18n_page',
235+
name: 'i18n_page',
236+
meta: {
237+
icon: 'md-planet',
238+
title: '指令'
239+
},
240+
component: () => import('@/view/i18n/i18n-page.vue')
241+
}
242+
]
243+
},
224244
{
225245
path: '/directive',
226246
name: 'directive',

Diff for: src/store/module/app.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import {
77
getNextRoute,
88
routeHasExist,
99
routeEqual,
10-
getRouteTitleHandled
10+
getRouteTitleHandled,
11+
localSave,
12+
localRead
1113
} from '@/libs/util'
1214
import beforeClose from '@/router/before-close'
1315
import router from '@/router'
1416
import routers from '@/router/routers'
17+
import config from '@/config'
18+
const { homeName } = config
1519

1620
const closePage = (state, route) => {
1721
const nextRoute = getNextRoute(state.tagNavList, route)
@@ -25,8 +29,8 @@ export default {
2529
state: {
2630
breadCrumbList: [],
2731
tagNavList: [],
28-
homeRoute: getHomeRoute(routers),
29-
local: ''
32+
homeRoute: getHomeRoute(routers, homeName),
33+
local: localRead('local')
3034
},
3135
getters: {
3236
menuList: (state, getters, rootState) => getMenuByRouter(routers, rootState.user.access)
@@ -67,6 +71,7 @@ export default {
6771
}
6872
},
6973
setLocal (state, lang) {
74+
localSave('local', lang)
7075
state.local = lang
7176
}
7277
}

Diff for: src/view/i18n/i18n-page.vue

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<template>
2+
<div>
3+
<Row :gutter="10">
4+
<i-col span="6">
5+
<Card>
6+
<div class="i18n-card-box">
7+
<DatePicker type="date" placeholder="Select date"></DatePicker>
8+
<TimePicker type="timerange" placement="bottom-end" placeholder="Select time" style="display: block;margin-top: 10px;"></TimePicker>
9+
<Button type="primary" @click="modalVisible = true" style="margin-top: 10px;">{{ $t('buttonText') }}</Button>
10+
<Modal
11+
v-model="modalVisible"
12+
:title="$t('modalTitle')">
13+
<p>{{ content }}</p>
14+
<p>{{ content }}</p>
15+
<p>{{ content }}</p>
16+
</Modal>
17+
<i class="tip">{{ $t('i18n-tip') }}</i>
18+
</div>
19+
</Card>
20+
</i-col>
21+
</Row>
22+
</div>
23+
</template>
24+
25+
<script>
26+
export default {
27+
name: 'i18n_page',
28+
data () {
29+
return {
30+
modalVisible: false
31+
}
32+
},
33+
computed: {
34+
content () {
35+
return this.$t('content')
36+
}
37+
}
38+
}
39+
</script>
40+
41+
<style lang="less">
42+
.i18n-card-box{
43+
height: 200px;
44+
.tip{
45+
color: gray;
46+
display: block;
47+
margin-top: 20px;
48+
}
49+
}
50+
</style>

Diff for: vue.config.js

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ module.exports = {
3232
config.resolve.alias
3333
.set('@', resolve('src')) // key,value自行定义,比如.set('@@', resolve('src/components'))
3434
.set('_c', resolve('src/components'))
35-
.set('_conf', resolve('config'))
3635
},
3736
// 打包时不生成.map文件
3837
productionSourceMap: false

0 commit comments

Comments
 (0)