---
title: 国际化
vue-antd-admin 采用 vue-i18n 插件来实现国际化,该项目已经内置并且加载好了基础配置。可以直接上手使用。
如果你还没有看快速入门,请先移步查看: 页面 -> i18n国际化配置
如果你没有对菜单进行国际化配置,admin 默认会从路由数据中提取数据作为国际化配置。route.name 作为中文语言,route.path 作为英文语言。
国际化提取函数定义在 @/utils/i18n.js
文件中,会在路由加载时调用,如下:js /** * 从路由提取国际化数据 * @param i18n * @param routes */ function mergeI18nFromRoutes(i18n, routes) { formatFullPath(routes) const CN = generateI18n(new Object(), routes, 'name') const US = generateI18n(new Object(), routes, 'path') i18n.mergeLocaleMessage('CN', CN) i18n.mergeLocaleMessage('US', US) const messages = routesI18n.messages Object.keys(messages).forEach(lang => { i18n.mergeLocaleMessage(lang, messages[lang]) }) }
如果你想自定义菜单国际化数据,可在 @/router/i18n.js
文件中配置。我们以路由的 path 作为 key(嵌套path 的写法也会被解析),name 作为 国际化语言的值。
假设你有一个路由的配置如下:
```js
[{
path: 'parent',
...
children: [{
path: 'self',
...
}]
}]
or
[{
path: 'other',
...
children: [{
path: '/parent/self', // 在国际化配置中 key 会解析为 parent.self
...
}]
}] 那么你需要在 `@/router/i18n.js` 中这样配置:
jsx
messages: {
CN: {
parent: {
name: '父級菜單',
self: {name: '菜單名'},
},
US: {
parent: {
name: 'parent menu',
self: {name: 'menu name'},
},
HK: {
parent: {
name: '父級菜單',
self: {name: '菜單名'},
},
```
首先在 @/layouts/header/AdminHeader.vue
,新增一门语言 (多个同理)。
<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
里面分别添加上语言的翻译。
module.exports = {
messages: {
CN: {
home: {name: '首页'},
},
US: {
home: {name: 'home'},
},
HK: {
home: {name: '首頁'},
},
JP: {
home: {name: '最初のページ'},
},
}
}
Notice: 更多用法请移步到 vue-i18n 。