From a17d93d92ec36bf78bec508563a2c5d564f71a3d Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Mon, 2 Sep 2024 23:37:31 +0800 Subject: [PATCH] =?UTF-8?q?optimize:=20=E2=99=BB=EF=B8=8F=20=E5=B0=86?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E5=8D=95=E7=8B=AC=E6=8B=86=E5=88=86?= =?UTF-8?q?=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/en.yaml | 91 ------------- locales/zh-CN.yaml | 91 ------------- mock/asyncRoutes.ts | 45 +++---- mock/i18n.ts | 16 +++ mock/i18n/en.ts | 20 +++ mock/i18n/en/buttons.ts | 25 ++++ mock/i18n/en/login.ts | 40 ++++++ mock/i18n/en/menus.ts | 120 ++++++++++++++++++ mock/i18n/en/panel.ts | 38 ++++++ mock/i18n/en/search.ts | 8 ++ mock/i18n/en/status.ts | 11 ++ mock/i18n/en/style.ts | 5 + mock/i18n/en/system.ts | 8 ++ mock/i18n/zh.ts | 20 +++ mock/i18n/zh/buttons.ts | 26 ++++ mock/i18n/zh/login.ts | 38 ++++++ mock/i18n/zh/menus.ts | 120 ++++++++++++++++++ mock/i18n/zh/panel.ts | 34 +++++ mock/i18n/zh/search.ts | 10 ++ mock/i18n/zh/status.ts | 11 ++ mock/i18n/zh/style.ts | 5 + mock/i18n/zh/system.ts | 8 ++ src/App.vue | 57 +++++++-- src/api/v1/i18n/i18n.ts | 9 ++ src/layout/components/lay-navbar/index.vue | 18 +-- .../lay-notice/components/NoticeList.vue | 5 +- src/layout/components/lay-notice/index.vue | 14 +- .../components/SearchHistoryItem.vue | 7 +- .../lay-search/components/SearchModal.vue | 32 ++--- .../lay-search/components/SearchResult.vue | 9 +- src/layout/components/lay-setting/index.vue | 4 +- .../components/lay-sidebar/NavHorizontal.vue | 22 ++-- src/layout/components/lay-sidebar/NavMix.vue | 25 ++-- .../components/SidebarBreadCrumb.vue | 10 +- .../lay-sidebar/components/SidebarItem.vue | 8 +- src/layout/components/lay-tag/index.vue | 51 ++++---- src/layout/hooks/useNav.ts | 10 +- src/layout/hooks/useTag.ts | 29 ++--- src/layout/hooks/useTranslationLang.ts | 5 +- src/layout/types.ts | 3 +- src/main.ts | 1 - src/plugins/i18n.ts | 120 ++---------------- src/router/index.ts | 33 ++--- src/router/modules/error.ts | 4 +- src/router/modules/home.ts | 7 +- src/router/modules/remaining.ts | 3 +- src/store/i18n/i18n.ts | 34 +++++ src/store/index.ts | 3 + src/views/login/index.vue | 16 +-- src/views/login/utils/rule.ts | 6 +- types/store/baseStoreState.ts | 6 + types/store/i18n.d.ts | 4 + 52 files changed, 858 insertions(+), 487 deletions(-) delete mode 100644 locales/en.yaml delete mode 100644 locales/zh-CN.yaml create mode 100644 mock/i18n.ts create mode 100644 mock/i18n/en.ts create mode 100644 mock/i18n/en/buttons.ts create mode 100644 mock/i18n/en/login.ts create mode 100644 mock/i18n/en/menus.ts create mode 100644 mock/i18n/en/panel.ts create mode 100644 mock/i18n/en/search.ts create mode 100644 mock/i18n/en/status.ts create mode 100644 mock/i18n/en/style.ts create mode 100644 mock/i18n/en/system.ts create mode 100644 mock/i18n/zh.ts create mode 100644 mock/i18n/zh/buttons.ts create mode 100644 mock/i18n/zh/login.ts create mode 100644 mock/i18n/zh/menus.ts create mode 100644 mock/i18n/zh/panel.ts create mode 100644 mock/i18n/zh/search.ts create mode 100644 mock/i18n/zh/status.ts create mode 100644 mock/i18n/zh/style.ts create mode 100644 mock/i18n/zh/system.ts create mode 100644 src/api/v1/i18n/i18n.ts create mode 100644 src/store/i18n/i18n.ts create mode 100644 types/store/baseStoreState.ts create mode 100644 types/store/i18n.d.ts diff --git a/locales/en.yaml b/locales/en.yaml deleted file mode 100644 index 9d23b5f..0000000 --- a/locales/en.yaml +++ /dev/null @@ -1,91 +0,0 @@ -buttons: - pureLoginOut: LoginOut - pureLogin: Login - pureOpenSystemSet: Open System Configs - pureReload: Reload - pureCloseCurrentTab: Close CurrentTab - pureCloseLeftTabs: Close LeftTabs - pureCloseRightTabs: Close RightTabs - pureCloseOtherTabs: Close OtherTabs - pureCloseAllTabs: Close AllTabs - pureContentFullScreen: Content FullScreen - pureContentExitFullScreen: Content ExitFullScreen - pureClickCollapse: Collapse - pureClickExpand: Expand - pureConfirm: Confirm - pureSwitch: Switch - pureClose: Close - pureBackTop: BackTop - pureOpenText: Open - pureCloseText: Close -search: - pureTotal: Total - pureHistory: History - pureCollect: Collect - pureDragSort: (Drag Sort) - pureEmpty: Empty - purePlaceholder: Search Menu -panel: - pureSystemSet: System Configs - pureCloseSystemSet: Close System Configs - pureClearCacheAndToLogin: Clear cache and return to login page - pureClearCache: Clear Cache - pureOverallStyle: Overall Style - pureOverallStyleLight: Light - pureOverallStyleLightTip: Set sail freshly and light up the comfortable work interface - pureOverallStyleDark: Dark - pureOverallStyleDarkTip: Moonlight Overture, indulge in the tranquility and elegance of the night - pureOverallStyleSystem: Auto - pureOverallStyleSystemTip: Synchronize time, the interface naturally responds to morning and dusk - pureThemeColor: Theme Color - pureLayoutModel: Layout Model - pureVerticalTip: The menu on the left is familiar and friendly - pureHorizontalTip: Top menu, concise overview - pureMixTip: Mixed menu, flexible - pureStretch: Stretch Page - pureStretchFixed: Fixed - pureStretchFixedTip: Compact pages make it easy to find the information you need - pureStretchCustom: Custom - pureStretchCustomTip: Minimum 1280, maximum 1600 - pureTagsStyle: Tags Style - pureTagsStyleSmart: Smart - pureTagsStyleSmartTip: Smart tags add fun and brilliance - pureTagsStyleCard: Card - pureTagsStyleCardTip: Card tags for efficient browsing - pureTagsStyleChrome: Chrome - pureTagsStyleChromeTip: Chrome style is classic and elegant - pureInterfaceDisplay: Interface Display - pureGreyModel: Grey Model - pureWeakModel: Weak Model - pureHiddenTags: Hidden Tags - pureHiddenFooter: Hidden Footer - pureMultiTagsCache: MultiTags Cache -menus: - pureHome: Home - pureLogin: Login - pureAbnormal: Abnormal Page - pureFourZeroFour: "404" - pureFourZeroOne: "403" - pureFive: "500" - purePermission: Permission Manage - purePermissionPage: Page Permission - purePermissionButton: Button Permission - purePermissionButtonRouter: Route return button permission - purePermissionButtonLogin: Login interface return button permission -status: - pureLoad: Loading... - pureMessage: Message - pureNotify: Notify - pureTodo: Todo - pureNoMessage: No Message - pureNoNotify: No Notify - pureNoTodo: No Todo -login: - pureUsername: Username - purePassword: Password - pureLogin: Login - pureLoginSuccess: Login Success - pureLoginFail: Login Fail - pureUsernameReg: Please enter username - purePassWordReg: Please enter password - purePassWordRuleReg: The password format should be any combination of 8-18 digits \ No newline at end of file diff --git a/locales/zh-CN.yaml b/locales/zh-CN.yaml deleted file mode 100644 index 16d9ec6..0000000 --- a/locales/zh-CN.yaml +++ /dev/null @@ -1,91 +0,0 @@ -buttons: - pureLoginOut: 退出系统 - pureLogin: 登录 - pureOpenSystemSet: 打开系统配置 - pureReload: 重新加载 - pureCloseCurrentTab: 关闭当前标签页 - pureCloseLeftTabs: 关闭左侧标签页 - pureCloseRightTabs: 关闭右侧标签页 - pureCloseOtherTabs: 关闭其他标签页 - pureCloseAllTabs: 关闭全部标签页 - pureContentFullScreen: 内容区全屏 - pureContentExitFullScreen: 内容区退出全屏 - pureClickCollapse: 点击折叠 - pureClickExpand: 点击展开 - pureConfirm: 确认 - pureSwitch: 切换 - pureClose: 关闭 - pureBackTop: 回到顶部 - pureOpenText: 开 - pureCloseText: 关 -search: - pureTotal: 共 - pureHistory: 搜索历史 - pureCollect: 收藏 - pureDragSort: (可拖拽排序) - pureEmpty: 暂无搜索结果 - purePlaceholder: 搜索菜单(支持拼音搜索) -panel: - pureSystemSet: 系统配置 - pureCloseSystemSet: 关闭配置 - pureClearCacheAndToLogin: 清空缓存并返回登录页 - pureClearCache: 清空缓存 - pureOverallStyle: 整体风格 - pureOverallStyleLight: 浅色 - pureOverallStyleLightTip: 清新启航,点亮舒适的工作界面 - pureOverallStyleDark: 深色 - pureOverallStyleDarkTip: 月光序曲,沉醉于夜的静谧雅致 - pureOverallStyleSystem: 自动 - pureOverallStyleSystemTip: 同步时光,界面随晨昏自然呼应 - pureThemeColor: 主题色 - pureLayoutModel: 导航模式 - pureVerticalTip: 左侧菜单,亲切熟悉 - pureHorizontalTip: 顶部菜单,简洁概览 - pureMixTip: 混合菜单,灵活多变 - pureStretch: 页宽 - pureStretchFixed: 固定 - pureStretchFixedTip: 紧凑页面,轻松找到所需信息 - pureStretchCustom: 自定义 - pureStretchCustomTip: 最小1280、最大1600 - pureTagsStyle: 页签风格 - pureTagsStyleSmart: 灵动 - pureTagsStyleSmartTip: 灵动标签,添趣生辉 - pureTagsStyleCard: 卡片 - pureTagsStyleCardTip: 卡片标签,高效浏览 - pureTagsStyleChrome: 谷歌 - pureTagsStyleChromeTip: 谷歌风格,经典美观 - pureInterfaceDisplay: 界面显示 - pureGreyModel: 灰色模式 - pureWeakModel: 色弱模式 - pureHiddenTags: 隐藏标签页 - pureHiddenFooter: 隐藏页脚 - pureMultiTagsCache: 页签持久化 -menus: - pureHome: 首页 - pureLogin: 登录 - pureAbnormal: 异常页面 - pureFourZeroFour: "404" - pureFourZeroOne: "403" - pureFive: "500" - purePermission: 权限管理 - purePermissionPage: 页面权限 - purePermissionButton: 按钮权限 - purePermissionButtonRouter: 路由返回按钮权限 - purePermissionButtonLogin: 登录接口返回按钮权限 -status: - pureLoad: 加载中... - pureMessage: 消息 - pureNotify: 通知 - pureTodo: 待办 - pureNoMessage: 暂无消息 - pureNoNotify: 暂无通知 - pureNoTodo: 暂无待办 -login: - pureUsername: 账号 - purePassword: 密码 - pureLogin: 登录 - pureLoginSuccess: 登录成功 - pureLoginFail: 登录失败 - pureUsernameReg: 请输入账号 - purePassWordReg: 请输入密码 - purePassWordRuleReg: 密码格式应为8-18位数字、字母、符号的任意两种组合 \ No newline at end of file diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts index 49cd0ac..2781ceb 100644 --- a/mock/asyncRoutes.ts +++ b/mock/asyncRoutes.ts @@ -23,34 +23,25 @@ const permissionRouter = { } }, { - path: "/permission/button", + path: "/permission/button/router", + component: "permission/button/index", + name: "PermissionButtonRouter", meta: { - title: "menus.purePermissionButton", - roles: ["admin", "common"] - }, - children: [ - { - path: "/permission/button/router", - component: "permission/button/index", - name: "PermissionButtonRouter", - meta: { - title: "menus.purePermissionButtonRouter", - auths: [ - "permission:btn:add", - "permission:btn:edit", - "permission:btn:delete" - ] - } - }, - { - path: "/permission/button/login", - component: "permission/button/perms", - name: "PermissionButtonLogin", - meta: { - title: "menus.purePermissionButtonLogin" - } - } - ] + title: "menus.purePermissionButtonRouter", + auths: [ + "permission:btn:add", + "permission:btn:edit", + "permission:btn:delete" + ] + } + }, + { + path: "/permission/button/login", + component: "permission/button/perms", + name: "PermissionButtonLogin", + meta: { + title: "menus.purePermissionButtonLogin" + } } ] }; diff --git a/mock/i18n.ts b/mock/i18n.ts new file mode 100644 index 0000000..52525c7 --- /dev/null +++ b/mock/i18n.ts @@ -0,0 +1,16 @@ +import { defineFakeRoute } from "vite-plugin-fake-server/client"; +import en from "./i18n/en"; +import zh from "./i18n/zh"; + +export default defineFakeRoute([ + { + url: "/mock/getI18n", + method: "get", + response: () => { + return { + code: 200, + data: { zh, en, local: "zh" } + }; + } + } +]); diff --git a/mock/i18n/en.ts b/mock/i18n/en.ts new file mode 100644 index 0000000..3ad1cce --- /dev/null +++ b/mock/i18n/en.ts @@ -0,0 +1,20 @@ +import { buttons } from "./en/buttons"; +import { search } from "./en/search"; +import { panel } from "./en/panel"; +import { menus } from "./en/menus"; +import { status } from "./en/status"; +import { login } from "./en/login"; +import { style } from "./en/style"; +import { system } from "./en/system"; + +export default { + name: "en", + buttons, + search, + panel, + menus, + status, + login, + style, + system +}; diff --git a/mock/i18n/en/buttons.ts b/mock/i18n/en/buttons.ts new file mode 100644 index 0000000..c625624 --- /dev/null +++ b/mock/i18n/en/buttons.ts @@ -0,0 +1,25 @@ +export const buttons = { + openSystemSet: "Open System Configs", + pureOpenSystemSet: "pureOpenSystemSet", + + pureAccountSettings: "Account", + pureLoginOut: "LoginOut", + pureLogin: "Login", + pureReload: "Reload", + pureCloseCurrentTab: "Close CurrentTab", + pureCloseLeftTabs: "Close LeftTabs", + pureCloseRightTabs: "Close RightTabs", + pureCloseOtherTabs: "Close OtherTabs", + pureCloseAllTabs: "Close AllTabs", + pureContentFullScreen: "Content FullScreen", + pureContentExitFullScreen: "Content ExitFullScreen", + pureClickCollapse: "Collapse", + pureClickExpand: "Expand", + confirm: "Confirm", + pureSwitch: "Switch", + close: "Close", + pureBackTop: "BackTop", + pureOpenText: "Open", + pureCloseText: "Close", + rest: "Rest" +}; diff --git a/mock/i18n/en/login.ts b/mock/i18n/en/login.ts new file mode 100644 index 0000000..102389e --- /dev/null +++ b/mock/i18n/en/login.ts @@ -0,0 +1,40 @@ +export const login = { + loginSuccess: "Login Success", + loginFail: "Login Fail", + usernameRegex: "please input username", + username: "input username", + password: "input password", + login: "Login", + + email: "email", + repeatPassword: "Sure Password", + emailCode: "input email code", + verifyCode: "verify code", + emailRegex: "please input email", + passwordRegex: "please input password", + passwordSureRegex: "Please entr confirm password", + passwordDifferentRegex: "The two passwords do not match!", + emailCodeRegex: "please input email code", + getEmailCode: "get email code", + rememberMe: "days no need to login", + rememberInfo: + "After checking and logging in, will automatically log in to the system without entering your username and password within the specified number of days.", + forgetPassword: "Forget Password?", + getCodeInfo: "Seconds", + getVerifyCode: "Get VerifyCode", + definite: "definite", + back: "back", + passWordUpdateReg: "Password has been updated", + pureTip: 'After scanning the code, click "Confirm" to complete the login', + pureRegisterSuccess: "Regist Success", + pureTickPrivacy: "Please tick Privacy Policy", + pureReadAccept: "I have read it carefully and accept", + purePrivacyPolicy: "Privacy Policy", + pureVerifyCodeReg: "Please enter verify code", + pureVerifyCodeCorrectReg: "Please enter correct verify code", + pureVerifyCodeSixReg: "Please enter a 6-digit verify code", + purePhoneReg: "Please enter the phone", + purePhoneCorrectReg: "Please enter the correct phone number format", + purePassWordRuleReg: + "The password format should be any combination of 8-18 digits" +}; diff --git a/mock/i18n/en/menus.ts b/mock/i18n/en/menus.ts new file mode 100644 index 0000000..babb103 --- /dev/null +++ b/mock/i18n/en/menus.ts @@ -0,0 +1,120 @@ +export const menus = { + home: "Home", + purePermissionButtonRouter: "PermissionButtonRouter", + purePermissionButtonLogin: "purePermissionButtonLogin", + pureLogin: "Login", + pureEmpty: "Empty Page", + pureTable: "Table", + pureSysManagement: "System Manage", + pureUser: "User Manage", + pureRole: "Role Manage", + pureSystemMenu: "Menu Manage", + pureDept: "Dept Manage", + pureSysMonitor: "System Monitor", + pureOnlineUser: "Online User", + pureLoginLog: "Login Log", + pureOperationLog: "Operation Log", + pureSystemLog: "System Log", + pureEditor: "Editor", + pureAbnormal: "Abnormal Page", + pureFourZeroFour: "404", + pureFourZeroOne: "403", + pureFive: "500", + pureComponents: "Components", + pureDialog: "Dialog", + pureMessage: "Message Tips", + pureVideo: "Video", + pureSegmented: "Segmented", + pureWaterfall: "Waterfall", + pureMap: "Map", + pureDraggable: "Draggable", + pureSplitPane: "Split Pane", + pureText: "Text Ellipsis", + pureElButton: "Button", + pureButton: "Button Animation", + pureCheckButton: "Check Button", + pureCropping: "Picture Cropping", + pureAnimatecss: "AnimateCss Selector", + pureCountTo: "Digital Animation", + pureSelector: "Scope Selector", + pureFlowChart: "Flow Chart", + pureSeamless: "Seamless Scroll", + pureContextmenu: "Context Menu", + pureTypeit: "Typeit", + pureJsonEditor: "JSON Editor", + pureColorPicker: "Color Picker", + pureDatePicker: "Date Picker", + pureDateTimePicker: "DateTimePicker", + pureTimePicker: "TimePicker", + pureTag: "Tag", + pureStatistic: "Statistic", + pureCollapse: "Collapse", + pureGanttastic: "Gantt Chart", + pureProgress: "Progress", + pureUpload: "File Upload", + pureCheckCard: "CheckCard", + pureMenus: "MultiLevel Menu", + pureMenu1: "Menu1", + pureMenu2: "Menu2", + purePermission: "Permission Manage", + purePermissionPage: "Page Permission", + purePermissionButton: "Button Permission", + pureTabs: "Tabs Operate", + pureGuide: "Guide", + pureAble: "Able", + pureMenuTree: "Menu Tree", + pureVideoFrame: "Video Frame Capture", + pureWavesurfer: "Audio Visualization", + pureRipple: "Ripple", + pureMqtt: "Mqtt Client", + pureOptimize: "Debounce、Throttle、Copy、Longpress Directives", + pureVerify: "Captcha", + pureWatermark: "Water Mark", + purePrint: "Print", + pureDownload: "Download", + pureExternalPage: "External Page", + pureExternalDoc: "Docs External", + pureEmbeddedDoc: "Docs Embedded", + pureExternalLink: "Vue-Pure-Admin", + pureUtilsLink: "Pure-Admin-Utils", + pureColorHuntDoc: "ColorHunt", + pureUiGradients: "UiGradients", + pureEpDoc: "Element-Plus", + pureTailwindcssDoc: "Tailwindcss", + pureVueDoc: "Vue3", + pureViteDoc: "Vite", + purePiniaDoc: "Pinia", + pureRouterDoc: "Vue-Router", + pureAbout: "About", + pureResult: "Result Page", + pureSuccess: "Success Page", + pureFail: "Fail Page", + pureIconSelect: "Icon Select", + pureTimeline: "Time Line", + pureLineTree: "LineTree", + pureList: "List Page", + pureCardList: "Card List Page", + pureDebounce: "Debounce & Throttle", + pureFormDesign: "Form Design", + pureBarcode: "Barcode", + pureQrcode: "Qrcode", + pureCascader: "Area Cascader", + pureSwiper: "Swiper Plugin", + pureVirtualList: "Virtual List", + purePdf: "PDF Preview", + pureExcel: "Export Excel", + pureInfiniteScroll: "Table Infinite Scroll", + pureSensitive: "Sensitive Filter", + purePinyin: "PinYin", + pureDanmaku: "Danmaku", + pureSchemaForm: "Form", + pureTableBase: "Base Usage", + pureTableHigh: "High Usage", + pureTableEdit: "Edit Usage", + pureVxeTable: "Virtual Usage", + pureBoard: "Paint Board", + pureMindMap: "Mind Map", + pureMenuOverflow: "Menu Overflow Show Tooltip Text", + pureChildMenuOverflow: "Child Menu Overflow Show Tooltip Text", + systemctlTest: "Systemctl lTest" +}; diff --git a/mock/i18n/en/panel.ts b/mock/i18n/en/panel.ts new file mode 100644 index 0000000..a848250 --- /dev/null +++ b/mock/i18n/en/panel.ts @@ -0,0 +1,38 @@ +export const panel = { + pureSystemSet: "System Configs", + pureCloseSystemSet: "Close System Configs", + pureClearCacheAndToLogin: "Clear cache and return to login page", + pureClearCache: "Clear Cache", + pureOverallStyle: "Overall Style", + pureOverallStyleLight: "Light", + pureOverallStyleLightTip: + "Set sail freshly and light up the comfortable work interface", + pureOverallStyleDark: "Dark", + pureOverallStyleDarkTip: + "Moonlight Overture, indulge in the tranquility and elegance of the night", + pureOverallStyleSystem: "Auto", + pureOverallStyleSystemTip: + "Synchronize time, the interface naturally responds to morning and dusk", + pureThemeColor: "Theme Color", + pureLayoutModel: "Layout Model", + pureVerticalTip: "The menu on the left is familiar and friendly", + pureHorizontalTip: "Top menu, concise overview", + pureMixTip: "Mixed menu, flexible", + pureStretch: "Stretch Page", + pureStretchFixed: "Fixed", + pureStretchFixedTip: + "Compact pages make it easy to find the information you need", + pureStretchCustom: "Custom", + pureStretchCustomTip: "Minimum 1280, maximum 1600", + pureTagsStyle: "Tags Style", + pureTagsStyleSmart: "Smart", + pureTagsStyleSmartTip: "Smart tags add fun and brilliance", + pureTagsStyleCard: "Card", + pureTagsStyleCardTip: "Card tags for efficient browsing", + pureInterfaceDisplay: "Interface Display", + pureGreyModel: "Grey Model", + pureWeakModel: "Weak Model", + pureHiddenTags: "Hidden Tags", + pureHiddenFooter: "Hidden Footer", + pureMultiTagsCache: "MultiTags Cache" +}; diff --git a/mock/i18n/en/search.ts b/mock/i18n/en/search.ts new file mode 100644 index 0000000..45fea13 --- /dev/null +++ b/mock/i18n/en/search.ts @@ -0,0 +1,8 @@ +export const search = { + pureTotal: "Total", + pureHistory: "History", + pureCollect: "Collect", + pureDragSort: "(Drag Sort)", + pureEmpty: "Empty", + purePlaceholder: "Search Menu" +}; diff --git a/mock/i18n/en/status.ts b/mock/i18n/en/status.ts new file mode 100644 index 0000000..1f823c1 --- /dev/null +++ b/mock/i18n/en/status.ts @@ -0,0 +1,11 @@ +export const status = { + pureLoad: "Loading...", + pureMessage: "Message", + pureNotify: "Notify", + pureTodo: "Todo", + pureNoMessage: "No Message", + pureNoNotify: "No Notify", + pureNoTodo: "No Todo", + enable: "enable", + disable: "disable" +}; diff --git a/mock/i18n/en/style.ts b/mock/i18n/en/style.ts new file mode 100644 index 0000000..4e301bf --- /dev/null +++ b/mock/i18n/en/style.ts @@ -0,0 +1,5 @@ +export const style = { + larger: "Larger", + default: "Default", + small: "Small" +}; diff --git a/mock/i18n/en/system.ts b/mock/i18n/en/system.ts new file mode 100644 index 0000000..d54d97a --- /dev/null +++ b/mock/i18n/en/system.ts @@ -0,0 +1,8 @@ +export const system = { + carousel: "carousel setting", + config: "system config", + favicon: "system favicon", + feedback: "system feedback", + emailUsers: "email users", + log: "system log" +}; diff --git a/mock/i18n/zh.ts b/mock/i18n/zh.ts new file mode 100644 index 0000000..4c10f82 --- /dev/null +++ b/mock/i18n/zh.ts @@ -0,0 +1,20 @@ +import { buttons } from "./zh/buttons"; +import { search } from "./zh/search"; +import { panel } from "./zh/panel"; +import { menus } from "./zh/menus"; +import { status } from "./zh/status"; +import { login } from "./zh/login"; +import { style } from "./zh/style"; +import { system } from "./zh/system"; + +export default { + name: "zh", + buttons, + search, + panel, + menus, + status, + login, + style, + system +}; diff --git a/mock/i18n/zh/buttons.ts b/mock/i18n/zh/buttons.ts new file mode 100644 index 0000000..356989c --- /dev/null +++ b/mock/i18n/zh/buttons.ts @@ -0,0 +1,26 @@ +export const buttons = { + openSystemSet: "打开系统配置", + pureOpenSystemSet: "权限设定", + + pureAccountSettings: "账户设置", + pureLoginOut: "退出系统", + pureLogin: "登录", + pureReload: "重新加载", + pureCloseCurrentTab: "关闭当前标签页", + pureCloseLeftTabs: "关闭左侧标签页", + pureCloseRightTabs: "关闭右侧标签页", + pureCloseOtherTabs: "关闭其他标签页", + pureCloseAllTabs: "关闭全部标签页", + pureContentFullScreen: "内容区全屏", + pureContentExitFullScreen: "内容区退出全屏", + pureClickCollapse: "点击折叠", + pureClickExpand: "点击展开", + confirm: "确认", + pureSwitch: "切换", + close: "关闭", + pureBackTop: "回到顶部", + pureOpenText: "开", + pureCloseText: "关", + rest: "重置", + search: "搜索" +}; diff --git a/mock/i18n/zh/login.ts b/mock/i18n/zh/login.ts new file mode 100644 index 0000000..3c2e8fa --- /dev/null +++ b/mock/i18n/zh/login.ts @@ -0,0 +1,38 @@ +export const login = { + loginSuccess: "登录成功", + loginFail: "登录失败", + usernameRegex: "请输入账号", + username: "输入用户名", + password: "输入密码", + login: "登录", + + email: "输入邮箱", + repeatPassword: "确认密码", + emailCode: "邮箱验证码", + verifyCode: "图形验证码", + emailRegex: "输入邮箱", + passwordRegex: "请输入密码", + passwordSureRegex: "请输入确认密码", + repeatPasswordRegex: "请输入确认密码", + passwordDifferentRegex: "两次密码不一致!", + emailCodeRegex: "请输入邮箱验证码", + verifyCodeRegex: "输入验证码", + getEmailCode: "获取邮箱验证码", + rememberMe: "天内免登录", + rememberInfo: "勾选并登录后,规定天数内无需输入用户名和密码会自动登入系统", + forgetPassword: "忘记密码?", + getVerifyCode: "获取验证码", + definite: "确定", + back: "返回", + getCodeInfo: "秒后重新获取", + passWordUpdateReg: "修改密码成功", + pureRegisterSuccess: "注册成功", + pureTickPrivacy: "请勾选隐私政策", + pureReadAccept: "我已仔细阅读并接受", + purePrivacyPolicy: "《隐私政策》", + pureVerifyCodeCorrectReg: "请输入正确的验证码", + pureVerifyCodeSixReg: "请输入6位数字验证码", + purePhoneReg: "请输入手机号码", + purePhoneCorrectReg: "请输入正确的手机号码格式", + purePassWordRuleReg: "密码格式应为8-18位数字、字母、符号的任意两种组合" +}; diff --git a/mock/i18n/zh/menus.ts b/mock/i18n/zh/menus.ts new file mode 100644 index 0000000..8994d4e --- /dev/null +++ b/mock/i18n/zh/menus.ts @@ -0,0 +1,120 @@ +export const menus = { + home: "首页", + purePermissionButtonRouter: "权限1", + purePermissionButtonLogin: "权限2", + pureLogin: "登录", + pureEmpty: "无Layout页", + pureTable: "表格", + pureSysManagement: "系统管理", + pureUser: "用户管理", + pureRole: "角色管理", + pureSystemMenu: "菜单管理", + pureDept: "部门管理", + pureSysMonitor: "系统监控", + pureOnlineUser: "在线用户", + pureLoginLog: "登录日志", + pureOperationLog: "操作日志", + pureSystemLog: "系统日志", + pureEditor: "编辑器", + pureAbnormal: "异常页面", + pureFourZeroFour: "404", + pureFourZeroOne: "403", + pureFive: "500", + pureComponents: "组件", + pureDialog: "函数式弹框", + pureMessage: "消息提示", + pureVideo: "视频", + pureSegmented: "分段控制器", + pureWaterfall: "瀑布流无限滚动", + pureMap: "地图", + pureDraggable: "拖拽", + pureSplitPane: "切割面板", + pureText: "文本省略", + pureElButton: "按钮", + pureCheckButton: "可选按钮", + pureButton: "按钮动效", + pureCropping: "图片裁剪", + pureAnimatecss: "animate.css选择器", + pureCountTo: "数字动画", + pureSelector: "范围选择器", + pureFlowChart: "流程图", + pureSeamless: "无缝滚动", + pureContextmenu: "右键菜单", + pureTypeit: "打字机", + pureJsonEditor: "JSON编辑器", + pureColorPicker: "颜色选择器", + pureDatePicker: "日期选择器", + pureDateTimePicker: "日期时间选择器", + pureTimePicker: "时间选择器", + pureTag: "标签", + pureStatistic: "统计组件", + pureCollapse: "折叠面板", + pureGanttastic: "甘特图", + pureProgress: "进度条", + pureUpload: "文件上传", + pureCheckCard: "多选卡片", + pureMenus: "多级菜单", + pureMenu1: "菜单1", + pureMenu2: "菜单2", + purePermission: "权限管理", + purePermissionPage: "页面权限", + purePermissionButton: "按钮权限", + pureTabs: "标签页操作", + pureGuide: "引导页", + pureAble: "功能", + pureMenuTree: "菜单树结构", + pureVideoFrame: "视频帧截取-wasm版", + pureWavesurfer: "音频可视化", + pureRipple: "波纹(Ripple)", + pureMqtt: "MQTT客户端(mqtt)", + pureOptimize: "防抖、截流、复制、长按指令", + pureVerify: "图形验证码", + pureWatermark: "水印", + purePrint: "打印", + pureDownload: "下载", + pureExternalPage: "外部页面", + pureExternalDoc: "文档外链", + pureEmbeddedDoc: "文档内嵌", + pureExternalLink: "vue-pure-admin", + pureUtilsLink: "pure-admin-utils", + pureColorHuntDoc: "调色板", + pureUiGradients: "渐变色", + pureEpDoc: "element-plus", + pureTailwindcssDoc: "tailwindcss", + pureVueDoc: "vue3", + pureViteDoc: "vite", + purePiniaDoc: "pinia", + pureRouterDoc: "vue-router", + pureAbout: "关于", + pureResult: "结果页面", + pureSuccess: "成功页面", + pureFail: "失败页面", + pureIconSelect: "图标选择器", + pureTimeline: "时间线", + pureLineTree: "树形连接线", + pureList: "列表页面", + pureCardList: "卡片列表页", + pureDebounce: "防抖节流", + pureFormDesign: "表单设计器", + pureBarcode: "条形码", + pureQrcode: "二维码", + pureCascader: "区域级联选择器", + pureSwiper: "Swiper插件", + pureVirtualList: "虚拟列表", + purePdf: "PDF预览", + pureExcel: "导出Excel", + pureInfiniteScroll: "表格无限滚动", + pureSensitive: "敏感词过滤", + purePinyin: "汉语拼音", + pureDanmaku: "弹幕", + pureSchemaForm: "表单", + pureTableBase: "基础用法", + pureTableHigh: "高级用法", + pureTableEdit: "可编辑用法", + pureVxeTable: "虚拟滚动", + pureBoard: "艺术画板", + pureMindMap: "思维导图", + pureMenuOverflow: "目录超出显示 Tooltip 文字提示", + pureChildMenuOverflow: "菜单超出显示 Tooltip 文字提示", + systemctlTest: "系统测试" +}; diff --git a/mock/i18n/zh/panel.ts b/mock/i18n/zh/panel.ts new file mode 100644 index 0000000..436ce17 --- /dev/null +++ b/mock/i18n/zh/panel.ts @@ -0,0 +1,34 @@ +export const panel = { + pureSystemSet: "系统配置", + pureCloseSystemSet: "关闭配置", + pureClearCacheAndToLogin: "清空缓存并返回登录页", + pureClearCache: "清空缓存", + pureOverallStyle: "整体风格", + pureOverallStyleLight: "浅色", + pureOverallStyleLightTip: "清新启航,点亮舒适的工作界面", + pureOverallStyleDark: "深色", + pureOverallStyleDarkTip: "月光序曲,沉醉于夜的静谧雅致", + pureOverallStyleSystem: "自动", + pureOverallStyleSystemTip: "同步时光,界面随晨昏自然呼应", + pureThemeColor: "主题色", + pureLayoutModel: "导航模式", + pureVerticalTip: "左侧菜单,亲切熟悉", + pureHorizontalTip: "顶部菜单,简洁概览", + pureMixTip: "混合菜单,灵活多变", + pureStretch: "页宽", + pureStretchFixed: "固定", + pureStretchFixedTip: "紧凑页面,轻松找到所需信息", + pureStretchCustom: "自定义", + pureStretchCustomTip: "最小1280、最大1600", + pureTagsStyle: "页签风格", + pureTagsStyleSmart: "灵动", + pureTagsStyleSmartTip: "灵动标签,添趣生辉", + pureTagsStyleCard: "卡片", + pureTagsStyleCardTip: "卡片标签,高效浏览", + pureInterfaceDisplay: "界面显示", + pureGreyModel: "灰色模式", + pureWeakModel: "色弱模式", + pureHiddenTags: "隐藏标签页", + pureHiddenFooter: "隐藏页脚", + pureMultiTagsCache: "页签持久化" +}; diff --git a/mock/i18n/zh/search.ts b/mock/i18n/zh/search.ts new file mode 100644 index 0000000..4de0125 --- /dev/null +++ b/mock/i18n/zh/search.ts @@ -0,0 +1,10 @@ +export const search = { + search: { + pureTotal: "共", + pureHistory: "搜索历史", + pureCollect: "收藏", + pureDragSort: "(可拖拽排序)", + pureEmpty: "暂无搜索结果", + purePlaceholder: "搜索菜单(支持拼音搜索)" + } +}; diff --git a/mock/i18n/zh/status.ts b/mock/i18n/zh/status.ts new file mode 100644 index 0000000..7258af5 --- /dev/null +++ b/mock/i18n/zh/status.ts @@ -0,0 +1,11 @@ +export const status = { + pureLoad: "加载中...", + pureMessage: "消息", + pureNotify: "通知", + pureTodo: "待办", + pureNoMessage: "暂无消息", + pureNoNotify: "暂无通知", + pureNoTodo: "暂无待办", + enable: "启用", + disable: "不启用" +}; diff --git a/mock/i18n/zh/style.ts b/mock/i18n/zh/style.ts new file mode 100644 index 0000000..4536e03 --- /dev/null +++ b/mock/i18n/zh/style.ts @@ -0,0 +1,5 @@ +export const style = { + larger: "宽松", + default: "默认", + small: "紧凑" +}; diff --git a/mock/i18n/zh/system.ts b/mock/i18n/zh/system.ts new file mode 100644 index 0000000..2c7da97 --- /dev/null +++ b/mock/i18n/zh/system.ts @@ -0,0 +1,8 @@ +export const system = { + config: "系统设置", + carousel: "轮播图设置", + favicon: "图标设置", + feedback: "用户反馈", + emailUsers: "邮件用户", + log: "系统日志" +}; diff --git a/src/App.vue b/src/App.vue index b2a5248..fbadac3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,23 +5,56 @@ - diff --git a/src/api/v1/i18n/i18n.ts b/src/api/v1/i18n/i18n.ts new file mode 100644 index 0000000..add66be --- /dev/null +++ b/src/api/v1/i18n/i18n.ts @@ -0,0 +1,9 @@ +import { http } from "@/api/service/mockRequest"; +import type { Result } from "../../../../types/store/baseStoreState"; + +/** + * * 获取多语言内容 + */ +export const fetchGetI18n = () => { + return http.request>("get", "getI18n"); +}; diff --git a/src/layout/components/lay-navbar/index.vue b/src/layout/components/lay-navbar/index.vue index e9030ed..760a010 100644 --- a/src/layout/components/lay-navbar/index.vue +++ b/src/layout/components/lay-navbar/index.vue @@ -1,4 +1,4 @@ -