mirror of
https://github.com/iczer/vue-antd-admin
synced 2025-04-05 07:27:06 +08:00
commit
010ffdaacb
@ -3,5 +3,203 @@ title: 国际化
|
||||
lang: zn-CN
|
||||
---
|
||||
# 国际化
|
||||
vue-antd-admin 采用 [vue-i18n](https://kazupon.github.io/vue-i18n/) 插件来实现国际化,该项目已经内置并且加载好了基础配置。可以直接上手使用。
|
||||
|
||||
### 作者还没来得及编辑该页面,如果你感兴趣,可以点击下方链接,帮助作者完善此页
|
||||
> 如果你还没有看快速入门,请先移步查看: [页面 -> i18n国际化配置](../develop/page.html#i18n国际化配置)
|
||||
|
||||
|
||||
## 菜单国际化(配置路由国际化)
|
||||
如果你有一个路由是这样的 `@/router/config.js`
|
||||
|
||||
```js
|
||||
...
|
||||
{
|
||||
path: '/',
|
||||
name: '首页',
|
||||
component: TabsView,
|
||||
redirect: '/login',
|
||||
children: [
|
||||
{
|
||||
path: 'dashboard',
|
||||
name: 'Dashboard',
|
||||
meta: {
|
||||
icon: 'dashboard'
|
||||
},
|
||||
component: BlankView,
|
||||
children: [
|
||||
{
|
||||
path: 'workplace',
|
||||
name: '工作台',
|
||||
meta: {
|
||||
page: {
|
||||
closable: false
|
||||
}
|
||||
},
|
||||
component: () => import('@/pages/dashboard/workplace'),
|
||||
},
|
||||
{
|
||||
path: 'analysis',
|
||||
name: '分析页',
|
||||
component: () => import('@/pages/dashboard/analysis'),
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
...
|
||||
```
|
||||
那么你的 `@/router/i18n.js` 就应该是
|
||||
```js
|
||||
module.exports = {
|
||||
messages: {
|
||||
CN: {
|
||||
dashboard: {
|
||||
name: 'Dashboard',
|
||||
workplace: {name: '工作台'},
|
||||
analysis: {name: '分析页'}
|
||||
},
|
||||
US: {
|
||||
dashboard: {
|
||||
name: 'Dashboard',
|
||||
workplace: {name: 'Workplace'},
|
||||
analysis: {name: 'Analysis'}
|
||||
},
|
||||
HK: {
|
||||
dashboard: {
|
||||
name: 'Dashboard',
|
||||
workplace: {name: '工作台'},
|
||||
analysis: {name: '分析頁'}
|
||||
},
|
||||
// 其他国家 JP ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
以 `CN(中文)` 这个 `key` 为例,访问 `工作台(URL/dashboard/analysis)` 就相当于访问 `I18n.js` 文件的 `dashboard.analysis.name` 就能定位到菜单的所使用的语言。
|
||||
|
||||
```JS
|
||||
// 如:你的访问的路由是 `URL/abc/edf/xxx`
|
||||
// @/router/config.js
|
||||
{
|
||||
path: 'abc',
|
||||
name: '一级',
|
||||
children: [
|
||||
{
|
||||
path: 'edf',
|
||||
name: '二级',
|
||||
children: [
|
||||
{
|
||||
path: 'xxx',
|
||||
name: '三级',
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
// @/router/i18n.js
|
||||
{
|
||||
CN: {
|
||||
abc: {
|
||||
name: '一级',
|
||||
edf: {
|
||||
name: '二级',
|
||||
xxx: {
|
||||
name: '三级'
|
||||
}
|
||||
},
|
||||
},
|
||||
US: {
|
||||
abc: {
|
||||
name: 'one',
|
||||
edf: {
|
||||
name: 'two',
|
||||
xxx: {
|
||||
name: 'three'
|
||||
}
|
||||
},
|
||||
},
|
||||
// 其他语言
|
||||
}
|
||||
```
|
||||
|
||||
### 小技巧(公有语言包)
|
||||
项目里面肯定有很多通用或者复用性很高的语言,比如 `添加`、`删除`、等共用的语言也可以写到 `@/router/i18n.js`
|
||||
|
||||
```JS
|
||||
// @/router/i18n.js
|
||||
CN: {
|
||||
'add': '添加',
|
||||
},
|
||||
US: {
|
||||
'add': 'Add',
|
||||
},
|
||||
// 其他语言
|
||||
```
|
||||
那么在页面里面就可以直接使用该语言,就无需在 `page/你的页面/i18n.js` 重复添加。
|
||||
```vue
|
||||
<template>
|
||||
<div>{{ $t('add') }}</div>
|
||||
</template>
|
||||
<script>
|
||||
...
|
||||
export default {
|
||||
...
|
||||
data() {
|
||||
return {
|
||||
xxx: this.$t('add')
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
## 新增一门语言
|
||||
|
||||
首先在 `@/layouts/header/AdminHeader.vue` ,新增一门语言 (多个同理)。
|
||||
|
||||
```vue {15}
|
||||
<template>
|
||||
...
|
||||
</template>
|
||||
<script>
|
||||
...
|
||||
export default {
|
||||
...
|
||||
data() {
|
||||
return {
|
||||
langList: [
|
||||
{key: 'CN', name: '简体中文', alias: '简体'},
|
||||
{key: 'HK', name: '繁體中文', alias: '繁體'},
|
||||
{key: 'US', name: 'English', alias: 'English'},
|
||||
// 新增一个语言选项, key是i18n的索引,name是菜单显示名称
|
||||
{key: 'JP', name: 'Japanese', alias: 'Japanese'}
|
||||
],
|
||||
searchActive: false
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
> TIP: 后续开发建议把这里改成动态配置的方式!
|
||||
|
||||
然后开始往 `@/router/i18n.js` 和 `@/pages/你的页面/i18n.js` 里面分别添加上语言的翻译。
|
||||
|
||||
```vue {12,13,14}
|
||||
module.exports = {
|
||||
messages: {
|
||||
CN: {
|
||||
home: {name: '首页'},
|
||||
},
|
||||
US: {
|
||||
home: {name: 'home'},
|
||||
},
|
||||
HK: {
|
||||
home: {name: '首頁'},
|
||||
},
|
||||
JP: {
|
||||
home: {name: '最初のページ'},
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> Notice: 更多用法请移步到 [vue-i18n](https://kazupon.github.io/vue-i18n/) 。
|
@ -95,7 +95,14 @@ export default {
|
||||
return {
|
||||
...item,
|
||||
total: selectedRows.reduce((sum, val) => {
|
||||
return sum + val[item.dataIndex]
|
||||
let v
|
||||
try{
|
||||
v = val[item.index] ? val[item.index] : eval(`val.${item.dataIndex}`);
|
||||
}catch(_){
|
||||
v = val[item.index];
|
||||
}
|
||||
v = !isNaN(parseFloat(v)) ? parseFloat(v) : 0;
|
||||
return sum + v
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user