From d7c556c3b0532d5a371d17e270fec257cb4b882a Mon Sep 17 00:00:00 2001 From: chudong <1738613989@qq.com> Date: Fri, 9 May 2025 15:11:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=88=9D=E5=A7=8B=E5=8C=96=E3=80=91?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=B7=A5=E7=A8=8B=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes backend/.DS_Store | Bin 8196 -> 8196 bytes frontend/.DS_Store | Bin 6148 -> 10244 bytes frontend/README.md | 169 + frontend/apps/.DS_Store | Bin 0 -> 10244 bytes frontend/apps/allin-ssl/.DS_Store | Bin 0 -> 14340 bytes frontend/apps/allin-ssl/README.md | 117 + .../allin-ssl/cache/translation_cache.json | 8280 +++++++++++++++++ frontend/apps/allin-ssl/eslint.config.js | 22 + frontend/{ => apps/allin-ssl}/index.html | 5 +- frontend/apps/allin-ssl/mardown/api.md | 28 + frontend/apps/allin-ssl/mardown/base.md | 273 + frontend/apps/allin-ssl/mardown/flowChart.md | 70 + frontend/apps/allin-ssl/mardown/view.md | 95 + frontend/apps/allin-ssl/mock/access.ts | 96 + frontend/apps/allin-ssl/mock/cert.ts | 70 + frontend/apps/allin-ssl/mock/index.ts | 9 + frontend/apps/allin-ssl/mock/login.ts | 14 + frontend/apps/allin-ssl/mock/overview.ts | 58 + frontend/apps/allin-ssl/mock/setting.ts | 87 + frontend/apps/allin-ssl/mock/siteMonitor.ts | 68 + frontend/apps/allin-ssl/mock/template.ts | 24 + frontend/apps/allin-ssl/mock/userInfo.ts | 26 + frontend/apps/allin-ssl/mock/workflow.ts | 90 + frontend/apps/allin-ssl/package.json | 87 + frontend/apps/allin-ssl/postcss.config.js | 6 + frontend/apps/allin-ssl/prettier.config.js | 3 + frontend/apps/allin-ssl/public/.DS_Store | Bin 0 -> 6148 bytes .../{ => apps/allin-ssl/public}/favicon.ico | Bin .../allin-ssl/public}/static/.DS_Store | Bin 6148 -> 6148 bytes .../public}/static/icons/letsencrypt-icon.svg | 0 .../public}/static/icons/positive-ico.png | Bin .../public}/static/icons/sectigo-ico.png | Bin .../public}/static/icons/ssltrus-ico.png | Bin .../allin-ssl/public}/static/images/.DS_Store | Bin .../public}/static/images/container.png | Bin .../public}/static/images/login-bg-dark.svg | 0 .../public}/static/images/login-bg.svg | 0 .../public}/static/images/login-display.svg | 0 .../allin-ssl/public}/static/images/logo.png | Bin .../allin-ssl/public}/static/images/site.png | Bin .../apps/allin-ssl/script/create-alias.sh | 145 + .../apps/allin-ssl/script/create-roles.sh | 891 ++ frontend/apps/allin-ssl/src/.DS_Store | Bin 0 -> 8196 bytes frontend/apps/allin-ssl/src/App.tsx | 21 + frontend/apps/allin-ssl/src/api/access.ts | 51 + frontend/apps/allin-ssl/src/api/cert.ts | 56 + frontend/apps/allin-ssl/src/api/index.ts | 86 + frontend/apps/allin-ssl/src/api/monitor.ts | 50 + frontend/apps/allin-ssl/src/api/public.ts | 38 + frontend/apps/allin-ssl/src/api/setting.ts | 69 + frontend/apps/allin-ssl/src/api/workflow.ts | 90 + frontend/apps/allin-ssl/src/assets/.DS_Store | Bin 0 -> 6148 bytes .../apps/allin-ssl/src/assets/icons/.DS_Store | Bin 0 -> 6148 bytes .../allin-ssl/src/assets/icons/svg/.DS_Store | Bin 0 -> 10244 bytes .../allin-ssl/src/assets/icons/svg/close.svg | 1 + .../src/assets/icons/svg/flow/apply.svg | 1 + .../src/assets/icons/svg/flow/branch.svg | 1 + .../src/assets/icons/svg/flow/deploy.svg | 1 + .../src/assets/icons/svg/flow/error.svg | 1 + .../src/assets/icons/svg/flow/notify.svg | 1 + .../src/assets/icons/svg/flow/success.svg | 1 + .../src/assets/icons/svg/flow/upload.svg | 1 + .../src/assets/icons/svg/notify/dingtalk.svg | 1 + .../src/assets/icons/svg/notify/feishu.svg | 1 + .../src/assets/icons/svg/notify/mail.svg | 1 + .../src/assets/icons/svg/notify/webhook.svg | 1 + .../src/assets/icons/svg/notify/wecom.svg | 1 + .../allin-ssl/src/assets/icons/svg/plus.svg | 1 + .../src/assets/icons/svg/resources/.DS_Store | Bin 0 -> 6148 bytes .../src/assets/icons/svg/resources/1panel.svg | 1 + .../src/assets/icons/svg/resources/aliyun.svg | 1 + .../assets/icons/svg/resources/btpanel.svg | 1 + .../src/assets/icons/svg/resources/ssh.svg | 1 + .../icons/svg/resources/tencentcloud.svg | 1 + .../src/assets/icons/svg/subtract.svg | 1 + .../allin-ssl/src/assets/icons/svg/tips.svg | 1 + frontend/apps/allin-ssl/src/assets/vue.svg | 1 + .../apps/allin-ssl/src/components/.DS_Store | Bin 0 -> 8196 bytes .../src/components/baseComponent/index.tsx | 60 + .../components/dnsProviderSelect/index.tsx | 300 + .../src/components/flowChart/.DS_Store | Bin 0 -> 10244 bytes .../components/flowChart/components/.DS_Store | Bin 0 -> 6148 bytes .../components/base/baseNode/index.module.css | 182 + .../components/base/baseNode/index.tsx | 230 + .../base/branchNode/index.module.css | 69 + .../components/base/branchNode/index.tsx | 113 + .../components/base/conditionNode/index.tsx | 111 + .../flowChart/components/base/endNode.tsx | 11 + .../components/base/errorNode/index.tsx | 14 + .../components/other/addNode/index.module.css | 129 + .../components/other/addNode/index.tsx | 93 + .../flowChart/components/other/drawer.tsx | 82 + .../flowChart/components/render/nodeWrap.tsx | 80 + .../flowChart/components/task/.DS_Store | Bin 0 -> 6148 bytes .../components/task/applyNode/drawer.tsx | 103 + .../components/task/applyNode/index.tsx | 61 + .../components/task/applyNode/verify.tsx | 62 + .../components/task/deployNode/drawer.tsx | 293 + .../task/deployNode/index.module.css | 70 + .../components/task/deployNode/index.tsx | 68 + .../components/task/deployNode/verify.tsx | 72 + .../components/task/notifyNode/drawer.tsx | 97 + .../components/task/notifyNode/index.tsx | 61 + .../components/task/notifyNode/verify.tsx | 46 + .../components/task/startNode/drawer.tsx | 206 + .../components/task/startNode/index.tsx | 68 + .../components/task/startNode/verify.tsx | 11 + .../components/task/uploadNode/drawer.tsx | 77 + .../components/task/uploadNode/index.tsx | 54 + .../components/task/uploadNode/verify.tsx | 30 + .../src/components/flowChart/index.module.css | 49 + .../src/components/flowChart/index.tsx | 102 + .../src/components/flowChart/lib/alias.tsx | 14 + .../src/components/flowChart/lib/config.tsx | 266 + .../src/components/flowChart/lib/verify.tsx | 411 + .../src/components/flowChart/mock/index.ts | 77 + .../src/components/flowChart/types.d.ts | 316 + .../components/flowChart/useController.tsx | 282 + .../src/components/flowChart/useStore.tsx | 579 ++ .../src/components/logViewer/index.tsx | 151 + .../components/notifyProviderSelect/index.tsx | 178 + .../src/components/svgIcon/index.tsx | 40 + .../src/components/typeIcon/index.tsx | 110 + frontend/apps/allin-ssl/src/config/i18n.ts | 53 + frontend/apps/allin-ssl/src/config/route.ts | 16 + frontend/apps/allin-ssl/src/locales/index.ts | 18 + .../allin-ssl/src/locales/model/arDZ.json | 490 + .../allin-ssl/src/locales/model/enUS.json | 490 + .../allin-ssl/src/locales/model/esAR.json | 490 + .../allin-ssl/src/locales/model/frFR.json | 490 + .../allin-ssl/src/locales/model/jaJP.json | 490 + .../allin-ssl/src/locales/model/koKR.json | 490 + .../allin-ssl/src/locales/model/ptBR.json | 490 + .../allin-ssl/src/locales/model/ruRU.json | 490 + .../allin-ssl/src/locales/model/zhCN.json | 490 + .../allin-ssl/src/locales/model/zhTW.json | 489 + frontend/apps/allin-ssl/src/main.ts | 24 + frontend/apps/allin-ssl/src/router/each.tsx | 31 + frontend/apps/allin-ssl/src/router/import.tsx | 17 + frontend/apps/allin-ssl/src/router/index.tsx | 17 + frontend/apps/allin-ssl/src/styles/icon.css | 97 + .../allin-ssl/src/styles/naive-override.css | 23 + frontend/apps/allin-ssl/src/styles/reset.css | 72 + .../apps/allin-ssl/src/styles/transition.css | 91 + .../apps/allin-ssl/src/styles/variable.css | 10 + frontend/apps/allin-ssl/src/types/access.d.ts | 110 + frontend/apps/allin-ssl/src/types/cert.d.ts | 74 + frontend/apps/allin-ssl/src/types/form.ts | 5 + frontend/apps/allin-ssl/src/types/login.d.ts | 42 + .../apps/allin-ssl/src/types/monitor.d.ts | 55 + frontend/apps/allin-ssl/src/types/public.d.ts | 78 + .../apps/allin-ssl/src/types/setting.d.ts | 108 + .../apps/allin-ssl/src/types/workflow.d.ts | 114 + .../apps/allin-ssl/src/views/404/index.tsx | 67 + .../components/apiManageForm.tsx | 20 + .../src/views/authApiManage/index.tsx | 74 + .../src/views/authApiManage/useController.tsx | 518 ++ .../src/views/authApiManage/useStore.tsx | 146 + .../children/workflowView/index.tsx | 11 + .../children/workflowView/useController.tsx | 38 + .../children/workflowView/useStore.tsx | 117 + .../components/historyLogsModal.tsx | 50 + .../autoDeploy/components/historyModal.tsx | 40 + .../autoDeploy/components/workflowModal.tsx | 55 + .../allin-ssl/src/views/autoDeploy/index.tsx | 99 + .../src/views/autoDeploy/useController.tsx | 477 + .../src/views/autoDeploy/useStore.tsx | 163 + .../certApply/components/freeProductCard.tsx | 142 + .../certApply/components/freeProductModal.tsx | 12 + .../certApply/components/productCard.tsx | 173 + .../certApply/components/sslTypeInfo.tsx | 106 + .../allin-ssl/src/views/certApply/index.tsx | 98 + .../src/views/certApply/useController.tsx | 200 + .../src/views/certApply/useStore.tsx | 355 + .../certManage/components/uploadCertForm.tsx | 12 + .../allin-ssl/src/views/certManage/index.tsx | 76 + .../src/views/certManage/useController.tsx | 228 + .../src/views/certManage/useStore.tsx | 123 + .../allin-ssl/src/views/home/index.module.css | 159 + .../apps/allin-ssl/src/views/home/index.tsx | 230 + .../src/views/home/useController.tsx | 151 + .../allin-ssl/src/views/home/useStore.tsx | 85 + .../src/views/layout/index.module.css | 77 + .../apps/allin-ssl/src/views/layout/index.tsx | 86 + .../allin-ssl/src/views/layout/types.d.ts | 146 + .../src/views/layout/useController.tsx | 183 + .../allin-ssl/src/views/layout/useStore.tsx | 173 + .../src/views/login/index.module.css | 312 + .../apps/allin-ssl/src/views/login/index.tsx | 136 + .../src/views/login/useController.tsx | 141 + .../allin-ssl/src/views/login/useStore.tsx | 152 + .../views/monitor/components/monitorForm.tsx | 24 + .../allin-ssl/src/views/monitor/index.tsx | 78 + .../src/views/monitor/useController.tsx | 360 + .../allin-ssl/src/views/monitor/useStore.tsx | 179 + .../settings/components/aboutSettings.tsx | 77 + .../settings/components/emailChannelForm.tsx | 106 + .../settings/components/generalSettings.tsx | 33 + .../components/notificationSettings.tsx | 156 + .../allin-ssl/src/views/settings/index.tsx | 86 + .../src/views/settings/useController.tsx | 431 + .../allin-ssl/src/views/settings/useStore.tsx | 244 + frontend/apps/allin-ssl/stylelint.config.js | 3 + frontend/apps/allin-ssl/tailwind.config.js | 8 + frontend/apps/allin-ssl/tsconfig.app.json | 43 + frontend/apps/allin-ssl/tsconfig.json | 7 + frontend/apps/allin-ssl/tsconfig.node.json | 4 + .../types/.eslintrc-auto-import.json | 319 + .../apps/allin-ssl/types/auto-imports.d.ts | 314 + frontend/apps/allin-ssl/types/components.d.ts | 58 + frontend/apps/allin-ssl/types/eslint.d.ts | 9 + frontend/apps/allin-ssl/types/shims-vue.d.ts | 11 + frontend/apps/allin-ssl/types/vite-env.d.ts | 6 + frontend/apps/allin-ssl/types/windows.d.ts | 21 + frontend/apps/allin-ssl/vite.config.ts | 179 + frontend/environment/.DS_Store | Bin 0 -> 6148 bytes frontend/environment/eslint/.DS_Store | Bin 0 -> 6148 bytes frontend/environment/eslint/eslint.config.js | 33 + frontend/environment/eslint/package.json | 32 + .../environment/eslint/prettier.config.js | 3 + frontend/environment/eslint/src/index.js | 33 + frontend/environment/eslint/src/next.js | 48 + frontend/environment/eslint/src/vitest.js | 16 + frontend/environment/eslint/src/vue.js | 26 + frontend/environment/eslint/tsconfig.json | 4 + frontend/environment/eslint/types.d.ts | 7 + frontend/environment/prettier/index.js | 11 + frontend/environment/prettier/package.json | 17 + .../environment/prettier/prettier.config.js | 3 + frontend/environment/prettier/tsconfig.json | 4 + .../environment/stylelint/eslint.config.js | 6 + frontend/environment/stylelint/index.js | 192 + frontend/environment/stylelint/package.json | 23 + .../environment/stylelint/prettier.config.js | 3 + frontend/environment/stylelint/tsconfig.json | 4 + frontend/environment/typescript/base.json | 20 + frontend/environment/typescript/nextjs.json | 12 + frontend/environment/typescript/node.json | 20 + frontend/environment/typescript/package.json | 15 + .../environment/typescript/react-library.json | 7 + frontend/environment/typescript/types.d.ts | 0 frontend/environment/typescript/vue.json | 15 + frontend/eslint.config.js | 22 + frontend/global.d.ts | 4 + frontend/package.json | 37 + frontend/packages/.DS_Store | Bin 0 -> 6148 bytes frontend/packages/hooks/.DS_Store | Bin 0 -> 8196 bytes frontend/packages/hooks/docs/useAxios.md | 284 + frontend/packages/hooks/docs/useSocket.md | 332 + frontend/packages/hooks/eslint.config.js | 21 + frontend/packages/hooks/package.json | 40 + frontend/packages/hooks/prettier.config.js | 3 + frontend/packages/hooks/src/axios/index.ts | 290 + .../hooks/src/axios/model/axios-cancel.ts | 45 + .../hooks/src/axios/model/axios-options.ts | 35 + .../hooks/src/axios/model/error-middle.ts | 7 + .../packages/hooks/src/axios/model/index.ts | 188 + .../packages/hooks/src/axios/model/other.ts | 36 + .../hooks/src/axios/model/request-middle.ts | 22 + .../hooks/src/axios/model/response-middle.ts | 40 + frontend/packages/hooks/src/error/index.ts | 310 + frontend/packages/hooks/src/error/type.d.ts | 89 + .../packages/hooks/src/negotiate/index.ts | 0 frontend/packages/hooks/src/retry/index.ts | 52 + frontend/packages/hooks/src/socket/index.ts | 143 + .../packages/hooks/src/task-queue/index.tsx | 157 + frontend/packages/hooks/test/.DS_Store | Bin 0 -> 6148 bytes frontend/packages/hooks/test/axios.spec.js | 429 + frontend/packages/hooks/test/cookie.spec.js | 135 + .../packages/hooks/test/debounce-fn.spec.js | 237 + .../hooks/test/event-listener.spec.js | 108 + .../packages/hooks/test/local-storage.spec.js | 81 + .../hooks/test/resize-observer.spec.js | 212 + frontend/packages/hooks/test/retry.spec.js | 139 + .../hooks/test/session-storage.spec.js | 295 + frontend/packages/hooks/test/setup.js | 36 + frontend/packages/hooks/test/socket.spec.js | 305 + frontend/packages/hooks/test/storage.spec.js | 88 + .../packages/hooks/test/task-queue.spec.js | 276 + .../packages/hooks/test/throttle-fn.spec.js | 225 + frontend/packages/hooks/test/title.spec.js | 57 + frontend/packages/hooks/tsconfig.json | 9 + frontend/packages/hooks/types.d.ts | 3 + frontend/packages/hooks/vite.config.ts | 0 frontend/packages/i18n/eslint.config.js | 16 + frontend/packages/i18n/package.json | 44 + frontend/packages/i18n/prettier.config.js | 3 + frontend/packages/i18n/src/index.ts | 130 + frontend/packages/i18n/src/translation.ts | 12 + frontend/packages/i18n/tsconfig.json | 11 + frontend/packages/i18n/vite.config.ts | 38 + ....timestamp-1745981224069-01dcfd879848f.mjs | 43 + frontend/packages/naive-ui/README.md | 957 ++ .../packages/naive-ui/docs/circleProgress.md | 130 + frontend/packages/naive-ui/docs/useForm.md | 472 + frontend/packages/naive-ui/docs/useTable.md | 256 + frontend/packages/naive-ui/eslint.config.js | 21 + frontend/packages/naive-ui/index.html | 12 + frontend/packages/naive-ui/package.json | 51 + frontend/packages/naive-ui/postcss.config.js | 6 + frontend/packages/naive-ui/prettier.config.js | 2 + frontend/packages/naive-ui/src/App.vue | 15 + .../src/components/circleProgress.tsx | 711 ++ .../src/components/customProvider.tsx | 55 + .../src/components/darkModeSwitch.tsx | 39 + .../gradient-progress/circleProgress.tsx | 244 + .../gradient-progress/horizontalProgress.tsx | 86 + .../gradient-progress/index.module.css | 102 + .../naive-ui/src/components/localesTips.tsx | 44 + .../naive-ui/src/components/themeManage.tsx | 38 + .../naive-ui/src/components/themeMode.tsx | 20 + .../naive-ui/src/components/themeTips.tsx | 46 + .../naive-ui/src/examples/MessageExample.tsx | 124 + .../packages/naive-ui/src/hooks/index.tsx | 43 + .../packages/naive-ui/src/hooks/useBatch.tsx | 147 + .../packages/naive-ui/src/hooks/useDialog.tsx | 164 + .../packages/naive-ui/src/hooks/useForm.tsx | 809 ++ .../naive-ui/src/hooks/useFullScreen.tsx | 203 + .../naive-ui/src/hooks/useLoadingMask.tsx | 222 + .../naive-ui/src/hooks/useMessage.tsx | 55 + .../packages/naive-ui/src/hooks/useModal.tsx | 470 + .../packages/naive-ui/src/hooks/useTable.tsx | 286 + .../packages/naive-ui/src/hooks/useTabs.tsx | 86 + frontend/packages/naive-ui/src/i18n/index.tsx | 153 + frontend/packages/naive-ui/src/i18n/tools.tsx | 4 + .../naive-ui/src/locals/translation.ts | 360 + frontend/packages/naive-ui/src/main.ts | 10 + .../packages/naive-ui/src/styles/index.css | 34 + .../naive-ui/src/theme/bak/baota/index.tsx | 71 + .../naive-ui/src/theme/bak/baota/style.css | 51 + .../src/theme/bak/dark-gold/index.tsx | 20 + .../src/theme/bak/dark-gold/style.css | 4 + .../packages/naive-ui/src/theme/index.tsx | 229 + .../src/theme/model/default/index.tsx | 55 + .../src/theme/model/default/style.css | 53 + .../naive-ui/src/theme/model/index.tsx | 42 + .../naive-ui/src/theme/model/ssl/index.tsx | 52 + .../naive-ui/src/theme/model/ssl/style.css | 69 + .../packages/naive-ui/src/theme/types.d.ts | 36 + .../packages/naive-ui/src/types/dialog.d.ts | 17 + frontend/packages/naive-ui/src/types/dnd.d.ts | 56 + .../packages/naive-ui/src/types/form.d.ts | 189 + .../naive-ui/src/types/loadingMask.d.ts | 47 + .../packages/naive-ui/src/types/message.d.ts | 12 + .../packages/naive-ui/src/types/table.d.ts | 71 + frontend/packages/naive-ui/src/views/Demo.tsx | 52 + .../naive-ui/src/views/tabs/FormDemo.tsx | 232 + .../naive-ui/src/views/tabs/TableDemo.tsx | 87 + frontend/packages/naive-ui/tailwind.config.js | 14 + frontend/packages/naive-ui/tsconfig.json | 30 + frontend/packages/naive-ui/tsconfig.node.json | 10 + frontend/packages/naive-ui/types/env.d.ts | 59 + frontend/packages/naive-ui/types/global.d.ts | 4 + .../packages/naive-ui/types/shims-tsx.d.ts | 199 + .../packages/naive-ui/types/vite-env.d.ts | 31 + frontend/packages/naive-ui/vite.config.ts | 17 + frontend/packages/pinia/eslint.config.js | 16 + frontend/packages/pinia/package.json | 51 + frontend/packages/pinia/prettier.config.js | 3 + frontend/packages/pinia/src/index.ts | 10 + frontend/packages/pinia/src/utils.ts | 15 + frontend/packages/pinia/tsconfig.json | 11 + frontend/packages/pinia/vite.config.ts | 37 + frontend/packages/router/eslint.config.js | 16 + frontend/packages/router/package.json | 60 + frontend/packages/router/prettier.config.js | 3 + frontend/packages/router/src/each.ts | 34 + frontend/packages/router/src/import.ts | 145 + frontend/packages/router/src/index.ts | 40 + frontend/packages/router/tsconfig.json | 11 + frontend/packages/router/vite.config.ts | 38 + frontend/packages/utils/docs/browser.md | 148 + frontend/packages/utils/docs/business.md | 219 + frontend/packages/utils/docs/data.md | 274 + frontend/packages/utils/docs/date.md | 198 + frontend/packages/utils/docs/encipher.md | 132 + frontend/packages/utils/docs/random.md | 135 + frontend/packages/utils/docs/string.md | 139 + frontend/packages/utils/docs/type.md | 247 + frontend/packages/utils/eslint.config.js | 16 + frontend/packages/utils/package.json | 130 + frontend/packages/utils/prettier.config.js | 3 + frontend/packages/utils/src/browser.ts | 585 ++ frontend/packages/utils/src/business.ts | 314 + frontend/packages/utils/src/data.ts | 300 + frontend/packages/utils/src/date.ts | 191 + frontend/packages/utils/src/encipher.ts | 86 + frontend/packages/utils/src/random.ts | 99 + frontend/packages/utils/src/string.ts | 113 + frontend/packages/utils/src/type.ts | 108 + frontend/packages/utils/test/browser.spec.ts | 382 + frontend/packages/utils/test/business.spec.ts | 169 + frontend/packages/utils/test/data.spec.ts | 121 + frontend/packages/utils/test/date.spec.ts | 123 + frontend/packages/utils/test/encipher.spec.ts | 85 + frontend/packages/utils/test/random.spec.ts | 106 + frontend/packages/utils/test/string.spec.ts | 75 + frontend/packages/utils/test/type.spec.ts | 102 + frontend/packages/utils/tsconfig.json | 14 + frontend/packages/utils/types.d.ts | 0 frontend/packages/utils/vite.config.ts | 45 + frontend/packages/vite/index.ts | 0 frontend/packages/vite/package.json | 36 + frontend/packages/vite/plugin/i18n.cjs | 607 ++ frontend/packages/vite/plugin/index.ts | 27 + frontend/packages/vite/plugin/readme.md | 41 + frontend/packages/vite/plugin/tsconfig.json | 17 + frontend/packages/vite/prettier.config.cjs | 1 + frontend/packages/vite/test.json | 1 + frontend/plugin/.DS_Store | Bin 0 -> 6148 bytes frontend/plugin/plugin-i18n/.DS_Store | Bin 0 -> 6148 bytes frontend/plugin/plugin-i18n/README.md | 182 + .../plugin-i18n/__tests__/adapter.test.js | 69 + .../plugin-i18n/__tests__/cache.test.js | 120 + .../plugin/plugin-i18n/__tests__/log.test.js | 133 + .../__tests__/utils.extend.test.js | 100 + .../plugin-i18n/__tests__/utils.test.js | 62 + .../plugin-i18n/__tests__/zhipuAI.test.js | 112 + frontend/plugin/plugin-i18n/eslint.config.js | 22 + frontend/plugin/plugin-i18n/index.md | 303 + frontend/plugin/plugin-i18n/package.json | 52 + .../plugin/plugin-i18n/prettier.config.js | 3 + frontend/plugin/plugin-i18n/src/.DS_Store | Bin 0 -> 8196 bytes .../plugin/plugin-i18n/src/cache/index.js | 131 + .../src/cleanUp/unusedTranslationDetector.js | 207 + .../plugin/plugin-i18n/src/cli/cleanup.js | 84 + .../plugin/plugin-i18n/src/config/config.js | 24 + .../plugin-i18n/src/fileOperation/index.js | 128 + frontend/plugin/plugin-i18n/src/index.js | 416 + .../plugin-i18n/src/logManagement/index.js | 95 + .../plugin-i18n/src/stateManagement/index.js | 317 + .../plugin-i18n/src/translation/.DS_Store | Bin 0 -> 6148 bytes .../src/translation/adapter/aiBatchAdapter.js | 82 + .../src/translation/adapter/index.js | 40 + .../adapter/traditionalApiAdapter.js | 59 + .../src/translation/ai/deepseekAI.js | 120 + .../src/translation/ai/qianwenAI.js | 145 + .../plugin-i18n/src/translation/ai/zhipuAI.js | 145 + .../src/translation/traditional/api1.js | 85 + .../plugin/plugin-i18n/src/utils/index.js | 196 + frontend/plugin/project-ftp-sync/README.md | 46 + frontend/plugin/project-ftp-sync/package.json | 26 + frontend/plugin/project-ftp-sync/src/index.ts | 69 + .../plugin/project-ftp-sync/tsconfig.json | 15 + frontend/plugin/project-sync-git/.DS_Store | Bin 0 -> 6148 bytes frontend/plugin/project-sync-git/README.md | 78 + frontend/plugin/project-sync-git/package.json | 38 + frontend/plugin/project-sync-git/src/index.ts | 511 + .../plugin/project-sync-git/tsconfig.json | 15 + frontend/pnpm-workspace.yaml | 5 + frontend/scripts/clear.sh | 7 + frontend/scripts/cursor_backup.sh | 620 ++ frontend/scripts/extensions.json | 16 + frontend/scripts/settings.json | 65 + frontend/static/css/style-CZclU6lr.css | 1 - frontend/static/js/Badge-57KvBbqQ.js | 1 - frontend/static/js/Flow-CnaibaV1.js | 1 - frontend/static/js/LockOutlined-iSKju6Tl.js | 1 - frontend/static/js/Search-DJIWU9Ld.js | 1 - frontend/static/js/Tabs-CdsQWmeW.js | 1 - frontend/static/js/access-DymwmDzp.js | 1 - frontend/static/js/arDZ-CsIhMqQg.js | 1 - frontend/static/js/business-DN2MKo6G.js | 1 - frontend/static/js/drawer-93Cq-d5G.js | 1 - frontend/static/js/drawer-BfEYWoM8.js | 1 - frontend/static/js/drawer-BwPAjoJb.js | 1 - frontend/static/js/drawer-bIO2cNN4.js | 1 - frontend/static/js/drawer-p91tUqAD.js | 1 - frontend/static/js/esAR-DY0vZcSM.js | 1 - frontend/static/js/frFR-B3qQNTWO.js | 1 - frontend/static/js/index--t_mPIpF.js | 1 - frontend/static/js/index-4SW2EnHr.js | 1 - frontend/static/js/index-B-XgWU_W.js | 1 - frontend/static/js/index-B8mQ18bn.js | 1 - frontend/static/js/index-BIR8cZMZ.js | 1 - frontend/static/js/index-BLjn2Hdc.js | 1 - frontend/static/js/index-BMspkLA9.js | 1 - frontend/static/js/index-B_NFc6fw.js | 1 - frontend/static/js/index-Bd79k5V4.js | 1 - frontend/static/js/index-BoVX1frA.js | 1 - frontend/static/js/index-C6fPintp.js | 1 - frontend/static/js/index-CCPBIbeA.js | 1 - frontend/static/js/index-CIAHIxw4.js | 1 - frontend/static/js/index-CQ0Tngw6.js | 1 - frontend/static/js/index-CUcVHxXb.js | 1 - frontend/static/js/index-CXkWPBsK.js | 1 - frontend/static/js/index-CZ9B2uw9.js | 1 - frontend/static/js/index-Cc_zz0Ev.js | 1 - frontend/static/js/index-DDYEpJja.js | 1 - frontend/static/js/index-DRpnuR2c.js | 1 - frontend/static/js/index-DZYxuXga.js | 1 - frontend/static/js/index-Di21KYHW.js | 1 - frontend/static/js/index-d3KFnGUL.js | 1 - frontend/static/js/index-fMAIkr0o.js | 1 - frontend/static/js/index-yiIyVSv0.js | 1 - frontend/static/js/jaJP-B1A-xRRV.js | 1 - frontend/static/js/koKR-qNgLjQA_.js | 1 - frontend/static/js/main-D8Z-8iPZ.js | 51 - frontend/static/js/md5-DpItHaRH.js | 1 - frontend/static/js/ptBR-fFx2sYS7.js | 1 - frontend/static/js/public-Lq7KwJBj.js | 1 - frontend/static/js/ruRU-BsQBQBEH.js | 1 - frontend/static/js/setting-BuW_WiRV.js | 1 - frontend/static/js/test-DbYqM2ZR.js | 1 - frontend/static/js/text-BWsiCV4g.js | 1 - frontend/static/js/useStore-CEiyUWBM.js | 1 - frontend/static/js/useStore-CFVnCatL.js | 1 - frontend/static/js/verify-C4A8sgpW.js | 1 - frontend/static/js/verify-CW6Fb60h.js | 1 - frontend/static/js/verify-D33tYN8b.js | 1 - frontend/static/js/verify-DINczDQF.js | 1 - frontend/static/js/verify-DT_aKhVd.js | 1 - frontend/static/js/zhTW-fHZ0z-QM.js | 1 - frontend/tsconfig.json | 26 + frontend/turbo.json | 24 + frontend/types/authAPIManage.d.ts | 0 frontend/types/autoDeploy.d.ts | 0 frontend/types/certApply.d.ts | 0 frontend/types/certManage.d.ts | 0 frontend/types/home.d.ts | 0 frontend/types/monitor.d.ts | 0 frontend/types/settings.d.ts | 0 frontend/vitest.config.ts | 12 + 524 files changed, 55595 insertions(+), 112 deletions(-) create mode 100644 frontend/README.md create mode 100644 frontend/apps/.DS_Store create mode 100644 frontend/apps/allin-ssl/.DS_Store create mode 100644 frontend/apps/allin-ssl/README.md create mode 100644 frontend/apps/allin-ssl/cache/translation_cache.json create mode 100644 frontend/apps/allin-ssl/eslint.config.js rename frontend/{ => apps/allin-ssl}/index.html (53%) create mode 100644 frontend/apps/allin-ssl/mardown/api.md create mode 100644 frontend/apps/allin-ssl/mardown/base.md create mode 100644 frontend/apps/allin-ssl/mardown/flowChart.md create mode 100644 frontend/apps/allin-ssl/mardown/view.md create mode 100644 frontend/apps/allin-ssl/mock/access.ts create mode 100644 frontend/apps/allin-ssl/mock/cert.ts create mode 100644 frontend/apps/allin-ssl/mock/index.ts create mode 100644 frontend/apps/allin-ssl/mock/login.ts create mode 100644 frontend/apps/allin-ssl/mock/overview.ts create mode 100644 frontend/apps/allin-ssl/mock/setting.ts create mode 100644 frontend/apps/allin-ssl/mock/siteMonitor.ts create mode 100644 frontend/apps/allin-ssl/mock/template.ts create mode 100644 frontend/apps/allin-ssl/mock/userInfo.ts create mode 100644 frontend/apps/allin-ssl/mock/workflow.ts create mode 100644 frontend/apps/allin-ssl/package.json create mode 100644 frontend/apps/allin-ssl/postcss.config.js create mode 100644 frontend/apps/allin-ssl/prettier.config.js create mode 100644 frontend/apps/allin-ssl/public/.DS_Store rename frontend/{ => apps/allin-ssl/public}/favicon.ico (100%) rename frontend/{ => apps/allin-ssl/public}/static/.DS_Store (81%) rename frontend/{ => apps/allin-ssl/public}/static/icons/letsencrypt-icon.svg (100%) rename frontend/{ => apps/allin-ssl/public}/static/icons/positive-ico.png (100%) rename frontend/{ => apps/allin-ssl/public}/static/icons/sectigo-ico.png (100%) rename frontend/{ => apps/allin-ssl/public}/static/icons/ssltrus-ico.png (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/.DS_Store (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/container.png (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/login-bg-dark.svg (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/login-bg.svg (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/login-display.svg (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/logo.png (100%) rename frontend/{ => apps/allin-ssl/public}/static/images/site.png (100%) create mode 100644 frontend/apps/allin-ssl/script/create-alias.sh create mode 100644 frontend/apps/allin-ssl/script/create-roles.sh create mode 100644 frontend/apps/allin-ssl/src/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/App.tsx create mode 100644 frontend/apps/allin-ssl/src/api/access.ts create mode 100644 frontend/apps/allin-ssl/src/api/cert.ts create mode 100644 frontend/apps/allin-ssl/src/api/index.ts create mode 100644 frontend/apps/allin-ssl/src/api/monitor.ts create mode 100644 frontend/apps/allin-ssl/src/api/public.ts create mode 100644 frontend/apps/allin-ssl/src/api/setting.ts create mode 100644 frontend/apps/allin-ssl/src/api/workflow.ts create mode 100644 frontend/apps/allin-ssl/src/assets/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/assets/icons/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/close.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/apply.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/branch.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/deploy.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/error.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/notify.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/success.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/flow/upload.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/notify/dingtalk.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/notify/feishu.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/notify/mail.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/notify/webhook.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/notify/wecom.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/plus.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/1panel.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/aliyun.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/btpanel.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/ssh.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/resources/tencentcloud.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/subtract.svg create mode 100644 frontend/apps/allin-ssl/src/assets/icons/svg/tips.svg create mode 100644 frontend/apps/allin-ssl/src/assets/vue.svg create mode 100644 frontend/apps/allin-ssl/src/components/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/components/baseComponent/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/dnsProviderSelect/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/baseNode/index.module.css create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/baseNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/branchNode/index.module.css create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/branchNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/conditionNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/endNode.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/base/errorNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/other/addNode/index.module.css create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/other/addNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/other/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/render/nodeWrap.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/.DS_Store create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/applyNode/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/applyNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/applyNode/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/deployNode/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/deployNode/index.module.css create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/deployNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/deployNode/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/notifyNode/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/notifyNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/notifyNode/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/startNode/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/startNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/startNode/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/uploadNode/drawer.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/uploadNode/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/components/task/uploadNode/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/index.module.css create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/lib/alias.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/lib/config.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/lib/verify.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/mock/index.ts create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/types.d.ts create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/components/flowChart/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/components/logViewer/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/notifyProviderSelect/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/svgIcon/index.tsx create mode 100644 frontend/apps/allin-ssl/src/components/typeIcon/index.tsx create mode 100644 frontend/apps/allin-ssl/src/config/i18n.ts create mode 100644 frontend/apps/allin-ssl/src/config/route.ts create mode 100644 frontend/apps/allin-ssl/src/locales/index.ts create mode 100644 frontend/apps/allin-ssl/src/locales/model/arDZ.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/enUS.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/esAR.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/frFR.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/jaJP.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/koKR.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/ptBR.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/ruRU.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/zhCN.json create mode 100644 frontend/apps/allin-ssl/src/locales/model/zhTW.json create mode 100644 frontend/apps/allin-ssl/src/main.ts create mode 100644 frontend/apps/allin-ssl/src/router/each.tsx create mode 100644 frontend/apps/allin-ssl/src/router/import.tsx create mode 100644 frontend/apps/allin-ssl/src/router/index.tsx create mode 100644 frontend/apps/allin-ssl/src/styles/icon.css create mode 100644 frontend/apps/allin-ssl/src/styles/naive-override.css create mode 100644 frontend/apps/allin-ssl/src/styles/reset.css create mode 100644 frontend/apps/allin-ssl/src/styles/transition.css create mode 100644 frontend/apps/allin-ssl/src/styles/variable.css create mode 100644 frontend/apps/allin-ssl/src/types/access.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/cert.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/form.ts create mode 100644 frontend/apps/allin-ssl/src/types/login.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/monitor.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/public.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/setting.d.ts create mode 100644 frontend/apps/allin-ssl/src/types/workflow.d.ts create mode 100644 frontend/apps/allin-ssl/src/views/404/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/authApiManage/components/apiManageForm.tsx create mode 100644 frontend/apps/allin-ssl/src/views/authApiManage/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/authApiManage/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/authApiManage/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/children/workflowView/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/children/workflowView/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/children/workflowView/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/components/historyLogsModal.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/components/historyModal.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/components/workflowModal.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/autoDeploy/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/components/freeProductCard.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/components/freeProductModal.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/components/productCard.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/components/sslTypeInfo.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certApply/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certManage/components/uploadCertForm.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certManage/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certManage/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/certManage/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/home/index.module.css create mode 100644 frontend/apps/allin-ssl/src/views/home/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/home/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/home/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/layout/index.module.css create mode 100644 frontend/apps/allin-ssl/src/views/layout/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/layout/types.d.ts create mode 100644 frontend/apps/allin-ssl/src/views/layout/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/layout/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/login/index.module.css create mode 100644 frontend/apps/allin-ssl/src/views/login/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/login/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/login/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/monitor/components/monitorForm.tsx create mode 100644 frontend/apps/allin-ssl/src/views/monitor/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/monitor/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/monitor/useStore.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/components/aboutSettings.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/components/emailChannelForm.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/components/generalSettings.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/components/notificationSettings.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/index.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/useController.tsx create mode 100644 frontend/apps/allin-ssl/src/views/settings/useStore.tsx create mode 100644 frontend/apps/allin-ssl/stylelint.config.js create mode 100644 frontend/apps/allin-ssl/tailwind.config.js create mode 100644 frontend/apps/allin-ssl/tsconfig.app.json create mode 100644 frontend/apps/allin-ssl/tsconfig.json create mode 100644 frontend/apps/allin-ssl/tsconfig.node.json create mode 100644 frontend/apps/allin-ssl/types/.eslintrc-auto-import.json create mode 100644 frontend/apps/allin-ssl/types/auto-imports.d.ts create mode 100644 frontend/apps/allin-ssl/types/components.d.ts create mode 100644 frontend/apps/allin-ssl/types/eslint.d.ts create mode 100644 frontend/apps/allin-ssl/types/shims-vue.d.ts create mode 100644 frontend/apps/allin-ssl/types/vite-env.d.ts create mode 100644 frontend/apps/allin-ssl/types/windows.d.ts create mode 100644 frontend/apps/allin-ssl/vite.config.ts create mode 100644 frontend/environment/.DS_Store create mode 100644 frontend/environment/eslint/.DS_Store create mode 100644 frontend/environment/eslint/eslint.config.js create mode 100644 frontend/environment/eslint/package.json create mode 100644 frontend/environment/eslint/prettier.config.js create mode 100644 frontend/environment/eslint/src/index.js create mode 100644 frontend/environment/eslint/src/next.js create mode 100644 frontend/environment/eslint/src/vitest.js create mode 100644 frontend/environment/eslint/src/vue.js create mode 100644 frontend/environment/eslint/tsconfig.json create mode 100644 frontend/environment/eslint/types.d.ts create mode 100644 frontend/environment/prettier/index.js create mode 100644 frontend/environment/prettier/package.json create mode 100644 frontend/environment/prettier/prettier.config.js create mode 100644 frontend/environment/prettier/tsconfig.json create mode 100644 frontend/environment/stylelint/eslint.config.js create mode 100644 frontend/environment/stylelint/index.js create mode 100644 frontend/environment/stylelint/package.json create mode 100644 frontend/environment/stylelint/prettier.config.js create mode 100644 frontend/environment/stylelint/tsconfig.json create mode 100644 frontend/environment/typescript/base.json create mode 100644 frontend/environment/typescript/nextjs.json create mode 100644 frontend/environment/typescript/node.json create mode 100644 frontend/environment/typescript/package.json create mode 100644 frontend/environment/typescript/react-library.json create mode 100644 frontend/environment/typescript/types.d.ts create mode 100644 frontend/environment/typescript/vue.json create mode 100644 frontend/eslint.config.js create mode 100644 frontend/global.d.ts create mode 100644 frontend/package.json create mode 100644 frontend/packages/.DS_Store create mode 100644 frontend/packages/hooks/.DS_Store create mode 100644 frontend/packages/hooks/docs/useAxios.md create mode 100644 frontend/packages/hooks/docs/useSocket.md create mode 100644 frontend/packages/hooks/eslint.config.js create mode 100644 frontend/packages/hooks/package.json create mode 100644 frontend/packages/hooks/prettier.config.js create mode 100644 frontend/packages/hooks/src/axios/index.ts create mode 100644 frontend/packages/hooks/src/axios/model/axios-cancel.ts create mode 100644 frontend/packages/hooks/src/axios/model/axios-options.ts create mode 100644 frontend/packages/hooks/src/axios/model/error-middle.ts create mode 100644 frontend/packages/hooks/src/axios/model/index.ts create mode 100644 frontend/packages/hooks/src/axios/model/other.ts create mode 100644 frontend/packages/hooks/src/axios/model/request-middle.ts create mode 100644 frontend/packages/hooks/src/axios/model/response-middle.ts create mode 100644 frontend/packages/hooks/src/error/index.ts create mode 100644 frontend/packages/hooks/src/error/type.d.ts create mode 100644 frontend/packages/hooks/src/negotiate/index.ts create mode 100644 frontend/packages/hooks/src/retry/index.ts create mode 100644 frontend/packages/hooks/src/socket/index.ts create mode 100644 frontend/packages/hooks/src/task-queue/index.tsx create mode 100644 frontend/packages/hooks/test/.DS_Store create mode 100644 frontend/packages/hooks/test/axios.spec.js create mode 100644 frontend/packages/hooks/test/cookie.spec.js create mode 100644 frontend/packages/hooks/test/debounce-fn.spec.js create mode 100644 frontend/packages/hooks/test/event-listener.spec.js create mode 100644 frontend/packages/hooks/test/local-storage.spec.js create mode 100644 frontend/packages/hooks/test/resize-observer.spec.js create mode 100644 frontend/packages/hooks/test/retry.spec.js create mode 100644 frontend/packages/hooks/test/session-storage.spec.js create mode 100644 frontend/packages/hooks/test/setup.js create mode 100644 frontend/packages/hooks/test/socket.spec.js create mode 100644 frontend/packages/hooks/test/storage.spec.js create mode 100644 frontend/packages/hooks/test/task-queue.spec.js create mode 100644 frontend/packages/hooks/test/throttle-fn.spec.js create mode 100644 frontend/packages/hooks/test/title.spec.js create mode 100644 frontend/packages/hooks/tsconfig.json create mode 100644 frontend/packages/hooks/types.d.ts create mode 100644 frontend/packages/hooks/vite.config.ts create mode 100644 frontend/packages/i18n/eslint.config.js create mode 100644 frontend/packages/i18n/package.json create mode 100644 frontend/packages/i18n/prettier.config.js create mode 100644 frontend/packages/i18n/src/index.ts create mode 100644 frontend/packages/i18n/src/translation.ts create mode 100644 frontend/packages/i18n/tsconfig.json create mode 100644 frontend/packages/i18n/vite.config.ts create mode 100644 frontend/packages/i18n/vite.config.ts.timestamp-1745981224069-01dcfd879848f.mjs create mode 100644 frontend/packages/naive-ui/README.md create mode 100644 frontend/packages/naive-ui/docs/circleProgress.md create mode 100644 frontend/packages/naive-ui/docs/useForm.md create mode 100644 frontend/packages/naive-ui/docs/useTable.md create mode 100644 frontend/packages/naive-ui/eslint.config.js create mode 100644 frontend/packages/naive-ui/index.html create mode 100644 frontend/packages/naive-ui/package.json create mode 100644 frontend/packages/naive-ui/postcss.config.js create mode 100644 frontend/packages/naive-ui/prettier.config.js create mode 100644 frontend/packages/naive-ui/src/App.vue create mode 100644 frontend/packages/naive-ui/src/components/circleProgress.tsx create mode 100644 frontend/packages/naive-ui/src/components/customProvider.tsx create mode 100644 frontend/packages/naive-ui/src/components/darkModeSwitch.tsx create mode 100644 frontend/packages/naive-ui/src/components/gradient-progress/circleProgress.tsx create mode 100644 frontend/packages/naive-ui/src/components/gradient-progress/horizontalProgress.tsx create mode 100644 frontend/packages/naive-ui/src/components/gradient-progress/index.module.css create mode 100644 frontend/packages/naive-ui/src/components/localesTips.tsx create mode 100644 frontend/packages/naive-ui/src/components/themeManage.tsx create mode 100644 frontend/packages/naive-ui/src/components/themeMode.tsx create mode 100644 frontend/packages/naive-ui/src/components/themeTips.tsx create mode 100644 frontend/packages/naive-ui/src/examples/MessageExample.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/index.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useBatch.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useDialog.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useForm.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useFullScreen.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useLoadingMask.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useMessage.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useModal.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useTable.tsx create mode 100644 frontend/packages/naive-ui/src/hooks/useTabs.tsx create mode 100644 frontend/packages/naive-ui/src/i18n/index.tsx create mode 100644 frontend/packages/naive-ui/src/i18n/tools.tsx create mode 100644 frontend/packages/naive-ui/src/locals/translation.ts create mode 100644 frontend/packages/naive-ui/src/main.ts create mode 100644 frontend/packages/naive-ui/src/styles/index.css create mode 100644 frontend/packages/naive-ui/src/theme/bak/baota/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/bak/baota/style.css create mode 100644 frontend/packages/naive-ui/src/theme/bak/dark-gold/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/bak/dark-gold/style.css create mode 100644 frontend/packages/naive-ui/src/theme/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/model/default/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/model/default/style.css create mode 100644 frontend/packages/naive-ui/src/theme/model/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/model/ssl/index.tsx create mode 100644 frontend/packages/naive-ui/src/theme/model/ssl/style.css create mode 100644 frontend/packages/naive-ui/src/theme/types.d.ts create mode 100644 frontend/packages/naive-ui/src/types/dialog.d.ts create mode 100644 frontend/packages/naive-ui/src/types/dnd.d.ts create mode 100644 frontend/packages/naive-ui/src/types/form.d.ts create mode 100644 frontend/packages/naive-ui/src/types/loadingMask.d.ts create mode 100644 frontend/packages/naive-ui/src/types/message.d.ts create mode 100644 frontend/packages/naive-ui/src/types/table.d.ts create mode 100644 frontend/packages/naive-ui/src/views/Demo.tsx create mode 100644 frontend/packages/naive-ui/src/views/tabs/FormDemo.tsx create mode 100644 frontend/packages/naive-ui/src/views/tabs/TableDemo.tsx create mode 100644 frontend/packages/naive-ui/tailwind.config.js create mode 100644 frontend/packages/naive-ui/tsconfig.json create mode 100644 frontend/packages/naive-ui/tsconfig.node.json create mode 100644 frontend/packages/naive-ui/types/env.d.ts create mode 100644 frontend/packages/naive-ui/types/global.d.ts create mode 100644 frontend/packages/naive-ui/types/shims-tsx.d.ts create mode 100644 frontend/packages/naive-ui/types/vite-env.d.ts create mode 100644 frontend/packages/naive-ui/vite.config.ts create mode 100644 frontend/packages/pinia/eslint.config.js create mode 100644 frontend/packages/pinia/package.json create mode 100644 frontend/packages/pinia/prettier.config.js create mode 100644 frontend/packages/pinia/src/index.ts create mode 100644 frontend/packages/pinia/src/utils.ts create mode 100644 frontend/packages/pinia/tsconfig.json create mode 100644 frontend/packages/pinia/vite.config.ts create mode 100644 frontend/packages/router/eslint.config.js create mode 100644 frontend/packages/router/package.json create mode 100644 frontend/packages/router/prettier.config.js create mode 100644 frontend/packages/router/src/each.ts create mode 100644 frontend/packages/router/src/import.ts create mode 100644 frontend/packages/router/src/index.ts create mode 100644 frontend/packages/router/tsconfig.json create mode 100644 frontend/packages/router/vite.config.ts create mode 100644 frontend/packages/utils/docs/browser.md create mode 100644 frontend/packages/utils/docs/business.md create mode 100644 frontend/packages/utils/docs/data.md create mode 100644 frontend/packages/utils/docs/date.md create mode 100644 frontend/packages/utils/docs/encipher.md create mode 100644 frontend/packages/utils/docs/random.md create mode 100644 frontend/packages/utils/docs/string.md create mode 100644 frontend/packages/utils/docs/type.md create mode 100644 frontend/packages/utils/eslint.config.js create mode 100644 frontend/packages/utils/package.json create mode 100644 frontend/packages/utils/prettier.config.js create mode 100644 frontend/packages/utils/src/browser.ts create mode 100644 frontend/packages/utils/src/business.ts create mode 100644 frontend/packages/utils/src/data.ts create mode 100644 frontend/packages/utils/src/date.ts create mode 100644 frontend/packages/utils/src/encipher.ts create mode 100644 frontend/packages/utils/src/random.ts create mode 100644 frontend/packages/utils/src/string.ts create mode 100644 frontend/packages/utils/src/type.ts create mode 100644 frontend/packages/utils/test/browser.spec.ts create mode 100644 frontend/packages/utils/test/business.spec.ts create mode 100644 frontend/packages/utils/test/data.spec.ts create mode 100644 frontend/packages/utils/test/date.spec.ts create mode 100644 frontend/packages/utils/test/encipher.spec.ts create mode 100644 frontend/packages/utils/test/random.spec.ts create mode 100644 frontend/packages/utils/test/string.spec.ts create mode 100644 frontend/packages/utils/test/type.spec.ts create mode 100644 frontend/packages/utils/tsconfig.json create mode 100644 frontend/packages/utils/types.d.ts create mode 100644 frontend/packages/utils/vite.config.ts create mode 100644 frontend/packages/vite/index.ts create mode 100644 frontend/packages/vite/package.json create mode 100644 frontend/packages/vite/plugin/i18n.cjs create mode 100644 frontend/packages/vite/plugin/index.ts create mode 100644 frontend/packages/vite/plugin/readme.md create mode 100644 frontend/packages/vite/plugin/tsconfig.json create mode 100644 frontend/packages/vite/prettier.config.cjs create mode 100644 frontend/packages/vite/test.json create mode 100644 frontend/plugin/.DS_Store create mode 100644 frontend/plugin/plugin-i18n/.DS_Store create mode 100644 frontend/plugin/plugin-i18n/README.md create mode 100644 frontend/plugin/plugin-i18n/__tests__/adapter.test.js create mode 100644 frontend/plugin/plugin-i18n/__tests__/cache.test.js create mode 100644 frontend/plugin/plugin-i18n/__tests__/log.test.js create mode 100644 frontend/plugin/plugin-i18n/__tests__/utils.extend.test.js create mode 100644 frontend/plugin/plugin-i18n/__tests__/utils.test.js create mode 100644 frontend/plugin/plugin-i18n/__tests__/zhipuAI.test.js create mode 100644 frontend/plugin/plugin-i18n/eslint.config.js create mode 100644 frontend/plugin/plugin-i18n/index.md create mode 100644 frontend/plugin/plugin-i18n/package.json create mode 100644 frontend/plugin/plugin-i18n/prettier.config.js create mode 100644 frontend/plugin/plugin-i18n/src/.DS_Store create mode 100644 frontend/plugin/plugin-i18n/src/cache/index.js create mode 100644 frontend/plugin/plugin-i18n/src/cleanUp/unusedTranslationDetector.js create mode 100644 frontend/plugin/plugin-i18n/src/cli/cleanup.js create mode 100644 frontend/plugin/plugin-i18n/src/config/config.js create mode 100644 frontend/plugin/plugin-i18n/src/fileOperation/index.js create mode 100644 frontend/plugin/plugin-i18n/src/index.js create mode 100644 frontend/plugin/plugin-i18n/src/logManagement/index.js create mode 100644 frontend/plugin/plugin-i18n/src/stateManagement/index.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/.DS_Store create mode 100644 frontend/plugin/plugin-i18n/src/translation/adapter/aiBatchAdapter.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/adapter/index.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/adapter/traditionalApiAdapter.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/ai/deepseekAI.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/ai/qianwenAI.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/ai/zhipuAI.js create mode 100644 frontend/plugin/plugin-i18n/src/translation/traditional/api1.js create mode 100644 frontend/plugin/plugin-i18n/src/utils/index.js create mode 100644 frontend/plugin/project-ftp-sync/README.md create mode 100644 frontend/plugin/project-ftp-sync/package.json create mode 100644 frontend/plugin/project-ftp-sync/src/index.ts create mode 100644 frontend/plugin/project-ftp-sync/tsconfig.json create mode 100644 frontend/plugin/project-sync-git/.DS_Store create mode 100644 frontend/plugin/project-sync-git/README.md create mode 100644 frontend/plugin/project-sync-git/package.json create mode 100644 frontend/plugin/project-sync-git/src/index.ts create mode 100644 frontend/plugin/project-sync-git/tsconfig.json create mode 100644 frontend/pnpm-workspace.yaml create mode 100644 frontend/scripts/clear.sh create mode 100644 frontend/scripts/cursor_backup.sh create mode 100644 frontend/scripts/extensions.json create mode 100644 frontend/scripts/settings.json delete mode 100644 frontend/static/css/style-CZclU6lr.css delete mode 100644 frontend/static/js/Badge-57KvBbqQ.js delete mode 100644 frontend/static/js/Flow-CnaibaV1.js delete mode 100644 frontend/static/js/LockOutlined-iSKju6Tl.js delete mode 100644 frontend/static/js/Search-DJIWU9Ld.js delete mode 100644 frontend/static/js/Tabs-CdsQWmeW.js delete mode 100644 frontend/static/js/access-DymwmDzp.js delete mode 100644 frontend/static/js/arDZ-CsIhMqQg.js delete mode 100644 frontend/static/js/business-DN2MKo6G.js delete mode 100644 frontend/static/js/drawer-93Cq-d5G.js delete mode 100644 frontend/static/js/drawer-BfEYWoM8.js delete mode 100644 frontend/static/js/drawer-BwPAjoJb.js delete mode 100644 frontend/static/js/drawer-bIO2cNN4.js delete mode 100644 frontend/static/js/drawer-p91tUqAD.js delete mode 100644 frontend/static/js/esAR-DY0vZcSM.js delete mode 100644 frontend/static/js/frFR-B3qQNTWO.js delete mode 100644 frontend/static/js/index--t_mPIpF.js delete mode 100644 frontend/static/js/index-4SW2EnHr.js delete mode 100644 frontend/static/js/index-B-XgWU_W.js delete mode 100644 frontend/static/js/index-B8mQ18bn.js delete mode 100644 frontend/static/js/index-BIR8cZMZ.js delete mode 100644 frontend/static/js/index-BLjn2Hdc.js delete mode 100644 frontend/static/js/index-BMspkLA9.js delete mode 100644 frontend/static/js/index-B_NFc6fw.js delete mode 100644 frontend/static/js/index-Bd79k5V4.js delete mode 100644 frontend/static/js/index-BoVX1frA.js delete mode 100644 frontend/static/js/index-C6fPintp.js delete mode 100644 frontend/static/js/index-CCPBIbeA.js delete mode 100644 frontend/static/js/index-CIAHIxw4.js delete mode 100644 frontend/static/js/index-CQ0Tngw6.js delete mode 100644 frontend/static/js/index-CUcVHxXb.js delete mode 100644 frontend/static/js/index-CXkWPBsK.js delete mode 100644 frontend/static/js/index-CZ9B2uw9.js delete mode 100644 frontend/static/js/index-Cc_zz0Ev.js delete mode 100644 frontend/static/js/index-DDYEpJja.js delete mode 100644 frontend/static/js/index-DRpnuR2c.js delete mode 100644 frontend/static/js/index-DZYxuXga.js delete mode 100644 frontend/static/js/index-Di21KYHW.js delete mode 100644 frontend/static/js/index-d3KFnGUL.js delete mode 100644 frontend/static/js/index-fMAIkr0o.js delete mode 100644 frontend/static/js/index-yiIyVSv0.js delete mode 100644 frontend/static/js/jaJP-B1A-xRRV.js delete mode 100644 frontend/static/js/koKR-qNgLjQA_.js delete mode 100644 frontend/static/js/main-D8Z-8iPZ.js delete mode 100644 frontend/static/js/md5-DpItHaRH.js delete mode 100644 frontend/static/js/ptBR-fFx2sYS7.js delete mode 100644 frontend/static/js/public-Lq7KwJBj.js delete mode 100644 frontend/static/js/ruRU-BsQBQBEH.js delete mode 100644 frontend/static/js/setting-BuW_WiRV.js delete mode 100644 frontend/static/js/test-DbYqM2ZR.js delete mode 100644 frontend/static/js/text-BWsiCV4g.js delete mode 100644 frontend/static/js/useStore-CEiyUWBM.js delete mode 100644 frontend/static/js/useStore-CFVnCatL.js delete mode 100644 frontend/static/js/verify-C4A8sgpW.js delete mode 100644 frontend/static/js/verify-CW6Fb60h.js delete mode 100644 frontend/static/js/verify-D33tYN8b.js delete mode 100644 frontend/static/js/verify-DINczDQF.js delete mode 100644 frontend/static/js/verify-DT_aKhVd.js delete mode 100644 frontend/static/js/zhTW-fHZ0z-QM.js create mode 100644 frontend/tsconfig.json create mode 100644 frontend/turbo.json create mode 100644 frontend/types/authAPIManage.d.ts create mode 100644 frontend/types/autoDeploy.d.ts create mode 100644 frontend/types/certApply.d.ts create mode 100644 frontend/types/certManage.d.ts create mode 100644 frontend/types/home.d.ts create mode 100644 frontend/types/monitor.d.ts create mode 100644 frontend/types/settings.d.ts create mode 100644 frontend/vitest.config.ts diff --git a/.DS_Store b/.DS_Store index 82c400a9f59ba92f824b51b2584d5ec13ef2b34b..3769869fae83524025416a760743f8e840e30ff6 100644 GIT binary patch literal 10244 zcmeHMTWl0n826Z0`$&iO`OH0clHqQ5bzL~Mu0sZLUb@0cH{(?_M?MN_7;F-F{$lF z*AlxR8FFOUkrP~!g&Oiuk~|chEe7&%(uW+sup=k9q`^VQvF6U#!e$iV0Hnbn>@9u=;^St@xyR?@DNQx4mX@zjC@L-~Eu%K8?D6QR zF&?#IR>tg%rT4O4pJ8b6sq0w0UscA3rJ627w_>WUr0oDzR>)=FfU3*Jc&CxkWz&w0 za)XcBur&AZ;ngi|&7oy&N18*2+g7zShg#d#9y#I@Ya3Uz_YRL~N!@sXBZbae04jKY z`h0ArWyxkji&L7+t6WOI0R;v^8PqkEIo6A4nKlCaIgl((FV`OJuZ|rF3XoRDD`82QB5G#jb`- zBW-orj)N-2GTpEwWlW`4p#U|jL@3OxVJmVq^qnoQo!`*7blIxb_DzwV?UNOiRg%Bj zUo((ZO*O75yT?`88r>5!6N)aY`p6L70o_s$s7l&58=HN7dMv5fQGvOEI#FsA2QzW? zsf=nJ;$zhZ7W$-j#CCMx_z*sZPvHx=3g5tYa1E}*FYqhegx}#73Rr|CSc-G79)q|Ln{YL*!FAY* z8?hTVV-Ie{oj8DlID~sKhEL)cCQ-*MK7$i@6p!KS_y(T9(|88Y;ss)Tt$P*}_tAWYR%zl%|HDX<4nVcD2j=TRYy&Qub?NcZOZ zqa?1Dvm%&XJ*TF2A*+ma?VF}4#2Gh5GBL&zVLN{I5j``{w#mJ;20_o1d>P!g!hcz5}VpkFGY8uHn(tDC5c zPN#Lf-!BzYHF4X<1=Izn6K2B@MgKWR&%sCV30#3m;^++<)gR_`>>z5xrf-9Km|u|6je;4g&CWnNAX#F4xh)D@D+R&U&A-? zB%Z>z@NImb*m^#XhdsGG#0xX=(EUoRY5n|~^C~XjtNTa6-Td6INuemrQYaWJ8%^t) zp^uP_)l4av^x{s_4~JClPbh%;vV6Nc-?7P;_d74?oH5+F-pR+ECqRg%@tTK#hk%EG zhk%E`y&+J<-9qg9fA^jL|G&4vJTDIc4}t$A0$3c0Mmj0=sU2YcDg;u5=-5vOYs_zg zOFM*4%!TRg&+*h@pW~N0I%iL8+ry4-f=fG`;_Pse|I(iU-u~a)|Fcg>|Kt7t-xi!W A_y7O^ literal 10244 zcmeHMU2GIp6h3FVZD$8+rv(b#71+=~p)Ariv{*2(ZMRYarr2%i4`A8dnYNSe&a6AL zTaXYp5?`c<;l&3<#W!O_jfp|zK_5`wRBVhqXrd-0MibEoAB=zJ&YhP1X-Rz0G;wY+ z_sqTLoO{mw=A3)?-UR^c$|x-W0RRx`VN_mD)dGd_*;7&kr>CAMl0GCRS|V{HnJSTV zJ6r@@1Y87M1Y87M1eOW{v}dy-F5}d#T?AYNTm?1gB+p&^InI3*4hkee-1TH}seFH+oVf#K zV5|JpnTj$Xdq>)(ghJKj0m0(;QR?1?ZAX)tK+7Dpg9ZKfQI-;1RZ znrSsRe}O`or@W$)%CgF1kx64ZVnwZt*%eJ6VXXnfNW|veqp`!9Iz1+@>^5{Os_AOl zR?rlcM2-$=x?)Us85vzMZQTfGc&UuZ^`}m?wC!vO2HHAWP6q?0I$E29fgK&Kr%!vu zRSnyB_m52_lDcu0c~0xAvkpTQZ_n2=^j0!4#f&Fn0wUOFdz+w^7qbTiv$cm@H>ZwO=JUEvtq}+8owsI3~7|%_y&+ z_ww>pYd37#+T6BlPuIQ!eX~{fRm(NCk~B(K>y|dIsp-LKO|d3NqGnvx6-}QQ%4((- zOQ-{SG^y5L(CeM8s$0FL-skr(COVvnX^&?#>!jQuinfh)>;2MEg`9iDP?!}(z9iB( zWW8a%-+zR0y3;DvilflD*)I*4GzU5A2nM%F(!dl2iEJ_#NVTO^@((7WF*PA8UT&v- zr{o{Xa%|-TPUr4g$v;dte@U96>GbU-vyU;e2cxFdms0h4%iUqWf7G0erq#Y_3Q_rn z<54g5+nJp)z7Q7Jj!cj`Q6r6z>xCk%78}KfC2p_{|a0|YMZ{S<_4t|7R z;CJ+36;`8+HR!`e+=5NG6?b3=JFyE7;34eC2oB&ejG=-mj-!DYoW>J)5}(3na0bue zv-mu|f|u}Bd>yai`*;nnYtN}@DM^@FXDJaT7fKjkxJTNzBogMaxs1GtGIl*Q*ZY{#A0fxGY_?7@ez7xz=F z4&WdT;V_P3oMLqxCs4yQnrLAbpTr!+>lu8SqV+sJhZpb#d=W3=%M`h<;bnZYC=PoI z;}EYb6o>g+<~wKfKSubLU9t(}Z=Uy(E7(SZIp#viSlLKgPZ;_H@mS7OfJqyBnttG< z3V-4N++SJD&-Zs~_WW^Y6E7Ge-`B-t3jBlsnQ@DYfQx{OfQx{Oz|ugVjJpwF_y0YM z|Np-eO$m6aBCL3~ z71RVlqcM_5P%*w4P+m;X#Ndk{#s{$>;)50*c#uR*%8QAp=gyto&TLzZFAa%vH*?S2 zd(OG{yXT&Be`X0G(43T45E3MW@c2+FPRDG5MEUd?mpG?p2~t3P5*;+-QO$^A`Ll7- zeuZxV-vYh`d<*y%@GbBlSOE8In)qpq`nhib-vYh`G8UlgLl7TILk=Bc)LuF;v#$V1 zbFtb^_%6~Hq(O&<96H1(axei?MaopcxnclQ$NHcn7jozjqfDKEbNK+LXK-#PVE2yg z2W@czAx8b&w}5Yf@fM(W_goSoar~L?`+GF5sisw3eI2-*+`Rk(Ow$VXwD%i>?N-D} zn$3~KE?Vj^3@w^|k3@H>%3xS5ZZUK#qUuV*R#0UHMRs?ox@-(K8%bR@ZQXXp2w)0} z^9~a!_@j#w8xBrxUG0>&jmMcz-VoCK4I{uUzTs(x&2j>moML!AMbayeP%oD zBGYfGJ)vuc-iLJ*d>)CR;bWwqC>}&q$HR4F+B%wZ+qi0Da_J8kW2h#U@Ze%SOd|@> zNs6c>K@5Bwu*;Sgi%iWsiKH7>LHOFmZ<(zol^(N2WsULN zm|nS?u~kObZK;X)o__77abt?x^RyrHKD3dye}3ODC^k;Ujbqos&L4kcwwXX~%qsVj z^Wd6k1ItHT8c8B1mFTX}y*TBeD;+*uv#O!7Dp*@rLqoT*1|zq2T;#sW>^W)V(#ZA< z$}`cNynY^YoK*`IQe{Al@Es-&gEg^KSRN3~ zK*xSuy_sr_P|J&Qpi_%P6^&KZ3yr+EDbST-=4F*@g(vwUs0wuBVmpAtG+A|-)XekG z(w;X*OlwQsJDrv!B@^NjO2Oo>FnM!ue)ODfyCICf|`8yhZjxK%4jCnXKn~5^7-; zG{Mub3AVsiXouaf2g0xy6wtwd1CW4&@B+LD$KWM632(zGcn40yhj0$g!^iLiT!t%f z6~2M%@H33SO&Eng;U4_O@mvwNfLp{p&Q)-Wxf-sXYhcK^^j6rL@i_a1qdS*3pv;u> zfu7SQ3YgNir-Tg;M8Mpb&O+p&;*v+oE0)&OtqEn^h&f)`*W5mAyRFCBZMU^&I@{wg znxuIT3#Fat*UG`{SW3s3SU^3Pr>-WI1%*;E4?Uk17c9hLK6*VXF0L#s6*&wxR$R8c zR1kA8lrvZVUxU}-4R{mYf-~?QybovL1NaC&0eXVMl<~ujtenn){u$))L-+1D za{Q8dZ^S;)WXX)}jFZWDcEy|#+M%b7tP@uOG4Z^W!2L2#tgL;UbTy)OmV_JU#^c4C z=YMVE949q~baE*VRx-q}nusHUk4j>m&936y8G9@)z8lNkQ==Dq*oh(^$CPQqeY%-U z#)D%?h~mh@77n3Jvd=b@=i$0B{5pJU@2u~glW0cYjbLI4Pyeh3Kld%*TVTp9ki&Wm z((nImlmGue<+%I~eGB*&m^uqUZfkpMGxnFhM`U+RzqJSP*^3WNRBnh-TLm-wb39V} ob37L4=lBYIsBHRzMc+eC-4LT#gK5hD4Dj#&{{5f)zwiJ503zu8e*gdg delta 112 zcmZn(XfcprU|?W$DortDU=RQ@Ie-{MGjdEU6q~50$jbuafW}UU=z^* diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..936ccdd --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,169 @@ +# ALLinSSL 前端项目 + +## 项目简介 + +ALLinSSL是一个基于Monorepo架构的前端项目,使用Turborepo进行工作区管理,专注于提供SSL证书的申请、管理、部署和监控等功能。项目采用模块化设计,将通用功能抽象为独立包,提高代码复用性和可维护性。 + +## 技术栈 + +- **框架**:Vue 3.5.x +- **开发语言**:TypeScript +- **包管理工具**:pnpm 9.0.0 +- **Monorepo方案**:Turborepo +- **构建工具**:Vite 6.x +- **状态管理**:Pinia 2.x +- **路由**:Vue Router 4.x +- **UI组件库**:Naive UI 2.x +- **CSS框架**:TailwindCSS 3.x +- **国际化**:Vue I18n 11.x +- **测试工具**:Vitest + +## 项目结构 + +``` +frontend/ +├── apps/ # 应用目录 +│ └── allin-ssl/ # SSL证书管理应用 +├── packages/ # 共享包目录 +│ ├── hooks/ # 可复用的Vue Hooks +│ ├── i18n/ # 国际化相关功能 +│ ├── naive-ui/ # UI组件库封装 +│ ├── pinia/ # 状态管理相关功能 +│ ├── router/ # 路由相关功能 +│ ├── utils/ # 通用工具函数 +│ └── vite/ # Vite相关配置和插件 +├── environment/ # 环境配置 +│ ├── eslint/ # ESLint配置 +│ ├── prettier/ # Prettier配置 +│ ├── stylelint/ # Stylelint配置 +│ └── typescript/ # TypeScript配置 +├── plugin/ # 项目插件 +│ ├── plugin-i18n/ # 国际化插件 +│ ├── project-ftp-sync/ # FTP同步插件 +│ └── project-sync-git/ # Git同步插件 +├── scripts/ # 脚本目录 +├── types/ # 全局类型定义 +└── turbo.json # Turborepo配置 +``` + +## 应用 + +### allin-ssl + +SSL证书管理平台,提供证书申请、管理、部署、监控等功能,帮助用户轻松管理和部署SSL证书,保障网站安全。 + +## 共享包 + +- **hooks**: 提供常用的Vue Hooks,简化组件逻辑 +- **i18n**: 国际化解决方案,支持多语言切换 +- **naive-ui**: 封装和扩展Naive UI组件库 +- **pinia**: 封装Pinia状态管理相关功能 +- **router**: 封装路由相关功能 +- **utils**: 提供常用工具函数和助手方法 +- **vite**: Vite相关配置和插件 + +## 环境与规范 + +- **eslint**: 代码质量检查配置 +- **prettier**: 代码格式化配置 +- **stylelint**: 样式质量检查配置 +- **typescript**: TypeScript配置 + +## 插件 + +- **plugin-i18n**: 国际化插件,支持自动提取和生成国际化资源 +- **project-ftp-sync**: FTP同步插件,用于部署前端资源 +- **project-sync-git**: Git同步插件,用于代码同步 + +## 安装 + +### 环境要求 + +- Node.js >= 18.x +- pnpm >= 9.0.0 + +### 安装依赖 + +```bash +# 安装所有依赖 +pnpm install +``` + +## 开发命令 + +```bash +# 启动所有应用的开发服务 +pnpm dev + +# 只启动ALLinSSL应用 +pnpm dev --filter allin-ssl + +# 构建所有应用 +pnpm build + +# 只构建ALLinSSL应用 +pnpm build --filter allin-ssl + +# 运行代码检查 +pnpm lint + +# 运行类型检查 +pnpm check-types + +# 运行测试 +pnpm test + +# 清理构建缓存 +pnpm clear +``` + +## 开发指南 + +### 新建应用 + +1. 在 `apps` 目录下创建新的应用目录 +2. 初始化应用配置文件和依赖 +3. 在应用的 `package.json` 中添加对共享包的依赖 + +### 使用共享包 + +在应用或其他包的 `package.json` 中添加依赖,例如: + +```json +"dependencies": { + "@baota/utils": "workspace:*", + "@baota/hooks": "workspace:*" +} +``` + +### 开发规范 + +1. 遵循项目的代码风格和组织方式 +2. 共享功能应提取到 `packages` 目录下的相应包中 +3. 应用特定功能应保留在各自的应用目录中 +4. 使用TypeScript进行类型定义 +5. 编写测试用例确保功能正确性 + +## 部署 + +### 构建生产版本 + +```bash +pnpm build +``` + +### FTP部署 + +使用内置的FTP同步插件进行部署: + +```bash +pnpm build +# 自动部署到配置的FTP服务器 +``` + +## 浏览器兼容性 + +- Chrome >= 60 +- Firefox >= 55 +- Safari >= 11 +- Edge >= 79 diff --git a/frontend/apps/.DS_Store b/frontend/apps/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..69bc89fd7d638d407f07e509ec3dea09e77a4066 GIT binary patch literal 10244 zcmeHMU2GIp6u#fIz$_i;6hUCv!b%YkSK6ge%8#)9!BPq-vi&bwcXtLlGCNaucDEJM zSfbIWJo)!pe-jfG6aNw)1fvms&_oTA2=VVlc`#8EUr?i-J9oCBup~aHA!P36-ZSUi zbIzUn%{lkx-eruTIj_eUi!jDys+_6{H6;q~=k>B8`I6a0LH3N<>=x$I&uX_W(+&gy z0s#U60s#U60s#V70|K;X^CDLW8ngid0RjO6QwZ?&AwreYxKAep^_C85ydwb7auR!m zp6MLm*+hIA_vwV7o+O|u{oe)%*GYE4Ae`NS46nLYPUBpvo zhzlCD0RjO6mm|Q>?je?B7X8eN&+kq;WjQJ8tw|F}>VwrBP zuI>z^vho=-XHlt`bw^^@8BOGpxxCw)%nov{%Wj4IA$9SQBOBH?L?f|=`tfMwNNi*Mrf8(GzHxj!Brm9` z-Lh}!kd?8WN4=M4@YfJFNAOeavC>o1-L#dWSLJ#ou(A%u5@{zh;<*WLo4kUSTWAsZ zl+_mTIqTyihh|qObF}WB?p~$8&rCaZ!aQsYsg*8))K2W)tWh9vdee@T&)DveT9r;( z>AaQ98BLbOl}T3Vrn8P^?R8u;XF7I&U(OiI6&+3M>KkyKY_7#~Hl(U~*Vt!}FSB5@ zl1FkikB`6$6a=(3X;qpEB?6!NSVE!MQYe9F8hZ|3e*Yh>Az zRxj0*{W`tK9!KZiboCio=r3QYX@k6{C2LTt`vxmlX-bz%AgD=S@#d(abRD9QQC)wi zx|pJMTgjARsd`9^v!OxJdJAH9YKJe}yhYLa=xb(ZDsB~`zIZ#0d?z1ychb#uju`gT z;4Q71HsB5?vqtAA#jN^~|57_i?tMY(;YK@jGv{Re&fVm$pSx?)b_P&47{DO*!@%9Jkb#X+ zjN?8`;3yu!V|W5j;wenxMZAQU@e1C;2RMZf@hQ&XD}0S_a2~(mcl;sEkSZlrs**Hm ziBv5um15F5X^YejM~ui9^UCPq96Q!?+(0;6Xfuhbg`vrwHfq{WPA%b9e#A@hV=!>v$6< za1!t0J-m;P@deJ}+$B-GdwLY($I?-paavpbZBriG_VdY~zCXn`+Y<4farA$vIWm0F zhP1+4woCXcB(k>U*avB}V&+YM<$wzi2oMMm2oMMm2oSgi5hxRLitzjY9asMU{~DZm zFr@&20D&R`C~r-)HWPQHa{#|oD!FJ+54cK?L8+*z6 z_PE_UCs-+ls->kVe(Z{Gag%)Idd03OI`od6vGAk)KgwT51g1H@P^B-YNJqEtpT zNY4m8^sNHe;4D~!gGtj$7Eu>hNL0o6%lV^$5#X0!eE!{6rr!QdKeU4bImkj1tPdc+ zxW}+2v_NQq&;p?aLJNczV0$kmx!TRccW8mo0-*&87GUc`j2@Q9y?oit`O-lzc7$i` z>tbFW_wr>o=d8rTSt)l}(F-xqWvBWWBd0v><;!mFvIDy8fL_n&MJUL7 zC%zab2aLOU_zo=)TA-a>n3zH=;PEo8WuUEI?Oy!o+g+O*Ph z)W%#?1)ZXKlVbWb#qRBp0*k(mQ+bX`p9Oowv{K$Z0SUsVi0Ax!JaOp?=hR5bNur-8 z84F+rc>WpSsUn&L-4bZj*CM0?)LV$UUFab|ZO#c}gOA%p9iR|y9^~;|Kc2e(cXTtc z4%M0sOH=tQ39}?7*jvD!ntau_YDrPrvR0TT!c)CsyU7<}J$;ZC)mx=N#d?Z5q z+8EYr_iO)s5)CypyB1kqhZ(M^M)x%)!$3e^HfN%~CHX}CtE_)~^1t;Vj>mcJ>p%SR zbv~YwvKOqi@x32xe9(K2#>p|wFzz3(#QZ_Tbv^M}?4FBwZTh>Z zXGm895*kQCmU?vP&!9Yea~VK5#SH@XD@jI;sEq?w+DRB`J&s) zap#jEVyzU7h%ZoxMtqONg6Ye_XqgX@1 z*5AJI?Cc81h(O^(0^DFo*Z_H&C5P{BetVM@{HqAxVIC277{(u_&;p?aLJNcz_~=@o zj#R6powM-&b^lH?{FPw4xYzVY8+x1G@=kn$4DrlcipIa+9A*}(pk1BCRP&%0?=B#o zQ3Xn$zU42!>6asF+j0rN`W zX{o!fkK(4jJ{C9a>FQ{U-CGnkv6-e+GHhaDRbf2h0ku%+n~EK;KP@ttc7DJO9Lt(k z4e)y}aFioTb@b?jGBu+%bXc{rFP@(n>IH`qopV(b4lZKIm0=nw#YK?;*L9`$}x>}J7{UF6HR?a zCOOo3%bn5a!>nZ>tJ7Qa7`APXD&sZ{K}~psZ95fZ`~-#2s?Ag&*3K>^dc;g5byL+M zZa+P}N^~OcnpS<#tK4^=5}l-*y#*SfU5{;Eb)0(s4D0!!gzX&4=;=b|gG15iv^}55 z>W3C7hF33nN{vuGpD=1+OhcOCSXtIc202LLrkJ>XP2-X_ZM?lUIvO39)ypzXl9A3E zbaOy+?p`3sE%8=&YPew|E%6R-rexSmYgQbF;TWAxGw>*!fpc&kUVxv$ui+xR0oUM7 zxDJ1WKfzz&9rzcPVGVA;I#h8pZpH1m16y%7?#DRx<0tSCehNo%43A*~Q>dYiX>>4; zi+B>hh)?2Ecm|)wZ{zpy2ly;LhcDnS@R#@+Uc}3|f>-b=zJ>4L-|$`hw^S)rNwQQg zHAsz8leAshA$3W;QlG22w0bEqEntp5B^I%*Ig*|CZdoLAJ!feidO#WeNI1*28rMB; zYizosW&6&qo_+BGj$GiaVogLahpi9n9JYLx19)3;9ZA`;>SIBVIzo8YPs$9mYL!bJ zQ|^)p?`nlxyj$5O6Vla6x7ga;CX;We5-%#dnmZ%pL28*>Y;Eq2$SS&pK4ou&d`T^L zi}x%0BjnvG@M3do^MEX?@&`xhOYkaOfJ?AKD1Dpoc>~@UkYH5{ccZ4`06YxdAAB-{7+sP#{XgbFL+4!8CoE;Kxlzm!~zxWI6A5+ zA1eL(|663V;V?oAgcexO0$4scHh6$qR)f= 60 +- Firefox >= 55 +- Safari >= 11 +- Edge >= 79 + +## 许可证 + +私有项目,未经授权不得使用 diff --git a/frontend/apps/allin-ssl/cache/translation_cache.json b/frontend/apps/allin-ssl/cache/translation_cache.json new file mode 100644 index 0000000..52c0bb5 --- /dev/null +++ b/frontend/apps/allin-ssl/cache/translation_cache.json @@ -0,0 +1,8280 @@ +{ + "警告:您已进入未知区域,所访问的页面不存在,请点击按钮返回首页。": { + "text": "警告:您已进入未知区域,所访问的页面不存在,请点击按钮返回首页。", + "key": "t_0_1744098811152", + "translations": { + "zhCN": "警告:您已进入未知区域,所访问的页面不存在,请点击按钮返回首页。", + "zhTW": "警告:您已進入未知區域,所訪問的頁面不存在,請點擊按鈕返回首頁。", + "enUS": "Warning: You have entered an unknown area, the page you are visiting does not exist, please click the button to return to the homepage.", + "jaJP": "警告:未知のエリアに進入しました。アクセスしようとしたページは存在しません。ボタンをクリックしてホームページに戻ってください。", + "koKR": "경고: 알 수 없는 영역에 진입했습니다. 방문하려는 페이지가 존재하지 않습니다. 버튼을 클릭하여 홈페이지로 돌아가세요。", + "ruRU": "Предупреждение: Вы вошли в неизвестную зону, посещаемая страница не существует, пожалуйста, нажмите кнопку, чтобы вернуться на главную страницу.", + "ptBR": "Aviso: Você entrou em uma área desconhecida, a página que você está visitando não existe, por favor, clique no botão para voltar para a página inicial.", + "frFR": "Avertissement : Vous avez entré dans une zone inconnue, la page que vous visitez n'existe pas, veuillez cliquer sur le bouton pour revenir à la page d'accueil.", + "esAR": "Advertencia: Ha ingresado a una zona desconocida, la página que intenta visitar no existe, por favor, haga clic en el botón para regresar a la página de inicio.", + "arDZ": "تحذير: لقد دخلتم منطقة غير معروفة، الصفحة التي تحاول زيارتها غير موجودة، يرجى الضغط على الزر للعودة إلى الصفحة الرئيسية." + }, + "timestamp": "2025-04-08T07:53:31.152Z" + }, + "返回首页": { + "text": "返回首页", + "key": "t_1_1744098801860", + "translations": { + "zhCN": "返回首页", + "zhTW": "返回首頁", + "enUS": "Return Home", + "jaJP": "ホームに戻る", + "koKR": "홈으로 돌아가기", + "ruRU": "Вернуться на главную", + "ptBR": "Voltar para a homepage", + "frFR": "Retour à l'accueil", + "esAR": "Volver al inicio", + "arDZ": "رجوع إلى الصفحة الرئيسية" + }, + "timestamp": "2025-04-08T07:53:31.153Z" + }, + "安全提示:如果您认为这是个错误,请立即联系管理员": { + "text": "安全提示:如果您认为这是个错误,请立即联系管理员", + "key": "t_2_1744098804908", + "translations": { + "zhCN": "安全提示:如果您认为这是个错误,请立即联系管理员", + "zhTW": "安全提示:如果您認為這是個錯誤,請立即聯繫管理員", + "enUS": "Safety Tip: If you think this is an error, please contact the administrator immediately", + "jaJP": "安全注意:これが誤りだと思われる場合は、すぐに管理者に連絡してください", + "koKR": "안전 유의사항: 이가 오류라면 즉시 관리자에게 연락하십시오", + "ruRU": "Совет по безопасности: Если вы считаете, что это ошибка, немедленно свяжитесь с администратором", + "ptBR": "Dica de Segurança: Se você acha que isso é um erro, entre em contato com o administrador imediatamente", + "frFR": "Avis de sécurité : Si vous pensez que c'est une erreur, veuillez contacter l'administrateur immédiatement", + "esAR": "Consejo de seguridad: Si piensa que es un error, póngase en contacto con el administrador inmediatamente", + "arDZ": "نصيحة أمنية: إذا كنت تعتقد أن هذا خطأ، يرجى الاتصال بالمدير على الفور" + }, + "timestamp": "2025-04-08T07:53:31.153Z" + }, + "展开主菜单": { + "text": "展开主菜单", + "key": "t_3_1744098802647", + "translations": { + "zhCN": "展开主菜单", + "zhTW": "展開主菜單", + "enUS": "Expand Main Menu", + "jaJP": "メインメニューを展開する", + "koKR": "메인 메뉴 펼치기", + "ruRU": "Развернуть главное меню", + "ptBR": "Expandir o menu principal", + "frFR": "Développer le menu principal", + "esAR": "Expandir el menú principal", + "arDZ": "افتح القائمة الرئيسية" + }, + "timestamp": "2025-04-08T07:53:31.153Z" + }, + "折叠主菜单": { + "text": "折叠主菜单", + "key": "t_4_1744098802046", + "translations": { + "zhCN": "折叠主菜单", + "zhTW": "折疊主菜單", + "enUS": "Foldout Main Menu", + "jaJP": "折りたたみメインメニュー", + "koKR": "접기 메인 메뉴", + "ruRU": "Сворачиваемое главное меню", + "ptBR": "Menu principal dobrável", + "frFR": "Menu principal pliable", + "esAR": "Menú principal plegable", + "arDZ": "القائمة الرئيسية القابلة للطي" + }, + "timestamp": "2025-04-08T07:53:31.153Z" + }, + "欢迎使用AllinSSL,高效管理SSL证书": { + "text": "欢迎使用AllinSSL,高效管理SSL证书", + "key": "t_0_1744164843238", + "translations": { + "zhCN": "欢迎使用AllinSSL,高效管理SSL证书", + "zhTW": "歡迎使用AllinSSL,高效管理SSL憑證", + "enUS": "Welcome to AllinSSL, Efficient SSL Certificate Management", + "jaJP": "AllinSSLへようこそ、SSL証明書の効率的な管理", + "koKR": "AllinSSL을 환영합니다, SSL 셀프리피켓 효율적 관리", + "ruRU": "Добро пожаловать в AllinSSL, эффективное управление SSL-сертификатами", + "ptBR": "Bem-vindo ao AllinSSL, gerenciamento eficiente de certificados SSL", + "frFR": "Bienvenue dans AllinSSL, gestion efficace des certificats SSL", + "esAR": "Bienvenido a AllinSSL, gestión eficiente de certificados SSL", + "arDZ": "مرحبًا بكم في AllinSSL، إدارة فعالة لشهادات SSL" + }, + "timestamp": "2025-04-09T02:14:03.238Z" + }, + "AllinSSL": { + "text": "AllinSSL", + "key": "t_1_1744164835667", + "translations": { + "zhCN": "AllinSSL", + "zhTW": "AllinSSL", + "enUS": "AllinSSL", + "jaJP": "AllinSSL", + "koKR": "AllinSSL", + "ruRU": "AllinSSL", + "ptBR": "AllinSSL", + "frFR": "AllinSSL", + "esAR": "AllinSSL", + "arDZ": "AllinSSL" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "账号登录": { + "text": "账号登录", + "key": "t_2_1744164839713", + "translations": { + "zhCN": "账号登录", + "zhTW": "帳號登錄", + "enUS": "Account Login", + "jaJP": "アカウントログイン", + "koKR": "계정 로그인", + "ruRU": "Вход в аккаунт", + "ptBR": "Login de Conta", + "frFR": "Connexion du compte", + "esAR": "Iniciar sesión en la cuenta", + "arDZ": "دخول الحساب" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "请输入用户名": { + "text": "请输入用户名", + "key": "t_3_1744164839524", + "translations": { + "zhCN": "请输入用户名", + "zhTW": "請輸入用戶名", + "enUS": "Please enter the username", + "jaJP": "ユーザー名を入力してください", + "koKR": "사용자 이름을 입력하세요", + "ruRU": "Введите имя пользователя", + "ptBR": "Por favor, insira o nome de usuário", + "frFR": "Veuillez saisir le nom d'utilisateur", + "esAR": "Por favor, ingrese el nombre de usuario", + "arDZ": "من فضلك أدخل اسم المستخدم" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "请输入密码": { + "text": "请输入密码", + "key": "t_4_1744164840458", + "translations": { + "zhCN": "请输入密码", + "zhTW": "請輸入密碼", + "enUS": "Please enter the password", + "jaJP": "パスワードを入力してください", + "koKR": "비밀번호를 입력하세요", + "ruRU": "Введіть пароль", + "ptBR": "Por favor, insira a senha", + "frFR": "Veuillez saisir le mot de passe", + "esAR": "Por favor, ingrese la contraseña", + "arDZ": "من فضلك أدخل كلمة المرور" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "记住密码": { + "text": "记住密码", + "key": "t_5_1744164840468", + "translations": { + "zhCN": "记住密码", + "zhTW": "記住密碼", + "enUS": "Remember Password", + "jaJP": "パスワードを覚える", + "koKR": "암호를 기억하다", + "ruRU": "Запомнить пароль", + "ptBR": "Lembrar senha", + "frFR": "Rappelez-vous du mot de passe", + "esAR": "Recordar contraseña", + "arDZ": "تذكر كلمة المرور" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "忘记密码": { + "text": "忘记密码", + "key": "t_6_1744164838900", + "translations": { + "zhCN": "忘记密码", + "zhTW": "忘記密碼", + "enUS": "Forget password", + "jaJP": "パスワードを忘れたら", + "koKR": "비밀번호를 잊었나요?", + "ruRU": "Забыли пароль?", + "ptBR": "Esqueceu sua senha?", + "frFR": "Oublié votre mot de passe?", + "esAR": "¿Olvidaste tu contraseña?", + "arDZ": "هل نسيت كلمة المرور؟" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "登录中": { + "text": "登录中", + "key": "t_7_1744164838625", + "translations": { + "zhCN": "登录中", + "zhTW": "登錄中", + "enUS": "Logging in", + "jaJP": "ログイン中", + "koKR": "로그인 중", + "ruRU": "Вход в систему", + "ptBR": "Entrando", + "frFR": "En cours de connexion", + "esAR": "Logueándose", + "arDZ": "في إجراء الدخول" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "登录": { + "text": "登录", + "key": "t_8_1744164839833", + "translations": { + "zhCN": "登录", + "zhTW": "登錄", + "enUS": "Login", + "jaJP": "ログイン", + "koKR": "로그인", + "ruRU": "Вход", + "ptBR": "Entrar", + "frFR": "Se connecter", + "esAR": "Iniciar sesión", + "arDZ": "تسجيل الدخول" + }, + "timestamp": "2025-04-09T02:14:03.240Z" + }, + "退出登录": { + "text": "退出登录", + "key": "t_0_1744168657526", + "translations": { + "zhCN": "退出登录", + "zhTW": "登出", + "enUS": "Log out", + "jaJP": "ログアウト", + "koKR": "로그아웃", + "ruRU": "Выйти из системы", + "ptBR": "Sair", + "frFR": "Déconnecter", + "esAR": "Salir", + "arDZ": "تسجيل الخروج" + }, + "timestamp": "2025-04-09T03:17:37.526Z" + }, + "首页": { + "text": "首页", + "key": "t_0_1744258111441", + "translations": { + "zhCN": "首页", + "zhTW": "首頁", + "enUS": "Home", + "jaJP": "ホーム", + "koKR": "홈", + "ruRU": "Главная", + "ptBR": "Início", + "frFR": "Accueil", + "esAR": "Inicio", + "arDZ": "الصفحة الرئيسية" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "自动化部署": { + "text": "自动化部署", + "key": "t_1_1744258113857", + "translations": { + "zhCN": "自动化部署", + "zhTW": "自動部署", + "enUS": "Automation Deployment", + "jaJP": "自動デプロイメント", + "koKR": "자동 배포", + "ruRU": "Автоматическая部署", + "ptBR": "Implantação Automatizada", + "frFR": "Déploiement Automatisé", + "esAR": "Despliegue Automatizado", + "arDZ": "توزيع آلي" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "证书管理": { + "text": "证书管理", + "key": "t_2_1744258111238", + "translations": { + "zhCN": "证书管理", + "zhTW": "證書管理", + "enUS": "Certificate Management", + "jaJP": "証明書管理", + "koKR": "서비스 관리", + "ruRU": "Управление сертификатами", + "ptBR": "Gestão de Certificados", + "frFR": "Gestion des certificats", + "esAR": "Gestión de certificados", + "arDZ": "إدارة الشهادات" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "证书申请": { + "text": "证书申请", + "key": "t_3_1744258111182", + "translations": { + "zhCN": "证书申请", + "zhTW": "證書申請", + "enUS": "Certificate Application", + "jaJP": "証明書申請", + "koKR": "서류 신청", + "ruRU": "Заявка на сертификат", + "ptBR": "Aplicação de certificado", + "frFR": "Demande de certificat", + "esAR": "Solicitud de certificado", + "arDZ": "طلب شهادة" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "授权API管理": { + "text": "授权API管理", + "key": "t_4_1744258111238", + "translations": { + "zhCN": "授权API管理", + "zhTW": "授權API管理", + "enUS": "Authorization API Management", + "jaJP": "認証API管理", + "koKR": "인증 API 관리", + "ruRU": "Управление API авторизации", + "ptBR": "Gerenciamento de API de autorização", + "frFR": "Gestion de l'API d'autorisation", + "esAR": "Gestión de API de autorización", + "arDZ": "إدارة API التصريح" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "监控": { + "text": "监控", + "key": "t_5_1744258110516", + "translations": { + "zhCN": "监控", + "zhTW": "監控", + "enUS": "Monitoring", + "jaJP": "監視", + "koKR": "감시", + "ruRU": "Мониторинг", + "ptBR": "Monitoramento", + "frFR": "Surveillance", + "esAR": "Monitoreo", + "arDZ": "مراقبة" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "设置": { + "text": "设置", + "key": "t_6_1744258111153", + "translations": { + "zhCN": "设置", + "zhTW": "設定", + "enUS": "Settings", + "jaJP": "設定", + "koKR": "설정", + "ruRU": "Настройки", + "ptBR": "Configurações", + "frFR": "Paramètres", + "esAR": "Ajustes", + "arDZ": "إعدادات" + }, + "timestamp": "2025-04-10T04:08:33.857Z" + }, + "返回工作流列表": { + "text": "返回工作流列表", + "key": "t_0_1744861190562", + "translations": { + "zhCN": "返回工作流列表", + "zhTW": "返回工作流程列表", + "enUS": "Return workflow list", + "jaJP": "ワークフローリストの返信", + "koKR": "워크플로우 목록 반환", + "ruRU": "Возврат списка workflows", + "ptBR": "Retornar lista de fluxos de trabalho", + "frFR": "Renvoyer la liste des flux de travail", + "esAR": "Retornar lista de flujos de trabajo", + "arDZ": "إرجاع قائمة عملية العمل" + }, + "timestamp": "2025-04-17T03:39:54.395Z" + }, + "运行": { + "text": "运行", + "key": "t_1_1744861189113", + "translations": { + "zhCN": "运行", + "zhTW": "運行", + "enUS": "Run", + "jaJP": "実行", + "koKR": "실행", + "ruRU": "Запуск", + "ptBR": "Executar", + "frFR": "Exécuter", + "esAR": "Ejecutar", + "arDZ": "تشغيل" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "保存": { + "text": "保存", + "key": "t_2_1744861190040", + "translations": { + "zhCN": "保存", + "zhTW": "儲存", + "enUS": "Save", + "jaJP": "保存する", + "koKR": "저장", + "ruRU": "Сохранить", + "ptBR": "Salvar", + "frFR": "Sauvegarder", + "esAR": "Guardar", + "arDZ": "حفظ" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "请选择一个节点进行配置": { + "text": "请选择一个节点进行配置", + "key": "t_3_1744861190932", + "translations": { + "zhCN": "请选择一个节点进行配置", + "zhTW": "請選擇一個節點進行配置", + "enUS": "Please select a node to configure", + "jaJP": "設定するノードを選んでください", + "koKR": "구성할 노드를 선택하세요", + "ruRU": "Выберите узел для конфигурации", + "ptBR": "Selecione um nó para configurar", + "frFR": "Veuillez sélectionner un nœud à configurer", + "esAR": "Seleccione un nodo para configurar", + "arDZ": "أختر عقدة لتكوينها" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "点击左侧流程图中的节点来配置它": { + "text": "点击左侧流程图中的节点来配置它", + "key": "t_4_1744861194395", + "translations": { + "zhCN": "点击左侧流程图中的节点来配置它", + "zhTW": "點擊左側流程圖中的節點來配置它", + "enUS": "Click on the node in the left-side workflow diagram to configure it", + "jaJP": "左側のフローウォークダイアグラムのノードをクリックして設定してください", + "koKR": "왼쪽의 프로세스 다이어그램에서 노드를 클릭하여 설정하세요", + "ruRU": "Нажмите на узел в левой части схематического процесса, чтобы настроить его", + "ptBR": "Clique no nó do diagrama de workflow do lado esquerdo para configurá-lo", + "frFR": "Clique sur le nœud dans le diagramme de flux de gauche pour le configurer", + "esAR": "Haga clic en el nodo del diagrama de flujo en la parte izquierda para configurarlo", + "arDZ": "انقر على النقطة في الشريحة اليسرى من مخطط العمل لتزويده بالتكوين" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "开始": { + "text": "开始", + "key": "t_5_1744861189528", + "translations": { + "zhCN": "开始", + "zhTW": "開始", + "enUS": "Start", + "jaJP": "始めます", + "koKR": "시작", + "ruRU": "начать", + "ptBR": "iniciar", + "frFR": "commencer", + "esAR": "comenzar", + "arDZ": "تبدأ" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "未选择节点": { + "text": "未选择节点", + "key": "t_6_1744861190121", + "translations": { + "zhCN": "未选择节点", + "zhTW": "未選擇節點", + "enUS": "No node selected", + "jaJP": "ノードを選択していない", + "koKR": "노드를 선택하지 않았습니다", + "ruRU": "Элемент не выбран", + "ptBR": "Nenhum nó selected", + "frFR": "Aucun noeud sélectionné", + "esAR": "Nodo no seleccionado", + "arDZ": "لم يتم اختيار العقدة" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "配置已保存": { + "text": "配置已保存", + "key": "t_7_1744861189625", + "translations": { + "zhCN": "配置已保存", + "zhTW": "配置已保存", + "enUS": "Configuration saved", + "jaJP": "設定が保存されました", + "koKR": "설정이 저장되었습니다", + "ruRU": "Конфигурация сохранена", + "ptBR": "Configuração salva", + "frFR": "Configuration enregistrée", + "esAR": "Configuración guardada", + "arDZ": "تم حفظ الإعدادات" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "开始运行流程": { + "text": "开始运行流程", + "key": "t_8_1744861189821", + "translations": { + "zhCN": "开始运行流程", + "zhTW": "開始執行流程", + "enUS": "Start the workflow", + "jaJP": "ワークフローの開始", + "koKR": "워크플로우 시작", + "ruRU": "Начать процесс", + "ptBR": "Iniciar fluxo de trabalho", + "frFR": "Démarrer le processus", + "esAR": "Iniciar flujo de trabajo", + "arDZ": "بدء عملية العمل" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "选中节点:": { + "text": "选中节点:", + "key": "t_9_1744861189580", + "translations": { + "zhCN": "选中节点:", + "zhTW": "選中節點:", + "enUS": "Selected node:", + "jaJP": "選択ノード:", + "koKR": "선택된 노드:", + "ruRU": "Выбранный узел:", + "ptBR": "Nó selecionado:", + "frFR": "Nœud sélectionné :", + "esAR": "Nodo seleccionado:", + "arDZ": "النقطة المختارة:" + }, + "timestamp": "2025-04-17T03:39:54.396Z" + }, + "节点": { + "text": "节点", + "key": "t_0_1744870861464", + "translations": { + "zhCN": "节点", + "zhTW": "節點", + "enUS": "Node", + "jaJP": "ノード", + "koKR": "노드", + "ruRU": "узел", + "ptBR": "nó", + "frFR": "nœud", + "esAR": "nodo", + "arDZ": "نقطة" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "节点配置": { + "text": "节点配置", + "key": "t_1_1744870861944", + "translations": { + "zhCN": "节点配置", + "zhTW": "節點配置", + "enUS": "Node Configuration", + "jaJP": "ノード設定", + "koKR": "노드 설정", + "ruRU": "Конфигурация узла", + "ptBR": "Configuração de nó", + "frFR": "Configuration de noeud", + "esAR": "Configuración de nodo", + "arDZ": "إعداد العقدة" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "请选择左侧节点进行配置": { + "text": "请选择左侧节点进行配置", + "key": "t_2_1744870863419", + "translations": { + "zhCN": "请选择左侧节点进行配置", + "zhTW": "請選擇左側節點進行配置", + "enUS": "Please select the left node for configuration", + "jaJP": "左側のノードを選択して設定してください", + "koKR": "왼쪽 노드를 선택하여 설정하세요", + "ruRU": "Выберите левый узел для настройки", + "ptBR": "Selecione o nó esquerdo para configuração", + "frFR": "Veuillez sélectionner le nœud de gauche pour la configuration", + "esAR": "Seleccione el nodo izquierdo para la configuración", + "arDZ": "يرجى اختيار العقدة اليسرى للتكوين" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "未找到该节点类型的配置组件": { + "text": "未找到该节点类型的配置组件", + "key": "t_3_1744870864615", + "translations": { + "zhCN": "未找到该节点类型的配置组件", + "zhTW": "未找到該節點類型的配置組件", + "enUS": "Configuration component for this node type not found", + "jaJP": "このノードタイプの設定コンポーネントが見つかりませんでした", + "koKR": "이 노드 유형의 구성 구성 요소를 찾을 수 없습니다", + "ruRU": "Не найден компонент конфигурации для этого типа узла", + "ptBR": "Componente de configuração para esse tipo de nó não encontrado", + "frFR": "Composant de configuration pour ce type de noeud introuvable", + "esAR": "No se encontró el componente de configuración para este tipo de nodo", + "arDZ": "لم يتم العثور على مكون التكوين لهذا النوع من العقد" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "取消": { + "text": "取消", + "key": "t_4_1744870861589", + "translations": { + "zhCN": "取消", + "zhTW": "取消", + "enUS": "Cancel", + "jaJP": "キャンセル", + "koKR": "취소", + "ruRU": "Отменить", + "ptBR": "Cancelar", + "frFR": "Annuler", + "esAR": "Cancelar", + "arDZ": "إلغاء" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "确定": { + "text": "确定", + "key": "t_5_1744870862719", + "translations": { + "zhCN": "确定", + "zhTW": "確定", + "enUS": "Confirm", + "jaJP": "確定", + "koKR": "확인", + "ruRU": "подтвердить", + "ptBR": "confirmar", + "frFR": "confirmer", + "esAR": "confirmar", + "arDZ": "تحديد" + }, + "timestamp": "2025-04-17T06:21:04.616Z" + }, + "每分钟": { + "text": "每分钟", + "key": "t_0_1744875938285", + "translations": { + "zhCN": "每分钟", + "zhTW": "每分鐘", + "enUS": "Every minute", + "jaJP": "分ごとに", + "koKR": "분마다", + "ruRU": "каждую минуту", + "ptBR": "a cada minuto", + "frFR": "à chaque minute", + "esAR": "cada minuto", + "arDZ": "كل دقيقة" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "每小时": { + "text": "每小时", + "key": "t_1_1744875938598", + "translations": { + "zhCN": "每小时", + "zhTW": "每小時", + "enUS": "Each hour", + "jaJP": "毎時間", + "koKR": "매 시간", + "ruRU": "каждый час", + "ptBR": "a cada hora", + "frFR": "chaque heure", + "esAR": "cada hora", + "arDZ": "كل ساعة" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "每天": { + "text": "每天", + "key": "t_2_1744875938555", + "translations": { + "zhCN": "每天", + "zhTW": "每天", + "enUS": "Every day", + "jaJP": "毎日", + "koKR": "매일", + "ruRU": "каждый день", + "ptBR": "cada dia", + "frFR": "chaque jour", + "esAR": "cada día", + "arDZ": "كل يوم" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "每月": { + "text": "每月", + "key": "t_3_1744875938310", + "translations": { + "zhCN": "每月", + "zhTW": "每月", + "enUS": "Each month", + "jaJP": "毎月", + "koKR": "매월", + "ruRU": "каждый месяц", + "ptBR": "cada mês", + "frFR": "chaque mois", + "esAR": "cada mes", + "arDZ": "كل شهر" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "自动执行": { + "text": "自动执行", + "key": "t_4_1744875940750", + "translations": { + "zhCN": "自动执行", + "zhTW": "自動執行", + "enUS": "Automatic execution", + "jaJP": "自動実行", + "koKR": "자동 실행", + "ruRU": "Автоматическое выполнение", + "ptBR": "Execução automática", + "frFR": "Exécution automatique", + "esAR": "Ejecución automática", + "arDZ": "تنفيذ تلقائي" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "手动执行": { + "text": "手动执行", + "key": "t_5_1744875940010", + "translations": { + "zhCN": "手动执行", + "zhTW": "手動執行", + "enUS": "Manual execution", + "jaJP": "手動実行", + "koKR": "수동 실행", + "ruRU": "Ручное выполнение", + "ptBR": "Execução manual", + "frFR": "Exécution manuelle", + "esAR": "Ejecución manual", + "arDZ": "تنفيذ يدوي" + }, + "timestamp": "2025-04-17T07:45:40.750Z" + }, + "测试PID": { + "text": "测试PID", + "key": "t_0_1744879616135", + "translations": { + "zhCN": "测试PID", + "zhTW": "測試PID", + "enUS": "Test PID", + "jaJP": "テストPID", + "koKR": "테스트PID", + "ruRU": "Тест PID", + "ptBR": "Teste PID", + "frFR": "Test PID", + "esAR": "Test PID", + "arDZ": "اختبار PID" + }, + "timestamp": "2025-04-17T08:46:56.944Z" + }, + "请输入测试PID": { + "text": "请输入测试PID", + "key": "t_1_1744879616555", + "translations": { + "zhCN": "请输入测试PID", + "zhTW": "請輸入測試PID", + "enUS": "Please enter the test PID", + "jaJP": "テストPIDを入力してください", + "koKR": "테스트 PID를 입력하세요", + "ruRU": "Введите тестовый PID", + "ptBR": "Por favor, insira o PID de teste", + "frFR": "Veuillez saisir le PID de test", + "esAR": "Por favor, ingrese el PID de prueba", + "arDZ": "الرجاء إدخال PID الاختباري" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "执行周期": { + "text": "执行周期", + "key": "t_2_1744879616413", + "translations": { + "zhCN": "执行周期", + "zhTW": "執行周期", + "enUS": "Execution cycle", + "jaJP": "実行サイクル", + "koKR": "실행 주기", + "ruRU": "Период выполнения", + "ptBR": "Período de execução", + "frFR": "Cycle d'exécution", + "esAR": "Período de ejecución", + "arDZ": "فترة التنفيذ" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "分钟": { + "text": "分钟", + "key": "t_3_1744879615723", + "translations": { + "zhCN": "分钟", + "zhTW": "分鐘", + "enUS": "minute", + "jaJP": "分", + "koKR": "분", + "ruRU": "минута", + "ptBR": "minuto", + "frFR": "minute", + "esAR": "minuto", + "arDZ": "دقيقة" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "请输入分钟": { + "text": "请输入分钟", + "key": "t_4_1744879616168", + "translations": { + "zhCN": "请输入分钟", + "zhTW": "請輸入分鐘", + "enUS": "Please enter minutes", + "jaJP": "分を入力してください", + "koKR": "분을 입력하세요", + "ruRU": "Введите минуты", + "ptBR": "Por favor, insira os minutos", + "frFR": "Veuillez saisir les minutes", + "esAR": "Por favor, ingrese minutos", + "arDZ": "من فضلك، أدخل الدقائق" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "小时": { + "text": "小时", + "key": "t_5_1744879615277", + "translations": { + "zhCN": "小时", + "zhTW": "小時", + "enUS": "hour", + "jaJP": "時間", + "koKR": "시간", + "ruRU": "час", + "ptBR": "hora", + "frFR": "heure", + "esAR": "hora", + "arDZ": "ساعة" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "请输入小时": { + "text": "请输入小时", + "key": "t_6_1744879616944", + "translations": { + "zhCN": "请输入小时", + "zhTW": "請輸入小時", + "enUS": "Please enter hours", + "jaJP": "時間を入力してください", + "koKR": "시간을 입력하세요", + "ruRU": "Введіть часы", + "ptBR": "Por favor, insira as horas", + "frFR": "Veuillez saisir des heures", + "esAR": "Por favor, introduzca las horas", + "arDZ": "الرجاء إدخال الساعات" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "日期": { + "text": "日期", + "key": "t_7_1744879615743", + "translations": { + "zhCN": "日期", + "zhTW": "日期", + "enUS": "Date", + "jaJP": "日付", + "koKR": "날짜", + "ruRU": "Дата", + "ptBR": "Data", + "frFR": "Date", + "esAR": "Fecha", + "arDZ": "التاريخ" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "请选择日期": { + "text": "请选择日期", + "key": "t_8_1744879616493", + "translations": { + "zhCN": "请选择日期", + "zhTW": "請選擇日期", + "enUS": "Please select a date", + "jaJP": "日付を選択してください", + "koKR": "날짜를 선택하세요", + "ruRU": "Выберите дату", + "ptBR": "Selecione a data", + "frFR": "Sélectionnez une date", + "esAR": "Seleccione una fecha", + "arDZ": "اختر التاريخ" + }, + "timestamp": "2025-04-17T08:46:56.945Z" + }, + "每星期": { + "text": "每星期", + "key": "t_0_1744942117992", + "translations": { + "zhCN": "每周", + "zhTW": "每週", + "enUS": "Every week", + "jaJP": "毎週", + "koKR": "매 주", + "ruRU": "каждую неделю", + "ptBR": "cada semana", + "frFR": "chaque semaine", + "esAR": "cada semana", + "arDZ": "كل أسبوع" + }, + "timestamp": "2025-04-18T02:08:37.992Z" + }, + "周一": { + "text": "周一", + "key": "t_1_1744942116527", + "translations": { + "zhCN": "周一", + "zhTW": "星期一", + "enUS": "Monday", + "jaJP": "月曜日", + "koKR": "월요일", + "ruRU": "понедельник", + "ptBR": "segunda-feira", + "frFR": "lundi", + "esAR": "lunes", + "arDZ": "الإثنين" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周二": { + "text": "周二", + "key": "t_2_1744942117890", + "translations": { + "zhCN": "周二", + "zhTW": "星期二", + "enUS": "Tuesday", + "jaJP": "火曜日", + "koKR": "화요일", + "ruRU": "вторник", + "ptBR": "terça-feira", + "frFR": "mardi", + "esAR": "martes", + "arDZ": "الثلاثاء" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周三": { + "text": "周三", + "key": "t_3_1744942117885", + "translations": { + "zhCN": "周三", + "zhTW": "星期三", + "enUS": "Wednesday", + "jaJP": "水曜日", + "koKR": "수요일", + "ruRU": "Среда", + "ptBR": "Quarta-feira", + "frFR": "Mercredi", + "esAR": "Miércoles", + "arDZ": "الأربعاء" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周四": { + "text": "周四", + "key": "t_4_1744942117738", + "translations": { + "zhCN": "周四", + "zhTW": "週四", + "enUS": "Thursday", + "jaJP": "木曜日", + "koKR": "목요일", + "ruRU": "четверг", + "ptBR": "quarta-feira", + "frFR": "jeudi", + "esAR": "jueves", + "arDZ": "الخميس" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周五": { + "text": "周五", + "key": "t_5_1744942117167", + "translations": { + "zhCN": "周五", + "zhTW": "週五", + "enUS": "Friday", + "jaJP": "金曜日", + "koKR": "금요일", + "ruRU": "пятница", + "ptBR": "quinta-feira", + "frFR": "vendredi", + "esAR": "viernes", + "arDZ": "الجمعة" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周六": { + "text": "周六", + "key": "t_6_1744942117815", + "translations": { + "zhCN": "周六", + "zhTW": "週六", + "enUS": "Saturday", + "jaJP": "土曜日", + "koKR": "토요일", + "ruRU": "суббота", + "ptBR": "sábado", + "frFR": "samedi", + "esAR": "sábado", + "arDZ": "السبت" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "周日": { + "text": "周日", + "key": "t_7_1744942117862", + "translations": { + "zhCN": "周日", + "zhTW": "週日", + "enUS": "Sunday", + "jaJP": "日曜日", + "koKR": "일요일", + "ruRU": "воскресенье", + "ptBR": "domingo", + "frFR": "dimanche", + "esAR": "domingo", + "arDZ": "الأحد" + }, + "timestamp": "2025-04-18T02:08:37.993Z" + }, + "请输入域名": { + "text": "请输入域名", + "key": "t_0_1744958839535", + "translations": { + "zhCN": "请输入域名", + "zhTW": "請輸入域名", + "enUS": "Please enter the domain name", + "jaJP": "ドメイン名を入力してください", + "koKR": "도메인 이름을 입력하세요", + "ruRU": "Введите доменное имя", + "ptBR": "Por favor, insira o nome do domínio", + "frFR": "Veuillez saisir le nom de domaine", + "esAR": "Por favor, ingrese el nombre de dominio", + "arDZ": "الرجاء إدخال اسم النطاق" + }, + "timestamp": "2025-04-18T06:47:40.078Z" + }, + "请输入邮箱": { + "text": "请输入邮箱", + "key": "t_1_1744958840747", + "translations": { + "zhCN": "请输入邮箱", + "zhTW": "請輸入郵箱", + "enUS": "Please enter your email", + "jaJP": "メールを入力してください", + "koKR": "이메일을 입력하세요", + "ruRU": "Введите адрес электронной почты", + "ptBR": "Por favor, insira seu e-mail", + "frFR": "Veuillez saisir votre adresse e-mail", + "esAR": "Por favor, ingrese su correo electrónico", + "arDZ": "الرجاء إدخال بريدك الإلكتروني" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "邮箱格式不正确": { + "text": "邮箱格式不正确", + "key": "t_2_1744958840131", + "translations": { + "zhCN": "邮箱格式不正确", + "zhTW": "郵箱格式不正確", + "enUS": "Email format is incorrect", + "jaJP": "メールフォーマットが不正です", + "koKR": "이메일 형식이 틀립니다", + "ruRU": "Неправильный формат электронной почты", + "ptBR": "Formato de e-mail incorreto", + "frFR": "Le format de l'e-mail est incorrect", + "esAR": "El formato del correo electrónico es incorrecto", + "arDZ": "تنسيق البريد الإلكتروني غير صحيح" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "请选择DNS提供商授权": { + "text": "请选择DNS提供商授权", + "key": "t_3_1744958840485", + "translations": { + "zhCN": "请选择DNS提供商授权", + "zhTW": "請選擇DNS提供商授權", + "enUS": "Please select DNS provider authorization", + "jaJP": "DNSプロバイダーの認証を選択してください", + "koKR": "DNS 제공업체 인증을 선택하세요", + "ruRU": "Выберите предоставление DNS-авторизации", + "ptBR": "Selecione o provedor de DNS para autorização", + "frFR": "Veuillez choisir le fournisseur de DNS pour l'autorisation", + "esAR": "Seleccione el proveedor de DNS para la autorización", + "arDZ": "يرجى اختيار مزود DNS للإذن" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "本地部署": { + "text": "本地部署", + "key": "t_4_1744958838951", + "translations": { + "zhCN": "本地部署", + "zhTW": "本地部署", + "enUS": "Local Deployment", + "jaJP": "ローカルデプロイメント", + "koKR": "로컬 배포", + "ruRU": "Локальная установка", + "ptBR": "Implantação Local", + "frFR": "Déploiement local", + "esAR": "Despliegue local", + "arDZ": "تثبيت محلي" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "SSH部署": { + "text": "SSH部署", + "key": "t_5_1744958839222", + "translations": { + "zhCN": "SSH部署", + "zhTW": "SSH部署", + "enUS": "SSH Deployment", + "jaJP": "SSHデプロイメント", + "koKR": "SSH 배포", + "ruRU": "SSH-деплой", + "ptBR": "Desempenho SSH", + "frFR": "Déploiement SSH", + "esAR": "Despliegue SSH", + "arDZ": "تثبيت SSH" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "宝塔面板/1panel(部署到面板证书)": { + "text": "宝塔面板/1panel(部署到面板证书)", + "key": "t_6_1744958843569", + "translations": { + "zhCN": "宝塔面板/1面板(部署到面板证书)", + "zhTW": "宝塔面板/1面板(部署至面板憑證)", + "enUS": "Bao Ta Panel/1 panel (Deploy to panel certificate)", + "jaJP": "宝塔パネル/1パネル(パネル証明書にデプロイ)", + "koKR": "보타 패널/1 패널(패널 인증서로 배포)", + "ruRU": "Панель Баота/1 панель (Установить на панели сертификат)", + "ptBR": "Painel Bota/1 painel (Instalar no certificado do painel)", + "frFR": "Panneau Bao Ta/1 panneau (Déployer sur le certificat du panneau)", + "esAR": "Panel Bao Ta/1 panel (Desplegar en el certificado del panel)", + "arDZ": "لوحة بوتا/1 لوحة (تثبيت في شهادة لوحة)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "宝塔面板/1panel(部署到指定网站项目)": { + "text": "宝塔面板/1panel(部署到指定网站项目)", + "key": "t_7_1744958841708", + "translations": { + "zhCN": "宝塔面板/1面板(部署到指定网站项目)", + "zhTW": "宝塔面板/1面板(部署至指定網站項目)", + "enUS": "1panel (Deploy to specified website project)", + "jaJP": "1パネル(指定のウェブサイトプロジェクトにデプロイ)", + "koKR": "1판널(지정된 웹사이트 프로젝트로 배포)", + "ruRU": "1панель (Деплой на указанный веб-проект)", + "ptBR": "1painel (Deploiamento para o projeto de site especificado)", + "frFR": "1panneau (Déploiement sur le projet de site spécifié)", + "esAR": "1pantalla (Despliegue al proyecto de sitio específico)", + "arDZ": "1 panel (تثبيت على المشروع المحدد لل موقع)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "腾讯云CDN/阿里云CDN": { + "text": "腾讯云CDN/阿里云CDN", + "key": "t_8_1744958841658", + "translations": { + "zhCN": "腾讯云CDN/阿里云CDN", + "zhTW": "腾讯雲CDN/阿里雲CDN", + "enUS": "Tencent Cloud CDN/Aliyun CDN", + "jaJP": "テンセントクラウドCDN/アリクラウドCDN", + "koKR": "테encent 클라우드 CDN/알리 클라우드 CDN", + "ruRU": "Кloud CDN/АлиCloud CDN", + "ptBR": "Tencent Cloud CDN/AliCloud CDN", + "frFR": "Tencent Cloud CDN/AliCloud CDN", + "esAR": "Tencent Cloud CDN/AliCloud CDN", + "arDZ": "تencent Cloud CDN/أليCloud CDN" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "腾讯云WAF": { + "text": "腾讯云WAF", + "key": "t_9_1744958840634", + "translations": { + "zhCN": "腾讯云WAF", + "zhTW": "腾讯雲WAF", + "enUS": "Tencent Cloud WAF", + "jaJP": "腾讯クラウドWAF", + "koKR": "테니엔 클라우드 WAF", + "ruRU": "Тencent Cloud WAF", + "ptBR": "WAF da Tencent Cloud", + "frFR": "WAF de Tencent Cloud", + "esAR": "WAF de Tencent Cloud", + "arDZ": "WAF من Tencent Cloud" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "阿里云WAF": { + "text": "阿里云WAF", + "key": "t_10_1744958860078", + "translations": { + "zhCN": "阿里云WAF", + "zhTW": "阿里雲WAF", + "enUS": "Alicloud WAF", + "jaJP": "アリクラウドWAF", + "koKR": "아리 클라우드 WAF", + "ruRU": "АлиCloud WAF", + "ptBR": "Alicloud WAF", + "frFR": "WAF d'Alicloud", + "esAR": "WAF de AliCloud", + "arDZ": "WAF من آليكلاود" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "本次自动申请的证书": { + "text": "本次自动申请的证书", + "key": "t_11_1744958840439", + "translations": { + "zhCN": "本次自动申请的证书", + "zhTW": "本次自動申請的證書", + "enUS": "This automatically applied certificate", + "jaJP": "この自動申請証明書", + "koKR": "이 자동 신청 증명서", + "ruRU": "Этот автоматически применяемый сертификат", + "ptBR": "Este certificado aplicado automaticamente", + "frFR": "Ce certificat appliqué automatiquement", + "esAR": "Este certificado aplicado automáticamente", + "arDZ": "هذا الشهادة المطلوبة تلقائيًا" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "可选证书列表": { + "text": "可选证书列表", + "key": "t_12_1744958840387", + "translations": { + "zhCN": "可选证书列表", + "zhTW": "可選證書清單", + "enUS": "Optional certificate list", + "jaJP": "オプションの証明書リスト", + "koKR": "선택 가능한 인증서 목록", + "ruRU": "Список доступных сертификатов", + "ptBR": "Lista de certificados opcionais", + "frFR": "Liste des certificats optionnels", + "esAR": "Lista de certificados opcionales", + "arDZ": "قائمة الشهادات الاختيارية" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "PEM(*.pem,*.crt,*.key)": { + "text": "PEM(*.pem,*.crt,*.key)", + "key": "t_13_1744958840714", + "translations": { + "zhCN": "PEM(*.pem,*.crt,*.key)", + "zhTW": "PEM(*.pem,*.crt,*.key)", + "enUS": "PEM (*.pem, *.crt, *.key)", + "jaJP": "PEM(*.pem、*.crt、*.key)", + "koKR": "PEM (*.pem, *.crt, *.key)", + "ruRU": "PEM (*.pem, *.crt, *.key)", + "ptBR": "PEM (*.pem, *.crt, *.key)", + "frFR": "PEM (*.pem, *.crt, *.key)", + "esAR": "PEM (*.pem, *.crt, *.key)", + "arDZ": "PEM (*.pem, *.crt, *.key)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "PFX(*.pfx)": { + "text": "PFX(*.pfx)", + "key": "t_14_1744958839470", + "translations": { + "zhCN": "PFX(*.pfx)", + "zhTW": "PFX(*.pfx)", + "enUS": "PFX (*.pfx)", + "jaJP": "PFX(*.pfx)", + "koKR": "PFX (*.pfx)", + "ruRU": "PFX (*.pfx)", + "ptBR": "PFX (*.pfx)", + "frFR": "PFX (*.pfx)", + "esAR": "PFX (*.pfx)", + "arDZ": "PFX (*.pfx)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "JKS(*.jks)": { + "text": "JKS(*.jks)", + "key": "t_15_1744958840790", + "translations": { + "zhCN": "JKS(*.jks)", + "zhTW": "JKS(*.jks)", + "enUS": "JKS (*.jks)", + "jaJP": "JKS (*.jks)", + "koKR": "JKS (*.jks)", + "ruRU": "JKS (*.jks)", + "ptBR": "JKS (*.jks)", + "frFR": "JKS (*.jks)", + "esAR": "JKS (*.jks)", + "arDZ": "JKS (*.jks)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "POSIX bash (linux/macos)": { + "text": "POSIX bash (linux/macos)", + "key": "t_16_1744958841116", + "translations": { + "zhCN": "POSIX bash(Linux/MacOS)", + "zhTW": "POSIX bash(Linux/macOS)", + "enUS": "POSIX bash (Linux/macOS)", + "jaJP": "POSIX bash(Linux/macOS)", + "koKR": "POSIX bash (Linux/macOS)", + "ruRU": "POSIX bash (Linux/macOS)", + "ptBR": "POSIX bash (Linux/macOS)", + "frFR": "POSIX bash (Linux/macOS)", + "esAR": "POSIX bash (Linux/macOS)", + "arDZ": "POSIX bash (Linux/macOS)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "CMD(Windows)": { + "text": "CMD(Windows)", + "key": "t_17_1744958839597", + "translations": { + "zhCN": "命令行(Windows)", + "zhTW": "命令行(Windows)", + "enUS": "CMD (Windows)", + "jaJP": "コマンドライン(Windows)", + "koKR": "명령어 라인 (Windows)", + "ruRU": "Комуンド лайн (Windows)", + "ptBR": "Linha de Comando (Windows)", + "frFR": "CMD (Windows)", + "esAR": "CMD (Windows)", + "arDZ": "CMD (Windows)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "PowerShell(Windows)": { + "text": "PowerShell(Windows)", + "key": "t_18_1744958839895", + "translations": { + "zhCN": "PowerShell(Windows)", + "zhTW": "PowerShell(Windows)", + "enUS": "PowerShell (Windows)", + "jaJP": "PowerShell(ウィンドウズ)", + "koKR": "파워셀(윈도우)", + "ruRU": "PowerShell (Windows)", + "ptBR": "PowerShell (Windows)", + "frFR": "PowerShell (Windows)", + "esAR": "PowerShell (Windows)", + "arDZ": "PowerShell (Windows)" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "证书1": { + "text": "证书1", + "key": "t_19_1744958839297", + "translations": { + "zhCN": "证书1", + "zhTW": "證書1", + "enUS": "Certificate 1", + "jaJP": "証明書1", + "koKR": "인증서1", + "ruRU": "Сертификат1", + "ptBR": "Certificado 1", + "frFR": "Certificat 1", + "esAR": "Certificado 1", + "arDZ": "شهادة1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "证书2": { + "text": "证书2", + "key": "t_20_1744958839439", + "translations": { + "zhCN": "证书2", + "zhTW": "證書2", + "enUS": "Certificate 2", + "jaJP": "証明書2", + "koKR": "증명서 2", + "ruRU": "Сертификат 2", + "ptBR": "Certificado 2", + "frFR": "Certificat 2", + "esAR": "Certificado 2", + "arDZ": "شهادة 2" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "服务器1": { + "text": "服务器1", + "key": "t_21_1744958839305", + "translations": { + "zhCN": "服务器1", + "zhTW": "伺服器1", + "enUS": "Server 1", + "jaJP": "サーバー1", + "koKR": "서버1", + "ruRU": "Сервер 1", + "ptBR": "Servidor 1", + "frFR": "Serveur 1", + "esAR": "Servidor 1", + "arDZ": "خادم 1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "服务器2": { + "text": "服务器2", + "key": "t_22_1744958841926", + "translations": { + "zhCN": "服务器2", + "zhTW": "伺服器2", + "enUS": "Server 2", + "jaJP": "サーバー2", + "koKR": "서버2", + "ruRU": "Сервер 2", + "ptBR": "Servidor 2", + "frFR": "Serveur 2", + "esAR": "Servidor 2", + "arDZ": "خادم 2" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "面板1": { + "text": "面板1", + "key": "t_23_1744958838717", + "translations": { + "zhCN": "面板1", + "zhTW": "面板1", + "enUS": "Panel 1", + "jaJP": "パネル1", + "koKR": "판널 1", + "ruRU": "Панель 1", + "ptBR": "Painel 1", + "frFR": "Panneau 1", + "esAR": "Panel 1", + "arDZ": "اللوحة 1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "面板2": { + "text": "面板2", + "key": "t_24_1744958845324", + "translations": { + "zhCN": "面板2", + "zhTW": "面板2", + "enUS": "Panel 2", + "jaJP": "パネル2", + "koKR": "판널 2", + "ruRU": "PANEL 2", + "ptBR": "Painel 2", + "frFR": "Panneau 2", + "esAR": "Panel 2", + "arDZ": "لوحة 2" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "网站1": { + "text": "网站1", + "key": "t_25_1744958839236", + "translations": { + "zhCN": "网站1", + "zhTW": "網站1", + "enUS": "Website 1", + "jaJP": "ウェブサイト1", + "koKR": "웹사이트 1", + "ruRU": "Сайт 1", + "ptBR": "Site 1", + "frFR": "Site 1", + "esAR": "Sitio 1", + "arDZ": "الموقع 1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "网站2": { + "text": "网站2", + "key": "t_26_1744958839682", + "translations": { + "zhCN": "网站2", + "zhTW": "網站2", + "enUS": "Website 2", + "jaJP": "ウェブサイト2", + "koKR": "웹사이트 2", + "ruRU": "Сайт 2", + "ptBR": "Site 2", + "frFR": "Site 2", + "esAR": "Sitio 2", + "arDZ": "الموقع 2" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "腾讯云1": { + "text": "腾讯云1", + "key": "t_27_1744958840234", + "translations": { + "zhCN": "腾讯云1", + "zhTW": "腾讯雲1", + "enUS": "Tencent Cloud 1", + "jaJP": "テンセントクラウド1", + "koKR": "테encent 클라우드 1", + "ruRU": "Тencent Cloud 1", + "ptBR": "Tencent Cloud 1", + "frFR": "Tencent Cloud 1", + "esAR": "Tencent Cloud 1", + "arDZ": "تencent Cloud 1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "阿里云1": { + "text": "阿里云1", + "key": "t_28_1744958839760", + "translations": { + "zhCN": "阿里云1", + "zhTW": "阿里雲1", + "enUS": "Aliyun 1", + "jaJP": "アリyun 1", + "koKR": "阿里yun 1", + "ruRU": "Алиyun 1", + "ptBR": "Aliyun 1", + "frFR": "Aliyun 1", + "esAR": "Aliyun 1", + "arDZ": "ألييوان 1" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "日": { + "text": "日", + "key": "t_29_1744958838904", + "translations": { + "zhCN": "日", + "zhTW": "日", + "enUS": "Day", + "jaJP": "日", + "koKR": "일", + "ruRU": "день", + "ptBR": "dia", + "frFR": "jour", + "esAR": "día", + "arDZ": "يوم" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "证书格式不正确,请检查是否包含完整的证书头尾标识": { + "text": "证书格式不正确,请检查是否包含完整的证书头尾标识", + "key": "t_30_1744958843864", + "translations": { + "zhCN": "证书格式不正确,请检查是否包含完整的证书头尾标识", + "zhTW": "證書格式不正確,請檢查是否包含完整的證書頭尾識別", + "enUS": "Certificate format is incorrect, please check if it includes the complete certificate header and footer identifiers", + "jaJP": "証明書のフォーマットが不正です。完全な証明書のヘッダおよびフッタ識別子が含まれているか確認してください。", + "koKR": "서류 형식이 잘못되었습니다. 전체 서류 헤더 및 푸터 식별자가 포함되어 있는지 확인해 주세요.", + "ruRU": "Формат сертификата не правильный, пожалуйста, проверьте, содержит ли он полную информацию о заголовке и подзаголовке сертификата", + "ptBR": "O formato do certificado está incorreto, por favor verifique se ele contém os identificadores de cabeçalho e rodapé completos", + "frFR": "Le format du certificat est incorrect, veuillez vérifier s'il contient les identifiants d'en-tête et de pied de page complets", + "esAR": "El formato del certificado no es correcto, por favor revise si contiene las identificaciones de cabecera y pie completo", + "arDZ": "تنسيق الشهادة غير صحيح، يرجى التحقق مما إذا كان يحتوي على العناصر التوضيحية للعناوين والرؤوس الكاملة" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "私钥格式不正确,请检查是否包含完整的私钥头尾标识": { + "text": "私钥格式不正确,请检查是否包含完整的私钥头尾标识", + "key": "t_31_1744958844490", + "translations": { + "zhCN": "私钥格式不正确,请检查是否包含完整的私钥头尾标识", + "zhTW": "私钥格式不正確,請檢查是否包含完整的私钥頭尾識別", + "enUS": "Private key format is incorrect, please check if it includes the complete private key header and footer identifier", + "jaJP": "プライベートキーフォーマットが不正です。完全なプライベートキーヘッダおよびフッタ識別子が含まれているか確認してください。", + "koKR": "비밀키 형식이 잘못되었습니다. 완전한 비밀키 헤더 및 푸터 식별자가 포함되어 있는지 확인해 주세요.", + "ruRU": "Формат私ного ключа incorrect, пожалуйста, проверьте, содержит ли он полный идентификатор заголовка и нижнего колонтитула частного ключа", + "ptBR": "O formato da chave privada está incorreto, por favor, verifique se ele contém o identificador completo do cabeçalho e pé de página da chave privada", + "frFR": "Le format de la clé privée est incorrect, veuillez vérifier si elle contient l'identifiant complet de l'en-tête et du pied de page de la clé privée", + "esAR": "El formato de la clave privada no es correcto, por favor verifique si contiene el identificador completo de la cabecera y el pie de página de la clave privada", + "arDZ": "شكل المفتاح الخاص غير صحيح، يرجى التحقق من أن يحتوي على معرف الرأس والساقطة الكاملة للمفتاح الخاص" + }, + "timestamp": "2025-04-18T06:47:40.083Z" + }, + "自动化名称": { + "text": "自动化名称", + "key": "t_0_1745215914686", + "translations": { + "zhCN": "自动化名称", + "zhTW": "自動化名稱", + "enUS": "Automation Name", + "jaJP": "自動化名前", + "koKR": "자동화 이름", + "ruRU": "Название автоматизации", + "ptBR": "Nome de automação", + "frFR": "Nom d'automatisation", + "esAR": "Nombre de automatización", + "arDZ": "اسم التلقائية" + }, + "timestamp": "2025-04-21T06:11:56.235Z" + }, + "自动": { + "text": "自动", + "key": "t_2_1745215915397", + "translations": { + "zhCN": "自动", + "zhTW": "自動", + "enUS": "Automatic", + "jaJP": "自動", + "koKR": "자동", + "ruRU": "автоматический", + "ptBR": "automático", + "frFR": "automatique", + "esAR": "automático", + "arDZ": "تلقائي" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "手动": { + "text": "手动", + "key": "t_3_1745215914237", + "translations": { + "zhCN": "手动", + "zhTW": "手動", + "enUS": "Manual", + "jaJP": "手動", + "koKR": "수동", + "ruRU": "ручной", + "ptBR": "Manual", + "frFR": "Manuel", + "esAR": "Manual", + "arDZ": "يدوي" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "启用状态": { + "text": "启用状态", + "key": "t_4_1745215914951", + "translations": { + "zhCN": "启用状态", + "zhTW": "啟用狀態", + "enUS": "Enabled Status", + "jaJP": "有効状態", + "koKR": "활성 상태", + "ruRU": "Активный статус", + "ptBR": "Estado ativado", + "frFR": "Statut activé", + "esAR": "Estado activo", + "arDZ": "حالة نشطة" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "启用": { + "text": "启用", + "key": "t_5_1745215914671", + "translations": { + "zhCN": "启用", + "zhTW": "啟用", + "enUS": "Enable", + "jaJP": "有効にする", + "koKR": "활성화", + "ruRU": "Включить", + "ptBR": "Ativar", + "frFR": "Activer", + "esAR": "Activar", + "arDZ": "تفعيل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "停用": { + "text": "停用", + "key": "t_6_1745215914104", + "translations": { + "zhCN": "停用", + "zhTW": "停用", + "enUS": "Disabling", + "jaJP": "停止", + "koKR": "정지", + "ruRU": "Отключение", + "ptBR": "Desativar", + "frFR": "Désactiver", + "esAR": "Desactivar", + "arDZ": "إيقاف" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "创建时间": { + "text": "创建时间", + "key": "t_7_1745215914189", + "translations": { + "zhCN": "创建时间", + "zhTW": "創建時間", + "enUS": "Creation Time", + "jaJP": "作成時間", + "koKR": "생성 시간", + "ruRU": "Время создания", + "ptBR": "Hora de criação", + "frFR": "Heure de création", + "esAR": "Tiempo de creación", + "arDZ": "وقت الإنشاء" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "操作": { + "text": "操作", + "key": "t_8_1745215914610", + "translations": { + "zhCN": "操作", + "zhTW": "操作", + "enUS": "Operation", + "jaJP": "操作", + "koKR": "操作", + "ruRU": "Операция", + "ptBR": "Operação", + "frFR": "Opération", + "esAR": "Operación", + "arDZ": "عملية" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "执行历史": { + "text": "执行历史", + "key": "t_9_1745215914666", + "translations": { + "zhCN": "执行历史", + "zhTW": "執行歷史", + "enUS": "Execution History", + "jaJP": "実行履歴", + "koKR": "실행 이력", + "ruRU": "История выполнения", + "ptBR": "Histórico de execução", + "frFR": "Historique d'exécution", + "esAR": "Historial de ejecución", + "arDZ": "تاريخ التنفيذ" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "执行": { + "text": "执行", + "key": "t_10_1745215914342", + "translations": { + "zhCN": "执行", + "zhTW": "執行", + "enUS": "Execute", + "jaJP": "実行", + "koKR": "실行", + "ruRU": "исполнение", + "ptBR": "executar", + "frFR": "exécuter", + "esAR": "ejecutar", + "arDZ": "تنفيذ" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "编辑": { + "text": "编辑", + "key": "t_11_1745215915429", + "translations": { + "zhCN": "编辑", + "zhTW": "編輯", + "enUS": "Edit", + "jaJP": "編集", + "koKR": "편집", + "ruRU": "Редактировать", + "ptBR": "Editar", + "frFR": "Éditer", + "esAR": "Editar", + "arDZ": "تعديل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "删除": { + "text": "删除", + "key": "t_12_1745215914312", + "translations": { + "zhCN": "删除", + "zhTW": "刪除", + "enUS": "Delete", + "jaJP": "削除", + "koKR": "삭제", + "ruRU": "Удалить", + "ptBR": "Excluir", + "frFR": "Supprimer", + "esAR": "Eliminar", + "arDZ": "حذف" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "执行工作流": { + "text": "执行工作流", + "key": "t_13_1745215915455", + "translations": { + "zhCN": "执行工作流", + "zhTW": "執行工作流程", + "enUS": "Execute workflow", + "jaJP": "ワークフローの実行", + "koKR": "워크플로우 실행", + "ruRU": "Выполнение процесса", + "ptBR": "Executar fluxo de trabalho", + "frFR": "Exécuter le flux de travail", + "esAR": "Ejecutar flujo de trabajo", + "arDZ": "تنفيذ مسار العمل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "工作流执行成功": { + "text": "工作流执行成功", + "key": "t_14_1745215916235", + "translations": { + "zhCN": "工作流执行成功", + "zhTW": "工作流程執行成功", + "enUS": "Workflow executed successfully", + "jaJP": "ワークフローエグゼクション成功", + "koKR": "워크플로우 실행 성공", + "ruRU": "Успешное выполнение рабочей流程", + "ptBR": "Execução do fluxo de trabalho bem-sucedida", + "frFR": "Exécution du flux de travail réussie", + "esAR": "Ejecución del flujo de trabajo exitosa", + "arDZ": "نجاح تنفيذ عملية العمل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "工作流执行失败": { + "text": "工作流执行失败", + "key": "t_15_1745215915743", + "translations": { + "zhCN": "工作流执行失败", + "zhTW": "工作流程執行失敗", + "enUS": "Workflow execution failed", + "jaJP": "ワークフローエクセキュション失敗", + "koKR": "워크플로우 실행 실패", + "ruRU": "Неудача выполнения процесса", + "ptBR": "Execução do fluxo de trabalho falhou", + "frFR": "Échec de l'exécution du flux de travail", + "esAR": "Fallo en la ejecución del flujo de trabajo", + "arDZ": "فشل تنفيذ عملية العمل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "删除工作流": { + "text": "删除工作流", + "key": "t_16_1745215915209", + "translations": { + "zhCN": "删除工作流", + "zhTW": "刪除工作流程", + "enUS": "Delete Workflow", + "jaJP": "ワークフローを削除する", + "koKR": "워크플로우 제거", + "ruRU": "Удалить workflow", + "ptBR": "Excluir workflow", + "frFR": "Supprimer le flux de travail", + "esAR": "Eliminar flujo de trabajo", + "arDZ": "حذف مسار العمل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "工作流删除成功": { + "text": "工作流删除成功", + "key": "t_17_1745215915985", + "translations": { + "zhCN": "工作流删除成功", + "zhTW": "工作流程刪除成功", + "enUS": "Workflow deletion successful", + "jaJP": "ワークフローの削除が成功しました", + "koKR": "워크플로우가 성공적으로 삭제되었습니다", + "ruRU": "Удаление рабочей схемы успешено", + "ptBR": "Deleção do fluxo de trabalho bem-sucedida", + "frFR": "Suppression du flux de travail réussie", + "esAR": "Eliminación del flujo de trabajo exitosa", + "arDZ": "نجاح عملية حذف العملية" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "工作流删除失败": { + "text": "工作流删除失败", + "key": "t_18_1745215915630", + "translations": { + "zhCN": "工作流删除失败", + "zhTW": "工作流程刪除失敗", + "enUS": "Workflow deletion failed", + "jaJP": "ワークフローの削除に失敗しました", + "koKR": "워크플로우 삭제 실패", + "ruRU": "Не удалось удалить рабочий процесс", + "ptBR": "Falha ao excluir fluxo de trabalho", + "frFR": "Échec de la suppression du flux de travail", + "esAR": "Fallo al eliminar el flujo de trabajo", + "arDZ": "فشل حذف مسار العمل" + }, + "timestamp": "2025-04-21T06:11:56.237Z" + }, + "新增自动化部署": { + "text": "新增自动化部署", + "key": "t_0_1745227838699", + "translations": { + "zhCN": "新增自动化部署", + "zhTW": "新增自動部署", + "enUS": "New Automated Deployment", + "jaJP": "新しい自動デプロイメント", + "koKR": "신규 자동 배포", + "ruRU": "Новый автоматический部署", + "ptBR": "Novo deployment automatizado", + "frFR": "Déploiement automatisé ajouté", + "esAR": "Despliegue automatizado nuevo", + "arDZ": "تثبيت آلي جديد" + }, + "timestamp": "2025-04-21T09:30:41.739Z" + }, + "请输入自动化名称": { + "text": "请输入自动化名称", + "key": "t_1_1745227838776", + "translations": { + "zhCN": "请输入自动化名称", + "zhTW": "請輸入自動化名稱", + "enUS": "Please enter the automation name", + "jaJP": "自動化名前を入力してください", + "koKR": "자동화 이름을 입력하세요", + "ruRU": "Введите имя автоматизации", + "ptBR": "Por favor, insira o nome da automação", + "frFR": "Veuillez saisir le nom de l'automatisation", + "esAR": "Por favor, ingrese el nombre de automatización", + "arDZ": "الرجاء إدخال اسم الت automatization" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "确定要执行{name}工作流吗?": { + "text": "确定要执行{name}工作流吗?", + "key": "t_2_1745227839794", + "translations": { + "zhCN": "确定要执行{name}工作流吗?", + "zhTW": "確定要執行{name}工作流程嗎?", + "enUS": "Are you sure you want to execute the {name} workflow?", + "jaJP": "{name}ワークフローの実行を確認しますか?", + "koKR": "{name} 작업 흐름을 실행하시겠습니까?", + "ruRU": "Уверены, что хотите выполнить workflow {name}?", + "ptBR": "Tem certeza de que deseja executar o workflow {name}?", + "frFR": "Êtes-vous sûr de vouloir exécuter le workflow {name}?", + "esAR": "¿Está seguro de que desea ejecutar el flujo de trabajo {name}?", + "arDZ": "هل أنت متأكد من أنك تريد تنفيذ عملية {name}؟" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "确认要删除{name}工作流吗?此操作不可恢复。": { + "text": "确认要删除{name}工作流吗?此操作不可恢复。", + "key": "t_3_1745227841567", + "translations": { + "zhCN": "确认要删除{name}工作流吗?此操作不可恢复。", + "zhTW": "確認要刪除{name}工作流程嗎?此操作無法恢復。", + "enUS": "Confirm deletion of {name} workflow? This action cannot be undone.", + "jaJP": "{name}のワークフローの削除を確認しますか?この操作は元に戻せません。", + "koKR": "{name} 작업流程을 정말로 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "ruRU": "Подтвердите удаление {name} потока работы? Это действие нельзя отменить.", + "ptBR": "Confirma a exclusão do fluxo de trabalho {name}? Esta ação não pode ser revertida.", + "frFR": "Confirmez-vous la suppression du flux de travail {name} ? Cette action ne peut pas être annulée.", + "esAR": "¿Confirma la eliminación del flujo de trabajo {name}? Esta acción no se puede deshacer.", + "arDZ": "هل تؤكد على حذف {name} مسار العمل؟ هذه العملية لا يمكن إلغاؤها." + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "执行时间": { + "text": "执行时间", + "key": "t_4_1745227838558", + "translations": { + "zhCN": "执行时间", + "zhTW": "執行時間", + "enUS": "Execution Time", + "jaJP": "実行時間", + "koKR": "실행 시간", + "ruRU": "Время выполнения", + "ptBR": "Tempo de execução", + "frFR": "Temps d'exécution", + "esAR": "Tiempo de ejecución", + "arDZ": "وقت التنفيذ" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "结束时间": { + "text": "结束时间", + "key": "t_5_1745227839906", + "translations": { + "zhCN": "结束时间", + "zhTW": "結束時間", + "enUS": "End time", + "jaJP": "終了時間", + "koKR": "종료 시간", + "ruRU": "Время окончания", + "ptBR": "Hora de término", + "frFR": "Heure de fin", + "esAR": "Hora de finalización", + "arDZ": "وقت الانتهاء" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "执行方式": { + "text": "执行方式", + "key": "t_6_1745227838798", + "translations": { + "zhCN": "执行方式", + "zhTW": "執行方式", + "enUS": "Execution method", + "jaJP": "実行方法", + "koKR": "실행 방식", + "ruRU": "Способ выполнения", + "ptBR": "Método de execução", + "frFR": "Méthode d'exécution", + "esAR": "Método de ejecución", + "arDZ": "طريقة التنفيذ" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "状态": { + "text": "状态", + "key": "t_7_1745227838093", + "translations": { + "zhCN": "状态", + "zhTW": "狀態", + "enUS": "Status", + "jaJP": "状態", + "koKR": "상태", + "ruRU": "Состояние", + "ptBR": "Status", + "frFR": "Statut", + "esAR": "Estado", + "arDZ": "الحالة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "成功": { + "text": "成功", + "key": "t_8_1745227838023", + "translations": { + "zhCN": "成功", + "zhTW": "成功", + "enUS": "Success", + "jaJP": "成功", + "koKR": "성공", + "ruRU": "Успех", + "ptBR": "Sucesso", + "frFR": "Réussite", + "esAR": "Éxito", + "arDZ": "نجاح" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "失败": { + "text": "失败", + "key": "t_9_1745227838305", + "translations": { + "zhCN": "失败", + "zhTW": "失敗", + "enUS": "Failure", + "jaJP": "失敗", + "koKR": "실패", + "ruRU": "неудача", + "ptBR": "fracasso", + "frFR": "échec", + "esAR": "fallo", + "arDZ": "فشل" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "执行中": { + "text": "执行中", + "key": "t_10_1745227838234", + "translations": { + "zhCN": "执行中", + "zhTW": "執行中", + "enUS": "In progress", + "jaJP": "実行中", + "koKR": "진행 중", + "ruRU": "В процессе", + "ptBR": "Em andamento", + "frFR": "En cours", + "esAR": "En ejecución", + "arDZ": "في تنفيذ" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "未知": { + "text": "未知", + "key": "t_11_1745227838422", + "translations": { + "zhCN": "未知", + "zhTW": "未知", + "enUS": "Unknown", + "jaJP": "不明", + "koKR": "알 수 없음", + "ruRU": "неизвестно", + "ptBR": "desconhecido", + "frFR": "inconnu", + "esAR": "desconocido", + "arDZ": "غير معروف" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "详情": { + "text": "详情", + "key": "t_12_1745227838814", + "translations": { + "zhCN": "详情", + "zhTW": "詳細", + "enUS": "Details", + "jaJP": "詳細", + "koKR": "상세정보", + "ruRU": "Подробности", + "ptBR": "Detalhes", + "frFR": "Détails", + "esAR": "Detalles", + "arDZ": "تفاصيل" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "上传证书": { + "text": "上传证书", + "key": "t_13_1745227838275", + "translations": { + "zhCN": "上传证书", + "zhTW": "上傳證書", + "enUS": "Upload Certificate", + "jaJP": "証明書のアップロード", + "koKR": "서명서 업로드", + "ruRU": "Загрузить сертификат", + "ptBR": "Enviar certificado", + "frFR": "Télécharger un certificat", + "esAR": "Subir certificado", + "arDZ": "تحميل شهادة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "请输入证书域名或品牌名称搜索": { + "text": "请输入证书域名或品牌名称搜索", + "key": "t_14_1745227840904", + "translations": { + "zhCN": "请输入证书域名或品牌名称进行搜索", + "zhTW": "請輸入證書域名或品牌名稱搜尋", + "enUS": "Please enter the certificate domain name or brand name to search", + "jaJP": "証明書ドメイン名またはブランド名を入力して検索してください", + "koKR": "자격증 도메인 이름 또는 브랜드 이름을 입력하여 검색하세요", + "ruRU": "Введіть доменное имя сертификата или название бренда для поиска", + "ptBR": "Insira o nome do domínio do certificado ou o nome da marca para pesquisa", + "frFR": "Saisissez le nom de domaine du certificat ou le nom de la marque pour la recherche", + "esAR": "Ingrese el nombre de dominio del certificado o el nombre de la marca para buscar", + "arDZ": "الرجاء إدخال اسم نطاق الشهادة أو اسم العلامة التجارية للبحث عنها" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "共": { + "text": "共", + "key": "t_15_1745227839354", + "translations": { + "zhCN": "共", + "zhTW": "共", + "enUS": "Together", + "jaJP": "共同に", + "koKR": "함께", + "ruRU": "вместе", + "ptBR": "juntos", + "frFR": "ensemble", + "esAR": "juntos", + "arDZ": "معا" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "条": { + "text": "条", + "key": "t_16_1745227838930", + "translations": { + "zhCN": "条", + "zhTW": "條", + "enUS": "strip", + "jaJP": "本", + "koKR": "개", + "ruRU": "шт", + "ptBR": "unidade", + "frFR": "unité", + "esAR": "pieza", + "arDZ": "شريحة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "域名": { + "text": "域名", + "key": "t_17_1745227838561", + "translations": { + "zhCN": "域名", + "zhTW": "域名", + "enUS": "Domain name", + "jaJP": "ドメイン名", + "koKR": "도메인 이름", + "ruRU": "Доменное имя", + "ptBR": "Nome de domínio", + "frFR": "Nom de domaine", + "esAR": "Nombre de dominio", + "arDZ": "اسم النطاق" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "品牌": { + "text": "品牌", + "key": "t_18_1745227838154", + "translations": { + "zhCN": "品牌", + "zhTW": "品牌", + "enUS": "Brand", + "jaJP": "ブランド", + "koKR": "브랜드", + "ruRU": "Бренд", + "ptBR": "Marca", + "frFR": "Marque", + "esAR": "Marca", + "arDZ": "العلامة التجارية" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "剩余天数": { + "text": "剩余天数", + "key": "t_19_1745227839107", + "translations": { + "zhCN": "剩余天数", + "zhTW": "剩餘天數", + "enUS": "Remaining days", + "jaJP": "残り日数", + "koKR": "남은 날짜", + "ruRU": "Оставшиеся дни", + "ptBR": "Dias restantes", + "frFR": "Jours restants", + "esAR": "Días restantes", + "arDZ": "أيام متبقية" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "到期时间": { + "text": "到期时间", + "key": "t_20_1745227838813", + "translations": { + "zhCN": "到期时间", + "zhTW": "到期時間", + "enUS": "Expiry Time", + "jaJP": "期限時間", + "koKR": "만료 시간", + "ruRU": "Время истечения", + "ptBR": "Tempo de expiração", + "frFR": "Heure d'expiration", + "esAR": "Tiempo de vencimiento", + "arDZ": "زمن انتهاء الصلاحية" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "来源": { + "text": "来源", + "key": "t_21_1745227837972", + "translations": { + "zhCN": "来源", + "zhTW": "來源", + "enUS": "Source", + "jaJP": "出典", + "koKR": "출처", + "ruRU": "Источник", + "ptBR": "Fonte", + "frFR": "Source", + "esAR": "Fuente", + "arDZ": "مصدر" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "自动申请": { + "text": "自动申请", + "key": "t_22_1745227838154", + "translations": { + "zhCN": "自动申请", + "zhTW": "自動申請", + "enUS": "Automatic Application", + "jaJP": "自動申請", + "koKR": "자동 신청", + "ruRU": "Автоматическая заявка", + "ptBR": "Aplicação Automática", + "frFR": "Demande automatique", + "esAR": "Solicitud automática", + "arDZ": "طلب تلقائي" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "手动上传": { + "text": "手动上传", + "key": "t_23_1745227838699", + "translations": { + "zhCN": "手动上传", + "zhTW": "手動上傳", + "enUS": "Manual upload", + "jaJP": "手動アップロード", + "koKR": "수동 업로드", + "ruRU": "Ручная загрузка", + "ptBR": "Upload manual", + "frFR": "Téléversement manuel", + "esAR": "Carga manual", + "arDZ": "تحميل يدوي" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "添加时间": { + "text": "添加时间", + "key": "t_24_1745227839508", + "translations": { + "zhCN": "添加时间", + "zhTW": "加入時間", + "enUS": "Add Time", + "jaJP": "時間を追加", + "koKR": "시간 추가", + "ruRU": "Добавить время", + "ptBR": "Adicionar tempo", + "frFR": "Ajouter une date", + "esAR": "Agregar tiempo", + "arDZ": "إضافة وقت" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "下载": { + "text": "下载", + "key": "t_25_1745227838080", + "translations": { + "zhCN": "下载", + "zhTW": "下載", + "enUS": "Download", + "jaJP": "ダウンロード", + "koKR": "다운로드", + "ruRU": "Загрузка", + "ptBR": "Baixar", + "frFR": "Télécharger", + "esAR": "Descargar", + "arDZ": "تحميل" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "即将过期": { + "text": "即将过期", + "key": "t_27_1745227838583", + "translations": { + "zhCN": "即将过期", + "zhTW": "即將過期", + "enUS": "About to expire", + "jaJP": "切れ替わります", + "koKR": "만료될 예정", + "ruRU": "Скоро закончится", + "ptBR": "Próximo de expirar", + "frFR": "Bientôt expiré", + "esAR": "Casi caducado", + "arDZ": "قريب من انتهاء الصلاحية" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "正常": { + "text": "正常", + "key": "t_28_1745227837903", + "translations": { + "zhCN": "正常", + "zhTW": "正常", + "enUS": "Normal", + "jaJP": "通常", + "koKR": "정상", + "ruRU": "нормальный", + "ptBR": "normal", + "frFR": "normal", + "esAR": "normal", + "arDZ": "طبيعي" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "删除证书": { + "text": "删除证书", + "key": "t_29_1745227838410", + "translations": { + "zhCN": "删除证书", + "zhTW": "刪除證書", + "enUS": "Delete certificate", + "jaJP": "証明書を削除する", + "koKR": "인증서 삭제", + "ruRU": "Удалить сертификат", + "ptBR": "Excluir certificado", + "frFR": "Supprimer le certificat", + "esAR": "Eliminar certificado", + "arDZ": "حذف الشهادة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "确认要删除这个证书吗?此操作不可恢复。": { + "text": "确认要删除这个证书吗?此操作不可恢复。", + "key": "t_30_1745227841739", + "translations": { + "zhCN": "确认要删除这个证书吗?此操作不可恢复。", + "zhTW": "確認要刪除這個證書嗎?此操作無法恢復。", + "enUS": "Are you sure you want to delete this certificate? This action cannot be undone.", + "jaJP": "この証明書を削除してもよろしいですか?この操作は元に戻せません。", + "koKR": "이 증명서를 지우시겠습니까? 이 작업은 복구할 수 없습니다.", + "ruRU": "Вы уверены, что хотите удалить этот сертификат? Эта операция не может быть отменена.", + "ptBR": "Tem certeza de que deseja excluir este certificado? Esta ação não pode ser revertida.", + "frFR": "Confirmez-vous que vous souhaitez supprimer ce certificat ? Cette action ne peut pas être annulée.", + "esAR": "¿Está seguro de que desea eliminar este certificado? Esta acción no se puede deshacer.", + "arDZ": "هل أنت متأكد من أنك تريد حذف هذا الشهادة؟ لا يمكن استعادة هذه العملية." + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "确认": { + "text": "确认", + "key": "t_31_1745227838461", + "translations": { + "zhCN": "确认", + "zhTW": "確認", + "enUS": "Confirm", + "jaJP": "確認してください", + "koKR": "확인하세요", + "ruRU": "Подтвердите", + "ptBR": "Confirmar", + "frFR": "Confirmer", + "esAR": "Confirmar", + "arDZ": "تأكيد" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "证书名称": { + "text": "证书名称", + "key": "t_32_1745227838439", + "translations": { + "zhCN": "证书名称", + "zhTW": "證書名稱", + "enUS": "Certificate Name", + "jaJP": "証明書名前", + "koKR": "서명", + "ruRU": "Название сертификата", + "ptBR": "Nome do Certificado", + "frFR": "Nom du certificat", + "esAR": "Nombre del certificado", + "arDZ": "اسم الشهادة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "请输入证书名称": { + "text": "请输入证书名称", + "key": "t_33_1745227838984", + "translations": { + "zhCN": "请输入证书名称", + "zhTW": "請輸入證書名稱", + "enUS": "Please enter the certificate name", + "jaJP": "証明書の名前を入力してください", + "koKR": "증명서 이름을 입력하세요", + "ruRU": "Введіть назву сертификата", + "ptBR": "Por favor, insira o nome do certificado", + "frFR": "Veuillez saisir le nom du certificat", + "esAR": "Por favor, ingrese el nombre del certificado", + "arDZ": "الرجاء إدخال اسم الشهادة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "证书内容(PEM)": { + "text": "证书内容(PEM)", + "key": "t_34_1745227839375", + "translations": { + "zhCN": "证书内容(PEM)", + "zhTW": "證書內容(PEM)", + "enUS": "Certificate Content (PEM)", + "jaJP": "証明書の内容(PEM)", + "koKR": "인증서 내용(PEM)", + "ruRU": "Содержание сертификата (PEM)", + "ptBR": "Conteúdo do certificado (PEM)", + "frFR": "Contenu du certificat (PEM)", + "esAR": "Contenido del certificado (PEM)", + "arDZ": "محتويات الشهادة (PEM)" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "请输入证书内容": { + "text": "请输入证书内容", + "key": "t_35_1745227839208", + "translations": { + "zhCN": "请输入证书内容", + "zhTW": "請輸入證書內容", + "enUS": "Please enter the certificate content", + "jaJP": "証明書の内容を入力してください", + "koKR": "서류 내용을 입력하세요", + "ruRU": "Введіть содержимое сертификата", + "ptBR": "Por favor, insira o conteúdo do certificado", + "frFR": "Veuillez saisir le contenu du certificat", + "esAR": "Por favor, ingrese el contenido del certificado", + "arDZ": "الرجاء إدخال محتويات الشهادة" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "私钥内容(KEY)": { + "text": "私钥内容(KEY)", + "key": "t_36_1745227838958", + "translations": { + "zhCN": "私钥内容(KEY)", + "zhTW": "私鑰內容(KEY)", + "enUS": "Private key content (KEY)", + "jaJP": "プライベートキー内容(KEY)", + "koKR": "사용자 키 내용(KEY)", + "ruRU": "Содержание частного ключа (KEY)", + "ptBR": "Conteúdo da chave privada (KEY)", + "frFR": "Contenu de la clé privée (KEY)", + "esAR": "Contenido de la clave privada (KEY)", + "arDZ": "محتويات المفتاح الخاص (KEY)" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "请输入私钥内容": { + "text": "请输入私钥内容", + "key": "t_37_1745227839669", + "translations": { + "zhCN": "请输入私钥内容", + "zhTW": "請輸入私鑰內容", + "enUS": "Please enter the private key content", + "jaJP": "プライベートキーの内容を入力してください", + "koKR": "비밀키 내용을 입력하세요", + "ruRU": "Введіть содержимое частного ключа", + "ptBR": "Por favor, insira o conteúdo da chave privada", + "frFR": "Veuillez saisir le contenu de la clé privée", + "esAR": "Por favor, ingrese el contenido de la clave privada", + "arDZ": "الرجاء إدخال محتويات المفتاح الخاص" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "下载失败": { + "text": "下载失败", + "key": "t_38_1745227838813", + "translations": { + "zhCN": "下载失败", + "zhTW": "下載失敗", + "enUS": "Download failed", + "jaJP": "ダウンロード失敗", + "koKR": "다운로드 실패", + "ruRU": "Не удалось загрузить", + "ptBR": "Falha ao baixar", + "frFR": "Échec du téléchargement", + "esAR": "Falla en la descarga", + "arDZ": "فشل التحميل" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "上传失败": { + "text": "上传失败", + "key": "t_39_1745227838696", + "translations": { + "zhCN": "上传失败", + "zhTW": "上傳失敗", + "enUS": "Upload failed", + "jaJP": "アップロードに失敗しました", + "koKR": "업로드 실패", + "ruRU": "Не удалось загрузить", + "ptBR": "Falha ao carregar", + "frFR": "Échec du téléversement", + "esAR": "Fallo en la subida", + "arDZ": "فشل التحميل" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "删除失败": { + "text": "删除失败", + "key": "t_40_1745227838872", + "translations": { + "zhCN": "删除失败", + "zhTW": "刪除失敗", + "enUS": "Delete failed", + "jaJP": "削除失敗", + "koKR": "삭제 실패", + "ruRU": "Удаление失败", + "ptBR": "Falha na exclusão", + "frFR": "Échec de la suppression", + "esAR": "Falla en la eliminación", + "arDZ": "فشل الحذف" + }, + "timestamp": "2025-04-21T09:30:41.741Z" + }, + "添加授权API": { + "text": "添加授权API", + "key": "t_0_1745289355714", + "translations": { + "zhCN": "添加授权API", + "zhTW": "添加授權API", + "enUS": "Add Authorization API", + "jaJP": "認証APIを追加する", + "koKR": "인증 API 추가", + "ruRU": "Добавить API авторизации", + "ptBR": "Adicionar API de autorização", + "frFR": "Ajouter l'API d'autorisation", + "esAR": "Agregar API de autorización", + "arDZ": "إضافة API للإذن" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入授权api名称或类型": { + "text": "请输入授权api名称或类型", + "key": "t_1_1745289356586", + "translations": { + "zhCN": "请输入授权API名称或类型", + "zhTW": "請輸入授權API名稱或類型", + "enUS": "Please enter the authorized API name or type", + "jaJP": "認証APIの名前またはタイプを入力してください", + "koKR": "인증 API 이름 또는 유형을 입력하세요", + "ruRU": "Введите имя или тип авторизованного API", + "ptBR": "Por favor, insira o nome ou o tipo do API autorizado", + "frFR": "Veuillez saisir le nom ou le type de l'API autorisée", + "esAR": "Por favor, ingrese el nombre o el tipo de API autorizada", + "arDZ": "الرجاء إدخال اسم أو نوع API المصرح به" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "名称": { + "text": "名称", + "key": "t_2_1745289353944", + "translations": { + "zhCN": "名称", + "zhTW": "名稱", + "enUS": "Name", + "jaJP": "名称", + "koKR": "이름", + "ruRU": "Название", + "ptBR": "Nome", + "frFR": "Nom", + "esAR": "Nombre", + "arDZ": "اسم" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "授权API类型": { + "text": "授权API类型", + "key": "t_3_1745289354664", + "translations": { + "zhCN": "授权API类型", + "zhTW": "授權API類型", + "enUS": "Authorization API Type", + "jaJP": "認証APIタイプ", + "koKR": "인증 API 유형", + "ruRU": "Тип API авторизации", + "ptBR": "Tipo de API de autorização", + "frFR": "Type d'API d'autorisation", + "esAR": "Tipo de API de autorización", + "arDZ": "نوع API للاذن" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "编辑授权API": { + "text": "编辑授权API", + "key": "t_4_1745289354902", + "translations": { + "zhCN": "编辑授权API", + "zhTW": "編輯授權API", + "enUS": "Edit Authorization API", + "jaJP": "編集権限API", + "koKR": "編집 권한 API", + "ruRU": "API для редактирования разрешений", + "ptBR": "API de autorização de edição", + "frFR": "API d'édition d'autorisation", + "esAR": "API de autorización de edición", + "arDZ": "API للتحرير المسموح به" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "删除授权API": { + "text": "删除授权API", + "key": "t_5_1745289355718", + "translations": { + "zhCN": "删除授权API", + "zhTW": "刪除授權API", + "enUS": "Delete Authorization API", + "jaJP": "認証APIの削除", + "koKR": "인증 API 제거", + "ruRU": "Удаление API авторизации", + "ptBR": "Remover API de autorização", + "frFR": "Suppression de l'API d'autorisation", + "esAR": "Eliminar API de autorización", + "arDZ": "حذف API التحقق من الصلاحيات" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "确定删除该授权API吗?此操作不可恢复。": { + "text": "确定删除该授权API吗?此操作不可恢复。", + "key": "t_6_1745289358340", + "translations": { + "zhCN": "确定删除该授权API吗?此操作不可恢复。", + "zhTW": "確定刪除該授權API嗎?此操作無法恢復。", + "enUS": "Are you sure you want to delete this authorized API? This action cannot be undone.", + "jaJP": "この認証されたAPIを削除してもよろしいですか?この操作は元に戻すことができません。", + "koKR": "이 권한된 API를 정말로 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "ruRU": "Уверены, что хотите удалить этот авторизованный API? Это действие нельзя отменить.", + "ptBR": "Tem certeza de que deseja excluir este API autorizado? Esta ação não pode ser revertida.", + "frFR": "Êtes-vous sûr de vouloir supprimer cet API autorisé ? Cette action ne peut pas être annulée.", + "esAR": "¿Está seguro de que desea eliminar este API autorizado? Esta acción no se puede deshacer.", + "arDZ": "هل أنت متأكد من أنك تريد حذف هذا API المصرح به؟ لا يمكن استعادة هذا الإجراء." + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "添加失败": { + "text": "添加失败", + "key": "t_7_1745289355714", + "translations": { + "zhCN": "添加失败", + "zhTW": "添加失敗", + "enUS": "Add failed", + "jaJP": "追加失敗", + "koKR": "추가 실패", + "ruRU": "Добавление失败", + "ptBR": "Falha ao adicionar", + "frFR": "Échec de l'ajout", + "esAR": "Fallo al agregar", + "arDZ": "فشل الإضافة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "更新失败": { + "text": "更新失败", + "key": "t_8_1745289354902", + "translations": { + "zhCN": "更新失败", + "zhTW": "更新失敗", + "enUS": "Update failed", + "jaJP": "アップデート失敗", + "koKR": "업데이트 실패", + "ruRU": "Обновление失败", + "ptBR": "Falha na atualização", + "frFR": "Échec de mise à jour", + "esAR": "Fallo en la actualización", + "arDZ": "فشل التحديث" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "已过期{days}天": { + "text": "已过期{days}天", + "key": "t_9_1745289355714", + "translations": { + "zhCN": "已过期{days}天", + "zhTW": "已過期{days}天", + "enUS": "Expired {days} days", + "jaJP": "{days}日経過", + "koKR": "{days}일 경과", + "ruRU": "Прошло {days} дней", + "ptBR": "Expirado há {days} dias", + "frFR": "Expiré {days} jours", + "esAR": "Vencido {days} días", + "arDZ": "انتهت صلاحيته {days} يوم" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "监控管理": { + "text": "监控管理", + "key": "t_10_1745289354650", + "translations": { + "zhCN": "监控管理", + "zhTW": "監控管理", + "enUS": "Monitoring Management", + "jaJP": "監視管理", + "koKR": "모니터링 관리", + "ruRU": "Мониторинг управления", + "ptBR": "Gestão de Monitoramento", + "frFR": "Gestion de surveillance", + "esAR": "Gestión de monitoreo", + "arDZ": "إدارة المراقبة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "添加监控": { + "text": "添加监控", + "key": "t_11_1745289354516", + "translations": { + "zhCN": "添加监控", + "zhTW": "加入監控", + "enUS": "Add Monitoring", + "jaJP": "監視を追加する", + "koKR": "모니터링 추가", + "ruRU": "Добавить мониторинг", + "ptBR": "Adicionar monitoramento", + "frFR": "Ajouter une surveillance", + "esAR": "Agregar monitoreo", + "arDZ": "إضافة المراقبة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入监控名称或域名搜索": { + "text": "请输入监控名称或域名搜索", + "key": "t_12_1745289356974", + "translations": { + "zhCN": "请输入监控名称或域名进行搜索", + "zhTW": "請輸入監控名稱或域名進行搜尋", + "enUS": "Please enter the monitoring name or domain to search", + "jaJP": "監視名前缀またはドメインを入力して検索してください", + "koKR": "모니터링 이름이나 도메인을 입력하여 검색하세요", + "ruRU": "Введите имя монитора или домен для поиска", + "ptBR": "Por favor, insira o nome do monitoramento ou o domínio para pesquisar", + "frFR": "Veuillez saisir le nom de surveillance ou le domaine pour la recherche", + "esAR": "Por favor, ingrese el nombre de monitoreo o el dominio para buscar", + "arDZ": "الرجاء إدخال اسم المراقبة أو اسم النطاق للبحث عنه" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "监控名称": { + "text": "监控名称", + "key": "t_13_1745289354528", + "translations": { + "zhCN": "监控名称", + "zhTW": "監控名稱", + "enUS": "Monitor Name", + "jaJP": "モニタ名称", + "koKR": "모니터 이름", + "ruRU": "Название монитора", + "ptBR": "Nome do Monitor", + "frFR": "Nom du moniteur", + "esAR": "Nombre del monitor", + "arDZ": "اسم المراقب" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "证书域名": { + "text": "证书域名", + "key": "t_14_1745289354902", + "translations": { + "zhCN": "证书域名", + "zhTW": "證書域名", + "enUS": "Certificate Domain", + "jaJP": "証明書ドメイン", + "koKR": "인증서 도메인", + "ruRU": "Сертификат домена", + "ptBR": "Domínio do certificado", + "frFR": "Domaine du certificat", + "esAR": "Dominio del certificado", + "arDZ": "اسم المجال للمستند" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "证书颁发机构": { + "text": "证书颁发机构", + "key": "t_15_1745289355714", + "translations": { + "zhCN": "证书颁发机构", + "zhTW": "證書發頒機構", + "enUS": "Certificate Authority", + "jaJP": "証明書発行機関", + "koKR": "인증서 발급 기관", + "ruRU": "Аутентификационная служба", + "ptBR": "Autoridade de Certificação", + "frFR": "Autorité de certification", + "esAR": "Autoridad de certificación", + "arDZ": "جهة إصدار الشهادات" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "证书状态": { + "text": "证书状态", + "key": "t_16_1745289354902", + "translations": { + "zhCN": "证书状态", + "zhTW": "證書狀態", + "enUS": "Certificate Status", + "jaJP": "証明書の状態", + "koKR": "서류 상태", + "ruRU": "Состояние сертификата", + "ptBR": "Status do certificado", + "frFR": "Statut du certificat", + "esAR": "Estado del certificado", + "arDZ": "حالة الشهادة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "证书到期时间": { + "text": "证书到期时间", + "key": "t_17_1745289355715", + "translations": { + "zhCN": "证书到期时间", + "zhTW": "證書到期時間", + "enUS": "Certificate Expiration Date", + "jaJP": "証明書の有効期限", + "koKR": "인증서 만료일", + "ruRU": "Дата окончания действия сертификата", + "ptBR": "Data de expiração do certificado", + "frFR": "Date d'expiration du certificat", + "esAR": "Fecha de expiración del certificado", + "arDZ": "تاريخ انتهاء صلاحية الشهادة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "告警渠道": { + "text": "告警渠道", + "key": "t_18_1745289354598", + "translations": { + "zhCN": "告警渠道", + "zhTW": "告警管道", + "enUS": "Alert Channels", + "jaJP": "警報チャネル", + "koKR": "알림 채널", + "ruRU": "Каналы оповещений", + "ptBR": "Canais de alerta", + "frFR": "Canaux d'alerte", + "esAR": "Canales de alerta", + "arDZ": "قنوات التحذير" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "上次检查时间": { + "text": "上次检查时间", + "key": "t_19_1745289354676", + "translations": { + "zhCN": "上次检查时间", + "zhTW": "上次檢查時間", + "enUS": "Last Check Time", + "jaJP": "最後のチェック時刻", + "koKR": "최근 점검 시간", + "ruRU": "Время последней проверки", + "ptBR": "Última data de verificação", + "frFR": "Dernière date de vérification", + "esAR": "Última revisión", + "arDZ": "تاريخ آخر فحص" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "编辑监控": { + "text": "编辑监控", + "key": "t_20_1745289354598", + "translations": { + "zhCN": "编辑监控", + "zhTW": "編輯監控", + "enUS": "Edit Monitoring", + "jaJP": "編集監視", + "koKR": "편집 모니터링", + "ruRU": "Редактирование мониторинга", + "ptBR": "Edição de Monitoramento", + "frFR": "Édition de surveillance", + "esAR": "Edición de monitoreo", + "arDZ": "تعديل الرقابة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "确认删除": { + "text": "确认删除", + "key": "t_21_1745289354598", + "translations": { + "zhCN": "确认删除", + "zhTW": "確認刪除", + "enUS": "Confirm Delete", + "jaJP": "削除を確認してください", + "koKR": "삭제 확인", + "ruRU": "Подтвердите удаление", + "ptBR": "Confirmar exclusão", + "frFR": "Confirmez la suppression", + "esAR": "Confirmar eliminación", + "arDZ": "تأكيد الحذف" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "删除后无法恢复,确认要删除该监控吗?": { + "text": "删除后无法恢复,确认要删除该监控吗?", + "key": "t_22_1745289359036", + "translations": { + "zhCN": "删除后将无法恢复,您确认要删除该监控吗?", + "zhTW": "刪除後將無法恢復,您確定要刪除該監控嗎?", + "enUS": "Items cannot be restored after deletion. Are you sure you want to delete this monitor?", + "jaJP": "削除後は復元できません。この監視を削除する場合は確定しますか?", + "koKR": "삭제된 아이템은 복원할 수 없습니다. 이 모니터를 정말로 삭제하시겠습니까?", + "ruRU": "Элементы нельзя восстановить после удаления. Вы уверены, что хотите удалить этот монитор?", + "ptBR": "Os itens não podem ser restaurados após a exclusão. Tem certeza de que deseja excluir este monitor?", + "frFR": "Les éléments ne peuvent pas être restaurés après suppression. Êtes-vous sûr de vouloir supprimer ce moniteur?", + "esAR": "Los elementos no se pueden recuperar después de su eliminación. ¿Está seguro de que desea eliminar este monitor?", + "arDZ": "لا يمكن استعادة العناصر بعد الحذف. هل أنت متأكد من أنك تريد حذف هذا المراقب؟" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "修改失败": { + "text": "修改失败", + "key": "t_23_1745289355716", + "translations": { + "zhCN": "修改失败", + "zhTW": "修改失敗", + "enUS": "Modification failed", + "jaJP": "変更失敗", + "koKR": "변경 실패", + "ruRU": "Не удалось изменить", + "ptBR": "Falha na modificação", + "frFR": "Échec de la modification", + "esAR": "Fallo en la modificación", + "arDZ": "فشل التعديل" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "设置失败": { + "text": "设置失败", + "key": "t_24_1745289355715", + "translations": { + "zhCN": "设置失败", + "zhTW": "設定失敗", + "enUS": "Setup Failed", + "jaJP": "設定失敗", + "koKR": "설정 실패", + "ruRU": "Сбой настройки", + "ptBR": "Falha na configuração", + "frFR": "Échec de la configuration", + "esAR": "Fallo en la configuración", + "arDZ": "فشل في الإعداد" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入验证码": { + "text": "请输入验证码", + "key": "t_25_1745289355721", + "translations": { + "zhCN": "请输入验证码", + "zhTW": "請輸入驗證碼", + "enUS": "Please enter the verification code", + "jaJP": "認証コードを入力してください", + "koKR": "인증 코드를 입력하세요", + "ruRU": "Введите код подтверждения", + "ptBR": "Por favor, insira o código de verificação", + "frFR": "Veuillez saisir le code de vérification", + "esAR": "Por favor, ingrese el código de verificación", + "arDZ": "من فضلك، أدخل رمز التحقق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "表单验证失败,请检查填写内容": { + "text": "表单验证失败,请检查填写内容", + "key": "t_26_1745289358341", + "translations": { + "zhCN": "表单验证失败,请检查填写内容", + "zhTW": "表單驗證失敗,請檢查填寫內容", + "enUS": "Form validation failed, please check the filled content", + "jaJP": "フォームのバリデーションに失敗しました、記入内容を確認してください", + "koKR": "양식 검증 실패, 입력 내용을 확인해 주세요", + "ruRU": "Проверка формы не пройдена, пожалуйста, проверьте填写的内容", + "ptBR": "Validação do formulário falhou, por favor, verifique o conteúdo preenchido", + "frFR": "Échec de validation du formulaire, veuillez vérifier le contenu rempli", + "esAR": "Validación del formulario fallida, por favor revise el contenido ingresado", + "arDZ": "فشل التحقق من النموذج، يرجى التحقق من المحتويات المملوءة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入授权API名称": { + "text": "请输入授权API名称", + "key": "t_27_1745289355721", + "translations": { + "zhCN": "请输入授权API名称", + "zhTW": "請輸入授權API名稱", + "enUS": "Please enter the authorized API name", + "jaJP": "認証API名前を入力してください", + "koKR": "인증 API 이름을 입력하세요", + "ruRU": "Введите имя авторизованного API", + "ptBR": "Por favor, insira o nome do API autorizado", + "frFR": "Veuillez saisir le nom de l'API autorisée", + "esAR": "Por favor, ingrese el nombre del API autorizado", + "arDZ": "من فضلك أدخل اسم API المصرح به" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请选择授权API类型": { + "text": "请选择授权API类型", + "key": "t_28_1745289356040", + "translations": { + "zhCN": "请选择授权API类型", + "zhTW": "請選擇授權API類型", + "enUS": "Please select the authorization API type", + "jaJP": "認証APIタイプを選択してください", + "koKR": "인증 API 유형을 선택하세요", + "ruRU": "Выберите тип авторизации API", + "ptBR": "Selecione o tipo de API de autorização", + "frFR": "Veuillez sélectionner le type d'API d'autorisation", + "esAR": "Seleccione el tipo de API de autorización", + "arDZ": "يرجى اختيار نوع API الت�权يز" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入服务器IP": { + "text": "请输入服务器IP", + "key": "t_29_1745289355850", + "translations": { + "zhCN": "请输入服务器IP", + "zhTW": "請輸入伺服器IP", + "enUS": "Please enter the server IP", + "jaJP": "サーバーIPを入力してください", + "koKR": "서버 IP를 입력하세요", + "ruRU": "Введите IP-адрес сервера", + "ptBR": "Por favor, insira o IP do servidor", + "frFR": "Veuillez saisir l'IP du serveur", + "esAR": "Por favor, ingrese la IP del servidor", + "arDZ": "الرجاء إدخال عنوان IP للخادم" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入SSH端口": { + "text": "请输入SSH端口", + "key": "t_30_1745289355718", + "translations": { + "zhCN": "请输入SSH端口", + "zhTW": "請輸入SSH端口", + "enUS": "Please enter the SSH port", + "jaJP": "SSHポートを入力してください", + "koKR": "SSH 포트를 입력하세요", + "ruRU": "Введите порт SSH", + "ptBR": "Por favor, insira a porta SSH", + "frFR": "S'il vous plaît, entrez le port SSH", + "esAR": "Por favor, ingrese el puerto SSH", + "arDZ": "من فضلك، أدخل ميناء SSH" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入SSH密钥": { + "text": "请输入SSH密钥", + "key": "t_31_1745289355715", + "translations": { + "zhCN": "请输入SSH密钥", + "zhTW": "請輸入SSH金鑰", + "enUS": "Please enter the SSH key", + "jaJP": "SSHキーを入力してください", + "koKR": "SSH 키를 입력하세요", + "ruRU": "Введите SSH-ключ", + "ptBR": "Por favor, insira a chave SSH", + "frFR": "Veuillez saisir la clé SSH", + "esAR": "Por favor, ingrese la clave SSH", + "arDZ": "من فضلك أدخل مفتاح SSH" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入宝塔地址": { + "text": "请输入宝塔地址", + "key": "t_32_1745289356127", + "translations": { + "zhCN": "请输入宝塔地址", + "zhTW": "請輸入寶塔地址", + "enUS": "Please enter the Baota address", + "jaJP": "宝塔アドレスを入力してください", + "koKR": "보타 주소를 입력하세요", + "ruRU": "Введите адрес Ботты", + "ptBR": "Por favor, insira o endereço do Baota", + "frFR": "Veuillez saisir l'adresse de Baota", + "esAR": "Por favor, ingrese la dirección de Baota", + "arDZ": "الرجاء إدخال عنوان بوتا" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入API密钥": { + "text": "请输入API密钥", + "key": "t_33_1745289355721", + "translations": { + "zhCN": "请输入API密钥", + "zhTW": "請輸入API金鑰", + "enUS": "Please enter the API key", + "jaJP": "APIキーを入力してください", + "koKR": "API 키를 입력하세요", + "ruRU": "Введіть ключ API", + "ptBR": "Por favor, insira a chave da API", + "frFR": "Veuillez saisir la clé API", + "esAR": "Por favor, ingrese la clave de API", + "arDZ": "الرجاء إدخال مفتاح API" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入1panel地址": { + "text": "请输入1panel地址", + "key": "t_34_1745289356040", + "translations": { + "zhCN": "请输入1panel地址", + "zhTW": "請輸入1panel地址", + "enUS": "Please enter the 1panel address", + "jaJP": "1panelのアドレスを入力してください", + "koKR": "1panel 주소를 입력해 주세요", + "ruRU": "Введите адрес 1panel", + "ptBR": "Por favor, insira o endereço do 1panel", + "frFR": "Veuillez saisir l'adresse 1panel", + "esAR": "Por favor, ingrese la dirección de 1panel", + "arDZ": "الرجاء إدخال عنوان 1panel" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入AccessKeyId": { + "text": "请输入AccessKeyId", + "key": "t_35_1745289355714", + "translations": { + "zhCN": "请输入AccessKeyId", + "zhTW": "請輸入AccessKeyId", + "enUS": "Please enter AccessKeyId", + "jaJP": "AccessKeyIdを入力してください", + "koKR": "AccessKeyId을 입력하세요", + "ruRU": "Введите AccessKeyId", + "ptBR": "Por favor, insira AccessKeyId", + "frFR": "Veuillez saisir AccessKeyId", + "esAR": "Por favor, ingrese AccessKeyId", + "arDZ": "من فضلك أدخل AccessKeyId" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入AccessKeySecret": { + "text": "请输入AccessKeySecret", + "key": "t_36_1745289355715", + "translations": { + "zhCN": "请输入AccessKeySecret", + "zhTW": "請輸入AccessKeySecret", + "enUS": "Please enter AccessKeySecret", + "jaJP": "AccessKeySecretを入力してください", + "koKR": "AccessKeySecret을 입력하세요", + "ruRU": "Введите AccessKeySecret", + "ptBR": "Por favor, insira AccessKeySecret", + "frFR": "Veuillez saisir AccessKeySecret", + "esAR": "Por favor, ingrese AccessKeySecret", + "arDZ": "من فضلك، أدخل AccessKeySecret" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入SecretId": { + "text": "请输入SecretId", + "key": "t_37_1745289356041", + "translations": { + "zhCN": "请输入SecretId", + "zhTW": "請輸入SecretId", + "enUS": "Please enter SecretId", + "jaJP": "SecretIdを入力してください", + "koKR": "SecretId를 입력하세요", + "ruRU": "Введіть SecretId", + "ptBR": "Por favor, insira SecretId", + "frFR": "S'il vous plaît, entrez SecretId", + "esAR": "Por favor, ingrese SecretId", + "arDZ": "من فضلك، أدخل SecretId" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入SecretKey": { + "text": "请输入SecretKey", + "key": "t_38_1745289356419", + "translations": { + "zhCN": "请输入密钥", + "zhTW": "請輸入密鑰", + "enUS": "Please enter SecretKey", + "jaJP": "SecretKeyを入力してください", + "koKR": "SecretKey를 입력하세요", + "ruRU": "Введите SecretKey", + "ptBR": "Por favor, insira a Chave Secreta", + "frFR": "Veuillez saisir la Clé Secrète", + "esAR": "Por favor, ingrese la Clave Secreta", + "arDZ": "من فضلك أدخل مفتاح السر" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "更新成功": { + "text": "更新成功", + "key": "t_39_1745289354902", + "translations": { + "zhCN": "更新成功", + "zhTW": "更新成功", + "enUS": "Update successful", + "jaJP": "更新成功", + "koKR": "업데이트 성공", + "ruRU": "Успешно обновлено", + "ptBR": "Atualização bem-sucedida", + "frFR": "Mise à jour réussie", + "esAR": "Actualización exitosa", + "arDZ": "نجاح التحديث" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "添加成功": { + "text": "添加成功", + "key": "t_40_1745289355715", + "translations": { + "zhCN": "添加成功", + "zhTW": "添加成功", + "enUS": "Addition Successful", + "jaJP": "追加成功", + "koKR": "추가 성공", + "ruRU": "Успешно добавлено", + "ptBR": "Adição bem-sucedida", + "frFR": "Ajout réussi", + "esAR": "Añadido con éxito", + "arDZ": "نجاح الإضافة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "类型": { + "text": "类型", + "key": "t_41_1745289354902", + "translations": { + "zhCN": "类型", + "zhTW": "類型", + "enUS": "Type", + "jaJP": "タイプ", + "koKR": "타입", + "ruRU": "Тип", + "ptBR": "Tipo", + "frFR": "Type", + "esAR": "Tipo", + "arDZ": "نوع" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "服务器IP": { + "text": "服务器IP", + "key": "t_42_1745289355715", + "translations": { + "zhCN": "服务器IP", + "zhTW": "伺服器IP", + "enUS": "Server IP", + "jaJP": "サーバーIP", + "koKR": "서버 IP", + "ruRU": "Сервер IP", + "ptBR": "IP do Servidor", + "frFR": "IP du serveur", + "esAR": "IP del servidor", + "arDZ": "IP del serveur" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "SSH端口": { + "text": "SSH端口", + "key": "t_43_1745289354598", + "translations": { + "zhCN": "SSH端口", + "zhTW": "SSH端口", + "enUS": "SSH port", + "jaJP": "SSHポート", + "koKR": "SSH 포트", + "ruRU": "Порт SSH", + "ptBR": "Porta SSH", + "frFR": "Port SSH", + "esAR": "Puerto SSH", + "arDZ": "منفذ SSH" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "用户名": { + "text": "用户名", + "key": "t_44_1745289354583", + "translations": { + "zhCN": "用户名", + "zhTW": "用戶名", + "enUS": "Username", + "jaJP": "ユーザー名", + "koKR": "사용자 이름", + "ruRU": "Имя пользователя", + "ptBR": "Nome de usuário", + "frFR": "Nom d'utilisateur", + "esAR": "Nombre de usuario", + "arDZ": "اسم المستخدم" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "认证方式": { + "text": "认证方式", + "key": "t_45_1745289355714", + "translations": { + "zhCN": "认证方式", + "zhTW": "認證方式", + "enUS": "Authentication method", + "jaJP": "認証方法", + "koKR": "인증 방법", + "ruRU": "Способ проверки", + "ptBR": "Método de autenticação", + "frFR": "Méthode d'authentification", + "esAR": "Método de autenticación", + "arDZ": "طريقة التحقق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "密码认证": { + "text": "密码认证", + "key": "t_46_1745289355723", + "translations": { + "zhCN": "密码认证", + "zhTW": "密碼驗證", + "enUS": "Password authentication", + "jaJP": "パスワード認証", + "koKR": "암호 인증", + "ruRU": "Парольная аутентификация", + "ptBR": "Autenticação por senha", + "frFR": "Authentification par mot de passe", + "esAR": "Autenticación por contraseña", + "arDZ": "تأكيد البصمة البصرية" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "密钥认证": { + "text": "密钥认证", + "key": "t_47_1745289355715", + "translations": { + "zhCN": "密钥认证", + "zhTW": "密钥認證", + "enUS": "Key authentication", + "jaJP": "キー認証", + "koKR": "키 인증", + "ruRU": "Ключевая аутентификация", + "ptBR": "Autenticação de chave", + "frFR": "Authentification par clé", + "esAR": "Autenticación de clave", + "arDZ": "تأكيد البصمة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "密码": { + "text": "密码", + "key": "t_48_1745289355714", + "translations": { + "zhCN": "密码", + "zhTW": "密碼", + "enUS": "Password", + "jaJP": "パスワード", + "koKR": "비밀번호", + "ruRU": "Пароль", + "ptBR": "Senha", + "frFR": "Mot de passe", + "esAR": "Contraseña", + "arDZ": "كلمة المرور" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "SSH私钥": { + "text": "SSH私钥", + "key": "t_49_1745289355714", + "translations": { + "zhCN": "SSH私钥", + "zhTW": "SSH私鑰", + "enUS": "SSH private key", + "jaJP": "SSHプライベートキー", + "koKR": "SSH 비밀키", + "ruRU": "SSH частный ключ", + "ptBR": "Chave privada SSH", + "frFR": "Clé privée SSH", + "esAR": "Llave privada SSH", + "arDZ": "مفتاح خاص SSH" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入SSH私钥": { + "text": "请输入SSH私钥", + "key": "t_50_1745289355715", + "translations": { + "zhCN": "请输入SSH私钥", + "zhTW": "請輸入SSH私鑰", + "enUS": "Please enter the SSH private key", + "jaJP": "SSHプライベートキーを入力してください", + "koKR": "SSH 프라이빗 키를 입력하세요", + "ruRU": "Введите SSH частный ключ", + "ptBR": "Por favor, insira a chave privada SSH", + "frFR": "Veuillez saisir la clé privée SSH", + "esAR": "Por favor, ingrese la clave privada SSH", + "arDZ": "الرجاء إدخال مفتاح SSH الخاص" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "私钥密码": { + "text": "私钥密码", + "key": "t_51_1745289355714", + "translations": { + "zhCN": "私钥密码", + "zhTW": "私鍵密碼", + "enUS": "Private key password", + "jaJP": "プライベートキーワード", + "koKR": "private key 비밀번호", + "ruRU": "Пароль私ного ключа", + "ptBR": "Senha da chave privada", + "frFR": "Mot de passe de la clé privée", + "esAR": "Contraseña de la clave privada", + "arDZ": "كلمة المرور الخاصة بالمفتاح الخاص" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "如果私钥有密码,请输入": { + "text": "如果私钥有密码,请输入", + "key": "t_52_1745289359565", + "translations": { + "zhCN": "如果私钥有密码,请输入", + "zhTW": "如果私钥有密碼,請輸入", + "enUS": "If the private key has a password, please enter", + "jaJP": "プライベートキーにパスワードがある場合、入力してください", + "koKR": "비밀키에 비밀번호가 있으면 입력하세요", + "ruRU": "Если у私ного ключа есть пароль, введите", + "ptBR": "Se a chave privada tiver uma senha, insira", + "frFR": "Si la clé privée a un mot de passe, veuillez saisir", + "esAR": "Si la clave privada tiene una contraseña, ingrese", + "arDZ": "إذا كانت المفتاح الخاص يحتوي على كلمة مرور، أدخلها" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "宝塔面板地址": { + "text": "宝塔面板地址", + "key": "t_53_1745289356446", + "translations": { + "zhCN": "宝塔面板地址", + "zhTW": "宝塔面板地址", + "enUS": "BaoTa Panel Address", + "jaJP": "宝塔パネルのアドレス", + "koKR": "보타 패널 주소", + "ruRU": "Адрес панели Баота", + "ptBR": "Endereço da tela BaoTa", + "frFR": "Adresse du panneau BaoTa", + "esAR": "Dirección del panel BaoTa", + "arDZ": "عنوان واجهة بوتا" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入宝塔面板地址,例如: https://bt.example.com": { + "text": "请输入宝塔面板地址,例如: https://bt.example.com", + "key": "t_54_1745289358683", + "translations": { + "zhCN": "请输入宝塔面板地址,例如:https://bt.example.com", + "zhTW": "請輸入宝塔面板地址,例如:https://bt.example.com", + "enUS": "Please enter the Baota panel address, for example: https://bt.example.com", + "jaJP": "宝塔パネルのアドレスを入力してください、例えば:https://bt.example.com", + "koKR": "보타 패널 주소를 입력하세요,예를 들어: https://bt.example.com", + "ruRU": "Введіть адресс панели Baota, например: https://bt.example.com", + "ptBR": "Por favor, insira o endereço do painel Baota, por exemplo: https://bt.example.com", + "frFR": "Veuillez saisir l'adresse du panneau Baota, par exemple : https://bt.example.com", + "esAR": "Por favor, ingrese la dirección del panel Baota, por ejemplo: https://bt.example.com", + "arDZ": "من فضلك أدخل عنوان لوحة بوتا، مثل: https://bt.example.com" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "API密钥": { + "text": "API密钥", + "key": "t_55_1745289355715", + "translations": { + "zhCN": "API密钥", + "zhTW": "API金鑰", + "enUS": "API Key", + "jaJP": "APIキー", + "koKR": "API 키", + "ruRU": "API ключ", + "ptBR": "Chave API", + "frFR": "Clé API", + "esAR": "Clave API", + "arDZ": "مفتاح API" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "1panel地址": { + "text": "1panel地址", + "key": "t_56_1745289355714", + "translations": { + "zhCN": "1面板地址", + "zhTW": "1面板地址", + "enUS": "1 panel address", + "jaJP": "1パネルのアドレス", + "koKR": "1판의 주소", + "ruRU": "Адрес 1 панели", + "ptBR": "Endereço do painel 1", + "frFR": "Adresse du panneau 1", + "esAR": "Dirección del panel 1", + "arDZ": "عنوان اللوحة 1" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入1panel地址,例如: https://1panel.example.com": { + "text": "请输入1panel地址,例如: https://1panel.example.com", + "key": "t_57_1745289358341", + "translations": { + "zhCN": "请输入1panel地址,例如:https://1panel.example.com", + "zhTW": "請輸入1panel地址,例如:https://1panel.example.com", + "enUS": "Please enter the 1panel address, for example: https://1panel.example.com", + "jaJP": "1panelのアドレスを入力してください、例えば:https://1panel.example.com", + "koKR": "1panel 주소를 입력하세요, 예를 들어: https://1panel.example.com", + "ruRU": "Введіть адресс 1panel, например: https://1panel.example.com", + "ptBR": "Insira o endereço do 1panel, por exemplo: https://1panel.example.com", + "frFR": "Saisissez l'adresse 1panel, par exemple : https://1panel.example.com", + "esAR": "Ingrese la dirección de 1panel, por ejemplo: https://1panel.example.com", + "arDZ": "ادخل عنوان 1panel، مثلًا: https://1panel.example.com" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入AccessKey ID": { + "text": "请输入AccessKey ID", + "key": "t_58_1745289355721", + "translations": { + "zhCN": "请输入AccessKey ID", + "zhTW": "請輸入AccessKey ID", + "enUS": "Please enter the AccessKey ID", + "jaJP": "アクセスキーIDを入力してください", + "koKR": "AccessKey ID를 입력하세요", + "ruRU": "Введите ID AccessKey", + "ptBR": "Insira o ID do AccessKey", + "frFR": "Saisissez l'ID AccessKey", + "esAR": "Ingrese el ID de AccessKey", + "arDZ": "ادخل معرف AccessKey" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入AccessKey Secret": { + "text": "请输入AccessKey Secret", + "key": "t_59_1745289356803", + "translations": { + "zhCN": "请输入访问密钥的秘密", + "zhTW": "請輸入AccessKey密碼", + "enUS": "Please input AccessKey Secret", + "jaJP": "アクセスキーのシークレットを入力してください", + "koKR": "AccessKey 비밀번호를 입력하세요", + "ruRU": "Введите секрет AccessKey", + "ptBR": "Por favor, insira o segredo do AccessKey", + "frFR": "Veuillez saisir le secret d'AccessKey", + "esAR": "Por favor, ingrese el secreto de AccessKey", + "arDZ": "من فضلك ادخل سرية مفتاح الوصول" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入监控名称": { + "text": "请输入监控名称", + "key": "t_60_1745289355715", + "translations": { + "zhCN": "请输入监控名称", + "zhTW": "請輸入監控名稱", + "enUS": "Please enter the monitoring name", + "jaJP": "監視名前を入力してください", + "koKR": "모니터링 이름을 입력하세요", + "ruRU": "Введите имя монитора", + "ptBR": "Por favor, insira o nome do monitoramento", + "frFR": "Veuillez saisir le nom de surveillance", + "esAR": "Por favor, ingrese el nombre de monitoreo", + "arDZ": "الرجاء إدخال اسم المراقبة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入域名/IP": { + "text": "请输入域名/IP", + "key": "t_61_1745289355878", + "translations": { + "zhCN": "请输入域名/IP", + "zhTW": "請輸入域名/IP", + "enUS": "Please enter the domain/IP", + "jaJP": "ドメイン/IPを入力してください", + "koKR": "도메인/IP를 입력하세요", + "ruRU": "Введите домен/IP", + "ptBR": "Por favor, insira o domínio/IP", + "frFR": "Veuillez saisir le domaine/IP", + "esAR": "Por favor, ingrese el dominio/IP", + "arDZ": "الرجاء إدخال اسم النطاق/IP" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请选择检查周期": { + "text": "请选择检查周期", + "key": "t_62_1745289360212", + "translations": { + "zhCN": "请选择检查周期", + "zhTW": "請選擇檢查週期", + "enUS": "Please select the inspection cycle", + "jaJP": "検査サイクルを選択してください", + "koKR": "검사 주기를 선택하세요", + "ruRU": "Выберите период проверки", + "ptBR": "Selecione o período de inspeção", + "frFR": "Veuillez sélectionner le cycle d'inspection", + "esAR": "Por favor, seleccione el período de inspección", + "arDZ": "يرجى اختيار فترة التحقق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "5分钟": { + "text": "5分钟", + "key": "t_63_1745289354897", + "translations": { + "zhCN": "5分钟", + "zhTW": "5分鐘", + "enUS": "5 minutes", + "jaJP": "5分", + "koKR": "5분", + "ruRU": "5 минут", + "ptBR": "5 minutos", + "frFR": "5 minutes", + "esAR": "5 minutos", + "arDZ": "5 دقائق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "10分钟": { + "text": "10分钟", + "key": "t_64_1745289354670", + "translations": { + "zhCN": "10分钟", + "zhTW": "10分鐘", + "enUS": "10 minutes", + "jaJP": "10分", + "koKR": "10분", + "ruRU": "10 минут", + "ptBR": "10 minutos", + "frFR": "10 minutes", + "esAR": "10 minutos", + "arDZ": "10 دقائق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "15分钟": { + "text": "15分钟", + "key": "t_65_1745289354591", + "translations": { + "zhCN": "15分钟", + "zhTW": "15分鐘", + "enUS": "15 minutes", + "jaJP": "15分", + "koKR": "15분", + "ruRU": "15 минут", + "ptBR": "15 minutos", + "frFR": "15 minutes", + "esAR": "15 minutos", + "arDZ": "15 دقيقة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "30分钟": { + "text": "30分钟", + "key": "t_66_1745289354655", + "translations": { + "zhCN": "30分钟", + "zhTW": "30分鐘", + "enUS": "30 minutes", + "jaJP": "30分", + "koKR": "30분", + "ruRU": "30 минут", + "ptBR": "30 minutos", + "frFR": "30 minutes", + "esAR": "30 minutos", + "arDZ": "30 دقيقة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "60分钟": { + "text": "60分钟", + "key": "t_67_1745289354487", + "translations": { + "zhCN": "60分钟", + "zhTW": "60分鐘", + "enUS": "60 minutes", + "jaJP": "60分", + "koKR": "60분", + "ruRU": "60 минут", + "ptBR": "60 minutos", + "frFR": "60 minutes", + "esAR": "60 minutos", + "arDZ": "60 دقيقة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "邮件": { + "text": "邮件", + "key": "t_68_1745289354676", + "translations": { + "zhCN": "邮件", + "zhTW": "郵件", + "enUS": "Email", + "jaJP": "メール", + "koKR": "이메일", + "ruRU": "Электронная почта", + "ptBR": "E-mail", + "frFR": "E-mail", + "esAR": "Correo electrónico", + "arDZ": "بريد إلكتروني" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "短信": { + "text": "短信", + "key": "t_69_1745289355721", + "translations": { + "zhCN": "短信", + "zhTW": "短信", + "enUS": "SMS", + "jaJP": "ショートメッセージ", + "koKR": "문자", + "ruRU": "СМС", + "ptBR": "SMS", + "frFR": "SMS", + "esAR": "SMS", + "arDZ": "رسالة قصيرة" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "微信": { + "text": "微信", + "key": "t_70_1745289354904", + "translations": { + "zhCN": "微信", + "zhTW": "微信", + "enUS": "WeChat", + "jaJP": "ライン", + "koKR": "위챗", + "ruRU": "Вайбер", + "ptBR": "WeChat", + "frFR": "WeChat", + "esAR": "WeChat", + "arDZ": "واتساب" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "域名/IP": { + "text": "域名/IP", + "key": "t_71_1745289354583", + "translations": { + "zhCN": "域名/IP", + "zhTW": "域名/IP", + "enUS": "Domain/IP", + "jaJP": "ドメイン/IP", + "koKR": "도메인/IP", + "ruRU": "Домен/IP", + "ptBR": "Domínio/IP", + "frFR": "Domaine/IP", + "esAR": "Dominio/IP", + "arDZ": "اسم النطاق/IP" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "检查周期": { + "text": "检查周期", + "key": "t_72_1745289355715", + "translations": { + "zhCN": "检查周期", + "zhTW": "檢查週期", + "enUS": "Inspection cycle", + "jaJP": "検査サイクル", + "koKR": "점검 주기", + "ruRU": "Период проверки", + "ptBR": "Período de inspeção", + "frFR": "Période de contrôle", + "esAR": "Período de inspección", + "arDZ": "فترة التحقق" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请选择告警渠道": { + "text": "请选择告警渠道", + "key": "t_73_1745289356103", + "translations": { + "zhCN": "请选择告警渠道", + "zhTW": "請選擇告警渠道", + "enUS": "Please select an alert channel", + "jaJP": "警報チャンネルを選択してください", + "koKR": "경고 채널을 선택해 주세요", + "ruRU": "Выберите канал уведомлений", + "ptBR": "Selecione o canal de alerta", + "frFR": "Sélectionnez un canal d'alerte", + "esAR": "Seleccione un canal de alerta", + "arDZ": "يرجى اختيار قناة التحذير" + }, + "timestamp": "2025-04-22T02:36:00.212Z" + }, + "请输入授权api名称": { + "text": "请输入授权api名称", + "key": "t_0_1745289808449", + "translations": { + "zhCN": "请输入授权API名称", + "zhTW": "請輸入授權API名稱", + "enUS": "Please enter the authorized API name", + "jaJP": "認証APIの名前を入力してください", + "koKR": "인증 API 이름을 입력하세요", + "ruRU": "Введите имя авторизованного API", + "ptBR": "Por favor, insira o nome do API autorizado", + "frFR": "Veuillez saisir le nom de l'API autorisée", + "esAR": "Por favor, ingrese el nombre del API autorizado", + "arDZ": "الرجاء إدخال اسم API المصرح به" + }, + "timestamp": "2025-04-22T02:43:28.449Z" + }, + "删除监控": { + "text": "删除监控", + "key": "t_0_1745294710530", + "translations": { + "zhCN": "删除监控", + "zhTW": "刪除監控", + "enUS": "Delete monitoring", + "jaJP": "監視を削除する", + "koKR": "모니터링 삭제", + "ruRU": "Удалить мониторинг", + "ptBR": "Excluir monitoramento", + "frFR": "Supprimer la surveillance", + "esAR": "Eliminar monitoreo", + "arDZ": "حذف المراقبة" + }, + "timestamp": "2025-04-22T04:05:10.531Z" + }, + "更新时间": { + "text": "更新时间", + "key": "t_0_1745295228865", + "translations": { + "zhCN": "更新时间", + "zhTW": "更新時間", + "enUS": "Update Time", + "jaJP": "更新時刻", + "koKR": "업데이트 시간", + "ruRU": "Время обновления", + "ptBR": "Data de atualização", + "frFR": "Heure de mise à jour", + "esAR": "Fecha de actualización", + "arDZ": "زمن التحديث" + }, + "timestamp": "2025-04-22T04:13:48.865Z" + }, + "服务器IP地址格式错误": { + "text": "服务器IP地址格式错误", + "key": "t_0_1745317313835", + "translations": { + "zhCN": "服务器IP地址格式错误", + "zhTW": "伺服器IP位址格式錯誤", + "enUS": "Server IP address format error", + "jaJP": "サーバーIPアドレスの形式が不正です", + "koKR": "서버 IP 주소 형식이 오류입니다", + "ruRU": "Ошибочный формат IP-адреса сервера", + "ptBR": "Endereço IP do servidor está no formato incorreto", + "frFR": "Format de l'adresse IP du serveur incorrect", + "esAR": "Formato incorrecto de la dirección IP del servidor", + "arDZ": "تنسيق عنوان IP للخادم غير صحيح" + }, + "timestamp": "2025-04-22T10:21:55.286Z" + }, + "端口格式错误": { + "text": "端口格式错误", + "key": "t_1_1745317313096", + "translations": { + "zhCN": "端口格式错误", + "zhTW": "端口格式錯誤", + "enUS": "Port format error", + "jaJP": "ポートフォーマットエラー", + "koKR": "포트 포맷 오류", + "ruRU": "Ошибка формата порта", + "ptBR": "Erro de formato de porta", + "frFR": "Erreur de format de port", + "esAR": "Error de formato de puerto", + "arDZ": "خطأ في تنسيق المنفذ" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "面板URL地址格式错误": { + "text": "面板URL地址格式错误", + "key": "t_2_1745317314362", + "translations": { + "zhCN": "面板URL地址格式错误", + "zhTW": "面板URL地址格式錯誤", + "enUS": "Panel URL address format error", + "jaJP": "パネルURLアドレスの形式が不正です", + "koKR": "패널 URL 주소 형식이 잘못되었습니다", + "ruRU": "Ошибка формата URL адреса панели", + "ptBR": "Formato de endereço da URL da página do painel incorreto", + "frFR": "Format incorrect de l'adresse URL du panneau", + "esAR": "Error de formato en la dirección URL del panel", + "arDZ": "خطأ في صيغة عنوان URL للوحة" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "请输入面板API密钥": { + "text": "请输入面板API密钥", + "key": "t_3_1745317313561", + "translations": { + "zhCN": "请输入面板API密钥", + "zhTW": "請輸入面板API金鑰", + "enUS": "Please enter the panel API key", + "jaJP": "パネルAPIキーを入力してください", + "koKR": "패널 API 키를 입력하세요", + "ruRU": "Введіть ключ API панелі", + "ptBR": "Por favor, insira a chave API da panela", + "frFR": "Veuillez saisir la clé API du panneau", + "esAR": "Por favor, ingrese la clave API del panel", + "arDZ": "الرجاء إدخال مفتاح API لوحة التحكم" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "请输入阿里云AccessKeyId": { + "text": "请输入阿里云AccessKeyId", + "key": "t_4_1745317314054", + "translations": { + "zhCN": "请输入阿里云AccessKeyId", + "zhTW": "請輸入阿里雲AccessKeyId", + "enUS": "Please enter the Aliyun AccessKeyId", + "jaJP": "阿里云アクセスキーIDを入力してください", + "koKR": "阿里云 접근키 ID를 입력하세요", + "ruRU": "Введите Aliyun AccessKeyId", + "ptBR": "Por favor, insira o AccessKeyId da Aliyun", + "frFR": "Veuillez saisir le AccessKeyId d'Aliyun", + "esAR": "Por favor, ingrese el AccessKeyId de Aliyun", + "arDZ": "الرجاء إدخال AccessKeyId لـ Aliyun" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "请输入阿里云AccessKeySecret": { + "text": "请输入阿里云AccessKeySecret", + "key": "t_5_1745317315285", + "translations": { + "zhCN": "请输入阿里云AccessKeySecret", + "zhTW": "請輸入阿里雲AccessKeySecret", + "enUS": "Please input the Aliyun AccessKeySecret", + "jaJP": "阿里云のAccessKeySecretを入力してください", + "koKR": "阿里yun AccessKeySecret을 입력하세요", + "ruRU": "Ввведите секретный ключ AccessKey Aliyun", + "ptBR": "Por favor, insira o AccessKeySecret da Aliyun", + "frFR": "Veuillez saisir le AccessKeySecret d'Aliyun", + "esAR": "Por favor, ingrese el AccessKeySecret de Aliyun", + "arDZ": "الرجاء إدخال AccessKeySecret لـ Aliyun" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "请输入腾讯云SecretId": { + "text": "请输入腾讯云SecretId", + "key": "t_6_1745317313383", + "translations": { + "zhCN": "请输入腾讯云SecretId", + "zhTW": "請輸入腾讯雲SecretId", + "enUS": "Please enter the Tencent Cloud SecretId", + "jaJP": "腾讯云SecretIdを入力してください", + "koKR": "腾讯云 SecretId를 입력하세요", + "ruRU": "Введите Tencent Cloud SecretId", + "ptBR": "Por favor, insira o SecretId do Tencent Cloud", + "frFR": "S'il vous plaît saisir le SecretId de Tencent Cloud", + "esAR": "Por favor, ingrese el SecretId de Tencent Cloud", + "arDZ": "الرجاء إدخال SecretId لتencent cloud" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "请输入腾讯云SecretKey": { + "text": "请输入腾讯云SecretKey", + "key": "t_7_1745317313831", + "translations": { + "zhCN": "请输入腾讯云SecretKey", + "zhTW": "請輸入腾讯雲SecretKey", + "enUS": "Please enter the Tencent Cloud SecretKey", + "jaJP": "腾讯雲のSecretKeyを入力してください", + "koKR": "腾讯云 SecretKey를 입력하세요", + "ruRU": "Введите SecretKey Tencent Cloud", + "ptBR": "Por favor, insira a SecretKey da Tencent Cloud", + "frFR": "Veuillez saisir la SecretKey de Tencent Cloud", + "esAR": "Por favor, ingrese la SecretKey de Tencent Cloud", + "arDZ": "من فضلك أدخل SecretKey Tencent Cloud" + }, + "timestamp": "2025-04-22T10:21:55.287Z" + }, + "已启用": { + "text": "已启用", + "key": "t_0_1745457486299", + "translations": { + "zhCN": "已启用", + "zhTW": "已啟用", + "enUS": "Enabled", + "jaJP": "有効", + "koKR": "활성화됨", + "ruRU": "Включено", + "ptBR": "Ativado", + "frFR": "Activé", + "esAR": "Habilitado", + "arDZ": "ممكّن" + }, + "timestamp": "2025-04-24T01:18:20.045Z" + }, + "已停止": { + "text": "已停止", + "key": "t_1_1745457484314", + "translations": { + "zhCN": "已停止", + "zhTW": "已停止", + "enUS": "Stopped", + "jaJP": "停止しました", + "koKR": "중지됨", + "ruRU": "Остановлено", + "ptBR": "Parado", + "frFR": "Arrêté", + "esAR": "Detenido", + "arDZ": "توقف" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "切换为手动模式": { + "text": "切换为手动模式", + "key": "t_2_1745457488661", + "translations": { + "zhCN": "切换为手动模式", + "zhTW": "切換為手動模式", + "enUS": "Switch to manual mode", + "jaJP": "手動モードに切り替え", + "koKR": "수동 모드로 전환", + "ruRU": "Переключиться в ручной режим", + "ptBR": "Mudar para o modo manual", + "frFR": "Passer en mode manuel", + "esAR": "Cambiar a modo manual", + "arDZ": "التبديل إلى الوضع اليدوي" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "切换为自动模式": { + "text": "切换为自动模式", + "key": "t_3_1745457486983", + "translations": { + "zhCN": "切换为自动模式", + "zhTW": "切換為自動模式", + "enUS": "Switch to automatic mode", + "jaJP": "自動モードに切り替える", + "koKR": "자동 모드로 전환", + "ruRU": "Переключиться в автоматический режим", + "ptBR": "Mudar para o modo automático", + "frFR": "Passer en mode automatique", + "esAR": "Cambiar a modo automático", + "arDZ": "التبديل إلى الوضع التلقائي" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "切换为手动模式后,工作流将不再自动执行,但仍可手动执行": { + "text": "切换为手动模式后,工作流将不再自动执行,但仍可手动执行", + "key": "t_4_1745457497303", + "translations": { + "zhCN": "切换为手动模式后,工作流将不再自动执行,但仍可手动执行", + "zhTW": "切換為手動模式後,工作流將不再自動執行,但仍可手動執行", + "enUS": "After switching to manual mode, the workflow will no longer be executed automatically, but can still be executed manually", + "jaJP": "手動モードに切り替えた後、ワークフローは自動的に実行されなくなりますが、手動で実行することは可能です", + "koKR": "수동 모드로 전환한 후 워크플로우는 더 이상 자동으로 실행되지 않지만 수동으로 실행할 수 있습니다", + "ruRU": "После переключения в ручной режим рабочий процесс больше не будет выполняться автоматически, но его все равно можно выполнить вручную", + "ptBR": "Ao mudar para o modo manual, o fluxo de trabalho não será mais executado automaticamente, mas ainda pode ser executado manualmente", + "frFR": "Après avoir basculé en mode manuel, le flux de travail ne s'exécutera plus automatiquement, mais peut toujours être exécuté manuellement", + "esAR": "Después de cambiar al modo manual, el flujo de trabajo ya no se ejecutará automáticamente, pero aún se puede ejecutar manualmente", + "arDZ": "بعد التبديل إلى الوضع اليدوي، لن يتم تنفيذ سير العمل تلقائيًا، ولكن لا يزال يمكن تنفيذه يدويًا" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "切换为自动模式后,工作流将按照配置的时间自动执行": { + "text": "切换为自动模式后,工作流将按照配置的时间自动执行", + "key": "t_5_1745457494695", + "translations": { + "zhCN": "切换为自动模式后,工作流将按照配置的时间自动执行", + "zhTW": "切換為自動模式後,工作流將按照配置的時間自動執行", + "enUS": "After switching to automatic mode, the workflow will automatically execute according to the configured time", + "jaJP": "自動モードに切り替えた後、ワークフローは設定された時間に従って自動的に実行されます", + "koKR": "자동 모드로 전환한 후 워크플로우는 구성된 시간에 따라 자동으로 실행됩니다", + "ruRU": "После переключения в автоматический режим рабочий процесс будет автоматически выполняться в соответствии с настроенным временем", + "ptBR": "Após mudar para o modo automático, o fluxo de trabalho será executado automaticamente de acordo com o tempo configurado", + "frFR": "Après être passé en mode automatique, le flux de travail s'exécutera automatiquement selon le temps configuré", + "esAR": "Después de cambiar al modo automático, el flujo de trabajo se ejecutará automáticamente según el tiempo configurado", + "arDZ": "بعد التبديل إلى الوضع التلقائي، سيعمل سير العمل تلقائيًا وفقًا للوقت المحدد" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "关闭当前工作流": { + "text": "关闭当前工作流", + "key": "t_6_1745457487560", + "translations": { + "zhCN": "关闭当前工作流", + "zhTW": "關閉當前工作流程", + "enUS": "Close current workflow", + "jaJP": "現在のワークフローを閉じる", + "koKR": "현재 워크플로우 닫기", + "ruRU": "Закрыть текущий рабочий процесс", + "ptBR": "Fechar fluxo de trabalho atual", + "frFR": "Fermer le flux de travail actuel", + "esAR": "Cerrar flujo de trabajo actual", + "arDZ": "إغلاق سير العمل الحالي" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "启用当前工作流": { + "text": "启用当前工作流", + "key": "t_7_1745457487185", + "translations": { + "zhCN": "启用当前工作流", + "zhTW": "啟用當前工作流程", + "enUS": "Enable current workflow", + "jaJP": "現在のワークフローを有効にする", + "koKR": "현재 워크플로우 활성화", + "ruRU": "Включить текущий рабочий процесс", + "ptBR": "Ativar fluxo de trabalho atual", + "frFR": "Activer le flux de travail actuel", + "esAR": "Habilitar flujo de trabajo actual", + "arDZ": "تمكين سير العمل الحالي" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "关闭后,工作流将不再自动执行,手动也无法执行,是否继续?": { + "text": "关闭后,工作流将不再自动执行,手动也无法执行,是否继续?", + "key": "t_8_1745457496621", + "translations": { + "zhCN": "关闭后,工作流将不再自动执行,手动也无法执行,是否继续?", + "zhTW": "關閉後,工作流將不再自動執行,手動也無法執行,是否繼續?", + "enUS": "After closing, the workflow will no longer execute automatically and cannot be executed manually. Continue?", + "jaJP": "閉じると、ワークフローは自動的に実行されなくなり、手動でも実行できません。続行しますか?", + "koKR": "닫으면 워크플로우가 자동으로 실행되지 않고 수동으로도 실행할 수 없습니다. 계속하시겠습니까?", + "ruRU": "После закрытия рабочий процесс больше не будет выполняться автоматически и вручную его тоже невозможно будет выполнить. Продолжить?", + "ptBR": "Após o fechamento, o fluxo de trabalho não será mais executado automaticamente e não poderá ser executado manualmente. Continuar?", + "frFR": "Après la fermeture, le flux de travail ne s'exécutera plus automatiquement et ne pourra pas être exécuté manuellement. Continuer ?", + "esAR": "Después de cerrar, el flujo de trabajo ya no se ejecutará automáticamente ni se podrá ejecutar manualmente. ¿Continuar?", + "arDZ": "بعد الإغلاق، لن يتم تنفيذ سير العمل تلقائيًا ولن يمكن تنفيذه يدويًا. هل تريد المتابعة؟" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "启用后,工作流配置自动执行,或手动执行,是否继续?": { + "text": "启用后,工作流配置自动执行,或手动执行,是否继续?", + "key": "t_9_1745457500045", + "translations": { + "zhCN": "启用后,工作流配置自动执行,或手动执行,是否继续?", + "zhTW": "啟用後,工作流程配置自動執行,或手動執行,是否繼續?", + "enUS": "After enabling, the workflow configuration will execute automatically or manually. Continue?", + "jaJP": "有効にすると、ワークフロー設定が自動的に実行されるか、手動で実行されます。続行しますか?", + "koKR": "활성화 후, 워크플로 구성이 자동 또는 수동으로 실행됩니다. 계속하시겠습니까?", + "ruRU": "После включения конфигурация рабочего процесса будет выполняться автоматически или вручную. Продолжить?", + "ptBR": "Após ativar, a configuração do fluxo de trabalho será executada automaticamente ou manualmente. Continuar?", + "frFR": "Après activation, la configuration du flux de travail s'exécutera automatiquement ou manuellement. Continuer ?", + "esAR": "Después de habilitar, la configuración del flujo de trabajo se ejecutará automáticamente o manualmente. ¿Continuar?", + "arDZ": "بعد التمكين، سيتم تنفيذ تكوين سير العمل تلقائيًا أو يدويًا. متابعة؟" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "添加工作流失败": { + "text": "添加工作流失败", + "key": "t_10_1745457486451", + "translations": { + "zhCN": "添加工作流失败", + "zhTW": "添加工作流程失敗", + "enUS": "Failed to add workflow", + "jaJP": "ワークフローの追加に失敗しました", + "koKR": "워크플로우 추가 실패", + "ruRU": "Не удалось добавить рабочий процесс", + "ptBR": "Falha ao adicionar fluxo de trabalho", + "frFR": "Échec de l'ajout du flux de travail", + "esAR": "Error al añadir el flujo de trabajo", + "arDZ": "فشل إضافة سير العمل" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "设置工作流运行方式失败": { + "text": "设置工作流运行方式失败", + "key": "t_11_1745457488256", + "translations": { + "zhCN": "设置工作流运行方式失败", + "zhTW": "設置工作流程運行方式失敗", + "enUS": "Failed to set workflow execution method", + "jaJP": "ワークフローの実行方法の設定に失敗しました", + "koKR": "워크플로우 실행 방식 설정 실패", + "ruRU": "Не удалось установить метод выполнения рабочего процесса", + "ptBR": "Falha ao definir o método de execução do fluxo de trabalho", + "frFR": "Échec de la définition du mode d'exécution du flux de travail", + "esAR": "Error al configurar el método de ejecución del flujo de trabajo", + "arDZ": "فشل في تعيين طريقة تنفيذ سير العمل" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "启用或禁用工作流失败": { + "text": "启用或禁用工作流失败", + "key": "t_12_1745457489076", + "translations": { + "zhCN": "启用或禁用工作流失败", + "zhTW": "啟用或禁用工作流程失敗", + "enUS": "Enable or disable workflow failure", + "jaJP": "ワークフローの失敗を有効または無効にする", + "koKR": "워크플로우 실패 활성화 또는 비활성화", + "ruRU": "Включение или отключение сбоя рабочего процесса", + "ptBR": "Ativar ou desativar falha no fluxo de trabalho", + "frFR": "Activer ou désactiver l'échec du flux de travail", + "esAR": "Habilitar o deshabilitar falla del flujo de trabajo", + "arDZ": "تمكين أو تعطيل فشل سير العمل" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "执行工作流失败": { + "text": "执行工作流失败", + "key": "t_13_1745457487555", + "translations": { + "zhCN": "执行工作流失败", + "zhTW": "執行工作流程失敗", + "enUS": "Failed to execute workflow", + "jaJP": "ワークフローの実行に失敗しました", + "koKR": "워크플로우 실행 실패", + "ruRU": "Не удалось выполнить рабочий процесс", + "ptBR": "Falha ao executar o fluxo de trabalho", + "frFR": "Échec de l'exécution du workflow", + "esAR": "Error al ejecutar el flujo de trabajo", + "arDZ": "فشل تنفيذ سير العمل" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "删除工作流失败": { + "text": "删除工作流失败", + "key": "t_14_1745457488092", + "translations": { + "zhCN": "删除工作流失败", + "zhTW": "刪除工作流失敗", + "enUS": "Failed to delete workflow", + "jaJP": "ワークフローの削除に失敗しました", + "koKR": "워크플로우 삭제 실패", + "ruRU": "Не удалось удалить рабочий процесс", + "ptBR": "Falha ao excluir fluxo de trabalho", + "frFR": "Échec de la suppression du flux de travail", + "esAR": "Error al eliminar el flujo de trabajo", + "arDZ": "فشل في حذف سير العمل" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "退出": { + "text": "退出", + "key": "t_15_1745457484292", + "translations": { + "zhCN": "退出", + "zhTW": "退出", + "enUS": "Exit", + "jaJP": "終了", + "koKR": "종료", + "ruRU": "Выход", + "ptBR": "Sair", + "frFR": "Quitter", + "esAR": "Salir", + "arDZ": "خروج" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "即将退出登录状态,确认退出吗?": { + "text": "即将退出登录状态,确认退出吗?", + "key": "t_16_1745457491607", + "translations": { + "zhCN": "即将退出登录状态,确认退出吗?", + "zhTW": "即將登出,確認要登出嗎?", + "enUS": "You are about to log out. Are you sure you want to exit?", + "jaJP": "ログアウトしようとしています。ログアウトしますか?", + "koKR": "로그아웃하려고 합니다. 로그아웃하시겠습니까?", + "ruRU": "Вы собираетесь выйти из системы. Вы уверены, что хотите выйти?", + "ptBR": "Você está prestes a sair. Tem certeza de que deseja sair?", + "frFR": "Vous êtes sur le point de vous déconnecter. Êtes-vous sûr de vouloir quitter ?", + "esAR": "Estás a punto de cerrar sesión. ¿Seguro que quieres salir?", + "arDZ": "أنت على وشك تسجيل الخروج. هل أنت متأكد أنك تريد الخروج؟" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "正在退出登录状态,请稍后...": { + "text": "正在退出登录状态,请稍后...", + "key": "t_17_1745457488251", + "translations": { + "zhCN": "正在退出登录状态,请稍后...", + "zhTW": "正在登出,請稍候...", + "enUS": "Logging out, please wait...", + "jaJP": "ログアウト中です、少々お待ちください...", + "koKR": "로그아웃 중입니다. 잠시만 기다려주세요...", + "ruRU": "Выход из системы, пожалуйста, подождите...", + "ptBR": "Saindo da conta, por favor aguarde...", + "frFR": "Déconnexion en cours, veuillez patienter...", + "esAR": "Cerrando sesión, por favor espere...", + "arDZ": "جاري تسجيل الخروج، يرجى الانتظار..." + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "添加邮箱通知": { + "text": "添加邮箱通知", + "key": "t_18_1745457490931", + "translations": { + "zhCN": "添加邮箱通知", + "zhTW": "新增郵箱通知", + "enUS": "Add email notification", + "jaJP": "メール通知を追加", + "koKR": "이메일 알림 추가", + "ruRU": "Добавить уведомление по электронной почте", + "ptBR": "Adicionar notificação por e-mail", + "frFR": "Ajouter une notification par e-mail", + "esAR": "Agregar notificación por correo electrónico", + "arDZ": "إضافة إشعار عبر البريد الإلكتروني" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "保存成功": { + "text": "保存成功", + "key": "t_19_1745457484684", + "translations": { + "zhCN": "保存成功", + "zhTW": "儲存成功", + "enUS": "Saved successfully", + "jaJP": "保存が成功しました", + "koKR": "저장 성공", + "ruRU": "Сохранено успешно", + "ptBR": "Salvo com sucesso", + "frFR": "Enregistré avec succès", + "esAR": "Guardado exitosamente", + "arDZ": "تم الحفظ بنجاح" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "删除成功": { + "text": "删除成功", + "key": "t_20_1745457485905", + "translations": { + "zhCN": "删除成功", + "zhTW": "刪除成功", + "enUS": "Deleted successfully", + "jaJP": "削除に成功しました", + "koKR": "삭제 성공", + "ruRU": "Удалено успешно", + "ptBR": "Excluído com sucesso", + "frFR": "Supprimé avec succès", + "esAR": "Eliminado con éxito", + "arDZ": "تم الحذف بنجاح" + }, + "timestamp": "2025-04-24T01:18:20.046Z" + }, + "获取系统设置失败": { + "text": "获取系统设置失败", + "key": "t_0_1745464080226", + "translations": { + "zhCN": "获取系统设置失败", + "zhTW": "獲取系統設置失敗", + "enUS": "Failed to get system settings", + "jaJP": "システム設定の取得に失敗しました", + "koKR": "시스템 설정 가져오기 실패", + "ruRU": "Не удалось получить настройки системы", + "ptBR": "Falha ao obter as configurações do sistema", + "frFR": "Échec de la récupération des paramètres du système", + "esAR": "Error al obtener la configuración del sistema", + "arDZ": "فشل الحصول على إعدادات النظام" + }, + "timestamp": "2025-04-24T03:08:06.047Z" + }, + "设置保存失败": { + "text": "设置保存失败", + "key": "t_1_1745464079590", + "translations": { + "zhCN": "设置保存失败", + "zhTW": "設定儲存失敗", + "enUS": "Failed to save settings", + "jaJP": "設定の保存に失敗しました", + "koKR": "설정 저장 실패", + "ruRU": "Не удалось сохранить настройки", + "ptBR": "Falha ao salvar configurações", + "frFR": "Échec de l'enregistrement des paramètres", + "esAR": "Error al guardar la configuración", + "arDZ": "فشل حفظ الإعدادات" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "获取通知设置失败": { + "text": "获取通知设置失败", + "key": "t_2_1745464077081", + "translations": { + "zhCN": "获取通知设置失败", + "zhTW": "獲取通知設置失敗", + "enUS": "Failed to get notification settings", + "jaJP": "通知設定の取得に失敗しました", + "koKR": "알림 설정 가져오기 실패", + "ruRU": "Не удалось получить настройки уведомлений", + "ptBR": "Falha ao obter configurações de notificação", + "frFR": "Échec de la récupération des paramètres de notification", + "esAR": "Error al obtener la configuración de notificaciones", + "arDZ": "فشل الحصول على إعدادات الإشعار" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "保存通知设置失败": { + "text": "保存通知设置失败", + "key": "t_3_1745464081058", + "translations": { + "zhCN": "保存通知设置失败", + "zhTW": "儲存通知設定失敗", + "enUS": "Failed to save notification settings", + "jaJP": "通知設定の保存に失敗しました", + "koKR": "알림 설정 저장 실패", + "ruRU": "Не удалось сохранить настройки уведомлений", + "ptBR": "Falha ao salvar configurações de notificação", + "frFR": "Échec de l'enregistrement des paramètres de notification", + "esAR": "Error al guardar la configuración de notificaciones", + "arDZ": "فشل حفظ إعدادات الإشعار" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "获取通知渠道列表失败": { + "text": "获取通知渠道列表失败", + "key": "t_4_1745464075382", + "translations": { + "zhCN": "获取通知渠道列表失败", + "zhTW": "獲取通知渠道列表失敗", + "enUS": "Failed to get notification channel list", + "jaJP": "通知チャネルリストの取得に失敗しました", + "koKR": "알림 채널 목록 가져오기 실패", + "ruRU": "Не удалось получить список каналов уведомлений", + "ptBR": "Falha ao obter a lista de canais de notificação", + "frFR": "Échec de la récupération de la liste des canaux de notification", + "esAR": "Error al obtener la lista de canales de notificación", + "arDZ": "فشل في الحصول على قائمة قنوات الإخطار" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "添加邮箱通知渠道失败": { + "text": "添加邮箱通知渠道失败", + "key": "t_5_1745464086047", + "translations": { + "zhCN": "添加邮箱通知渠道失败", + "zhTW": "添加郵箱通知渠道失敗", + "enUS": "Failed to add email notification channel", + "jaJP": "メール通知チャネルの追加に失敗しました", + "koKR": "이메일 알림 채널 추가 실패", + "ruRU": "Не удалось добавить канал уведомлений по электронной почте", + "ptBR": "Falha ao adicionar canal de notificação por e-mail", + "frFR": "Échec de l'ajout du canal de notification par email", + "esAR": "Error al agregar el canal de notificación por correo electrónico", + "arDZ": "فشل إضافة قناة إشعار البريد الإلكتروني" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "更新通知渠道失败": { + "text": "更新通知渠道失败", + "key": "t_6_1745464075714", + "translations": { + "zhCN": "更新通知渠道失败", + "zhTW": "更新通知渠道失敗", + "enUS": "Failed to update notification channel", + "jaJP": "通知チャネルの更新に失敗しました", + "koKR": "알림 채널 업데이트 실패", + "ruRU": "Не удалось обновить канал уведомлений", + "ptBR": "Falha ao atualizar o canal de notificação", + "frFR": "Échec de la mise à jour du canal de notification", + "esAR": "Error al actualizar el canal de notificación", + "arDZ": "فشل تحديث قناة الإشعارات" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "删除通知渠道失败": { + "text": "删除通知渠道失败", + "key": "t_7_1745464073330", + "translations": { + "zhCN": "删除通知渠道失败", + "zhTW": "刪除通知渠道失敗", + "enUS": "Failed to delete notification channel", + "jaJP": "通知チャネルの削除に失敗しました", + "koKR": "알림 채널 삭제 실패", + "ruRU": "Не удалось удалить канал уведомлений", + "ptBR": "Falha ao excluir o canal de notificação", + "frFR": "Échec de la suppression du canal de notification", + "esAR": "Error al eliminar el canal de notificación", + "arDZ": "فشل حذف قناة الإشعار" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "检查版本更新失败": { + "text": "检查版本更新失败", + "key": "t_8_1745464081472", + "translations": { + "zhCN": "检查版本更新失败", + "zhTW": "檢查版本更新失敗", + "enUS": "Failed to check for version update", + "jaJP": "バージョン更新の確認に失敗しました", + "koKR": "버전 업데이트 확인 실패", + "ruRU": "Не удалось проверить обновление версии", + "ptBR": "Falha ao verificar atualização de versão", + "frFR": "Échec de la vérification de la mise à jour de version", + "esAR": "Error al comprobar la actualización de versión", + "arDZ": "فشل التحقق من تحديث النسخة" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "保存设置": { + "text": "保存设置", + "key": "t_9_1745464078110", + "translations": { + "zhCN": "保存设置", + "zhTW": "儲存設定", + "enUS": "Save settings", + "jaJP": "設定を保存", + "koKR": "설정 저장", + "ruRU": "Сохранить настройки", + "ptBR": "Salvar configurações", + "frFR": "Enregistrer les paramètres", + "esAR": "Guardar configuración", + "arDZ": "حفظ الإعدادات" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "基础设置": { + "text": "基础设置", + "key": "t_10_1745464073098", + "translations": { + "zhCN": "基础设置", + "zhTW": "基礎設定", + "enUS": "Basic Settings", + "jaJP": "基本設定", + "koKR": "기본 설정", + "ruRU": "Основные настройки", + "ptBR": "Configurações básicas", + "frFR": "Paramètres de base", + "esAR": "Configuración básica", + "arDZ": "الإعدادات الأساسية" + }, + "timestamp": "2025-04-24T03:08:06.048Z" + }, + "选择模板": { + "text": "选择模板", + "key": "t_0_1745474945127", + "translations": { + "zhCN": "选择模板", + "zhTW": "選擇範本", + "enUS": "Choose template", + "jaJP": "テンプレートを選択", + "koKR": "템플릿 선택", + "ruRU": "Выбрать шаблон", + "ptBR": "Escolher modelo", + "frFR": "Choisir un modèle", + "esAR": "Elegir plantilla", + "arDZ": "اختر نموذج" + }, + "timestamp": "2025-04-24T06:09:05.127Z" + }, + "请输入工作流名称": { + "text": "请输入工作流名称", + "key": "t_0_1745490735213", + "translations": { + "zhCN": "请输入工作流名称", + "enUS": "Please enter the workflow name", + "jaJP": "ワークフロー名を入力してください", + "koKR": "워크플로우 이름을 입력하세요", + "ruRU": "Введите название рабочего процесса", + "ptBR": "Por favor, insira o nome do fluxo de trabalho", + "frFR": "Veuillez saisir le nom du workflow", + "esAR": "Por favor ingrese el nombre del flujo de trabajo", + "arDZ": "الرجاء إدخال اسم سير العمل", + "zhTW": "請輸入工作流程名稱" + }, + "timestamp": "2025-04-24T10:32:19.917Z" + }, + "配置": { + "text": "配置", + "key": "t_1_1745490731990", + "translations": { + "zhCN": "配置", + "zhTW": "配置", + "enUS": "Configuration", + "jaJP": "設定", + "koKR": "설정", + "ruRU": "Конфигурация", + "ptBR": "Configuração", + "frFR": "Configuration", + "esAR": "Configuración", + "arDZ": "إعدادات" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请输入邮箱格式": { + "text": "请输入邮箱格式", + "key": "t_2_1745490735558", + "translations": { + "zhCN": "请输入邮箱格式", + "zhTW": "請輸入電郵格式", + "enUS": "Please enter the email format", + "jaJP": "メール形式を入力してください", + "koKR": "이메일 형식을 입력하세요", + "ruRU": "Пожалуйста, введите формат электронной почты", + "ptBR": "Por favor, insira o formato de e-mail", + "frFR": "Veuillez saisir le format d'e-mail", + "esAR": "Por favor, ingrese el formato de correo electrónico", + "arDZ": "يرجى إدخال البريد الإلكتروني" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请选择DNS提供商": { + "text": "请选择DNS提供商", + "key": "t_3_1745490735059", + "translations": { + "zhCN": "请选择DNS提供商", + "zhTW": "請選擇DNS提供商", + "enUS": "Please select a DNS provider", + "jaJP": "DNSプロバイダーを選択してください", + "koKR": "DNS 공급자를 선택하세요", + "ruRU": "Пожалуйста, выберите поставщика DNS", + "ptBR": "Por favor, selecione um provedor de DNS", + "frFR": "Veuillez sélectionner un fournisseur DNS", + "esAR": "Por favor, seleccione un proveedor de DNS", + "arDZ": "يرجى اختيار موفر DNS" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请输入续签间隔": { + "text": "请输入续签间隔", + "key": "t_4_1745490735630", + "translations": { + "zhCN": "请输入续签间隔", + "zhTW": "請輸入續簽間隔", + "enUS": "Please enter the renewal interval", + "jaJP": "更新間隔を入力してください", + "koKR": "갱신 간격을 입력하세요", + "ruRU": "Введите интервал продления", + "ptBR": "Por favor, insira o intervalo de renovação", + "frFR": "Veuillez saisir l'intervalle de renouvellement", + "esAR": "Por favor, ingrese el intervalo de renovación", + "arDZ": "الرجاء إدخال فاصل التجديد" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请输入域名,域名不能为空": { + "text": "请输入域名,域名不能为空", + "key": "t_5_1745490738285", + "translations": { + "zhCN": "请输入域名,域名不能为空", + "zhTW": "請輸入域名,域名不能為空", + "enUS": "Please enter the domain name, the domain name cannot be empty", + "jaJP": "ドメイン名を入力してください。ドメイン名は空にできません", + "koKR": "도메인 이름을 입력하세요. 도메인 이름은 비워둘 수 없습니다", + "ruRU": "Введите доменное имя, оно не может быть пустым", + "ptBR": "Digite o nome de domínio, o nome de domínio não pode estar vazio", + "frFR": "Veuillez entrer le nom de domaine, il ne peut pas être vide", + "esAR": "Ingrese el nombre de dominio, el nombre de dominio no puede estar vacío", + "arDZ": "الرجاء إدخال اسم النطاق، لا يمكن أن يكون اسم النطاق فارغًا" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请输入邮箱,邮箱不能为空": { + "text": "请输入邮箱,邮箱不能为空", + "key": "t_6_1745490738548", + "translations": { + "zhCN": "请输入邮箱,邮箱不能为空", + "zhTW": "請輸入郵箱,郵箱不能為空", + "enUS": "Please enter your email, email cannot be empty", + "jaJP": "メールアドレスを入力してください、メールアドレスは空にできません", + "koKR": "이메일을 입력하세요, 이메일은 비워둘 수 없습니다", + "ruRU": "Пожалуйста, введите адрес электронной почты, поле не может быть пустым", + "ptBR": "Por favor, insira o e-mail, o e-mail não pode estar vazio", + "frFR": "Veuillez entrer votre email, l'email ne peut pas être vide", + "esAR": "Por favor ingrese el correo electrónico, el correo electrónico no puede estar vacío", + "arDZ": "الرجاء إدخال البريد الإلكتروني، لا يمكن أن يكون البريد الإلكتروني فارغًا" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请选择DNS提供商,DNS提供商不能为空": { + "text": "请选择DNS提供商,DNS提供商不能为空", + "key": "t_7_1745490739917", + "translations": { + "zhCN": "请选择DNS提供商,DNS提供商不能为空", + "zhTW": "請選擇DNS提供商,DNS提供商不能為空", + "enUS": "Please select a DNS provider, the DNS provider cannot be empty", + "jaJP": "DNSプロバイダーを選択してください。DNSプロバイダーは空にできません", + "koKR": "DNS 공급자를 선택하십시오. DNS 공급자는 비워 둘 수 없습니다", + "ruRU": "Пожалуйста, выберите DNS-провайдера, DNS-провайдер не может быть пустым", + "ptBR": "Por favor, selecione um provedor DNS, o provedor DNS não pode estar vazio", + "frFR": "Veuillez sélectionner un fournisseur DNS, le fournisseur DNS ne peut pas être vide", + "esAR": "Por favor, seleccione un proveedor DNS, el proveedor DNS no puede estar vacío", + "arDZ": "الرجاء اختيار موفر DNS، لا يمكن أن يكون موفر DNS فارغًا" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "请输入续签间隔,续签间隔不能为空": { + "text": "请输入续签间隔,续签间隔不能为空", + "key": "t_8_1745490739319", + "translations": { + "zhCN": "请输入续签间隔,续签间隔不能为空", + "zhTW": "請輸入續簽間隔,續簽間隔不能為空", + "enUS": "Please enter the renewal interval, the renewal interval cannot be empty", + "jaJP": "更新間隔を入力してください。更新間隔は空にできません", + "koKR": "갱신 간격을 입력하세요. 갱신 간격은 비워둘 수 없습니다", + "ruRU": "Введите интервал продления, интервал продления не может быть пустым", + "ptBR": "Insira o intervalo de renovação, o intervalo de renovação não pode estar vazio", + "frFR": "Veuillez saisir l'intervalle de renouvellement, l'intervalle de renouvellement ne peut pas être vide", + "esAR": "Ingrese el intervalo de renovación, el intervalo de renovación no puede estar vacío", + "arDZ": "الرجاء إدخال فترة التجديد، فترة التجديد لا يمكن أن تكون فارغة" + }, + "timestamp": "2025-04-24T10:32:19.918Z" + }, + "域名格式错误,请输入正确的域名": { + "text": "域名格式错误,请输入正确的域名", + "key": "t_0_1745553910661", + "translations": { + "zhCN": "域名格式错误,请输入正确的域名", + "zhTW": "域名格式錯誤,請輸入正確的域名", + "enUS": "Domain format error, please enter the correct domain", + "jaJP": "ドメイン形式が間違っています。正しいドメインを入力してください", + "koKR": "도메인 형식이 잘못되었습니다. 올바른 도메인을 입력하세요", + "ruRU": "Ошибка формата домена, введите правильный домен", + "ptBR": "Formato de domínio incorreto, insira o domínio correto", + "frFR": "Format de domaine incorrect, veuillez entrer le bon domaine", + "esAR": "Formato de dominio incorrecto, ingrese el dominio correcto", + "arDZ": "خطأ في تنسيق النطاق، يُرجى إدخال النطاق الصحيح" + }, + "timestamp": "2025-04-25T04:05:10.661Z" + }, + "邮箱格式错误,请输入正确的邮箱": { + "text": "邮箱格式错误,请输入正确的邮箱", + "key": "t_1_1745553909483", + "translations": { + "zhCN": "邮箱格式错误,请输入正确的邮箱", + "zhTW": "郵箱格式錯誤,請輸入正確的郵箱", + "enUS": "Invalid email format, please enter a correct email", + "jaJP": "メールの形式が正しくありません。正しいメールアドレスを入力してください", + "koKR": "이메일 형식이 잘못되었습니다. 올바른 이메일을 입력하세요", + "ruRU": "Неверный формат электронной почты, введите правильный адрес", + "ptBR": "Formato de e-mail inválido, por favor insira um e-mail correto", + "frFR": "Format d'email incorrect, veuillez saisir un email valide", + "esAR": "Formato de correo electrónico incorrecto, ingrese un correo correcto", + "arDZ": "تنسيق البريد الإلكتروني غير صحيح، يرجى إدخال بريد صحيح" + }, + "timestamp": "2025-04-25T04:05:10.662Z" + }, + "续签间隔不能为空": { + "text": "续签间隔不能为空", + "key": "t_2_1745553907423", + "translations": { + "zhCN": "续签间隔不能为空", + "zhTW": "續簽間隔不能為空", + "enUS": "Renewal interval cannot be empty", + "jaJP": "更新間隔は空にできません", + "koKR": "갱신 간격은 비워둘 수 없습니다", + "ruRU": "Интервал продления не может быть пустым", + "ptBR": "O intervalo de renovação não pode estar vazio", + "frFR": "L'intervalle de renouvellement ne peut pas être vide", + "esAR": "El intervalo de renovación no puede estar vacío", + "arDZ": "لا يمكن أن يكون فاصل التجديد فارغًا" + }, + "timestamp": "2025-04-25T04:05:10.662Z" + }, + "请输入证书域名,多个域名用逗号分隔": { + "text": "请输入证书域名,多个域名用逗号分隔", + "key": "t_0_1745735774005", + "translations": { + "zhCN": "请输入证书域名,多个域名用逗号分隔", + "zhTW": "請輸入證書域名,多個域名用逗號分隔", + "enUS": "Please enter the certificate domain name, multiple domain names separated by commas", + "jaJP": "証明書のドメイン名を入力してください。複数のドメイン名はカンマで区切ります", + "koKR": "인증서 도메인 이름을 입력하세요. 여러 도메인 이름은 쉼표로 구분합니다", + "ruRU": "Введите доменное имя сертификата, несколько доменных имен разделяются запятыми", + "ptBR": "Digite o nome de domínio do certificado, vários nomes de domínio separados por vírgulas", + "frFR": "Veuillez saisir le nom de domaine du certificat, plusieurs noms de domaine séparés par des virgules", + "esAR": "Ingrese el nombre de dominio del certificado, varios nombres de dominio separados por comas", + "arDZ": "الرجاء إدخال اسم نطاق الشهادة، أسماء نطاقات متعددة مفصولة بفواصل" + }, + "timestamp": "2025-04-27T06:36:55.317Z" + }, + "邮箱": { + "text": "邮箱", + "key": "t_1_1745735764953", + "translations": { + "zhCN": "邮箱", + "zhTW": "信箱", + "enUS": "Mailbox", + "jaJP": "メールボックス", + "koKR": "메일박스", + "ruRU": "Почтовый ящик", + "ptBR": "Caixa de correio", + "frFR": "Boîte aux lettres", + "esAR": "Buzón", + "arDZ": "صندوق البريد" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入邮箱,用于接收证书颁发机构的邮件通知": { + "text": "请输入邮箱,用于接收证书颁发机构的邮件通知", + "key": "t_2_1745735773668", + "translations": { + "zhCN": "请输入邮箱,用于接收证书颁发机构的邮件通知", + "zhTW": "請輸入郵箱,用於接收證書頒發機構的郵件通知", + "enUS": "Please enter your email to receive notifications from the certificate authority", + "jaJP": "証明書発行機関からのメール通知を受け取るためにメールアドレスを入力してください", + "koKR": "인증 기관의 메일 알림을 수신할 이메일을 입력해 주세요", + "ruRU": "Введите адрес электронной почты для получения уведомлений от сертификационного органа", + "ptBR": "Digite seu e-mail para receber notificações da autoridade certificadora", + "frFR": "Veuillez saisir votre adresse e-mail pour recevoir les notifications de l'autorité de certification", + "esAR": "Ingrese su correo electrónico para recibir notificaciones de la autoridad certificadora", + "arDZ": "الرجاء إدخال البريد الإلكتروني لتلقي إشعارات من سلطة الشهادات" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "DNS提供商": { + "text": "DNS提供商", + "key": "t_3_1745735765112", + "translations": { + "zhCN": "DNS提供商", + "zhTW": "DNS提供商", + "enUS": "DNS provider", + "jaJP": "DNSプロバイダー", + "koKR": "DNS 제공자", + "ruRU": "Провайдер DNS", + "ptBR": "Provedor de DNS", + "frFR": "Fournisseur DNS", + "esAR": "Proveedor de DNS", + "arDZ": "موفر DNS" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "添加": { + "text": "添加", + "key": "t_4_1745735765372", + "translations": { + "zhCN": "添加", + "zhTW": "添加", + "enUS": "Add", + "jaJP": "追加", + "koKR": "추가", + "ruRU": "Добавить", + "ptBR": "Adicionar", + "frFR": "Ajouter", + "esAR": "Agregar", + "arDZ": "إضافة" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "续签间隔(天)": { + "text": "续签间隔(天)", + "key": "t_5_1745735769112", + "translations": { + "zhCN": "续签间隔(天)", + "zhTW": "續簽間隔(天)", + "enUS": "Renewal Interval (Days)", + "jaJP": "更新間隔 (日)", + "koKR": "갱신 간격 (일)", + "ruRU": "Интервал продления (дни)", + "ptBR": "Intervalo de Renovação (Dias)", + "frFR": "Intervalle de renouvellement (jours)", + "esAR": "Intervalo de Renovación (Días)", + "arDZ": "فترة التجديد (أيام)" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "续签间隔时间": { + "text": "续签间隔时间", + "key": "t_6_1745735765205", + "translations": { + "zhCN": "续签间隔时间", + "zhTW": "續簽間隔時間", + "enUS": "Renewal interval", + "jaJP": "更新間隔", + "koKR": "갱신 간격", + "ruRU": "Интервал продления", + "ptBR": "Intervalo de renovação", + "frFR": "Intervalle de renouvellement", + "esAR": "Intervalo de renovación", + "arDZ": "فترة التجديد" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "天,到期后自动续签": { + "text": "天,到期后自动续签", + "key": "t_7_1745735768326", + "translations": { + "zhCN": "天,到期后自动续签", + "zhTW": "天,到期後自動續簽", + "enUS": "day, automatically renewed upon expiration", + "jaJP": "日、期限切れ後に自動更新", + "koKR": "일, 만료 후 자동 갱신", + "ruRU": "дней, автоматически продлевается после истечения срока", + "ptBR": "dias, renovado automaticamente após o vencimento", + "frFR": "jour(s), renouvelé automatiquement à l'expiration", + "esAR": "días, se renueva automáticamente al vencimiento", + "arDZ": "يوم، يتم التجديد تلقائيًا عند الانتهاء" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "已配置": { + "text": "已配置", + "key": "t_8_1745735765753", + "translations": { + "zhCN": "已配置", + "zhTW": "已配置", + "enUS": "Configured", + "jaJP": "設定済み", + "koKR": "구성됨", + "ruRU": "Настроено", + "ptBR": "Configurado", + "frFR": "Configuré", + "esAR": "Configurado", + "arDZ": "تم التكوين" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "未配置": { + "text": "未配置", + "key": "t_9_1745735765287", + "translations": { + "zhCN": "未配置", + "zhTW": "未配置", + "enUS": "Not configured", + "jaJP": "未設定", + "koKR": "구성되지 않음", + "ruRU": "Не настроено", + "ptBR": "Não configurado", + "frFR": "Non configuré", + "esAR": "No configurado", + "arDZ": "غير مهيأ" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "宝塔面板": { + "text": "宝塔面板", + "key": "t_10_1745735765165", + "translations": { + "zhCN": "宝塔面板", + "zhTW": "寶塔面板", + "enUS": "Pagoda Panel", + "jaJP": "パゴダパネル", + "koKR": "파고다 패널", + "ruRU": "Панель Пагода", + "ptBR": "Painel Pagode", + "frFR": "Panneau Pagode", + "esAR": "Panel Pagoda", + "arDZ": "لوحة باغودة" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "宝塔面板网站": { + "text": "宝塔面板网站", + "key": "t_11_1745735766456", + "translations": { + "zhCN": "宝塔面板网站", + "zhTW": "寶塔面板網站", + "enUS": "Pagoda Panel Website", + "jaJP": "宝塔パネルのウェブサイト", + "koKR": "파고다 패널 웹사이트", + "ruRU": "Веб-сайт панели Pagoda", + "ptBR": "Site do Painel Pagoda", + "frFR": "Site Web du Panneau Pagode", + "esAR": "Sitio web del Panel Pagoda", + "arDZ": "موقع لوحة باغودا" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "1Panel面板": { + "text": "1Panel面板", + "key": "t_12_1745735765571", + "translations": { + "zhCN": "1Panel面板", + "zhTW": "1Panel面板", + "enUS": "1Panel", + "jaJP": "1Panelパネル", + "koKR": "1Panel 패널", + "ruRU": "Панель 1Panel", + "ptBR": "Painel 1Panel", + "frFR": "Panneau 1Panel", + "esAR": "Panel 1Panel", + "arDZ": "لوحة 1Panel" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "1Panel网站": { + "text": "1Panel网站", + "key": "t_13_1745735766084", + "translations": { + "zhCN": "1Panel网站", + "zhTW": "1Panel網站", + "enUS": "1Panel website", + "jaJP": "1Panelウェブサイト", + "koKR": "1Panel 웹사이트", + "ruRU": "1Panel веб-сайт", + "ptBR": "1Panel site", + "frFR": "1Panel site web", + "esAR": "1Panel sitio web", + "arDZ": "1Panel موقع إلكتروني" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "腾讯云CDN": { + "text": "腾讯云CDN", + "key": "t_14_1745735766121", + "translations": { + "zhCN": "腾讯云CDN", + "zhTW": "騰訊雲CDN", + "enUS": "Tencent Cloud CDN", + "jaJP": "Tencent Cloud CDN", + "koKR": "텐센트 클라우드 CDN", + "ruRU": "Tencent Cloud CDN", + "ptBR": "Tencent Cloud CDN", + "frFR": "Tencent Cloud CDN", + "esAR": "Tencent Cloud CDN", + "arDZ": "تنسنت كلاود CDN" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "腾讯云COS": { + "text": "腾讯云COS", + "key": "t_15_1745735768976", + "translations": { + "zhCN": "腾讯云COS", + "zhTW": "騰訊雲COS", + "enUS": "Tencent Cloud COS", + "jaJP": "Tencent Cloud COS", + "koKR": "텐센트 클라우드 COS", + "ruRU": "Tencent Cloud COS", + "ptBR": "Tencent Cloud COS", + "frFR": "Tencent Cloud COS", + "esAR": "Tencent Cloud COS", + "arDZ": "تنسنت كلاود كوس" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "阿里云CDN": { + "text": "阿里云CDN", + "key": "t_16_1745735766712", + "translations": { + "zhCN": "阿里云CDN", + "zhTW": "阿里雲CDN", + "enUS": "Alibaba Cloud CDN", + "jaJP": "阿里雲CDN", + "koKR": "알리바바 클라우드 CDN", + "ruRU": "Alibaba Cloud CDN", + "ptBR": "Alibaba Cloud CDN", + "frFR": "Alibaba Cloud CDN", + "esAR": "Alibaba Cloud CDN", + "arDZ": "ألي بابا كلاود CDN" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "部署类型": { + "text": "部署类型", + "key": "t_18_1745735765638", + "translations": { + "zhCN": "部署类型", + "zhTW": "部署類型", + "enUS": "Deployment Type", + "jaJP": "展開タイプ", + "koKR": "배포 유형", + "ruRU": "Тип развертывания", + "ptBR": "Tipo de Implantação", + "frFR": "Type de déploiement", + "esAR": "Tipo de despliegue", + "arDZ": "نوع النشر" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请选择部署类型": { + "text": "请选择部署类型", + "key": "t_19_1745735766810", + "translations": { + "zhCN": "请选择部署类型", + "zhTW": "請選擇部署類型", + "enUS": "Please select deployment type", + "jaJP": "展開タイプを選択してください", + "koKR": "배포 유형을 선택하세요", + "ruRU": "Пожалуйста, выберите тип развертывания", + "ptBR": "Por favor, selecione o tipo de implantação", + "frFR": "Veuillez sélectionner le type de déploiement", + "esAR": "Por favor, seleccione el tipo de despliegue", + "arDZ": "يرجى اختيار نوع النشر" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入部署路径": { + "text": "请输入部署路径", + "key": "t_20_1745735768764", + "translations": { + "zhCN": "请输入部署路径", + "enUS": "Please enter the deployment path", + "jaJP": "展開パスを入力してください", + "koKR": "배포 경로를 입력하십시오", + "ruRU": "Введите путь развертывания", + "ptBR": "Por favor, insira o caminho de implantação", + "frFR": "Veuillez entrer le chemin de déploiement", + "esAR": "Por favor, ingrese la ruta de despliegue", + "arDZ": "الرجاء إدخال مسار النشر", + "zhTW": "請輸入部署路徑" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入前置命令": { + "text": "请输入前置命令", + "key": "t_21_1745735769154", + "translations": { + "zhCN": "请输入前置命令", + "zhTW": "請輸入前置命令", + "enUS": "Please enter the prefix command", + "jaJP": "前置コマンドを入力してください", + "koKR": "앞에 명령어를 입력하세요", + "ruRU": "Пожалуйста, введите префиксную команду", + "ptBR": "Por favor, insira o comando de prefixo", + "frFR": "Veuillez saisir la commande de préfixe", + "esAR": "Por favor, ingrese el comando de prefijo", + "arDZ": "الرجاء إدخال الأمر البادئة" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入后置命令": { + "text": "请输入后置命令", + "key": "t_22_1745735767366", + "translations": { + "zhCN": "请输入后置命令", + "zhTW": "請輸入後置命令", + "enUS": "Please enter the post command", + "jaJP": "後置コマンドを入力してください", + "koKR": "후치 명령어를 입력하세요", + "ruRU": "Пожалуйста, введите пост-команду", + "ptBR": "Por favor, insira o comando pós", + "frFR": "Veuillez entrer la commande postérieure", + "esAR": "Por favor, ingrese el comando posterior", + "arDZ": "الرجاء إدخال الأمر اللاحق" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入站点名称": { + "text": "请输入站点名称", + "key": "t_23_1745735766455", + "translations": { + "zhCN": "请输入站点名称", + "zhTW": "請輸入站點名稱", + "enUS": "Please enter the site name", + "jaJP": "サイト名を入力してください", + "koKR": "사이트 이름을 입력하세요", + "ruRU": "Пожалуйста, введите название сайта", + "ptBR": "Por favor, insira o nome do site", + "frFR": "Veuillez entrer le nom du site", + "esAR": "Por favor, ingrese el nombre del sitio", + "arDZ": "الرجاء إدخال اسم الموقع" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入站点ID": { + "text": "请输入站点ID", + "key": "t_24_1745735766826", + "translations": { + "zhCN": "请输入站点ID", + "zhTW": "請輸入站點ID", + "enUS": "Please enter the site ID", + "jaJP": "サイトIDを入力してください", + "koKR": "사이트 ID를 입력하십시오", + "ruRU": "Введите идентификатор сайта", + "ptBR": "Por favor, insira o ID do site", + "frFR": "Veuillez entrer l'ID du site", + "esAR": "Por favor ingrese el ID del sitio", + "arDZ": "يرجى إدخال معرف الموقع" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入区域": { + "text": "请输入区域", + "key": "t_25_1745735766651", + "translations": { + "zhCN": "请输入区域", + "zhTW": "請輸入區域", + "enUS": "Please enter the region", + "jaJP": "地域を入力してください", + "koKR": "지역을 입력하세요", + "ruRU": "Пожалуйста, введите регион", + "ptBR": "Por favor, insira a região", + "frFR": "Veuillez entrer la région", + "esAR": "Por favor, ingrese la región", + "arDZ": "الرجاء إدخال المنطقة" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请输入存储桶": { + "text": "请输入存储桶", + "key": "t_26_1745735767144", + "translations": { + "zhCN": "请输入存储桶", + "zhTW": "請輸入儲存桶", + "enUS": "Please enter the bucket", + "jaJP": "バケットを入力してください", + "koKR": "버킷을 입력하세요", + "ruRU": "Пожалуйста, введите ведро", + "ptBR": "Por favor, insira o balde", + "frFR": "Veuillez entrer le seau", + "esAR": "Por favor ingrese el cubo", + "arDZ": "الرجاء إدخال الحاوية" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "下一步": { + "text": "下一步", + "key": "t_27_1745735764546", + "translations": { + "zhCN": "下一步", + "zhTW": "下一步", + "enUS": "Next step", + "jaJP": "次のステップ", + "koKR": "다음 단계", + "ruRU": "Следующий шаг", + "ptBR": "Próximo passo", + "frFR": "Étape suivante", + "esAR": "Próximo paso", + "arDZ": "الخطوة التالية" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "选择部署类型": { + "text": "选择部署类型", + "key": "t_28_1745735766626", + "translations": { + "zhCN": "选择部署类型", + "zhTW": "選擇部署類型", + "enUS": "Select deployment type", + "jaJP": "展開タイプを選択", + "koKR": "배포 유형 선택", + "ruRU": "Выберите тип развертывания", + "ptBR": "Selecionar tipo de implantação", + "frFR": "Sélectionner le type de déploiement", + "esAR": "Seleccionar tipo de implementación", + "arDZ": "اختر نوع النشر" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "配置部署参数": { + "text": "配置部署参数", + "key": "t_29_1745735768933", + "translations": { + "zhCN": "配置部署参数", + "zhTW": "配置部署參數", + "enUS": "Configure deployment parameters", + "jaJP": "展開パラメータを設定する", + "koKR": "배포 매개변수 구성", + "ruRU": "Настройка параметров развертывания", + "ptBR": "Configurar parâmetros de implantação", + "frFR": "Configurer les paramètres de déploiement", + "esAR": "Configurar parámetros de despliegue", + "arDZ": "تكوين معلمات النشر" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "运行模式": { + "text": "运行模式", + "key": "t_30_1745735764748", + "translations": { + "zhCN": "运行模式", + "zhTW": "運行模式", + "enUS": "Operation mode", + "jaJP": "動作モード", + "koKR": "운영 모드", + "ruRU": "Режим работы", + "ptBR": "Modo de operação", + "frFR": "Mode de fonctionnement", + "esAR": "Modo de operación", + "arDZ": "وضع التشغيل" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "运行模式未配置": { + "text": "运行模式未配置", + "key": "t_31_1745735767891", + "translations": { + "zhCN": "运行模式未配置", + "zhTW": "運行模式未配置", + "enUS": "Operation mode not configured", + "jaJP": "動作モードが設定されていません", + "koKR": "운영 모드가 구성되지 않았습니다", + "ruRU": "Режим работы не настроен", + "ptBR": "Modo de operação não configurado", + "frFR": "Mode de fonctionnement non configuré", + "esAR": "Modo de operación no configurado", + "arDZ": "وضع التشغيل غير مُهيأ" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "运行周期未配置": { + "text": "运行周期未配置", + "key": "t_32_1745735767156", + "translations": { + "zhCN": "运行周期未配置", + "zhTW": "運行週期未配置", + "enUS": "Running cycle not configured", + "jaJP": "実行周期が設定されていません", + "koKR": "실행 주기가 구성되지 않았습니다", + "ruRU": "Цикл выполнения не настроен", + "ptBR": "Ciclo de execução não configurado", + "frFR": "Cycle d'exécution non configuré", + "esAR": "Ciclo de ejecución no configurado", + "arDZ": "دورة التشغيل غير مهيأة" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "运行时间未配置": { + "text": "运行时间未配置", + "key": "t_33_1745735766532", + "translations": { + "zhCN": "运行时间未配置", + "zhTW": "運行時間未配置", + "enUS": "Runtime not configured", + "jaJP": "実行時間が設定されていません", + "koKR": "실행 시간이 구성되지 않았습니다", + "ruRU": "Время выполнения не настроено", + "ptBR": "Tempo de execução não configurado", + "frFR": "Durée d'exécution non configurée", + "esAR": "Tiempo de ejecución no configurado", + "arDZ": "وقت التشغيل غير مضبوط" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "证书文件(PEM 格式)": { + "text": "证书文件(PEM 格式)", + "key": "t_34_1745735771147", + "translations": { + "zhCN": "证书文件(PEM 格式)", + "zhTW": "證書文件(PEM 格式)", + "enUS": "Certificate file (PEM format)", + "jaJP": "証明書ファイル(PEM形式)", + "koKR": "인증서 파일 (PEM 포맷)", + "ruRU": "Файл сертификата (формат PEM)", + "ptBR": "Arquivo de certificado (formato PEM)", + "frFR": "Fichier de certificat (format PEM)", + "esAR": "Archivo de certificado (formato PEM)", + "arDZ": "ملف الشهادة (تنسيق PEM)" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请粘贴证书文件内容,例如:\\n-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----": { + "text": "请粘贴证书文件内容,例如:\\n-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", + "key": "t_35_1745735781545", + "translations": { + "zhCN": "请粘贴证书文件内容,例如:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "zhTW": "請貼上證書文件內容,例如:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "enUS": "Please paste the certificate file content, for example:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "jaJP": "証明書ファイルの内容を貼り付けてください。例:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "koKR": "인증서 파일 내용을 붙여넣으세요, 예:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "ruRU": "Пожалуйста, вставьте содержимое файла сертификата, например:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "ptBR": "Por favor, cole o conteúdo do arquivo de certificado, por exemplo:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "frFR": "Veuillez coller le contenu du fichier de certificat, par exemple :\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "esAR": "Por favor, pegue el contenido del archivo de certificado, por ejemplo:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----", + "arDZ": "الرجاء لصق محتوى ملف الشهادة، على سبيل المثال:\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "私钥文件(KEY 格式)": { + "text": "私钥文件(KEY 格式)", + "key": "t_36_1745735769443", + "translations": { + "zhCN": "私钥文件(KEY 格式)", + "zhTW": "私鑰文件(KEY 格式)", + "enUS": "Private key file (KEY format)", + "jaJP": "秘密鍵ファイル(KEY 形式)", + "koKR": "개인 키 파일 (KEY 형식)", + "ruRU": "Файл закрытого ключа (формат KEY)", + "ptBR": "Arquivo de chave privada (formato KEY)", + "frFR": "Fichier de clé privée (format KEY)", + "esAR": "Archivo de clave privada (formato KEY)", + "arDZ": "ملف المفتاح الخاص (تنسيق KEY)" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "请粘贴私钥文件内容,例如:\\n-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----": { + "text": "请粘贴私钥文件内容,例如:\\n-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", + "key": "t_37_1745735779980", + "translations": { + "zhCN": "请粘贴私钥文件内容,例如:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "zhTW": "請貼上私鑰文件內容,例如:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "enUS": "Please paste the private key file content, for example:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "jaJP": "秘密キーファイルの内容を貼り付けてください、例:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "koKR": "개인 키 파일 내용을 붙여넣으세요, 예:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "ruRU": "Вставьте содержимое файла закрытого ключа, например:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "ptBR": "Cole o conteúdo do arquivo de chave privada, por exemplo:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "frFR": "Collez le contenu du fichier de clé privée, par exemple:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "esAR": "Pega el contenido del archivo de clave privada, por ejemplo:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", + "arDZ": "الصق محتوى ملف المفتاح الخاص، على سبيل المثال:\n-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "证书私钥内容不能为空": { + "text": "证书私钥内容不能为空", + "key": "t_38_1745735769521", + "translations": { + "zhCN": "证书私钥内容不能为空", + "zhTW": "證書私鑰內容不能為空", + "enUS": "Certificate private key content cannot be empty", + "jaJP": "証明書の秘密鍵の内容は空にできません", + "koKR": "인증서 개인 키 내용은 비워둘 수 없습니다", + "ruRU": "Содержимое закрытого ключа сертификата не может быть пустым", + "ptBR": "O conteúdo da chave privada do certificado não pode estar vazio", + "frFR": "Le contenu de la clé privée du certificat ne peut pas être vide", + "esAR": "El contenido de la clave privada del certificado no puede estar vacío", + "arDZ": "محتوى المفتاح الخاص للشهادة لا يمكن أن يكون فارغًا" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "证书私钥格式不正确": { + "text": "证书私钥格式不正确", + "key": "t_39_1745735768565", + "translations": { + "zhCN": "证书私钥格式不正确", + "zhTW": "證書私鑰格式不正確", + "enUS": "The format of the certificate private key is incorrect", + "jaJP": "証明書の秘密鍵の形式が正しくありません", + "koKR": "인증서 개인 키 형식이 올바르지 않습니다", + "ruRU": "Неверный формат закрытого ключа сертификата", + "ptBR": "O formato da chave privada do certificado está incorreto", + "frFR": "Le format de la clé privée du certificat est incorrect", + "esAR": "El formato de la clave privada del certificado es incorrecto", + "arDZ": "تنسيق مفتاح الشهادة الخاص غير صحيح" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "证书内容不能为空": { + "text": "证书内容不能为空", + "key": "t_40_1745735815317", + "translations": { + "zhCN": "证书内容不能为空", + "zhTW": "證書內容不能為空", + "enUS": "Certificate content cannot be empty", + "jaJP": "証明書の内容は空にできません", + "koKR": "인증서 내용은 비울 수 없습니다", + "ruRU": "Содержимое сертификата не может быть пустым", + "ptBR": "O conteúdo do certificado não pode estar vazio", + "frFR": "Le contenu du certificat ne peut pas être vide", + "esAR": "El contenido del certificado no puede estar vacío", + "arDZ": "محتوى الشهادة لا يمكن أن يكون فارغا" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "证书格式不正确": { + "text": "证书格式不正确", + "key": "t_41_1745735767016", + "translations": { + "zhCN": "证书格式不正确", + "zhTW": "證書格式不正確", + "enUS": "Certificate format is incorrect", + "jaJP": "証明書の形式が正しくありません", + "koKR": "인증서 형식이 올바르지 않습니다", + "ruRU": "Неправильный формат сертификата", + "ptBR": "Formato do certificado incorreto", + "frFR": "Format du certificat incorrect", + "esAR": "Formato de certificado incorrecto", + "arDZ": "تنسيق الشهادة غير صحيح" + }, + "timestamp": "2025-04-27T06:36:55.318Z" + }, + "上一步": { + "text": "上一步", + "key": "t_0_1745738961258", + "translations": { + "zhCN": "上一步", + "zhTW": "上一步", + "enUS": "Previous", + "jaJP": "前へ", + "koKR": "이전", + "ruRU": "Назад", + "ptBR": "Anterior", + "frFR": "Précédent", + "esAR": "Anterior", + "arDZ": "السابق" + }, + "timestamp": "2025-04-27T07:29:29.879Z" + }, + "提交": { + "text": "提交", + "key": "t_1_1745738963744", + "translations": { + "zhCN": "提交", + "zhTW": "提交", + "enUS": "Submit", + "jaJP": "提出", + "koKR": "제출", + "ruRU": "Отправить", + "ptBR": "Enviar", + "frFR": "Soumettre", + "esAR": "Enviar", + "arDZ": "إرسال" + }, + "timestamp": "2025-04-27T07:29:29.881Z" + }, + "配置部署参数,类型决定参数配置": { + "text": "配置部署参数,类型决定参数配置", + "key": "t_2_1745738969878", + "translations": { + "zhCN": "配置部署参数,类型决定参数配置", + "zhTW": "配置部署參數,類型決定參數配置", + "enUS": "Configure deployment parameters, the type determines the parameter configuration", + "jaJP": "展開パラメータを設定し、タイプによってパラメータの設定が決まる", + "koKR": "배포 매개변수 구성, 유형이 매개변수 구성을 결정함", + "ruRU": "Настройка параметров развертывания, тип определяет конфигурацию параметров", + "ptBR": "Configurar parâmetros de implantação, o tipo determina a configuração do parâmetro", + "frFR": "Configurer les paramètres de déploiement, le type détermine la configuration des paramètres", + "esAR": "Configurar parámetros de despliegue, el tipo determina la configuración de parámetros", + "arDZ": "تكوين معلمات النشر، النوع يحدد تكوين المعلمة" + }, + "timestamp": "2025-04-27T07:29:29.881Z" + }, + "部署设备来源": { + "text": "部署设备来源", + "key": "t_0_1745744491696", + "translations": { + "zhCN": "部署设备来源", + "zhTW": "部署設備來源", + "enUS": "Deployment device source", + "jaJP": "展開デバイスのソース", + "koKR": "배포 장치 소스", + "ruRU": "Источник устройства развертывания", + "ptBR": "Fonte do dispositivo de implantação", + "frFR": "Source de l'appareil de déploiement", + "esAR": "Fuente del dispositivo de implementación", + "arDZ": "مصدر جهاز النشر" + }, + "timestamp": "2025-04-27T09:01:35.813Z" + }, + "请选择部署设备来源": { + "text": "请选择部署设备来源", + "key": "t_1_1745744495019", + "translations": { + "zhCN": "请选择部署设备来源", + "zhTW": "請選擇部署設備來源", + "enUS": "Please select the deployment device source", + "jaJP": "展開デバイスのソースを選んでください", + "koKR": "배포 장치 소스를 선택하십시오", + "ruRU": "Пожалуйста, выберите источник устройства развертывания", + "ptBR": "Selecione a fonte do dispositivo de implantação", + "frFR": "Veuillez sélectionner la source de l'appareil de déploiement", + "esAR": "Por favor seleccione la fuente del dispositivo de despliegue", + "arDZ": "الرجاء اختيار مصدر جهاز التوزيع" + }, + "timestamp": "2025-04-27T09:01:35.813Z" + }, + "请选择部署类型后,点击下一步": { + "text": "请选择部署类型后,点击下一步", + "key": "t_2_1745744495813", + "translations": { + "zhCN": "请选择部署类型后,点击下一步", + "zhTW": "請選擇部署類型後,點擊下一步", + "enUS": "Please select the deployment type and click Next", + "jaJP": "展開タイプを選択して、次へをクリックしてください", + "koKR": "배포 유형을 선택하고 다음을 클릭하십시오", + "ruRU": "Пожалуйста, выберите тип развертывания и нажмите Далее", + "ptBR": "Por favor, selecione o tipo de implantação e clique em Avançar", + "frFR": "Veuillez sélectionner le type de déploiement et cliquer sur Suivant", + "esAR": "Por favor, seleccione el tipo de implementación y haga clic en Siguiente", + "arDZ": "الرجاء اختيار نوع النشر والنقر فوق التالي" + }, + "timestamp": "2025-04-27T09:01:35.813Z" + }, + "部署来源": { + "text": "部署来源", + "key": "t_0_1745744902975", + "translations": { + "zhCN": "部署来源", + "zhTW": "部署來源", + "enUS": "Deployment source", + "jaJP": "デプロイソース", + "koKR": "배포 소스", + "ruRU": "Источник развертывания", + "ptBR": "Fonte de implantação", + "frFR": "Source de déploiement", + "esAR": "Fuente de implementación", + "arDZ": "مصدر النشر" + }, + "timestamp": "2025-04-27T09:08:25.566Z" + }, + "请选择部署来源": { + "text": "请选择部署来源", + "key": "t_1_1745744905566", + "translations": { + "zhCN": "请选择部署来源", + "zhTW": "請選擇部署來源", + "enUS": "Please select deployment source", + "jaJP": "デプロイソースを選択してください", + "koKR": "배포 소스를 선택하세요", + "ruRU": "Выберите источник развертывания", + "ptBR": "Selecione a fonte de implantação", + "frFR": "Veuillez sélectionner la source de déploiement", + "esAR": "Seleccione la fuente de despliegue", + "arDZ": "الرجاء اختيار مصدر النشر" + }, + "timestamp": "2025-04-27T09:08:25.568Z" + }, + "添加更多设备": { + "text": "添加更多设备", + "key": "t_2_1745744903722", + "translations": { + "zhCN": "添加更多设备", + "zhTW": "新增更多設備", + "enUS": "Add more devices", + "jaJP": "さらにデバイスを追加", + "koKR": "더 많은 기기 추가", + "ruRU": "Добавить больше устройств", + "ptBR": "Adicionar mais dispositivos", + "frFR": "Ajouter plus d'appareils", + "esAR": "Agregar más dispositivos", + "arDZ": "إضافة المزيد من الأجهزة" + }, + "timestamp": "2025-04-27T09:08:25.568Z" + }, + "添加部署来源": { + "text": "添加部署来源", + "key": "t_0_1745748292337", + "translations": { + "zhCN": "添加部署来源", + "zhTW": "添加部署來源", + "enUS": "Add deployment source", + "jaJP": "デプロイソースの追加", + "koKR": "배포 소스 추가", + "ruRU": "Добавить источник развертывания", + "ptBR": "Adicionar fonte de implantação", + "frFR": "Ajouter une source de déploiement", + "esAR": "Agregar fuente de despliegue", + "arDZ": "إضافة مصدر النشر" + }, + "timestamp": "2025-04-27T10:04:58.903Z" + }, + "证书来源": { + "text": "证书来源", + "key": "t_1_1745748290291", + "translations": { + "zhCN": "证书来源", + "zhTW": "證書來源", + "enUS": "Certificate Source", + "jaJP": "証明書の出所", + "koKR": "인증서 출처", + "ruRU": "Источник сертификата", + "ptBR": "Fonte do Certificado", + "frFR": "Source du certificat", + "esAR": "Fuente del certificado", + "arDZ": "مصدر الشهادة" + }, + "timestamp": "2025-04-27T10:04:58.904Z" + }, + "当前类型部署来源为空,请先添加部署来源": { + "text": "当前类型部署来源为空,请先添加部署来源", + "key": "t_2_1745748298902", + "translations": { + "zhCN": "当前类型部署来源为空,请先添加部署来源", + "zhTW": "當前類型部署來源為空,請先添加部署來源", + "enUS": "The current type deployment source is empty, please add a deployment source first", + "jaJP": "現在のタイプのデプロイソースが空です、デプロイソースを追加してください", + "koKR": "현재 유형의 배포 소스가 비어 있습니다. 배포 소스를 먼저 추가하십시오", + "ruRU": "Источник развертывания текущего типа пуст, сначала добавьте источник развертывания", + "ptBR": "A origem da implantação do tipo atual está vazia, adicione uma origem de implantação primeiro", + "frFR": "La source de déploiement du type actuel est vide, veuillez d'abord ajouter une source de déploiement", + "esAR": "La fuente de implementación del tipo actual está vacía, agregue una fuente de implementación primero", + "arDZ": "مصدر النشر للنوع الحالي فارغ، يرجى إضافة مصدر نشر أولاً" + }, + "timestamp": "2025-04-27T10:04:58.904Z" + }, + "当前流程中没有申请节点,请先添加申请节点": { + "text": "当前流程中没有申请节点,请先添加申请节点", + "key": "t_3_1745748298161", + "translations": { + "zhCN": "当前流程中没有申请节点,请先添加申请节点", + "zhTW": "當前流程中沒有申請節點,請先添加申請節點", + "enUS": "There is no application node in the current process, please add an application node first", + "jaJP": "現在のプロセスには申請ノードがありません、まず申請ノードを追加してください", + "koKR": "현재 프로세스에 신청 노드가 없습니다. 먼저 신청 노드를 추가하세요", + "ruRU": "В текущем процессе нет узла заявки, пожалуйста, сначала добавьте узел заявки", + "ptBR": "Não há nó de aplicação no processo atual, por favor, adicione um nó de aplicação primeiro", + "frFR": "Il n'y a pas de nœud de demande dans le processus actuel, veuillez d'abord ajouter un nœud de demande", + "esAR": "No hay ningún nodo de solicitud en el proceso actual, por favor agregue un nodo de solicitud primero", + "arDZ": "لا توجد عقدة طلب في العملية الحالية، يرجى إضافة عقدة طلب أولاً" + }, + "timestamp": "2025-04-27T10:04:58.904Z" + }, + "提交内容": { + "text": "提交内容", + "key": "t_4_1745748290292", + "translations": { + "zhCN": "提交内容", + "zhTW": "提交內容", + "enUS": "Submit content", + "jaJP": "提出内容", + "koKR": "제출 내용", + "ruRU": "Отправить содержание", + "ptBR": "Enviar conteúdo", + "frFR": "Soumettre le contenu", + "esAR": "Enviar contenido", + "arDZ": "إرسال المحتوى" + }, + "timestamp": "2025-04-27T10:04:58.904Z" + }, + "点击编辑工作流标题": { + "text": "点击编辑工作流标题", + "key": "t_0_1745765864788", + "translations": { + "zhCN": "点击编辑工作流标题", + "zhTW": "點擊編輯工作流程標題", + "enUS": "Click to edit workflow title", + "jaJP": "ワークフロータイトルを編集するにはクリックします", + "koKR": "작업 흐름 제목 편집을 클릭하세요", + "ruRU": "Нажмите, чтобы редактировать заголовок рабочего процесса", + "ptBR": "Clique para editar o título do fluxo de trabalho", + "frFR": "Cliquez pour modifier le titre du flux de travail", + "esAR": "Haz clic para editar el título del flujo de trabajo", + "arDZ": "انقر لتحرير عنوان سير العمل" + }, + "timestamp": "2025-04-27T14:58:40.953Z" + }, + "删除节点-【{name}】": { + "text": "删除节点-【{name}】", + "key": "t_1_1745765875247", + "translations": { + "zhCN": "删除节点-【{name}】", + "zhTW": "刪除節點-【{name}】", + "enUS": "Delete Node - 【{name}】", + "jaJP": "ノード削除 - 【{name}】", + "koKR": "노드 삭제 - 【{name}】", + "ruRU": "Удалить узел - 【{name}】", + "ptBR": "Excluir Nó - 【{name}】", + "frFR": "Supprimer le nœud - 【{name}】", + "esAR": "Eliminar Nodo - 【{name}】", + "arDZ": "حذف العقدة - 【{name}】" + }, + "timestamp": "2025-04-27T14:58:40.954Z" + }, + "当前节点存在子节点,删除后会影响其他节点,是否确认删除?": { + "text": "当前节点存在子节点,删除后会影响其他节点,是否确认删除?", + "key": "t_2_1745765875918", + "translations": { + "zhCN": "当前节点存在子节点,删除后会影响其他节点,是否确认删除?", + "zhTW": "當前節點存在子節點,刪除後會影響其他節點,是否確認刪除?", + "enUS": "The current node has child nodes. Deleting it will affect other nodes. Are you sure you want to delete it?", + "jaJP": "現在のノードには子ノードが存在します。削除すると他のノードに影響を与えます。削除してもよろしいですか?", + "koKR": "현재 노드에 하위 노드가 존재합니다. 삭제하면 다른 노드에 영향을 미치게 됩니다. 삭제하시겠습니까?", + "ruRU": "Текущий узел имеет дочерние узлы. Удаление повлияет на другие узлы. Вы уверены, что хотите удалить?", + "ptBR": "O nó atual possui nós filhos. A exclusão afetará outros nós. Tem certeza de que deseja excluir?", + "frFR": "Le nœud actuel contient des nœuds enfants. La suppression affectera d'autres nœuds. Confirmez-vous la suppression ?", + "esAR": "El nodo actual tiene nodos hijos. Eliminarlo afectará a otros nodos. ¿Está seguro de que desea eliminarlo?", + "arDZ": "العقدة الحالية تحتوي على عقد فرعية. حذفها سيؤثر على عقد أخرى. هل أنت متأكد أنك تريد الحذف؟" + }, + "timestamp": "2025-04-27T14:58:40.954Z" + }, + "当前节点存在配置数据,是否确认删除?": { + "text": "当前节点存在配置数据,是否确认删除?", + "key": "t_3_1745765920953", + "translations": { + "zhCN": "当前节点存在配置数据,是否确认删除?", + "zhTW": "目前節點存在配置數據,是否確認刪除?", + "enUS": "The current node has configuration data, are you sure you want to delete it?", + "jaJP": "現在のノードには設定データがあります。削除してもよろしいですか?", + "koKR": "현재 노드에 구성 데이터가 있습니다. 삭제하시겠습니까?", + "ruRU": "Текущий узел содержит данные конфигурации, вы уверены, что хотите их удалить?", + "ptBR": "O nó atual possui dados de configuração, tem certeza que deseja excluí-lo?", + "frFR": "Le nœud actuel contient des données de configuration, êtes-vous sûr de vouloir le supprimer ?", + "esAR": "El nodo actual tiene datos de configuración, ¿está seguro de que desea eliminarlo?", + "arDZ": "العقدة الحالية تحتوي على بيانات التكوين، هل أنت متأكد أنك تريد حذفها؟" + }, + "timestamp": "2025-04-27T14:58:40.954Z" + }, + "请选择部署类型后,在进行下一步": { + "text": "请选择部署类型后,在进行下一步", + "key": "t_4_1745765868807", + "translations": { + "zhCN": "请选择部署类型后,再进行下一步", + "zhTW": "請選擇部署類型後,再進行下一步", + "enUS": "Please select the deployment type before proceeding to the next step", + "jaJP": "デプロイメントタイプを選択してから、次に進んでください", + "koKR": "배포 유형을 선택한 후 다음 단계로 진행하십시오", + "ruRU": "Пожалуйста, выберите тип развертывания, прежде чем перейти к следующему шагу", + "ptBR": "Por favor, selecione o tipo de implantação antes de prosseguir para a próxima etapa", + "frFR": "Veuillez sélectionner le type de déploiement avant de passer à l'étape suivante", + "esAR": "Por favor, seleccione el tipo de implementación antes de continuar con el siguiente paso", + "arDZ": "الرجاء تحديد نوع النشر قبل المتابعة إلى الخطوة التالية" + }, + "timestamp": "2025-04-27T14:58:40.954Z" + }, + "请选择类型": { + "text": "请选择类型", + "key": "t_0_1745833934390", + "translations": { + "zhCN": "请选择类型", + "zhTW": "請選擇類型", + "enUS": "Please select type", + "jaJP": "タイプを選択してください", + "koKR": "유형을 선택하십시오", + "ruRU": "Пожалуйста, выберите тип", + "ptBR": "Por favor, selecione o tipo", + "frFR": "Veuillez sélectionner le type", + "esAR": "Por favor, seleccione el tipo", + "arDZ": "يرجى اختيار النوع" + }, + "timestamp": "2025-04-28T09:52:23.713Z" + }, + "主机": { + "text": "主机", + "key": "t_1_1745833931535", + "translations": { + "zhCN": "主机", + "zhTW": "主機", + "enUS": "Host", + "jaJP": "ホスト", + "koKR": "호스트", + "ruRU": "Хост", + "ptBR": "Host", + "frFR": "Hôte", + "esAR": "Host", + "arDZ": "مضيف" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "端口": { + "text": "端口", + "key": "t_2_1745833931404", + "translations": { + "zhCN": "端口", + "zhTW": "埠", + "enUS": "port", + "jaJP": "ポート", + "koKR": "포트", + "ruRU": "порт", + "ptBR": "porta", + "frFR": "port", + "esAR": "puerto", + "arDZ": "منفذ" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "获取首页概览数据失败": { + "text": "获取首页概览数据失败", + "key": "t_3_1745833936770", + "translations": { + "zhCN": "获取首页概览数据失败", + "zhTW": "獲取首頁概覽數據失敗", + "enUS": "Failed to get homepage overview data", + "jaJP": "ホームページの概要データの取得に失敗しました", + "koKR": "홈페이지 개요 데이터 가져오기 실패", + "ruRU": "Не удалось получить обзорные данные главной страницы", + "ptBR": "Falha ao obter dados de visão geral da página inicial", + "frFR": "Échec de la récupération des données de vue d'ensemble de la page d'accueil", + "esAR": "Error al obtener los datos de vista general de la página de inicio", + "arDZ": "فشل في الحصول على بيانات نظرة عامة على الصفحة الرئيسية" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "版本信息": { + "text": "版本信息", + "key": "t_4_1745833932780", + "translations": { + "zhCN": "版本信息", + "zhTW": "版本資訊", + "enUS": "Version information", + "jaJP": "バージョン情報", + "koKR": "버전 정보", + "ruRU": "Информация о версии", + "ptBR": "Informações da versão", + "frFR": "Information de version", + "esAR": "Información de versión", + "arDZ": "معلومات النسخة" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "当前版本": { + "text": "当前版本", + "key": "t_5_1745833933241", + "translations": { + "zhCN": "当前版本", + "zhTW": "目前版本", + "enUS": "Current version", + "jaJP": "現在のバージョン", + "koKR": "현재 버전", + "ruRU": "Текущая версия", + "ptBR": "Versão atual", + "frFR": "Version actuelle", + "esAR": "Versión actual", + "arDZ": "الإصدار الحالي" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "更新方式": { + "text": "更新方式", + "key": "t_6_1745833933523", + "translations": { + "zhCN": "更新方式", + "zhTW": "更新方式", + "enUS": "Update method", + "jaJP": "更新方法", + "koKR": "업데이트 방법", + "ruRU": "Метод обновления", + "ptBR": "Método de atualização", + "frFR": "Méthode de mise à jour", + "esAR": "Método de actualización", + "arDZ": "طريقة التحديث" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "最新版本": { + "text": "最新版本", + "key": "t_7_1745833933278", + "translations": { + "zhCN": "最新版本", + "zhTW": "最新版本", + "enUS": "Latest version", + "jaJP": "最新バージョン", + "koKR": "최신 버전", + "ruRU": "Последняя версия", + "ptBR": "Última versão", + "frFR": "Dernière version", + "esAR": "Última versión", + "arDZ": "أحدث إصدار" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "更新日志": { + "text": "更新日志", + "key": "t_8_1745833933552", + "translations": { + "zhCN": "更新日志", + "zhTW": "更新日誌", + "enUS": "Changelog", + "jaJP": "更新履歴", + "koKR": "업데이트 로그", + "ruRU": "История изменений", + "ptBR": "Registro de alterações", + "frFR": "Journal des modifications", + "esAR": "Registro de cambios", + "arDZ": "سجل التغييرات" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "客服二维码": { + "text": "客服二维码", + "key": "t_9_1745833935269", + "translations": { + "zhCN": "客服二维码", + "zhTW": "客服二維碼", + "enUS": "Customer Service QR Code", + "jaJP": "カスタマーサービスQRコード", + "koKR": "고객 서비스 QR 코드", + "ruRU": "QR-код службы поддержки", + "ptBR": "Código QR do Atendimento ao Cliente", + "frFR": "Code QR du Service Client", + "esAR": "Código QR de Servicio al Cliente", + "arDZ": "رمز QR لخدمة العملاء" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "扫码添加客服": { + "text": "扫码添加客服", + "key": "t_10_1745833941691", + "translations": { + "zhCN": "扫码添加客服", + "zhTW": "掃碼添加客服", + "enUS": "Scan the QR code to add customer service", + "jaJP": "QRコードをスキャンしてカスタマーサービスを追加", + "koKR": "QR 코드를 스캔하여 고객 서비스 추가", + "ruRU": "Сканируйте QR-код, чтобы добавить службу поддержки", + "ptBR": "Escaneie o código QR para adicionar atendimento ao cliente", + "frFR": "Scannez le code QR pour ajouter le service client", + "esAR": "Escanee el código QR para agregar servicio al cliente", + "arDZ": "امسح رمز QR لإضافة خدمة العملاء" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "微信公众号": { + "text": "微信公众号", + "key": "t_11_1745833935261", + "translations": { + "zhCN": "微信公众号", + "zhTW": "微信公眾號", + "enUS": "WeChat Official Account", + "jaJP": "WeChat公式アカウント", + "koKR": "위챗 공식 계정", + "ruRU": "Официальный аккаунт WeChat", + "ptBR": "Conta Oficial do WeChat", + "frFR": "Compte officiel WeChat", + "esAR": "Cuenta Oficial de WeChat", + "arDZ": "حساب وي تشات الرسمي" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "扫码关注微信公众号": { + "text": "扫码关注微信公众号", + "key": "t_12_1745833943712", + "translations": { + "zhCN": "扫码关注微信公众号", + "zhTW": "掃碼關注微信公眾號", + "enUS": "Scan to follow the WeChat official account", + "jaJP": "QRコードをスキャンしてWeChat公式アカウントをフォロー", + "koKR": "QR 코드를 스캔하여 WeChat 공식 계정 팔로우", + "ruRU": "Сканируйте QR-код, чтобы подписаться на официальный аккаунт WeChat", + "ptBR": "Escaneie para seguir a conta oficial do WeChat", + "frFR": "Scannez pour suivre le compte officiel WeChat", + "esAR": "Escanea para seguir la cuenta oficial de WeChat", + "arDZ": "امسح الكود الضوئي لمتابعة الحساب الرسمي على WeChat" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "关于产品": { + "text": "关于产品", + "key": "t_13_1745833933630", + "translations": { + "zhCN": "关于产品", + "zhTW": "關於產品", + "enUS": "About the product", + "jaJP": "製品について", + "koKR": "제품 정보", + "ruRU": "О продукте", + "ptBR": "Sobre o produto", + "frFR": "À propos du produit", + "esAR": "Acerca del producto", + "arDZ": "حول المنتج" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "SMTP服务器": { + "text": "SMTP服务器", + "key": "t_14_1745833932440", + "translations": { + "zhCN": "SMTP服务器", + "zhTW": "SMTP伺服器", + "enUS": "SMTP server", + "jaJP": "SMTPサーバー", + "koKR": "SMTP 서버", + "ruRU": "SMTP сервер", + "ptBR": "Servidor SMTP", + "frFR": "Serveur SMTP", + "esAR": "Servidor SMTP", + "arDZ": "خادم SMTP" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "请输入SMTP服务器": { + "text": "请输入SMTP服务器", + "key": "t_15_1745833940280", + "translations": { + "zhCN": "请输入SMTP服务器", + "zhTW": "請輸入SMTP伺服器", + "enUS": "Please enter the SMTP server", + "jaJP": "SMTPサーバーを入力してください", + "koKR": "SMTP 서버를 입력하세요", + "ruRU": "Пожалуйста, введите SMTP сервер", + "ptBR": "Por favor, insira o servidor SMTP", + "frFR": "Veuillez entrer le serveur SMTP", + "esAR": "Por favor, ingrese el servidor SMTP", + "arDZ": "الرجاء إدخال خادم SMTP" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "SMTP端口": { + "text": "SMTP端口", + "key": "t_16_1745833933819", + "translations": { + "zhCN": "SMTP端口", + "zhTW": "SMTP埠", + "enUS": "SMTP port", + "jaJP": "SMTPポート", + "koKR": "SMTP 포트", + "ruRU": "SMTP порт", + "ptBR": "Porta SMTP", + "frFR": "Port SMTP", + "esAR": "Puerto SMTP", + "arDZ": "منفذ SMTP" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "请输入SMTP端口": { + "text": "请输入SMTP端口", + "key": "t_17_1745833935070", + "translations": { + "zhCN": "请输入SMTP端口", + "zhTW": "請輸入SMTP端口", + "enUS": "Please enter the SMTP port", + "jaJP": "SMTPポートを入力してください", + "koKR": "SMTP 포트를 입력하세요", + "ruRU": "Введите порт SMTP", + "ptBR": "Por favor, insira a porta SMTP", + "frFR": "Veuillez entrer le port SMTP", + "esAR": "Por favor, ingrese el puerto SMTP", + "arDZ": "الرجاء إدخال منفذ SMTP" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "SSL/TLS连接": { + "text": "SSL/TLS连接", + "key": "t_18_1745833933989", + "translations": { + "zhCN": "SSL/TLS连接", + "zhTW": "SSL/TLS連接", + "enUS": "SSL/TLS connection", + "jaJP": "SSL/TLS接続", + "koKR": "SSL/TLS 연결", + "ruRU": "SSL/TLS соединение", + "ptBR": "Conexão SSL/TLS", + "frFR": "Connexion SSL/TLS", + "esAR": "Conexión SSL/TLS", + "arDZ": "اتصال SSL/TLS" + }, + "timestamp": "2025-04-28T09:52:23.715Z" + }, + "请选择消息通知": { + "text": "请选择消息通知", + "key": "t_0_1745887835267", + "translations": { + "zhCN": "请选择消息通知", + "enUS": "Please select message notification", + "jaJP": "メッセージ通知を選択してください", + "koKR": "메시지 알림을 선택하세요", + "ruRU": "Пожалуйста, выберите уведомление о сообщении", + "ptBR": "Por favor, selecione notificação de mensagem", + "frFR": "Veuillez sélectionner la notification de message", + "esAR": "Por favor, seleccione notificación de mensaje", + "arDZ": "الرجاء اختيار إشعار الرسالة" + }, + "timestamp": "2025-04-29T00:50:35.267Z" + }, + "消息通知": { + "text": "消息通知", + "key": "t_1_1745887832941", + "translations": { + "zhCN": "消息通知", + "zhTW": "訊息通知", + "enUS": "Notification", + "jaJP": "通知", + "koKR": "알림", + "ruRU": "Уведомление", + "ptBR": "Notificação", + "frFR": "Notification", + "esAR": "Notificación", + "arDZ": "إشعار" + }, + "timestamp": "2025-04-29T00:50:35.268Z" + }, + "添加通知渠道": { + "text": "添加通知渠道", + "key": "t_2_1745887834248", + "translations": { + "zhCN": "添加通知渠道", + "zhTW": "新增通知渠道", + "enUS": "Add notification channel", + "jaJP": "通知チャネルを追加", + "koKR": "알림 채널 추가", + "ruRU": "Добавить канал уведомлений", + "ptBR": "Adicionar canal de notificação", + "frFR": "Ajouter un canal de notification", + "esAR": "Agregar canal de notificación", + "arDZ": "إضافة قناة إشعار" + }, + "timestamp": "2025-04-29T00:50:35.268Z" + }, + "请输入通知主题": { + "text": "请输入通知主题", + "key": "t_3_1745887835089", + "translations": { + "zhCN": "请输入通知主题", + "zhTW": "請輸入通知主題", + "enUS": "Please enter the notification subject", + "jaJP": "通知の件名を入力してください", + "koKR": "알림 제목을 입력하세요", + "ruRU": "Введите тему уведомления", + "ptBR": "Digite o assunto da notificação", + "frFR": "Veuillez saisir le sujet de la notification", + "esAR": "Ingrese el asunto de la notificación", + "arDZ": "الرجاء إدخال موضوع الإشعار" + }, + "timestamp": "2025-04-29T00:50:35.268Z" + }, + "请输入通知内容": { + "text": "请输入通知内容", + "key": "t_4_1745887835265", + "translations": { + "zhCN": "请输入通知内容", + "zhTW": "請輸入通知內容", + "enUS": "Please enter the notification content", + "jaJP": "通知内容を入力してください", + "koKR": "알림 내용을 입력하세요", + "ruRU": "Введите содержание уведомления", + "ptBR": "Por favor, insira o conteúdo da notificação", + "frFR": "Veuillez saisir le contenu de la notification", + "esAR": "Por favor ingrese el contenido de la notificación", + "arDZ": "يرجى إدخال محتوى الإشعار" + }, + "timestamp": "2025-04-29T00:50:35.268Z" + }, + "修改邮箱通知配置": { + "text": "修改邮箱通知配置", + "key": "t_0_1745895057404", + "translations": { + "zhCN": "修改邮箱通知配置", + "zhTW": "修改郵箱通知配置", + "enUS": "Modify email notification settings", + "jaJP": "メール通知設定の変更", + "koKR": "이메일 알림 설정 수정", + "ruRU": "Изменение настроек уведомлений по электронной почте", + "ptBR": "Modificar configurações de notificação por e-mail", + "frFR": "Modifier les paramètres de notification par e-mail", + "esAR": "Modificar configuración de notificaciones por correo electrónico", + "arDZ": "تعديل إعدادات الإشعارات عبر البريد الإلكتروني" + }, + "timestamp": "2025-04-29T02:50:57.404Z" + }, + "通知主题": { + "text": "通知主题", + "key": "t_0_1745920566646", + "translations": { + "zhCN": "通知主题", + "zhTW": "通知主題", + "enUS": "Notification Subject", + "jaJP": "通知主題", + "koKR": "공지 주제", + "ruRU": "Тема уведомления", + "ptBR": "Assunto da Notificação", + "frFR": "Sujet de la notification", + "esAR": "Asunto de la notificación", + "arDZ": "موضوع الإشعار" + }, + "timestamp": "2025-04-29T09:56:07.200Z" + }, + "通知内容": { + "text": "通知内容", + "key": "t_1_1745920567200", + "translations": { + "zhCN": "通知内容", + "zhTW": "通知內容", + "enUS": "Notification content", + "jaJP": "通知内容", + "koKR": "공지 내용", + "ruRU": "Содержание уведомления", + "ptBR": "Conteúdo da notificação", + "frFR": "Contenu de la notification", + "esAR": "Contenido de la notificación", + "arDZ": "محتوى الإخطار" + }, + "timestamp": "2025-04-29T09:56:07.200Z" + }, + "点击获取验证码": { + "text": "点击获取验证码", + "key": "t_0_1745936396853", + "translations": { + "zhCN": "点击获取验证码", + "zhTW": "點擊獲取驗證碼", + "enUS": "Click to get verification code", + "jaJP": "確認コードを取得するにはクリックしてください", + "koKR": "인증 코드 받기", + "ruRU": "Нажмите, чтобы получить код подтверждения", + "ptBR": "Clique para obter o código de verificação", + "frFR": "Cliquez pour obtenir le code de vérification", + "esAR": "Haz clic para obtener el código de verificación", + "arDZ": "انقر للحصول على رمز التحقق" + }, + "timestamp": "2025-04-29T14:19:56.853Z" + }, + "剩余{days}天": { + "text": "剩余{days}天", + "key": "t_0_1745999035681", + "translations": { + "zhCN": "剩余{days}天", + "zhTW": "剩餘{days}天", + "enUS": "remaining {days} days", + "jaJP": "残り{days}日", + "koKR": "남은 {days}일", + "ruRU": "осталось {days} дней", + "ptBR": "faltam {days} dias", + "frFR": "il reste {days} jours", + "esAR": "faltan {days} días", + "arDZ": "باقي {days} يوم" + }, + "timestamp": "2025-04-30T07:43:56.289Z" + }, + "即将到期{days}天": { + "text": "即将到期{days}天", + "key": "t_1_1745999036289", + "translations": { + "zhCN": "即将到期{days}天", + "zhTW": "即將到期{days}天", + "enUS": "Expiring soon {days} days", + "jaJP": "まもなく期限切れ {days} 日", + "koKR": "곧 만료됩니다 {days} 일", + "ruRU": "Скоро истекает срок действия {days} дней", + "ptBR": "Expirando em breve {days} dias", + "frFR": "Expiration prochaine {days} jours", + "esAR": "Próximo a vencer {days} días", + "arDZ": "قريباً تنتهي الصلاحية {days} يوم" + }, + "timestamp": "2025-04-30T07:43:56.291Z" + }, + "已过期": { + "text": "已过期", + "key": "t_0_1746000517848", + "translations": { + "zhCN": "已过期", + "zhTW": "已過期", + "enUS": "Expired", + "jaJP": "期限切れ", + "koKR": "만료됨", + "ruRU": "Истек срок", + "ptBR": "Expirado", + "frFR": "Expiré", + "esAR": "Caducado", + "arDZ": "منتهي الصلاحية" + }, + "timestamp": "2025-04-30T08:08:37.848Z" + }, + "已到期": { + "text": "已到期", + "key": "t_0_1746001199409", + "translations": { + "zhCN": "已到期", + "zhTW": "已到期", + "enUS": "Expired", + "jaJP": "期限切れ", + "koKR": "만료됨", + "ruRU": "Истекший", + "ptBR": "Expirado", + "frFR": "Expiré", + "esAR": "Expirado", + "arDZ": "انتهت الصلاحية" + }, + "timestamp": "2025-04-30T08:19:59.409Z" + }, + "DNS提供商为空": { + "text": "DNS提供商为空", + "key": "t_0_1746004861782", + "translations": { + "zhCN": "DNS提供商为空", + "zhTW": "DNS提供商為空", + "enUS": "DNS provider is empty", + "jaJP": "DNSプロバイダーが空です", + "koKR": "DNS 공급자가 비어 있습니다", + "ruRU": "DNS-провайдер пуст", + "ptBR": "Provedor DNS está vazio", + "frFR": "Le fournisseur DNS est vide", + "esAR": "El proveedor DNS está vacío", + "arDZ": "موفر DNS فارغ" + }, + "timestamp": "2025-04-30T09:21:01.782Z" + }, + "添加DNS提供商": { + "text": "添加DNS提供商", + "key": "t_1_1746004861166", + "translations": { + "zhCN": "添加DNS提供商", + "zhTW": "新增DNS供應商", + "enUS": "Add DNS provider", + "jaJP": "DNSプロバイダーを追加", + "koKR": "DNS 공급자 추가", + "ruRU": "Добавить DNS-провайдера", + "ptBR": "Adicionar provedor de DNS", + "frFR": "Ajouter un fournisseur DNS", + "esAR": "Agregar proveedor de DNS", + "arDZ": "إضافة مزود DNS" + }, + "timestamp": "2025-04-30T09:21:01.782Z" + }, + "刷新": { + "text": "刷新", + "key": "t_0_1746497662220", + "translations": { + "zhCN": "刷新", + "zhTW": "刷新", + "enUS": "Refresh", + "jaJP": "更新", + "koKR": "새로 고침", + "ruRU": "Обновить", + "ptBR": "Atualizar", + "frFR": "Rafraîchir", + "esAR": "Actualizar", + "arDZ": "تحديث" + }, + "timestamp": "2025-05-06T02:14:22.220Z" + }, + "运行中": { + "text": "运行中", + "key": "t_0_1746519384035", + "translations": { + "zhCN": "运行中", + "zhTW": "運行中", + "enUS": "Running", + "jaJP": "実行中", + "koKR": "실행 중", + "ruRU": "В работе", + "ptBR": "Em execução", + "frFR": "En cours", + "esAR": "En ejecución", + "arDZ": "قيد التشغيل" + }, + "timestamp": "2025-05-06T08:16:24.035Z" + }, + "执行历史详情": { + "text": "执行历史详情", + "key": "t_0_1746579648713", + "translations": { + "zhCN": "执行历史详情", + "zhTW": "執行歷史詳情", + "enUS": "Execution History Details", + "jaJP": "実行履歴の詳細", + "koKR": "실행 내역 상세 정보", + "ruRU": "Детали истории выполнения", + "ptBR": "Detalhes do Histórico de Execução", + "frFR": "Détails de l'historique d'exécution", + "esAR": "Detalles del Historial de Ejecución", + "arDZ": "تفاصيل سجل التنفيذ" + }, + "timestamp": "2025-05-07T01:00:48.713Z" + }, + "执行状态": { + "text": "执行状态", + "key": "t_0_1746590054456", + "translations": { + "zhCN": "执行状态", + "zhTW": "執行狀態", + "enUS": "Execution status", + "jaJP": "実行状態", + "koKR": "실행 상태", + "ruRU": "Статус выполнения", + "ptBR": "Status de execução", + "frFR": "État d'exécution", + "esAR": "Estado de ejecución", + "arDZ": "حالة التنفيذ" + }, + "timestamp": "2025-05-07T03:54:20.448Z" + }, + "触发方式": { + "text": "触发方式", + "key": "t_1_1746590060448", + "translations": { + "zhCN": "触发方式", + "zhTW": "觸發方式", + "enUS": "Trigger Method", + "jaJP": "トリガー方式", + "koKR": "트리거 방식", + "ruRU": "Способ активации", + "ptBR": "Método de Ativação", + "frFR": "Méthode de Déclenchement", + "esAR": "Método de Activación", + "arDZ": "طريقة التشغيل" + }, + "timestamp": "2025-05-07T03:54:20.449Z" + }, + "正在提交信息,请稍后...": { + "text": "正在提交信息,请稍后...", + "key": "t_0_1746667592819", + "translations": { + "zhCN": "正在提交信息,请稍后...", + "zhTW": "正在提交資訊,請稍後...", + "enUS": "Submitting information, please wait...", + "jaJP": "情報を送信中、少々お待ちください...", + "koKR": "정보를 제출 중입니다. 잠시 기다려주세요...", + "ruRU": "Отправка информации, пожалуйста, подождите...", + "ptBR": "Enviando informações, por favor aguarde...", + "frFR": "Soumission des informations en cours, veuillez patienter...", + "esAR": "Enviando información, por favor espere...", + "arDZ": "جاري تقديم المعلومات، يرجى الانتظار..." + }, + "timestamp": "2025-05-08T01:26:39.218Z" + }, + "密钥": { + "text": "密钥", + "key": "t_1_1746667588689", + "translations": { + "zhCN": "密钥", + "zhTW": "密鑰", + "enUS": "Key", + "jaJP": "キー", + "koKR": "키", + "ruRU": "Ключ", + "ptBR": "Chave", + "frFR": "Clé", + "esAR": "Clave", + "arDZ": "مفتاح" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "面板URL": { + "text": "面板URL", + "key": "t_2_1746667592840", + "translations": { + "zhCN": "面板URL", + "zhTW": "面板URL", + "enUS": "Panel URL", + "jaJP": "パネルURL", + "koKR": "패널 URL", + "ruRU": "URL панели", + "ptBR": "URL do painel", + "frFR": "URL du panneau", + "esAR": "URL del panel", + "arDZ": "عنوان URL للوحة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "忽略 SSL/TLS证书错误": { + "text": "忽略 SSL/TLS证书错误", + "key": "t_3_1746667592270", + "translations": { + "zhCN": "忽略 SSL/TLS证书错误", + "zhTW": "忽略 SSL/TLS證書錯誤", + "enUS": "Ignore SSL/TLS certificate errors", + "jaJP": "SSL/TLS証明書のエラーを無視する", + "koKR": "SSL/TLS 인증서 오류 무시", + "ruRU": "Игнорировать ошибки SSL/TLS сертификатов", + "ptBR": "Ignorar erros de certificado SSL/TLS", + "frFR": "Ignorer les erreurs de certificat SSL/TLS", + "esAR": "Ignorar errores de certificado SSL/TLS", + "arDZ": "تجاهل أخطاء شهادة SSL/TLS" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "表单验证失败": { + "text": "表单验证失败", + "key": "t_4_1746667590873", + "translations": { + "zhCN": "表单验证失败", + "zhTW": "表單驗證失敗", + "enUS": "Form validation failed", + "jaJP": "フォーム検証失敗", + "koKR": "양식 검증 실패", + "ruRU": "Проверка формы не удалась", + "ptBR": "Validação de formulário falhou", + "frFR": "Échec de la validation du formulaire", + "esAR": "Falló la validación del formulario", + "arDZ": "فشل التحقق من النموذج" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "新建工作流": { + "text": "新建工作流", + "key": "t_5_1746667590676", + "translations": { + "zhCN": "新建工作流", + "zhTW": "新增工作流程", + "enUS": "New workflow", + "jaJP": "新しいワークフロー", + "koKR": "새 워크플로우", + "ruRU": "Новый рабочий процесс", + "ptBR": "Novo fluxo de trabalho", + "frFR": "Nouveau flux de travail", + "esAR": "Nuevo flujo de trabajo", + "arDZ": "سير عمل جديد" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "正在提交申请,请稍后...": { + "text": "正在提交申请,请稍后...", + "key": "t_6_1746667592831", + "translations": { + "zhCN": "正在提交申请,请稍后...", + "zhTW": "正在提交申請,請稍後...", + "enUS": "Submitting application, please wait...", + "jaJP": "申請を提出しています、少々お待ちください...", + "koKR": "제출 중입니다. 잠시만 기다려 주세요...", + "ruRU": "Отправка заявки, пожалуйста, подождите...", + "ptBR": "Enviando aplicação, por favor aguarde...", + "frFR": "Soumission de la demande, veuillez patienter...", + "esAR": "Enviando aplicación, por favor espere...", + "arDZ": "جارٍ تقديم الطلب، يرجى الانتظار..." + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "请输入正确的域名": { + "text": "请输入正确的域名", + "key": "t_7_1746667592468", + "translations": { + "zhCN": "请输入正确的域名", + "zhTW": "請輸入正確的域名", + "enUS": "Please enter the correct domain name", + "jaJP": "正しいドメイン名を入力してください", + "koKR": "올바른 도메인 이름을 입력하세요", + "ruRU": "Пожалуйста, введите правильное доменное имя", + "ptBR": "Por favor, insira o nome de domínio correto", + "frFR": "Veuillez entrer le nom de domaine correct", + "esAR": "Por favor ingrese el nombre de dominio correcto", + "arDZ": "يرجى إدخال اسم النطاق الصحيح" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "请选择解析方式": { + "text": "请选择解析方式", + "key": "t_8_1746667591924", + "translations": { + "zhCN": "请选择解析方式", + "zhTW": "請選擇解析方式", + "enUS": "Please select the parsing method", + "jaJP": "解析方法を選択してください", + "koKR": "파싱 방법을 선택하세요", + "ruRU": "Пожалуйста, выберите метод анализа", + "ptBR": "Por favor, selecione o método de análise", + "frFR": "Veuillez sélectionner la méthode d'analyse", + "esAR": "Por favor, seleccione el método de análisis", + "arDZ": "يرجى اختيار طريقة التحليل" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "刷新列表": { + "text": "刷新列表", + "key": "t_9_1746667589516", + "translations": { + "zhCN": "刷新列表", + "zhTW": "刷新列表", + "enUS": "Refresh list", + "jaJP": "リストを更新", + "koKR": "목록 새로 고침", + "ruRU": "Обновить список", + "ptBR": "Atualizar lista", + "frFR": "Actualiser la liste", + "esAR": "Actualizar lista", + "arDZ": "تحديث القائمة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "通配符": { + "text": "通配符", + "key": "t_10_1746667589575", + "translations": { + "zhCN": "通配符", + "zhTW": "通配符", + "enUS": "Wildcard", + "jaJP": "ワイルドカード", + "koKR": "와일드카드", + "ruRU": "Подстановочный знак", + "ptBR": "Curinga", + "frFR": "Joker", + "esAR": "Comodín", + "arDZ": "حرف بدل" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "多域名": { + "text": "多域名", + "key": "t_11_1746667589598", + "translations": { + "zhCN": "多域名", + "zhTW": "多域名", + "enUS": "Multi-domain", + "jaJP": "マルチドメイン", + "koKR": "멀티 도메인", + "ruRU": "Мультидомен", + "ptBR": "Multidomínio", + "frFR": "Multi-domaine", + "esAR": "Multidominio", + "arDZ": "متعدد النطاقات" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "热门": { + "text": "热门", + "key": "t_12_1746667589733", + "translations": { + "zhCN": "热门", + "zhTW": "熱門", + "enUS": "Popular", + "jaJP": "人気", + "koKR": "인기", + "ruRU": "Популярные", + "ptBR": "Popular", + "frFR": "Populaire", + "esAR": "Popular", + "arDZ": "شائع" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "是广泛使用的免费SSL证书提供商,适合个人网站和测试环境。": { + "text": "是广泛使用的免费SSL证书提供商,适合个人网站和测试环境。", + "key": "t_13_1746667599218", + "translations": { + "zhCN": "是广泛使用的免费SSL证书提供商,适合个人网站和测试环境。", + "zhTW": "是廣泛使用的免費SSL證書提供商,適合個人網站和測試環境。", + "enUS": "is a widely used free SSL certificate provider, suitable for personal websites and testing environments.", + "jaJP": "広く使用されている無料のSSL証明書プロバイダーで、個人のウェブサイトやテスト環境に適しています。", + "koKR": "개인 웹사이트 및 테스트 환경에 적합한 널리 사용되는 무료 SSL 인증서 제공업체입니다.", + "ruRU": "широко используемый бесплатный провайдер SSL-сертификатов, подходящий для личных веб-сайтов и тестовых сред.", + "ptBR": "é um fornecedor de certificados SSL gratuito amplamente utilizado, adequado para sites pessoais e ambientes de teste.", + "frFR": "est un fournisseur de certificats SSL gratuits largement utilisé, adapté aux sites personnels et aux environnements de test.", + "esAR": "es un proveedor de certificados SSL gratuito ampliamente utilizado, adecuado para sitios web personales y entornos de prueba.", + "arDZ": "هو موفر شهادات SSL مجاني مستخدم على نطاق واسع، مناسب للمواقع الشخصية وبيئات الاختبار." + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "支持域名数": { + "text": "支持域名数", + "key": "t_14_1746667590827", + "translations": { + "zhCN": "支持域名数", + "zhTW": "支持域名數", + "enUS": "Number of supported domains", + "jaJP": "サポートされているドメインの数", + "koKR": "지원되는 도메인 수", + "ruRU": "Количество поддерживаемых доменов", + "ptBR": "Número de domínios suportados", + "frFR": "Nombre de domaines pris en charge", + "esAR": "Número de dominios soportados", + "arDZ": "عدد النطاقات المدعومة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "个": { + "text": "个", + "key": "t_15_1746667588493", + "translations": { + "zhCN": "个", + "zhTW": "個", + "enUS": "piece", + "jaJP": "個", + "koKR": "개", + "ruRU": "штука", + "ptBR": "peça", + "frFR": "pièce", + "esAR": "pieza", + "arDZ": "قطعة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "支持通配符": { + "text": "支持通配符", + "key": "t_16_1746667591069", + "translations": { + "zhCN": "支持通配符", + "zhTW": "支援萬用字元", + "enUS": "Support wildcards", + "jaJP": "ワイルドカードをサポート", + "koKR": "와일드카드 지원", + "ruRU": "Поддержка подстановочных знаков", + "ptBR": "Suporte a curingas", + "frFR": "Prise en charge des caractères génériques", + "esAR": "Compatibilidad con caracteres comodín", + "arDZ": "دعم أحرف البدل" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "支持": { + "text": "支持", + "key": "t_17_1746667588785", + "translations": { + "zhCN": "支持", + "zhTW": "支持", + "enUS": "support", + "jaJP": "サポート", + "koKR": "지원", + "ruRU": "поддержка", + "ptBR": "suporte", + "frFR": "soutien", + "esAR": "apoyo", + "arDZ": "دعم" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "不支持": { + "text": "不支持", + "key": "t_18_1746667590113", + "translations": { + "zhCN": "不支持", + "zhTW": "不支援", + "enUS": "Not supported", + "jaJP": "サポートされていません", + "koKR": "지원되지 않음", + "ruRU": "Не поддерживается", + "ptBR": "Não suportado", + "frFR": "Non pris en charge", + "esAR": "No soportado", + "arDZ": "غير مدعوم" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "有效期": { + "text": "有效期", + "key": "t_19_1746667589295", + "translations": { + "zhCN": "有效期", + "zhTW": "有效期", + "enUS": "Validity period", + "jaJP": "有効期間", + "koKR": "유효 기간", + "ruRU": "Срок действия", + "ptBR": "Validade", + "frFR": "Période de validité", + "esAR": "Período de validez", + "arDZ": "فترة الصلاحية" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "天": { + "text": "天", + "key": "t_20_1746667588453", + "translations": { + "zhCN": "天", + "zhTW": "天", + "enUS": "Day", + "jaJP": "天", + "koKR": "하늘", + "ruRU": "день", + "ptBR": "dia", + "frFR": "jour", + "esAR": "día", + "arDZ": "يوم" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "支持小程序": { + "text": "支持小程序", + "key": "t_21_1746667590834", + "translations": { + "zhCN": "支持小程序", + "zhTW": "支援小程式", + "enUS": "Support Mini Program", + "jaJP": "ミニプログラムをサポート", + "koKR": "미니프로그램 지원", + "ruRU": "Поддержка мини-программ", + "ptBR": "Suporte para Mini Programas", + "frFR": "Prise en charge des mini-programmes", + "esAR": "Soporte para Mini Programas", + "arDZ": "دعم البرامج الصغيرة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "适用网站": { + "text": "适用网站", + "key": "t_22_1746667591024", + "translations": { + "zhCN": "适用网站", + "zhTW": "適用網站", + "enUS": "Applicable websites", + "jaJP": "対応サイト", + "koKR": "적용 가능한 웹사이트", + "ruRU": "Применимые веб-сайты", + "ptBR": "Sites aplicáveis", + "frFR": "Sites applicables", + "esAR": "Sitios aplicables", + "arDZ": "المواقع المطبقة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "*.example.com、*.demo.com": { + "text": "*.example.com、*.demo.com", + "key": "t_23_1746667591989", + "translations": { + "zhCN": "*.example.com、*.demo.com", + "zhTW": "*.example.com、*.demo.com", + "enUS": "*.example.com, *.demo.com", + "jaJP": "*.example.com、*.demo.com", + "koKR": "*.example.com, *.demo.com", + "ruRU": "*.example.com, *.demo.com", + "ptBR": "*.example.com, *.demo.com", + "frFR": "*.example.com, *.demo.com", + "esAR": "*.example.com, *.demo.com", + "arDZ": "*.example.com، *.demo.com" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "*.example.com": { + "text": "*.example.com", + "key": "t_24_1746667583520", + "translations": { + "zhCN": "*.example.com", + "zhTW": "*.example.com", + "enUS": "*.example.com", + "jaJP": "*.example.com", + "koKR": "*.example.com", + "ruRU": "*.example.com", + "ptBR": "*.example.com", + "frFR": "*.example.com", + "esAR": "*.example.com", + "arDZ": "*.example.com" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "example.com、demo.com": { + "text": "example.com、demo.com", + "key": "t_25_1746667590147", + "translations": { + "zhCN": "example.com、demo.com", + "zhTW": "example.com、demo.com", + "enUS": "example.com、demo.com", + "jaJP": "example.com、demo.com", + "koKR": "example.com、demo.com", + "ruRU": "example.com、demo.com", + "ptBR": "example.com、demo.com", + "frFR": "example.com、demo.com", + "esAR": "example.com、demo.com", + "arDZ": "example.com、demo.com" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "www.example.com、example.com": { + "text": "www.example.com、example.com", + "key": "t_26_1746667594662", + "translations": { + "zhCN": "www.example.com、example.com", + "zhTW": "www.example.com、example.com", + "enUS": "www.example.com, example.com", + "jaJP": "www.example.com、example.com", + "koKR": "www.example.com, example.com", + "ruRU": "www.example.com, example.com", + "ptBR": "www.example.com, example.com", + "frFR": "www.example.com, example.com", + "esAR": "www.example.com, example.com", + "arDZ": "www.example.com، example.com" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "免费": { + "text": "免费", + "key": "t_27_1746667589350", + "translations": { + "zhCN": "免费", + "zhTW": "免費", + "enUS": "Free", + "jaJP": "無料", + "koKR": "무료", + "ruRU": "Бесплатно", + "ptBR": "Grátis", + "frFR": "Gratuit", + "esAR": "Gratis", + "arDZ": "مجاني" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "立即申请": { + "text": "立即申请", + "key": "t_28_1746667590336", + "translations": { + "zhCN": "立即申请", + "zhTW": "立即申請", + "enUS": "Apply Now", + "jaJP": "今すぐ申し込む", + "koKR": "지금 신청하기", + "ruRU": "Подать заявку сейчас", + "ptBR": "Aplicar agora", + "frFR": "Postuler maintenant", + "esAR": "Aplicar ahora", + "arDZ": "تقديم الآن" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "项目地址": { + "text": "项目地址", + "key": "t_29_1746667589773", + "translations": { + "zhCN": "项目地址", + "zhTW": "專案地址", + "enUS": "Project address", + "jaJP": "プロジェクトアドレス", + "koKR": "프로젝트 주소", + "ruRU": "Адрес проекта", + "ptBR": "Endereço do projeto", + "frFR": "Adresse du projet", + "esAR": "Dirección del proyecto", + "arDZ": "عنوان المشروع" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "请输入证书文件路径": { + "text": "请输入证书文件路径", + "key": "t_30_1746667591892", + "translations": { + "zhCN": "请输入证书文件路径", + "zhTW": "請輸入憑證檔案路徑", + "enUS": "Please enter the certificate file path", + "jaJP": "証明書ファイルのパスを入力してください", + "koKR": "인증서 파일 경로를 입력하세요", + "ruRU": "Введите путь к файлу сертификата", + "ptBR": "Digite o caminho do arquivo de certificado", + "frFR": "Veuillez entrer le chemin du fichier de certificat", + "esAR": "Ingrese la ruta del archivo de certificado", + "arDZ": "الرجاء إدخال مسار ملف الشهادة" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "请输入私钥文件路径": { + "text": "请输入私钥文件路径", + "key": "t_31_1746667593074", + "translations": { + "zhCN": "请输入私钥文件路径", + "zhTW": "請輸入私鑰文件路徑", + "enUS": "Please enter the private key file path", + "jaJP": "秘密鍵ファイルのパスを入力してください", + "koKR": "개인 키 파일 경로를 입력하세요", + "ruRU": "Введите путь к файлу закрытого ключа", + "ptBR": "Digite o caminho do arquivo de chave privada", + "frFR": "Veuillez entrer le chemin du fichier de clé privée", + "esAR": "Ingrese la ruta del archivo de clave privada", + "arDZ": "الرجاء إدخال مسار ملف المفتاح الخاص" + }, + "timestamp": "2025-05-08T01:26:39.219Z" + }, + "当前DNS提供商为空,请先添加DNS提供商": { + "text": "当前DNS提供商为空,请先添加DNS提供商", + "key": "t_0_1746673515941", + "translations": { + "zhCN": "当前DNS提供商为空,请先添加DNS提供商", + "zhTW": "當前DNS提供商為空,請先添加DNS提供商", + "enUS": "The current DNS provider is empty, please add a DNS provider first", + "jaJP": "現在のDNSプロバイダーが空です。まずDNSプロバイダーを追加してください", + "koKR": "현재 DNS 공급자가 비어 있습니다. 먼저 DNS 공급자를 추가하세요", + "ruRU": "Текущий DNS-провайдер отсутствует, сначала добавьте DNS-провайдера", + "ptBR": "O provedor de DNS atual está vazio, adicione um provedor de DNS primeiro", + "frFR": "Le fournisseur DNS actuel est vide, veuillez d'abord ajouter un fournisseur DNS", + "esAR": "El proveedor de DNS actual está vacío, por favor agregue un proveedor de DNS primero", + "arDZ": "موفر DNS الحالي فارغ، يرجى إضافة موفر DNS أولاً" + }, + "timestamp": "2025-05-08T03:05:15.942Z" + }, + "测试通知发送失败": { + "text": "测试通知发送失败", + "key": "t_0_1746676862189", + "translations": { + "zhCN": "测试通知发送失败", + "zhTW": "測試通知發送失敗", + "enUS": "Test notification sending failed", + "jaJP": "テスト通知の送信に失敗しました", + "koKR": "테스트 알림 전송 실패", + "ruRU": "Не удалось отправить тестовое уведомление", + "ptBR": "Falha no envio da notificação de teste", + "frFR": "Échec de l'envoi de la notification de test", + "esAR": "Error en el envío de notificación de prueba", + "arDZ": "فشل إرسال إشعار الاختبار" + }, + "timestamp": "2025-05-08T04:01:02.329Z" + }, + "添加配置": { + "text": "添加配置", + "key": "t_1_1746676859550", + "translations": { + "zhCN": "添加配置", + "zhTW": "新增配置", + "enUS": "Add Configuration", + "jaJP": "設定を追加", + "koKR": "구성 추가", + "ruRU": "Добавить конфигурацию", + "ptBR": "Adicionar Configuração", + "frFR": "Ajouter une Configuration", + "esAR": "Agregar Configuración", + "arDZ": "إضافة تكوين" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "暂未支持": { + "text": "暂未支持", + "key": "t_2_1746676856700", + "translations": { + "zhCN": "暂未支持", + "zhTW": "暫不支持", + "enUS": "Not supported yet", + "jaJP": "まだサポートされていません", + "koKR": "아직 지원되지 않음", + "ruRU": "Пока не поддерживается", + "ptBR": "Ainda não suportado", + "frFR": "Pas encore pris en charge", + "esAR": "Aún no compatible", + "arDZ": "غير مدعوم بعد" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "邮件通知": { + "text": "邮件通知", + "key": "t_3_1746676857930", + "translations": { + "zhCN": "邮件通知", + "zhTW": "郵件通知", + "enUS": "Email notification", + "jaJP": "メール通知", + "koKR": "이메일 알림", + "ruRU": "Уведомление по электронной почте", + "ptBR": "Notificação por e-mail", + "frFR": "Notification par e-mail", + "esAR": "Notificación por correo electrónico", + "arDZ": "إشعار البريد الإلكتروني" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通过邮件发送告警通知": { + "text": "通过邮件发送告警通知", + "key": "t_4_1746676861473", + "translations": { + "zhCN": "通过邮件发送告警通知", + "zhTW": "透過郵件發送警報通知", + "enUS": "Send alert notifications via email", + "jaJP": "メールでアラート通知を送信する", + "koKR": "이메일로 경고 알림 보내기", + "ruRU": "Отправка уведомлений о тревоге по электронной почте", + "ptBR": "Enviar notificações de alerta por e-mail", + "frFR": "Envoyer des notifications d'alerte par e-mail", + "esAR": "Enviar notificaciones de alerta por correo electrónico", + "arDZ": "إرسال إخطارات التنبيه عبر البريد الإلكتروني" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "钉钉通知": { + "text": "钉钉通知", + "key": "t_5_1746676856974", + "translations": { + "zhCN": "钉钉通知", + "zhTW": "釘釘通知", + "enUS": "DingTalk Notification", + "jaJP": "DingTalk通知", + "koKR": "DingTalk 알림", + "ruRU": "Уведомление DingTalk", + "ptBR": "Notificação DingTalk", + "frFR": "Notification DingTalk", + "esAR": "Notificación de DingTalk", + "arDZ": "إشعار DingTalk" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通过钉钉机器人发送告警通知": { + "text": "通过钉钉机器人发送告警通知", + "key": "t_6_1746676860886", + "translations": { + "zhCN": "通过钉钉机器人发送告警通知", + "zhTW": "通過釘釘機器人發送警報通知", + "enUS": "Send alarm notifications via DingTalk robot", + "jaJP": "DingTalkロボットを通じてアラーム通知を送信する", + "koKR": "DingTalk 봇을 통해 경고 알림 보내기", + "ruRU": "Отправка уведомлений о тревоге через робота DingTalk", + "ptBR": "Enviar notificações de alarme via robô DingTalk", + "frFR": "Envoyer des notifications d'alarme via le robot DingTalk", + "esAR": "Enviar notificaciones de alarma a través del robot DingTalk", + "arDZ": "إرسال إشعارات الإنذار عبر روبوت DingTalk" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "企业微信通知": { + "text": "企业微信通知", + "key": "t_7_1746676857191", + "translations": { + "zhCN": "企业微信通知", + "zhTW": "企業微信通知", + "enUS": "WeChat Work Notification", + "jaJP": "企業WeChat通知", + "koKR": "기업 위챗 알림", + "ruRU": "Уведомление WeChat Work", + "ptBR": "Notificação do WeChat Work", + "frFR": "Notification WeChat Work", + "esAR": "Notificación de WeChat Work", + "arDZ": "إشعار WeChat Work" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通过企业微信机器人发送告警通知": { + "text": "通过企业微信机器人发送告警通知", + "key": "t_8_1746676860457", + "translations": { + "zhCN": "通过企业微信机器人发送告警通知", + "zhTW": "通過企業微信機器人發送警報通知", + "enUS": "Send alarm notifications via WeCom bot", + "jaJP": "WeComボットでアラーム通知を送信", + "koKR": "WeCom 봇을 통해 경고 알림 보내기", + "ruRU": "Отправка уведомлений о тревоге через бота WeCom", + "ptBR": "Enviar notificações de alarme via bot do WeCom", + "frFR": "Envoyer des notifications d'alarme via le bot WeCom", + "esAR": "Enviar notificaciones de alarma a través del bot de WeCom", + "arDZ": "إرسال تنبيهات الإنذار عبر بوت WeCom" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "飞书通知": { + "text": "飞书通知", + "key": "t_9_1746676857164", + "translations": { + "zhCN": "飞书通知", + "zhTW": "飛書通知", + "enUS": "Feishu Notification", + "jaJP": "Feishu通知", + "koKR": "Feishu 알림", + "ruRU": "Уведомление Feishu", + "ptBR": "Notificação Feishu", + "frFR": "Notification Feishu", + "esAR": "Notificación de Feishu", + "arDZ": "إشعار Feishu" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通过飞书机器人发送告警通知": { + "text": "通过飞书机器人发送告警通知", + "key": "t_10_1746676862329", + "translations": { + "zhCN": "通过飞书机器人发送告警通知", + "zhTW": "通過飛書機器人發送告警通知", + "enUS": "Send alarm notifications via Feishu bot", + "jaJP": "飛書ロボットでアラーム通知を送信する", + "koKR": "Feishu 봇을 통해 알림 알림 보내기", + "ruRU": "Отправка уведомлений о тревоге через бота Feishu", + "ptBR": "Enviar notificações de alarme via bot Feishu", + "frFR": "Envoyer des notifications d'alarme via le bot Feishu", + "esAR": "Enviar notificaciones de alarma a través del bot Feishu", + "arDZ": "إرسال إخطارات الإنذار عبر بوت Feishu" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "WebHook通知": { + "text": "WebHook通知", + "key": "t_11_1746676859158", + "translations": { + "zhCN": "WebHook通知", + "zhTW": "WebHook通知", + "enUS": "WebHook Notification", + "jaJP": "WebHook通知", + "koKR": "WebHook 알림", + "ruRU": "WebHook уведомление", + "ptBR": "Notificação WebHook", + "frFR": "Notification WebHook", + "esAR": "Notificación WebHook", + "arDZ": "إشعار WebHook" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通过WebHook发送告警通知": { + "text": "通过WebHook发送告警通知", + "key": "t_12_1746676860503", + "translations": { + "zhCN": "通过WebHook发送告警通知", + "zhTW": "通過WebHook發送警報通知", + "enUS": "Send alarm notifications via WebHook", + "jaJP": "WebHookを介してアラーム通知を送信する", + "koKR": "WebHook를 통해 알림 알림 보내기", + "ruRU": "Отправка уведомлений о тревоге через WebHook", + "ptBR": "Enviar notificações de alarme via WebHook", + "frFR": "Envoyer des notifications d'alarme via WebHook", + "esAR": "Enviar notificaciones de alarma a través de WebHook", + "arDZ": "إرسال إشعارات الإنذار عبر WebHook" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "通知渠道": { + "text": "通知渠道", + "key": "t_13_1746676856842", + "translations": { + "zhCN": "通知渠道", + "zhTW": "通知渠道", + "enUS": "Notification channel", + "jaJP": "通知チャネル", + "koKR": "알림 채널", + "ruRU": "Канал уведомлений", + "ptBR": "Canal de notificação", + "frFR": "Canal de notification", + "esAR": "Canal de notificación", + "arDZ": "قناة الإخطار" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "已配置的通知渠道": { + "text": "已配置的通知渠道", + "key": "t_14_1746676859019", + "translations": { + "zhCN": "已配置的通知渠道", + "zhTW": "已配置的通知頻道", + "enUS": "Configured notification channels", + "jaJP": "設定済みの通知チャネル", + "koKR": "구성된 알림 채널", + "ruRU": "Настроенные каналы уведомлений", + "ptBR": "Canais de notificação configurados", + "frFR": "Canaux de notification configurés", + "esAR": "Canales de notificación configurados", + "arDZ": "قنوات الإعلام المُهيأة" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "已停用": { + "text": "已停用", + "key": "t_15_1746676856567", + "translations": { + "zhCN": "已停用", + "zhTW": "已停用", + "enUS": "Disabled", + "jaJP": "無効化", + "koKR": "비활성화됨", + "ruRU": "Отключено", + "ptBR": "Desativado", + "frFR": "Désactivé", + "esAR": "Desactivado", + "arDZ": "معطل" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "测试": { + "text": "测试", + "key": "t_16_1746676855270", + "translations": { + "zhCN": "测试", + "zhTW": "測試", + "enUS": "Test", + "jaJP": "テスト", + "koKR": "테스트", + "ruRU": "тест", + "ptBR": "Teste", + "frFR": "Test", + "esAR": "Prueba", + "arDZ": "اختبار" + }, + "timestamp": "2025-05-08T04:01:02.331Z" + }, + "最后一次执行状态": { + "text": "最后一次执行状态", + "key": "t_0_1746677882486", + "translations": { + "zhCN": "最后一次执行状态", + "zhTW": "最後一次執行狀態", + "enUS": "Last execution status", + "jaJP": "最後の実行状態", + "koKR": "마지막 실행 상태", + "ruRU": "Последний статус выполнения", + "ptBR": "Último status de execução", + "frFR": "Dernier état d'exécution", + "esAR": "Último estado de ejecución", + "arDZ": "حالة التنفيذ الأخيرة" + }, + "timestamp": "2025-05-08T04:18:02.487Z" + }, + "域名不能为空": { + "text": "域名不能为空", + "key": "t_0_1746697487119", + "translations": { + "zhCN": "域名不能为空", + "zhTW": "域名不能為空", + "enUS": "Domain name cannot be empty", + "jaJP": "ドメイン名は空にできません", + "koKR": "도메인 이름은 비워둘 수 없습니다", + "ruRU": "Имя домена не может быть пустым", + "ptBR": "O nome do domínio não pode estar vazio", + "frFR": "Le nom de domaine ne peut pas être vide", + "esAR": "El nombre de dominio no puede estar vacío", + "arDZ": "اسم النطاق لا يمكن أن يكون فارغًا" + }, + "timestamp": "2025-05-08T09:44:47.164Z" + }, + "邮箱不能为空": { + "text": "邮箱不能为空", + "key": "t_1_1746697485188", + "translations": { + "zhCN": "邮箱不能为空", + "zhTW": "郵箱不能為空", + "enUS": "Email cannot be empty", + "jaJP": "メールアドレスは空にできません", + "koKR": "이메일은 비워둘 수 없습니다", + "ruRU": "Почта не может быть пустой", + "ptBR": "O e-mail não pode estar vazio", + "frFR": "L'e-mail ne peut pas être vide", + "esAR": "El correo electrónico no puede estar vacío", + "arDZ": "البريد الإلكتروني لا يمكن أن يكون فارغاً" + }, + "timestamp": "2025-05-08T09:44:47.164Z" + }, + "阿里云OSS": { + "text": "阿里云OSS", + "key": "t_2_1746697487164", + "translations": { + "zhCN": "阿里云OSS", + "zhTW": "阿里雲OSS", + "enUS": "Alibaba Cloud OSS", + "jaJP": "アリババクラウドOSS", + "koKR": "알리바바 클라우드 OSS", + "ruRU": "Alibaba Cloud OSS", + "ptBR": "Alibaba Cloud OSS", + "frFR": "Alibaba Cloud OSS", + "esAR": "Alibaba Cloud OSS", + "arDZ": "علي بابا كلاود OSS" + }, + "timestamp": "2025-05-08T09:44:47.164Z" + }, + "主机提供商": { + "text": "主机提供商", + "key": "t_0_1746754500246", + "translations": { + "zhCN": "主机提供商", + "zhTW": "主機供應商", + "enUS": "Hosting Provider", + "jaJP": "ホスティングプロバイダー", + "koKR": "호스팅 제공업체", + "ruRU": "Хостинг-провайдер", + "ptBR": "Provedor de Hospedagem", + "frFR": "Fournisseur d'hébergement", + "esAR": "Proveedor de Alojamiento", + "arDZ": "مزود الاستضافة" + }, + "timestamp": "2025-05-09T01:35:00.270Z" + }, + "API来源": { + "text": "API来源", + "key": "t_1_1746754499371", + "translations": { + "zhCN": "API来源", + "zhTW": "API來源", + "enUS": "API Source", + "jaJP": "APIソース", + "koKR": "API 소스", + "ruRU": "Источник API", + "ptBR": "Fonte da API", + "frFR": "Source de l'API", + "esAR": "Fuente de la API", + "arDZ": "مصدر API" + }, + "timestamp": "2025-05-09T01:35:00.270Z" + }, + "API 类型": { + "text": "API 类型", + "key": "t_2_1746754500270", + "translations": { + "zhCN": "API 类型", + "zhTW": "API 類型", + "enUS": "API type", + "jaJP": "APIタイプ", + "koKR": "API 유형", + "ruRU": "Тип API", + "ptBR": "Tipo de API", + "frFR": "Type d'API", + "esAR": "Tipo de API", + "arDZ": "نوع API" + }, + "timestamp": "2025-05-09T01:35:00.270Z" + }, + "请求错误": { + "text": "请求错误", + "key": "t_0_1746760933542", + "translations": { + "zhCN": "请求错误", + "zhTW": "請求錯誤", + "enUS": "Request error", + "jaJP": "リクエストエラー", + "koKR": "요청 오류", + "ruRU": "Ошибка запроса", + "ptBR": "Erro de solicitação", + "frFR": "Erreur de requête", + "esAR": "Error de solicitud", + "arDZ": "خطأ في الطلب" + }, + "timestamp": "2025-05-09T03:22:13.542Z" + }, + "共{0}条": { + "text": "共{0}条", + "key": "t_0_1746773350551", + "translations": { + "zhCN": "共{0}条", + "zhTW": "共{0}條", + "enUS": "{0} results", + "jaJP": "合計{0}件", + "koKR": "총 {0}건", + "ruRU": "Всего {0}", + "ptBR": "Total de {0} itens", + "frFR": "{0} résultats", + "esAR": "{0} en total", + "arDZ": "مجموع {0}" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "未执行": { + "text": "未执行", + "key": "t_1_1746773348701", + "translations": { + "zhCN": "未执行", + "zhTW": "未執行", + "enUS": "Not executed", + "jaJP": "未実行", + "koKR": "실행되지 않음", + "ruRU": "Не выполнено", + "ptBR": "Não executado", + "frFR": "Non exécuté", + "esAR": "No ejecutado", + "arDZ": "لم يتم التنفيذ" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "自动化工作流": { + "text": "自动化工作流", + "key": "t_2_1746773350970", + "translations": { + "zhCN": "自动化工作流", + "zhTW": "自動化工作流程", + "enUS": "Automated workflow", + "jaJP": "自動化ワークフロー", + "koKR": "자동화 워크플로우", + "ruRU": "Автоматизированный рабочий процесс", + "ptBR": "Fluxo de trabalho automatizado", + "frFR": "Workflow automatisé", + "esAR": "Flujo de trabajo automatizado", + "arDZ": "سير العمل الآلي" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "总数量": { + "text": "总数量", + "key": "t_3_1746773348798", + "translations": { + "zhCN": "总数量", + "zhTW": "總數量", + "enUS": "Total quantity", + "jaJP": "総数量", + "koKR": "총 수량", + "ruRU": "Общее количество", + "ptBR": "Quantidade total", + "frFR": "Quantité totale", + "esAR": "Cantidad total", + "arDZ": "العدد الكلي" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "执行失败": { + "text": "执行失败", + "key": "t_4_1746773348957", + "translations": { + "zhCN": "执行失败", + "zhTW": "執行失敗", + "enUS": "Execution failed", + "jaJP": "実行に失敗しました", + "koKR": "실행 실패", + "ruRU": "Ошибка выполнения", + "ptBR": "Falha na execução", + "frFR": "Échec de l'exécution", + "esAR": "Falló la ejecución", + "arDZ": "فشل التنفيذ" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "即将到期": { + "text": "即将到期", + "key": "t_5_1746773349141", + "translations": { + "zhCN": "即将到期", + "zhTW": "即將到期", + "enUS": "Expiring soon", + "jaJP": "まもなく期限切れ", + "koKR": "곧 만료됩니다", + "ruRU": "Скоро истекает", + "ptBR": "Expirando em breve", + "frFR": "Expire bientôt", + "esAR": "Próximo a expirar", + "arDZ": "تنتهي قريبا" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "实时监控": { + "text": "实时监控", + "key": "t_6_1746773349980", + "translations": { + "zhCN": "实时监控", + "zhTW": "即時監控", + "enUS": "Real-time monitoring", + "jaJP": "リアルタイム監視", + "koKR": "실시간 모니터링", + "ruRU": "Мониторинг в реальном времени", + "ptBR": "Monitoramento em tempo real", + "frFR": "Surveillance en temps réel", + "esAR": "Monitoreo en tiempo real", + "arDZ": "مراقبة في الوقت الحقيقي" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "异常数量": { + "text": "异常数量", + "key": "t_7_1746773349302", + "translations": { + "zhCN": "异常数量", + "zhTW": "異常數量", + "enUS": "Abnormal quantity", + "jaJP": "異常数量", + "koKR": "이상 수량", + "ruRU": "Аномальное количество", + "ptBR": "Quantidade anormal", + "frFR": "Quantité anormale", + "esAR": "Cantidad anormal", + "arDZ": "كمية غير طبيعية" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "最近工作流执行记录": { + "text": "最近工作流执行记录", + "key": "t_8_1746773351524", + "translations": { + "zhCN": "最近工作流执行记录", + "zhTW": "最近工作流程執行紀錄", + "enUS": "Recent workflow execution records", + "jaJP": "最近のワークフロー実行記録", + "koKR": "최근 워크플로우 실행 기록", + "ruRU": "Недавние записи выполнения рабочего процесса", + "ptBR": "Registros recentes de execução de fluxo de trabalho", + "frFR": "Récents enregistrements d'exécution de flux de travail", + "esAR": "Registros recientes de ejecución de flujo de trabajo", + "arDZ": "سجلات تنفيذ سير العمل الحديثة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "查看全部": { + "text": "查看全部", + "key": "t_9_1746773348221", + "translations": { + "zhCN": "查看全部", + "zhTW": "查看全部", + "enUS": "View all", + "jaJP": "すべて表示", + "koKR": "모두 보기", + "ruRU": "Просмотреть все", + "ptBR": "Ver tudo", + "frFR": "Voir tout", + "esAR": "Ver todo", + "arDZ": "عرض الكل" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "暂无工作流执行记录": { + "text": "暂无工作流执行记录", + "key": "t_10_1746773351576", + "translations": { + "zhCN": "暂无工作流执行记录", + "zhTW": "暫無工作流執行記錄", + "enUS": "No workflow execution records", + "jaJP": "ワークフロー実行記録がありません", + "koKR": "워크플로우 실행 기록 없음", + "ruRU": "Нет записей выполнения рабочего процесса", + "ptBR": "Nenhum registro de execução de fluxo de trabalho", + "frFR": "Aucun enregistrement d'exécution de flux de travail", + "esAR": "No hay registros de ejecución de flujo de trabajo", + "arDZ": "لا توجد سجلات تنفيذ سير العمل" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "创建工作流": { + "text": "创建工作流", + "key": "t_11_1746773349054", + "translations": { + "zhCN": "创建工作流", + "zhTW": "建立工作流程", + "enUS": "Create workflow", + "jaJP": "ワークフローの作成", + "koKR": "워크플로우 생성", + "ruRU": "Создание рабочего процесса", + "ptBR": "Criar fluxo de trabalho", + "frFR": "Créer un workflow", + "esAR": "Crear flujo de trabajo", + "arDZ": "إنشاء سير العمل" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "点击创建自动化工作流程,提高效率": { + "text": "点击创建自动化工作流程,提高效率", + "key": "t_12_1746773355641", + "translations": { + "zhCN": "点击创建自动化工作流程,提高效率", + "zhTW": "點擊創建自動化工作流程,提高效率", + "enUS": "Click to create an automated workflow to improve efficiency", + "jaJP": "効率を向上させるために自動化されたワークフローを作成するにはクリックしてください", + "koKR": "효율성을 높이기 위해 자동화된 워크플로우를 생성하려면 클릭하세요", + "ruRU": "Нажмите, чтобы создать автоматизированный рабочий процесс для повышения эффективности", + "ptBR": "Clique para criar um fluxo de trabalho automatizado para melhorar a eficiência", + "frFR": "Cliquez pour créer un flux de travail automatisé afin d'améliorer l'efficacité", + "esAR": "Haz clic para crear un flujo de trabajo automatizado y mejorar la eficiencia", + "arDZ": "انقر لإنشاء سير عمل آلي لتحسين الكفاءة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "申请证书": { + "text": "申请证书", + "key": "t_13_1746773349526", + "translations": { + "zhCN": "申请证书", + "zhTW": "申請證書", + "enUS": "Apply for certificate", + "jaJP": "証明書を申請する", + "koKR": "증명서 신청", + "ruRU": "Подать заявку на сертификат", + "ptBR": "Solicitar certificado", + "frFR": "Demander un certificat", + "esAR": "Solicitar certificado", + "arDZ": "التقدم بطلب للحصول على شهادة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "点击申请和管理SSL证书,保障安全": { + "text": "点击申请和管理SSL证书,保障安全", + "key": "t_14_1746773355081", + "translations": { + "zhCN": "点击申请和管理SSL证书,保障安全", + "zhTW": "點擊申請和管理SSL證書,保障安全", + "enUS": "Click to apply for and manage SSL certificates to ensure security", + "jaJP": "SSL証明書の申請と管理をクリックして、セキュリティを確保します", + "koKR": "SSL 인증서를 신청하고 관리하여 보안을 보장합니다", + "ruRU": "Нажмите, чтобы подать заявку на SSL-сертификаты и управлять ими для обеспечения безопасности", + "ptBR": "Clique para solicitar e gerenciar certificados SSL para garantir segurança", + "frFR": "Cliquez pour demander et gérer les certificats SSL afin d'assurer la sécurité", + "esAR": "Haz clic para solicitar y administrar certificados SSL para garantizar la seguridad", + "arDZ": "انقر للتقدم بطلب وإدارة شهادات SSL لضمان الأمان" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "点击设置网站监控,实时掌握运行状态": { + "text": "点击设置网站监控,实时掌握运行状态", + "key": "t_15_1746773358151", + "translations": { + "zhCN": "点击设置网站监控,实时掌握运行状态", + "zhTW": "點擊設置網站監控,即時掌握運行狀態", + "enUS": "Click to set up website monitoring and keep track of the runtime status in real time", + "jaJP": "クリックしてウェブサイトの監視を設定し、実行状態をリアルタイムで把握します", + "koKR": "웹사이트 모니터링을 설정하려면 클릭하세요. 실시간으로 실행 상태를 확인할 수 있습니다", + "ruRU": "Нажмите, чтобы настроить мониторинг веб-сайта и отслеживать состояние работы в режиме реального времени", + "ptBR": "Clique para configurar o monitoramento do site e acompanhar o status de execução em tempo real", + "frFR": "Cliquez pour configurer la surveillance du site et suivre l'état d'exécution en temps réel", + "esAR": "Haz clic para configurar el monitoreo del sitio web y realiza un seguimiento del estado de ejecución en tiempo real", + "arDZ": "انقر لإعداد مراقبة الموقع وتتبع حالة التشغيل في الوقت الفعلي" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "最多只能配置一个邮箱通知渠道": { + "text": "最多只能配置一个邮箱通知渠道", + "key": "t_16_1746773356568", + "translations": { + "zhCN": "最多只能配置一个邮箱通知渠道", + "zhTW": "最多只能配置一個郵箱通知渠道", + "enUS": "Only one email notification channel can be configured at most", + "jaJP": "最大で1つのメール通知チャネルしか設定できません", + "koKR": "최대 하나의 이메일 알림 채널만 구성할 수 있습니다", + "ruRU": "Можно настроить только один канал уведомлений по электронной почте", + "ptBR": "No máximo, apenas um canal de notificação por e-mail pode ser configurado", + "frFR": "Un seul canal de notification par e-mail peut être configuré au maximum", + "esAR": "Solo se puede configurar un canal de notificación por correo electrónico como máximo", + "arDZ": "يمكن تكوين قناة إشعار واحدة فقط عبر البريد الإلكتروني كحد أقصى" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "确认{0}通知渠道": { + "text": "确认{0}通知渠道", + "key": "t_17_1746773351220", + "translations": { + "zhCN": "确认{0}通知渠道", + "zhTW": "確認{0}通知渠道", + "enUS": "Confirm {0} notification channel", + "jaJP": "{0}通知チャネルの確認", + "koKR": "{0} 알림 채널 확인", + "ruRU": "Подтвердить канал уведомлений {0}", + "ptBR": "Confirmar canal de notificação {0}", + "frFR": "Confirmer le canal de notification {0}", + "esAR": "Confirmar canal de notificación {0}", + "arDZ": "تأكيد قناة الإشعارات {0}" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "{0}通知渠道,将开始发送告警通知。": { + "text": "{0}通知渠道,将开始发送告警通知。", + "key": "t_18_1746773355467", + "translations": { + "zhCN": "{0}通知渠道,将开始发送告警通知。", + "zhTW": "{0}通知渠道,將開始發送告警通知。", + "enUS": "{0} notification channels will start sending alert notifications.", + "jaJP": "{0}通知チャネルは、アラート通知の送信を開始します。", + "koKR": "{0} 알림 채널에서 경고 알림을 보내기 시작할 예정입니다.", + "ruRU": "{0} каналы уведомлений начнут отправлять оповещения.", + "ptBR": "Os canais de notificação {0} começarão a enviar alertas.", + "frFR": "Les canaux de notification {0} commenceront à envoyer des alertes.", + "esAR": "Los canales de notificación {0} comenzarán a enviar alertas.", + "arDZ": "ستبدأ قنوات الإشعار {0} في إرسال تنبيهات." + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "当前通知渠道不支持测试": { + "text": "当前通知渠道不支持测试", + "key": "t_19_1746773352558", + "translations": { + "zhCN": "当前通知渠道不支持测试", + "zhTW": "當前通知渠道不支援測試", + "enUS": "The current notification channel does not support testing", + "jaJP": "現在の通知チャネルはテストをサポートしていません", + "koKR": "현재 알림 채널은 테스트를 지원하지 않습니다", + "ruRU": "Текущий канал уведомлений не поддерживает тестирование", + "ptBR": "O canal de notificação atual não suporta testes", + "frFR": "Le canal de notification actuel ne prend pas en charge les tests", + "esAR": "El canal de notificación actual no admite pruebas", + "arDZ": "قناة الإشعارات الحالية لا تدعم الاختبار" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "正在发送测试邮件,请稍后...": { + "text": "正在发送测试邮件,请稍后...", + "key": "t_20_1746773356060", + "translations": { + "zhCN": "正在发送测试邮件,请稍后...", + "zhTW": "正在發送測試郵件,請稍後...", + "enUS": "Sending test email, please wait...", + "jaJP": "テストメールを送信しています、少々お待ちください...", + "koKR": "테스트 이메일을 보내는 중입니다. 잠시 기다려주세요...", + "ruRU": "Отправка тестового письма, пожалуйста, подождите...", + "ptBR": "Enviando e-mail de teste, por favor aguarde...", + "frFR": "Envoi d'un e-mail de test, veuillez patienter...", + "esAR": "Enviando correo de prueba, por favor espere...", + "arDZ": "يتم إرسال البريد الإلكتروني الاختباري، يرجى الانتظار..." + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "测试邮件": { + "text": "测试邮件", + "key": "t_21_1746773350759", + "translations": { + "zhCN": "测试邮件", + "zhTW": "測試郵件", + "enUS": "Test email", + "jaJP": "テストメール", + "koKR": "테스트 이메일", + "ruRU": "Тестовое письмо", + "ptBR": "E-mail de teste", + "frFR": "E-mail de test", + "esAR": "Correo de prueba", + "arDZ": "بريد إلكتروني تجريبي" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "发送测试邮件到当前配置的邮箱,是否继续?": { + "text": "发送测试邮件到当前配置的邮箱,是否继续?", + "key": "t_22_1746773360711", + "translations": { + "zhCN": "发送测试邮件到当前配置的邮箱,是否继续?", + "zhTW": "發送測試郵件到當前配置的郵箱,是否繼續?", + "enUS": "Send a test email to the currently configured mailbox, continue?", + "jaJP": "現在設定されているメールボックスにテストメールを送信します。続けますか?", + "koKR": "현재 설정된 메일박스로 테스트 메일을 보내시겠습니까?", + "ruRU": "Отправить тестовое письмо на текущий настроенный почтовый ящик, продолжить?", + "ptBR": "Enviar um e-mail de teste para a caixa de correio configurada atualmente, continuar?", + "frFR": "Envoyer un e-mail de test à la boîte mail configurée actuellement, continuer ?", + "esAR": "¿Enviar un correo de prueba al buzón configurado actualmente, continuar?", + "arDZ": "إرسال بريد إلكتروني اختباري إلى صندوق البريد الحالي المُهيأ، هل تتابع؟" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "删除确认": { + "text": "删除确认", + "key": "t_23_1746773350040", + "translations": { + "zhCN": "删除确认", + "zhTW": "刪除確認", + "enUS": "Delete Confirmation", + "jaJP": "削除の確認", + "koKR": "삭제 확인", + "ruRU": "Подтверждение удаления", + "ptBR": "Confirmação de exclusão", + "frFR": "Confirmation de suppression", + "esAR": "Confirmación de eliminación", + "arDZ": "تأكيد الحذف" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "请输入名称": { + "text": "请输入名称", + "key": "t_25_1746773349596", + "translations": { + "zhCN": "请输入名称", + "zhTW": "請輸入名稱", + "enUS": "Please enter name", + "jaJP": "名前を入力してください", + "koKR": "이름을 입력하세요", + "ruRU": "Пожалуйста, введите имя", + "ptBR": "Por favor, insira o nome", + "frFR": "Veuillez entrer le nom", + "esAR": "Por favor ingrese el nombre", + "arDZ": "الرجاء إدخال الاسم" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "请输入正确的SMTP端口": { + "text": "请输入正确的SMTP端口", + "key": "t_26_1746773353409", + "translations": { + "zhCN": "请输入正确的SMTP端口", + "zhTW": "請輸入正確的SMTP端口", + "enUS": "Please enter the correct SMTP port", + "jaJP": "正しいSMTPポートを入力してください", + "koKR": "올바른 SMTP 포트를 입력하세요", + "ruRU": "Пожалуйста, введите правильный порт SMTP", + "ptBR": "Por favor, insira a porta SMTP correta", + "frFR": "Veuillez saisir le bon port SMTP", + "esAR": "Por favor, ingrese el puerto SMTP correcto", + "arDZ": "الرجاء إدخال منفذ SMTP الصحيح" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "请输入用户密码": { + "text": "请输入用户密码", + "key": "t_27_1746773352584", + "translations": { + "zhCN": "请输入用户密码", + "zhTW": "請輸入使用者密碼", + "enUS": "Please enter user password", + "jaJP": "ユーザーパスワードを入力してください", + "koKR": "사용자 비밀번호를 입력하세요", + "ruRU": "Введите пароль пользователя", + "ptBR": "Por favor, insira a senha do usuário", + "frFR": "Veuillez entrer le mot de passe utilisateur", + "esAR": "Por favor, ingrese la contraseña de usuario", + "arDZ": "يرجى إدخال كلمة مرور المستخدم" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "请输入正确的发送人邮箱": { + "text": "请输入正确的发送人邮箱", + "key": "t_28_1746773354048", + "translations": { + "zhCN": "请输入正确的发送人邮箱", + "zhTW": "請輸入正確的發件人郵箱", + "enUS": "Please enter the correct sender email", + "jaJP": "正しい送信者のメールアドレスを入力してください", + "koKR": "올바른 발신자 이메일을 입력하세요", + "ruRU": "Пожалуйста, введите правильный адрес электронной почты отправителя", + "ptBR": "Por favor, insira o e-mail do remetente correto", + "frFR": "Veuillez entrer l'e-mail correct de l'expéditeur", + "esAR": "Por favor, ingrese el correo electrónico correcto del remitente", + "arDZ": "الرجاء إدخال البريد الإلكتروني الصحيح للمرسل" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "请输入正确的接收邮箱": { + "text": "请输入正确的接收邮箱", + "key": "t_29_1746773351834", + "translations": { + "zhCN": "请输入正确的接收邮箱", + "zhTW": "請輸入正確的接收信箱", + "enUS": "Please enter the correct receiving email", + "jaJP": "正しい受信メールを入力してください", + "koKR": "올바른 수신 이메일을 입력하세요", + "ruRU": "Пожалуйста, введите правильную электронную почту", + "ptBR": "Por favor, insira o e-mail de recebimento correto", + "frFR": "Veuillez entrer le bon e-mail de réception", + "esAR": "Por favor, ingrese el correo electrónico de recepción correcto", + "arDZ": "الرجاء إدخال البريد الإلكتروني الصحيح" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "发送人邮箱": { + "text": "发送人邮箱", + "key": "t_30_1746773350013", + "translations": { + "zhCN": "发送人邮箱", + "zhTW": "寄件人信箱", + "enUS": "Sender's email", + "jaJP": "送信者のメール", + "koKR": "보내는 사람 이메일", + "ruRU": "Электронная почта отправителя", + "ptBR": "E-mail do remetente", + "frFR": "E-mail de l'expéditeur", + "esAR": "Correo electrónico del remitente", + "arDZ": "بريد المرسل الإلكتروني" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "接收邮箱": { + "text": "接收邮箱", + "key": "t_31_1746773349857", + "translations": { + "zhCN": "接收邮箱", + "zhTW": "接收郵箱", + "enUS": "Receive Email", + "jaJP": "受信メール", + "koKR": "이메일 수신", + "ruRU": "Получить электронную почту", + "ptBR": "Receber E-mail", + "frFR": "Recevoir un e-mail", + "esAR": "Recibir correo electrónico", + "arDZ": "تلقي البريد الإلكتروني" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "钉钉": { + "text": "钉钉", + "key": "t_32_1746773348993", + "translations": { + "zhCN": "钉钉", + "zhTW": "釘釘", + "enUS": "DingTalk", + "jaJP": "ディンタン", + "koKR": "딩톡", + "ruRU": "ДинТолк", + "ptBR": "DingTalk", + "frFR": "DingTalk", + "esAR": "DingTalk", + "arDZ": "دينغتالک" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "企业微信": { + "text": "企业微信", + "key": "t_33_1746773350932", + "translations": { + "zhCN": "企业微信", + "zhTW": "企業微信", + "enUS": "WeChat Work", + "jaJP": "WeChat Work", + "koKR": "위챗 워크", + "ruRU": "WeChat Work", + "ptBR": "WeChat Work", + "frFR": "WeChat Work", + "esAR": "WeChat Work", + "arDZ": "WeChat Work" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "飞书": { + "text": "飞书", + "key": "t_34_1746773350153", + "translations": { + "zhCN": "飞书", + "zhTW": "飛書", + "enUS": "Feishu", + "jaJP": "飛書", + "koKR": "페이슈", + "ruRU": "Фэйшу", + "ptBR": "Feishu", + "frFR": "Feishu", + "esAR": "Feishu", + "arDZ": "فيشو" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理工具。": { + "text": "一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理工具。", + "key": "t_35_1746773362992", + "translations": { + "zhCN": "一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理工具。", + "zhTW": "一個集證書申請、管理、部署和監控於一體的SSL證書全生命週期管理工具。", + "enUS": "A comprehensive SSL certificate lifecycle management tool that integrates application, management, deployment, and monitoring.", + "jaJP": "SSL証明書の申請、管理、展開、監視を統合したライフサイクル管理ツール。", + "koKR": "SSL 인증서 신청, 관리, 배포 및 모니터링을 통합한 전 생애 주기 관리 도구.", + "ruRU": "Инструмент управления полным жизненным циклом SSL-сертификатов, объединяющий подачу заявки, управление, развертывание и мониторинг.", + "ptBR": "Uma ferramenta de gerenciamento do ciclo de vida completo de certificados SSL que integra solicitação, gerenciamento, implantação e monitoramento.", + "frFR": "Un outil de gestion du cycle de vie complet des certificats SSL intégrant la demande, la gestion, le déploiement et la surveillance.", + "esAR": "Una herramienta de gestión del ciclo de vida completo de certificados SSL que integra solicitud, gestión, implementación y monitoreo.", + "arDZ": "أداة إدارة دورة حياة شهادات SSL متكاملة تشمل التقديم، الإدارة، النشر والمراقبة." + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "证书申请:": { + "text": "证书申请:", + "key": "t_36_1746773348989", + "translations": { + "zhCN": "证书申请", + "zhTW": "證書申請", + "enUS": "Certificate Application", + "jaJP": "証明書申請", + "koKR": "증명서 신청", + "ruRU": "Заявка на сертификат", + "ptBR": "Pedido de Certificado", + "frFR": "Demande de certificat", + "esAR": "Solicitud de Certificado", + "arDZ": "طلب الشهادة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "支持通过ACME协议从Let": { + "text": "支持通过ACME协议从Let", + "key": "t_37_1746773356895", + "translations": { + "zhCN": "支持通过ACME协议从Let's Encrypt获取证书", + "zhTW": "支援通過ACME協議從Let's Encrypt獲取證書", + "enUS": "Support obtaining certificates from Let's Encrypt via ACME protocol", + "jaJP": "ACMEプロトコルを介してLet's Encryptから証明書を取得する", + "koKR": "ACME 프로토콜을 통해 Let's Encrypt에서 인증서를 획득할 수 있도록 지원", + "ruRU": "Поддержка получения сертификатов от Let's Encrypt через протокол ACME", + "ptBR": "Suporte à obtenção de certificados do Let's Encrypt através do protocolo ACME", + "frFR": "Support pour obtenir des certificats de Let's Encrypt via le protocole ACME", + "esAR": "Soporte para obtener certificados de Let's Encrypt a través del protocolo ACME", + "arDZ": "دعم الحصول على شهادات من Let's Encrypt عبر بروتوكول ACME" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "证书管理:": { + "text": "证书管理:", + "key": "t_38_1746773349796", + "translations": { + "zhCN": "证书管理", + "zhTW": "證書管理", + "enUS": "Certificate Management", + "jaJP": "証明書管理", + "koKR": "인증서 관리", + "ruRU": "Управление сертификатами", + "ptBR": "Gerenciamento de Certificados", + "frFR": "Gestion des certificats", + "esAR": "Gestión de Certificados", + "arDZ": "إدارة الشهادات" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "集中管理所有SSL证书,包括手动上传和自动申请的证书": { + "text": "集中管理所有SSL证书,包括手动上传和自动申请的证书", + "key": "t_39_1746773358932", + "translations": { + "zhCN": "集中管理所有SSL证书,包括手动上传和自动申请的证书", + "zhTW": "集中管理所有SSL證書,包括手動上傳和自動申請的證書", + "enUS": "Centralized management of all SSL certificates, including manually uploaded and automatically applied certificates", + "jaJP": "すべてのSSL証明書を一元管理、手動アップロードおよび自動申請の証明書を含む", + "koKR": "모든 SSL 인증서를 중앙에서 관리하며, 수동으로 업로드한 인증서와 자동으로 신청한 인증서를 포함합니다", + "ruRU": "Централизованное управление всеми SSL-сертификатами, включая загруженные вручную и автоматически запрошенные сертификаты", + "ptBR": "Gerenciamento centralizado de todos os certificados SSL, incluindo certificados carregados manualmente e aplicados automaticamente", + "frFR": "Gestion centralisée de tous les certificats SSL, y compris les certificats téléchargés manuellement et appliqués automatiquement", + "esAR": "Gestión centralizada de todos los certificados SSL, incluidos los certificados cargados manualmente y aplicados automáticamente", + "arDZ": "الإدارة المركزية لجميع شهادات SSL، بما في ذلك الشهادات المرفوعة يدويًا والمطبقة تلقائيًا" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "证书部署:": { + "text": "证书部署:", + "key": "t_40_1746773352188", + "translations": { + "zhCN": "证书部署", + "zhTW": "證書部署", + "enUS": "Certificate deployment", + "jaJP": "証明書の展開", + "koKR": "인증서 배포", + "ruRU": "Развертывание сертификата", + "ptBR": "Implantaçã de certificado", + "frFR": "Déploiement de certificat", + "esAR": "Implementación de certificado", + "arDZ": "نشر الشهادة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "支持一键部署证书到多种平台,如阿里云、腾讯云、宝塔面板、1Panel等": { + "text": "支持一键部署证书到多种平台,如阿里云、腾讯云、宝塔面板、1Panel等", + "key": "t_41_1746773364475", + "translations": { + "zhCN": "支持一键部署证书到多种平台,如阿里云、腾讯云、宝塔面板、1Panel等", + "zhTW": "支援一鍵部署證書到多種平台,如阿里雲、騰訊雲、寶塔面板、1Panel等", + "enUS": "Support one-click certificate deployment to multiple platforms such as Alibaba Cloud, Tencent Cloud, Pagoda Panel, 1Panel, etc.", + "jaJP": "ワンクリックでの証明書のデプロイを複数のプラットフォームでサポート、例えばアリババクラウド、テンセントクラウド、Pagoda Panel、1Panelなど", + "koKR": "여러 플랫폼에 한 번의 클릭으로 인증서 배포 지원, 알리바바 클라우드, 텐센트 클라우드, Pagoda Panel, 1Panel 등", + "ruRU": "Поддержка развертывания сертификатов в один клик на нескольких платформах, таких как Alibaba Cloud, Tencent Cloud, Pagoda Panel, 1Panel и др.", + "ptBR": "Suporte à implantação de certificados com um clique em várias plataformas, como Alibaba Cloud, Tencent Cloud, Pagoda Panel, 1Panel, etc.", + "frFR": "Prise en charge du déploiement de certificats en un clic sur plusieurs plateformes telles que Alibaba Cloud, Tencent Cloud, Pagoda Panel, 1Panel, etc.", + "esAR": "Soporte para implementar certificados con un clic en múltiples plataformas como Alibaba Cloud, Tencent Cloud, Pagoda Panel, 1Panel, etc.", + "arDZ": "دعم نشر الشهادات بنقرة واحدة على منصات متعددة مثل علي بابا كلاود، تينسنت كلاود، لوحة باغودا، 1Panel، إلخ." + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "站点监控:": { + "text": "站点监控:", + "key": "t_42_1746773348768", + "translations": { + "zhCN": "站点监控", + "zhTW": "站點監控", + "enUS": "Site monitoring", + "jaJP": "サイト監視", + "koKR": "사이트 모니터링", + "ruRU": "Мониторинг сайта", + "ptBR": "Monitoramento do site", + "frFR": "Surveillance du site", + "esAR": "Monitoreo del sitio", + "arDZ": "مراقبة الموقع" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "实时监控站点SSL证书状态,提前预警证书过期": { + "text": "实时监控站点SSL证书状态,提前预警证书过期", + "key": "t_43_1746773359511", + "translations": { + "zhCN": "实时监控站点SSL证书状态,提前预警证书过期", + "zhTW": "實時監控站點SSL證書狀態,提前預警證書過期", + "enUS": "Real-time monitoring of site SSL certificate status to provide early warning of certificate expiration", + "jaJP": "サイトのSSL証明書の状態をリアルタイムで監視し、証明書の有効期限切れを事前に警告します", + "koKR": "사이트 SSL 인증서 상태를 실시간으로 모니터링하여 인증서 만료를 사전에 경고합니다", + "ruRU": "Мониторинг состояния SSL-сертификатов сайта в режиме реального времени с предупреждением об истечении срока действия сертификата", + "ptBR": "Monitoramento em tempo real do status do certificado SSL do site para alertar sobre a expiração do certificado", + "frFR": "Surveillance en temps réel de l'état des certificats SSL du site pour prévenir l'expiration des certificats", + "esAR": "Monitoreo en tiempo real del estado de los certificados SSL del sitio para alertar sobre la expiración de los certificados", + "arDZ": "مراقبة حالة شهادات SSL للموقع في الوقت الفعلي للتحذير المسبق من انتهاء صلاحية الشهادة" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "自动化任务:": { + "text": "自动化任务:", + "key": "t_44_1746773352805", + "translations": { + "zhCN": "自动化任务:", + "zhTW": "自動化任務:", + "enUS": "Automation task:", + "jaJP": "自動化タスク:", + "koKR": "자동화 작업:", + "ruRU": "Автоматизированная задача:", + "ptBR": "Tarefa automatizada:", + "frFR": "Tâche automatisée :", + "esAR": "Tarea automatizada:", + "arDZ": "مهمة الأتمتة:" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "支持定时任务,自动续期证书并部署": { + "text": "支持定时任务,自动续期证书并部署", + "key": "t_45_1746773355717", + "translations": { + "zhCN": "支持定时任务,自动续期证书并部署", + "zhTW": "支援定時任務,自動續期證書並部署", + "enUS": "Support scheduled tasks, automatically renew certificates and deploy", + "jaJP": "スケジュールされたタスクをサポートし、証明書を自動的に更新して展開します", + "koKR": "예약된 작업 지원, 인증서 자동 갱신 및 배포", + "ruRU": "Поддержка запланированных задач, автоматическое продление сертификатов и развертывание", + "ptBR": "Suporta tarefas agendadas, renova automaticamente os certificados e implanta", + "frFR": "Prend en charge les tâches planifiées, renouvellement automatique des certificats et déploiement", + "esAR": "Admite tareas programadas, renovación automática de certificados e implementación", + "arDZ": "يدعم المهام المجدولة، تجديد الشهادات تلقائياً ونشرها" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "多平台支持:": { + "text": "多平台支持:", + "key": "t_46_1746773350579", + "translations": { + "zhCN": "多平台支持", + "zhTW": "多平台支援", + "enUS": "Multi-platform support", + "jaJP": "マルチプラットフォーム対応", + "koKR": "다중 플랫폼 지원", + "ruRU": "Поддержка нескольких платформ", + "ptBR": "Suporte multiplataforma", + "frFR": "Prise en charge multiplateforme", + "esAR": "Soporte multiplataforma", + "arDZ": "دعم متعدد المنصات" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "支持多种DNS提供商(阿里云、腾讯云等)的DNS验证方式": { + "text": "支持多种DNS提供商(阿里云、腾讯云等)的DNS验证方式", + "key": "t_47_1746773360760", + "translations": { + "zhCN": "支持多种DNS提供商(阿里云、腾讯云等)的DNS验证方式", + "zhTW": "支援多種DNS提供商(阿里雲、騰訊雲等)的DNS驗證方式", + "enUS": "Supports DNS verification methods for multiple DNS providers (Alibaba Cloud, Tencent Cloud, etc.)", + "jaJP": "複数のDNSプロバイダー(アリババクラウド、テンセントクラウドなど)のDNS検証方法をサポート", + "koKR": "다양한 DNS 제공업체(알리바바 클라우드, 텐센트 클라우드 등)의 DNS 확인 방법 지원", + "ruRU": "Поддерживает методы проверки DNS для нескольких поставщиков DNS (Alibaba Cloud, Tencent Cloud и др.)", + "ptBR": "Suporta métodos de verificação DNS para vários provedores de DNS (Alibaba Cloud, Tencent Cloud, etc.)", + "frFR": "Prend en charge les méthodes de vérification DNS pour plusieurs fournisseurs DNS (Alibaba Cloud, Tencent Cloud, etc.)", + "esAR": "Admite métodos de verificación DNS para múltiples proveedores de DNS (Alibaba Cloud, Tencent Cloud, etc.)", + "arDZ": "يدعم طرق التحقق DNS لعدة موفري DNS (Alibaba Cloud، Tencent Cloud، إلخ)" + }, + "timestamp": "2025-05-09T06:49:24.475Z" + }, + "确定要删除{0},通知渠道吗?": { + "text": "确定要删除{0},通知渠道吗?", + "key": "t_0_1746773763967", + "translations": { + "zhCN": "确定要删除{0},通知渠道吗?", + "zhTW": "確定要刪除{0},通知渠道嗎?", + "enUS": "Are you sure you want to delete {0}, the notification channel?", + "jaJP": "{0}、通知チャネルを削除してもよろしいですか?", + "koKR": "{0}, 알림 채널을 삭제하시겠습니까?", + "ruRU": "Вы уверены, что хотите удалить {0}, канал уведомлений?", + "ptBR": "Tem certeza que deseja excluir {0}, o canal de notificação?", + "frFR": "Êtes-vous sûr de vouloir supprimer {0}, le canal de notification ?", + "esAR": "¿Estás seguro de que deseas eliminar {0}, el canal de notificaciones?", + "arDZ": "هل أنت متأكد أنك تريد حذف {0}، قناة الإشعارات؟" + }, + "timestamp": "2025-05-09T06:56:03.967Z" + }, + "Let%27Encrypt等CA自动申请免费证书": { + "text": "Let%27Encrypt等CA自动申请免费证书", + "key": "t_1_1746773763643", + "translations": { + "zhCN": "Let's Encrypt等CA自动申请免费证书", + "zhTW": "Let's Encrypt等CA自動申請免費證書", + "enUS": "Let's Encrypt and other CAs automatically apply for free certificates", + "jaJP": "Let's EncryptなどのCAが無料の証明書を自動的に申請する", + "koKR": "Let's Encrypt 등의 CA에서 무료 인증서를 자동으로 신청", + "ruRU": "Let's Encrypt и другие центры сертификации автоматически подают заявки на бесплатные сертификаты", + "ptBR": "Let's Encrypt e outras autoridades de certificação solicitam automaticamente certificados gratuitos", + "frFR": "Let's Encrypt et d'autres CA demandent automatiquement des certificats gratuits", + "esAR": "Let's Encrypt y otras CA solicitan automáticamente certificados gratuitos", + "arDZ": "Let's Encrypt وغيرها من الجهات المصدقة تطلب شهادات مجانية تلقائيًا" + }, + "timestamp": "2025-05-09T06:56:03.967Z" + } +} \ No newline at end of file diff --git a/frontend/apps/allin-ssl/eslint.config.js b/frontend/apps/allin-ssl/eslint.config.js new file mode 100644 index 0000000..19df2d8 --- /dev/null +++ b/frontend/apps/allin-ssl/eslint.config.js @@ -0,0 +1,22 @@ +import vueConfig from '@baota/eslint/vue' +import baseConfig from '@baota/eslint' + +/** @type {import("eslint").Linter.Config[]} */ +const config = [ + // Vue 相关配置,包含 TypeScript 支持 + ...vueConfig, + + // 基础配置,用于通用的 JavaScript/TypeScript 规则 + ...baseConfig, + + // 项目特定的配置覆盖 + { + files: ['**/*.{js,ts,tsx,jsx,vue}'], + rules: { + // 在此处添加项目特定的规则覆盖 + 'vue/multi-word-component-names': 'off', // 关闭组件名称必须由多个单词组成的规则 + }, + }, +] + +export default config diff --git a/frontend/index.html b/frontend/apps/allin-ssl/index.html similarity index 53% rename from frontend/index.html rename to frontend/apps/allin-ssl/index.html index 3c2bd51..5863211 100644 --- a/frontend/index.html +++ b/frontend/apps/allin-ssl/index.html @@ -2,13 +2,12 @@ - + ALLinSSL - -
+ diff --git a/frontend/apps/allin-ssl/mardown/api.md b/frontend/apps/allin-ssl/mardown/api.md new file mode 100644 index 0000000..9da8f11 --- /dev/null +++ b/frontend/apps/allin-ssl/mardown/api.md @@ -0,0 +1,28 @@ +分别生成以下相关的类型文件,在 types/ 目录下,以及 api 文件,在 api/目录下 + +文件名称如下: +home +autoDeploy +certManage +certApply +authAPIManage +monitor +settings + +1、types文件命名方式:{视图名称}.d.ts + +2、api文件命名方式:{视图名称}.ts + +3、api文件结构如下: + +```typescript +import { useApi } from './index' +import type { loginParams, loginResponse } from '@/types/public' + +/** + * 登录 + * @param params 登录参数 + * @returns 登录 + */ +export const loginCloudControl = (params?: loginParams) => useApi('/v1/user/login', params) +``` diff --git a/frontend/apps/allin-ssl/mardown/base.md b/frontend/apps/allin-ssl/mardown/base.md new file mode 100644 index 0000000..6f7b830 --- /dev/null +++ b/frontend/apps/allin-ssl/mardown/base.md @@ -0,0 +1,273 @@ + + +目前接口返回格式 +```ts +export interface AxiosResponseData { + code: number + count: number + data: T + message: string + status: boolean +} +``` + +后端请求的协议方式,formdata 还是 json + +登录的方式,使用那种方案jwt,以及加密方式 + +接口文档需要包含一下内容 +接口类型、接口返回值、以及其他需要处理的内容需要说清楚,例如登录失效,以及状态的判断 + + + + +基础要求 +1、基于vue3 的 tsx文件编写,并将业务和数据、视图分离成 mvc 模式,如果代码中没有包含业务和数据,可以移除该文件,确保结构单一和可维护性。 +2、视图文件文件入口为 index.tsx +3、业务代码文件入口为 useController.tsx +4、数据代码文件入口为 useStore.tsx +5、使用hooks编写,如果存在表单、表格使用配置生成。参考如下 + + +视图文件内容要求 +1、所有的视图style,使用css module 编写,基于tailwind 的@apply 实现,如果行内元素少,可以省略创建css module。 +2、如果视图使用naiveui tsx 开发内容,如果没有相应的组件,则使用原生样式实现 + +业务代码内容要求 +1、包含 hooks 配置的生成方法,需要导出 +2、事件逻辑处理、dom 操作、生命周期、监听函数等, +3、数据代码转发,支持将 sotre 数据直接转发 + +数据代码内容要求 +1、包含所有的数据内容,例如请求方法、表单数据处理 +2、响应式数据存储、持久化数据存储 + +国际化内容要求 +1、将文件中的中文文本未使用 $t 包裹的内容,使用 $t('中文内容') 包裹起来,如果存在则引入 $t,import { $t } from "@locales/index" + +格式要求 +1、注释采用jsdoc格式,使用中文作为注释语言 +2、注释内容清晰,对同类的函数位置整理和功能使用注释分割线分 +3、方法名称规范化,根据类型和作用定义。 + + + + +基础视图参考:/Users/chudong/project/tools-monorepo/apps/allin-ssl/src/components/baseComponent/index.tsx + + +首页模块设计 +1、界面设计 + 包含三个模块,采用上下结构 + * 概览模块包含工作流、证书、监控模块,每个模块,都具备所有数量、启用/到期/异常数量、失败/到期数量,以及对应产品图标 + * 最近工作流执行列表,包含字段: + *   名称 + *   执行状态 + *   执行时间 + * 快捷入口模块,提供常用的三个模块入口,工作流构建、申请证书、添加监控 + +2、接口设计包含 + * 概览数据接口 + * 最近工作流列表 + +工作流列表模块设计 +1、界面设计 + 采用基础视图组件设计该页面,传入相关内容, + * 添加按钮文本:新增工作流 + * 搜索框提示内容:请输入工作流名称 + * 表格包含字段: + * 工作流名称 + * 触发方式(自动执行或手动可切换) + * 启用状态(启用/停用) + * 最后一次执行时间 + * 创建时间 + * 操作(包含日志、执行、编辑、删除) + * 添加工作流按钮触发弹窗内容 + * 弹窗界面包含多个具备概览图的单选项 + * 常用SSL部署工作流 + * 自定义工作流 + +2、接口设计包含 + * 工作流列表 + * 获取指定工作流程数据 + * 新建自定义工作流程数据 + * 获取指定工作流执行日志 + * 执行指定工作流 + * 保存指定工作流程数据 + * 删除指定工作流程数据 + + +工作流设计模块设计 +1、界面设计 + 采用流程图构建组建,设计页面,需要设计一下节点设计,所有节点采用 + * 申请SSL(表单设计) + * 域名信息(input、必填) + * 邮箱信息(input、非必填) + * DNS 提供商(select,支持添加,添加调用 API 授权页面的添加表单) + * 高级选项折叠 + * 数字证书算法(select,支持字段RSA2048\RSA3072\RSA4096\RSA8192\EC256\EC384,默认使用RSA2048\) + * 指定DNS解析服务器(input,非必填,提示:申请证书过程中优先使用它) + * DNS超时时间(input、非必填) + * DNS解析TTL时间(input、非必填) + * 关闭CNAME跟随(switch,默认关闭) + * 关闭ARI续期(switch,默认关闭) + * 续签间隔(input,当上次签发的证书距离到期时间超过xx天后,跳过续签,使用 ) + * 部署SSL到指定位置(表单设计,需要手动开发,使用 AI 生成消耗时间,而且基本上可用性低) + * + * 通知告警 + * 通知主题(input、必填) + * 通知内容(textarea、必填) + * 选择通知渠道(select,右侧支持添加渠道) + * + * 并行分支 + * 触发并行添加节点的功能 + * 执行结果分支(只有节点是申请SSL、部署SSL到指定位置、通知告警节点后面才出现此分支提供选择) + * 触发条件判断分支,仅事件触发的节点支持添加该节点 + * 节点执行成功后 + * 节点执行失败后 + +2、接口设计包含 + * 获取API服务商列表 + * 获取证书列表 + * 获取网站列表(宝塔面板) + * 获取 CDN 加速域名(仅腾讯、阿里相关密钥获取) + * 获取 WAF 包含域名(仅腾讯、阿里相关密钥获取) + + +证书管理列表模块设计 +1、界面设计 + 采用基础视图组件设计该页面,传入相关内容, + * 添加按钮文本:上传证书 + * 搜索框提示内容:请输入证书名称/类型 + * 表格包含字段: + * 域名 + * 品牌 + * 剩余天数 + * 到期时间 + * 来源 + * 添加时间 + * 操作(下载、删除) + * 上传证书按钮触发弹窗内容 + * 弹窗界面包含表单(支持证书压缩上传,识别腾讯、阿里下的证书压缩包文件) + * 证书名称 + * 证书内容 (PEM 格式) + * 私钥内容 (KEY 格式) + +2、接口设计包含 + * 获取证书列表 + * 下载指定证书 + * 上传证书信息 + * 删除指定证书信息 + + + +申请证书模块模块设计 +1、界面设计 + 采用 tab 页面切换,分为商业证书页面和免费证书页面 + * 商业证书采用,iframe 内嵌官网页面,官网页面需要新增一个界面作为兼容页面。 + * 免费证书采用,卡片式设计界面,以便于后期支持其他渠道 + * 证书申请表单 + * 手动申请和自动部署的选项卡片(包含 icon 和文件描述) + * 手动申请,采用 DNS 验证自动认证的方式,参考面板的统一设计 + * 自动化部署,直接调用工作流的界面。 + +2、接口设计包含 + * 申请证书信息 + * 证书验证接口 + + +授权API管理列表模块设计 +1、界面设计 + 采用基础视图组件设计该页面,传入相关内容, + * 添加按钮文本:上传授权 API 管理 + * 搜索框提示内容:请输入授权api 名称或类型 + * 表格包含字段: + *   名称 + *   授权API类型(提供商,如腾讯云,宝塔面板) + *   创建时间 + *   操作(编辑、删除) + * 上传证书按钮触发弹窗内容 + * 弹窗界面包含表单 + * 授权 API 类型(select,支持类型 SSH、宝塔、1panel、腾讯、阿里) + * 不同的类型显示不同的东西 + * SSH + * 服务器IP(input) + * SSH端口(input,默认填充22) + * 用户名(input,默认填充root) + * 验证类型(radio-button) + 1. 密码 + 2. SSH密钥 + 1. SSH密钥口令 + * 宝塔 + * 地址(input,包含协议和端口) + * api 密钥(input) + * 1panel + * 地址(input,包含协议和端口) + * api 密钥(input) + * 阿里云 + * AccessKeyId(input) + * AccessKeySecret(input) + * 腾讯云 + * SecretId(input) + * SecretKey(input) + +2、接口设计包含 + * 获取授权 api 列表 + * 新建授权 api 信息 + * 编辑指定授权 aai 信息 + * 删除指定授权 api 信息 + + +监控管理列表模块设计 +1、界面设计 + 采用基础视图组件设计该页面,传入相关内容, + * 添加按钮文本:添加监控 + * 搜索框提示内容:请输入监控名称和域名 + * 表格包含字段: + *   名称 + *   授权API类型(提供商,如腾讯云,宝塔面板) + *   创建时间 + *   操作(编辑、删除) + * 上传证书按钮触发弹窗内容 + * 弹窗界面包含表单 + * 监控名称(input) + * 域名/IP(input) + * 检查周期(select,5/10/15/30/60分钟) + * 告警渠道(多选,右侧支持添加渠道) +2、接口设计包含 + * 获取监控管理列表 + * 设置指定监控启动状态 + * 添加监控信息 + * 编辑指定监控信息 + * 删除指定监控信息 + + +设置管理模块设置 +1、界面设置 + 采用 tab 页面切换,分为三个界面常用设置、告警通知、更新版本,内容部分采用卡片设计 + * 常用设置(采用1:1 分栏设计,支持表单元素行显示),包含一下具体模块,采用统一保存的方式,保存按钮固定在顶部,避免设置过长的导致问题 + * 超时时间(input) + * 管理员账号(input) + * 管理员密码(input) + * SSL 配置(switch,关闭,提供粘贴 key,pem 文本域输入,默认折叠隐藏) + * 告警通知(采用上下结构),包含全局通知模块和通知渠道配置两个模块 + * 全局通知模块(表单) + * 通知主题(input,默认文字) + * 通知内容(textarea,默认文字) + * 通知渠道(卡片列表,参考面板的设计) + * 左侧图标名称(包含已配置数量,点击可查看)+右侧操作 + * 关于我们 + * 版本信息,支持更新版本 + * 客服二维码 + * 微信公众好 + * 关于产品介绍 + +2、接口设计包含 + * 获取基础设置信息 + * 保存基础设置信息 + * 获取告警通用模板配置 + * 设置告警通用模板配置 + * 获取告警渠道列表 + * 设置告警渠道 + * 获取更新信息 + * 更新版本版本 \ No newline at end of file diff --git a/frontend/apps/allin-ssl/mardown/flowChart.md b/frontend/apps/allin-ssl/mardown/flowChart.md new file mode 100644 index 0000000..ddf8501 --- /dev/null +++ b/frontend/apps/allin-ssl/mardown/flowChart.md @@ -0,0 +1,70 @@ +流程/工作流图拆封设计 + +- 基础节点 + - 初始化节点(不支持上传) + - 并行节点 + - 执行结果节点(删除整个条件判断) + +- 任务节点 + - 申请节点(支持执行结果判断) + - 上传节点(不支持执行结果判断) + - 部署节点(支持执行结果判断) + - 通知节点(支持执行结果判断) + +- 节点操作 + - 重命名 + - 删除 + +- 节点下一步配置 + - 申请 + - 上传 + - 部署 + - 通知 + - 执行结果判断(上传节点不支持) + - 并行 + +- 节点辅助功能 + - 拖拽 + - 放大、缩小、还原 + +- 节点验证 + - 验证任务节点 + +结构规划 +- 状态存储(包含节点默认配置数据) +- 基础节点 +- 任务节点(可以根据外部的机构自由的构建任务节点,主要有节点条件,节点操作方法) +- 节点渲染器 +- 工具方法 +- 入口文件 + + + + +工作流图组件 +├─ 状态存储 +│ └─ 节点默认配置数据 +├─ 基础节点 +│ ├─ 初始化节点 +│ ├─ 并行节点 +│ └─ 执行结果节点 +├─ 任务节点 +│ ├─ 申请节点 +│ ├─ 上传节点 +│ ├─ 部署节点 +│ └─ 通知节点 +├─ 节点渲染器 +│ └─ 渲染节点到界面 +├─ 工具方法 +│ ├─ 创建节点 +│ ├─ 重命名节点 +│ ├─ 删除节点 +│ ├─ 配置节点下一步 +│ ├─ 视图缩放 +│ └─ 流程验证 +└─ 入口文件 + └─ 初始化工作流图组件 + + + + diff --git a/frontend/apps/allin-ssl/mardown/view.md b/frontend/apps/allin-ssl/mardown/view.md new file mode 100644 index 0000000..d8a3a59 --- /dev/null +++ b/frontend/apps/allin-ssl/mardown/view.md @@ -0,0 +1,95 @@ +以下是当前项目的视图结构,参考/src/view/test 的目录结构和内容,生成下述的文件和内容 +src/ +├── views/ +│ ├── home/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ ├── autoDeploy/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ │ └── children/ +│ │ └── pipeDesign/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ ├── certManage/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ │ └── components/ +│ │ └── uploadCert/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ ├── certApply/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ │ ├── components/ +│ │ │ └── certApplyForm/ +│ │ │ ├── index.tsx +│ │ │ ├── index.model.css +│ │ │ ├── useController.tsx +│ │ │ └── useStore.tsx +│ │ └── children/ +│ │ ├── commCert/ +│ │ │ ├── index.tsx +│ │ │ ├── index.model.css +│ │ │ ├── useController.tsx +│ │ │ └── useStore.tsx +│ │ └── freeSslCert/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ ├── authApiManage/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ │ └── components/ +│ │ └── addAuthApi/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ ├── monitor/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ ├── useStore.tsx +│ │ └── components/ +│ │ └── addMonitor/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ └── settings/ +│ ├── index.tsx +│ ├── index.model.css +│ ├── useController.tsx +│ ├── useStore.tsx +│ └── components/ +│ ├── commSettings/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ ├── notifySettings/ +│ │ ├── index.tsx +│ │ ├── index.model.css +│ │ ├── useController.tsx +│ │ └── useStore.tsx +│ └── aboutUs/ +│ ├── index.tsx +│ ├── index.model.css +│ ├── useController.tsx +│ └── useStore.tsx diff --git a/frontend/apps/allin-ssl/mock/access.ts b/frontend/apps/allin-ssl/mock/access.ts new file mode 100644 index 0000000..3b535ec --- /dev/null +++ b/frontend/apps/allin-ssl/mock/access.ts @@ -0,0 +1,96 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 授权列表 +export const getAccessList = Mock.mock(/\/access\/get_list/, 'post', () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push({ + id: Mock.Random.id(), + name: `授权-${Mock.Random.ctitle(3, 5)}`, + type: Mock.Random.pick(['ssh', 'btpanel', '1panel', 'aliyun', 'tencent']), + status: Mock.Random.integer(0, 1), + created_at: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + }) + } + return { + code: 0, + count: list.length, + data: { + list, + total: 18, + }, + message: '获取成功', + status: true, + } +}) + +// 授权类型列表 +export const getAccessTypes = Mock.mock(/\/access\/get_access_types/, 'post', () => ({ + code: 0, + count: 3, + data: [ + { key: 'ssh', name: 'SSH验证' }, + { key: 'btpanel', name: '宝塔验证' }, + { key: '1panel', name: '1Panel验证' }, + { key: 'aliyun', name: '阿里云验证' }, + { key: 'tencentcloud', name: '腾讯云验证' }, + ], + message: '获取成功', + status: true, +})) + +// 新增授权 +export const addAccess = Mock.mock(/\/access\/add_access/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '添加成功', + status: true, +})) + +// 修改授权 +export const updateAccess = Mock.mock(/\/access\/upd_access/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '修改成功', + status: true, +})) + +// 删除授权 +export const deleteAccess = Mock.mock(/\/access\/del_access/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '删除成功', + status: true, +})) + +// 获取工作流 dns 配置 + +export const getAccessAllList = Mock.mock(/\/access\/get_all/, 'post', () => { + const list: Array<{ id: string; name: string; type: string }> = [] + for (let i = 0; i < 3; i++) { + const group = Mock.Random.pick([ + { name: '阿里云', type: 'aliyun' }, + { name: '腾讯云', type: 'tencentcloud' }, + ]) + list.push({ + id: Mock.Random.id(), + name: `${group.name} DNS 配置`, + type: group.type, + }) + } + return { + code: 0, + count: list.length, + data: list, + message: '获取成功', + status: true, + } +}) diff --git a/frontend/apps/allin-ssl/mock/cert.ts b/frontend/apps/allin-ssl/mock/cert.ts new file mode 100644 index 0000000..34c773d --- /dev/null +++ b/frontend/apps/allin-ssl/mock/cert.ts @@ -0,0 +1,70 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 证书列表 +export const getCertList = Mock.mock(/\/cert\/get_list/, 'post', () => { + const list = [] + for (let i = 0; i < 15; i++) { + list.push({ + id: Mock.Random.id(), + name: `${Mock.Random.domain()}证书`, + domain: Mock.Random.domain(), + expire_time: Mock.Random.datetime('yyyy-MM-dd'), + status: Mock.Random.integer(0, 2), + created_at: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + }) + } + return { + code: 0, + count: list.length, + data: { + list, + total: 32, + }, + message: '获取成功', + status: true, + } +}) + +// 申请证书 +export const applyCert = Mock.mock(/\/cert\/apply_cert/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '申请成功', + status: true, +})) + +// 上传证书 +export const uploadCert = Mock.mock(/\/cert\/upload_cert/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '上传成功', + status: true, +})) + +// 删除证书 +export const deleteCert = Mock.mock(/\/cert\/del_cert/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '删除成功', + status: true, +})) + +// 下载证书 +export const downloadCert = Mock.mock(/\/cert\/download_cert/, 'get', () => { + // 二进制文件流模拟,实际上应该是从服务器获取的二进制数据 + return { + code: 0, + count: 0, + data: 'certificate-file-content', + message: '下载成功', + status: true, + } +}) diff --git a/frontend/apps/allin-ssl/mock/index.ts b/frontend/apps/allin-ssl/mock/index.ts new file mode 100644 index 0000000..3d2559f --- /dev/null +++ b/frontend/apps/allin-ssl/mock/index.ts @@ -0,0 +1,9 @@ +// 导出所有模块 +export * from './userInfo' // 示例接口 +export * from './overview' +export * from './workflow' +export * from './cert' +export * from './access' +export * from './siteMonitor' +export * from './setting' +export * from './login' diff --git a/frontend/apps/allin-ssl/mock/login.ts b/frontend/apps/allin-ssl/mock/login.ts new file mode 100644 index 0000000..21843c5 --- /dev/null +++ b/frontend/apps/allin-ssl/mock/login.ts @@ -0,0 +1,14 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 登录 +export const login = Mock.mock(/\/login\/login/, 'post', () => ({ + code: 0, + count: 0, + data: { + token: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjE0NjE5MDQ2LCJleHAiOjE2MTQ3MDU0NDZ9._QS2nQa2FRpqH7zJSnjYVBXCOp7-QR-zrXsHl6dTHaU', + }, + message: '登录成功', + status: true, +})) diff --git a/frontend/apps/allin-ssl/mock/overview.ts b/frontend/apps/allin-ssl/mock/overview.ts new file mode 100644 index 0000000..f243a06 --- /dev/null +++ b/frontend/apps/allin-ssl/mock/overview.ts @@ -0,0 +1,58 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 获取首页概览 +export const getOverviews = Mock.mock(/\/overview\/get_overviews/, 'post', () => ({ + code: 0, + count: 0, + data: { + workfolw: { + count: Mock.Random.integer(150, 250), + active: Mock.Random.integer(120, 200), + failure: Mock.Random.integer(0, 10), + }, + cert: { + count: Mock.Random.integer(30, 80), + will: Mock.Random.integer(5, 15), + end: Mock.Random.integer(0, 5), + }, + site_monitor: { + count: Mock.Random.integer(80, 150), + exception: Mock.Random.integer(0, 8), + }, + workflow_history: [ + { + name: '服务A部署流水线', + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm'), + }, + { + name: '1panel 面板证书部署流水线', + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm'), + }, + { + name: '网站证书申请流水线', + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm'), + }, + { + name: '网站证书申请流水线', + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm'), + }, + { + name: '网站证书申请流水线', + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm'), + }, + ], + }, + message: '获取成功', + status: true, +})) diff --git a/frontend/apps/allin-ssl/mock/setting.ts b/frontend/apps/allin-ssl/mock/setting.ts new file mode 100644 index 0000000..5246748 --- /dev/null +++ b/frontend/apps/allin-ssl/mock/setting.ts @@ -0,0 +1,87 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 获取系统设置 +export const getSystemSetting = Mock.mock(/\/setting\/get_setting/, 'post', () => ({ + code: 0, + count: 0, + data: { + auto_renew: true, + renew_days: 30, + notify_enable: true, + notify_days: 15, + }, + message: '获取成功', + status: true, +})) + +// 保存系统设置 +export const saveSystemSetting = Mock.mock(/\/setting\/save_setting/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '保存成功', + status: true, +})) + +// 获取告警类型列表 +export const getReportTypes = Mock.mock(/\/setting\/get_report_types/, 'post', () => ({ + code: 0, + count: 4, + data: [ + { key: 'email', name: '邮件通知' }, + { key: 'sms', name: '短信通知' }, + { key: 'webhook', name: 'Webhook' }, + { key: 'dingtalk', name: '钉钉通知' }, + ], + message: '获取成功', + status: true, +})) + +// 配置告警 +export const setReport = Mock.mock(/\/setting\/set_report/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '配置成功', + status: true, +})) + +// 删除告警 +export const deleteReport = Mock.mock(/\/setting\/del_report/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '删除成功', + status: true, +})) + +// 获取证书过期通知模板 +export const getCertEndNoticeTemplate = Mock.mock(/\/setting\/get_certend_notice_temp/, 'post', () => ({ + code: 0, + count: 0, + data: { + title: '证书即将过期通知', + content: '您的证书 {{domain}} 将在 {{days}} 天后过期,请及时更新。', + }, + message: '获取成功', + status: true, +})) + +// 保存证书过期通知模板 +export const saveCertEndNoticeTemplate = Mock.mock(/\/setting\/save_certend_notice_temp/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '保存成功', + status: true, +})) + +// 系统更新 +export const systemUpdate = Mock.mock(/\/setting\/update/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '更新成功', + status: true, +})) diff --git a/frontend/apps/allin-ssl/mock/siteMonitor.ts b/frontend/apps/allin-ssl/mock/siteMonitor.ts new file mode 100644 index 0000000..96d13ee --- /dev/null +++ b/frontend/apps/allin-ssl/mock/siteMonitor.ts @@ -0,0 +1,68 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 站点监控列表 +export const getSiteMonitorList = Mock.mock(/\/siteMonitor\/get_list/, 'post', () => { + const list = [] + for (let i = 0; i < 12; i++) { + list.push({ + id: Mock.Random.id(), + name: `${Mock.Random.ctitle(2, 5)}网站监控`, + url: `https://${Mock.Random.domain()}/api/${Mock.Random.word(3, 8)}`, + type: Mock.Random.pick(['HTTP', 'HTTPS', 'TCP', 'PING']), + status: Mock.Random.integer(0, 1), + check_result: Mock.Random.pick(['连接成功', '超时', '证书有效', '证书已过期']), + created_at: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + }) + } + return { + code: 0, + count: list.length, + data: { + list, + total: 25, + }, + message: '获取成功', + status: true, + } +}) + +// 新增站点监控 +export const addSiteMonitor = Mock.mock(/\/siteMonitor\/add_site_monitor/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '添加成功', + status: true, +})) + +// 修改站点监控 +export const updateSiteMonitor = Mock.mock(/\/siteMonitor\/upd_site_monitor/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '修改成功', + status: true, +})) + +// 删除站点监控 +export const deleteSiteMonitor = Mock.mock(/\/siteMonitor\/del_site_monitor/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '删除成功', + status: true, +})) + +// 启用/禁用站点监控 +export const setSiteMonitor = Mock.mock(/\/siteMonitor\/set_site_monitor/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '设置成功', + status: true, +})) diff --git a/frontend/apps/allin-ssl/mock/template.ts b/frontend/apps/allin-ssl/mock/template.ts new file mode 100644 index 0000000..d834533 --- /dev/null +++ b/frontend/apps/allin-ssl/mock/template.ts @@ -0,0 +1,24 @@ +/** + * @description 成功模板 + * @param {string} msg 消息 + * @returns + */ +export const listTemplate = (data: T, count: number) => ({ + code: 200, // 状态码 + count, // 总数,仅data 为数组时有效 + data, // 数据 + message: '', // 消息 + status: true, // 消息状态,true 为成功,false 为失败 +}) + +/** + * @description 消息模板 + * @param {object} data 数据 + * @returns + */ +export const messageTemplate = (message: string, status: boolean) => ({ + code: 200, // 状态码 + count: 0, // 总数,仅data 为数组时有效 + message, // 消息 + status, // 消息状态,true 为成功,false 为失败 +}) diff --git a/frontend/apps/allin-ssl/mock/userInfo.ts b/frontend/apps/allin-ssl/mock/userInfo.ts new file mode 100644 index 0000000..443dbc4 --- /dev/null +++ b/frontend/apps/allin-ssl/mock/userInfo.ts @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 用户列表 (案例接口) +export const listUser = Mock.mock( + /\/api\/user\/list/, + 'post', + listTemplate( + { + id: '@id', + name: '@cname', + avatar: '@image', + 'age|18-60': 18, + 'gender|1': ['男', '女'], + phone: /^1[385][1-9]\d{8}/, + email: '@EMAIL', + address: '@county(true)', + 'role|1': ['admin', 'user'], + }, + 100, + ), +) + +// 用户详情 (案例接口) +export const addUser = Mock.mock(/\/api\/user\/add/, 'post', messageTemplate('添加成功', true)) + diff --git a/frontend/apps/allin-ssl/mock/workflow.ts b/frontend/apps/allin-ssl/mock/workflow.ts new file mode 100644 index 0000000..32d4a8e --- /dev/null +++ b/frontend/apps/allin-ssl/mock/workflow.ts @@ -0,0 +1,90 @@ +import Mock from 'mockjs' +import { listTemplate, messageTemplate } from './template' + +// 工作流列表 +export const getWorkflowList = Mock.mock(/\/workflow\/get_list/, 'post', () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push({ + id: Mock.Random.id(), + name: `${Mock.Random.ctitle(3, 8)}部署流水线`, + type: Mock.Random.pick(['auto', 'manual']), + status: Mock.Random.integer(0, 1), + created_at: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + updated_at: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + }) + } + return { + code: 0, + count: list.length, + data: { + list, + total: 28, + }, + message: '获取成功', + status: true, + } +}) + +// 新增工作流 +export const addWorkflow = Mock.mock(/\/workflow\/add_workflow/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '添加成功', + status: true, +})) + +// 修改工作流 +export const updateWorkflow = Mock.mock(/\/workflow\/upd_workflow/, 'post', () => ({ + code: 0, + count: 0, + data: { + id: Mock.Random.id(), + }, + message: '修改成功', + status: true, +})) + +// 删除工作流 +export const deleteWorkflow = Mock.mock(/\/workflow\/del_workflow/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '删除成功', + status: true, +})) + +// 获取工作流执行历史 +export const getWorkflowHistory = Mock.mock(/\/workflow\/get_workflow_history/, 'post', () => { + const list = [] + for (let i = 0; i < 10; i++) { + list.push({ + id: Mock.Random.id(), + workflow_id: Mock.Random.id(), + workflow_name: `${Mock.Random.ctitle(3, 8)}部署流水线`, + state: Mock.Random.integer(-1, 1), + mode: Mock.Random.pick(['定时触发', '手动触发']), + exec_time: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), + }) + } + return { + code: 0, + count: list.length, + data: list, + message: '获取成功', + status: true, + } +}) + +// 手动执行工作流 +export const executeWorkflow = Mock.mock(/\/workflow\/execute_workflow/, 'post', () => ({ + code: 0, + count: 0, + data: null, + message: '执行成功', + status: true, +})) + diff --git a/frontend/apps/allin-ssl/package.json b/frontend/apps/allin-ssl/package.json new file mode 100644 index 0000000..b5c10eb --- /dev/null +++ b/frontend/apps/allin-ssl/package.json @@ -0,0 +1,87 @@ +{ + "name": "allin-ssl", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --host", + "build": "vite build --mode build", + "preview": "vite preview", + "test": "vitest", + "tsc": "vue-tsc -b --noEmit", + "lint:ts": "eslint --ext .ts,.js src --fix", + "lint:style": "stylelint --config .stylelintrc.cjs --fix", + "lint": "npm run lint:ts && npm run lint:style" + }, + "dependencies": { + "@baota/hooks": "workspace:*", + "@baota/i18n": "workspace:*", + "@baota/naive-ui": "workspace:*", + "@baota/pinia": "workspace:*", + "@baota/router": "workspace:*", + "@baota/utils": "workspace:*", + "@vicons/antd": "^0.13.0", + "@vicons/carbon": "^0.13.0", + "@vicons/fa": "^0.13.0", + "@vicons/fluent": "^0.13.0", + "@vicons/ionicons5": "^0.13.0", + "@vicons/tabler": "^0.13.0", + "@vue-flow/background": "^1.3.2", + "@vue-flow/controls": "^1.1.2", + "@vue-flow/core": "^1.42.5", + "@vue-flow/minimap": "^1.5.3", + "@vue-flow/node-toolbar": "^1.1.1", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "axios": "^1.7.9", + "crypto-js": "^4.1.1", + "echarts": "^5.6.0", + "jsoneditor": "^10.2.0", + "naive-ui": "^2.41.0", + "normalize.css": "^8.0.1", + "nprogress": "^0.2.0", + "particlesjs": "^2.2.3", + "pinia": "^2.3.0", + "pinia-plugin-persistedstate": "^4.2.0", + "uuid": "^11.1.0", + "vue": "^3.5.13", + "vue-i18n": "^11.1.2", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@baota/eslint": "workspace:*", + "@baota/plugin-i18n": "workspace:*", + "@baota/prettier": "workspace:*", + "@baota/stylelint": "workspace:*", + "@baota/typescript": "workspace:*", + "@baota/project-ftp-sync": "workspace:*", + "@types/crypto-js": "^4.1.1", + "@types/humps": "^2.0.6", + "@types/md5": "^2.3.5", + "@types/minimist": "^1.2.5", + "@types/mockjs": "^1.0.10", + "@types/node": "^22.10.7", + "@types/ramda": "^0.30.2", + "@vitejs/plugin-basic-ssl": "^1.2.0", + "@vitejs/plugin-legacy": "^6.0.0", + "@vitejs/plugin-vue": "^5.2.1", + "@vitejs/plugin-vue-jsx": "^4.1.1", + "@vue/tsconfig": "^0.7.0", + "autoprefixer": "^10.4.20", + "humps": "^2.0.1", + "minimist": "^1.2.8", + "mockjs": "^1.1.0", + "postcss": "^8.5.1", + "tailwindcss": "^3.4.17", + "typescript-plugin-css-modules": "^5.1.0", + "unplugin-auto-import": "^19.0.0", + "unplugin-vue-components": "^28.0.0", + "vite": "^6.0.5", + "vite-plugin-compression2": "^1.3.3", + "vite-plugin-svg-icons": "2.0.1", + "vite-plugin-vue-devtools": "^7.7.0", + "vite-plugin-vue-mcp": "^0.3.2", + "vitest": "^3.0.2", + "vue-tsc": "^2.2.0" + } +} \ No newline at end of file diff --git a/frontend/apps/allin-ssl/postcss.config.js b/frontend/apps/allin-ssl/postcss.config.js new file mode 100644 index 0000000..1a52624 --- /dev/null +++ b/frontend/apps/allin-ssl/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/frontend/apps/allin-ssl/prettier.config.js b/frontend/apps/allin-ssl/prettier.config.js new file mode 100644 index 0000000..87c65c9 --- /dev/null +++ b/frontend/apps/allin-ssl/prettier.config.js @@ -0,0 +1,3 @@ +import prettierConfig from '@baota/prettier' + +export default prettierConfig diff --git a/frontend/apps/allin-ssl/public/.DS_Store b/frontend/apps/allin-ssl/public/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3b9b356976045b14719444aad1aef327f8195977 GIT binary patch literal 6148 zcmeHK%}(Pm5VlL9tq@WVAT2jbTq_{3fDo5Z%7NR8AUFW(CQStqXY10P|p00(Jat#2jJJHkfJz4+z((fI5|%CkEH)U>7FNHkfME z>5QAl2R9>g^FrZjbm(8GaK>$oR1yQkK$d|q-7Mq%zy1FEKbu4?Vt^Rfx7>R$`8SIU ll(|`!wTzLi{a57N2M;FCWRrt2_p&)|Os{0z%+B$b9{{M*BsBm4 delta 319 zcmZoMXfc@JFDk~sz`)4BAi!W4oSdIq0OSGrn*}+RGuMNpm>H58iW!P?(vhVFRS+_{ z`7SO=Ir&LI5svl+pLa$+JLZTin}SESAOqP{1)w$tR)$QVjrk0D48@bBShCr8i;Q "$TEMP_PATHS_FILE" +echo "import path from 'path'" > "$TEMP_ALIAS_FILE" +echo "export default {" >> "$TEMP_ALIAS_FILE" + +# 处理 views 目录下的第一层目录 +if [ -d "$SRC_DIR/views" ]; then + echo "处理 views 目录..." + # 确保没有尾随逗号的最后一个条目 + view_dirs=() + while IFS= read -r dir; do + if [ -d "$dir" ]; then + dir_name=$(basename "$dir") + view_dirs+=("$dir_name") + fi + done < <(find "$SRC_DIR/views" -mindepth 1 -maxdepth 1 -type d) + + # 处理 views 子目录 + total=${#view_dirs[@]} + for ((i=0; i> "$TEMP_PATHS_FILE" + echo " '@$dir_name': path.resolve(__dirname, 'src/views/$dir_name')," >> "$TEMP_ALIAS_FILE" + # 如果不是最后一个元素,添加逗号 + if [ $i -lt $((total-1)) ]; then + echo "," >> "$TEMP_PATHS_FILE" + fi + done +fi + +# 处理 src 目录下的所有目录 +echo "处理 src 目录下的其他目录..." +src_dirs=() +while IFS= read -r dir; do + if [ -d "$dir" ] && [ "$(basename "$dir")" != "views" ]; then + dir_name=$(basename "$dir") + src_dirs+=("$dir_name") + fi +done < <(find "$SRC_DIR" -mindepth 1 -maxdepth 1 -type d) + +# 如果之前有 views 目录的条目,添加逗号 +if [ ${#view_dirs[@]} -gt 0 ] && [ ${#src_dirs[@]} -gt 0 ]; then + echo "," >> "$TEMP_PATHS_FILE" +fi + +# 处理其他目录 +total=${#src_dirs[@]} +for ((i=0; i> "$TEMP_PATHS_FILE" + echo " '@$dir_name': path.resolve(__dirname, 'src/$dir_name')," >> "$TEMP_ALIAS_FILE" + # 如果不是最后一个元素,添加逗号 + if [ $i -lt $((total-1)) ]; then + echo "," >> "$TEMP_PATHS_FILE" + fi +done + +# 添加根路径(确保添加逗号如果之前有其他条目) +if [ ${#view_dirs[@]} -gt 0 ] || [ ${#src_dirs[@]} -gt 0 ]; then + echo "," >> "$TEMP_PATHS_FILE" +fi +echo " \"@/*\": [\"./src/*\"]" >> "$TEMP_PATHS_FILE" +echo "}" >> "$TEMP_PATHS_FILE" + +# 添加根路径到 alias 配置 +echo " '@': path.resolve(__dirname, 'src')" >> "$TEMP_ALIAS_FILE" +echo "}" >> "$TEMP_ALIAS_FILE" + +# 更新 tsconfig.app.json +echo "更新 tsconfig.app.json..." +TSCONFIG="$PROJECT_ROOT/tsconfig.app.json" +if [ -f "$TSCONFIG" ]; then + # 创建临时文件 + TSCONFIG_TMP="${TSCONFIG}.tmp" + + # 使用 jq 处理 JSON(如果可用) + if command -v jq >/dev/null 2>&1; then + jq --arg paths "$(cat "$TEMP_PATHS_FILE")" '.compilerOptions.paths = $paths' "$TSCONFIG" > "$TSCONFIG_TMP" \ + && mv "$TSCONFIG_TMP" "$TSCONFIG" \ + || handle_error "更新 tsconfig.app.json 失败" + else + # 回退到 sed 方案 + sed -e '/"paths":/,/}/c\ "paths": '"$(cat "$TEMP_PATHS_FILE")"',' "$TSCONFIG" > "$TSCONFIG_TMP" \ + && mv "$TSCONFIG_TMP" "$TSCONFIG" \ + || handle_error "更新 tsconfig.app.json 失败" + fi + echo "tsconfig.app.json 更新成功" +else + handle_error "找不到 tsconfig.app.json 文件" +fi + +# 更新 vite.config.ts +echo "更新 vite.config.ts..." +VITE_CONFIG="$PROJECT_ROOT/vite.config.ts" +if [ -f "$VITE_CONFIG" ]; then + VITE_CONFIG_TMP="${VITE_CONFIG}.tmp" + + # 使用 sed 更新 alias 配置 + sed -e '/resolve: {/,/}/c\ resolve: {\n alias: '"$(cat "$TEMP_ALIAS_FILE")"'\n },' "$VITE_CONFIG" > "$VITE_CONFIG_TMP" \ + && mv "$VITE_CONFIG_TMP" "$VITE_CONFIG" \ + || handle_error "更新 vite.config.ts 失败" + + echo "vite.config.ts 更新成功" +else + handle_error "找不到 vite.config.ts 文件" +fi + +echo "路径别名配置更新完成!" diff --git a/frontend/apps/allin-ssl/script/create-roles.sh b/frontend/apps/allin-ssl/script/create-roles.sh new file mode 100644 index 0000000..9c4880a --- /dev/null +++ b/frontend/apps/allin-ssl/script/create-roles.sh @@ -0,0 +1,891 @@ +#!/bin/bash + +# 遇到错误时退出 +set -e + +# 显示帮助信息 +show_help() { + echo "使用方法: ./create-roles.sh [选项]" + echo "选项:" + echo " -h, --help 显示帮助信息" + echo + echo "此脚本在 src/views 目录下创建角色管理相关的 Vue3 TSX 路由视图结构" + echo "将生成以下结构:" + echo "src/views/<角色名称>" + echo "├── index.tsx # 入口文件" + echo "├── useController.ts # 控制器" + echo "├── useStore.ts # 状态管理" + echo "├── index.module.css # 样式文件" + echo "├── types.d.ts # 类型定义" + echo "├── children/ # 子路由" + echo "│ └── permissions # 权限管理子路由" + echo "│ ├── index.tsx # 视图" + echo "│ ├── index.module.css # 样式" + echo "│ ├── useController.ts # 控制器" + echo "│ ├── useStore.ts # 状态管理" + echo "│ └── types.d.ts # 类型定义" + echo "└── components/ # 组件" + echo " └── role-form # 角色表单组件" + echo " ├── index.tsx # 视图" + echo " ├── index.module.css # 样式" + echo " ├── useController.ts # 控制器" + echo " ├── useStore.ts # 状态管理" + echo " └── types.d.ts # 类型定义" + echo + echo "同时会创建:" + echo "src/api/<角色名称>.ts # API 文件" + echo "src/types/<角色名称>.d.ts # 类型定义文件" +} + +# 解析命令行参数 +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_help + exit 0 + ;; + *) + echo "错误: 未知参数 $1" + show_help + exit 1 + ;; + esac +done + +# 交互式选择函数 +select_option() { + local prompt="$1" + local options=("是" "否") + local selected + + echo "$prompt" + select choice in "${options[@]}"; do + case $REPLY in + 1|2) + selected=$choice + break + ;; + *) + echo "请选择有效的选项 [1-2]" + ;; + esac + done + + [[ "$selected" == "是" ]] && return 0 || return 1 +} + +# 交互式输入路由名称 +read -p "请输入路由名称 (routerName): " ROUTER_NAME +if [ -z "$ROUTER_NAME" ]; then + echo "错误: 路由名称不能为空" + exit 1 +fi + +# 询问是否创建子路由 +if select_option "是否创建子路由?"; then + read -p "请输入子路由名称 [默认: list]: " CHILD_ROUTER_NAME + CHILD_ROUTER_NAME=${CHILD_ROUTER_NAME:-"list"} + echo "将创建子路由: $CHILD_ROUTER_NAME" +else + CHILD_ROUTER_NAME="" + echo "不创建子路由" +fi + +# 询问是否创建组件 +if select_option "是否创建组件?"; then + read -p "请输入组件名称 [默认: todo-form]: " COMPONENT_NAME + COMPONENT_NAME=${COMPONENT_NAME:-"todo-form"} + echo "将创建组件: $COMPONENT_NAME" +else + COMPONENT_NAME="" + echo "不创建组件" +fi + +# 获取脚本所在目录的绝对路径 +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# 获取项目根目录 +PROJECT_ROOT="$SCRIPT_DIR/../" + +# 创建目录函数 +create_dir() { + local dir="$1" + mkdir -p "$PROJECT_ROOT/$dir" +} + +# 确保必需的目录存在 +create_dir "src/views" +create_dir "src/api" +create_dir "src/types" + +# 创建主目录结构 +create_dir "src/views/$ROUTER_NAME/children/$CHILD_ROUTER_NAME" +create_dir "src/views/$ROUTER_NAME/components/$COMPONENT_NAME" + +# 创建 API 文件 +cat > "$PROJECT_ROOT/src/api/${ROUTER_NAME}.ts" << '' + +# 创建类型定义文件 +cat > "$PROJECT_ROOT/src/types/${ROUTER_NAME}.d.ts" << '' + +# 创建主路由类型文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/types.d.ts" << EOL +export interface Todo { + id: string + title: string + completed: boolean + createdAt: string +} + +export interface TodoState { + todos: Todo[] + loading: boolean + error: string | null +} +EOL + +# 创建主路由状态管理文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/useStore.ts" << EOL +import { defineStore } from '@baota/pinia' +import { ref } from 'vue' +import type { Todo, TodoState } from './types' + +const store = defineStore('todo-store', () => { + const todos = ref([]) + const loading = ref(false) + const error = ref(null) + + const addTodo = (title: string) => { + const newTodo: Todo = { + id: Date.now().toString(), + title, + completed: false, + createdAt: new Date().toISOString() + } + todos.value.push(newTodo) + } + + const toggleTodo = (id: string) => { + const todo = todos.value.find(t => t.id === id) + if (todo) { + todo.completed = !todo.completed + } + } + + const removeTodo = (id: string) => { + todos.value = todos.value.filter(t => t.id !== id) + } + + return { + todos, + loading, + error, + addTodo, + toggleTodo, + removeTodo + } +}) + +export const useStore = () => store() +EOL + +# 创建主路由控制器文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/useController.ts" << EOL +import { onMounted } from 'vue' +import { storeToRefs } from '@baota/pinia' +import { useStore } from './useStore' + +export const useController = () => { + const store = useStore() + const { todos, loading, error } = storeToRefs(store) + + const handleAddTodo = (title: string) => { + if (title.trim()) { + store.addTodo(title.trim()) + } + } + + const handleToggleTodo = (id: string) => { + store.toggleTodo(id) + } + + const handleRemoveTodo = (id: string) => { + store.removeTodo(id) + } + + onMounted(() => { + // 可以在这里加载初始数据 + console.log('Todo List Component Mounted') + }) + + return { + todos, + loading, + error, + handleAddTodo, + handleToggleTodo, + handleRemoveTodo + } +} +EOL + +# 创建主路由样式文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/index.module.css" << EOL +.container { + max-width: 600px; + margin: 0 auto; + padding: 24px; +} + +.header { + margin-bottom: 24px; + text-align: center; +} + +.title { + font-size: 32px; + color: #2c3e50; +} + +.form { + display: flex; + gap: 8px; + margin-bottom: 24px; +} + +.input { + flex: 1; + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 16px; +} + +.button { + padding: 8px 16px; + background: #42b883; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; +} + +.button:hover { + background: #3aa876; +} + +.todoList { + list-style: none; + padding: 0; +} + +.todoItem { + display: flex; + align-items: center; + padding: 12px; + background: white; + border-radius: 4px; + margin-bottom: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +.todoCheckbox { + margin-right: 12px; +} + +.todoTitle { + flex: 1; +} + +.todoTitle.completed { + text-decoration: line-through; + color: #999; +} + +.deleteButton { + padding: 4px 8px; + background: #ff4757; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.deleteButton:hover { + background: #ff3748; +} +EOL + +# 创建主路由入口文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/index.tsx" << EOL +import { defineComponent, ref } from 'vue' +import { useController } from './useController' +import styles from './index.module.css' + +export default defineComponent({ + name: 'TodoList', + + setup() { + const { todos, handleAddTodo, handleToggleTodo, handleRemoveTodo } = useController() + const newTodo = ref('') + + const onSubmit = (e: Event) => { + e.preventDefault() + handleAddTodo(newTodo.value) + newTodo.value = '' + } + + return () => ( +
+
+

Todo List

+
+ +
+ + +
+ +
    + {todos.value.map(todo => ( +
  • + handleToggleTodo(todo.id)} + /> + + {todo.title} + + +
  • + ))} +
+
+ ) + } +}) +EOL + +# 在脚本开头添加大写转换函数 +to_upper_first() { + local str="$1" + local first_char=$(echo "${str:0:1}" | tr '[:lower:]' '[:upper:]') + echo "$first_char${str:1}" +} + +# 存储转换后的变量 +ROUTER_NAME_PASCAL=$(to_upper_first "$ROUTER_NAME") + +# 创建表单组件类型文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/components/$COMPONENT_NAME/types.d.ts" << EOL +import type { ${ROUTER_NAME_PASCAL}Data } from '@/types/${ROUTER_NAME}' + +export interface FormProps { + data?: ${ROUTER_NAME_PASCAL}Data | null +} + +export interface FormEmits { + (e: 'submit', data: ${ROUTER_NAME_PASCAL}Data): void + (e: 'cancel'): void +} +EOL + +# 创建表单组件状态管理文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/components/$COMPONENT_NAME/useStore.ts" << EOL +import { defineStore } from '@baota/pinia' +import { ref } from 'vue' +import type { ${ROUTER_NAME_PASCAL}Data } from '@/types/${ROUTER_NAME}' + +// 定义 store +const store = defineStore('${ROUTER_NAME}-form-store', () => { + const loading = ref(false) + const formData = ref<${ROUTER_NAME_PASCAL}Data>({ + id: '', + name: '', + code: '', + description: '', + permissions: [], + createdAt: '', + updatedAt: '' + }) + + return { + loading, + formData + } +}) + +export const useStore = () => store() +EOL + +# 创建表单组件控制器文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/components/$COMPONENT_NAME/useController.ts" << EOL +import { onMounted } from 'vue' +import { storeToRefs } from '@baota/pinia' +import { useStore } from './useStore' +import type { ${ROUTER_NAME_PASCAL}Data } from '@/types/${ROUTER_NAME}' + +export const useController = (initialData?: ${ROUTER_NAME_PASCAL}Data | null) => { + const store = useStore() + const storeRef = storeToRefs(store) + + onMounted(() => { + if (initialData) { + store.formData = { ...initialData } + } + }) + + return { + ...storeRef + } +} +EOL + +# 创建表单组件样式文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/components/$COMPONENT_NAME/index.module.css" << EOL +.form { + max-width: 600px; +} + +.formTitle { + font-size: 18px; + font-weight: bold; + margin-bottom: 24px; +} + +.formItem { + margin-bottom: 16px; +} + +.label { + display: block; + margin-bottom: 8px; + font-weight: 500; +} + +.input { + width: 100%; + padding: 8px; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all 0.3s; +} + +.input:hover { + border-color: #40a9ff; +} + +.input:focus { + border-color: #1890ff; + outline: none; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} + +.textarea { + composes: input; + min-height: 100px; + resize: vertical; +} + +.actions { + margin-top: 24px; + display: flex; + gap: 8px; + justify-content: flex-end; +} + +.button { + padding: 8px 16px; + border: 1px solid #d9d9d9; + border-radius: 4px; + cursor: pointer; + background: #fff; + transition: all 0.3s; +} + +.button:hover { + background: #f5f5f5; +} + +.primaryButton { + composes: button; + background: #1890ff; + color: #fff; + border-color: #1890ff; +} + +.primaryButton:hover { + background: #40a9ff; +} +EOL + +# 创建表单组件入口文件 +cat > "$PROJECT_ROOT/src/views/$ROUTER_NAME/components/$COMPONENT_NAME/index.tsx" << EOL +import { defineComponent } from 'vue' +import { useController } from './useController' +import type { FormProps, FormEmits } from './types' +import styles from './index.module.css' + +export default defineComponent({ + name: 'RoleForm', + + props: { + data: { + type: Object as PropType, + default: null + } + }, + + emits: ['submit', 'cancel'], + + setup(props, { emit }) { + const { formData } = useController(props.data) + + const handleSubmit = (e: Event) => { + e.preventDefault() + emit('submit', formData.value) + } + + return () => ( +
+

+ {props.data ? '编辑角色' : '创建角色'} +

+ +
+ + +
+ +
+ + +
+ +
+ +