引入 vue-i18n,支持简体中文、繁体中文、英文三种语言。 提取所有页面硬编码中文为国际化词条,Header 右上角新增语言切换下拉菜单。 语言偏好存储于 localStorage,首次访问根据 navigator.language 自动检测。 同步切换 Element Plus 组件语言,校验规则改为 computed 保证切换后实时更新。
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
export interface MenuItem {
|
|
titleKey: string
|
|
path: string
|
|
permission: string
|
|
}
|
|
|
|
export interface MenuGroup {
|
|
name: string
|
|
titleKey: string
|
|
icon: string
|
|
child: MenuItem[]
|
|
}
|
|
|
|
const menus: MenuGroup[] = [
|
|
{
|
|
name: 'system',
|
|
titleKey: 'menu.system.title',
|
|
icon: 'Operation',
|
|
child: [
|
|
{ titleKey: 'menu.system.config', path: '/system/config', permission: 'config:list' },
|
|
{ titleKey: 'menu.system.user', path: '/system/user', permission: 'user:list' },
|
|
{ titleKey: 'menu.system.role', path: '/system/role', permission: 'role:list' },
|
|
{ titleKey: 'menu.system.article', path: '/system/article', permission: 'article:list' },
|
|
{ titleKey: 'menu.system.statistics', path: '/system/statistics', permission: 'article:list' }
|
|
]
|
|
},{
|
|
name: 'api',
|
|
titleKey: 'menu.api.title',
|
|
icon: 'Histogram',
|
|
child: [
|
|
{ titleKey: 'menu.api.hitokoto', path: '/api/hitokoto', permission: 'hitokoto:list' },
|
|
{ titleKey: 'menu.api.photoWall', path: '/api/photoWall', permission: 'photoWall:list' },
|
|
{ titleKey: 'menu.api.sourceImage', path: '/api/sourceImage', permission: 'sourceImage:list' },
|
|
{ titleKey: 'menu.api.music', path: '/api/music', permission: 'music:list' }
|
|
]
|
|
},
|
|
{
|
|
name: 'debug',
|
|
titleKey: 'menu.debug.title',
|
|
icon: 'Tools',
|
|
child: [
|
|
{ titleKey: 'menu.debug.captcha', path: '/debug/captcha', permission: 'captcha:list' }
|
|
]
|
|
}
|
|
]
|
|
|
|
export default menus |