灌糖包子 4305eb3fe6
feat: 接入 vue-i18n 实现全站国际化
引入 vue-i18n,支持简体中文、繁体中文、英文三种语言。
提取所有页面硬编码中文为国际化词条,Header 右上角新增语言切换下拉菜单。
语言偏好存储于 localStorage,首次访问根据 navigator.language 自动检测。
同步切换 Element Plus 组件语言,校验规则改为 computed 保证切换后实时更新。
2026-06-02 09:52:48 +08:00

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