refactor: i18n

* refactor: i18n
This commit is contained in:
啝裳 2022-03-11 21:28:43 +08:00 committed by GitHub
parent 8b3f642cf2
commit 494ce8f41b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 608 additions and 479 deletions

View File

@ -1,6 +1,5 @@
{
"recommendations": [
"johnsoncodehk.vscode-typescript-vue-plugin",
"voorjaar.windicss-intellisense",
"vscode-icons-team.vscode-icons",
"davidanson.vscode-markdownlint",

12
.vscode/settings.json vendored
View File

@ -1,13 +1,9 @@
{
"editor.formatOnType": true,
"editor.formatOnSave": true,
"javascript.updateImportsOnFileMove.enabled": "always",
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"editor.tabSize": 2,
"editor.formatOnPaste": true,
"files.autoSave": "afterDelay",
@ -30,14 +26,12 @@
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"typescript.tsdk": "node_modules/typescript/lib",
"i18n-ally.localesPaths": ["src/plugins/i18n"],
"i18n-ally.localesPaths": "locales",
"i18n-ally.keystyle": "nested",
"i18n-ally.sortKeys": true,
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
"i18n-ally.enabledParsers": ["ts"],
"i18n-ally.enabledParsers": ["yaml", "js"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": ["vue", "react"]
"i18n-ally.enabledFrameworks": ["vue"]
}

View File

@ -1,3 +1,4 @@
import { resolve } from "path";
import vue from "@vitejs/plugin-vue";
import { viteBuildInfo } from "./info";
import svgLoader from "vite-svg-loader";
@ -7,6 +8,7 @@ import WindiCSS from "vite-plugin-windicss";
import { viteMockServe } from "vite-plugin-mock";
import liveReload from "vite-plugin-live-reload";
import styleImport from "vite-plugin-style-import";
import VueI18n from "@intlify/vite-plugin-vue-i18n";
import ElementPlus from "unplugin-element-plus/vite";
import { visualizer } from "rollup-plugin-visualizer";
import removeConsole from "vite-plugin-remove-console";
@ -17,6 +19,12 @@ export function getPluginsList(command, VITE_LEGACY) {
const lifecycle = process.env.npm_lifecycle_event;
return [
vue(),
// https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n
VueI18n({
runtimeOnly: true,
compositionOnly: true,
include: [resolve("locales/**")]
}),
// jsx、tsx语法支持
vueJsx(),
WindiCSS(),

74
locales/en.yaml Normal file
View File

@ -0,0 +1,74 @@
buttons:
hsLoginOut: LoginOut
hsfullscreen: FullScreen
hsexitfullscreen: ExitFullscreen
hsrefreshRoute: RefreshRoute
hslogin: Login
hsadd: Add
hsmark: Mark/Cancel
hssave: Save
hssearch: Search
hsexpendAll: Expand All
hscollapseAll: Collapse All
hssystemSet: Open ProjectConfig
hsdelete: Delete
hsreload: Reload
hscloseCurrentTab: Close CurrentTab
hscloseLeftTabs: Close LeftTabs
hscloseRightTabs: Close RightTabs
hscloseOtherTabs: Close OtherTabs
hscloseAllTabs: Close AllTabs
menus:
hshome: Home
hslogin: Login
hssysManagement: System Manage
hsBaseinfo: Base Info
hsDict: Dict Manage
hseditor: Editor
hserror: Error Page
hsfourZeroFour: "404"
hsfourZeroOne: "403"
hsFive: "500"
hscomponents: Components
hsvideo: Video Components
hsmap: Map Components
hsdraggable: Draggable Components
hssplitPane: Split Pane
hsbutton: Button Components
hscropping: Picture Cropping
hscountTo: Digital Animation
hsselector: Selector Components
hsflowChart: Flow Chart
hsseamless: Seamless Scroll
hscontextmenu: Context Menu
hsmenus: MultiLevel Menu
hsmenu1: Menu1
hsmenu1-1: Menu1-1
hsmenu1-2: Menu1-2
hsmenu1-2-1: Menu1-2-1
hsmenu1-2-2: Menu1-2-2
hsmenu1-3: Menu1-3
hsmenu2: Menu2
permission: Permission Manage
permissionPage: Page Permission
permissionButton: Button Permission
hstabs: Tabs Operate
hsguide: Guide
hsAble: Able
hsMenuTree: Menu Tree
hsWatermark: Water Mark
hsPrint: Print
hsExternalPage: External Page
hsPureDocument: Pure Doc(Embedded)
externalLink: Pure Doc(External)
hsEpDocument: Element Plus Doc(Embedded)
hsAbout: About
hsResult: Result Page
hsSuccess: Success Page
hsFail: Fail Page
hsIconSelect: Icon Select
hsTimeline: Time Line
hsLineTree: LineTree
hsAntTabs: Imitate Antdv Tabs
hsAntAnchor: Imitate Antdv Anchor
hsAntTreeSelect: Imitate Antdv TreeSelector

74
locales/zh-CN.yaml Normal file
View File

@ -0,0 +1,74 @@
buttons:
hsLoginOut: 退出系统
hsfullscreen: 全屏
hsexitfullscreen: 退出全屏
hsrefreshRoute: 刷新路由
hslogin: 登陆
hsadd: 新增
hsmark: 标记/取消
hssave: 保存
hssearch: 搜索
hsexpendAll: 全部展开
hscollapseAll: 全部折叠
hssystemSet: 打开项目配置
hsdelete: 删除
hsreload: 重新加载
hscloseCurrentTab: 关闭当前标签页
hscloseLeftTabs: 关闭左侧标签页
hscloseRightTabs: 关闭右侧标签页
hscloseOtherTabs: 关闭其他标签页
hscloseAllTabs: 关闭全部标签页
menus:
hshome: 首页
hslogin: 登陆
hssysManagement: 系统管理
hsBaseinfo: 基础信息
hsDict: 字典管理
hseditor: 编辑器
hserror: 错误页面
hsfourZeroFour: "404"
hsfourZeroOne: "403"
hsFive: "500"
hscomponents: 组件
hsvideo: 视频组件
hsmap: 地图组件
hsdraggable: 拖拽组件
hssplitPane: 切割面板
hsbutton: 按钮组件
hscropping: 图片裁剪
hscountTo: 数字动画
hsselector: 选择器组件
hsflowChart: 流程图
hsseamless: 无缝滚动
hscontextmenu: 右键菜单
hsmenus: 多级菜单
hsmenu1: 菜单1
hsmenu1-1: 菜单1-1
hsmenu1-2: 菜单1-2
hsmenu1-2-1: 菜单1-2-1
hsmenu1-2-2: 菜单1-2-2
hsmenu1-3: 菜单1-3
hsmenu2: 菜单2
permission: 权限管理
permissionPage: 页面权限
permissionButton: 按钮权限
hstabs: 标签页操作
hsguide: 引导页
hsAble: 功能
hsMenuTree: 菜单树结构
hsWatermark: 水印
hsPrint: 打印
hsExternalPage: 外部页面
hsPureDocument: 平台文档(内嵌)
externalLink: 平台文档(外链)
hsEpDocument: Element Plus文档(内嵌)
hsAbout: 关于
hsResult: 结果页面
hsSuccess: 成功页面
hsFail: 失败页面
hsIconSelect: 图标选择器
hsTimeline: 时间线
hsLineTree: 树形连接线
hsAntTabs: 仿antdv标签页
hsAntAnchor: 仿antdv锚点
hsAntTreeSelect: 仿antdv树型选择器

View File

@ -31,11 +31,11 @@
"@logicflow/core": "0.7.1",
"@logicflow/extension": "0.7.1",
"@pureadmin/components": "^1.0.0",
"@vueuse/core": "^7.7.0",
"@vueuse/core": "^8.0.0",
"@vueuse/motion": "^2.0.0-beta.9",
"@vueuse/shared": "^7.7.0",
"@vueuse/shared": "^8.0.0",
"animate.css": "^4.1.1",
"axios": "^0.26.0",
"axios": "^0.26.1",
"cropperjs": "^1.5.12",
"css-color-function": "^1.3.3",
"dayjs": "^1.10.7",
@ -57,9 +57,9 @@
"rgb-hex": "^4.0.0",
"v-contextmenu": "3.0.0",
"vue": "^3.2.31",
"vue-i18n": "^9.2.0-beta.30",
"vue-i18n": "^9.2.0-beta.32",
"vue-json-pretty": "^2.0.2",
"vue-router": "^4.0.13",
"vue-router": "^4.0.14",
"vue-types": "^4.1.1",
"vuedraggable": "4.1.0",
"vxe-table": "^4.2.0",
@ -74,7 +74,8 @@
"@iconify-icons/fa": "^1.1.1",
"@iconify-icons/fa-solid": "^1.1.2",
"@iconify-icons/ri": "^1.1.1",
"@iconify/vue": "^3.1.3",
"@iconify/vue": "^3.1.4",
"@intlify/vite-plugin-vue-i18n": "^3.3.1",
"@types/element-resize-detector": "1.1.3",
"@types/js-cookie": "^3.0.1",
"@types/lodash-es": "^4.17.6",
@ -115,14 +116,14 @@
"stylelint-config-recommended": "^6.0.0",
"stylelint-config-standard": "^24.0.0",
"stylelint-order": "^5.0.0",
"typescript": "^4.5.5",
"typescript": "^4.6.2",
"unplugin-element-plus": "^0.3.1",
"vite": "2.7.13",
"vite-plugin-live-reload": "^2.1.0",
"vite-plugin-mock": "^2.9.6",
"vite-plugin-remove-console": "^0.0.6",
"vite-plugin-style-import": "1.4.1",
"vite-plugin-windicss": "^1.8.2",
"vite-plugin-windicss": "^1.8.3",
"vite-svg-loader": "2.2.0",
"vue-eslint-parser": "^8.2.0",
"windicss": "^3.5.1"

437
pnpm-lock.yaml generated
View File

@ -9,7 +9,8 @@ specifiers:
"@iconify-icons/fa": ^1.1.1
"@iconify-icons/fa-solid": ^1.1.2
"@iconify-icons/ri": ^1.1.1
"@iconify/vue": ^3.1.3
"@iconify/vue": ^3.1.4
"@intlify/vite-plugin-vue-i18n": ^3.3.1
"@logicflow/core": 0.7.1
"@logicflow/extension": 0.7.1
"@pureadmin/components": ^1.0.0
@ -27,13 +28,13 @@ specifiers:
"@vitejs/plugin-vue-jsx": ^1.3.8
"@vue/eslint-config-prettier": ^7.0.0
"@vue/eslint-config-typescript": ^10.0.0
"@vueuse/core": ^7.7.0
"@vueuse/core": ^8.0.0
"@vueuse/motion": ^2.0.0-beta.9
"@vueuse/shared": ^7.7.0
"@vueuse/shared": ^8.0.0
"@zougt/vite-plugin-theme-preprocessor": ^1.4.4
animate.css: ^4.1.1
autoprefixer: ^10.4.2
axios: ^0.26.0
axios: ^0.26.1
cropperjs: ^1.5.12
cross-env: 7.0.3
css-color-function: ^1.3.3
@ -77,7 +78,7 @@ specifiers:
stylelint-config-recommended: ^6.0.0
stylelint-config-standard: ^24.0.0
stylelint-order: ^5.0.0
typescript: ^4.5.5
typescript: ^4.6.2
unplugin-element-plus: ^0.3.1
v-contextmenu: 3.0.0
vite: 2.7.13
@ -85,13 +86,13 @@ specifiers:
vite-plugin-mock: ^2.9.6
vite-plugin-remove-console: ^0.0.6
vite-plugin-style-import: 1.4.1
vite-plugin-windicss: ^1.8.2
vite-plugin-windicss: ^1.8.3
vite-svg-loader: 2.2.0
vue: ^3.2.31
vue-eslint-parser: ^8.2.0
vue-i18n: ^9.2.0-beta.30
vue-i18n: ^9.2.0-beta.32
vue-json-pretty: ^2.0.2
vue-router: ^4.0.13
vue-router: ^4.0.14
vue-types: ^4.1.1
vuedraggable: 4.1.0
vxe-table: ^4.2.0
@ -106,11 +107,11 @@ dependencies:
"@logicflow/core": 0.7.1
"@logicflow/extension": 0.7.1
"@pureadmin/components": 1.0.0_vue@3.2.31
"@vueuse/core": 7.7.0_vue@3.2.31
"@vueuse/core": 8.0.0_vue@3.2.31
"@vueuse/motion": 2.0.0-beta.9_vue@3.2.31
"@vueuse/shared": 7.7.0_vue@3.2.31
"@vueuse/shared": 8.0.0_vue@3.2.31
animate.css: 4.1.1
axios: 0.26.0
axios: 0.26.1
cropperjs: 1.5.12
css-color-function: 1.3.3
dayjs: 1.10.7
@ -125,16 +126,16 @@ dependencies:
mockjs: 1.1.0
nprogress: 0.2.0
path: 0.12.7
pinia: 2.0.11_typescript@4.5.5+vue@3.2.31
pinia: 2.0.11_typescript@4.6.2+vue@3.2.31
qs: 6.10.3
resize-observer-polyfill: 1.5.1
responsive-storage: 1.0.11_vue@3.2.31
rgb-hex: 4.0.0
v-contextmenu: 3.0.0_vue@3.2.31
vue: 3.2.31
vue-i18n: 9.2.0-beta.30_vue@3.2.31
vue-i18n: 9.2.0-beta.32_vue@3.2.31
vue-json-pretty: 2.0.6_vue@3.2.31
vue-router: 4.0.13_vue@3.2.31
vue-router: 4.0.14_vue@3.2.31
vue-types: 4.1.1_vue@3.2.31
vuedraggable: 4.1.0_vue@3.2.31
vxe-table: 4.2.0_vue@3.2.31+xe-utils@3.5.4
@ -149,7 +150,8 @@ devDependencies:
"@iconify-icons/fa": 1.2.0
"@iconify-icons/fa-solid": 1.2.0
"@iconify-icons/ri": 1.2.0
"@iconify/vue": 3.1.3_vue@3.2.31
"@iconify/vue": 3.1.4_vue@3.2.31
"@intlify/vite-plugin-vue-i18n": 3.3.1_927a0a946d0d434f1ee9f376a300ea94
"@types/element-resize-detector": 1.1.3
"@types/js-cookie": 3.0.1
"@types/lodash-es": 4.17.6
@ -157,13 +159,13 @@ devDependencies:
"@types/node": 14.14.14
"@types/nprogress": 0.2.0
"@types/qs": 6.9.7
"@typescript-eslint/eslint-plugin": 5.11.0_15a231715447500ed5c06da64c8aef1c
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/eslint-plugin": 5.11.0_e5aa81e2725d014cc10493a9f0356cdc
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.6.2
"@vitejs/plugin-legacy": 1.7.1_vite@2.7.13
"@vitejs/plugin-vue": 2.2.4_vite@2.7.13+vue@3.2.31
"@vitejs/plugin-vue-jsx": 1.3.8
"@vue/eslint-config-prettier": 7.0.0_eslint@8.9.0+prettier@2.5.1
"@vue/eslint-config-typescript": 10.0.0_cd100ca74b8c3cfb64acbb3ff997764b
"@vue/eslint-config-typescript": 10.0.0_e9ae806e724e1e93b0f13f024669b2db
"@zougt/vite-plugin-theme-preprocessor": 1.4.4_sass@1.49.9
autoprefixer: 10.4.2_postcss@8.4.6
cross-env: 7.0.3
@ -190,14 +192,14 @@ devDependencies:
stylelint-config-recommended: 6.0.0_stylelint@14.5.0
stylelint-config-standard: 24.0.0_stylelint@14.5.0
stylelint-order: 5.0.0_stylelint@14.5.0
typescript: 4.5.5
typescript: 4.6.2
unplugin-element-plus: 0.3.1_vite@2.7.13+vue@3.2.31
vite: 2.7.13_sass@1.49.9
vite-plugin-live-reload: 2.1.0
vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.7.13
vite-plugin-remove-console: 0.0.6
vite-plugin-style-import: 1.4.1_vite@2.7.13
vite-plugin-windicss: 1.8.2_vite@2.7.13
vite-plugin-windicss: 1.8.3_vite@2.7.13
vite-svg-loader: 2.2.0
vue-eslint-parser: 8.2.0_eslint@8.9.0
windicss: 3.5.1
@ -776,12 +778,12 @@ packages:
"@commitlint/execute-rule": 13.2.0
"@commitlint/resolve-extends": 13.2.0
"@commitlint/types": 13.2.0
"@endemolshinegroup/cosmiconfig-typescript-loader": 3.0.2_e1c3b685f8b7686dcc885a02fd14c5f0
"@endemolshinegroup/cosmiconfig-typescript-loader": 3.0.2_c84a270c92bf6e8d30a9786dab5936e4
chalk: 4.1.2
cosmiconfig: 7.0.1
lodash: 4.17.21
resolve-from: 5.0.0
typescript: 4.5.5
typescript: 4.6.2
dev: true
/@commitlint/message/13.2.0:
@ -891,7 +893,7 @@ packages:
vue: 3.2.31
dev: false
/@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_e1c3b685f8b7686dcc885a02fd14c5f0:
/@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_c84a270c92bf6e8d30a9786dab5936e4:
resolution:
{
integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==
@ -903,7 +905,7 @@ packages:
cosmiconfig: 7.0.1
lodash.get: 4.4.2
make-error: 1.3.6
ts-node: 9.1.1_typescript@4.5.5
ts-node: 9.1.1_typescript@4.6.2
tslib: 2.3.1
transitivePeerDependencies:
- typescript
@ -993,71 +995,117 @@ packages:
}
dev: true
/@iconify/vue/3.1.3_vue@3.2.31:
/@iconify/vue/3.1.4_vue@3.2.31:
resolution:
{
integrity: sha512-tZ7+mh2HDy8pj7dajByn4bE72XIZM3l+F490VIAAYifwpqGnjqv9O60n1MPsV5dM7Q+FN6yVXZMdXT68l//WTw==
integrity: sha512-oJm0VPl1fhlsbBX9tBeAbtmZ5iHCxCkVQdCi81lxdA3cqc9yqBlCloqObX93/YWNM5N8j/j0Efk6iSwsihOoNA==
}
peerDependencies:
vue: 3.x
dependencies:
cross-fetch: 3.1.5
vue: 3.2.31
transitivePeerDependencies:
- encoding
dev: true
/@intlify/core-base/9.2.0-beta.30:
/@intlify/bundle-utils/2.2.0_vue-i18n@9.2.0-beta.32:
resolution:
{
integrity: sha512-tnOuI8gs4S7vv4WjG8oFL7vbZ4PM7Is/Ld3lRHQlBO7UjpnCVcQ94AgP/4F0cUPFn9JSPMQRN0aOOahW1BXvSA==
integrity: sha512-qVuN7+c84UB6rlLHSued2J9R86LG1rHg6ZibCghGMyPXnW0nOuIfkUFf1F7tXIqfMXjIPeJzlbpmzjWTI2z9Kw==
}
engines: { node: ">= 12" }
peerDependencies:
petite-vue-i18n: "*"
vue-i18n: "*"
peerDependenciesMeta:
petite-vue-i18n:
optional: true
vue-i18n:
optional: true
dependencies:
"@intlify/devtools-if": 9.2.0-beta.30
"@intlify/message-compiler": 9.2.0-beta.30
"@intlify/shared": 9.2.0-beta.30
"@intlify/vue-devtools": 9.2.0-beta.30
dev: false
/@intlify/devtools-if/9.2.0-beta.30:
resolution:
{
integrity: sha512-3OxGFi6ooya9DFqX/JsxFjrj9nGYcDoo4CRGYSDqnC+xv4bnsyB5ekmaYBiVZtagCdZdSUMxbTFphl1WbtgNLQ==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/shared": 9.2.0-beta.30
dev: false
/@intlify/message-compiler/9.2.0-beta.30:
resolution:
{
integrity: sha512-2kj/0nLIFrgiO86f9VifcUUcV8LdzXt4YYPIujx/LkTEQOuSFUo/bNiMaG1hyfiU/8mfq6tsaWKjoOZjeao1eQ==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/shared": 9.2.0-beta.30
"@intlify/message-compiler": 9.2.0-beta.32
"@intlify/shared": 9.2.0-beta.32
jsonc-eslint-parser: 1.4.1
source-map: 0.6.1
dev: false
vue-i18n: 9.2.0-beta.32_vue@3.2.31
yaml-eslint-parser: 0.3.2
dev: true
/@intlify/shared/9.2.0-beta.30:
/@intlify/core-base/9.2.0-beta.32:
resolution:
{
integrity: sha512-E1WHRTIlUEse3d/6t1pAagSXRxmeVeNIhx5kT80dfpYxw8lOnCWV9wLve2bq9Fkv+3TD2I5j+CdN7jvSl3LdsA==
}
engines: { node: ">= 12" }
dev: false
/@intlify/vue-devtools/9.2.0-beta.30:
resolution:
{
integrity: sha512-hcqDfwP/oXVmVCaJ0RA+uv1WSCcd42/Y13S0bySmWZv2KamLcxiD7wYxp/MaECG/D4KZcSLkq/wDHTG7lhYf5Q==
integrity: sha512-t9IB9Z65cx0fcpd9/oD8MrsMvGy1FOColOe5oodjo9E//Qm7P8kvSHnKymWjsAcJs0wR2Y6J9X8FRFmO6LNLNQ==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/core-base": 9.2.0-beta.30
"@intlify/shared": 9.2.0-beta.30
"@intlify/devtools-if": 9.2.0-beta.32
"@intlify/message-compiler": 9.2.0-beta.32
"@intlify/shared": 9.2.0-beta.32
"@intlify/vue-devtools": 9.2.0-beta.32
dev: false
/@intlify/devtools-if/9.2.0-beta.32:
resolution:
{
integrity: sha512-MvcxHrP7urM17wcna2vyqt8D8Pc5lyD3ps2BcmAr60UYifNKBQU7LmHfjTG7BZO4t0LyUWrWFJmm7fRVlju40g==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/shared": 9.2.0-beta.32
dev: false
/@intlify/message-compiler/9.2.0-beta.32:
resolution:
{
integrity: sha512-7OOHIhOmOM4nqe3KfEuE65xLwawwBGg/pCFByzayf0jARoHkeaA7v/eKsUJVJMEakeF2pNstx06AvfecijgPzg==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/shared": 9.2.0-beta.32
source-map: 0.6.1
/@intlify/shared/9.2.0-beta.32:
resolution:
{
integrity: sha512-lVaHnKFNg16eWlfDLzDFLapurrf0WK7xLWEkz8DMYNIXJshRQOZCkH7sQaqtONPoOT0LqjyPo1+sV0Wq85/HRQ==
}
engines: { node: ">= 12" }
/@intlify/vite-plugin-vue-i18n/3.3.1_927a0a946d0d434f1ee9f376a300ea94:
resolution:
{
integrity: sha512-b9HIUANzL4/LmrA5RqeiPabZl2/RiWNAJ90TVZ8kSi3APRZ4BbmwUAclKe8ip+1jCDhqaGO/qfAI7SbQ0Y76Uw==
}
engines: { node: ">= 12" }
peerDependencies:
petite-vue-i18n: ^9.0.0
vite: ^2.0.0
vue-i18n: ^9.0.0
peerDependenciesMeta:
petite-vue-i18n:
optional: true
vue-i18n:
optional: true
dependencies:
"@intlify/bundle-utils": 2.2.0_vue-i18n@9.2.0-beta.32
"@intlify/shared": 9.2.0-beta.32
"@rollup/pluginutils": 4.1.2
debug: 4.3.3
fast-glob: 3.2.11
source-map: 0.6.1
vite: 2.7.13_sass@1.49.9
vue-i18n: 9.2.0-beta.32_vue@3.2.31
transitivePeerDependencies:
- supports-color
dev: true
/@intlify/vue-devtools/9.2.0-beta.32:
resolution:
{
integrity: sha512-LZ+E8S+PBeKzV5zDrh/6kbPdEMu+oO6W7B9EmNhzBOKcF94oiJRTkFLymV6U2YefWu+JYEl2LGe7giXXt2jcwg==
}
engines: { node: ">= 12" }
dependencies:
"@intlify/core-base": 9.2.0-beta.32
"@intlify/shared": 9.2.0-beta.32
dev: false
/@jridgewell/resolve-uri/3.0.5:
@ -1328,7 +1376,7 @@ packages:
"@types/node": 14.14.14
dev: true
/@typescript-eslint/eslint-plugin/5.11.0_15a231715447500ed5c06da64c8aef1c:
/@typescript-eslint/eslint-plugin/5.11.0_e5aa81e2725d014cc10493a9f0356cdc:
resolution:
{
integrity: sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw==
@ -1342,23 +1390,23 @@ packages:
typescript:
optional: true
dependencies:
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.6.2
"@typescript-eslint/scope-manager": 5.11.0
"@typescript-eslint/type-utils": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/utils": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/type-utils": 5.11.0_eslint@8.9.0+typescript@4.6.2
"@typescript-eslint/utils": 5.11.0_eslint@8.9.0+typescript@4.6.2
debug: 4.3.3
eslint: 8.9.0
functional-red-black-tree: 1.0.1
ignore: 5.2.0
regexpp: 3.2.0
semver: 7.3.5
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
tsutils: 3.21.0_typescript@4.6.2
typescript: 4.6.2
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser/5.11.0_eslint@8.9.0+typescript@4.5.5:
/@typescript-eslint/parser/5.11.0_eslint@8.9.0+typescript@4.6.2:
resolution:
{
integrity: sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ==
@ -1373,10 +1421,10 @@ packages:
dependencies:
"@typescript-eslint/scope-manager": 5.11.0
"@typescript-eslint/types": 5.11.0
"@typescript-eslint/typescript-estree": 5.11.0_typescript@4.5.5
"@typescript-eslint/typescript-estree": 5.11.0_typescript@4.6.2
debug: 4.3.3
eslint: 8.9.0
typescript: 4.5.5
typescript: 4.6.2
transitivePeerDependencies:
- supports-color
dev: true
@ -1392,7 +1440,7 @@ packages:
"@typescript-eslint/visitor-keys": 5.11.0
dev: true
/@typescript-eslint/type-utils/5.11.0_eslint@8.9.0+typescript@4.5.5:
/@typescript-eslint/type-utils/5.11.0_eslint@8.9.0+typescript@4.6.2:
resolution:
{
integrity: sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA==
@ -1405,11 +1453,11 @@ packages:
typescript:
optional: true
dependencies:
"@typescript-eslint/utils": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/utils": 5.11.0_eslint@8.9.0+typescript@4.6.2
debug: 4.3.3
eslint: 8.9.0
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
tsutils: 3.21.0_typescript@4.6.2
typescript: 4.6.2
transitivePeerDependencies:
- supports-color
dev: true
@ -1422,7 +1470,7 @@ packages:
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
/@typescript-eslint/typescript-estree/5.11.0_typescript@4.5.5:
/@typescript-eslint/typescript-estree/5.11.0_typescript@4.6.2:
resolution:
{
integrity: sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==
@ -1440,13 +1488,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.3.5
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
tsutils: 3.21.0_typescript@4.6.2
typescript: 4.6.2
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils/5.11.0_eslint@8.9.0+typescript@4.5.5:
/@typescript-eslint/utils/5.11.0_eslint@8.9.0+typescript@4.6.2:
resolution:
{
integrity: sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==
@ -1458,7 +1506,7 @@ packages:
"@types/json-schema": 7.0.9
"@typescript-eslint/scope-manager": 5.11.0
"@typescript-eslint/types": 5.11.0
"@typescript-eslint/typescript-estree": 5.11.0_typescript@4.5.5
"@typescript-eslint/typescript-estree": 5.11.0_typescript@4.6.2
eslint: 8.9.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.9.0
@ -1621,7 +1669,7 @@ packages:
prettier: 2.5.1
dev: true
/@vue/eslint-config-typescript/10.0.0_cd100ca74b8c3cfb64acbb3ff997764b:
/@vue/eslint-config-typescript/10.0.0_e9ae806e724e1e93b0f13f024669b2db:
resolution:
{
integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==
@ -1631,8 +1679,8 @@ packages:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
eslint-plugin-vue: ^8.0.1
dependencies:
"@typescript-eslint/eslint-plugin": 5.11.0_15a231715447500ed5c06da64c8aef1c
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.5.5
"@typescript-eslint/eslint-plugin": 5.11.0_e5aa81e2725d014cc10493a9f0356cdc
"@typescript-eslint/parser": 5.11.0_eslint@8.9.0+typescript@4.6.2
eslint: 8.9.0
eslint-plugin-vue: 8.4.1_eslint@8.9.0
vue-eslint-parser: 8.2.0_eslint@8.9.0
@ -1721,6 +1769,33 @@ packages:
vue-demi: 0.12.1_vue@3.2.31
dev: false
/@vueuse/core/8.0.0_vue@3.2.31:
resolution:
{
integrity: sha512-CU8oQhTaAQ4+9IlEHnaGk88qQ2fSvALHixWZhfyA2j18G42XeyJz3V0FmnBMWZUwd7VRSHJZFbGziZ6o5npNow==
}
peerDependencies:
"@vue/composition-api": ^1.1.0
vue: ^2.6.0 || ^3.2.0
peerDependenciesMeta:
"@vue/composition-api":
optional: true
vue:
optional: true
dependencies:
"@vueuse/metadata": 8.0.0
"@vueuse/shared": 8.0.0_vue@3.2.31
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
dev: false
/@vueuse/metadata/8.0.0:
resolution:
{
integrity: sha512-23R9pqgfJnfmUnGCOtaDkwaNYEAO7N6whvaAFAs5D5xHXgqAj+z/tLhwQzSJw/ZzJGUb8W5L+VgP9S7SL35riw==
}
dev: false
/@vueuse/motion/2.0.0-beta.9_vue@3.2.31:
resolution:
{
@ -1757,10 +1832,28 @@ packages:
vue-demi: 0.12.1_vue@3.2.31
dev: false
/@windicss/config/1.8.2:
/@vueuse/shared/8.0.0_vue@3.2.31:
resolution:
{
integrity: sha512-dGXkzcH1Bnm9716/pE63YSewLQIZXGWerHEotUKf2EMlz/JqsI9Z3yBy/lXVL9HsEoTNpyvMPLk75oquH0vXGg==
integrity: sha512-HUIFZ5Vc3aGvIzDQJJhg2+Ok5xvNuwxoz5HrOr/M765wlj357WiMYzhU2XGljL6IcmK29SP/1Jb4Fra7A4PBCw==
}
peerDependencies:
"@vue/composition-api": ^1.1.0
vue: ^2.6.0 || ^3.2.0
peerDependenciesMeta:
"@vue/composition-api":
optional: true
vue:
optional: true
dependencies:
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
dev: false
/@windicss/config/1.8.3:
resolution:
{
integrity: sha512-1fvfZhRD7WfV/Xh6uIAYKIdbQWrwEgSdkFlHiLPzMDS44KjwNZILDzLAz9Y2W5H2K4MLGgGMnzGS89ECyjc0Ww==
}
dependencies:
debug: 4.3.3
@ -1770,14 +1863,14 @@ packages:
- supports-color
dev: true
/@windicss/plugin-utils/1.8.2:
/@windicss/plugin-utils/1.8.3:
resolution:
{
integrity: sha512-UlinWxojyGxWV18AyQ1ISeGvtpbw4ITQpcRe0v4PyuJZHwnrrHmxp8o/pg10oEcDKnsTIbjGeZfW5DC+mkjYYQ==
integrity: sha512-emlMeDt73uNV1ZofLTDogcxqL9aZ5uIRYkjeHlrWiaDozFbX6Jc+a6eRo9Ieaar3JUryl6AnecTPHAiFDl4IXg==
}
dependencies:
"@antfu/utils": 0.5.0
"@windicss/config": 1.8.2
"@windicss/config": 1.8.3
debug: 4.3.3
fast-glob: 3.2.11
magic-string: 0.25.7
@ -1837,6 +1930,17 @@ packages:
through: 2.3.8
dev: true
/acorn-jsx/5.3.2_acorn@7.4.1:
resolution:
{
integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 7.4.1
dev: true
/acorn-jsx/5.3.2_acorn@8.7.0:
resolution:
{
@ -1848,6 +1952,15 @@ packages:
acorn: 8.7.0
dev: true
/acorn/7.4.1:
resolution:
{
integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
}
engines: { node: ">=0.4.0" }
hasBin: true
dev: true
/acorn/8.7.0:
resolution:
{
@ -2041,10 +2154,10 @@ packages:
postcss-value-parser: 4.2.0
dev: true
/axios/0.26.0:
/axios/0.26.1:
resolution:
{
integrity: sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==
integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
}
dependencies:
follow-redirects: 1.14.9
@ -2604,17 +2717,6 @@ packages:
cross-spawn: 7.0.3
dev: true
/cross-fetch/3.1.5:
resolution:
{
integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
}
dependencies:
node-fetch: 2.6.7
transitivePeerDependencies:
- encoding
dev: true
/cross-spawn/7.0.3:
resolution:
{
@ -3494,6 +3596,16 @@ packages:
estraverse: 5.3.0
dev: true
/eslint-utils/2.1.0:
resolution:
{
integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
}
engines: { node: ">=6" }
dependencies:
eslint-visitor-keys: 1.3.0
dev: true
/eslint-utils/3.0.0_eslint@8.9.0:
resolution:
{
@ -3507,6 +3619,14 @@ packages:
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys/1.3.0:
resolution:
{
integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
}
engines: { node: ">=4" }
dev: true
/eslint-visitor-keys/2.1.0:
resolution:
{
@ -3570,6 +3690,18 @@ packages:
- supports-color
dev: true
/espree/6.2.1:
resolution:
{
integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
}
engines: { node: ">=6.0.0" }
dependencies:
acorn: 7.4.1
acorn-jsx: 5.3.2_acorn@7.4.1
eslint-visitor-keys: 1.3.0
dev: true
/espree/9.3.1:
resolution:
{
@ -4566,6 +4698,20 @@ packages:
minimist: 1.2.5
dev: true
/jsonc-eslint-parser/1.4.1:
resolution:
{
integrity: sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==
}
engines: { node: ">=8.10.0" }
dependencies:
acorn: 7.4.1
eslint-utils: 2.1.0
eslint-visitor-keys: 1.3.0
espree: 6.2.1
semver: 6.3.0
dev: true
/jsonfile/4.0.0:
resolution: { integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= }
optionalDependencies:
@ -5077,21 +5223,6 @@ packages:
tslib: 2.3.1
dev: true
/node-fetch/2.6.7:
resolution:
{
integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
}
engines: { node: 4.x || >=6.0.0 }
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
dependencies:
whatwg-url: 5.0.0
dev: true
/node-releases/2.0.2:
resolution:
{
@ -5424,7 +5555,7 @@ packages:
engines: { node: ">=0.10.0" }
dev: true
/pinia/2.0.11_typescript@4.5.5+vue@3.2.31:
/pinia/2.0.11_typescript@4.6.2+vue@3.2.31:
resolution:
{
integrity: sha512-JzcmnMqu28PNWOjDgEDK6fTrIzX8eQZKPPKvu/fpHdpXARUj1xeVdFi3YFIMOWswqaBd589cpmAMdSSTryI9iw==
@ -5440,7 +5571,7 @@ packages:
optional: true
dependencies:
"@vue/devtools-api": 6.0.10
typescript: 4.5.5
typescript: 4.6.2
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
dev: false
@ -6923,10 +7054,6 @@ packages:
is-number: 7.0.0
dev: true
/tr46/0.0.3:
resolution: { integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= }
dev: true
/trim-newlines/3.0.1:
resolution:
{
@ -6935,7 +7062,7 @@ packages:
engines: { node: ">=8" }
dev: true
/ts-node/9.1.1_typescript@4.5.5:
/ts-node/9.1.1_typescript@4.6.2:
resolution:
{
integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
@ -6950,7 +7077,7 @@ packages:
diff: 4.0.2
make-error: 1.3.6
source-map-support: 0.5.21
typescript: 4.5.5
typescript: 4.6.2
yn: 3.1.1
dev: true
@ -6974,7 +7101,7 @@ packages:
integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
}
/tsutils/3.21.0_typescript@4.5.5:
/tsutils/3.21.0_typescript@4.6.2:
resolution:
{
integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
@ -6984,7 +7111,7 @@ packages:
typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
dependencies:
tslib: 1.14.1
typescript: 4.5.5
typescript: 4.6.2
dev: true
/type-check/0.4.0:
@ -7051,10 +7178,10 @@ packages:
}
dev: false
/typescript/4.5.5:
/typescript/4.6.2:
resolution:
{
integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==
}
engines: { node: ">=4.2.0" }
hasBin: true
@ -7288,15 +7415,15 @@ packages:
- supports-color
dev: true
/vite-plugin-windicss/1.8.2_vite@2.7.13:
/vite-plugin-windicss/1.8.3_vite@2.7.13:
resolution:
{
integrity: sha512-tO9bCoqIW945ehwMr9D41YPods8b7HXtVtYVPx62dxadxlbcoD7PQ/8wSvLEiIkMMfuDG5WQ6LZaUdmfALC/vQ==
integrity: sha512-RIw2GD6H6cKNE8wZXVOBs4L1uTicVS0FaAkeqXvy1oyuXLC4SXmvnzEuoK0+qFuWJjW0ECNwE8eU+ZZhzNQKUg==
}
peerDependencies:
vite: ^2.0.1
dependencies:
"@windicss/plugin-utils": 1.8.2
"@windicss/plugin-utils": 1.8.3
debug: 4.3.3
kolorist: 1.5.1
vite: 2.7.13_sass@1.49.9
@ -7382,18 +7509,18 @@ packages:
- supports-color
dev: true
/vue-i18n/9.2.0-beta.30_vue@3.2.31:
/vue-i18n/9.2.0-beta.32_vue@3.2.31:
resolution:
{
integrity: sha512-5DqrgG9ffgC7j3RRAfViC0WUcdz0C3Ix1qq1AyQItpF7UkSB6iSJGEjBG6KdspbRQq/8t1YzDx4JRXbL05l6ow==
integrity: sha512-heUy1Aa/4DT2+ukoZkXMtDeU0o4pB5K6XxCypsmpoQ1QURAx1zyHqHB4mdjnLj3DDjllT921cV9cuKEWflQYGQ==
}
engines: { node: ">= 12" }
peerDependencies:
vue: ^3.0.0
dependencies:
"@intlify/core-base": 9.2.0-beta.30
"@intlify/shared": 9.2.0-beta.30
"@intlify/vue-devtools": 9.2.0-beta.30
"@intlify/core-base": 9.2.0-beta.32
"@intlify/shared": 9.2.0-beta.32
"@intlify/vue-devtools": 9.2.0-beta.32
"@vue/devtools-api": 6.0.10
vue: 3.2.31
dev: false
@ -7410,10 +7537,10 @@ packages:
vue: 3.2.31
dev: false
/vue-router/4.0.13_vue@3.2.31:
/vue-router/4.0.14_vue@3.2.31:
resolution:
{
integrity: sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==
integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==
}
peerDependencies:
vue: ^3.2.0
@ -7484,10 +7611,6 @@ packages:
tslib: 2.3.1
dev: false
/webidl-conversions/3.0.1:
resolution: { integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= }
dev: true
/webpack-virtual-modules/0.4.3:
resolution:
{
@ -7495,13 +7618,6 @@ packages:
}
dev: true
/whatwg-url/5.0.0:
resolution: { integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0= }
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: true
/which/1.3.1:
resolution:
{
@ -7628,6 +7744,17 @@ packages:
}
dev: true
/yaml-eslint-parser/0.3.2:
resolution:
{
integrity: sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==
}
dependencies:
eslint-visitor-keys: 1.3.0
lodash: 4.17.21
yaml: 1.10.2
dev: true
/yaml/1.10.2:
resolution:
{

View File

@ -14,7 +14,7 @@ import screenfull from "../components/screenfull/index.vue";
import globalization from "/@/assets/svg/globalization.svg?component";
const route = useRoute();
const { locale } = useI18n();
const { locale, t } = useI18n();
const instance =
getCurrentInstance().appContext.config.globalProperties.$storage;
const {
@ -101,14 +101,14 @@ function translationEn() {
<IconifyIconOffline
icon="logout-circle-r-line"
style="margin: 5px"
/>{{ $t("buttons.hsLoginOut") }}</el-dropdown-item
/>{{ t("buttons.hsLoginOut") }}</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-icon
class="el-icon-setting"
:title="$t('buttons.hssystemSet')"
:title="t('buttons.hssystemSet')"
@click="onPanel"
>
<IconifyIconOffline icon="setting" />

View File

@ -1,5 +1,8 @@
<script setup lang="ts">
import { useFullscreen } from "@vueuse/core";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const { isFullscreen, toggle } = useFullscreen();
</script>
@ -7,9 +10,7 @@ const { isFullscreen, toggle } = useFullscreen();
<div class="screen-full" @click="toggle">
<FontIcon
:title="
isFullscreen
? $t('buttons.hsexitfullscreen')
: $t('buttons.hsfullscreen')
isFullscreen ? t('buttons.hsexitfullscreen') : t('buttons.hsfullscreen')
"
:icon="isFullscreen ? 'team-iconexit-fullscreen' : 'team-iconfullscreen'"
/>

View File

@ -14,7 +14,7 @@
<component
:is="useRenderIcon(item.meta?.icon ?? 'bookmark-2-line')"
></component>
<span class="result-item-title">{{ $t(item.meta?.title) }}</span>
<span class="result-item-title">{{ t(item.meta?.title) }}</span>
<enterOutlined />
</div>
</template>
@ -23,10 +23,13 @@
<script lang="ts" setup>
import { computed } from "vue";
import { useI18n } from "vue-i18n";
import { useEpThemeStoreHook } from "/@/store/modules/epTheme";
import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
import enterOutlined from "/@/assets/svg/enter_outlined.svg?component";
const { t } = useI18n();
interface optionsItem {
path: string;
meta?: {

View File

@ -14,7 +14,7 @@ import { usePermissionStoreHook } from "/@/store/modules/permission";
import globalization from "/@/assets/svg/globalization.svg?component";
const route = useRoute();
const { locale } = useI18n();
const { locale, t } = useI18n();
const routers = useRouter().options.routes;
const menuRef = templateRef<ElRef | null>("menu", null);
const instance =
@ -133,14 +133,14 @@ function translationEn() {
icon="logout-circle-r-line"
style="margin: 5px"
/>
{{ $t("buttons.hsLoginOut") }}</el-dropdown-item
{{ t("buttons.hsLoginOut") }}</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-icon
class="el-icon-setting"
:title="$t('buttons.hssystemSet')"
:title="t('buttons.hssystemSet')"
@click="onPanel"
>
<IconifyIconOffline icon="setting" />

View File

@ -17,7 +17,7 @@ import globalization from "/@/assets/svg/globalization.svg?component";
import { ref, watch, nextTick, onMounted, getCurrentInstance } from "vue";
const route = useRoute();
const { locale } = useI18n();
const { locale, t } = useI18n();
const routers = useRouter().options.routes;
const menuRef = templateRef<ElRef | null>("menu", null);
const instance =
@ -178,14 +178,14 @@ function translationEn() {
icon="logout-circle-r-line"
style="margin: 5px"
/>
{{ $t("buttons.hsLoginOut") }}</el-dropdown-item
{{ t("buttons.hsLoginOut") }}</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-icon
class="el-icon-setting"
:title="$t('buttons.hssystemSet')"
:title="t('buttons.hssystemSet')"
@click="onPanel"
>
<IconifyIconOffline icon="setting" />

View File

@ -19,12 +19,12 @@ import closeLeft from "/@/assets/svg/close_left.svg?component";
import closeOther from "/@/assets/svg/close_other.svg?component";
import closeRight from "/@/assets/svg/close_right.svg?component";
import { useI18n } from "vue-i18n";
import { emitter } from "/@/utils/mitt";
import { $t as t } from "/@/plugins/i18n";
import { transformI18n } from "/@/plugins/i18n";
import { storageLocal } from "/@/utils/storage";
import { useRoute, useRouter } from "vue-router";
import { isEqual, isEmpty } from "lodash-unified";
import { transformI18n, $t } from "/@/plugins/i18n";
import { RouteConfigs, tagsViewsType } from "../../types";
import { useSettingStoreHook } from "/@/store/modules/settings";
import { handleAliveRoute, delAliveRoutes } from "/@/router/utils";
@ -33,6 +33,7 @@ import { usePermissionStoreHook } from "/@/store/modules/permission";
import { toggleClass, removeClass, hasClass } from "/@/utils/operate";
import { templateRef, useResizeObserver, useDebounceFn } from "@vueuse/core";
const { t } = useI18n();
const route = useRoute();
const router = useRouter();
const translateX = ref<number>(0);
@ -193,42 +194,42 @@ const handleScroll = (offset: number): void => {
const tagsViews = reactive<Array<tagsViewsType>>([
{
icon: refresh,
text: t("buttons.hsreload"),
text: $t("buttons.hsreload"),
divided: false,
disabled: false,
show: true
},
{
icon: close,
text: t("buttons.hscloseCurrentTab"),
text: $t("buttons.hscloseCurrentTab"),
divided: false,
disabled: multiTags.value.length > 1 ? false : true,
show: true
},
{
icon: closeLeft,
text: t("buttons.hscloseLeftTabs"),
text: $t("buttons.hscloseLeftTabs"),
divided: true,
disabled: multiTags.value.length > 1 ? false : true,
show: true
},
{
icon: closeRight,
text: t("buttons.hscloseRightTabs"),
text: $t("buttons.hscloseRightTabs"),
divided: false,
disabled: multiTags.value.length > 1 ? false : true,
show: true
},
{
icon: closeOther,
text: t("buttons.hscloseOtherTabs"),
text: $t("buttons.hscloseOtherTabs"),
divided: true,
disabled: multiTags.value.length > 2 ? false : true,
show: true
},
{
icon: closeAll,
text: t("buttons.hscloseAllTabs"),
text: $t("buttons.hscloseAllTabs"),
divided: false,
disabled: multiTags.value.length > 1 ? false : true,
show: true
@ -701,7 +702,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
>
<li v-if="item.show" @click="selectTag(key, item)">
<component :is="item.icon" :key="key" />
{{ $t(item.text) }}
{{ t(item.text) }}
</li>
</div>
</ul>
@ -710,7 +711,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
<ul class="right-button">
<li>
<el-icon
:title="$t('buttons.hsrefreshRoute')"
:title="t('buttons.hsrefreshRoute')"
class="el-icon-refresh-right rotate"
@click="onFresh"
>
@ -740,7 +741,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
:key="key"
style="margin-right: 6px"
/>
{{ $t(item.text) }}
{{ t(item.text) }}
</el-dropdown-item>
</el-dropdown-menu>
</template>

78
src/plugins/i18n.ts Normal file
View File

@ -0,0 +1,78 @@
// 多组件库的国际化和本地项目国际化兼容
import { App, WritableComputedRef } from "vue";
import { storageLocal } from "/@/utils/storage";
import { type I18n, createI18n } from "vue-i18n";
// vxe-table组件国际化
import zhVxeTable from "vxe-table/lib/locale/lang/zh-CN";
import enVxeTable from "vxe-table/lib/locale/lang/en-US";
// element-plus国际化
import enLocale from "element-plus/lib/locale/lang/en";
import zhLocale from "element-plus/lib/locale/lang/zh-cn";
function siphonI18n(prefix = "zh-CN") {
return Object.fromEntries(
Object.entries(import.meta.globEager("../../locales/*.y(a)?ml")).map(
([key, value]) => {
const matched = key.match(/([A-Za-z0-9-_]+)\./i)[1];
return [matched, value.default];
}
)
)[prefix];
}
export const localesConfigs = {
zh: {
...siphonI18n("zh-CN"),
...zhVxeTable,
...zhLocale
},
en: {
...siphonI18n("en"),
...enVxeTable,
...enLocale
}
};
/**
*
* @param message message
* @param isI18n true,,
* @returns message
*/
export function transformI18n(
message: string | unknown | object = "",
isI18n: boolean | unknown = false
) {
if (!message) {
return "";
}
// 处理存储动态路由的title,格式 {zh:"",en:""}
if (typeof message === "object") {
debugger;
const locale: string | WritableComputedRef<string> | any =
i18n.global.locale;
return message[locale];
}
if (isI18n) {
return i18n.global.t.call(i18n.global.locale, message);
} else {
return message;
}
}
// 此函数只是配合i18n Ally插件来进行国际化智能提示并无实际意义只对提示起作用如果不需要国际化可删除
export const $t = (key: string) => key;
export const i18n: I18n = createI18n({
legacy: false,
locale: storageLocal.getItem("responsive-locale")?.locale ?? "zh",
fallbackLocale: "en",
messages: localesConfigs
});
export function usI18n(app: App) {
app.use(i18n);
}

View File

@ -1,25 +0,0 @@
import { siphonI18n } from "./index";
// vxe-table组件国际化
import zhVxeTable from "vxe-table/lib/locale/lang/zh-CN";
import enVxeTable from "vxe-table/lib/locale/lang/en-US";
// element-plus国际化
import enLocale from "element-plus/lib/locale/lang/en";
import zhLocale from "element-plus/lib/locale/lang/zh-cn";
// 项目内自定义国际化
const zhModules = import.meta.globEager("./zh-CN/**/*.ts");
const enModules = import.meta.globEager("./en/**/*.ts");
export const localesConfigs = {
zh: {
...siphonI18n(zhModules, "zh-CN"),
...zhVxeTable,
...zhLocale
},
en: {
...siphonI18n(enModules, "en"),
...enVxeTable,
...enLocale
}
};

View File

@ -1,21 +0,0 @@
export default {
hsLoginOut: "LoginOut",
hsfullscreen: "FullScreen",
hsexitfullscreen: "ExitFullscreen",
hsrefreshRoute: "RefreshRoute",
hslogin: "Login",
hsadd: "Add",
hsmark: "Mark/Cancel",
hssave: "Save",
hssearch: "Search",
hsexpendAll: "Expand All",
hscollapseAll: "Collapse All",
hssystemSet: "Open ProjectConfig",
hsdelete: "Delete",
hsreload: "Reload",
hscloseCurrentTab: "Close CurrentTab",
hscloseLeftTabs: "Close LeftTabs",
hscloseRightTabs: "Close RightTabs",
hscloseOtherTabs: "Close OtherTabs",
hscloseAllTabs: "Close AllTabs"
};

View File

@ -1,55 +0,0 @@
export default {
hshome: "Home",
hslogin: "Login",
hssysManagement: "System Manage",
hsBaseinfo: "Base Info",
hsDict: "Dict Manage",
hseditor: "Editor",
hserror: "Error Page",
hsfourZeroFour: "404",
hsfourZeroOne: "403",
hsFive: "500",
hscomponents: "Components",
hsvideo: "Video Components",
hsmap: "Map Components",
hsdraggable: "Draggable Components",
hssplitPane: "Split Pane",
hsbutton: "Button Components",
hscropping: "Picture Cropping",
hscountTo: "Digital Animation",
hsselector: "Selector Components",
hsflowChart: "Flow Chart",
hsseamless: "Seamless Scroll",
hscontextmenu: "Context Menu",
hsmenus: "MultiLevel Menu",
hsmenu1: "Menu1",
"hsmenu1-1": "Menu1-1",
"hsmenu1-2": "Menu1-2",
"hsmenu1-2-1": "Menu1-2-1",
"hsmenu1-2-2": "Menu1-2-2",
"hsmenu1-3": "Menu1-3",
hsmenu2: "Menu2",
permission: "Permission Manage",
permissionPage: "Page Permission",
permissionButton: "Button Permission",
hstabs: "Tabs Operate",
hsguide: "Guide",
hsAble: "Able",
hsMenuTree: "Menu Tree",
hsWatermark: "Water Mark",
hsPrint: "Print",
hsExternalPage: "External Page",
hsPureDocument: "Pure Doc(Embedded)",
externalLink: "Pure Doc(External)",
hsEpDocument: "Element Plus Doc(Embedded)",
hsAbout: "About",
hsResult: "Result Page",
hsSuccess: "Success Page",
hsFail: "Fail Page",
hsIconSelect: "Icon Select",
hsTimeline: "Time Line",
hsLineTree: "LineTree",
hsAntTabs: "Imitate Antdv Tabs",
hsAntAnchor: "Imitate Antdv Anchor",
hsAntTreeSelect: "Imitate Antdv TreeSelector"
};

View File

@ -1,77 +0,0 @@
// 多组件库的国际化和本地项目国际化兼容
import { App } from "vue";
import { set } from "lodash-unified";
import { createI18n } from "vue-i18n";
import { localesConfigs } from "./config";
import { storageLocal } from "/@/utils/storage";
/**
*
* @param message message
* @param isI18n true,,
* @returns message
*/
export function transformI18n(
message: string | unknown | object = "",
isI18n: boolean | unknown = false
) {
if (!message) {
return "";
}
// 处理存储动态路由的title,格式 {zh:"",en:""}
if (typeof message === "object") {
return message[i18n.global?.locale];
}
if (isI18n) {
//@ts-ignore
return i18n.global.tc.call(i18n.global, message);
} else {
return message;
}
}
/**
*
* @param langs
* @param prefix zh-CN
* @returns obj {.**}
*/
export function siphonI18n(
langs: Record<string, Record<string, any>>,
prefix = "zh-CN"
) {
const langsObj: Recordable = {};
Object.keys(langs).forEach((key: string) => {
let fileName = key.replace(`./${prefix}/`, "").replace(/^\.\//, "");
fileName = fileName.substring(0, fileName.lastIndexOf("."));
const keyList = fileName.split("/");
const moduleName = keyList.shift();
const objKey = keyList.join(".");
const langFileModule = langs[key].default;
if (moduleName) {
if (objKey) {
set(langsObj, moduleName, langsObj[moduleName] || {});
set(langsObj[moduleName], objKey, langFileModule);
} else {
set(langsObj, moduleName, langFileModule || {});
}
}
});
return langsObj;
}
// 此函数只是配合i18n Ally插件来进行国际化智能提示并无实际意义只对提示起作用如果不需要国际化可删除
export const $t = (key: string) => key;
export const i18n = createI18n({
locale: storageLocal.getItem("responsive-locale")?.locale ?? "zh",
fallbackLocale: "en",
messages: localesConfigs
});
export function usI18n(app: App) {
app.use(i18n);
}

View File

@ -1,21 +0,0 @@
export default {
hsLoginOut: "退出系统",
hsfullscreen: "全屏",
hsexitfullscreen: "退出全屏",
hsrefreshRoute: "刷新路由",
hslogin: "登陆",
hsadd: "新增",
hsmark: "标记/取消",
hssave: "保存",
hssearch: "搜索",
hsexpendAll: "全部展开",
hscollapseAll: "全部折叠",
hssystemSet: "打开项目配置",
hsdelete: "删除",
hsreload: "重新加载",
hscloseCurrentTab: "关闭当前标签页",
hscloseLeftTabs: "关闭左侧标签页",
hscloseRightTabs: "关闭右侧标签页",
hscloseOtherTabs: "关闭其他标签页",
hscloseAllTabs: "关闭全部标签页"
};

View File

@ -1,55 +0,0 @@
export default {
hshome: "首页",
hslogin: "登陆",
hssysManagement: "系统管理",
hsBaseinfo: "基础信息",
hsDict: "字典管理",
hseditor: "编辑器",
hserror: "错误页面",
hsfourZeroFour: "404",
hsfourZeroOne: "403",
hsFive: "500",
hscomponents: "组件",
hsvideo: "视频组件",
hsmap: "地图组件",
hsdraggable: "拖拽组件",
hssplitPane: "切割面板",
hsbutton: "按钮组件",
hscropping: "图片裁剪",
hscountTo: "数字动画",
hsselector: "选择器组件",
hsflowChart: "流程图",
hsseamless: "无缝滚动",
hscontextmenu: "右键菜单",
hsmenus: "多级菜单",
hsmenu1: "菜单1",
"hsmenu1-1": "菜单1-1",
"hsmenu1-2": "菜单1-2",
"hsmenu1-2-1": "菜单1-2-1",
"hsmenu1-2-2": "菜单1-2-2",
"hsmenu1-3": "菜单1-3",
hsmenu2: "菜单2",
permission: "权限管理",
permissionPage: "页面权限",
permissionButton: "按钮权限",
hstabs: "标签页操作",
hsguide: "引导页",
hsAble: "功能",
hsMenuTree: "菜单树结构",
hsWatermark: "水印",
hsPrint: "打印",
hsExternalPage: "外部页面",
hsPureDocument: "平台文档(内嵌)",
externalLink: "平台文档(外链)",
hsEpDocument: "Element Plus文档(内嵌)",
hsAbout: "关于",
hsResult: "结果页面",
hsSuccess: "成功页面",
hsFail: "失败页面",
hsIconSelect: "图标选择器",
hsTimeline: "时间线",
hsLineTree: "树形连接线",
hsAntTabs: "仿antdv标签页",
hsAntAnchor: "仿antdv锚点",
hsAntTreeSelect: "仿antdv树型选择器"
};

View File

@ -1,6 +1,6 @@
import "xe-utils";
import { App } from "vue";
import { i18n } from "../i18n/index";
import { i18n } from "/@/plugins/i18n";
import "font-awesome/css/font-awesome.min.css";
import {
// 核心

View File

@ -1,8 +1,10 @@
<script setup lang="ts">
import { computed } from "vue";
import { useI18n } from "vue-i18n";
import ElTreeLine from "/@/components/ReTreeLine";
import { extractPathList, deleteChildren } from "/@/utils/tree";
import { usePermissionStoreHook } from "/@/store/modules/permission";
const { t } = useI18n();
let menusData = computed(() => {
return deleteChildren(usePermissionStoreHook().menusTree);
@ -43,7 +45,7 @@ let dataProps = {
><template v-slot:default="{ node }">
<el-tree-line :node="node" :showLabelLine="true">
<template v-slot:node-label>
<span class="text-sm">{{ $t(node.data.meta.title) }}</span>
<span class="text-sm">{{ t(node.data.meta.title) }}</span>
</template>
</el-tree-line>
</template>
@ -75,7 +77,7 @@ let dataProps = {
:indent="30"
>
<template v-slot:node-label>
<span class="text-sm">{{ $t(node.data.meta.title) }}</span>
<span class="text-sm">{{ t(node.data.meta.title) }}</span>
</template>
</el-tree-line>
</template>

View File

@ -5,6 +5,7 @@ export default {
</script>
<script setup lang="ts">
import { useI18n } from "vue-i18n";
import { ref, computed } from "vue";
import type { ElTreeV2 } from "element-plus";
import { transformI18n } from "/@/plugins/i18n";
@ -12,6 +13,7 @@ import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
import { extractPathList, deleteChildren } from "/@/utils/tree";
import { usePermissionStoreHook } from "/@/store/modules/permission";
import type { TreeNode } from "element-plus/es/components/tree-v2/src/types";
const { t } = useI18n();
interface treeNode extends TreeNode {
meta: {
@ -76,7 +78,7 @@ const filterMethod = (query: string, node: treeNode) => {
:default-expanded-keys="expandedKeys"
>
<template #default="{ data }">
<span>{{ $t(data.meta.title) }}</span>
<span>{{ t(data.meta.title) }}</span>
</template>
</el-tree-v2>
</el-card>

View File

@ -1,18 +1,21 @@
<template>
<div>
<p>{{ $t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ $t("menus.hsmenu1-1") }}</p>
<p>{{ t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ t("menus.hsmenu1-1") }}</p>
<el-input v-model="input" />
</div>
</template>
<script lang="ts">
import { useI18n } from "vue-i18n";
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "Menu1-1",
setup() {
const { t } = useI18n();
return {
input: ref("")
input: ref(""),
t
};
}
});

View File

@ -1,19 +1,22 @@
<template>
<div>
<p>{{ $t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ $t("menus.hsmenu1-2") }}</p>
<p style="text-indent: 4em">{{ $t("menus.hsmenu1-2-1") }}</p>
<p>{{ t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ t("menus.hsmenu1-2") }}</p>
<p style="text-indent: 4em">{{ t("menus.hsmenu1-2-1") }}</p>
<el-input v-model="input" />
</div>
</template>
<script lang="ts">
import { useI18n } from "vue-i18n";
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "Menu1-2-1",
setup() {
const { t } = useI18n();
return {
input: ref("")
input: ref(""),
t
};
}
});

View File

@ -1,19 +1,22 @@
<template>
<div>
<p>{{ $t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ $t("menus.hsmenu1-2") }}</p>
<p style="text-indent: 4em">{{ $t("menus.hsmenu1-2-2") }}</p>
<p>{{ t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ t("menus.hsmenu1-2") }}</p>
<p style="text-indent: 4em">{{ t("menus.hsmenu1-2-2") }}</p>
<el-input v-model="input" />
</div>
</template>
<script lang="ts">
import { useI18n } from "vue-i18n";
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "Menu1-2-2",
setup() {
const { t } = useI18n();
return {
input: ref("")
input: ref(""),
t
};
}
});

View File

@ -1,18 +1,21 @@
<template>
<div>
<p>{{ $t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ $t("menus.hsmenu1-3") }}</p>
<p>{{ t("menus.hsmenu1") }}</p>
<p style="text-indent: 2em">{{ t("menus.hsmenu1-3") }}</p>
<el-input v-model="input" />
</div>
</template>
<script lang="ts">
import { useI18n } from "vue-i18n";
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "Menu1-3",
setup() {
const { t } = useI18n();
return {
input: ref("")
input: ref(""),
t
};
}
});

View File

@ -1,17 +1,20 @@
<template>
<div>
<p>{{ $t("menus.hsmenu2") }}</p>
<p>{{ t("menus.hsmenu2") }}</p>
<el-input v-model="input" />
</div>
</template>
<script lang="ts">
import { useI18n } from "vue-i18n";
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "Menu2",
setup() {
const { t } = useI18n();
return {
input: ref("")
input: ref(""),
t
};
}
});

View File

@ -1,5 +1,6 @@
<script setup lang="ts">
import { reactive } from "vue";
import { useI18n } from "vue-i18n";
import { VxeTableEvents } from "vxe-table";
import { templateRef } from "@vueuse/core";
@ -19,6 +20,8 @@ const emit = defineEmits<{
(e: "handleClose"): void;
}>();
const { t } = useI18n();
const xTable = templateRef<any>("xTable", null);
const configData = reactive({
@ -140,7 +143,7 @@ const checkboxChangeEvent: VxeTableEvents.CheckboxChange = ({ records }) => {
<span class="select-count"
>已选中{{ configData.selectRecords.length }}</span
>
<vxe-button size="small">{{ $t("buttons.hsdelete") }}</vxe-button>
<vxe-button size="small">{{ t("buttons.hsdelete") }}</vxe-button>
</span>
</template>
</vxe-pager>

View File

@ -7,6 +7,7 @@ export default {
<script setup lang="ts">
import XEUtils from "xe-utils";
import Config from "./config.vue";
import { useI18n } from "vue-i18n";
import { cloneDeep } from "lodash-unified";
import { templateRef } from "@vueuse/core";
import { reactive, ref, unref, nextTick } from "vue";
@ -22,6 +23,8 @@ type onEditNRow = {
model: string;
};
const { t } = useI18n();
const dictData = reactive({
submitLoading: false,
showEdit: false,
@ -209,7 +212,7 @@ function handleClose() {
<template #buttons>
<vxe-input
v-model="dictData.filterName"
:placeholder="$t('buttons.hssearch')"
:placeholder="t('buttons.hssearch')"
@keyup="searchEvent"
></vxe-input>
</template>
@ -218,19 +221,19 @@ function handleClose() {
icon="fa fa-plus-square-o"
status="primary"
@click="onAdd"
>{{ $t("buttons.hsadd") }}</vxe-button
>{{ t("buttons.hsadd") }}</vxe-button
>
<vxe-button
icon="fa fa-folder-open-o"
status="primary"
@click="$refs.xTree.setAllTreeExpand(true)"
>{{ $t("buttons.hsexpendAll") }}</vxe-button
>{{ t("buttons.hsexpendAll") }}</vxe-button
>
<vxe-button
icon="fa fa-folder-o"
status="primary"
@click="$refs.xTree.clearTreeExpand()"
>{{ $t("buttons.hscollapseAll") }}</vxe-button
>{{ t("buttons.hscollapseAll") }}</vxe-button
>
</template>
</vxe-toolbar>

View File

@ -16,9 +16,7 @@ const pathResolve = (dir: string): string => {
// 设置别名
const alias: Record<string, string> = {
"/@": pathResolve("src"),
"@build": pathResolve("build"),
//解决开发环境下的警告
"vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
"@build": pathResolve("build")
};
const { dependencies, devDependencies, name, version } = pkg;