From 82ca90cf951e7395bf50c00137b45280f1848a2e Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 19 Jan 2026 11:02:13 +0800 Subject: [PATCH] chore(i18n): improve i18n --- .../BizDeployNodeConfigFieldsProvider.tsx | 2 ++ ...izDeployNodeConfigFieldsProviderAPISIX.tsx | 5 +++ ...DeployNodeConfigFieldsProviderBaotaWAF.tsx | 5 +++ ...odeConfigFieldsProviderBaotaWAFConsole.tsx | 33 +++++++++++++++++++ .../BizDeployNodeConfigFieldsProviderKong.tsx | 5 +++ ...eployNodeConfigFieldsProviderProxmoxVE.tsx | 6 ++++ ...DeployNodeConfigFieldsProviderRatPanel.tsx | 5 +++ ...DeployNodeConfigFieldsProviderSafeLine.tsx | 5 +++ ...loyNodeConfigFieldsProviderSynologyDSM.tsx | 6 ++++ .../i18n/locales/en/nls.workflow.nodes.json | 12 +++++-- .../i18n/locales/zh/nls.workflow.nodes.json | 10 +++++- .../presets/PresetListNotifyTemplates.tsx | 8 ++++- ui/src/pages/settings/SettingsSSLProvider.tsx | 5 --- 13 files changed, 98 insertions(+), 9 deletions(-) create mode 100644 ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProviderBaotaWAFConsole.tsx diff --git a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProvider.tsx b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProvider.tsx index e789c538..d48f5da7 100644 --- a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProvider.tsx +++ b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProvider.tsx @@ -34,6 +34,7 @@ import BizDeployNodeConfigFieldsProviderBaotaPanelConsole from "./BizDeployNodeC import BizDeployNodeConfigFieldsProviderBaotaPanelGo from "./BizDeployNodeConfigFieldsProviderBaotaPanelGo.tsx"; import BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole from "./BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole"; import BizDeployNodeConfigFieldsProviderBaotaWAF from "./BizDeployNodeConfigFieldsProviderBaotaWAF.tsx"; +import BizDeployNodeConfigFieldsProviderBaotaWAFConsole from "./BizDeployNodeConfigFieldsProviderBaotaWAFConsole.tsx"; import BizDeployNodeConfigFieldsProviderBunnyCDN from "./BizDeployNodeConfigFieldsProviderBunnyCDN"; import BizDeployNodeConfigFieldsProviderBytePlusCDN from "./BizDeployNodeConfigFieldsProviderBytePlusCDN"; import BizDeployNodeConfigFieldsProviderCdnfly from "./BizDeployNodeConfigFieldsProviderCdnfly"; @@ -148,6 +149,7 @@ const providerComponentMap: Partial { return ( <> + + } /> + + { return ( <> + + } /> + + { + const { t } = useTranslation(); + + return ( + <> + + } /> + + + ); +}; + +const getInitialValues = (): Nullish>> => { + return {}; +}; + +const getSchema = (_: { i18n?: ReturnType }) => { + return z.object({}); +}; + +const _default = Object.assign(BizDeployNodeConfigFieldsProviderBaotaWAFConsole, { + getInitialValues, + getSchema, +}); + +export default _default; diff --git a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProviderKong.tsx b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProviderKong.tsx index 91fc4968..5fe614b0 100644 --- a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProviderKong.tsx +++ b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigFieldsProviderKong.tsx @@ -4,6 +4,7 @@ import { createSchemaFieldRule } from "antd-zod"; import { z } from "zod"; import Show from "@/components/Show"; +import Tips from "@/components/Tips"; import { useFormNestedFieldsContext } from "./_context"; @@ -24,6 +25,10 @@ const BizDeployNodeConfigFieldsProviderKong = () => { return ( <> + + } /> + + { @@ -17,6 +19,10 @@ const BizDeployNodeConfigFieldsProviderProxmoxVE = () => { return ( <> + + } /> + + { return ( <> + + } /> + + { return ( <> + + } /> + + { @@ -17,6 +19,10 @@ const BizDeployNodeConfigFieldsProviderSynologyDSM = () => { return ( <> + + } /> + + https://dash.bunny.net/cdn", @@ -651,6 +654,7 @@ "workflow_node.deploy.form.k8s_secret_labels.help": "Notes: One key value pair per line, separated by colon.", "workflow_node.deploy.form.k8s_secret_labels.errmsg.invalid": "Please enter a valid labels", "workflow_node.deploy.form.k8s_secret_labels.tooltip": "Example:
environment: production
app: nginx
", + "workflow_node.deploy.form.kong.guide": "Requires Kong v2.0 or higher.", "workflow_node.deploy.form.kong_resource_type.option.certificate.label": "SSL certificate", "workflow_node.deploy.form.kong_workspace.label": "Kong workspace (Optional)", "workflow_node.deploy.form.kong_workspace.placeholder": "Please enter Kong workspace", @@ -747,6 +751,7 @@ "workflow_node.deploy.form.nginxproxymanager_certificate_id.label": "NPM certificate ID", "workflow_node.deploy.form.nginxproxymanager_certificate_id.placeholder": "Please enter NPM certificate ID", "workflow_node.deploy.form.nginxproxymanager_certificate_id.tooltip": "You can find it on NPM dashboard.", + "workflow_node.deploy.form.proxmoxve.guide": "Requires Proxmox VE v5.2 or higher.", "workflow_node.deploy.form.proxmoxve_node_name.label": "Proxmox VE cluster node name", "workflow_node.deploy.form.proxmoxve_node_name.placeholder": "Please enter Proxmox VE cluster node name", "workflow_node.deploy.form.proxmoxve_auto_restart.label": "Auto restart Proxmox VE after deployment", @@ -771,6 +776,7 @@ "workflow_node.deploy.form.rainyun_rcdn_certificate_id.label": "Rain Yun RCDN certificate ID", "workflow_node.deploy.form.rainyun_rcdn_certificate_id.placeholder": "Please enter Rain Yun RCDN certificate ID", "workflow_node.deploy.form.rainyun_rcdn_certificate_id.tooltip": "For more information, see https://app.rainyun.com/apps/ssl/list", + "workflow_node.deploy.form.ratpanel.guide": "Requires AcePanel v2.5 or higher.", "workflow_node.deploy.form.ratpanel_resource_type.option.website.label": "Website", "workflow_node.deploy.form.ratpanel_site_names.label": "AcePanel website names", "workflow_node.deploy.form.ratpanel_site_names.placeholder": "Please enter AcePanel website names (separated by semicolons)", @@ -812,6 +818,7 @@ "workflow_node.deploy.form.s3_jks_storepass.label": "JKS store password", "workflow_node.deploy.form.s3_jks_storepass.placeholder": "Please enter JKS store password", "workflow_node.deploy.form.s3_jks_storepass.tooltip": "For more information, see https://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html", + "workflow_node.deploy.form.safeline.guide": "Requires SafeLine v6.6 or higher.", "workflow_node.deploy.form.safeline_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.safeline_certificate_id.label": "SafeLine certificate ID", "workflow_node.deploy.form.safeline_certificate_id.placeholder": "Please enter SafeLine certificate ID", @@ -862,6 +869,7 @@ "workflow_node.deploy.form.ssh_preset_scripts.ps_binding_rdp": "PowerShell - Binding RDP", "workflow_node.deploy.form.ssh_use_scp.label": "Fallback to use SCP", "workflow_node.deploy.form.ssh_use_scp.tooltip": "If the remote server does not support SFTP, please check this option to fallback to SCP.", + "workflow_node.deploy.form.synologydsm.guide": "Requires Synology DSM v6.0 or higher.", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.label": "Synology DSM certificate ID or description (Optional)", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.placeholder": "Please enter Synology DSM certificate ID or description", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.help": "Notes: Leave it blank to import a new certificate; otherwise, to replace the existing one.", diff --git a/ui/src/i18n/locales/zh/nls.workflow.nodes.json b/ui/src/i18n/locales/zh/nls.workflow.nodes.json index 51299cf4..b775377c 100644 --- a/ui/src/i18n/locales/zh/nls.workflow.nodes.json +++ b/ui/src/i18n/locales/zh/nls.workflow.nodes.json @@ -191,7 +191,7 @@ "workflow_node.monitor.label": "监控网站证书", "workflow_node.monitor.default_name": "监控", "workflow_node.monitor.form_anchor.parameters.tab": "参数设置", - "workflow_node.monitor.form.guide": "Certimate 将向目标地址发送一个 HEAD 请求来获取相应的域名证书,请确保该地址可通过 HTTPS 协议访问。", + "workflow_node.monitor.form.guide": "将向目标地址发送一个 HEAD 请求来获取相应的域名证书,请确保该地址可通过 HTTPS 协议访问。", "workflow_node.monitor.form.host.label": "主机地址", "workflow_node.monitor.form.host.placeholder": "请输入主机地址(域名或 IP)", "workflow_node.monitor.form.port.label": "主机端口", @@ -397,6 +397,7 @@ "workflow_node.deploy.form.aliyun_waf_domain.label": "阿里云 WAF 扩展域名(可选)", "workflow_node.deploy.form.aliyun_waf_domain.placeholder": "请输入阿里云 WAF 扩展域名", "workflow_node.deploy.form.aliyun_waf_domain.help": "提示:不填写时,将替换实例的默认证书;否则,将替换扩展域名证书。", + "workflow_node.deploy.form.apisix.guide": "需要 APISIX v2.0 或更高版本。", "workflow_node.deploy.form.apisix_resource_type.option.certificate.label": "替换指定证书", "workflow_node.deploy.form.apisix_certificate_id.label": "APISIX 证书 ID", "workflow_node.deploy.form.apisix_certificate_id.placeholder": "请输入 APISIX 证书 ID", @@ -497,6 +498,7 @@ "workflow_node.deploy.form.baotapanelgo_site_names.tooltip": "请登录宝塔面板极速版查看", "workflow_node.deploy.form.baotapanelgo_site_names.multiple_input_modal.title": "修改宝塔面板极速版网站名称", "workflow_node.deploy.form.baotapanelgo_site_names.multiple_input_modal.placeholder": "请输入宝塔面板极速版网站名称", + "workflow_node.deploy.form.baotawaf.guide": "需要堡塔云 WAF v5.7 或更高版本。", "workflow_node.deploy.form.baotawaf_site_names.label": "堡塔云 WAF 网站名称", "workflow_node.deploy.form.baotawaf_site_names.placeholder": "请输入堡塔云 WAF 网站名称(多个值请用半角分号隔开)", "workflow_node.deploy.form.baotawaf_site_names.errmsg.invalid": "请输入正确的堡塔云 WAF 网站名称", @@ -506,6 +508,7 @@ "workflow_node.deploy.form.baotawaf_site_names.multiple_input_modal.placeholder": "请输入堡塔云 WAF 网站名称", "workflow_node.deploy.form.baotawaf_site_port.label": "堡塔云 WAF 网站 SSL 端口", "workflow_node.deploy.form.baotawaf_site_port.placeholder": "请输入堡塔云 WAF 网站 SSL 端口", + "workflow_node.deploy.form.baotawaf_console.guide": "需要堡塔云 WAF v5.7 或更高版本。", "workflow_node.deploy.form.bunny_cdn_pull_zone_id.label": "Bunny CDN 拉取区域 ID", "workflow_node.deploy.form.bunny_cdn_pull_zone_id.placeholder": "请输入 Bunny CDN 拉取区域 ID", "workflow_node.deploy.form.bunny_cdn_pull_zone_id.tooltip": "这是什么?请参阅 https://dash.bunny.net/cdn", @@ -649,6 +652,7 @@ "workflow_node.deploy.form.k8s_secret_labels.help": "提示:每行一个键值对,以分号分隔。", "workflow_node.deploy.form.k8s_secret_labels.errmsg.invalid": "请输入有效的标签键值对", "workflow_node.deploy.form.k8s_secret_labels.tooltip": "示例:
environment: production
app: nginx
", + "workflow_node.deploy.form.kong.guide": "需要 Kong v2.0 或更高版本。", "workflow_node.deploy.form.kong_resource_type.option.certificate.label": "替换指定证书", "workflow_node.deploy.form.kong_workspace.label": "Kong 工作空间(可选)", "workflow_node.deploy.form.kong_workspace.placeholder": "请输入 Kong 工作空间", @@ -745,6 +749,7 @@ "workflow_node.deploy.form.nginxproxymanager_certificate_id.label": "NPM 证书 ID", "workflow_node.deploy.form.nginxproxymanager_certificate_id.placeholder": "请输入 NPM 证书 ID", "workflow_node.deploy.form.nginxproxymanager_certificate_id.tooltip": "请登录 NPM 面板查看", + "workflow_node.deploy.form.proxmoxve.guide": "需要 Proxmox VE v5.2 或更高版本。", "workflow_node.deploy.form.proxmoxve_node_name.label": "Proxmox VE 集群节点名称", "workflow_node.deploy.form.proxmoxve_node_name.placeholder": "请输入 Proxmox VE 集群节点名称", "workflow_node.deploy.form.proxmoxve_auto_restart.label": "部署后自动重启 Proxmox VE 服务", @@ -769,6 +774,7 @@ "workflow_node.deploy.form.rainyun_rcdn_certificate_id.label": "雨云 RCDN 证书 ID", "workflow_node.deploy.form.rainyun_rcdn_certificate_id.placeholder": "请输入雨云 RCDN 证书 ID", "workflow_node.deploy.form.rainyun_rcdn_certificate_id.tooltip": "这是什么?请参阅 https://app.rainyun.com/apps/ssl/list", + "workflow_node.deploy.form.ratpanel.guide": "需要耗子面板 v2.5 或更高版本。", "workflow_node.deploy.form.ratpanel_resource_type.option.website.label": "部署到指定网站", "workflow_node.deploy.form.ratpanel_site_names.label": "耗子面板网站名称", "workflow_node.deploy.form.ratpanel_site_names.placeholder": "请输入耗子面板网站名称(多个值请用半角分号隔开)", @@ -810,6 +816,7 @@ "workflow_node.deploy.form.s3_jks_storepass.label": "JKS 密钥库存储口令", "workflow_node.deploy.form.s3_jks_storepass.placeholder": "请输入 JKS 密钥库存储口令", "workflow_node.deploy.form.s3_jks_storepass.tooltip": "这是什么?请参阅 https://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html", + "workflow_node.deploy.form.safeline.guide": "需要雷池 v6.6 或更高版本。", "workflow_node.deploy.form.safeline_resource_type.option.certificate.label": "替换指定证书", "workflow_node.deploy.form.safeline_certificate_id.label": "雷池证书 ID", "workflow_node.deploy.form.safeline_certificate_id.placeholder": "请输入雷池证书 ID", @@ -860,6 +867,7 @@ "workflow_node.deploy.form.ssh_preset_scripts.ps_binding_rdp": "PowerShell - 导入并绑定到 RDP", "workflow_node.deploy.form.ssh_use_scp.label": "回退使用 SCP", "workflow_node.deploy.form.ssh_use_scp.tooltip": "如果你的远程服务器不支持 SFTP,请勾选此选项回退为 SCP。", + "workflow_node.deploy.form.synologydsm.guide": "需要群晖 DSM v6.0 或更高版本。", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.label": "群晖 DSM 原证书 ID 或描述(可选)", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.placeholder": "请输入群晖 DSM 原证书 ID 或描述", "workflow_node.deploy.form.synologydsm_certificate_id_or_desc.help": "提示:不填写时,将上传新证书;否则,将替换原证书。", diff --git a/ui/src/pages/presets/PresetListNotifyTemplates.tsx b/ui/src/pages/presets/PresetListNotifyTemplates.tsx index a5cdeba2..f97bf1cf 100644 --- a/ui/src/pages/presets/PresetListNotifyTemplates.tsx +++ b/ui/src/pages/presets/PresetListNotifyTemplates.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { IconDots, IconEdit, IconPlus, IconTrash } from "@tabler/icons-react"; import { useControllableValue, useMount } from "ahooks"; -import { App, Button, Card, Dropdown, Form, Input, Typography } from "antd"; +import { App, Button, Card, Divider, Dropdown, Form, Input, Typography } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { nanoid } from "nanoid/non-secure"; import { ClientResponseError } from "pocketbase"; @@ -334,6 +334,12 @@ const InternalEditDrawer = ({ + + + + + } /> + ); }; diff --git a/ui/src/pages/settings/SettingsSSLProvider.tsx b/ui/src/pages/settings/SettingsSSLProvider.tsx index 84255b0d..14a68578 100644 --- a/ui/src/pages/settings/SettingsSSLProvider.tsx +++ b/ui/src/pages/settings/SettingsSSLProvider.tsx @@ -175,7 +175,6 @@ const SettingsSSLProviderOthers = ({ className, style }: { className?: string; s timeout: z.union([z.string(), z.number().int().positive()]).nullish(), }); const formRule = createSchemaFieldRule(formSchema); - const { form: formInst, formProps } = useAntdForm>({ initialValues: { timeout: settings.timeout }, onSubmit: async (values) => { @@ -196,10 +195,6 @@ const SettingsSSLProviderOthers = ({ className, style }: { className?: string; s const [formPending, setFormPending] = useState(false); const [formChanged, setFormChanged] = useState(false); - useEffect(() => { - setFormChanged(settings.timeout !== formInst.getFieldValue("timeout")); - }, [settings?.timeout]); - const handleFormChange = () => { setFormChanged(true); };