refactor: ♻️ 修改i18相关内容

This commit is contained in:
bunny 2024-05-27 16:59:21 +08:00
parent f097ab32b6
commit 4b2614e026
16 changed files with 1444 additions and 1337 deletions

2
.gitattributes vendored
View File

@ -1,2 +0,0 @@
public/wasm/capture.worker.js linguist-language=Vue
public/wasm/index.js linguist-language=Vue

View File

@ -1,5 +0,0 @@
ports:
- port: 3344
onOpen: open-preview
tasks:
- init: pnpm install && pnpm serve

View File

@ -1,10 +1,39 @@
// @ts-check
// @see: https://www.prettier.cn
/** @type {import("prettier").Config} */
export default {
// 超过最大值换行
printWidth: 200,
// 缩进字节数
tabWidth: 1,
// 使用制表符而不是空格缩进行
useTabs: true,
// 结尾不用分号(true有false没有)
semi: true,
// 使用单引号(true单引号false双引号)
singleQuote: true,
// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
quoteProps: "as-needed",
// 在对象,数组括号与文字之间加空格 "{ foo: bar }"
bracketSpacing: true,
singleQuote: false,
// 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>"默认none
trailingComma: "all",
// 在JSX中使用单引号而不是双引号
jsxSingleQuote: true,
// (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid省略括号 ,always不省略括号
arrowParens: "avoid",
trailingComma: "none"
// 如果文件顶部已经有一个 doclock这个选项将新建一行注释并打上@format标记。
insertPragma: false,
// 指定要使用的解析器,不需要写文件开头的 @prettier
requirePragma: false,
// 默认值。因为使用了一些折行敏感型的渲染器如GitHub comment而按照markdown文本样式进行折行
proseWrap: "preserve",
// 在html中空格是否是敏感的 "css" - 遵守CSS显示属性的默认值 "strict" - 空格被认为是敏感的 "ignore" - 空格被认为是不敏感的
htmlWhitespaceSensitivity: "css",
// 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
endOfLine: "auto",
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
rangeStart: 0,
rangeEnd: Infinity,
vueIndentScriptAndStyle: false // Vue文件脚本和样式标签缩进
};

View File

@ -1,240 +0,0 @@
buttons:
pureAccountSettings: Account
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
rest: Rest
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
pureInterfaceDisplay: Interface Display
pureGreyModel: Grey Model
pureWeakModel: Weak Model
pureHiddenTags: Hidden Tags
pureHiddenFooter: Hidden Footer
pureMultiTagsCache: MultiTags Cache
menus:
pureHome: Home
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
pureMenu1-1: Menu1-1
pureMenu1-2: Menu1-2
pureMenu1-2-1: Menu1-2-1
pureMenu1-2-2: Menu1-2-2
pureMenu1-3: Menu1-3
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
status:
pureLoad: Loading...
pureMessage: Message
pureNotify: Notify
pureTodo: Todo
pureNoMessage: No Message
pureNoNotify: No Notify
pureNoTodo: No Todo
login:
pureUsername: Username
purePassword: Password
pureVerifyCode: VerifyCode
pureRemember: days no need to login
pureRememberInfo: After checking and logging in, will automatically log in to the system without entering your username and password within the specified number of days.
pureSure: Sure Password
pureForget: Forget Password?
pureLogin: Login
pureThirdLogin: Third Login
purePhoneLogin: Phone Login
pureQRCodeLogin: QRCode Login
pureRegister: Register
pureWeChatLogin: WeChat Login
pureAlipayLogin: Alipay Login
pureQQLogin: QQ Login
pureWeiBoLogin: Weibo Login
purePhone: Phone
pureSmsVerifyCode: SMS VerifyCode
pureBack: Back
pureTest: Mock Test
pureTip: After scanning the code, click "Confirm" to complete the login
pureDefinite: Definite
pureLoginSuccess: Login Success
pureLoginFail: Login Fail
pureRegisterSuccess: Regist Success
pureTickPrivacy: Please tick Privacy Policy
pureReadAccept: I have read it carefully and accept
purePrivacyPolicy: Privacy Policy
pureGetVerifyCode: Get VerifyCode
pureInfo: Seconds
pureUsernameReg: Please enter username
purePassWordReg: Please enter password
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
purePassWordSureReg: Please enter confirm password
purePassWordDifferentReg: The two passwords do not match!
purePassWordUpdateReg: Password has been updated
table:
tableNumber: Table Number
style:
larger: Larger
default: Default
small: Small

View File

@ -1,240 +0,0 @@
buttons:
pureAccountSettings: 账户设置
pureLoginOut: 退出系统
pureLogin: 登录
pureOpenSystemSet: 打开系统配置
pureReload: 重新加载
pureCloseCurrentTab: 关闭当前标签页
pureCloseLeftTabs: 关闭左侧标签页
pureCloseRightTabs: 关闭右侧标签页
pureCloseOtherTabs: 关闭其他标签页
pureCloseAllTabs: 关闭全部标签页
pureContentFullScreen: 内容区全屏
pureContentExitFullScreen: 内容区退出全屏
pureClickCollapse: 点击折叠
pureClickExpand: 点击展开
pureConfirm: 确认
pureSwitch: 切换
pureClose: 关闭
pureBackTop: 回到顶部
pureOpenText:
pureCloseText:
rest: 重置
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: 卡片标签,高效浏览
pureInterfaceDisplay: 界面显示
pureGreyModel: 灰色模式
pureWeakModel: 色弱模式
pureHiddenTags: 隐藏标签页
pureHiddenFooter: 隐藏页脚
pureMultiTagsCache: 页签持久化
menus:
pureHome: 首页
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
pureMenu1-1: 菜单1-1
pureMenu1-2: 菜单1-2
pureMenu1-2-1: 菜单1-2-1
pureMenu1-2-2: 菜单1-2-2
pureMenu1-3: 菜单1-3
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: 系统测试
status:
pureLoad: 加载中...
pureMessage: 消息
pureNotify: 通知
pureTodo: 待办
pureNoMessage: 暂无消息
pureNoNotify: 暂无通知
pureNoTodo: 暂无待办
login:
pureUsername: 账号
purePassword: 密码
pureVerifyCode: 验证码
pureRemember: 天内免登录
pureRememberInfo: 勾选并登录后,规定天数内无需输入用户名和密码会自动登入系统
pureSure: 确认密码
pureForget: 忘记密码?
pureLogin: 登录
pureThirdLogin: 第三方登录
purePhoneLogin: 手机登录
pureQRCodeLogin: 二维码登录
pureRegister: 注册
pureWeChatLogin: 微信登录
pureAlipayLogin: 支付宝登录
pureQQLogin: QQ登录
pureWeiBoLogin: 微博登录
purePhone: 手机号码
pureSmsVerifyCode: 短信验证码
pureBack: 返回
pureTest: 模拟测试
pureTip: 扫码后点击"确认",即可完成登录
pureDefinite: 确定
pureLoginSuccess: 登录成功
pureLoginFail: 登录失败
pureRegisterSuccess: 注册成功
pureTickPrivacy: 请勾选隐私政策
pureReadAccept: 我已仔细阅读并接受
purePrivacyPolicy: 《隐私政策》
pureGetVerifyCode: 获取验证码
pureInfo: 秒后重新获取
pureUsernameReg: 请输入账号
purePassWordReg: 请输入密码
pureVerifyCodeReg: 请输入验证码
pureVerifyCodeCorrectReg: 请输入正确的验证码
pureVerifyCodeSixReg: 请输入6位数字验证码
purePhoneReg: 请输入手机号码
purePhoneCorrectReg: 请输入正确的手机号码格式
purePassWordRuleReg: 密码格式应为8-18位数字、字母、符号的任意两种组合
purePassWordSureReg: 请输入确认密码
purePassWordDifferentReg: 两次密码不一致!
purePassWordUpdateReg: 修改密码成功
table:
tableNumber: 序号
style:
larger: 宽松
default: 默认
small: 紧凑

16
mock/i18n.ts Normal file
View File

@ -0,0 +1,16 @@
import { defineFakeRoute } from "vite-plugin-fake-server/client";
import en from "./modules/en";
import zh_cn from "./modules/zh_cn";
export default defineFakeRoute([
{
url: "/mock/getI18n",
method: "get",
response: () => {
return {
success: true,
data: { zh_cn, en, local: "zh_cn" }
};
}
}
]);

250
mock/modules/en.ts Normal file
View File

@ -0,0 +1,250 @@
export default {
buttons: {
pureAccountSettings: "Account",
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",
rest: "Rest"
},
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",
pureInterfaceDisplay: "Interface Display",
pureGreyModel: "Grey Model",
pureWeakModel: "Weak Model",
pureHiddenTags: "Hidden Tags",
pureHiddenFooter: "Hidden Footer",
pureMultiTagsCache: "MultiTags Cache"
},
menus: {
pureHome: "Home",
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",
"pureMenu1-1": "Menu1-1",
"pureMenu1-2": "Menu1-2",
"pureMenu1-2-1": "Menu1-2-1",
"pureMenu1-2-2": "Menu1-2-2",
"pureMenu1-3": "Menu1-3",
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"
},
status: {
pureLoad: "Loading...",
pureMessage: "Message",
pureNotify: "Notify",
pureTodo: "Todo",
pureNoMessage: "No Message",
pureNoNotify: "No Notify",
pureNoTodo: "No Todo"
},
login: {
pureUsername: "Username",
purePassword: "Password",
pureVerifyCode: "VerifyCode",
pureRemember: "days no need to login",
pureRememberInfo: "After checking and logging in, will automatically log in to the system without entering your username and password within the specified number of days.",
pureSure: "Sure Password",
pureForget: "Forget Password?",
pureLogin: "Login",
pureThirdLogin: "Third Login",
purePhoneLogin: "Phone Login",
pureQRCodeLogin: "QRCode Login",
pureRegister: "Register",
pureWeChatLogin: "WeChat Login",
pureAlipayLogin: "Alipay Login",
pureQQLogin: "QQ Login",
pureWeiBoLogin: "Weibo Login",
purePhone: "Phone",
pureSmsVerifyCode: "SMS VerifyCode",
pureBack: "Back",
pureTest: "Mock Test",
pureTip: 'After scanning the code, click "Confirm" to complete the login',
pureDefinite: "Definite",
pureLoginSuccess: "Login Success",
pureLoginFail: "Login Fail",
pureRegisterSuccess: "Regist Success",
pureTickPrivacy: "Please tick Privacy Policy",
pureReadAccept: "I have read it carefully and accept",
purePrivacyPolicy: "Privacy Policy",
pureGetVerifyCode: "Get VerifyCode",
pureInfo: "Seconds",
pureUsernameReg: "Please enter username",
purePassWordReg: "Please enter password",
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",
purePassWordSureReg: "Please enter confirm password",
purePassWordDifferentReg: "The two passwords do not match!",
purePassWordUpdateReg: "Password has been updated"
},
table: {
tableNumber: "Table Number"
},
style: {
larger: "Larger",
default: "Default",
small: "Small"
}
};

251
mock/modules/zh_cn.ts Normal file
View File

@ -0,0 +1,251 @@
export default {
buttons: {
pureAccountSettings: "账户设置",
pureLoginOut: "退出系统",
pureLogin: "登录",
pureOpenSystemSet: "打开系统配置",
pureReload: "重新加载",
pureCloseCurrentTab: "关闭当前标签页",
pureCloseLeftTabs: "关闭左侧标签页",
pureCloseRightTabs: "关闭右侧标签页",
pureCloseOtherTabs: "关闭其他标签页",
pureCloseAllTabs: "关闭全部标签页",
pureContentFullScreen: "内容区全屏",
pureContentExitFullScreen: "内容区退出全屏",
pureClickCollapse: "点击折叠",
pureClickExpand: "点击展开",
pureConfirm: "确认",
pureSwitch: "切换",
pureClose: "关闭",
pureBackTop: "回到顶部",
pureOpenText: "开",
pureCloseText: "关",
rest: "重置"
},
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: "卡片标签,高效浏览",
pureInterfaceDisplay: "界面显示",
pureGreyModel: "灰色模式",
pureWeakModel: "色弱模式",
pureHiddenTags: "隐藏标签页",
pureHiddenFooter: "隐藏页脚",
pureMultiTagsCache: "页签持久化"
},
menus: {
pureHome: "首页",
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",
"pureMenu1-1": "菜单1-1",
"pureMenu1-2": "菜单1-2",
"pureMenu1-2-1": "菜单1-2-1",
"pureMenu1-2-2": "菜单1-2-2",
"pureMenu1-3": "菜单1-3",
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: "系统测试"
},
status: {
pureLoad: "加载中...",
pureMessage: "消息",
pureNotify: "通知",
pureTodo: "待办",
pureNoMessage: "暂无消息",
pureNoNotify: "暂无通知",
pureNoTodo: "暂无待办"
},
login: {
pureUsername: "账号",
purePassword: "密码",
pureVerifyCode: "验证码",
pureRemember: "天内免登录",
pureRememberInfo: "勾选并登录后,规定天数内无需输入用户名和密码会自动登入系统",
pureSure: "确认密码",
pureForget: "忘记密码?",
pureLogin: "登录",
pureThirdLogin: "第三方登录",
purePhoneLogin: "手机登录",
pureQRCodeLogin: "二维码登录",
pureRegister: "注册",
pureWeChatLogin: "微信登录",
pureAlipayLogin: "支付宝登录",
pureQQLogin: "QQ登录",
pureWeiBoLogin: "微博登录",
purePhone: "手机号码",
pureSmsVerifyCode: "短信验证码",
pureBack: "返回",
pureTest: "模拟测试",
pureTip: '扫码后点击"确认",即可完成登录',
pureDefinite: "确定",
pureLoginSuccess: "登录成功",
pureLoginFail: "登录失败",
pureRegisterSuccess: "注册成功",
pureTickPrivacy: "请勾选隐私政策",
pureReadAccept: "我已仔细阅读并接受",
purePrivacyPolicy: "《隐私政策》",
pureGetVerifyCode: "获取验证码",
pureInfo: "秒后重新获取",
pureUsernameReg: "请输入账号",
purePassWordReg: "请输入密码",
pureVerifyCodeReg: "请输入验证码",
pureVerifyCodeCorrectReg: "请输入正确的验证码",
pureVerifyCodeSixReg: "请输入6位数字验证码",
purePhoneReg: "请输入手机号码",
purePhoneCorrectReg: "请输入正确的手机号码格式",
purePassWordRuleReg: "密码格式应为8-18位数字、字母、符号的任意两种组合",
purePassWordSureReg: "请输入确认密码",
purePassWordDifferentReg: "两次密码不一致!",
purePassWordUpdateReg: "修改密码成功"
},
table: {
tableNumber: "序号"
},
style: {
larger: "宽松",
default: "默认",
small: "紧凑"
}
};

View File

@ -82,6 +82,7 @@
"nprogress": "^0.2.0",
"path": "^0.12.7",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"pinyin-pro": "^3.20.4",
"plus-pro-components": "^0.1.1",
"qrcode": "^1.5.3",

File diff suppressed because it is too large Load Diff

View File

@ -5,51 +5,63 @@
</el-config-provider>
</template>
<script lang="ts">
import { defineComponent } from "vue";
<script lang="ts" setup>
import { onBeforeMount, onMounted } from "vue";
import { checkVersion } from "version-rocket";
import { ElConfigProvider } from "element-plus";
import { ReDialog } from "@/components/ReDialog";
import en from "element-plus/es/locale/lang/en";
import zhCn from "element-plus/es/locale/lang/zh-cn";
import plusEn from "plus-pro-components/es/locale/lang/en";
import plusZhCn from "plus-pro-components/es/locale/lang/zh-cn";
import { userI18nStore } from "@/store/i18n";
import { useI18n } from "vue-i18n";
export default defineComponent({
name: "app",
components: {
[ElConfigProvider.name]: ElConfigProvider,
ReDialog
},
computed: {
currentLocale() {
return this.$storage.locale?.locale === "zh"
? { ...zhCn, ...plusZhCn }
: { ...en, ...plusEn };
}
},
beforeCreate() {
const { version, name: title } = __APP_INFO__.pkg;
const { VITE_PUBLIC_PATH, MODE } = import.meta.env;
// https://github.com/guMcrey/version-rocket/blob/main/README.zh-CN.md#api
if (MODE === "production") {
// 线
checkVersion(
// config
{
// 5
pollingTime: 300000,
localPackageVersion: version,
originVersionFileUrl: `${location.origin}${VITE_PUBLIC_PATH}version.json`
},
// options
{
title,
description: "检测到新版本",
buttonText: "立即更新"
}
);
}
const i18nStore = userI18nStore();
const i18n = useI18n();
/**
* * 设置多语言内容
*/
const setI18n = async () => {
await i18nStore.fetchI18n();
const languageData = JSON.parse(localStorage.getItem("i18nStore") as any);
const local = languageData.i18n.local;
//
i18n.locale.value = local;
i18n.mergeLocaleMessage(local, languageData.i18n[local]);
};
const currentLocale = () => {
const languageData = JSON.parse(localStorage.getItem("i18nStore") as any);
const local = languageData.i18n.local;
return languageData.i18n[local];
};
onMounted(async () => {
await setI18n();
console.log(currentLocale());
});
onBeforeMount(() => {
const { version, name: title } = __APP_INFO__.pkg;
const { VITE_PUBLIC_PATH, MODE } = import.meta.env;
// https://github.com/guMcrey/version-rocket/blob/main/README.zh-CN.md#api
if (MODE === "production") {
// 线
checkVersion(
// config
{
// 5
pollingTime: 300000,
localPackageVersion: version,
originVersionFileUrl: `${location.origin}${VITE_PUBLIC_PATH}version.json`
},
// options
{
title,
description: "检测到新版本",
buttonText: "立即更新"
}
);
}
});
</script>

5
src/api/mock/i18n.ts Normal file
View File

@ -0,0 +1,5 @@
import { http } from "@/utils/http";
export const fetchGetI18n = () => {
return http.get("/mock/getI18n");
};

16
src/i18n/index.ts Normal file
View File

@ -0,0 +1,16 @@
import { createI18n } from "vue-i18n";
// ? 从本地存储中获取数据
const languageData = localStorage.getItem("i18nStore");
// 配置多语言
const i18n = createI18n({
// 如果要支持 compositionAPI此项必须设置为 false
legacy: false,
// ? 全局注册$t方法
globalInjection: true,
// 本地内容存在时,首次加载如果本地存储没有多语言需要再刷新
messages: languageData ? JSON.parse(languageData).i18n : {}
});
export default i18n;

View File

@ -1,28 +1,28 @@
import App from "./App.vue";
import router from "./router";
import { setupStore } from "@/store";
import { useI18n } from "@/plugins/i18n";
import { getPlatformConfig } from "./config";
import { MotionPlugin } from "@vueuse/motion";
import { useEcharts } from "@/plugins/echarts";
import { createApp, type Directive } from "vue";
import { useVxeTable } from "@/plugins/vxeTable";
import { useElementPlus } from "@/plugins/elementPlus";
import { useI18n } from "@/plugins/i18n";
import { useVxeTable } from "@/plugins/vxeTable";
import { setupStore } from "@/store";
import { injectResponsiveStorage } from "@/utils/responsive";
import { MotionPlugin } from "@vueuse/motion";
import { createApp, type Directive } from "vue";
import App from "./App.vue";
import { getPlatformConfig } from "./config";
import router from "./router";
// 全局注册@iconify/vue图标库
import { FontIcon, IconifyIconOffline, IconifyIconOnline } from "./components/ReIcon";
import Table from "@pureadmin/table";
import PureDescriptions from "@pureadmin/descriptions";
import Table from "@pureadmin/table";
import { FontIcon, IconifyIconOffline, IconifyIconOnline } from "./components/ReIcon";
// 引入重置样式
import "./style/reset.scss";
// 导入公共样式
import "./style/index.scss";
// 一定要在main.ts中导入tailwind.css防止vite每次hmr都会请求src/style/index.scss整体css文件导致热更新慢的问题
import "./style/tailwind.css";
import "element-plus/dist/index.css";
import "./style/tailwind.css";
// 导入字体图标
import "./assets/iconfont/iconfont.js";
import "./assets/iconfont/iconfont.css";
import "./assets/iconfont/iconfont.js";
// 自定义指令
import * as directives from "@/directives";
// 全局注册按钮级别权限组件

20
src/store/i18n.ts Normal file
View File

@ -0,0 +1,20 @@
import { fetchGetI18n } from "@/api/mock/i18n";
import { defineStore } from "pinia";
export const userI18nStore = defineStore("i18nStore", {
persist: true,
state() {
return {
// ? 多语言内容
i18n: {} as any
};
},
getters: {},
actions: {
async fetchI18n() {
// this.i18n = await fetchGetI18n().data;
const result: any = await fetchGetI18n();
this.i18n = result.data;
}
}
});

View File

@ -1,8 +1,11 @@
import type { App } from "vue";
import { createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import type { App } from "vue";
const store = createPinia();
export function setupStore(app: App<Element>) {
store.use(piniaPluginPersistedstate);
app.use(store);
}