# Copyright (C) 2026 Mateusz Skorupa
# This file is distributed under the GPLv2 or later.
msgid ""
msgstr ""
"Project-Id-Version: Webhook Actions - build automations and integrations "
"with AI help 2.6.0\n"
"Report-Msgid-Bugs-To: "
"https://wordpress.org/support/plugin/flowsystems-webhook-actions\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2026-08-03T11:02:55+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: flowsystems-webhook-actions\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: admin/src/components/ImportDialog.vue
msgid "%1$d webhook(s) and %2$d chain(s) to import."
msgstr "待导入 %1$d 个 Webhook 和 %2$d 条链。"

#: admin/src/views/ExternalCronView.vue
msgid "%1$dh %2$dm"
msgstr "%1$d 时 %2$d 分"

#: admin/src/views/ExternalCronView.vue
msgid "%1$dm %2$ds"
msgstr "%1$d 分 %2$d 秒"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%1$s %2$d min"
msgstr "%1$s %2$d 分"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%1$s %2$ds"
msgstr "%1$s %2$d 秒"

#: src/Services/RestRouteInspector.php:74
#. translators: 1: HTTP method, 2: route path, 3: comma-separated allowed methods
#, php-format
msgid "%1$s is not supported on %2$s. Supported methods: %3$s."
msgstr "%2$s 不支持 %1$s。支持的方法：%3$s。"

#: admin/src/views/ExternalCronView.vue
msgid ""
"%1$s/wp-cron.php?doing_wp_cron%2$s — runs all WordPress scheduled tasks. "
"Min interval: 60s. %1$sDISABLE_WP_CRON%2$s is added to "
"%1$swp-config.php%2$s automatically."
msgstr ""
"%1$s/wp-cron.php?doing_wp_cron%2$s — 运行所有 WordPress 计划任务。最小间隔：60 "
"秒。%1$sDISABLE_WP_CRON%2$s 会自动添加到 %1$swp-config.php%2$s。"

#: admin/src/views/ExternalCronView.vue
msgid ""
"%1$s/wp-json/fswa/v1/cron/process?token=…%2$s — processes only the webhook "
"queue. Min interval: 20s."
msgstr "%1$s/wp-json/fswa/v1/cron/process?token=…%2$s — 仅处理 Webhook 队列。最小间隔：20 秒。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"%1$sAvailable variables:%2$s %3$s$payload%4$s (mapped array), %3$s$args%4$s "
"(%5$s$payload['args']%6$s)"
msgstr "%1$s可用变量：%2$s %3$s$payload%4$s（映射数组）、%3$s$args%4$s（%5$s$payload['args']%6$s）"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"%1$sAvailable variables:%2$s %3$s$payload%4$s (sent), "
"%3$s$originalPayload%4$s (pre-mapping), %3$s$responseCode%4$s, "
"%3$s$responseBody%4$s"
msgstr ""
"%1$s可用变量：%2$s "
"%3$s$payload%4$s（已发送）、%3$s$originalPayload%4$s（映射前）、%3$s$responseCode%4$s、%3"
"$s$responseBody%4$s"

#: admin/src/views/ExternalCronView.vue
msgid "%1$sDISABLE_WP_CRON%2$s is active — WP-Cron auto-spawn is disabled."
msgstr "%1$sDISABLE_WP_CRON%2$s 已生效 — WP-Cron 自动触发已禁用。"

#: admin/src/views/ExternalCronView.vue
msgid "%1$sDISABLE_WP_CRON%2$s will be written to %1$swp-config.php%2$s on save."
msgstr "保存时 %1$sDISABLE_WP_CRON%2$s 将被写入 %1$swp-config.php%2$s。"

#: admin/src/views/VaultView.vue
msgid ""
"%1$sFSWA_SECRET_KEY%2$s is defined and your credentials still work, but a "
"copy of the old key remains in the database — so you don't yet get the full "
"benefit. Re-encrypt now to seal every secret with the wp-config key and "
"delete the database key."
msgstr ""
"%1$sFSWA_SECRET_KEY%2$s 已定义且你的凭据仍可用，但数据库中仍保留旧密钥的副本 — 因此你尚未获得完整的保护。立即重新加密，用 "
"wp-config 密钥封存每个密钥并删除数据库中的密钥。"

#: admin/src/views/VaultView.vue
msgid ""
"%1$sFormat:%2$s any long, random, secret string (64+ characters "
"recommended). Generate one from the %3$sWordPress salt generator%4$s or "
"with %5$swp_generate_password(64, true, true)%6$s."
msgstr ""
"%1$s格式：%2$s 任意长的随机机密字符串（推荐 64 个以上字符）。可使用 %3$sWordPress 盐值生成器%4$s 或 "
"%5$swp_generate_password(64, true, true)%6$s 生成。"

#: admin/src/views/VaultView.vue
msgid ""
"%1$sKeep it stable &amp; backed up:%2$s don't change or lose this value "
"once credentials are sealed with it, or they become unrecoverable."
msgstr "%1$s保持稳定并备份：%2$s 一旦凭据用此值封存，请勿更改或丢失它，否则将无法恢复。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"%1$sOrder:%2$s field mapping runs first, then this snippet — so "
"%3$s$payload%4$s here is the %5$spost-mapping%6$s payload, exactly as at "
"dispatch."
msgstr ""
"%1$s顺序：%2$s先执行字段映射，再运行此代码片段——因此这里的 %3$s$payload%4$s "
"是%5$s映射之后%6$s的数据，与发送时完全一致。"

#: admin/src/views/ProView.vue
msgid "%1$sPriority support%2$s — Pro subscribers get a direct response via email."
msgstr "%1$s优先支持%2$s — Pro 订阅者可通过电子邮件获得直接回复。"

#: admin/src/views/VaultView.vue
msgid ""
"%1$sSafe to add anytime:%2$s existing credentials keep working immediately. "
"After adding it, return here and click the %3$sRe-encrypt%4$s button that "
"appears to finish the move and remove the database key."
msgstr "%1$s随时可安全添加：%2$s 现有凭据会立即继续工作。添加后，返回此处并点击出现的 %3$s重新加密%4$s 按钮以完成迁移并移除数据库密钥。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"%1$sShorthand:%2$s works for any variable, e.g. %3$s{{ $args.0.field }}%4$s "
"→ %3$s$args[0]['field']%4$s, %3$s{{ $payload.key }}%4$s → "
"%3$s$payload['key']%4$s"
msgstr ""
"%1$s简写：%2$s 适用于任意变量，例如 %3$s{{ $args.0.field }}%4$s → "
"%3$s$args[0]['field']%4$s、%3$s{{ $payload.key }}%4$s → "
"%3$s$payload['key']%4$s"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"%1$sShorthand:%2$s works for any variable, e.g. %3$s{{ "
"$originalPayload.args.0.id }}%4$s → "
"%3$s$originalPayload['args'][0]['id']%4$s"
msgstr ""
"%1$s简写：%2$s 适用于任意变量，例如 %3$s{{ $originalPayload.args.0.id }}%4$s → "
"%3$s$originalPayload['args'][0]['id']%4$s"

#: admin/src/views/ExternalCronView.vue
msgid ""
"%1$swp-config.php%2$s is not writable. Add this line manually before the "
"“That’s all” comment: %3$sdefine( 'DISABLE_WP_CRON', true );%4$s"
msgstr ""
"%1$swp-config.php%2$s 不可写。请在“That’s all”注释之前手动添加这一行：%3$sdefine( "
"'DISABLE_WP_CRON', true );%4$s"

#: admin/src/components/BuildPublishProgress.vue
msgid "%d AI credits added to your balance."
msgstr "已向你的余额添加 %d 个 AI 额度。"

#: admin/src/components/TriggerSelect.vue
msgid "%d available"
msgstr "%d 个可用"

#: admin/src/components/BuildPublishFields.vue admin/src/components/MarkdownField.vue
msgid "%d characters left"
msgstr "还可输入 %d 个字符"

#: admin/src/views/VaultView.vue
msgid "%d credential cannot be decrypted with the current key."
msgid_plural "%d credentials cannot be decrypted with the current key."
msgstr[0] "有 %d 个凭据无法用当前密钥解密。"

#: admin/src/views/ActivityView.vue admin/src/views/SettingsView.vue
msgid "%d day"
msgid_plural "%d days"
msgstr[0] "%d 天"

#: admin/src/components/ImportDialog.vue
msgid "%d duplicate(s) skipped."
msgstr "已跳过 %d 个重复项。"

#: admin/src/views/ActivityView.vue
msgid "%d entry"
msgid_plural "%d entries"
msgstr[0] "%d 个条目"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%d hour"
msgid_plural "%d hours"
msgstr[0] "%d 小时"

#: admin/src/views/WebhooksList.vue
msgid "%d link will be removed"
msgid_plural "%d links will be removed"
msgstr[0] "将移除 %d 个连接"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%d minute"
msgid_plural "%d minutes"
msgstr[0] "%d 分钟"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%d second"
msgid_plural "%d seconds"
msgstr[0] "%d 秒"

#: admin/src/views/LogsList.vue
msgid "%d selected"
msgstr "已选择 %d 项"

#: admin/src/components/TriggerSelect.vue
msgid "%d trigger selected"
msgid_plural "%d triggers selected"
msgstr[0] "已选择 %d 个触发器"

#: admin/src/views/WebhooksList.vue
msgid "%d webhook"
msgid_plural "%d webhooks"
msgstr[0] "%d 个 Webhook"

#: admin/src/views/WebhooksList.vue
msgid "%d webhook uses Webhook Actions Pro features that are not running"
msgid_plural "%d webhooks use Webhook Actions Pro features that are not running"
msgstr[0] "%d 个 Webhook 使用了未运行的 Webhook Actions Pro 功能"

#: admin/src/components/ImportDialog.vue
msgid "%d webhook(s) already exist here (same UUID)."
msgstr "此处已存在 %d 个 Webhook（UUID 相同）。"

#: admin/src/components/ShareBuildDialog.vue
msgid "%d without a description"
msgstr "%d 项缺少说明"

#: admin/src/views/ExternalCronView.vue
msgid "%dh"
msgstr "%d 时"

#: admin/src/views/ExternalCronView.vue
msgid "%dm"
msgstr "%d 分"

#: admin/src/views/ExternalCronView.vue
msgid "%ds"
msgstr "%d 秒"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "%s Retry"
msgstr "第 %s 次重试"

#: admin/src/components/WebhookForm.vue
msgid "%s auth"
msgstr "%s 认证"

#: admin/src/views/AiBuilderView.vue
msgid "%s credits left"
msgstr "剩余 %s 积分"

#: admin/src/views/ApiTokensView.vue
msgid "%s…"
msgstr "%s…"

#: admin/src/components/LogsTable.vue
msgid "(last attempt)"
msgstr "（上次尝试）"

#: admin/src/views/ProView.vue
msgid "(local, not counted)"
msgstr "（本地，不计入）"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "(no output)"
msgstr "（无输出）"

#: admin/src/components/MappingEditor.vue
msgid "(param name)"
msgstr "（参数名称）"

#: admin/src/components/MappingEditor.vue
msgid "(value)"
msgstr "（值）"

#: admin/src/components/AiStepControls.vue
msgid "+ New credential"
msgstr "+ 新建凭据"

#: admin/src/views/SettingsView.vue
msgid "5 (plugin default)"
msgstr "5（插件默认）"

#: src/Services/Export/BuildImporter.php:242
msgid "A chain in this file has no name and was not imported."
msgstr "此文件中有一条链没有名称，未被导入。"

#: src/Api/ChainsController.php:162
#: src/Api/ChainsController.php:198
msgid "A chain with that name already exists."
msgstr "已存在同名的链。"

#: src/Abilities/WriteAbilities.php:193
msgid "A chain with this name already exists."
msgstr "已存在同名的链。"

#: src/Abilities/WriteAbilities.php:317
msgid ""
"A condition rule is missing \"field\" — a dot-path into the trigger payload "
"(use get_trigger_schema to see the available fields)."
msgstr "条件规则缺少 \"field\"——指向触发器数据的点路径（使用 get_trigger_schema 查看可用字段）。"

#: src/Api/CredentialsController.php:265
#: src/Api/CredentialsController.php:314
msgid "A credential with this name already exists."
msgstr "已存在同名的凭据。"

#: src/Services/Export/BuildImporter.php:269
#. translators: %s: chain name.
#, php-format
msgid ""
"A hop of \"%s\" points at a webhook that is not in this file, and was left "
"out."
msgstr "“%s”中的一跳指向了不在此文件中的 Webhook，已被略过。"

#: src/Services/Export/BuildImporter.php:274
#. translators: %s: chain name.
#, php-format
msgid ""
"A hop of \"%s\" was left out because it would have made the chain loop back "
"on itself."
msgstr "“%s”中的一跳已被略过，因为它会让链形成循环。"

#: src/Api/AgentController.php:380
msgid "A message is required."
msgstr "消息为必填项。"

#: admin/src/views/VaultView.vue
msgid "A named header such as X-API-Key"
msgstr "命名标头，例如 X-API-Key"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid ""
"A new delivery attempt has been queued. The result will appear in this "
"log's attempt history on the next cron run."
msgstr "新的投递尝试已加入队列。结果将在下次 cron 运行时出现在该日志的尝试历史中。"

#: admin/src/components/RotateTokenDialog.vue
msgid ""
"A new token will be generated. The current token will be %1$simmediately "
"invalidated%2$s and all existing integrations using it will stop working."
msgstr "将生成一个新令牌。当前令牌将%1$s立即失效%2$s，所有使用它的现有集成都将停止工作。"

#: src/Api/WebhooksController.php:572
msgid "A payload object is required for custom source."
msgstr "自定义源需要一个数据对象。"

#: src/Api/AgentController.php:263
msgid "A provider and model are required."
msgstr "必须提供提供商和模型。"

#: src/Api/CredentialsController.php:428
msgid "A secret value is required."
msgstr "密钥值为必填项。"

#: src/Abilities/TestAbilities.php:73
msgid "A url or webhook_id is required."
msgstr "必须提供 url 或 webhook_id。"

#: src/Api/ChainsController.php:257
msgid "A webhook cannot trigger itself."
msgstr "Webhook 不能触发自身。"

#: admin/src/views/SettingsView.vue
msgid "AI Builder"
msgstr "AI 构建器"

#: admin/src/views/ProView.vue
msgid "AI credits included — hosted AI, no API keys needed"
msgstr "AI 积分已包含 — 托管 AI，无需 API 密钥"

#: admin/src/views/ProView.vue
msgid "AI credits included, more sites, advanced conditions, and priority support."
msgstr "包含 AI 积分、更多站点、高级条件和优先支持。"

#: admin/src/views/ActivityView.vue
msgid "AI reasoning"
msgstr "AI 推理"

#: admin/src/components/ConditionsEditor.vue
msgid "ALL (AND)"
msgstr "全部（AND）"

#: admin/src/components/ConditionsEditor.vue
msgid "AND"
msgstr "AND"

#: admin/src/components/ConditionsEditor.vue
msgid "ANY (OR)"
msgstr "任意（OR）"

#: admin/src/App.vue admin/src/views/ActivityView.vue admin/src/views/ApiTokensView.vue
msgid "API Tokens"
msgstr "API 令牌"

#: admin/src/components/AiProviderSettings.vue
msgid "API key"
msgstr "API 密钥"

#: admin/src/views/VaultView.vue
msgid "API key (custom header)"
msgstr "API 密钥（自定义标头）"

#: admin/src/components/AiStepControls.vue
msgid "API key (header)"
msgstr "API 密钥（标头）"

#: src/Api/ApiTokensController.php:199
#: src/Api/ApiTokensController.php:245
#: src/Api/ApiTokensController.php:269
msgid "API token not found."
msgstr "未找到 API 令牌。"

#: admin/src/views/ActivityView.vue
msgid "Action"
msgstr "操作"

#: admin/src/views/SettingsView.vue
msgid "Action Scheduler"
msgstr "Action Scheduler"

#: admin/src/views/SettingsView.vue
msgid ""
"Action Scheduler detected — queue processing is managed automatically. You "
"can still configure an external cron URL as a direct trigger."
msgstr "检测到 Action Scheduler — 队列处理将自动管理。你仍可配置外部 cron URL 作为直接触发器。"

#: admin/src/components/LogsTable.vue admin/src/views/ApiTokensView.vue admin/src/views/VaultView.vue
msgid "Actions"
msgstr "操作"

#: admin/src/views/ProView.vue
msgid "Activate %1$sWebhook Actions Pro%2$s to continue."
msgstr "启用 %1$sWebhook Actions Pro%2$s 以继续。"

#: admin/src/views/ProView.vue
msgid "Activate License"
msgstr "激活许可证"

#: admin/src/views/ProView.vue
msgid "Activate Plugin"
msgstr "启用插件"

#: admin/src/views/WebhooksList.vue
msgid "Activate Pro"
msgstr "激活 Pro"

#: admin/src/views/ProView.vue admin/src/views/WebhooksList.vue
msgid "Activating…"
msgstr "正在启用…"

#: admin/src/components/AiProviderSettings.vue admin/src/components/TriggerSchemaPanel.vue admin/src/components/WebhookCardContent.vue admin/src/views/ExternalCronView.vue admin/src/views/ProView.vue admin/src/views/SettingsView.vue
msgid "Active"
msgstr "已激活"

#: admin/src/components/HealthStatusBar.vue
msgid "Active/Total"
msgstr "活动/总计"

#: admin/src/App.vue admin/src/views/ActivityView.vue
msgid "Activity"
msgstr "活动"

#: admin/src/views/ProView.vue
msgid "Activity Log"
msgstr "活动日志"

#: admin/src/views/ActivityView.vue
msgid "Activity entries older than %d day have been deleted."
msgid_plural "Activity entries older than %d days have been deleted."
msgstr[0] "已删除早于 %d 天的活动条目。"

#: src/Api/ActivityLogController.php:54
msgid "Activity log entry ID."
msgstr "活动日志条目 ID。"

#: src/Api/ActivityLogController.php:120
msgid "Activity log entry not found."
msgstr "未找到活动日志条目。"

#: admin/src/views/ActivityView.vue
msgid "Actor"
msgstr "操作者"

#: admin/src/components/TriggerSchemaPanel.vue admin/src/components/TriggerSelect.vue
msgid "Add"
msgstr "添加"

#: admin/src/components/MappingEditor.vue
msgid "Add Mapping"
msgstr "添加映射"

#: admin/src/views/WebhooksList.vue
msgid "Add Webhook"
msgstr "添加 Webhook"

#: src/Abilities/AbilityCatalog.php:258
msgid "Add a chain link"
msgstr "添加链环节"

#: admin/src/views/VaultView.vue
msgid "Add a credential to securely reuse it across webhooks."
msgstr "添加凭据，以便在各个 Webhook 中安全地重复使用。"

#: src/Abilities/AbilityCatalog.php:259
msgid ""
"Add a source→target edge to a chain. Rejected if it would create a cycle "
"across any chain."
msgstr "向链中添加一条 源→目标 边。如果会在任何链中产生循环则被拒绝。"

#: admin/src/components/AiProviderSettings.vue
msgid ""
"Add an API key for one or more providers. The active provider is used "
"first; if it is rate-limited or fails, the agent automatically falls back "
"to another connected provider."
msgstr "为一个或多个提供商添加 API 密钥。优先使用当前启用的提供商；如果其被限流或失败，代理会自动切换到另一个已连接的提供商。"

#: admin/src/components/ConditionsEditor.vue
msgid "Add condition"
msgstr "添加条件"

#: admin/src/components/AiStepControls.vue
msgid "Add credential & retry"
msgstr "添加凭据并重试"

#: admin/src/views/VaultView.vue
msgid "Add first credential"
msgstr "添加第一个凭据"

#: admin/src/components/ConditionsEditor.vue
msgid "Add group"
msgstr "添加组"

#: admin/src/components/MappingEditor.vue
msgid "Add mapping for this field"
msgstr "为该字段添加映射"

#: admin/src/components/KeyValueEditor.vue
msgid "Add row"
msgstr "添加行"

#: admin/src/components/ConditionsEditor.vue
msgid "Add rule"
msgstr "添加规则"

#: admin/src/views/SettingsView.vue
msgid "Add this line to your server's crontab: %1$scrontab -e%2$s"
msgstr "将此行添加到服务器的 crontab：%1$scrontab -e%2$s"

#: admin/src/components/WebhookForm.vue
msgid "Additional URL Query Parameters"
msgstr "额外的 URL 查询参数"

#: admin/src/views/SettingsView.vue
msgid ""
"Adds a diagnostic panel to Build with AI where you can read and export the "
"recorded trace. Independent of logging above."
msgstr "在“用 AI 构建”中添加诊断面板，可查看并导出已记录的追踪信息。与上面的日志开关相互独立。"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Adds your prompts and the assistant's replies so the recipient can see how "
"this build was made. Read results are never included and obvious secrets "
"are masked, but the conversation may still mention details about your site "
"— review before sharing publicly."
msgstr "附上你的提示词与助手的回复，让接收方了解此配置的构建过程。读取结果从不包含在内，明显的密钥会被遮蔽，但对话仍可能提到你站点的细节——公开分享前请先检查。"

#: admin/src/views/SettingsView.vue
msgid "Admin Menu"
msgstr "管理菜单"

#: admin/src/views/SettingsView.vue
msgid "Admin action history older than this will be automatically deleted."
msgstr "早于此期限的管理操作历史将被自动删除。"

#: admin/src/views/ActivityView.vue
msgid "Admin and API action history"
msgstr "管理员和 API 操作历史"

#: admin/src/components/WebhookForm.vue
msgid "After saving, the value is encrypted at rest and never shown again."
msgstr "保存后，该值将被静态加密，且绝不会再次显示。"

#: admin/src/views/ProView.vue
msgid "Agency"
msgstr "代理版"

#: admin/src/components/CreateTokenDialog.vue
msgid "Agent (AI)"
msgstr "Agent（AI）"

#: admin/src/views/ActivityView.vue
msgid "All actions"
msgstr "所有操作"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "All chains"
msgstr "所有链"

#: admin/src/views/SettingsView.vue
msgid "All logs have been cleared"
msgstr "所有日志已清除"

#: src/Api/SettingsController.php:224
msgid "All logs have been cleared."
msgstr "所有日志已清除。"

#: admin/src/views/LogsList.vue
msgid "All statuses"
msgstr "所有状态"

#: admin/src/components/RotateTokenDialog.vue
msgid "Also update expiry"
msgstr "同时更新到期时间"

#: admin/src/components/TokenCreatedDialog.vue
msgid ""
"Alternatively, %1$sAuthorization: Bearer &lt;token&gt;%2$s works on most "
"servers (requires %1$sCGIPassAuth On%2$s on Apache)."
msgstr ""
"或者，%1$sAuthorization: Bearer &lt;token&gt;%2$s 在大多数服务器上有效（在 Apache 上需要 "
"%1$sCGIPassAuth On%2$s）。"

#: admin/src/views/VaultView.vue
msgid ""
"An %1$sagent%2$s API token can assign credentials to webhooks but can never "
"read their values."
msgstr "%1$sagent%2$s API 令牌可以将凭据分配给 Webhook，但绝不能读取它们的值。"

#: src/Api/AgentController.php:188
msgid "An API key is required to connect this provider."
msgstr "连接此提供商需要 API 密钥。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Anonymize my site address"
msgstr "匿名化我的站点地址"

#: admin/src/components/ui/UpgradeBadge.vue
msgid "Any unsaved changes on this form will be lost."
msgstr "此表单上任何未保存的更改都将丢失。"

#: admin/src/components/WebhookForm.vue
msgid ""
"Appended to the URL alongside the JSON body. Values support dot-notation "
"paths or static strings."
msgstr "与 JSON 主体一起附加到 URL。值支持点号路径或静态字符串。"

#: src/Services/WpAppPasswordService.php:72
msgid "Application Passwords are disabled for your user account."
msgstr "您的用户账户已禁用应用程序密码。"

#: src/Services/WpAppPasswordService.php:64
msgid ""
"Application Passwords are not available on this site. They require HTTPS "
"(or a local development environment)."
msgstr "此站点不支持应用程序密码。需要 HTTPS（或本地开发环境）。"

#: src/Services/WpAppPasswordService.php:47
msgid "Application Passwords require WordPress 5.6 or newer."
msgstr "应用程序密码需要 WordPress 5.6 或更高版本。"

#: admin/src/views/SettingsView.vue
msgid "Archive logs before deletion"
msgstr "删除前归档日志"

#: admin/src/views/SettingsView.vue
msgid "Are you sure you want to delete all %d log?"
msgid_plural "Are you sure you want to delete all %d logs?"
msgstr[0] "确定要删除全部 %d 条日志吗？"

#: src/Api/LogsController.php:110
msgid "Array of log IDs to retry."
msgstr "要重试的日志 ID 数组。"

#: src/Abilities/AbilityCatalog.php:214
msgid "Assign a vault credential to a webhook"
msgstr "将保险库凭据分配给 Webhook"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Asynchronous delivery"
msgstr "异步投递"

#: admin/src/views/AiBuilderView.vue
msgid ""
"Asynchronous: queued and delivered in the background on the next cron run, "
"with automatic retries — it doesn’t slow the triggering request, but "
"nothing is sent until a working cron runs. Synchronous: delivered "
"instantly, inline with the triggering request — it works without any cron, "
"at the cost of a little added latency. Toggle to switch."
msgstr ""
"异步：进入队列并在下次 cron 运行时在后台投递，自动重试 — 不会拖慢触发请求，但在 cron "
"正常运行之前不会发送任何内容。同步：立即投递，在触发请求内完成 — 无需 cron 即可工作，代价是略微增加延迟。切换开关即可更换。"

#: admin/src/components/LogsTable.vue
msgid "Attempt #%d"
msgstr "第 #%d 次尝试"

#: admin/src/views/QueueView.vue
msgid "Attempt %1$d/%2$d"
msgstr "第 %1$d/%2$d 次尝试"

#: admin/src/components/LogsTable.vue
msgid "Attempt History"
msgstr "尝试历史"

#: admin/src/components/LogsTable.vue
msgid "Attempted At"
msgstr "尝试时间"

#: src/Api/AuthHelper.php:42
msgid ""
"Authentication required. Provide a valid API token via X-FSWA-Token header, "
"Authorization: Bearer token, or api_token query parameter."
msgstr ""
"需要身份验证。请通过 X-FSWA-Token 标头、Authorization: Bearer token 或 api_token "
"查询参数提供有效的 API 令牌。"

#: admin/src/components/WebhookForm.vue
msgid "Authorization (optional)"
msgstr "授权（可选）"

#: src/Api/WebhooksController.php:771
msgid "Authorization header value."
msgstr "Authorization 标头值。"

#: admin/src/views/VaultView.vue
msgid "Authorization: Basic <base64(user:pass)> — incl. WP Application Passwords"
msgstr "Authorization: Basic <base64(user:pass)> — 包含 WP 应用程序密码"

#: admin/src/components/AiProviderSettings.vue
msgid "Auto"
msgstr "自动"

#: admin/src/components/AiProviderSettings.vue
msgid ""
"Auto prefers your WordPress connectors when available, otherwise your own "
"keys."
msgstr "“自动”优先使用可用的 WordPress 连接器，否则使用您自己的密钥。"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Automatically enrich payload with user profile information"
msgstr "自动用用户资料信息丰富数据"

#: admin/src/components/BuildPublishFields.vue
msgid "Automation"
msgstr "自动化"

#: admin/src/views/ProView.vue
msgid "Automation Chains"
msgstr "自动化链"

#: admin/src/components/MappingEditor.vue
msgid "Available Fields"
msgstr "可用字段"

#: admin/src/components/HealthStatusBar.vue
msgid "Avg attempts"
msgstr "平均尝试次数"

#: admin/src/components/ExternalCronChart.vue
msgid "Avg ping"
msgstr "平均 ping"

#: admin/src/components/HealthStatusBar.vue
msgid "Avg response"
msgstr "平均响应"

#: admin/src/views/WebhookEdit.vue admin/src/views/WebhookLogs.vue
msgid "Back to webhooks"
msgstr "返回 Webhook 列表"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Backoff Strategy"
msgstr "退避策略"

#: admin/src/components/WebhookForm.vue
msgid "Base Delay (s)"
msgstr "基础延迟（秒）"

#: admin/src/views/SettingsView.vue
msgid "Base Delay (seconds)"
msgstr "基础延迟（秒）"

#: admin/src/components/WebhookForm.vue
msgid ""
"Base seconds used to calculate the retry delay. Acts as a multiplier for "
"exponential, interval for linear, and constant wait for fixed."
msgstr "用于计算重试延迟的基础秒数。在指数策略中作为乘数，在线性策略中作为间隔，在固定策略中作为恒定等待。"

#: admin/src/components/AiStepControls.vue
msgid "Basic auth"
msgstr "Basic 认证"

#: admin/src/views/VaultView.vue
msgid "Basic auth (user + password)"
msgstr "Basic 认证（用户名 + 密码）"

#: src/Api/CredentialsController.php:417
msgid "Basic auth requires a username and password."
msgstr "Basic 认证需要用户名和密码。"

#: admin/src/components/AiStepControls.vue
msgid "Bearer token"
msgstr "Bearer 令牌"

#: admin/src/views/VaultView.vue
msgid "Bearer token (PAT)"
msgstr "Bearer 令牌（PAT）"

#: src/Api/ChainsController.php:254
msgid "Both source_webhook_id and target_webhook_id are required."
msgstr "source_webhook_id 和 target_webhook_id 均为必填项。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Browse Library"
msgstr "浏览库"

#: admin/src/views/AiBuilderView.vue
msgid "Build"
msgstr "构建"

#: admin/src/components/AiStepPanel.vue admin/src/views/AiBuilderView.vue
msgid "Build complete."
msgstr "构建完成。"

#: admin/src/components/AiPlanStepper.vue
msgid "Build progress"
msgstr "构建进度"

#: admin/src/components/BuildPublishFields.vue
msgid "Build title"
msgstr "配置标题"

#: admin/src/App.vue admin/src/views/AiBuilderView.vue
msgid "Build with AI"
msgstr "用 AI 构建"

#: admin/src/views/ProView.vue
msgid "Build with AI (bring your own API key)"
msgstr "使用 AI 构建（自备 API 密钥）"

#: admin/src/components/BuildPublishProgress.vue
msgid "Building your page…"
msgstr "正在生成你的页面…"

#: admin/src/views/ProView.vue
msgid "Business"
msgstr "商业版"

#: admin/src/components/AiProviderSettings.vue
msgid "Buy credits"
msgstr "购买积分"

#: admin/src/views/VaultView.vue
msgid ""
"By default the encryption key is generated and stored in the database. For "
"stronger protection — so a database-only dump can't decrypt secrets — move "
"the key into %1$swp-config.php%2$s:"
msgstr ""
"默认情况下，加密密钥会生成并存储在数据库中。为获得更强的保护 — 使仅有数据库转储无法解密密钥 — 请将密钥移入 "
"%1$swp-config.php%2$s："

#: admin/src/components/AiProviderSettings.vue admin/src/components/ChangeExpiryDialog.vue admin/src/components/CreateTokenDialog.vue admin/src/components/ExportDialog.vue admin/src/components/ImportDialog.vue admin/src/components/LogsTable.vue admin/src/components/RotateTokenDialog.vue admin/src/components/ShareBuildDialog.vue admin/src/components/WebhookForm.vue admin/src/components/ui/UpgradeBadge.vue admin/src/views/ActivityView.vue admin/src/views/AiBuilderView.vue admin/src/views/ApiTokensView.vue admin/src/views/ProView.vue admin/src/views/SettingsView.vue admin/src/views/VaultView.vue admin/src/views/WebhooksList.vue
msgid "Cancel"
msgstr "取消"

#: src/Api/QueueController.php:335
msgid "Cannot delete a job that is currently being processed."
msgstr "无法删除正在处理中的任务。"

#: admin/src/components/ConditionsEditor.vue
msgid "Cannot evaluate"
msgstr "无法评估"

#: admin/src/views/SettingsView.vue
msgid ""
"Cap on the wait between retries. Exponential backoff grows 2ⁿ × base — "
"without a cap delays would grow indefinitely. Any calculated delay above "
"this value is clamped to it."
msgstr "重试之间等待时间的上限。指数退避按 2ⁿ × 基础值增长 — 若无上限，延迟将无限增长。任何超过此值的计算延迟都会被限制到此值。"

#: admin/src/components/WebhookForm.vue
msgid ""
"Cap on the wait between retries. Prevents exponential backoff from growing "
"indefinitely — any delay above this value is clamped to it."
msgstr "重试之间等待的上限。防止指数退避无限增长 — 超过此值的任何延迟都会被限制到该值。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Capture an example payload to enable live preview."
msgstr "捕获示例数据以启用实时预览。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Captured"
msgstr "已捕获"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Captured + Mapping"
msgstr "已捕获 + 映射"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Captured + Mapping + Pre-dispatch Glue"
msgstr "捕获数据 + 字段映射 + 发送前 Glue"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Captured + Mapping + Pre-dispatch Glue + Post-dispatch Glue"
msgstr "捕获数据 + 字段映射 + 发送前 Glue + 发送后 Glue"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Captured example payloads are anonymized automatically: names, addresses, "
"emails, phone numbers and IP addresses are replaced with placeholders, so "
"the field mapping still previews without carrying anyone's data."
msgstr "捕获的示例数据会自动匿名化：姓名、地址、邮箱、电话号码和 IP 地址都会替换为占位值，字段映射仍可正常预览，但不会带走任何人的数据。"

#: admin/src/components/ExportDialog.vue
msgid ""
"Captured example payloads hold whatever a real visitor submitted — names, "
"addresses, emails, phone numbers, IP addresses. They are replaced with "
"placeholders unless you tick this, which you only want for a private backup "
"of your own site."
msgstr ""
"捕获的示例数据包含真实访客提交的一切内容——姓名、地址、邮箱、电话号码、IP "
"地址。除非勾选此项，否则它们会被替换为占位值；只有为自己站点做私人备份时才需要保留原值。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Captured payload with field mapping applied"
msgstr "应用了字段映射的已捕获数据"

#: admin/src/components/MappingEditor.vue
msgid "Cast"
msgstr "转换"

#: admin/src/components/ChainPicker.vue admin/src/components/ShareBuildDialog.vue
msgid "Chain"
msgstr "链"

#: admin/src/components/ChainPicker.vue
msgid "Chain description (optional)"
msgstr "链说明（可选）"

#: admin/src/components/LogsTable.vue admin/src/views/QueueView.vue
msgid "Chain link #%1$s — %2$s"
msgstr "链接 #%1$s — %2$s"

#: admin/src/components/LogsTable.vue admin/src/views/QueueView.vue
msgid "Chain link #%s (deleted)"
msgstr "链接 #%s（已删除）"

#: src/Api/ChainsController.php:286
msgid "Chain link not found."
msgstr "未找到链接。"

#: admin/src/components/WebhookForm.vue
msgid ""
"Chain mode links this webhook to upstream webhooks, which requires a saved "
"webhook record. %1$sSave the webhook first%2$s (with or without WP-hook "
"triggers — they'll be cleared when you pick upstream webhooks), then choose "
"your chain sources on the next screen."
msgstr ""
"链模式将该 Webhook 与上游 Webhook 关联，这需要已保存的 Webhook 记录。%1$s请先保存 Webhook%2$s（是否带 "
"WP-hook 触发器均可 — 选择上游 Webhook 时它们会被清除），然后在下一屏选择你的链来源。"

#: admin/src/views/WebhooksList.vue
msgid "Chain name"
msgstr "链名称"

#: src/Abilities/WriteAbilities.php:189
#: src/Api/ChainsController.php:159
#: src/Api/ChainsController.php:194
msgid "Chain name is required."
msgstr "链名称为必填项。"

#: src/Api/ChainsController.php:120
#: src/Api/ChainsController.php:187
#: src/Api/ChainsController.php:227
#: src/Api/ChainsController.php:248
msgid "Chain not found."
msgstr "未找到链。"

#: admin/src/views/ActivityView.vue
msgid "Chains"
msgstr "链"

#: admin/src/components/ExportDialog.vue
msgid "Chains (member webhooks included automatically)"
msgstr "链（自动包含其中的 Webhook）"

#: admin/src/views/ApiTokensView.vue
msgid "Change expiry"
msgstr "更改到期时间"

#: admin/src/components/ChangeExpiryDialog.vue
msgid "Change expiry: %s"
msgstr "更改到期时间：%s"

#: admin/src/views/AiBuilderView.vue
msgid "Change model"
msgstr "更换模型"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Change what this build contains — add or remove a webhook — to publish it "
"as a separate page."
msgstr "更改此配置的内容（添加或移除 webhook），即可将其作为独立页面发布。"

#: admin/src/views/ActivityView.vue
msgid "Changes"
msgstr "更改"

#: admin/src/components/BuildPublishProgress.vue
msgid "Checking whether the page is live…"
msgstr "正在检查页面是否已上线…"

#: admin/src/components/AiStepControls.vue
msgid "Choose a credential"
msgstr "选择凭据"

#: admin/src/components/TriggerSchemaPanel.vue
msgid ""
"Choose which payload the conditions read from: Original is the raw payload "
"before field mapping; Transformed is the payload after mapping is applied."
msgstr "选择条件读取的数据：原始是字段映射前的原始数据；转换后是应用映射后的数据。"

#: admin/src/views/SettingsView.vue
msgid "Clear All Logs"
msgstr "清除所有日志"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Clear assignment"
msgstr "清除分配"

#: admin/src/views/ActivityView.vue
msgid "Clear filters"
msgstr "清除筛选"

#: admin/src/views/LogsList.vue
msgid "Clear selection"
msgstr "清除选择"

#: admin/src/components/FieldSelector.vue
msgid "Click to select or browse • + to select an array/object"
msgstr "点击以选择或浏览 • + 选择数组/对象"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Client Error"
msgstr "客户端错误"

#: admin/src/components/LogsTable.vue admin/src/components/PayloadGlueDrawer.vue admin/src/components/TestWebhookDrawer.vue admin/src/components/ui/Dialog.vue admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Close"
msgstr "关闭"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Code Glue"
msgstr "Code Glue"

#: admin/src/components/ImportDialog.vue
msgid ""
"Code Glue is custom PHP that runs on your site when these webhooks fire. "
"Only import builds from a source you trust — review each snippet below."
msgstr "Code Glue 是这些 Webhook 触发时在你站点上运行的自定义 PHP 代码。只导入你信任来源的配置——请先查看下面的每个代码片段。"

#: src/Api/TriggersController.php:144
msgid "Comments"
msgstr "评论"

#: admin/src/views/ProView.vue
msgid "Community support forum"
msgstr "社区支持论坛"

#: src/Abilities/WriteAbilities.php:140
msgid ""
"Condition groups require a Pro license — propose a single simple rule "
"instead."
msgstr "条件组需要 Pro 许可证——请改为提出单条简单规则。"

#: src/Api/SchemasController.php:308
msgid "Condition groups require a Pro license."
msgstr "条件组需要 Pro 许可证。"

#: admin/src/views/ProView.vue
msgid "Condition groups with AND / OR logic"
msgstr "支持 AND / OR 逻辑的条件组"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Conditions"
msgstr "条件"

#: admin/src/components/ConditionsEditor.vue
msgid ""
"Conditions are evaluated against the payload — use the 'Evaluate conditions "
"against' toggle above to choose original or transformed."
msgstr "条件根据数据进行评估 — 使用上方的“评估条件依据”开关选择原始或转换后。"

#: src/Api/LogsController.php:404
msgid "Conditions are not met with current settings — event would be skipped."
msgstr "当前设置不满足条件 — 事件将被跳过。"

#: admin/src/views/SettingsView.vue
msgid "Configure plugin behavior"
msgstr "配置插件行为"

#: admin/src/views/SettingsView.vue
msgid ""
"Configure retry attempts and backoff delay strategy for failed webhooks, "
"globally and per webhook."
msgstr "为失败的 Webhook 配置重试次数和退避延迟策略，可全局设置或按 Webhook 设置。"

#: admin/src/components/AiStepControls.vue
msgid "Confirm & run"
msgstr "确认并运行"

#: admin/src/components/AiProviderSettings.vue
msgid "Connect"
msgstr "连接"

#: admin/src/views/AiBuilderView.vue
msgid "Connect an AI provider"
msgstr "连接 AI 提供商"

#: admin/src/components/BuildPublishFields.vue
msgid "Connects WordPress to a named service — a CRM, a spreadsheet, a chat app."
msgstr "把 WordPress 连接到某个具体服务——CRM、电子表格或聊天工具。"

#: admin/src/components/AiStepControls.vue
msgid "Continue"
msgstr "继续"

#: admin/src/components/AiStepPanel.vue
msgid "Continue build"
msgstr "继续构建"

#: src/Api/AgentController.php:466
#: src/Services/Ai/AgentOrchestrator.php:78
#: src/Services/Ai/PlanExecutor.php:57
#: src/Services/Ai/PlanExecutor.php:147
#: src/Services/Ai/PlanExecutor.php:390
#: src/Services/Ai/PlanExecutor.php:462
msgid "Conversation not found."
msgstr "未找到对话。"

#: admin/src/components/ChatMarkdown.vue
msgid "Copied"
msgstr "已复制"

#: admin/src/components/ChatMarkdown.vue
msgid "Copy"
msgstr "复制"

#: admin/src/components/LogsTable.vue admin/src/views/QueueView.vue
msgid "Copy Event UUID"
msgstr "复制事件 UUID"

#: admin/src/views/QueueView.vue
msgid "Copy URL"
msgstr "复制 URL"

#: admin/src/components/LogsTable.vue admin/src/components/WebhookCardContent.vue admin/src/views/QueueView.vue
msgid "Copy X-Webhook-Id"
msgstr "复制 X-Webhook-Id"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Copy code"
msgstr "复制代码"

#: admin/src/components/WebhookCardContent.vue
msgid "Copy endpoint URL"
msgstr "复制端点 URL"

#: admin/src/components/LogsTable.vue
msgid "Copy headers"
msgstr "复制标头"

#: admin/src/components/LogsTable.vue
msgid "Copy original payload"
msgstr "复制原始数据"

#: admin/src/components/LogsTable.vue
msgid "Copy payload"
msgstr "复制数据"

#: admin/src/components/LogsTable.vue
msgid "Copy response body"
msgstr "复制响应主体"

#: admin/src/views/QueueView.vue
msgid "Copy scheduled time"
msgstr "复制计划时间"

#: admin/src/components/TokenCreatedDialog.vue
msgid "Copy to clipboard"
msgstr "复制到剪贴板"

#: admin/src/components/WebhookCardContent.vue admin/src/views/QueueView.vue
msgid "Copy trigger name"
msgstr "复制触发器名称"

#: admin/src/views/WebhooksList.vue
msgid "Could not activate Pro. Activate it from the Plugins screen."
msgstr "无法激活 Pro。请在“插件”页面中激活。"

#: admin/src/components/ImportDialog.vue
msgid "Could not create the Application Password."
msgstr "无法创建应用程序密码。"

#: admin/src/components/AiProviderSettings.vue
msgid "Could not load models for this key — check that the key is valid."
msgstr "无法加载此密钥的模型——请检查密钥是否有效。"

#: src/Api/QueueController.php:270
msgid "Could not lock job for processing."
msgstr "无法锁定任务以进行处理。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Could not read this build."
msgstr "无法读取此配置。"

#: admin/src/components/ImportDialog.vue
msgid ""
"Could not read this file. Make sure it is a build JSON exported from "
"Webhook Actions."
msgstr "无法读取此文件。请确认它是从 Webhook Actions 导出的配置 JSON。"

#: admin/src/components/AiStepControls.vue
msgid "Create & assign"
msgstr "创建并分配"

#: admin/src/components/AiStepControls.vue
msgid "Create & continue"
msgstr "创建并继续"

#: admin/src/components/CreateTokenDialog.vue
msgid "Create API Token"
msgstr "创建 API 令牌"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhookEdit.vue
msgid "Create Webhook"
msgstr "创建 Webhook"

#: admin/src/components/BuildPublishFields.vue
msgid "Create a HubSpot deal when a WooCommerce order is placed"
msgstr "WooCommerce 下单时在 HubSpot 中创建交易"

#: admin/src/components/ImportDialog.vue
msgid "Create a WP Application Password"
msgstr "创建 WP 应用程序密码"

#: admin/src/components/AiStepControls.vue
msgid "Create a WP Application Password for me"
msgstr "为我创建 WP 应用程序密码"

#: src/Abilities/AbilityCatalog.php:229
msgid "Create a WordPress Application Password credential"
msgstr "创建 WordPress 应用程序密码凭据"

#: src/Abilities/AbilityCatalog.php:244
msgid ""
"Create a named chain that wires 2xx completions of one webhook to "
"downstream webhooks."
msgstr "创建一个命名链，将一个 Webhook 的 2xx 完成结果接入下游 Webhook。"

#: admin/src/components/ImportDialog.vue
msgid "Create a new vault credential"
msgstr "在保险库中新建凭据"

#: src/Abilities/AbilityCatalog.php:118
msgid ""
"Create a new webhook (always created DISABLED until the user enables it). "
"Provide name, endpoint_url, http_method and triggers."
msgstr ""
"创建新的 Webhook（始终以“已禁用”状态创建，直到用户启用）。请提供 name、endpoint_url、http_method 和 "
"triggers。"

#: admin/src/views/ApiTokensView.vue
msgid "Create a token to enable programmatic API access."
msgstr "创建令牌以启用程序化 API 访问。"

#: src/Abilities/AbilityCatalog.php:117
msgid "Create a webhook"
msgstr "创建 Webhook"

#: src/Abilities/AbilityCatalog.php:243
msgid "Create a webhook chain"
msgstr "创建 Webhook 链"

#: admin/src/views/VaultView.vue
msgid "Create credential"
msgstr "创建凭据"

#: admin/src/views/ApiTokensView.vue
msgid "Create first token"
msgstr "创建第一个令牌"

#: admin/src/components/CreateTokenDialog.vue
msgid "Create token"
msgstr "创建令牌"

#: admin/src/views/WebhooksList.vue
msgid "Create your first webhook"
msgstr "创建你的第一个 Webhook"

#: admin/src/components/LogsTable.vue admin/src/views/ApiTokensView.vue admin/src/views/VaultView.vue
msgid "Created"
msgstr "创建时间"

#: admin/src/components/ImportDialog.vue
msgid "Created “%s”"
msgstr "已创建“%s”"

#: admin/src/components/CreateTokenDialog.vue admin/src/components/ImportDialog.vue
msgid "Creating…"
msgstr "正在创建…"

#: src/Api/WebhooksController.php:830
msgid "Creation date."
msgstr "创建日期。"

#: src/Abilities/TestAbilities.php:233
msgid "Credential could not be decrypted."
msgstr "无法解密凭据。"

#: admin/src/components/ImportDialog.vue admin/src/components/WebhookForm.vue
msgid "Credential name"
msgstr "凭据名称"

#: admin/src/components/AiStepControls.vue
msgid "Credential name (e.g. WP REST admin)"
msgstr "凭据名称（例如 WP REST admin）"

#: admin/src/components/AiStepControls.vue
msgid "Credential name (e.g. n8n auth)"
msgstr "凭据名称（例如 n8n auth）"

#: src/Api/CredentialsController.php:257
#: src/Api/CredentialsController.php:311
msgid "Credential name is required."
msgstr "凭据名称为必填项。"

#: src/Abilities/TestAbilities.php:229
#: src/Abilities/WriteAbilities.php:170
#: src/Api/CredentialsController.php:459
msgid "Credential not found."
msgstr "未找到凭据。"

#: admin/src/App.vue admin/src/components/WebhookForm.vue admin/src/views/VaultView.vue
msgid "Credentials Vault"
msgstr "凭据保险库"

#: admin/src/components/AiProviderSettings.vue
msgid "Credentials source"
msgstr "凭据来源"

#: admin/src/components/BuildPublishFields.vue
msgid "Credit yourself (optional)"
msgstr "署名（可选）"

#: admin/src/components/AiProviderSettings.vue
msgid "Credits this month"
msgstr "本月积分"

#: admin/src/views/ActivityView.vue
msgid "Cron"
msgstr "Cron"

#: admin/src/views/SettingsView.vue
msgid "Cron URL"
msgstr "Cron URL"

#: src/Controllers/DispatcherController.php:117
msgid "Cron secret not configured."
msgstr "未配置 cron 密钥。"

#: admin/src/views/SettingsView.vue
msgid "Cron token regenerated. Update your crontab with the new command."
msgstr "Cron 令牌已重新生成。请使用新命令更新你的 crontab。"

#: admin/src/views/SettingsView.vue
msgid "Crontab Command"
msgstr "Crontab 命令"

#: src/Api/LogsController.php:517
msgid "Current page of results."
msgstr "结果的当前页。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Custom"
msgstr "自定义"

#: admin/src/views/VaultView.vue
msgid "Custom Authorization value"
msgstr "自定义 Authorization 值"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Custom Payload"
msgstr "自定义数据"

#: admin/src/components/WebhookForm.vue
msgid "Custom Request Headers"
msgstr "自定义请求标头"

#: admin/src/views/ProView.vue
msgid "Custom backoff strategy (exponential, linear, fixed)"
msgstr "自定义退避策略（指数、线性、固定）"

#: admin/src/components/AiStepControls.vue
msgid "Custom header"
msgstr "自定义标头"

#: src/Api/WebhooksController.php:126
msgid "Custom payload JSON (required when payload_source is custom)."
msgstr "自定义数据 JSON（当 payload_source 为 custom 时必填）。"

#: admin/src/views/SettingsView.vue
msgid "Danger Zone"
msgstr "危险区域"

#: admin/src/views/SettingsView.vue
msgid "Database Version"
msgstr "数据库版本"

#: admin/src/views/QueueView.vue
msgid "Database-backed webhook job queue"
msgstr "基于数据库的 Webhook 任务队列"

#: admin/src/components/LogsTable.vue
msgid "Date"
msgstr "日期"

#: admin/src/views/ProView.vue
msgid "Deactivate"
msgstr "停用"

#: admin/src/views/ProView.vue
msgid "Deactivate License"
msgstr "停用许可证"

#: admin/src/views/ProView.vue
msgid "Deactivate license?"
msgstr "停用许可证？"

#: admin/src/views/ProView.vue
msgid "Deactivating…"
msgstr "正在停用…"

#: admin/src/views/SettingsView.vue
msgid "Delay doubles each retry: 2ⁿ × base, capped at max"
msgstr "每次重试延迟翻倍：2ⁿ × 基础值，上限为最大值"

#: admin/src/views/SettingsView.vue
msgid "Delay grows evenly: n × base seconds"
msgstr "延迟均匀增长：n × 基础秒数"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Delay preview"
msgstr "延迟预览"

#: admin/src/components/LogsTable.vue admin/src/components/WebhookCardContent.vue admin/src/views/ActivityView.vue admin/src/views/WebhooksList.vue
msgid "Delete"
msgstr "删除"

#: admin/src/views/SettingsView.vue
msgid "Delete All Logs"
msgstr "删除所有日志"

#: admin/src/views/ActivityView.vue
msgid "Delete Old Activity"
msgstr "删除旧活动"

#: src/Abilities/AbilityCatalog.php:333
msgid "Delete a webhook"
msgstr "删除 Webhook"

#: admin/src/views/AiBuilderView.vue
msgid "Delete build"
msgstr "删除构建"

#: admin/src/views/WebhooksList.vue
msgid "Delete chain"
msgstr "删除链"

#: admin/src/views/WebhooksList.vue
msgid "Delete chain “%s”?"
msgstr "删除链“%s”？"

#: admin/src/views/VaultView.vue
msgid "Delete credential"
msgstr "删除凭据"

#: admin/src/views/VaultView.vue
msgid "Delete credential: %s"
msgstr "删除凭据：%s"

#: admin/src/views/ActivityView.vue
msgid "Delete entries older than"
msgstr "删除早于以下天数的记录"

#: src/Api/ActivityLogController.php:39
msgid "Delete entries older than specified days."
msgstr "删除早于指定天数的条目。"

#: admin/src/components/LogsTable.vue
msgid "Delete log?"
msgstr "删除日志？"

#: src/Api/LogsController.php:64
msgid "Delete logs older than specified days."
msgstr "删除早于指定天数的日志。"

#: admin/src/views/ActivityView.vue
msgid "Delete old"
msgstr "删除旧记录"

#: admin/src/components/AiBuildsBar.vue
msgid "Delete this build"
msgstr "删除此构建"

#: admin/src/views/AiBuilderView.vue
msgid "Delete this build?"
msgstr "删除此构建？"

#: admin/src/views/ApiTokensView.vue
msgid "Delete token"
msgstr "删除令牌"

#: admin/src/views/ApiTokensView.vue
msgid "Delete token: %s"
msgstr "删除令牌：%s"

#: admin/src/views/WebhooksList.vue
msgid "Delete “%s”?"
msgstr "删除“%s”？"

#: admin/src/views/VaultView.vue
msgid ""
"Deleting with force will detach it from %d webhook; that webhook will send "
"no Authorization header until reconfigured."
msgid_plural ""
"Deleting with force will detach it from %d webhooks; those webhooks will "
"send no Authorization header until reconfigured."
msgstr[0] "强制删除会将其从 %d 个 Webhook 分离；在重新配置之前，这些 Webhook 将不发送 Authorization 标头。"

#: admin/src/views/ApiTokensView.vue admin/src/views/VaultView.vue
msgid "Deleting…"
msgstr "正在删除…"

#: admin/src/views/ProView.vue
msgid "Delivery logs & replay"
msgstr "投递日志和重放"

#: src/Abilities/AbilityCatalog.php:79
msgid ""
"Describe a REST API route ON THIS SITE (core or any plugin) from its "
"self-declared schema: every argument with its type, description and whether "
"it is REQUIRED. ALWAYS run this before building an internal automation (a "
"webhook whose endpoint_url points at this site's own wp-json) and satisfy "
"every required argument — e.g. POST /wp/v2/users requires username, email "
"AND password, which mapping alone cannot always supply. Pass the route path "
"relative to /wp-json (e.g. \"/wp/v2/users\") and the HTTP method you plan "
"to use. Internal routes only — it cannot describe external APIs."
msgstr ""
"根据站点自身声明的 schema 描述本站点上的一条 REST API "
"路由（核心或任何插件）：每个参数的类型、描述以及是否为必填。在构建内部自动化（endpoint_url 指向本站点 wp-json 的 "
"Webhook）之前务必先运行此项，并满足每个必填参数 — 例如 POST /wp/v2/users 需要 username、email 和 "
"password，仅靠映射不一定能提供。传入相对于 /wp-json 的路由路径（例如 \"/wp/v2/users\"）以及计划使用的 HTTP "
"方法。仅限内部路由 — 无法描述外部 API。"

#: admin/src/views/AiBuilderView.vue
msgid ""
"Describe the integration or automation you want. The agent proposes a plan "
"you can edit, then builds and tests it for you."
msgstr "描述您想要的集成或自动化。代理会提出一个可编辑的计划，然后为您构建并测试。"

#: admin/src/views/AiBuilderView.vue
msgid "Describe what to build…"
msgstr "描述要构建的内容…"

#: flowsystems-webhook-actions.php
#. Description of the plugin
msgid ""
"Describe what you want in chat — the built-in AI agent plans, builds, and "
"tests your WordPress webhooks, integrations, and automations."
msgstr "在聊天中描述您的需求 — 内置 AI 代理会规划、构建并测试您的 WordPress Webhook、集成和自动化。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Described"
msgstr "已填写说明"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid "Description (optional)"
msgstr "说明（可选）"

#: src/Api/ChainsController.php:141
#: src/Api/WebhooksController.php:318
#. translators: %d: maximum character count
#, php-format
msgid "Description must be %d characters or fewer."
msgstr "说明不得超过 %d 个字符。"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Descriptions travel with the build and are saved here too — they are what "
"makes a shared build understandable to someone else."
msgstr "说明会随配置一同传递，也会保存在这里——正是它让别人能看懂你分享的配置。"

#: src/Abilities/TestAbilities.php:89
msgid "Destructive probe methods (PUT, PATCH, DELETE) require confirmation."
msgstr "破坏性探测方法（PUT、PATCH、DELETE）需要确认。"

#: admin/src/components/WebhookCardContent.vue admin/src/views/SettingsView.vue
msgid "Disabled"
msgstr "已禁用"

#: admin/src/components/WebhookForm.vue
msgid ""
"Disabled webhooks still capture payload examples for mapping and conditions "
"configuration."
msgstr "已禁用的 Webhook 仍会捕获数据示例，以供映射和条件配置使用。"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Discard"
msgstr "放弃"

#: admin/src/components/ConditionsEditor.vue
msgid "Does not match example payload"
msgstr "与示例数据不匹配"

#: admin/src/views/ProView.vue
msgid "Don't have a license yet?"
msgstr "还没有许可证？"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid "Don't show this again"
msgstr "不再显示"

#: admin/src/components/AiStepPanel.vue admin/src/components/ImportDialog.vue admin/src/components/ShareBuildDialog.vue admin/src/components/TokenCreatedDialog.vue
msgid "Done"
msgstr "完成"

#: admin/src/components/KeyValueEditor.vue
msgid "Dot-path (e.g. event.id) or static text"
msgstr "点号路径（例如 event.id）或静态文本"

#: admin/src/views/SettingsView.vue
msgid "Download Archive (ZIP)"
msgstr "下载归档（ZIP）"

#: admin/src/components/ExportDialog.vue admin/src/components/ShareBuildDialog.vue
msgid "Download JSON"
msgstr "下载 JSON"

#: admin/src/components/ExportDialog.vue
msgid ""
"Download a portable JSON build. Secrets are never included — imported auth "
"is re-linked to your vault."
msgstr "下载可移植的 JSON 配置。密钥从不包含在内——导入时授权会重新关联到你的保险库。"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Download everything this build created as a portable JSON file. Secrets are "
"never included — whoever imports it re-links auth to their own vault."
msgstr "把此配置创建的所有内容下载为可移植的 JSON 文件。密钥从不包含在内——导入者会把授权关联到自己的保险库。"

#: admin/src/views/WebhooksList.vue
msgid ""
"Downstream webhooks that lose their only trigger will be marked as orphans "
"(no trigger assigned)."
msgstr "失去唯一触发器的下游 Webhook 将被标记为孤立（未分配触发器）。"

#: admin/src/components/ImportDialog.vue
msgid "Drop a build JSON here, or click to browse"
msgstr "将配置 JSON 拖到此处，或点击浏览"

#: admin/src/components/ImportDialog.vue
msgid "Drop to import"
msgstr "松开以导入"

#: admin/src/views/QueueView.vue
msgid "Due"
msgstr "到期"

#: admin/src/views/QueueView.vue
msgid "Due Now"
msgstr "现在到期"

#: admin/src/components/LogsTable.vue
msgid "Duration"
msgstr "耗时"

#: src/Abilities/WriteAbilities.php:309
msgid "Each condition rule must be an object {field, operator, value}."
msgstr "每条条件规则必须是 {field, operator, value} 对象。"

#: admin/src/components/TriggerSchemaPanel.vue admin/src/components/WebhookCardContent.vue
msgid "Edit"
msgstr "编辑"

#: admin/src/views/WebhookEdit.vue
msgid "Edit Webhook"
msgstr "编辑 Webhook"

#: admin/src/views/WebhooksList.vue
msgid "Edit chain"
msgstr "编辑链"

#: admin/src/views/VaultView.vue
msgid "Edit credential"
msgstr "编辑凭据"

#: admin/src/components/ImportDialog.vue
msgid "Edit “%s”"
msgstr "编辑“%s”"

#: src/Abilities/AbilityCatalog.php:318
msgid "Enable (go live) or disable a webhook. Enabling requires confirmation."
msgstr "启用（上线）或禁用 Webhook。启用需要确认。"

#: src/Abilities/AbilityCatalog.php:317
msgid "Enable / disable a webhook"
msgstr "启用 / 禁用 Webhook"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid "Enable Anyway"
msgstr "仍然启用"

#: admin/src/views/ExternalCronView.vue
msgid "Enable External Cron"
msgstr "启用外部 Cron"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid "Enable Synchronous Execution?"
msgstr "启用同步执行？"

#: admin/src/components/ConditionsEditor.vue
msgid "Enable conditional dispatch"
msgstr "启用条件投递"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Enable webhook"
msgstr "启用 Webhook"

#: admin/src/components/WebhookForm.vue
msgid "Enabled Webhook"
msgstr "已启用 Webhook"

#: admin/src/components/WebhookForm.vue
msgid "Endpoint URL"
msgstr "端点 URL"

#: admin/src/components/WebhookForm.vue
msgid "Endpoint URL is required"
msgstr "端点 URL 为必填项"

#: src/Api/WebhooksController.php:248
msgid "Endpoint URL is required."
msgstr "端点 URL 为必填项。"

#: admin/src/components/WebhookForm.vue
msgid "Enter an Authorization header value first."
msgstr "请先输入 Authorization 标头值。"

#: admin/src/components/TriggerSelect.vue
msgid "Enter custom hook name..."
msgstr "输入自定义钩子名称…"

#: admin/src/views/ProView.vue
msgid "Enter your license key to unlock Pro features on this site."
msgstr "输入你的许可证密钥以在本站点解锁 Pro 功能。"

#: admin/src/components/LogsTable.vue admin/src/components/PayloadGlueDrawer.vue admin/src/components/TestWebhookDrawer.vue admin/src/views/LogsList.vue
msgid "Error"
msgstr "错误"

#: admin/src/components/LogsTable.vue
msgid "Error Message"
msgstr "错误信息"

#: admin/src/components/HealthStatusBar.vue admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Errors"
msgstr "错误"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Evaluate conditions against"
msgstr "评估条件依据"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Event Replayed"
msgstr "事件已重放"

#: admin/src/components/LogsTable.vue
msgid "Event UUID"
msgstr "事件 UUID"

#: admin/src/views/QueueView.vue
msgid "Event UUID:"
msgstr "事件 UUID："

#: src/App.php:116
msgid "Every Minute"
msgstr "每分钟"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Example payload captured"
msgstr "已捕获示例数据"

#: admin/src/components/ConditionsEditor.vue
msgid "Example payload would %1$s%2$s%3$s"
msgstr "示例数据将%1$s%2$s%3$s"

#: admin/src/components/MappingEditor.vue
msgid "Exclude entire %s"
msgstr "排除整个 %s"

#: admin/src/components/MappingEditor.vue
msgid "Exclude field"
msgstr "排除字段"

#: admin/src/components/MappingEditor.vue
msgid "Excluded Fields"
msgstr "已排除字段"

#: admin/src/views/QueueView.vue
msgid "Execute"
msgstr "执行"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Execute Now"
msgstr "立即执行"

#: admin/src/views/QueueView.vue
msgid "Execute now"
msgstr "立即执行"

#: admin/src/components/WebhookCardContent.vue
msgid "Executes synchronously (blocking)"
msgstr "同步执行（阻塞）"

#: admin/src/views/ApiTokensView.vue
msgid "Expired"
msgstr "已过期"

#: admin/src/views/ApiTokensView.vue
msgid "Expires"
msgstr "到期时间"

#: admin/src/components/ChangeExpiryDialog.vue admin/src/components/CreateTokenDialog.vue admin/src/components/RotateTokenDialog.vue
msgid "Expires at"
msgstr "到期时间"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Exponential"
msgstr "指数"

#: admin/src/views/SettingsView.vue
msgid "Exponential — base 30 s, cap 3600 s"
msgstr "指数 — 基础 30 秒，上限 3600 秒"

#: admin/src/components/WebhookCardContent.vue admin/src/views/WebhooksList.vue
msgid "Export"
msgstr "导出"

#: admin/src/views/WebhooksList.vue
msgid "Export chain"
msgstr "导出链"

#: admin/src/components/ExportDialog.vue
msgid "Export everything"
msgstr "导出全部"

#: admin/src/components/ExportDialog.vue admin/src/components/ShareBuildDialog.vue admin/src/views/WebhooksList.vue
msgid "Export failed."
msgstr "导出失败。"

#: admin/src/components/ExportDialog.vue
msgid "Export webhooks & chains"
msgstr "导出 Webhook 与链"

#: admin/src/components/ExportDialog.vue admin/src/components/ShareBuildDialog.vue
msgid "Exporting…"
msgstr "正在导出…"

#: admin/src/App.vue admin/src/views/ExternalCronView.vue
msgid "External Cron"
msgstr "外部 Cron"

#: admin/src/views/ProView.vue
msgid "External Cron (bypass WP-Cron)"
msgstr "外部 Cron（绕过 WP-Cron）"

#: admin/src/views/ExternalCronView.vue
msgid "External Cron History"
msgstr "外部 Cron 历史"

#: admin/src/components/AiProviderSettings.vue
msgid "Extra credits (never expire)"
msgstr "额外积分（永不过期）"

#: src/Api/WebhooksController.php:788
msgid "Extra request headers as key-value pairs."
msgstr "作为键值对的额外请求标头。"

#: admin/src/components/ExternalCronChart.vue
msgid "Fail"
msgstr "失败"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Failed"
msgstr "失败"

#: src/Api/ApiTokensController.php:166
msgid "Failed to create API token."
msgstr "创建 API 令牌失败。"

#: src/Api/ChainsController.php:272
msgid "Failed to create chain link (it may already exist)."
msgstr "创建链接失败（它可能已存在）。"

#: src/Abilities/WriteAbilities.php:215
msgid "Failed to create chain link."
msgstr "创建链环节失败。"

#: src/Abilities/WriteAbilities.php:197
#: src/Api/ChainsController.php:167
msgid "Failed to create chain."
msgstr "创建链失败。"

#: src/Api/CredentialsController.php:284
msgid "Failed to create credential."
msgstr "创建凭据失败。"

#: src/Abilities/WriteAbilities.php:70
#: src/Api/WebhooksController.php:274
msgid "Failed to create webhook."
msgstr "创建 Webhook 失败。"

#: src/Api/ApiTokensController.php:279
msgid "Failed to delete API token."
msgstr "删除 API 令牌失败。"

#: src/Api/CredentialsController.php:396
msgid "Failed to delete credential."
msgstr "删除凭据失败。"

#: src/Api/LogsController.php:270
msgid "Failed to delete log."
msgstr "删除日志失败。"

#: src/Api/QueueController.php:345
msgid "Failed to delete queue job."
msgstr "删除队列任务失败。"

#: src/Api/SchemasController.php:397
msgid "Failed to delete schema."
msgstr "删除架构失败。"

#: src/Abilities/WriteAbilities.php:242
#: src/Api/WebhooksController.php:472
msgid "Failed to delete webhook."
msgstr "删除 Webhook 失败。"

#: src/Services/WPHttpTransport.php:27
msgid "Failed to encode payload as JSON"
msgstr "将数据编码为 JSON 失败"

#: admin/src/composables/useChains.js
msgid "Failed to fetch chains"
msgstr "获取链失败"

#: admin/src/composables/useHealthStats.js
msgid "Failed to fetch health stats"
msgstr "获取健康统计失败"

#: admin/src/composables/useSchemas.js
msgid "Failed to fetch schemas"
msgstr "获取架构失败"

#: admin/src/composables/useSnippets.js
msgid "Failed to fetch snippets"
msgstr "获取代码片段失败"

#: admin/src/composables/useSnippets.js
msgid "Failed to fetch trigger snippet"
msgstr "获取触发器代码片段失败"

#: admin/src/composables/useSchemas.js
msgid "Failed to fetch user triggers"
msgstr "获取用户触发器失败"

#: admin/src/views/WebhooksList.vue
msgid "Failed to rename chain."
msgstr "重命名链失败。"

#: src/Api/SchemasController.php:429
msgid "Failed to reset capture."
msgstr "重置捕获失败。"

#: src/Api/LogsController.php:344
msgid "Failed to retry job."
msgstr "重试任务失败。"

#: src/Api/QueueController.php:387
msgid "Failed to retry queue job."
msgstr "重试队列任务失败。"

#: src/Api/ApiTokensController.php:213
msgid "Failed to rotate API token."
msgstr "轮换 API 令牌失败。"

#: src/Abilities/WriteAbilities.php:154
msgid "Failed to save conditions."
msgstr "保存条件失败。"

#: src/Abilities/WriteAbilities.php:114
msgid "Failed to save mapping."
msgstr "保存映射失败。"

#: admin/src/composables/useSnippets.js
msgid "Failed to save trigger snippet"
msgstr "保存触发器代码片段失败"

#: src/Api/AgentController.php:346
msgid "Failed to start a conversation."
msgstr "启动对话失败。"

#: src/Api/AgentController.php:210
msgid "Failed to store the provider key."
msgstr "存储提供商密钥失败。"

#: src/Api/WebhooksController.php:514
msgid "Failed to toggle webhook status."
msgstr "切换 Webhook 状态失败。"

#: src/Api/SchemasController.php:350
msgid "Failed to update schema."
msgstr "更新架构失败。"

#: src/Abilities/WriteAbilities.php:100
#: src/Api/WebhooksController.php:414
msgid "Failed to update webhook."
msgstr "更新 Webhook 失败。"

#: admin/src/components/MappingEditor.vue
msgid "Field Mappings"
msgstr "字段映射"

#: admin/src/components/TestWebhookDrawer.vue
msgid ""
"Field mapping applied first, then pre-dispatch Code Glue — the dispatch "
"order"
msgstr "先应用字段映射，再运行发送前 Code Glue——即实际发送顺序"

#: src/Api/SchemasController.php:89
msgid "Field mapping configuration."
msgstr "字段映射配置。"

#: admin/src/views/SettingsView.vue
msgid "Files"
msgstr "文件"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "Filter by X-Webhook-ID…"
msgstr "按 X-Webhook-ID 筛选…"

#: src/Api/ActivityLogController.php:148
msgid "Filter by action prefix (e.g. \"webhook\")."
msgstr "按操作前缀筛选（例如“webhook”）。"

#: src/Api/LogsController.php:551
msgid "Filter by event UUID (exact match)."
msgstr "按事件 UUID 筛选（精确匹配）。"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "Filter by event UUID…"
msgstr "按事件 UUID 筛选…"

#: src/Api/ActivityLogController.php:147
msgid "Filter by exact action string."
msgstr "按精确的操作字符串筛选。"

#: src/Api/LogsController.php:534
msgid "Filter by status."
msgstr "按状态筛选。"

#: src/Api/LogsController.php:555
msgid "Filter by target URL (partial match)."
msgstr "按目标 URL 筛选（部分匹配）。"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "Filter by target URL…"
msgstr "按目标 URL 筛选…"

#: src/Api/LogsController.php:539
msgid "Filter by trigger name."
msgstr "按触发器名称筛选。"

#: src/Api/LogsController.php:134
#: src/Api/LogsController.php:530
msgid "Filter by webhook ID."
msgstr "按 Webhook ID 筛选。"

#: src/Api/LogsController.php:559
msgid "Filter by webhook UUID (X-Webhook-Id header value)."
msgstr "按 Webhook UUID（X-Webhook-Id 标头值）筛选。"

#: src/Api/ActivityLogController.php:152
msgid "Filter from UTC datetime (Y-m-d H:i:s)."
msgstr "从 UTC 日期时间筛选（Y-m-d H:i:s）。"

#: src/Api/LogsController.php:543
msgid "Filter logs from this date."
msgstr "从该日期筛选日志。"

#: src/Api/LogsController.php:547
msgid "Filter logs until this date."
msgstr "筛选日志至该日期。"

#: src/Api/ActivityLogController.php:153
msgid "Filter until UTC datetime (Y-m-d H:i:s)."
msgstr "筛选至 UTC 日期时间（Y-m-d H:i:s）。"

#: admin/src/views/VaultView.vue
msgid "Finish moving the key into wp-config.php"
msgstr "完成将密钥移入 wp-config.php"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Fixed"
msgstr "固定"

#: admin/src/components/ShareBuildDialog.vue
msgid "Flagged: %s"
msgstr "标记为：%s"

#: admin/src/views/SettingsView.vue
msgid ""
"For reliable webhook delivery, set up a system cron job to process the "
"queue every minute. WP-Cron serves as a fallback when system cron isn't "
"configured."
msgstr "为确保 Webhook 可靠投递，请设置系统 cron 任务每分钟处理一次队列。当未配置系统 cron 时，WP-Cron 作为后备方案。"

#: admin/src/views/VaultView.vue
msgid "Force delete & detach"
msgstr "强制删除并分离"

#: admin/src/views/ActivityView.vue
msgid "From date"
msgstr "起始日期"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "From date & time"
msgstr "起始日期和时间"

#: admin/src/components/CreateTokenDialog.vue
msgid "Full"
msgstr "完整"

#: admin/src/views/ProView.vue
msgid "Full REST API with API token authentication"
msgstr "完整的 REST API，支持 API 令牌身份验证"

#: admin/src/components/TestWebhookDrawer.vue
msgid ""
"Full pipeline in dispatch order — post-dispatch Code Glue fires after "
"delivery"
msgstr "按发送顺序的完整流程——发送后 Code Glue 在投递完成后触发"

#: admin/src/views/ApiTokensView.vue
msgid ""
"Full write power for AI assistants — but can never reveal auth headers or "
"vault secrets"
msgstr "为 AI 助手提供完整写入权限 — 但绝不会泄露认证标头或保险库密钥"

#: admin/src/components/CreateTokenDialog.vue
msgid "Full write power, but can never reveal auth headers or vault secrets"
msgstr "完整写入权限，但绝不会泄露认证标头或保险库密钥"

#: admin/src/views/ApiTokensView.vue
msgid "GET webhooks, logs, queue, health, triggers, schemas"
msgstr "GET Webhook、日志、队列、健康状况、触发器、架构"

#: admin/src/components/CreateTokenDialog.vue
msgid "Generate a new API token for programmatic access."
msgstr "生成新的 API 令牌以进行程序化访问。"

#: admin/src/views/ProView.vue
msgid "Get Pro"
msgstr "获取 Pro"

#: src/Abilities/AbilityCatalog.php:78
msgid "Get a REST route's argument schema (this site)"
msgstr "获取 REST 路由的参数 schema（本站点）"

#: src/Abilities/AbilityCatalog.php:52
msgid ""
"Get a single webhook by id, including triggers, mapping, conditions, "
"headers and credential assignment."
msgstr "按 id 获取单个 Webhook，包括触发器、映射、条件、标头和凭据分配。"

#: src/Abilities/AbilityCatalog.php:51
msgid "Get a webhook"
msgstr "获取 Webhook"

#: src/Abilities/AbilityCatalog.php:63
msgid "Get captured payload + mapping for a trigger"
msgstr "获取触发器的已捕获数据 + 映射"

#: src/Abilities/AbilityCatalog.php:93
msgid "Get delivery logs"
msgstr "获取投递日志"

#: admin/src/components/WebhookForm.vue
msgid "Give this credential a name."
msgstr "为此凭据命名。"

#: admin/src/components/ui/UpgradeBadge.vue
msgid "Go to Pro"
msgstr "前往 Pro"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Go to Queue"
msgstr "前往队列"

#: admin/src/components/ConditionsEditor.vue
msgid "Group does not match example payload"
msgstr "组与示例数据不匹配"

#: admin/src/components/ConditionsEditor.vue
msgid "Group matches example payload"
msgstr "组与示例数据匹配"

#: admin/src/components/ConditionsEditor.vue
msgid "Group matches example payload: %1$s (based on %2$d rule)"
msgid_plural "Group matches example payload: %1$s (based on %2$d rules)"
msgstr[0] "组与示例数据匹配：%1$s（基于 %2$d 条规则）"

#: admin/src/components/LogsTable.vue admin/src/components/PayloadGlueDrawer.vue admin/src/components/TestWebhookDrawer.vue
msgid "HTTP %s"
msgstr "HTTP %s"

#: admin/src/components/LogsTable.vue
msgid "HTTP Code"
msgstr "HTTP 代码"

#: admin/src/components/WebhookForm.vue
msgid "HTTP Method"
msgstr "HTTP 方法"

#: src/Api/WebhooksController.php:781
msgid "HTTP method used for delivery."
msgstr "用于投递的 HTTP 方法。"

#: admin/src/components/ui/UpgradeBadge.vue
msgid "Head to the Pro tab?"
msgstr "前往 Pro 选项卡？"

#: admin/src/views/VaultView.vue
msgid "Header"
msgstr "标头"

#: admin/src/components/WebhookForm.vue admin/src/views/VaultView.vue
msgid "Header name"
msgstr "标头名称"

#: admin/src/components/AiStepControls.vue admin/src/components/ImportDialog.vue
msgid "Header name (e.g. X-API-Key)"
msgstr "标头名称（例如 X-API-Key）"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Headers"
msgstr "标头"

#: admin/src/views/VaultView.vue
msgid "Hide"
msgstr "隐藏"

#: admin/src/components/DescriptionDisclosure.vue
msgid "Hide description"
msgstr "隐藏说明"

#: admin/src/views/VaultView.vue
msgid "Hide password"
msgstr "隐藏密码"

#: admin/src/views/VaultView.vue
msgid "Hide secret"
msgstr "隐藏密钥"

#: admin/src/views/ApiTokensView.vue admin/src/views/VaultView.vue
msgid "Hint"
msgstr "提示"

#: admin/src/views/VaultView.vue
msgid "How secrets are protected"
msgstr "密钥如何受保护"

#: admin/src/components/WebhookForm.vue
msgid "How to calculate the wait between retries. Overrides the global setting."
msgstr "如何计算重试之间的等待时间。覆盖全局设置。"

#: src/Api/WebhooksController.php:130
msgid "How to run the test: now (synchronous) or queue (async)."
msgstr "如何运行测试：now（同步）或 queue（异步）。"

#: admin/src/components/AiStepControls.vue
msgid "I sent a test — retry"
msgstr "我已发送测试——重试"

#: admin/src/components/TokenCreatedDialog.vue
msgid "I've saved it elsewhere"
msgstr "我已将其保存到别处"

#: src/Api/WebhooksController.php:776
msgid ""
"ID of a vault credential to use for authorization. Takes precedence over "
"auth_header."
msgstr "用于授权的保险库凭据 ID。优先于 auth_header。"

#: admin/src/components/ConditionsEditor.vue
msgid "IF"
msgstr "如果"

#: admin/src/views/ActivityView.vue
msgid "IP"
msgstr "IP"

#: admin/src/components/ImportDialog.vue admin/src/views/WebhooksList.vue
msgid "Import"
msgstr "导入"

#: admin/src/components/ImportDialog.vue
msgid "Import as new copies"
msgstr "作为新副本导入"

#: admin/src/components/ImportDialog.vue
msgid "Import complete"
msgstr "导入完成"

#: admin/src/components/ImportDialog.vue
msgid "Import failed."
msgstr "导入失败。"

#: admin/src/components/ImportDialog.vue
msgid "Import webhooks & chains"
msgstr "导入 Webhook 与链"

#: admin/src/components/ImportDialog.vue
msgid "Imported %1$d webhook(s) and %2$d chain(s)."
msgstr "已导入 %1$d 个 Webhook 和 %2$d 条链。"

#: admin/src/components/ImportDialog.vue
msgid "Importing…"
msgstr "正在导入…"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Include User Data"
msgstr "包含用户数据"

#: admin/src/components/MappingEditor.vue
msgid "Include field"
msgstr "包含字段"

#: admin/src/components/ShareBuildDialog.vue
msgid "Include the AI conversation"
msgstr "附上 AI 对话"

#: admin/src/components/MappingEditor.vue
msgid "Include unmapped fields"
msgstr "包含未映射的字段"

#: admin/src/components/AiProviderSettings.vue
msgid "Included"
msgstr "已包含"

#: src/Api/AuthHelper.php:52
#. translators: %s: required scope name
#, php-format
msgid "Insufficient token scope. This endpoint requires \"%s\" scope or higher."
msgstr "令牌作用域不足。此端点需要“%s”作用域或更高。"

#: admin/src/components/BuildPublishFields.vue
msgid "Integration"
msgstr "集成"

#: admin/src/views/ExternalCronView.vue
msgid "Interval"
msgstr "间隔"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Invalid JSON"
msgstr "无效的 JSON"

#: admin/src/components/WebhookForm.vue
msgid "Invalid URL format"
msgstr "无效的 URL 格式"

#: src/Api/CredentialsController.php:261
#: src/Api/CredentialsController.php:322
msgid "Invalid credential type."
msgstr "无效的凭据类型。"

#: src/Controllers/DispatcherController.php:125
msgid "Invalid cron token."
msgstr "无效的 cron 令牌。"

#: src/Api/WebhooksController.php:256
#: src/Api/WebhooksController.php:361
msgid "Invalid endpoint URL."
msgstr "无效的端点 URL。"

#: src/Services/Export/BuildSchemaValidator.php:408
#. translators: 1: JSON path, 2: reason
#, php-format
msgid "Invalid import file — %1$s %2$s"
msgstr "导入文件无效 — %1$s %2$s"

#: src/Api/ApiTokensController.php:146
msgid "Invalid scope. Must be read, operational, full, or agent."
msgstr "无效的作用域。必须是 read、operational、full 或 agent。"

#: admin/src/components/BuildPublishProgress.vue
msgid "It will appear at this address once it has been reviewed."
msgstr "通过审核后将出现在此地址。"

#: src/Api/QueueController.php:354
msgid "Job deleted successfully."
msgstr "任务删除成功。"

#: src/Api/QueueController.php:291
msgid "Job executed successfully."
msgstr "任务执行成功。"

#: src/Api/QueueController.php:301
msgid "Job failed and has been rescheduled for retry."
msgstr "任务失败，已重新安排重试。"

#: src/Api/QueueController.php:302
msgid "Job failed and has exceeded maximum retry attempts."
msgstr "任务失败，且已超过最大重试次数。"

#: src/Api/QueueController.php:312
msgid "Job failed with a non-retryable error."
msgstr "任务因不可重试的错误而失败。"

#: src/Api/QueueController.php:250
msgid "Job has already been completed."
msgstr "任务已完成。"

#: src/Api/QueueController.php:396
msgid "Job has been queued for retry."
msgstr "任务已加入队列以重试。"

#: src/Api/QueueController.php:260
msgid "Job has invalid payload data."
msgstr "任务的数据数据无效。"

#: src/Api/QueueController.php:242
msgid "Job is currently being processed."
msgstr "任务正在处理中。"

#: admin/src/views/QueueView.vue
msgid ""
"Jobs are processed every minute by WP-Cron. Failed jobs are automatically "
"retried with exponential backoff. Use “Process Now” to manually trigger "
"batch processing."
msgstr "任务由 WP-Cron 每分钟处理一次。失败的任务会以指数退避自动重试。使用“立即处理”可手动触发批量处理。"

#: admin/src/views/ExternalCronView.vue
msgid "Jobs processed per cron run."
msgstr "每次 cron 运行处理的任务数。"

#: admin/src/components/ImportDialog.vue
msgid "Jump to an imported item"
msgstr "跳转到已导入的项目"

#: admin/src/views/SettingsView.vue
msgid "Keep activity log for"
msgstr "活动日志保留时长"

#: admin/src/components/ExportDialog.vue
msgid "Keep the real captured values"
msgstr "保留真实的捕获数据"

#: admin/src/views/SettingsView.vue
msgid "Keep webhook logs for"
msgstr "Webhook 日志保留时长"

#: admin/src/components/KeyValueEditor.vue
msgid "Key"
msgstr "键"

#: admin/src/components/KeyValueEditor.vue
msgid "Key must only contain letters, numbers, hyphens, or underscores"
msgstr "键只能包含字母、数字、连字符或下划线"

#: admin/src/views/SettingsView.vue
msgid "Last Cron Run"
msgstr "上次 Cron 运行"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Last captured payload for this trigger"
msgstr "该触发器上次捕获的数据"

#: admin/src/components/HealthStatusBar.vue
msgid "Last hour"
msgstr "上一小时"

#: admin/src/views/ExternalCronView.vue
msgid "Last ping failed:"
msgstr "上次 ping 失败："

#: admin/src/views/ExternalCronView.vue
msgid "Last stats pull: %s"
msgstr "上次拉取统计：%s"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Last successful response (used as preview context)"
msgstr "上次成功的响应（用作预览上下文）"

#: src/Api/WebhooksController.php:837
msgid "Last update date."
msgstr "上次更新日期。"

#: admin/src/views/ApiTokensView.vue
msgid "Last used"
msgstr "上次使用"

#: admin/src/App.vue
msgid "Leave a review on WordPress.org"
msgstr "在 WordPress.org 上发表评价"

#: admin/src/views/VaultView.vue
msgid "Leave blank to keep current"
msgstr "留空以保留当前值"

#: admin/src/views/ProView.vue
msgid "License Key"
msgstr "许可证密钥"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Linear"
msgstr "线性"

#: admin/src/components/BuildPublishFields.vue
msgid "LinkedIn"
msgstr "LinkedIn"

#: src/Abilities/AbilityCatalog.php:33
msgid ""
"List WordPress do_action hooks discovered on this site (runtime + static "
"scan) that can be used as webhook triggers. The full catalog is LARGE "
"(hundreds of hooks): when hunting for a specific plugin's hooks, always "
"pass search (matches hook name or plugin slug, e.g. {\"search\":\"cf7\"}) "
"instead of listing everything. Results cap at 200 with a total count."
msgstr ""
"列出本站点上发现的可用作 Webhook 触发器的 WordPress do_action 钩子（运行时 + "
"静态扫描）。完整目录很大（数百个钩子）：查找特定插件的钩子时，请始终传入 search（匹配钩子名称或插件 slug，例如 "
"{\"search\":\"cf7\"}），而不是列出全部。结果上限为 200 条，并附总数。"

#: src/Abilities/AbilityCatalog.php:44
msgid "List all configured webhooks with their triggers and status."
msgstr "列出所有已配置的 Webhook 及其触发器和状态。"

#: src/Abilities/AbilityCatalog.php:32
msgid "List available triggers"
msgstr "列出可用触发器"

#: src/Abilities/AbilityCatalog.php:107
msgid "List credentials"
msgstr "列出凭据"

#: src/Api/WebhooksController.php:824
msgid "List of trigger actions."
msgstr "触发器操作列表。"

#: src/Abilities/AbilityCatalog.php:108
msgid ""
"List vault credentials (names, types and masked hints only — secrets are "
"never returned)."
msgstr "列出保险库凭据（仅名称、类型和掩码提示——绝不返回机密）。"

#: src/Abilities/AbilityCatalog.php:43
msgid "List webhooks"
msgstr "列出 Webhook"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Load"
msgstr "加载"

#: admin/src/components/ImportDialog.vue
msgid "Load a build JSON exported from Webhook Actions."
msgstr "载入从 Webhook Actions 导出的配置 JSON。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Loading last log…"
msgstr "正在加载上一条日志…"

#: admin/src/views/QueueView.vue
msgid "Loading queue…"
msgstr "正在加载队列…"

#: admin/src/views/SettingsView.vue
msgid "Loading settings..."
msgstr "正在加载设置…"

#: admin/src/components/ChainPicker.vue admin/src/views/WebhooksList.vue
msgid "Loading webhooks…"
msgstr "正在加载 Webhook…"

#: admin/src/components/LogsTable.vue admin/src/components/TriggerSelect.vue
msgid "Loading..."
msgstr "正在加载…"

#: admin/src/components/PayloadGlueDrawer.vue admin/src/views/ActivityView.vue admin/src/views/AiBuilderView.vue admin/src/views/ApiTokensView.vue admin/src/views/ProView.vue admin/src/views/VaultView.vue admin/src/views/WebhookEdit.vue
msgid "Loading…"
msgstr "正在加载…"

#: admin/src/views/QueueView.vue
msgid "Locked by: %s"
msgstr "锁定者：%s"

#: admin/src/views/SettingsView.vue
msgid "Log AI Dev Trace"
msgstr "记录 AI 开发追踪"

#: admin/src/views/SettingsView.vue
msgid "Log Archive"
msgstr "日志归档"

#: admin/src/components/LogsTable.vue
msgid "Log Details"
msgstr "日志详情"

#: admin/src/views/SettingsView.vue
msgid "Log Retention"
msgstr "日志保留"

#: src/Api/LogsController.php:242
#: src/Api/LogsController.php:260
#: src/Api/LogsController.php:316
#: src/Api/LogsController.php:368
msgid "Log not found."
msgstr "未找到日志。"

#: admin/src/App.vue admin/src/views/ActivityView.vue admin/src/views/LogsList.vue
msgid "Logs"
msgstr "日志"

#: admin/src/views/WebhookLogs.vue
msgid "Logs: %s"
msgstr "日志：%s"

#: admin/src/App.vue
msgid "Love the plugin?"
msgstr "喜欢这个插件吗？"

#: src/Abilities/AbilityCatalog.php:277
msgid ""
"Make a guarded test HTTP call to validate an endpoint before going live. To "
"probe a webhook you created, pass webhook_id (e.g. {{step_2.id}}) — its "
"URL, credential and method are reused automatically, so never ask the user "
"for the endpoint URL again. Only pass url for an endpoint not tied to a "
"webhook. A probe sends an EMPTY body, so GET, HEAD and POST run without "
"confirmation; only PUT, PATCH and DELETE (which a body-less call can still "
"mutate or delete) require confirmation. Returns status, redacted headers "
"and a truncated, redacted body. The raw secret is never exposed."
msgstr ""
"执行受保护的测试 HTTP 调用，在上线前验证端点。要探测您创建的 Webhook，请传入 webhook_id（例如 {{step_2.id}}）— "
"其 URL、凭据和方法会自动复用，因此切勿再次向用户询问端点 URL。仅在端点未关联任何 Webhook 时才传入 url。探测发送空 body，因此 "
"GET、HEAD 和 POST 无需确认即可运行；只有 PUT、PATCH 和 DELETE（即使没有 body "
"也可能修改或删除数据）需要确认。返回状态码、脱敏后的响应头和截断且脱敏的 body。原始密钥绝不会被暴露。"

#: admin/src/components/RotateTokenDialog.vue
msgid "Make sure to update all systems that use this token before rotating."
msgstr "轮换前请确保更新所有使用该令牌的系统。"

#: admin/src/components/ConditionsEditor.vue
msgid "Manual dot-notation for all fields"
msgstr "对所有字段使用手动点号表示法"

#: admin/src/components/WebhookForm.vue
msgid "Manual header"
msgstr "手动标头"

#: admin/src/components/LogsTable.vue admin/src/components/TriggerSchemaPanel.vue
msgid "Mapped"
msgstr "已映射"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Mapping & Conditions"
msgstr "映射与条件"

#: admin/src/components/LogsTable.vue
msgid "Mapping Applied"
msgstr "已应用映射"

#: admin/src/components/MarkdownField.vue
msgid "Markdown supported."
msgstr "支持 Markdown。"

#: admin/src/components/ConditionsEditor.vue
msgid "Match:"
msgstr "匹配："

#: admin/src/components/ConditionsEditor.vue
msgid "Matches example payload"
msgstr "与示例数据匹配"

#: flowsystems-webhook-actions.php
#. Author of the plugin
msgid "Mateusz Skorupa"
msgstr ""

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Max Attempts"
msgstr "最大尝试次数"

#: admin/src/components/WebhookForm.vue
msgid "Max Delay (s)"
msgstr "最大延迟（秒）"

#: admin/src/views/SettingsView.vue
msgid "Max Delay (seconds)"
msgstr "最大延迟（秒）"

#: admin/src/views/VaultView.vue
msgid "Maximum protection"
msgstr "最高保护"

#: src/Api/TriggersController.php:146
msgid "Media"
msgstr "媒体"

#: admin/src/components/LogsTable.vue
msgid "Method"
msgstr "方法"

#: admin/src/views/VaultView.vue
msgid "Migrated %1$s · failed %2$s"
msgstr "已迁移 %1$s · 失败 %2$s"

#: src/Abilities/AbilityCatalog.php:230
msgid ""
"Mint a WordPress Application Password for the CURRENT signed-in admin and "
"store it as a \"basic\" vault credential named \"WP REST API (internal) — "
"<user>\", for authenticating this site's own REST API. Use it for INTERNAL "
"automations (endpoint_url on this site's wp-json), then reference the new "
"credential id from assign_credential as {{step_N.id}}. Requires "
"confirmation; the secret is written straight to the vault and never "
"exposed. The optional name only labels the Application Password in the "
"user's profile."
msgstr ""
"为当前登录的管理员生成 WordPress 应用程序密码，并以名为 \"WP REST API (internal) — <user>\" 的 "
"\"basic\" 凭据存入保险库，用于本站点自身 REST API 的身份验证。将其用于内部自动化（endpoint_url 指向本站点的 "
"wp-json），然后在 assign_credential 中以 {{step_N.id}} 引用新凭据 "
"id。需要确认；密钥直接写入保险库，绝不会被暴露。可选的名称仅用于在用户个人资料中标注该应用程序密码。"

#: src/Services/WpAppPasswordService.php:102
msgid "Minted the Application Password but failed to store it in the vault."
msgstr "已生成应用程序密码，但存入保险库失败。"

#: src/Api/ExportController.php:169
#: src/Api/ExportController.php:183
msgid "Missing import document."
msgstr "缺少导入文档。"

#: admin/src/components/AiProviderSettings.vue
msgid "Model"
msgstr "模型"

#: admin/src/components/AiProviderSettings.vue admin/src/views/AiBuilderView.vue
msgid "Monthly credits reset on %s."
msgstr "每月积分将于 %s 重置。"

#: src/Abilities/WriteAbilities.php:144
msgid ""
"More than 1 condition requires a Pro license — propose a single simple rule "
"instead."
msgstr "超过 1 个条件需要 Pro 许可证——请改为提出单条简单规则。"

#: src/Api/SchemasController.php:317
msgid "More than 1 condition requires a Pro license."
msgstr "超过 1 个条件需要 Pro 许可证。"

#: admin/src/views/SettingsView.vue
msgid "Move the admin menu item under Tools instead of the top-level sidebar."
msgstr "将管理菜单项移动到「工具」下，而非顶级侧边栏。"

#: admin/src/components/WebhookForm.vue
msgid "Move this value into the encrypted Credentials Vault"
msgstr "将此值移入加密的凭据保险库"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"Must %1$sreturn $payload;%2$s — the returned array replaces the payload "
"before dispatch."
msgstr "必须 %1$sreturn $payload;%2$s — 返回的数组会在投递前替换数据。"

#: admin/src/components/WebhookForm.vue
msgid "My Webhook"
msgstr "我的 Webhook"

#: admin/src/views/WebhooksList.vue
msgid "My chain"
msgstr "我的链"

#: admin/src/components/AiProviderSettings.vue
msgid "My own keys"
msgstr "我自己的密钥"

#: admin/src/components/LogsTable.vue admin/src/views/SettingsView.vue
msgid "N/A"
msgstr "不适用"

#: admin/src/components/WebhookForm.vue admin/src/views/ApiTokensView.vue admin/src/views/VaultView.vue
msgid "Name"
msgstr "名称"

#: admin/src/components/WebhookForm.vue
msgid "Name is required"
msgstr "名称为必填项"

#: admin/src/views/VaultView.vue admin/src/views/WebhooksList.vue
msgid "Name is required."
msgstr "名称为必填项。"

#: src/Api/WebhooksController.php:753
msgid "Name of the webhook."
msgstr "Webhook 的名称。"

#: admin/src/views/ProView.vue
msgid "Need help?"
msgstr "需要帮助？"

#: admin/src/components/AiBuildsBar.vue
msgid "New build"
msgstr "新建构建"

#: admin/src/components/ChainPicker.vue
msgid "New chain name"
msgstr "新链名称"

#: admin/src/components/ChainPicker.vue
msgid "New chain…"
msgstr "新建链…"

#: admin/src/views/VaultView.vue
msgid "New credential"
msgstr "新建凭据"

#: admin/src/views/ApiTokensView.vue
msgid "New token"
msgstr "新建令牌"

#: admin/src/views/SettingsView.vue
msgid "Newest"
msgstr "最新"

#: admin/src/views/ActivityView.vue
msgid "Next"
msgstr "下一页"

#: admin/src/components/LogsTable.vue
msgid "Next attempt scheduled for %s"
msgstr "下次尝试计划于 %s"

#: admin/src/components/LogsTable.vue
msgid "No"
msgstr "否"

#: src/Services/Ai/AgentOrchestrator.php:73
msgid "No AI provider is configured yet. Set one up to use the AI Builder."
msgstr "尚未配置任何 AI 提供商。请先设置一个以使用 AI 构建器。"

#: admin/src/views/ApiTokensView.vue
msgid "No API tokens"
msgstr "没有 API 令牌"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "No Payload Captured Yet"
msgstr "尚未捕获数据"

#: src/Services/RestRouteInspector.php:53
#. translators: %s: route path
#, php-format
msgid ""
"No REST route matches \"%s\" on this site. Route paths are relative to "
"/wp-json, e.g. \"/wp/v2/users\". This only describes THIS site's own REST "
"API — not external endpoints."
msgstr ""
"本站点上没有与 \"%s\" 匹配的 REST 路由。路由路径相对于 /wp-json，例如 "
"\"/wp/v2/users\"。此功能仅描述本站点自身的 REST API — 不适用于外部端点。"

#: admin/src/components/AiProviderSettings.vue
msgid ""
"No WordPress AI connector is currently configured. Add one under Settings → "
"Connectors, or connect a provider key below."
msgstr "当前未配置任何 WordPress AI 连接器。请在“设置 → 连接器”中添加一个，或在下方连接提供商密钥。"

#: admin/src/views/ActivityView.vue
msgid "No activity recorded yet."
msgstr "尚未记录任何活动。"

#: src/Api/SettingsController.php:195
msgid "No archive files found or failed to create ZIP."
msgstr "未找到归档文件或创建 ZIP 失败。"

#: admin/src/views/SettingsView.vue
msgid "No archive files yet"
msgstr "尚无归档文件"

#: admin/src/components/ImportDialog.vue
msgid "No authorization"
msgstr "无需授权"

#: admin/src/components/ImportDialog.vue
msgid "No authorization needed for this build."
msgstr "此配置无需授权。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "No body sent"
msgstr "未发送主体"

#: src/Api/WebhooksController.php:586
#: src/Api/WebhooksController.php:603
#: src/Api/WebhooksController.php:622
msgid ""
"No captured payload found for this trigger. Fire the trigger at least once "
"first."
msgstr "未找到该触发器的已捕获数据。请先至少触发一次。"

#: admin/src/components/WebhookForm.vue
msgid "No captured payload — trigger the webhook once to preview the resolved URL."
msgstr "未捕获数据 — 触发一次 Webhook 以预览解析后的 URL。"

#: admin/src/components/ExportDialog.vue
msgid "No chains match your search."
msgstr "没有匹配的链。"

#: src/Services/Ai/FallbackTransport.php:73
#: src/Services/Ai/WpAiClientTransport.php:101
msgid "No configured AI provider could complete the request."
msgstr "没有任何已配置的 AI 提供商能够完成该请求。"

#: admin/src/components/AiStepControls.vue
msgid ""
"No credentials in the vault yet — create one and it will be assigned to "
"this webhook."
msgstr "保险库中还没有凭据——创建一个后将分配给此 Webhook。"

#: admin/src/components/AiStepControls.vue
msgid ""
"No credentials in the vault yet — create one and it will be used for this "
"step."
msgstr "保险库中还没有凭据 — 创建一个后将用于此步骤。"

#: src/Api/SchemasController.php:337
msgid "No data to update."
msgstr "没有要更新的数据。"

#: admin/src/components/MappingEditor.vue
msgid "No example payload captured yet."
msgstr "尚未捕获示例数据。"

#: admin/src/components/AiStepControls.vue
msgid ""
"No example payload captured yet. Open a page with your form and submit a "
"test entry, then retry so the agent can map the real fields."
msgstr "尚未捕获示例数据。请打开包含您表单的页面并提交一条测试记录，然后重试，以便代理映射真实字段。"

#: admin/src/components/MappingEditor.vue
msgid "No field mappings configured. Fields will be sent as-is."
msgstr "未配置字段映射。字段将原样发送。"

#: admin/src/components/FieldSelector.vue
msgid "No fields found"
msgstr "未找到字段"

#: admin/src/components/MappingEditor.vue
msgid "No fields found in payload"
msgstr "数据中未找到字段"

#: admin/src/components/ExternalCronChart.vue
msgid "No heartbeat data yet"
msgstr "尚无心跳数据"

#: admin/src/components/LogsTable.vue
msgid "No logs found"
msgstr "未找到日志"

#: admin/src/components/AiStepControls.vue
msgid "No matches"
msgstr "无匹配项"

#: admin/src/components/ChainPicker.vue
msgid ""
"No other webhooks exist yet — create at least one webhook to use it as a "
"chain source."
msgstr "尚不存在其他 Webhook — 请至少创建一个 Webhook 以将其用作链来源。"

#: src/Abilities/TestAbilities.php:174
msgid "No payload provided and no captured example exists yet for this trigger."
msgstr "未提供数据，且此触发器尚无已捕获的示例。"

#: src/Api/LogsController.php:326
msgid "No queue job found for this log entry."
msgstr "未找到该日志条目对应的队列任务。"

#: admin/src/views/QueueView.vue
msgid "No queued jobs"
msgstr "没有排队的任务"

#: admin/src/views/VaultView.vue
msgid "No saved credentials"
msgstr "没有已保存的凭据"

#: admin/src/components/WebhookForm.vue
msgid "No saved credentials yet. Add one in the"
msgstr "尚无已保存的凭据。请在以下位置添加"

#: src/Services/WpAppPasswordService.php:56
msgid ""
"No signed-in user to provision an Application Password for — open the AI "
"Builder while logged in as an administrator."
msgstr "没有已登录的用户可供创建应用程序密码 — 请以管理员身份登录后再打开 AI Builder。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "No snippet assigned"
msgstr "未分配代码片段"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "No snippets found"
msgstr "未找到代码片段"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "No successful dispatches found for this webhook — run a test first."
msgstr "未找到该 Webhook 的成功投递 — 请先运行测试。"

#: admin/src/components/WebhookCardContent.vue
msgid "No trigger assigned"
msgstr "未分配触发器"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "No triggers configured for this webhook."
msgstr "该 Webhook 未配置触发器。"

#: admin/src/components/TriggerSelect.vue
msgid "No triggers found"
msgstr "未找到触发器"

#: admin/src/views/WebhooksList.vue
msgid "No webhooks configured yet"
msgstr "尚未配置任何 Webhook"

#: admin/src/components/ExportDialog.vue
msgid "No webhooks match your search."
msgstr "没有匹配的 Webhook。"

#: admin/src/components/ChainPicker.vue
msgid "No webhooks match “%s”."
msgstr "没有 Webhook 匹配“%s”。"

#: admin/src/views/ExternalCronView.vue
msgid "Not configured"
msgstr "未配置"

#: src/Abilities/AbilityErrors.php:17
msgid "Not found."
msgstr "未找到。"

#: admin/src/components/LogsTable.vue
msgid ""
"Not sent as request body for GET / DELETE. Without URL parameters "
"configured, the full payload is appended as %1$s?payload=&lt;json&gt;%2$s."
msgstr ""
"对于 GET / DELETE 不作为请求主体发送。在未配置 URL 参数的情况下，完整数据会以 "
"%1$s?payload=&lt;json&gt;%2$s 形式附加。"

#: admin/src/components/MarkdownField.vue
msgid "Nothing to preview yet — switch to Write to add a description."
msgstr "暂无可预览的内容——切换到“撰写”添加说明。"

#: src/Api/LogsController.php:127
msgid "Number of days to look back."
msgstr "回溯的天数。"

#: src/Api/LogsController.php:523
msgid "Number of results per page."
msgstr "每页结果数。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "OK"
msgstr "确定"

#: admin/src/components/ConditionsEditor.vue
msgid "OR"
msgstr "OR"

#: admin/src/views/ActivityView.vue
msgid "Object"
msgstr "对象"

#: admin/src/views/SettingsView.vue
msgid "Oldest"
msgstr "最早"

#: admin/src/views/SettingsView.vue
msgid "Oldest Log"
msgstr "最早的日志"

#: admin/src/components/ChainPicker.vue
msgid ""
"On a successful (2xx) response from any of these webhooks, this webhook "
"fires with the upstream response, sent payload, and original pre-mapping "
"payload available as %1$sargs[0]%2$s."
msgstr ""
"当这些 Webhook 中任意一个返回成功（2xx）响应时，该 Webhook 将被触发，上游响应、已发送数据和原始映射前数据均可通过 "
"%1$sargs[0]%2$s 获得。"

#: admin/src/components/BuildPublishFields.vue
msgid ""
"One or two sentences — this is what people read on the listing before they "
"open the build."
msgstr "一两句话——别人在打开配置前会在列表中看到它。"

#: src/Api/LogsController.php:334
msgid "Only failed log entries can be retried."
msgstr "只有失败的日志条目才能重试。"

#: src/Api/QueueController.php:377
msgid "Only pending or permanently failed jobs can be retried."
msgstr "只有待处理或永久失败的任务才能重试。"

#: src/Api/WebhooksController.php:726
msgid "Only return enabled webhooks."
msgstr "仅返回已启用的 Webhook。"

#: src/Api/LogsController.php:376
msgid "Only successful or skipped log entries can be replayed."
msgstr "只有成功或已跳过的日志条目才能重放。"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Open webhook"
msgstr "打开 Webhook"

#: admin/src/components/CreateTokenDialog.vue
msgid "Operational"
msgstr "操作"

#: admin/src/views/ApiTokensView.vue
msgid "Operational + create/update/delete webhooks, schemas, and queue jobs"
msgstr "操作 + 创建/更新/删除 Webhook、架构和队列任务"

#: admin/src/components/CreateTokenDialog.vue
msgid "Operational + create/update/delete webhooks, schemas, queue jobs"
msgstr "操作 + 创建/更新/删除 Webhook、架构、队列任务"

#: src/Api/WebhooksController.php:759
msgid "Optional markdown description documenting what this webhook does."
msgstr "可选的 Markdown 说明，用于记录此 Webhook 的作用。"

#: admin/src/views/VaultView.vue
msgid "Optional: harden with %1$sFSWA_SECRET_KEY%2$s"
msgstr "可选：使用 %1$sFSWA_SECRET_KEY%2$s 加固"

#: src/Api/TriggersController.php:148
msgid "Options"
msgstr "选项"

#: admin/src/components/TriggerSelect.vue
msgid "Or select from available hooks..."
msgstr "或从可用钩子中选择…"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Original"
msgstr "原始"

#: admin/src/components/LogsTable.vue admin/src/components/MappingEditor.vue
msgid "Original Payload"
msgstr "原始数据"

#: src/Api/TriggersController.php:150
msgid "Other"
msgstr "其他"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Output (stdout)"
msgstr "输出（stdout）"

#: admin/src/components/WebhookForm.vue
msgid ""
"Override the global retry limit for this webhook. Leave empty to use the "
"global setting."
msgstr "覆盖该 Webhook 的全局重试上限。留空则使用全局设置。"

#: admin/src/components/WebhookForm.vue
msgid ""
"Override the retry delay strategy for this webhook. Leave empty to use the "
"global setting."
msgstr "覆盖该 Webhook 的重试延迟策略。留空则使用全局设置。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "PHP Code"
msgstr "PHP 代码"

#: admin/src/components/TriggerSchemaPanel.vue
msgid ""
"PHP runs after successful dispatch; %1$s$responseBody%2$s and "
"%1$s$originalPayload%2$s available"
msgstr "PHP 在成功投递后运行；可使用 %1$s$responseBody%2$s 和 %1$s$originalPayload%2$s"

#: admin/src/views/SettingsView.vue
msgid ""
"Page reload is disabled on WordPress Playground — the menu will update on "
"next WP menu item click."
msgstr "在 WordPress Playground 上页面重新加载已禁用 — 菜单将在下次点击 WP 菜单项时更新。"

#: src/Api/TriggersController.php:143
msgid "Pages"
msgstr "页面"

#: admin/src/components/WebhookForm.vue
msgid "Param name"
msgstr "参数名称"

#: src/Api/LogsController.php:289
msgid "Parameter older_than_days is required."
msgstr "参数 older_than_days 为必填项。"

#: admin/src/components/WebhookForm.vue
msgid "Part of chain:"
msgid_plural "Part of chains:"
msgstr[0] "属于链："

#: admin/src/components/AiStepControls.vue admin/src/components/ImportDialog.vue admin/src/views/VaultView.vue
msgid "Password"
msgstr "密码"

#: admin/src/components/AiStepControls.vue
msgid "Password (or Application Password)"
msgstr "密码（或应用程序密码）"

#: admin/src/views/VaultView.vue
msgid "Password or application password"
msgstr "密码或应用程序密码"

#: admin/src/views/VaultView.vue
msgid "Paste the token / key"
msgstr "粘贴令牌 / 密钥"

#: admin/src/components/KeyValueEditor.vue
msgid "Path not found in captured payload"
msgstr "在已捕获数据中未找到路径"

#: admin/src/components/FieldSelector.vue admin/src/components/MappingEditor.vue
msgid "Path not found in payload"
msgstr "在数据中未找到路径"

#: admin/src/views/ExternalCronView.vue
msgid "Pause"
msgstr "暂停"

#: admin/src/views/ExternalCronView.vue
msgid "Paused"
msgstr "已暂停"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Payload"
msgstr "数据"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Payload Example Captured"
msgstr "已捕获数据示例"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Payload Mapping"
msgstr "数据映射"

#: admin/src/views/ProView.vue
msgid "Payload mapping"
msgstr "数据映射"

#: admin/src/components/HealthStatusBar.vue admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "Pending"
msgstr "待处理"

#: admin/src/views/ProView.vue
msgid "Per-webhook retry limit override"
msgstr "按 Webhook 覆盖重试上限"

#: admin/src/views/QueueView.vue
msgid "Perm. Failed"
msgstr "永久失败"

#: admin/src/views/LogsList.vue
msgid "Permanently Failed"
msgstr "永久失败"

#: src/Abilities/AbilityCatalog.php:334
msgid ""
"Permanently delete a webhook and its triggers / mapping. Requires "
"confirmation."
msgstr "永久删除 Webhook 及其触发器/映射。需要确认。"

#: admin/src/components/ui/DateTimePicker.vue
msgid "Pick date & time"
msgstr "选择日期和时间"

#: admin/src/components/BuildPublishFields.vue
msgid "Pick the one that fits best — a build is listed in a single collection."
msgstr "选择最合适的一个——每个配置只会出现在一个合集中。"

#: admin/src/views/SettingsView.vue
msgid "Plugin Info"
msgstr "插件信息"

#: admin/src/views/SettingsView.vue
msgid "Plugin Version"
msgstr "插件版本"

#: admin/src/views/SettingsView.vue
msgid "Plugin default"
msgstr "插件默认"

#: admin/src/views/ExternalCronView.vue
msgid "Plugin queue endpoint"
msgstr "插件队列端点"

#: src/Api/TriggersController.php:147
msgid "Plugins"
msgstr "插件"

#: admin/src/components/TestWebhookDrawer.vue admin/src/components/TriggerSchemaPanel.vue
msgid "Post Glue"
msgstr "投递后 Glue"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Post-dispatch"
msgstr "投递后"

#: admin/src/components/TriggerSchemaPanel.vue admin/src/components/WebhookCardContent.vue
msgid "Post-dispatch Code Glue"
msgstr "投递后 Code Glue"

#: admin/src/components/TriggerSchemaPanel.vue
msgid ""
"Post-dispatch Code Glue preview ran but is not saved. Save or discard "
"before continuing."
msgstr "投递后 Code Glue 预览已运行但未保存。请在继续前保存或放弃。"

#: src/Api/TriggersController.php:142
msgid "Posts"
msgstr "文章"

#: admin/src/components/TestWebhookDrawer.vue admin/src/components/TriggerSchemaPanel.vue
msgid "Pre Glue"
msgstr "投递前 Glue"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Pre-dispatch"
msgstr "投递前"

#: admin/src/components/TriggerSchemaPanel.vue admin/src/components/WebhookCardContent.vue
msgid "Pre-dispatch Code Glue"
msgstr "投递前 Code Glue"

#: admin/src/components/TriggerSchemaPanel.vue
msgid ""
"Pre-dispatch Code Glue preview is active. Save or discard it before saving "
"Mapping & Conditions."
msgstr "投递前 Code Glue 预览处于活动状态。请在保存映射与条件前保存或放弃它。"

#: admin/src/components/MarkdownField.vue
msgid "Preview"
msgstr "预览"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Preview active"
msgstr "预览已激活"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Preview failed"
msgstr "预览失败"

#: admin/src/views/ActivityView.vue
msgid "Previous"
msgstr "上一页"

#: admin/src/views/ProView.vue
msgid "Priority support"
msgstr "优先支持"

#: admin/src/App.vue admin/src/views/ProView.vue
msgid "Pro"
msgstr "Pro"

#: admin/src/views/ProView.vue
msgid "Pro License"
msgstr "Pro 许可证"

#: admin/src/views/ProView.vue
msgid "Pro Plugin Installed"
msgstr "已安装 Pro 插件"

#: admin/src/components/WebhookCardContent.vue
msgid "Pro inactive"
msgstr "Pro 未激活"

#: src/Api/ProStatusController.php:48
msgid "Pro plugin not found."
msgstr "未找到 Pro 插件。"

#: src/Abilities/AbilityCatalog.php:276
msgid "Probe a target endpoint"
msgstr "探测目标端点"

#: admin/src/views/QueueView.vue
msgid "Process Now"
msgstr "立即处理"

#: src/Controllers/DispatcherController.php:146
#. translators: %1$d: total jobs processed, %2$d: succeeded count, %3$d: failed count, %4$d: rescheduled count
#, php-format
msgid "Processed %1$d jobs: %2$d succeeded, %3$d failed, %4$d rescheduled."
msgstr "已处理 %1$d 个任务：%2$d 个成功，%3$d 个失败，%4$d 个已重新安排。"

#: admin/src/views/QueueView.vue
msgid "Processing"
msgstr "处理中"

#: admin/src/views/LogsList.vue
msgid "Processing…"
msgstr "正在处理…"

#: admin/src/components/AiProviderSettings.vue
msgid "Provider"
msgstr "提供商"

#: admin/src/components/ShareBuildDialog.vue
msgid "Publish build"
msgstr "发布配置"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Publish it on wpwebhooks.org — 50 AI credits, +20 for every like."
msgstr "把它发布到 wpwebhooks.org——50 个 AI 额度，每个点赞再加 20。"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Publish this build on wpwebhooks.org so anyone can import it. Secrets are "
"never included, and you keep 50 AI credits for publishing plus 20 every "
"time someone likes it."
msgstr "把此配置发布到 wpwebhooks.org，任何人都能导入。密钥从不包含在内；发布可获得 50 个 AI 额度，每次有人点赞再得 20 个。"

#: admin/src/components/BuiltWebhookActions.vue admin/src/components/ShareBuildDialog.vue
msgid "Publish your build"
msgstr "发布你的配置"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Published builds are checked automatically before they go live, and can be "
"taken down later from your account."
msgstr "已发布的配置在上线前会自动审核，之后也可以从你的账户中撤下。"

#: admin/src/components/BuildPublishProgress.vue
msgid "Published — your build is live."
msgstr "已发布 — 你的配置已上线。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Publishing failed."
msgstr "发布失败。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Publishing…"
msgstr "正在发布…"

#: admin/src/components/LogsTable.vue
msgid "Query Parameters"
msgstr "查询参数"

#: src/Api/WebhooksController.php:800
msgid "Query parameters appended to the URL."
msgstr "附加到 URL 的查询参数。"

#: admin/src/App.vue admin/src/views/ActivityView.vue admin/src/views/QueueView.vue
msgid "Queue"
msgstr "队列"

#: admin/src/views/SettingsView.vue
msgid "Queue Processor (Cron)"
msgstr "队列处理器（Cron）"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Queue Test"
msgstr "将测试加入队列"

#: admin/src/components/HealthStatusBar.vue
msgid ""
"Queue appears stuck — there are pending deliveries older than 10 minutes. "
"Check your cron setup."
msgstr "队列似乎卡住 — 存在超过 10 分钟的待处理投递。请检查你的 cron 设置。"

#: admin/src/views/ExternalCronView.vue
msgid "Queue batch size"
msgstr "队列批量大小"

#: src/Api/QueueController.php:234
#: src/Api/QueueController.php:327
#: src/Api/QueueController.php:369
msgid "Queue job not found."
msgstr "未找到队列任务。"

#: admin/src/components/HealthStatusBar.vue
msgid ""
"Queue processor has never run. Ensure WP-Cron is active or configure an "
"external cron job for reliable delivery."
msgstr "队列处理器从未运行。请确保 WP-Cron 处于活动状态，或配置外部 cron 任务以实现可靠投递。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Queuing…"
msgstr "正在加入队列…"

#: admin/src/views/VaultView.vue
msgid "Raw value for any header — escape hatch"
msgstr "任意标头的原始值 — 应急方案"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Re-capture"
msgstr "重新捕获"

#: admin/src/views/VaultView.vue
msgid "Re-encrypt & remove database key"
msgstr "重新加密并移除数据库密钥"

#: admin/src/views/VaultView.vue
msgid "Re-encrypting…"
msgstr "正在重新加密…"

#: admin/src/components/CreateTokenDialog.vue
msgid "Read"
msgstr "读取"

#: admin/src/components/CreateTokenDialog.vue
msgid "Read + toggle webhooks, retry/replay logs, execute queue jobs"
msgstr "读取 + 切换 Webhook、重试/重放日志、执行队列任务"

#: admin/src/views/ApiTokensView.vue
msgid "Read + toggle webhooks, retry/replay logs, execute/retry queue jobs"
msgstr "读取 + 切换 Webhook、重试/重放日志、执行/重试队列任务"

#: src/Abilities/AbilityCatalog.php:94
msgid ""
"Read recent delivery logs (optionally for one webhook) to verify what was "
"sent and how the endpoint responded."
msgstr "读取最近的投递日志（可选仅针对一个 Webhook），以核实发送了什么以及端点如何响应。"

#: admin/src/components/ShareBuildDialog.vue
msgid "Reading this build…"
msgstr "正在读取此配置…"

#: admin/src/components/ImportDialog.vue
msgid "Reading…"
msgstr "正在读取…"

#: admin/src/components/HealthStatusBar.vue
msgid "Ready to send some data?"
msgstr "准备好发送一些数据了吗？"

#: admin/src/views/SettingsView.vue
msgid ""
"Records the exact prompts and raw responses exchanged with the AI model to "
"a protected log file, so support can diagnose a build you report. On by "
"default; API keys are always redacted and entries older than 30 days are "
"pruned automatically. Turn this off if you would rather not keep the log."
msgstr ""
"把与 AI 模型往来的完整提示词和原始响应记录到受保护的日志文件，便于支持人员诊断你反馈的问题。默认开启；API 密钥始终会被遮蔽，超过 30 "
"天的记录会自动清理。若不希望保留日志，可关闭此项。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Redirect"
msgstr "重定向"

#: src/Abilities/AbilityCatalog.php:215
msgid ""
"Reference a stored vault credential from a webhook by id (the secret is "
"injected at dispatch time and never exposed)."
msgstr "通过 id 从 Webhook 引用保险库中存储的凭据（机密在发送时注入，绝不暴露）。"

#: admin/src/views/QueueView.vue
msgid "Refresh"
msgstr "刷新"

#: admin/src/views/SettingsView.vue
msgid "Regenerate Token"
msgstr "重新生成令牌"

#: admin/src/views/SettingsView.vue
msgid ""
"Regenerating the token will invalidate the current cron URL. You'll need to "
"update your crontab."
msgstr "重新生成令牌将使当前的 cron URL 失效。你需要更新 crontab。"

#: admin/src/views/ProView.vue
msgid "Reliable webhooks with queue & retries"
msgstr "可靠的 Webhook，带队列和重试"

#: admin/src/components/AiProviderSettings.vue
msgid "Remove"
msgstr "移除"

#: admin/src/views/ActivityView.vue
msgid "Remove activity entries older than the specified number of days."
msgstr "移除早于指定天数的活动记录。"

#: admin/src/views/QueueView.vue
msgid "Remove from queue"
msgstr "从队列中移除"

#: admin/src/components/AiProviderSettings.vue
msgid "Remove this provider and delete its stored key?"
msgstr "移除此提供商并删除其存储的密钥？"

#: admin/src/views/WebhooksList.vue
msgid "Rename chain"
msgstr "重命名链"

#: admin/src/views/ProView.vue
msgid "Renews / expires"
msgstr "续订 / 到期"

#: admin/src/components/ShareBuildDialog.vue
msgid ""
"Replaces your site URL with example.com everywhere it appears — the export "
"header, endpoint URLs, Code Glue and the AI conversation. Whoever imports "
"the build re-points those endpoints at their own site."
msgstr ""
"把出现过站点网址的地方全部替换为 example.com——包括导出头信息、端点地址、Code Glue 和 AI "
"对话。导入者会把这些端点改指向自己的站点。"

#: admin/src/components/LogsTable.vue
msgid "Replay"
msgstr "重放"

#: admin/src/views/LogsList.vue
msgid "Replay %d selected"
msgstr "重放所选的 %d 项"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Request"
msgstr "请求"

#: admin/src/components/LogsTable.vue
msgid "Request Headers"
msgstr "请求标头"

#: admin/src/components/LogsTable.vue
msgid "Request Payload"
msgstr "请求数据"

#: admin/src/views/QueueView.vue
msgid "Reset and retry"
msgstr "重置并重试"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Response"
msgstr "响应"

#: admin/src/components/ExternalCronChart.vue
msgid "Response (ms)"
msgstr "响应（毫秒）"

#: admin/src/components/LogsTable.vue
msgid "Response Body"
msgstr "响应主体"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Result Preview"
msgstr "结果预览"

#: admin/src/views/ExternalCronView.vue
msgid "Resume"
msgstr "恢复"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Retries"
msgstr "重试"

#: admin/src/components/AiStepControls.vue admin/src/components/LogsTable.vue admin/src/views/AiBuilderView.vue admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "Retry"
msgstr "重试"

#: admin/src/views/LogsList.vue
msgid "Retry %d selected"
msgstr "重试所选的 %d 项"

#: admin/src/views/LogsList.vue
msgid "Retry / Replay %d selected"
msgstr "重试 / 重放所选的 %d 项"

#: admin/src/views/SettingsView.vue
msgid "Retry Settings"
msgstr "重试设置"

#: admin/src/views/SettingsView.vue
msgid "Retry settings saved"
msgstr "重试设置已保存"

#: src/Abilities/AbilityCatalog.php:64
msgid ""
"Return the last captured example payload, field mapping and conditions for "
"a trigger so the agent can map against the real payload shape. Pass "
"webhook_id to read that webhook's own capture; omit it to get the latest "
"example for the trigger from any webhook. If the result carries a "
"capture_warning, the capture is stale/opaque (no mappable fields): follow "
"the warning — show the user what the capture contains and ask them to "
"re-fire the event — instead of proposing mappings."
msgstr ""
"返回触发器最近捕获的示例数据、字段映射和条件，以便代理根据真实的数据结构进行映射。传入 webhook_id 可读取该 Webhook "
"自己的捕获；省略则获取任意 Webhook 中该触发器的最新示例。如果结果带有 "
"capture_warning，说明捕获已过期/不可解析（没有可映射的字段）：请遵循警告 — 向用户展示捕获内容并请其重新触发事件 — "
"而不是提出映射建议。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"Return value is ignored — use for side effects: %1$supdate_post_meta()%2$s, "
"%1$swp_mail()%2$s, %1$serror_log()%2$s, follow-up API calls, etc."
msgstr ""
"返回值会被忽略 — "
"用于副作用：%1$supdate_post_meta()%2$s、%1$swp_mail()%2$s、%1$serror_log()%2$s、后续 "
"API 调用等。"

#: src/Api/SchemasController.php:97
msgid ""
"Reuse an example payload captured for the same trigger on another webhook "
"when this one has none."
msgstr "当此 Webhook 没有示例数据时，复用另一 Webhook 上为同一触发器捕获的示例。"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Reuse example from other webhooks"
msgstr "复用其他 Webhook 的示例"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Reusing an example captured for this trigger on another webhook"
msgstr "正在复用另一 Webhook 上为此触发器捕获的示例"

#: admin/src/components/AiStepPanel.vue
msgid "Reverted"
msgstr "已还原"

#: admin/src/views/AiBuilderView.vue
msgid "Review plan before running"
msgstr "运行前审查计划"

#: admin/src/components/RotateTokenDialog.vue
msgid "Revive token"
msgstr "恢复令牌"

#: admin/src/components/RotateTokenDialog.vue
msgid "Revive token: %s"
msgstr "恢复令牌：%s"

#: admin/src/components/RotateTokenDialog.vue
msgid "Reviving…"
msgstr "正在恢复…"

#: admin/src/components/RotateTokenDialog.vue admin/src/views/ApiTokensView.vue
msgid "Rotate token"
msgstr "轮换令牌"

#: admin/src/components/RotateTokenDialog.vue
msgid "Rotate token: %s"
msgstr "轮换令牌：%s"

#: admin/src/components/RotateTokenDialog.vue
msgid "Rotating…"
msgstr "正在轮换…"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Run Preview"
msgstr "运行预览"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Run Test Now"
msgstr "立即运行测试"

#: admin/src/components/AiStepPanel.vue
msgid "Run plan"
msgstr "运行计划"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Running…"
msgstr "正在运行…"

#: admin/src/components/BuildPublishFields.vue
msgid "Runs a process end to end — a chain of steps, a scheduled job, a workflow."
msgstr "端到端地跑完一个流程——一串步骤、一个定时任务或一条工作流。"

#: admin/src/components/AiProviderSettings.vue
msgid "Runs through the WP Webhooks AI service — no API keys needed."
msgstr "通过 WP Webhooks AI 服务运行 — 无需 API 密钥。"

#: admin/src/views/SettingsView.vue
msgid "Same delay every retry: base seconds"
msgstr "每次重试延迟相同：基础秒数"

#: admin/src/components/ExternalCronChart.vue
msgid "Samples"
msgstr "样本"

#: admin/src/components/AiProviderSettings.vue admin/src/components/ChangeExpiryDialog.vue admin/src/components/TriggerSchemaPanel.vue admin/src/views/ExternalCronView.vue admin/src/views/WebhooksList.vue
msgid "Save"
msgstr "保存"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Save & Assign"
msgstr "保存并分配"

#: admin/src/components/WebhookForm.vue
msgid "Save & continue to chain setup"
msgstr "保存并继续链设置"

#: admin/src/components/WebhookForm.vue
msgid "Save & use credential"
msgstr "保存并使用凭据"

#: admin/src/components/WebhookForm.vue
msgid "Save Changes"
msgstr "保存更改"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Save Glue"
msgstr "保存 Glue"

#: admin/src/views/SettingsView.vue
msgid "Save Retry Settings"
msgstr "保存重试设置"

#: admin/src/views/SettingsView.vue
msgid "Save Settings"
msgstr "保存设置"

#: admin/src/views/VaultView.vue
msgid "Save changes"
msgstr "保存更改"

#: admin/src/components/WebhookForm.vue
msgid "Save credential to vault"
msgstr "将凭据保存到保险库"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Save failed"
msgstr "保存失败"

#: admin/src/components/WebhookForm.vue
msgid "Save to vault"
msgstr "保存到保险库"

#: admin/src/components/WebhookForm.vue
msgid "Save webhook first"
msgstr "请先保存 Webhook"

#: admin/src/components/WebhookForm.vue
msgid "Saved credential"
msgstr "已保存的凭据"

#: admin/src/components/ChangeExpiryDialog.vue admin/src/components/PayloadGlueDrawer.vue admin/src/components/WebhookForm.vue admin/src/views/ExternalCronView.vue admin/src/views/VaultView.vue admin/src/views/WebhooksList.vue
msgid "Saving…"
msgstr "正在保存…"

#: admin/src/views/SettingsView.vue
msgid "Scheduler"
msgstr "调度器"

#: admin/src/views/ActivityView.vue
msgid "Schemas"
msgstr "架构"

#: admin/src/components/CreateTokenDialog.vue admin/src/views/ApiTokensView.vue
msgid "Scope"
msgstr "作用域"

#: admin/src/views/ApiTokensView.vue
msgid "Scope reference"
msgstr "作用域参考"

#: admin/src/components/ExportDialog.vue
msgid "Search chains…"
msgstr "搜索链…"

#: admin/src/components/AiStepControls.vue
msgid "Search credentials…"
msgstr "搜索凭据…"

#: admin/src/components/FieldSelector.vue
msgid "Search fields…"
msgstr "搜索字段…"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Search snippets…"
msgstr "搜索代码片段…"

#: admin/src/components/TriggerSelect.vue
msgid "Search triggers..."
msgstr "搜索触发器…"

#: admin/src/components/ChainPicker.vue
msgid "Search webhooks by name or URL…"
msgstr "按名称或 URL 搜索 Webhook…"

#: admin/src/components/ExportDialog.vue
msgid "Search webhooks…"
msgstr "搜索 Webhook…"

#: admin/src/components/ImportDialog.vue
msgid "Secret / token"
msgstr "密钥 / 令牌"

#: admin/src/components/AiStepControls.vue admin/src/views/VaultView.vue
msgid "Secret value"
msgstr "密钥值"

#: admin/src/views/VaultView.vue
msgid ""
"Secrets are encrypted at rest (AES-256-GCM) and never returned by the API — "
"only a masked hint is shown."
msgstr "密钥静态加密（AES-256-GCM）且 API 绝不返回 — 仅显示掩码提示。"

#: admin/src/views/VaultView.vue
msgid "Secrets are encrypted on save and never shown again."
msgstr "密钥在保存时加密，且绝不会再次显示。"

#: admin/src/components/AiProviderSettings.vue
msgid "Select a model"
msgstr "选择模型"

#: admin/src/components/AiProviderSettings.vue
msgid "Select a provider"
msgstr "选择提供商"

#: admin/src/components/WebhookForm.vue
msgid "Select a saved credential"
msgstr "选择已保存的凭据"

#: admin/src/components/WebhookForm.vue
msgid "Select an existing chain or enter a new chain name"
msgstr "选择现有链或输入新链名称"

#: admin/src/components/WebhookForm.vue
msgid "Select at least one upstream webhook to trigger this one"
msgstr "至少选择一个上游 Webhook 以触发该 Webhook"

#: admin/src/components/ChainPicker.vue
msgid "Select chain or create new"
msgstr "选择链或新建"

#: admin/src/components/ImportDialog.vue
msgid "Select credential"
msgstr "选择凭据"

#: admin/src/components/FieldSelector.vue
msgid "Select field…"
msgstr "选择字段…"

#: admin/src/components/FieldSelector.vue
msgid "Select this field"
msgstr "选择此字段"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Select trigger"
msgstr "选择触发器"

#: src/Abilities/AbilityCatalog.php:298
msgid ""
"Send a synchronous test delivery for a webhook using a provided or captured "
"payload, and return the HTTP result so the agent can verify the integration "
"end to end. This makes a REAL delivery now, so for an internal REST "
"endpoint it can actually create or modify data (e.g. create a WordPress "
"user); it requires confirmation."
msgstr ""
"使用提供的或已捕获的数据为 Webhook 发送一次同步测试投递，并返回 HTTP 结果，以便代理端到端验证集成。这会立即执行真实投递，因此对于内部 "
"REST 端点可能真的创建或修改数据（例如创建 WordPress 用户）；需要确认。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Sending…"
msgstr "正在发送…"

#: admin/src/views/VaultView.vue
msgid "Sent as Authorization: Bearer <token>"
msgstr "以 Authorization: Bearer <token> 形式发送"

#: admin/src/components/HealthStatusBar.vue
msgid "Sent today"
msgstr "今日已发送"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Server Error"
msgstr "服务器错误"

#: src/Abilities/AbilityCatalog.php:178
msgid ""
"Set conditional-dispatch rules for a webhook+trigger so only matching "
"events leave the site. conditions MUST be an object "
"{\"enabled\":true,\"type\":\"and\"|\"or\",\"rules\":[{\"field\":\"<dot.path "
"into the captured "
"payload>\",\"operator\":\"equals|not_equals|contains|not_contains|greater_"
"than|less_than|is_empty|is_not_empty|is_true|is_false|array_contains|object_"
"contains\",\"value\":\"...\"}]}. A rule may add an optional "
"\"cast\":\"number\"|\"string\"|\"boolean\"|\"stringify\" to coerce the "
"payload value before comparing (e.g. numeric compare on a string field). A "
"rules item may also be a nested group "
"{\"type\":\"group\",\"match\":\"and\"|\"or\",\"rules\":[...]} (Pro only; "
"without a Pro license only ONE simple rule with type \"and\" is allowed). "
"Run get_trigger_schema first and take field paths from the real captured "
"payload (e.g. \"args.0.form_id\")."
msgstr ""
"为 Webhook+触发器设置条件发送规则，使只有匹配的事件才会离开站点。conditions 必须是对象 "
"{\"enabled\":true,\"type\":\"and\"|\"or\",\"rules\":[{\"field\":\""
"<指向已捕获数据的点路径>\",\"operator\":\"equals|not_equals|contains|not_contains|"
"greater_than|less_than|is_empty|is_not_empty|is_true|is_false|array_"
"contains|object_contains\",\"value\":\"...\"}]}。规则可添加可选的 "
"\"cast\":\"number\"|\"string\"|\"boolean\"|\"stringify\""
"，在比较前转换数据值（例如对字符串字段做数值比较）。rules 项也可以是嵌套组 "
"{\"type\":\"group\",\"match\":\"and\"|\"or\",\"rules\":[...]}（仅限 Pro；没有 Pro "
"许可证时只允许一条 type 为 \"and\" 的简单规则）。请先运行 get_trigger_schema，并从真实捕获的数据中获取字段路径（例如 "
"\"args.0.form_id\"）。"

#: src/Abilities/AbilityCatalog.php:177
msgid "Set conditions"
msgstr "设置条件"

#: admin/src/components/ChangeExpiryDialog.vue admin/src/components/CreateTokenDialog.vue admin/src/components/RotateTokenDialog.vue
msgid "Set expiration date"
msgstr "设置到期日期"

#: src/Abilities/AbilityCatalog.php:161
msgid "Set field mapping"
msgstr "设置字段映射"

#: src/Abilities/AbilityCatalog.php:162
msgid ""
"Set the payload field mapping for a webhook+trigger. field_mapping MUST be "
"an object {\"mappings\":[{\"source\":\"<dot.path in the captured "
"payload>\",\"target\":\"<dot.path in the outgoing "
"body>\",\"cast\":\"number|string|boolean|stringify\" "
"(optional)}],\"excluded\":[\"<dot.path to "
"drop>\"],\"includeUnmapped\":true|false}. It can only move/rename/exclude "
"EXISTING payload fields — static or constant values are NOT supported "
"(inject those with a pre-dispatch Code Glue snippet instead). The mapping "
"runs BEFORE any pre-dispatch snippet, so snippet output cannot be mapped. "
"Run get_trigger_schema first and take source paths from the real captured "
"payload."
msgstr ""
"为 Webhook+触发器设置数据字段映射。field_mapping 必须是对象 "
"{\"mappings\":[{\"source\":\"<捕获数据中的点路径>\",\"target\":\"<发出 body "
"中的点路径>\",\"cast\":\"number|string|boolean|stringify\"（可选）}],\"excluded\":[\""
"<要丢弃的点路径>\"],\"includeUnmapped\":true|false}。它只能移动/重命名/排除已有的数据字段 — "
"不支持静态或常量值（请改用 pre-dispatch Code Glue 代码片段注入）。映射在 pre-dispatch "
"片段之前运行，因此片段的输出无法被映射。请先运行 get_trigger_schema，并从真实捕获的数据中获取 source 路径。"

#: admin/src/App.vue admin/src/views/ActivityView.vue admin/src/views/SettingsView.vue
msgid "Settings"
msgstr "设置"

#: admin/src/views/SettingsView.vue
msgid "Settings saved successfully"
msgstr "设置已成功保存"

#: admin/src/components/BuiltWebhookActions.vue admin/src/components/ShareBuildDialog.vue
msgid "Share this build"
msgstr "分享此配置"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Shared Example"
msgstr "共享示例"

#: admin/src/components/ShareBuildDialog.vue
msgid "Sharing the AI conversation alongside a build is a Pro feature."
msgstr "随配置一起分享 AI 对话是 Pro 功能。"

#: admin/src/components/BuildPublishFields.vue
msgid "Short summary"
msgstr "简短摘要"

#: admin/src/views/VaultView.vue
msgid "Show"
msgstr "显示"

#: admin/src/views/SettingsView.vue
msgid "Show AI Dev Trace panel"
msgstr "显示 AI 开发追踪面板"

#: admin/src/components/AiProviderSettings.vue
msgid "Show all compatible (%d)"
msgstr "显示所有兼容项（%d）"

#: admin/src/components/MappingEditor.vue
msgid "Show full"
msgstr "显示完整"

#: admin/src/components/ImportDialog.vue
msgid "Show in list"
msgstr "在列表中显示"

#: admin/src/components/MappingEditor.vue
msgid "Show less"
msgstr "显示更少"

#: admin/src/views/SettingsView.vue
msgid "Show menu under Tools"
msgstr "在「工具」下显示菜单"

#: admin/src/views/VaultView.vue
msgid "Show password"
msgstr "显示密码"

#: admin/src/components/AiProviderSettings.vue
msgid "Show recommended"
msgstr "显示推荐项"

#: admin/src/views/VaultView.vue
msgid "Show secret"
msgstr "显示密钥"

#: admin/src/components/ImportDialog.vue
msgid "Show “%s” in list"
msgstr "在列表中显示“%s”"

#: admin/src/components/LogsTable.vue admin/src/views/QueueView.vue
msgid "Showing %1$d to %2$d of %3$d"
msgstr "显示第 %1$d 至 %2$d 项，共 %3$d 项"

#: admin/src/views/ProView.vue
msgid "Sites allowed"
msgstr "允许的站点"

#: admin/src/views/ProView.vue
msgid "Sites used"
msgstr "已用站点"

#: admin/src/views/SettingsView.vue
msgid "Size"
msgstr "大小"

#: admin/src/components/AiStepControls.vue
msgid "Skip"
msgstr "跳过"

#: admin/src/components/ImportDialog.vue
msgid "Skip the duplicates"
msgstr "跳过重复项"

#: admin/src/components/AiStepPanel.vue admin/src/views/LogsList.vue
msgid "Skipped"
msgstr "已跳过"

#: admin/src/components/LogsTable.vue
msgid "Skipped:"
msgstr "已跳过："

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Snippet Name"
msgstr "代码片段名称"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Snippet saved and assigned."
msgstr "代码片段已保存并分配。"

#: admin/src/views/ActivityView.vue
msgid "Snippets"
msgstr "代码片段"

#: admin/src/components/ImportDialog.vue
msgid "Some parts were left out"
msgstr "部分内容已被略过"

#: src/Services/Ai/AgentOrchestrator.php:173
#. translators: %s: comma-separated ability names.
#, php-format
msgid ""
"Some proposed steps were removed because this site cannot run them: %s. The "
"remaining plan may be incomplete. If these are Code Glue abilities, make "
"sure Webhook Actions Pro is installed, up to date and licensed."
msgstr ""
"部分建议的步骤已被移除，因为本站点无法执行它们：%s。剩余方案可能不完整。如果这些是 Code Glue 能力，请确保已安装最新版且有有效许可证的 "
"Webhook Actions Pro。"

#: admin/src/components/MappingEditor.vue
msgid "Source"
msgstr "源"

#: admin/src/components/MappingEditor.vue
msgid "Source path (e.g., args.0.user_id)"
msgstr "源路径（例如 args.0.user_id）"

#: src/Api/ChainsController.php:260
msgid "Source webhook does not exist."
msgstr "源 Webhook 不存在。"

#: admin/src/views/AiBuilderView.vue
msgid "Start a new build, then describe what you want to integrate."
msgstr "开始新的构建，然后描述您想集成的内容。"

#: admin/src/views/ProView.vue
msgid "Starter"
msgstr "入门版"

#: admin/src/views/ExternalCronView.vue
msgid "Stats unavailable"
msgstr "统计数据不可用"

#: admin/src/components/LogsTable.vue
msgid "Status"
msgstr "状态"

#: admin/src/components/AiStepPanel.vue
msgid "Step"
msgstr "步骤"

#: admin/src/views/VaultView.vue
msgid ""
"Store reusable authentication secrets once, then reference them from your "
"webhooks. Secrets are encrypted at rest and are never shown again after "
"saving — not even to you."
msgstr "一次性存储可重用的认证密钥，然后在你的 Webhook 中引用它们。密钥静态加密，保存后绝不会再次显示 — 即使对你也是如此。"

#: admin/src/components/ExternalCronChart.vue admin/src/components/HealthStatusBar.vue admin/src/components/TestWebhookDrawer.vue admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Success"
msgstr "成功"

#: admin/src/components/HealthStatusBar.vue
msgid "Success Rate"
msgstr "成功率"

#: admin/src/components/ExternalCronChart.vue
msgid "Success rate 24h"
msgstr "24 小时成功率"

#: admin/src/App.vue
msgid "Switch to dark mode"
msgstr "切换到深色模式"

#: admin/src/components/FieldSelector.vue
msgid "Switch to field selector"
msgstr "切换到字段选择器"

#: admin/src/App.vue
msgid "Switch to light mode"
msgstr "切换到浅色模式"

#: admin/src/components/FieldSelector.vue
msgid "Switch to manual input"
msgstr "切换到手动输入"

#: admin/src/components/WebhookCardContent.vue
msgid "Sync"
msgstr "同步"

#: admin/src/components/WebhookForm.vue
msgid "Synchronous Execution"
msgstr "同步执行"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Synchronous delivery"
msgstr "同步投递"

#: admin/src/components/WebhookCardContent.vue
msgid "Synchronous execution"
msgstr "同步执行"

#: admin/src/views/ActivityView.vue
msgid "System"
msgstr "系统"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Tags (comma-separated)"
msgstr "标签（以逗号分隔）"

#: admin/src/components/MappingEditor.vue admin/src/views/ExternalCronView.vue
msgid "Target"
msgstr "目标"

#: admin/src/components/LogsTable.vue
msgid "Target URL"
msgstr "目标 URL"

#: admin/src/components/MappingEditor.vue
msgid "Target path (e.g., user_id)"
msgstr "目标路径（例如 user_id）"

#: src/Api/ChainsController.php:263
msgid "Target webhook does not exist."
msgstr "目标 Webhook 不存在。"

#: src/Api/TriggersController.php:145
msgid "Taxonomy"
msgstr "分类法"

#: admin/src/components/WebhookCardContent.vue admin/src/views/LogsList.vue admin/src/views/WebhookEdit.vue
msgid "Test"
msgstr "测试"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Test Webhook"
msgstr "测试 Webhook"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Test failed."
msgstr "测试失败。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Test queued — it will run on the next cron cycle."
msgstr "测试已加入队列 — 它将在下个 cron 周期运行。"

#: admin/src/views/ProView.vue
msgid "Test webhook delivery on demand"
msgstr "按需测试 Webhook 投递"

#: src/Abilities/AbilityCatalog.php:297
msgid "Test-dispatch a webhook"
msgstr "测试发送 Webhook"

#: src/Abilities/TestAbilities.php:79
msgid "That URL is not allowed (private, reserved or invalid host)."
msgstr "不允许该 URL（私有、保留或无效的主机）。"

#: src/Abilities/WriteAbilities.php:211
msgid "That link would create a cycle across an existing chain."
msgstr "该环节会在现有链中产生循环。"

#: src/Api/ChainsController.php:267
msgid "That link would create a cycle in the chain graph."
msgstr "该连接会在链图中形成循环。"

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid ""
"The %1$srecommended approach is asynchronous delivery%2$s via the built-in "
"system cron or an external cron job."
msgstr "%1$s推荐的方式是异步投递%2$s，通过内置系统 cron 或外部 cron 任务。"

#: src/Services/Ai/WpAiClientTransport.php:149
msgid "The AI Client returned no text."
msgstr "AI 客户端未返回文本。"

#: src/Services/Ai/AnthropicTransport.php:134
#: src/Services/Ai/GoogleTransport.php:139
#: src/Services/Ai/OpenAiTransport.php:133
msgid "The AI provider key could not be decrypted."
msgstr "无法解密 AI 提供商密钥。"

#: src/Services/Ai/AgentOrchestrator.php:387
#. translators: %s: the AI provider's error message.
#, php-format
msgid ""
"The AI provider request failed mid-turn (%s). Progress so far is saved — "
"send the message again to retry from here."
msgstr "AI 提供商请求在回合中途失败（%s）。目前的进度已保存 — 重新发送消息即可从此处继续。"

#: src/Services/Ai/AnthropicTransport.php:88
#: src/Services/Ai/GoogleTransport.php:95
#: src/Services/Ai/OpenAiTransport.php:93
msgid "The AI provider returned an error."
msgstr "AI 提供商返回错误。"

#: src/Services/Ai/AnthropicTransport.php:103
#: src/Services/Ai/GoogleTransport.php:108
#: src/Services/Ai/OpenAiTransport.php:102
msgid "The AI provider returned no text."
msgstr "AI 提供商未返回文本。"

#: admin/src/views/ProView.vue
msgid "The Pro plugin is installed but not activated in WordPress."
msgstr "Pro 插件已安装但未在 WordPress 中启用。"

#: admin/src/components/WebhookForm.vue
msgid ""
"The URL where webhook payloads will be sent. Supports %1$s{{ field.path "
"}}%2$s templates — resolved against the final payload, after code glue "
"applied."
msgstr ""
"Webhook 数据将发送到的 URL。支持 %1$s{{ field.path }}%2$s 模板 — 在应用 code glue "
"之后，根据最终数据进行解析。"

#: src/Services/Ai/WpAiClientTransport.php:73
msgid "The WordPress AI Client is not available."
msgstr "WordPress AI 客户端不可用。"

#: admin/src/views/SettingsView.vue
msgid ""
"The base number of seconds used to calculate each retry delay. Exact role "
"depends on the strategy: multiplier for exponential, interval for linear, "
"constant for fixed."
msgstr "用于计算每次重试延迟的基础秒数。具体作用取决于策略：指数策略为倍数，线性策略为间隔，固定策略为常量。"

#: src/Services/Export/BuildImporter.php:254
#. translators: %s: chain name.
#, php-format
msgid "The chain \"%s\" could not be created."
msgstr "无法创建链“%s”。"

#: admin/src/views/WebhooksList.vue
msgid ""
"The chain and all its links will be removed. Member webhooks stay, but lose "
"their chain-link triggers."
msgstr "该链及其所有连接将被移除。成员 Webhook 会保留，但会失去其链接触发器。"

#: src/Abilities/WriteAbilities.php:332
#. translators: 1: rule field path, 2: operator
#, php-format
msgid ""
"The condition rule on \"%1$s\" (%2$s) has an empty value — ask the user for "
"the value before setting this condition."
msgstr "\"%1$s\"（%2$s）上的条件规则值为空——请在设置此条件前询问用户该值。"

#: src/Services/Ai/AnthropicTransport.php:130
#: src/Services/Ai/GoogleTransport.php:135
#: src/Services/Ai/OpenAiTransport.php:129
msgid "The configured AI provider key was not found in the vault."
msgstr "在保险库中找不到已配置的 AI 提供商密钥。"

#: admin/src/views/VaultView.vue
msgid ""
"The encryption key lives in %1$swp-config.php%2$s (%1$sFSWA_SECRET_KEY%2$s) "
"and is not stored in the database. A database-only dump cannot decrypt your "
"secrets."
msgstr ""
"加密密钥位于 "
"%1$swp-config.php%2$s（%1$sFSWA_SECRET_KEY%2$s）中，不存储在数据库中。仅有数据库转储无法解密你的密钥。"

#: src/Services/Ai/ProbeInterpreter.php:28
#. translators: %s: underlying HTTP error message.
#, php-format
msgid ""
"The endpoint could not be reached (%s). Check the URL is correct and "
"publicly reachable, then retry."
msgstr "无法连接到端点（%s）。请检查 URL 是否正确且可公开访问，然后重试。"

#: src/Services/Ai/ProbeInterpreter.php:31
msgid ""
"The endpoint could not be reached. Check the URL is correct and publicly "
"reachable, then retry."
msgstr "无法连接到端点。请检查 URL 是否正确且可公开访问，然后重试。"

#: src/Services/Ai/ProbeInterpreter.php:43
#. translators: %d: HTTP status code (401 or 403).
#, php-format
msgid ""
"The endpoint responded %d — it needs authentication. Add a credential to "
"the webhook, then retry."
msgstr "端点响应 %d——需要身份验证。请为 Webhook 添加凭据后重试。"

#: src/Services/Ai/ProbeInterpreter.php:55
#. translators: %d: HTTP status code (404, 405 or 410).
#, php-format
msgid ""
"The endpoint responded %d — the URL may be wrong or not accept this "
"request. Double-check the endpoint URL on the webhook, then retry."
msgstr "端点响应 %d——URL 可能有误或不接受此请求。请仔细核对 Webhook 的端点 URL 后重试。"

#: admin/src/components/BuildPublishProgress.vue
msgid ""
"The page appears at this address once the website finishes rebuilding — it "
"is safe to close this."
msgstr "网站重新构建完成后，页面就会出现在此地址 — 你可以放心关闭此窗口。"

#: admin/src/components/TriggerSchemaPanel.vue
msgid ""
"The payload shape is the same for a trigger everywhere, so a new webhook "
"can borrow an example already captured elsewhere. Turn off to require this "
"webhook to capture its own."
msgstr "同一触发器的数据结构在任何地方都相同，因此新 Webhook 可以借用已在别处捕获的示例。关闭后将要求此 Webhook 捕获自己的示例。"

#: admin/src/components/WebhookForm.vue
msgid ""
"The secret is resolved securely at delivery time and never exposed. Manage "
"credentials in the"
msgstr "密钥在投递时安全解析，绝不暴露。请在以下位置管理凭据"

#: src/Abilities/TestAbilities.php:162
msgid "The webhook has no triggers; provide one."
msgstr "该 Webhook 没有触发器；请提供一个。"

#: src/Services/Ai/PlanExecutor.php:155
msgid "There is no plan to run yet."
msgstr "还没有可运行的计划。"

#: src/Services/Ai/PlanExecutor.php:449
msgid "There is nothing left to revert."
msgstr "没有可再还原的内容。"

#: src/Services/Ai/PlanExecutor.php:395
msgid "There is nothing to revert."
msgstr "没有可还原的内容。"

#: admin/src/components/WebhookForm.vue
msgid ""
"These are the primary way to send data for %1$s requests. If none are set, "
"the mapped payload is sent as %2$s?payload=&lt;json&gt;%3$s."
msgstr "这是 %1$s 请求发送数据的主要方式。如果未设置，则映射后的数据会以 %2$s?payload=&lt;json&gt;%3$s 形式发送。"

#: admin/src/views/WebhooksList.vue
msgid "They will move to the Unchained section with “No trigger assigned”."
msgstr "它们将移至“未链接”部分，并显示“未分配触发器”。"

#: admin/src/views/AiBuilderView.vue
msgid "Thinking…"
msgstr "思考中…"

#: admin/src/components/LogsTable.vue
msgid "This action cannot be undone."
msgstr "此操作无法撤销。"

#: admin/src/views/SettingsView.vue
msgid "This action cannot be undone. All logs will be permanently deleted."
msgstr "此操作无法撤销。所有日志将被永久删除。"

#: admin/src/components/BuildPublishFields.vue
msgid "This becomes the page title and headline."
msgstr "它将成为页面标题和大标题。"

#: admin/src/components/ImportDialog.vue
msgid ""
"This build calls this site’s own WP REST API. Reuse or create a WordPress "
"Application Password — there is no secret to paste."
msgstr "此配置会调用本站自身的 WP REST API。复用或新建一个 WordPress 应用程序密码即可——无需粘贴任何密钥。"

#: admin/src/components/ImportDialog.vue
msgid "This build contains %d Code Glue snippet"
msgid_plural "This build contains %d Code Glue snippets"
msgstr[0] "此配置包含 %d 个 Code Glue 代码片段"

#: admin/src/components/ImportDialog.vue
msgid ""
"This build includes a Build-with-AI transcript, shown for reference on the "
"source — it is not imported."
msgstr "此配置附有“用 AI 构建”的对话记录，仅在来源处供参考——不会被导入。"

#: admin/src/components/ImportDialog.vue
msgid "This build needs authorization credentials"
msgstr "此配置需要授权凭据"

#: src/Api/CredentialsController.php:379
#. translators: %d: number of webhooks using this credential
#, php-format
msgid "This credential is used by %d webhook. Detach it or delete with force."
msgid_plural "This credential is used by %d webhooks. Detach them or delete with force."
msgstr[0] "该凭据被 %d 个 Webhook 使用。请将其分离或强制删除。"

#: admin/src/components/PayloadGlueDrawer.vue
msgid ""
"This is the final payload on the wire — used for Transformed Conditions and "
"URL/param templates below."
msgstr "这是实际发送的最终数据——用于下面的转换后条件以及网址/参数模板。"

#: admin/src/components/WebhookForm.vue
msgid ""
"This moves the Authorization value into the encrypted vault and references "
"it by name. The webhook keeps working unchanged."
msgstr "这会将 Authorization 值移入加密保险库并按名称引用。该 Webhook 将照常工作，不受影响。"

#: admin/src/views/VaultView.vue
msgid "This permanently removes the stored secret."
msgstr "这将永久移除已存储的密钥。"

#: admin/src/views/AiBuilderView.vue
msgid ""
"This removes the conversation and its build history. It does not delete any "
"webhooks it created."
msgstr "这将删除该对话及其构建历史。不会删除其创建的任何 Webhook。"

#: src/Abilities/AbilityCatalog.php:302
msgid ""
"This sends a REAL delivery to the endpoint right now — it is not a dry run. "
"If the webhook targets this site’s own REST API (e.g. wp-json/wp/v2/users) "
"it can actually create or modify data, such as creating a WordPress user. "
"Confirm to send it for real."
msgstr ""
"这会立即向端点发送一次真实投递 — 不是演练。如果 Webhook 指向本站点自身的 REST API（例如 "
"wp-json/wp/v2/users），它可能真的创建或修改数据，例如创建 WordPress 用户。确认后将真实发送。"

#: admin/src/components/AiProviderSettings.vue
msgid ""
"This site no longer includes the WordPress 7.0 AI Client. Connect a "
"provider key below, or restore WordPress 7.0 or later to use your "
"connectors again."
msgstr "此站点不再包含 WordPress 7.0 AI 客户端。请在下方连接提供商密钥，或恢复到 WordPress 7.0 及以上版本以继续使用您的连接器。"

#: admin/src/components/AiStepControls.vue
msgid "This step goes live or changes data. Confirm to run it."
msgstr "此步骤将上线或更改数据。请确认后运行。"

#: admin/src/components/AiStepControls.vue
msgid ""
"This step needs a stored auth credential. Pick one from the vault or create "
"a new one — the secret stays in the vault and is injected only at dispatch."
msgstr "此步骤需要已存储的身份验证凭据。从保险库中选择一个或新建一个 — 密钥保留在保险库中，仅在投递时注入。"

#: admin/src/components/RotateTokenDialog.vue
msgid ""
"This token is %1$sexpired%2$s. Rotating will issue a new secret — but you "
"must also extend the expiry, otherwise the token will remain invalid "
"immediately after rotation."
msgstr "该令牌%1$s已过期%2$s。轮换将颁发新密钥 — 但你还必须延长到期时间，否则令牌在轮换后将立即保持无效。"

#: admin/src/components/TokenCreatedDialog.vue
msgid ""
"This token will only be shown once. Copy it now — you won't be able to see "
"it again."
msgstr "该令牌只会显示一次。请立即复制 — 你将无法再次看到它。"

#: admin/src/views/VaultView.vue
msgid ""
"This usually means the encryption key changed (e.g. %1$sFSWA_SECRET_KEY%2$s "
"or WordPress salts). Edit each affected credential and re-enter its secret "
"to fix it."
msgstr ""
"这通常意味着加密密钥已更改（例如 %1$sFSWA_SECRET_KEY%2$s 或 WordPress "
"盐值）。请编辑每个受影响的凭据并重新输入其密钥以修复。"

#: admin/src/components/WebhookForm.vue
msgid ""
"This webhook executes synchronously. Slow or unreachable endpoints will "
"delay page loads and frontend interactions."
msgstr "该 Webhook 同步执行。缓慢或无法访问的端点将延迟页面加载和前端交互。"

#: admin/src/views/WebhooksList.vue
msgid "This webhook participates in a chain:"
msgid_plural "This webhook participates in chains:"
msgstr[0] "该 Webhook 参与了一个链："

#: admin/src/views/WebhooksList.vue
msgid "This webhook will become an orphan:"
msgid_plural "These webhooks will become orphans:"
msgstr[0] "该 Webhook 将变为孤立："

#: admin/src/components/WebhookForm.vue admin/src/views/WebhooksList.vue
msgid ""
"This webhook will fire inline during the WordPress request that triggers "
"it, bypassing the queue. Slow or unreachable endpoints can %1$sdelay page "
"loads, form submissions, and other frontend interactions.%2$s"
msgstr ""
"该 Webhook 将在触发它的 WordPress "
"请求中内联触发，绕过队列。缓慢或无法访问的端点可能会%1$s延迟页面加载、表单提交及其他前端交互。%2$s"

#: admin/src/components/ConditionsEditor.vue
msgid "This webhook will run on every trigger."
msgstr "该 Webhook 将在每次触发时运行。"

#: admin/src/views/SettingsView.vue
msgid "This will permanently delete all logs from the database."
msgstr "这将从数据库中永久删除所有日志。"

#: admin/src/views/WebhooksList.vue
msgid ""
"This will permanently delete the webhook and all associated data. This "
"action cannot be undone."
msgstr "这将永久删除该 Webhook 及所有相关数据。此操作无法撤销。"

#: admin/src/views/ApiTokensView.vue
msgid ""
"This will permanently revoke the token. Any integrations using it will stop "
"working immediately."
msgstr "这将永久吊销该令牌。任何使用它的集成都将立即停止工作。"

#: admin/src/views/ProView.vue
msgid ""
"This will remove the license from this site and free up a slot. You can "
"reactivate at any time."
msgstr "这将从本站点移除许可证并释放一个名额。你可以随时重新激活。"

#: admin/src/components/ui/DateTimePicker.vue
msgid "Time"
msgstr "时间"

#: admin/src/views/ActivityView.vue
msgid "Timestamp"
msgstr "时间戳"

#: admin/src/views/ActivityView.vue
msgid "To date"
msgstr "结束日期"

#: admin/src/views/LogsList.vue admin/src/views/QueueView.vue
msgid "To date & time"
msgstr "结束日期和时间"

#: admin/src/components/HealthStatusBar.vue
msgid "Today"
msgstr "今天"

#: admin/src/components/AiStepControls.vue admin/src/views/ActivityView.vue
msgid "Token"
msgstr "令牌"

#: admin/src/components/TokenCreatedDialog.vue
msgid "Token created"
msgstr "令牌已创建"

#: admin/src/components/CreateTokenDialog.vue
msgid "Token name"
msgstr "令牌名称"

#: src/Api/ApiTokensController.php:138 admin/src/components/CreateTokenDialog.vue
msgid "Token name is required."
msgstr "令牌名称为必填项。"

#: admin/src/components/ChangeExpiryDialog.vue admin/src/components/RotateTokenDialog.vue
msgid "Token will never expire."
msgstr "令牌将永不过期。"

#: admin/src/views/ActivityView.vue
msgid "Token: %s"
msgstr "令牌：%s"

#: admin/src/views/ApiTokensView.vue
msgid ""
"Tokens allow external systems to access the REST API without a browser "
"session. Token management is always admin-only regardless of scope."
msgstr "令牌允许外部系统无需浏览器会话即可访问 REST API。无论作用域如何，令牌管理始终仅限管理员。"

#: src/Abilities/TestAbilities.php:93
msgid "Too many probe calls — try again in a minute."
msgstr "探测调用过多——请一分钟后重试。"

#: admin/src/views/QueueView.vue
msgid "Total"
msgstr "总计"

#: admin/src/views/LogsList.vue admin/src/views/WebhookLogs.vue
msgid "Total (7 days)"
msgstr "总计（7 天）"

#: admin/src/components/HealthStatusBar.vue
msgid "Total (7d)"
msgstr "总计（7 天）"

#: admin/src/views/SettingsView.vue
msgid "Total Logs"
msgstr "日志总数"

#: admin/src/components/WebhookForm.vue
msgid ""
"Total delivery attempts for this webhook, including the first try. "
"Overrides the global setting. Once reached the job is permanently failed."
msgstr "该 Webhook 的总投递尝试次数，包括首次尝试。覆盖全局设置。一旦达到，任务即永久失败。"

#: admin/src/views/SettingsView.vue
msgid ""
"Total delivery attempts per webhook (including the first try). Leave empty "
"for the plugin default of 5."
msgstr "每个 Webhook 的总投递尝试次数（含首次尝试）。留空则使用插件默认值 5。"

#: admin/src/views/SettingsView.vue
msgid ""
"Total delivery attempts per webhook, including the first try. Once this "
"number is reached the job is permanently failed."
msgstr "每个 Webhook 的总投递尝试次数，含首次尝试。一旦达到此次数，任务将被永久标记为失败。"

#: admin/src/components/HealthStatusBar.vue
msgid "Total sent"
msgstr "已发送总计"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Transformed"
msgstr "转换后"

#: admin/src/components/LogsTable.vue
msgid "Transformed Payload (Sent)"
msgstr "转换后数据（已发送）"

#: admin/src/components/MappingEditor.vue
msgid "Transformed Payload Preview"
msgstr "转换后数据预览"

#: admin/src/components/LogsTable.vue admin/src/components/TestWebhookDrawer.vue
msgid "Trigger"
msgstr "触发器"

#: src/Api/WebhooksController.php:122
msgid "Trigger name to use for the test."
msgstr "用于测试的触发器名称。"

#: src/Api/SchemasController.php:67
#: src/Api/SchemasController.php:84
#: src/Api/SchemasController.php:113
#: src/Api/SchemasController.php:134
msgid "Trigger name."
msgstr "触发器名称。"

#: admin/src/components/MappingEditor.vue
msgid "Trigger this event to capture an example payload for mapping."
msgstr "触发该事件以捕获用于映射的示例数据。"

#: admin/src/components/ChainPicker.vue
msgid "Trigger this webhook when the following webhooks complete"
msgstr "当以下 Webhook 完成时触发该 Webhook"

#: admin/src/views/WebhooksList.vue
msgid "Trigger webhooks on WordPress events"
msgstr "在 WordPress 事件上触发 Webhook"

#: admin/src/components/TestWebhookDrawer.vue admin/src/views/QueueView.vue
msgid "Trigger:"
msgstr "触发器："

#: admin/src/components/WebhookForm.vue
msgid "Triggers"
msgstr "触发器"

#: admin/src/views/VaultView.vue
msgid "Type"
msgstr "类型"

#: admin/src/components/WebhookForm.vue
msgid "URL Query Parameters"
msgstr "URL 查询参数"

#: admin/src/components/WebhookForm.vue
msgid "URL must be HTTP or HTTPS"
msgstr "URL 必须是 HTTP 或 HTTPS"

#: admin/src/components/WebhookCardContent.vue
msgid "URL templates ({{ }})"
msgstr "网址模板（{{ }}）"

#: src/Api/WebhooksController.php:764
msgid "URL to send the webhook to."
msgstr "发送 Webhook 的目标 URL。"

#: admin/src/views/QueueView.vue
msgid "URL:"
msgstr "URL："

#: admin/src/views/WebhooksList.vue
msgid "Unchained"
msgstr "未链接"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Undo last change"
msgstr "撤销上次更改"

#: src/Api/WebhooksController.php:75
#: src/Api/WebhooksController.php:100
#: src/Api/WebhooksController.php:112
#: src/Api/WebhooksController.php:747
msgid "Unique identifier for the webhook."
msgstr "Webhook 的唯一标识符。"

#: src/Api/AgentController.php:167
#: src/Api/AgentController.php:230
msgid "Unknown AI provider."
msgstr "未知的 AI 提供商。"

#: admin/src/views/QueueView.vue
msgid "Unknown Webhook"
msgstr "未知 Webhook"

#: src/Abilities/AbilityRegistry.php:95
#. translators: %s: ability name
#, php-format
msgid "Unknown ability: %s"
msgstr "未知能力：%s"

#: src/Abilities/WriteAbilities.php:322
#. translators: 1: the rejected operator, 2: list of valid operators
#, php-format
msgid "Unknown condition operator \"%1$s\". Valid operators: %2$s."
msgstr "未知的条件运算符 \"%1$s\"。有效的运算符：%2$s。"

#: admin/src/views/ExternalCronView.vue
msgid "Unknown error"
msgstr "未知错误"

#: admin/src/views/ProView.vue
msgid "Unlimited conditions per trigger"
msgstr "每个触发器不限条件数量"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Unsaved changes"
msgstr "未保存的更改"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Untitled"
msgstr "无标题"

#: admin/src/components/AiBuildsBar.vue
msgid "Untitled build"
msgstr "未命名构建"

#: admin/src/components/PayloadGlueDrawer.vue
msgid "Update Snippet"
msgstr "更新代码片段"

#: admin/src/components/AiStepControls.vue
msgid "Update URL & retry"
msgstr "更新 URL 并重试"

#: src/Abilities/AbilityCatalog.php:138
msgid "Update a webhook"
msgstr "更新 Webhook"

#: src/Abilities/AbilityCatalog.php:139
msgid ""
"Update an existing webhook (endpoint, method, triggers, headers, "
"credential)."
msgstr "更新现有 Webhook（端点、方法、触发器、标头、凭据）。"

#: admin/src/views/VaultView.vue
msgid ""
"Update this credential. Leave secret fields blank to keep the existing "
"value."
msgstr "更新此凭据。将密钥字段留空可保留现有值。"

#: admin/src/components/ChangeExpiryDialog.vue
msgid ""
"Update when this token expires. Removing the expiry makes it valid "
"indefinitely."
msgstr "更新该令牌的到期时间。移除到期时间将使其无限期有效。"

#: admin/src/components/ui/UpgradeBadge.vue
msgid "Upgrade"
msgstr "升级"

#: admin/src/views/ProView.vue
msgid "Upgrade to Pro"
msgstr "升级到 Pro"

#: admin/src/components/AiProviderSettings.vue
msgid "Use"
msgstr "使用"

#: admin/src/components/TokenCreatedDialog.vue
msgid "Use %1$sX-FSWA-Token: %2$s%3$s in your requests."
msgstr "在你的请求中使用 %1$sX-FSWA-Token: %2$s%3$s。"

#: admin/src/views/AiBuilderView.vue
msgid ""
"Use a provider configured in WordPress, or add your own API keys. Keys are "
"encrypted in your Credentials Vault and never returned over the API."
msgstr "使用在 WordPress 中配置的提供商，或添加您自己的 API 密钥。密钥加密存储在您的凭据保险库中，绝不会通过 API 返回。"

#: admin/src/components/ImportDialog.vue
msgid "Use an existing vault credential"
msgstr "使用保险库中已有的凭据"

#: admin/src/components/AiStepControls.vue
msgid "Use credential & continue"
msgstr "使用凭据并继续"

#: admin/src/components/AiStepControls.vue
msgid "Use existing"
msgstr "使用现有"

#: admin/src/components/WebhookForm.vue
msgid "Use global setting"
msgstr "使用全局设置"

#: admin/src/components/WebhookForm.vue
msgid "Use other Webhooks as triggers"
msgstr "使用其他 Webhook 作为触发器"

#: admin/src/views/ActivityView.vue
msgid "User #%s"
msgstr "用户 #%s"

#: admin/src/views/ActivityView.vue
msgid "User ID"
msgstr "用户 ID"

#: admin/src/views/ActivityView.vue
msgid "User prompt"
msgstr "用户提示"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "User trigger"
msgstr "用户触发器"

#: admin/src/components/AiStepControls.vue admin/src/components/ImportDialog.vue admin/src/views/VaultView.vue
msgid "Username"
msgstr "用户名"

#: src/Api/TriggersController.php:141
msgid "Users"
msgstr "用户"

#: admin/src/components/WebhookForm.vue
msgid ""
"Value for the Authorization header (e.g., \"Bearer your_token_goes_here\" "
"or \"Basic your_encoded_base64(username:password)\"). For better security, "
"store secrets in the"
msgstr ""
"Authorization 标头的值（例如“Bearer your_token_goes_here”或“Basic "
"your_encoded_base64(username:password)”）。为获得更好的安全性，请将密钥存储在"

#: admin/src/components/WebhookForm.vue
msgid ""
"Values support dot-notation paths into the outgoing payload (e.g. "
"%1$sevent.id%2$s) or static strings."
msgstr "值支持指向传出数据的点号路径（例如 %1$sevent.id%2$s）或静态字符串。"

#: admin/src/components/TestWebhookDrawer.vue
msgid "View full log"
msgstr "查看完整日志"

#: admin/src/components/TestWebhookDrawer.vue
msgid "View in Logs"
msgstr "在日志中查看"

#: admin/src/components/WebhookCardContent.vue
msgid "View logs"
msgstr "查看日志"

#: admin/src/views/LogsList.vue
msgid "View webhook delivery logs"
msgstr "查看 Webhook 投递日志"

#: admin/src/components/CreateTokenDialog.vue
msgid "View webhooks, logs, queue, health, triggers, schemas"
msgstr "查看 Webhook、日志、队列、健康状况、触发器、架构"

#: admin/src/components/AiProviderSettings.vue
msgid "WP Webhooks AI"
msgstr "WP Webhooks AI"

#: admin/src/components/AiProviderSettings.vue
msgid "WP Webhooks AI (included)"
msgstr "WP Webhooks AI（已包含）"

#: admin/src/components/AiProviderSettings.vue
msgid ""
"WP Webhooks AI is included with your Pro license — no API keys needed. Your "
"own keys and WordPress connectors remain available."
msgstr "WP Webhooks AI 已包含在您的 Pro 许可证中 — 无需 API 密钥。您自己的密钥和 WordPress 连接器仍然可用。"

#: admin/src/views/ExternalCronView.vue admin/src/views/SettingsView.vue
msgid "WP-Cron"
msgstr "WP-Cron"

#: admin/src/views/SettingsView.vue
msgid "WP-Cron Fallback"
msgstr "WP-Cron 后备"

#: admin/src/components/WebhookForm.vue admin/src/views/SettingsView.vue
msgid "Wait %s"
msgstr "等待 %s"

#: admin/src/views/SettingsView.vue
msgid "Wait before each retry"
msgstr "每次重试前的等待时间"

#: admin/src/components/AiStepPanel.vue
msgid "Waiting for earlier steps…"
msgstr "等待前面的步骤…"

#: admin/src/components/TriggerSchemaPanel.vue
msgid "Waiting for trigger to capture example payload..."
msgstr "正在等待触发器以捕获示例数据…"

#: admin/src/components/LogsTable.vue admin/src/components/ShareBuildDialog.vue
msgid "Webhook"
msgstr "Webhook"

#: admin/src/views/WebhookLogs.vue
msgid "Webhook #%s"
msgstr "Webhook #%s"

#: src/Abilities/AbilityRegistrar.php:41
#: src/Controllers/AdminController.php:38
#: src/Controllers/AdminController.php:39
#: src/Controllers/AdminController.php:46
#: src/Controllers/AdminController.php:47
msgid "Webhook Actions"
msgstr ""

#: flowsystems-webhook-actions.php
#. Plugin Name of the plugin
msgid "Webhook Actions - build automations and integrations with AI help"
msgstr "Webhook Actions — 借助 AI 构建自动化与集成"

#: admin/src/views/WebhooksList.vue
msgid ""
"Webhook Actions Pro is inactive, so assigned Code Glue snippets are skipped "
"and {{ }} URL templates are sent literally. Field mapping and conditions "
"still work. Reactivate Pro to restore these — no data is lost."
msgstr ""
"Webhook Actions Pro 未激活，因此已分配的 Code Glue 代码片段会被跳过，{{ }} "
"网址模板将按原样发送。字段映射和条件仍然有效。重新激活 Pro 即可恢复——数据不会丢失。"

#: admin/src/components/WebhookCardContent.vue
msgid ""
"Webhook Actions Pro is inactive, so this webhook dispatches without: %s. "
"Reactivate Pro to restore it."
msgstr "Webhook Actions Pro 未激活，因此此 Webhook 在发送时缺少：%s。重新激活 Pro 即可恢复。"

#: src/Controllers/AdminController.php:218
msgid ""
"Webhook Actions by Flow Systems: Your webhooks have been migrated to the "
"new database format."
msgstr "Webhook Actions by Flow Systems：你的 Webhook 已迁移到新的数据库格式。"

#: src/Api/SchemasController.php:46
#: src/Api/SchemasController.php:62
#: src/Api/SchemasController.php:79
#: src/Api/SchemasController.php:108
#: src/Api/SchemasController.php:129
msgid "Webhook ID."
msgstr "Webhook ID。"

#: admin/src/components/WebhookForm.vue
msgid "Webhook auth"
msgstr "Webhook 认证"

#: admin/src/views/SettingsView.vue
msgid "Webhook delivery logs older than this will be automatically deleted."
msgstr "早于此期限的 Webhook 投递日志将被自动删除。"

#: src/Api/WebhooksController.php:551
msgid "Webhook has no triggers configured."
msgstr "该 Webhook 未配置触发器。"

#: admin/src/components/BuiltWebhookActions.vue
msgid "Webhook is live."
msgstr "Webhook 已上线。"

#: src/Api/WebhooksController.php:240
msgid "Webhook name is required."
msgstr "Webhook 名称为必填项。"

#: src/Api/LogsController.php:386
#: src/Api/SchemasController.php:171
#: src/Api/SchemasController.php:231
#: src/Api/SchemasController.php:276
#: src/Api/SchemasController.php:387
#: src/Api/SchemasController.php:419
#: src/Api/WebhooksController.php:207
#: src/Api/WebhooksController.php:340
#: src/Api/WebhooksController.php:450
#: src/Api/WebhooksController.php:502
#: src/Api/WebhooksController.php:542
msgid "Webhook not found."
msgstr "未找到 Webhook。"

#: admin/src/App.vue admin/src/components/ExportDialog.vue admin/src/views/ActivityView.vue admin/src/views/WebhooksList.vue
msgid "Webhooks"
msgstr "Webhook"

#: admin/src/components/BuildPublishFields.vue
msgid "Website"
msgstr "网站"

#: admin/src/components/ChainPicker.vue admin/src/views/WebhooksList.vue
msgid "What does this chain automate? Markdown supported."
msgstr "这条链自动化了什么？支持 Markdown。"

#: admin/src/components/ShareBuildDialog.vue
msgid "What does this do, and what does someone need before importing it?"
msgstr "它的作用是什么？导入前需要准备什么？"

#: admin/src/components/WebhookForm.vue
msgid "What does this webhook do? Markdown supported."
msgstr "这个 Webhook 有什么作用？支持 Markdown。"

#: admin/src/components/ShareBuildDialog.vue
msgid "What this build contains"
msgstr "此配置包含的内容"

#: admin/src/views/SettingsView.vue
msgid "When enabled, logs are exported to JSON files before being deleted."
msgstr "启用后，日志在删除前会导出为 JSON 文件。"

#: admin/src/components/WebhookForm.vue
msgid ""
"When enabled, this webhook fires inline during the WordPress request that "
"triggers it, bypassing the queue. May slow down your site if the endpoint "
"is slow."
msgstr "启用后，该 Webhook 会在触发它的 WordPress 请求中内联触发，绕过队列。如果端点较慢，可能会拖慢你的站点。"

#: admin/src/views/QueueView.vue
msgid "When webhooks are triggered, jobs will appear here for processing."
msgstr "当 Webhook 被触发时，任务将显示在此处以供处理。"

#: admin/src/components/BuildPublishFields.vue
msgid "Where does this belong?"
msgstr "它属于哪一类？"

#: src/Api/WebhooksController.php:116
msgid "Where to source the test payload from."
msgstr "测试数据的来源。"

#: src/Api/WebhooksController.php:818
msgid "Whether the webhook executes synchronously (blocking, bypasses queue)."
msgstr "Webhook 是否同步执行（阻塞，绕过队列）。"

#: src/Api/WebhooksController.php:812
msgid "Whether the webhook is enabled."
msgstr "Webhook 是否已启用。"

#: src/Api/SchemasController.php:93
msgid "Whether to include user data."
msgstr "是否包含用户数据。"

#: admin/src/components/LogsTable.vue
msgid "Will Retry"
msgstr "将重试"

#: src/Api/TriggersController.php:149
msgid "WooCommerce"
msgstr ""

#: src/Api/TriggersController.php:140
msgid "WordPress"
msgstr ""

#: admin/src/components/WebhookForm.vue
msgid "WordPress actions that will trigger this webhook"
msgstr "将触发该 Webhook 的 WordPress 操作"

#: admin/src/components/AiProviderSettings.vue
msgid "WordPress connectors"
msgstr "WordPress 连接器"

#: admin/src/views/VaultView.vue
msgid "WordPress username or API user"
msgstr "WordPress 用户名或 API 用户"

#: admin/src/components/AiStepPanel.vue
msgid "Working…"
msgstr "处理中…"

#: admin/src/components/MarkdownField.vue
msgid "Write"
msgstr "撰写"

#: admin/src/components/TestWebhookDrawer.vue
msgid "Write your own JSON payload"
msgstr "编写你自己的 JSON 数据"

#: admin/src/views/QueueView.vue
msgid "X-Webhook-Id:"
msgstr "X-Webhook-Id："

#: admin/src/components/LogsTable.vue
msgid "Yes"
msgstr "是"

#: src/Api/WebhooksController.php:170
msgid "You don't have permissions to see it."
msgstr "你没有查看它的权限。"

#: admin/src/components/TestWebhookDrawer.vue
msgid ""
"You have unsaved changes. The test will run against the %1$ssaved%2$s "
"version of this webhook."
msgstr "你有未保存的更改。测试将针对该 Webhook 的%1$s已保存%2$s版本运行。"

#: admin/src/views/ExternalCronView.vue
msgid ""
"You might want to whitelist the External Cron IP for your WAF or server "
"security: %1$s72.62.157.193%2$s"
msgstr "你可能需要在 WAF 或服务器安全中将外部 Cron IP 加入白名单：%1$s72.62.157.193%2$s"

#: admin/src/components/AiProviderSettings.vue
msgid "Your WordPress AI connectors are no longer available."
msgstr "您的 WordPress AI 连接器已不再可用。"

#: admin/src/components/BuildPublishProgress.vue
msgid "Your build is published."
msgstr "你的配置已发布。"

#: admin/src/components/BuildPublishProgress.vue
msgid "Your build was received."
msgstr "已收到你的配置。"

#: admin/src/components/AiBuildsBar.vue
msgid "Your builds"
msgstr "您的构建"

#: admin/src/views/ProView.vue
msgid "Your license is active on this site."
msgstr "你的许可证已在本站点激活。"

#: admin/src/components/BuildPublishFields.vue
msgid "Your links appear on the build page. They are published as nofollow."
msgstr "你的链接会显示在配置页面上，并以 nofollow 方式发布。"

#: admin/src/components/BuildPublishFields.vue
msgid "Your name"
msgstr "你的名字"

#: src/Services/Ai/AgentOrchestrator.php:230
#. translators: 1: selected provider/model, 2: fallback provider/model, 3: error reason
#, php-format
msgid ""
"Your selected model %1$s couldn't respond, so this reply came from %2$s "
"instead. (%3$s) Pick a different model with Change model."
msgstr "您选择的模型 %1$s 无法响应，因此本条回复来自 %2$s。（%3$s）可通过“更换模型”选择其他模型。"

#: admin/src/components/ConditionsEditor.vue
msgid "array contains"
msgstr "数组包含"

#: admin/src/components/ConditionsEditor.vue admin/src/components/MappingEditor.vue
msgid "auto"
msgstr "自动"

#: admin/src/components/ConditionsEditor.vue
msgid "be skipped"
msgstr "被跳过"

#: admin/src/components/ConditionsEditor.vue admin/src/components/MappingEditor.vue
msgid "bool"
msgstr "布尔"

#: src/Abilities/WriteAbilities.php:207
msgid "chain_id, source_webhook_id and target_webhook_id are required."
msgstr "chain_id、source_webhook_id 和 target_webhook_id 为必填项。"

#: src/Abilities/WriteAbilities.php:265
msgid "conditions must be an object {enabled, type, rules: [...]}."
msgstr "conditions 必须是 {enabled, type, rules: [...]} 对象。"

#: src/Abilities/WriteAbilities.php:274
msgid "conditions.rules must be an array of rule objects."
msgstr "conditions.rules 必须是规则对象数组。"

#: admin/src/components/ConditionsEditor.vue
msgid "contains"
msgstr "包含"

#: src/Services/Export/BuildSchemaValidator.php:97
msgid "contains no webhooks."
msgstr "不包含任何 Webhook。"

#: admin/src/components/ConditionsEditor.vue
msgid "dispatch"
msgstr "投递"

#: admin/src/components/ConditionsEditor.vue
msgid "does not contain"
msgstr "不包含"

#: admin/src/components/ConditionsEditor.vue
msgid "does not equal"
msgstr "不等于"

#: admin/src/components/CreateTokenDialog.vue
msgid "e.g. CI pipeline, n8n integration"
msgstr "例如 CI 流水线、n8n 集成"

#: admin/src/components/WebhookForm.vue
msgid "e.g. HubSpot PAT"
msgstr "例如 HubSpot PAT"

#: admin/src/views/VaultView.vue
msgid "e.g. HubSpot PAT, Stripe key"
msgstr "例如 HubSpot PAT、Stripe 密钥"

#: admin/src/components/ChainPicker.vue
msgid "e.g. Order to HubSpot"
msgstr "例如 订单同步到 HubSpot"

#: admin/src/views/AiBuilderView.vue
msgid ""
"e.g. “When a Contact Form 7 form is submitted, send it as JSON to my n8n "
"webhook.”"
msgstr "例如：“当 Contact Form 7 表单提交时，将其作为 JSON 发送到我的 n8n Webhook。”"

#: admin/src/components/ConditionsEditor.vue
msgid "empty"
msgstr "为空"

#: admin/src/components/ConditionsEditor.vue
msgid "equals"
msgstr "等于"

#: src/Services/Export/BuildSchemaValidator.php:386
#. translators: %d: max length
#, php-format
msgid "exceeds the maximum length of %d bytes."
msgstr "超过了 %d 字节的最大长度。"

#: admin/src/components/MappingEditor.vue
msgid "excluded via parent"
msgstr "通过父级排除"

#: admin/src/components/ConditionsEditor.vue
msgid "excludes"
msgstr "排除"

#: admin/src/components/ConditionsEditor.vue
msgid "greater than"
msgstr "大于"

#: admin/src/components/ConditionsEditor.vue
msgid "has item"
msgstr "含项"

#: src/Services/Export/BuildSchemaValidator.php:376
#. translators: %s: comma-separated key names
#, php-format
msgid "has unexpected key(s): %s."
msgstr "包含意外的键：%s。"

#: admin/src/components/ConditionsEditor.vue
msgid "has value"
msgstr "含值"

#: flowsystems-webhook-actions.php
#. Author URI of the plugin
msgid "https://flowsystems.pl"
msgstr ""

#: flowsystems-webhook-actions.php
#. Plugin URI of the plugin
msgid "https://wpwebhooks.org/wordpress-webhook-plugin"
msgstr ""

#: admin/src/components/AiStepControls.vue
msgid "https://your-endpoint.example/webhook"
msgstr "https://your-endpoint.example/webhook"

#: admin/src/components/WebhookForm.vue
msgid "instead."
msgstr "。"

#: src/Services/Export/BuildSchemaValidator.php:69
#. translators: 1: found version, 2: supported version
#, php-format
msgid "is %1$d; this plugin imports version %2$d builds."
msgstr "为 %1$d；此插件可导入版本 %2$d 的配置。"

#: admin/src/components/ConditionsEditor.vue
msgid "is empty"
msgstr "为空"

#: admin/src/components/ConditionsEditor.vue
msgid "is false"
msgstr "为假"

#: src/Services/Export/BuildSchemaValidator.php:366
#. translators: %s: key name
#, php-format
msgid "is missing required key \"%s\"."
msgstr "缺少必需的键“%s”。"

#: admin/src/components/ConditionsEditor.vue
msgid "is not empty"
msgstr "不为空"

#: src/Services/Export/BuildSchemaValidator.php:62
msgid "is required and must be an integer."
msgstr "为必填项，且必须是整数。"

#: src/Services/Export/BuildSchemaValidator.php:227
msgid "is required when mode is \"vault\"."
msgstr "当模式为“vault”时为必填项。"

#: admin/src/components/ConditionsEditor.vue
msgid "is true"
msgstr "为真"

#: admin/src/components/ConditionsEditor.vue
msgid "less than"
msgstr "小于"

#: admin/src/components/MappingEditor.vue
msgid "mapped"
msgstr "已映射"

#: src/Services/Export/BuildSchemaValidator.php:350
msgid "may only contain letters, numbers, hyphens and underscores."
msgstr "只能包含字母、数字、连字符和下划线。"

#: src/Services/Export/BuildSchemaValidator.php:393
msgid "must be a boolean."
msgstr "必须是布尔值。"

#: src/Services/Export/BuildSchemaValidator.php:80
#: src/Services/Export/BuildSchemaValidator.php:230
msgid "must be a string or null."
msgstr "必须是字符串或 null。"

#: src/Services/Export/BuildSchemaValidator.php:77
#: src/Services/Export/BuildSchemaValidator.php:131
#: src/Services/Export/BuildSchemaValidator.php:148
#: src/Services/Export/BuildSchemaValidator.php:301
#: src/Services/Export/BuildSchemaValidator.php:383
msgid "must be a string."
msgstr "必须是字符串。"

#: src/Services/Export/BuildSchemaValidator.php:345
msgid "must be a {key, value} object."
msgstr "必须是 {key, value} 对象。"

#: src/Services/Export/BuildSchemaValidator.php:299
msgid "must be an array of strings."
msgstr "必须是字符串数组。"

#: src/Services/Export/BuildSchemaValidator.php:342
msgid "must be an array of {key, value} pairs."
msgstr "必须是 {key, value} 键值对数组。"

#: src/Services/Export/BuildSchemaValidator.php:86
#: src/Services/Export/BuildSchemaValidator.php:95
#: src/Services/Export/BuildSchemaValidator.php:108
#: src/Services/Export/BuildSchemaValidator.php:140
#: src/Services/Export/BuildSchemaValidator.php:206
#: src/Services/Export/BuildSchemaValidator.php:318
msgid "must be an array."
msgstr "必须是数组。"

#: src/Services/Export/BuildSchemaValidator.php:190
msgid "must be an http:// or https:// URL."
msgstr "必须是 http:// 或 https:// 网址。"

#: src/Services/Export/BuildSchemaValidator.php:59
#: src/Services/Export/BuildSchemaValidator.php:127
#: src/Services/Export/BuildSchemaValidator.php:144
#: src/Services/Export/BuildSchemaValidator.php:161
#: src/Services/Export/BuildSchemaValidator.php:178
#: src/Services/Export/BuildSchemaValidator.php:219
#: src/Services/Export/BuildSchemaValidator.php:239
#: src/Services/Export/BuildSchemaValidator.php:263
#: src/Services/Export/BuildSchemaValidator.php:277
#: src/Services/Export/BuildSchemaValidator.php:292
#: src/Services/Export/BuildSchemaValidator.php:312
#: src/Services/Export/BuildSchemaValidator.php:321
msgid "must be an object."
msgstr "必须是对象。"

#: src/Services/Export/BuildSchemaValidator.php:399
#. translators: %s: comma-separated allowed values
#, php-format
msgid "must be one of: %s."
msgstr "必须是以下之一：%s。"

#: src/Services/Export/BuildSchemaValidator.php:384
msgid "must not be empty."
msgstr "不能为空。"

#: src/Services/Export/BuildSchemaValidator.php:354
msgid "must not contain line breaks."
msgstr "不能包含换行符。"

#: src/Abilities/WriteAbilities.php:52
msgid "name and endpoint_url are required."
msgstr "name 和 endpoint_url 为必填项。"

#: admin/src/components/ConditionsEditor.vue
msgid "no"
msgstr "否"

#: admin/src/views/WebhooksList.vue
msgid "no remaining triggers"
msgstr "没有剩余触发器"

#: admin/src/components/ConditionsEditor.vue
msgid "not empty"
msgstr "非空"

#: admin/src/components/ConditionsEditor.vue
msgid "not equals"
msgstr "不等于"

#: admin/src/components/ConditionsEditor.vue admin/src/components/MappingEditor.vue
msgid "number"
msgstr "数字"

#: admin/src/components/ConditionsEditor.vue
msgid "object contains"
msgstr "对象包含"

#: admin/src/components/AiStepPanel.vue
msgid "of"
msgstr "/"

#: admin/src/components/LogsTable.vue
msgid "perm. failed"
msgstr "永久失败"

#: admin/src/components/ConditionsEditor.vue
msgid "property name (optional)"
msgstr "属性名称（可选）"

#: src/Services/Ai/AgentOrchestrator.php:233
msgid "provider unavailable"
msgstr "提供商不可用"

#: src/Services/Export/BuildSchemaValidator.php:228
msgid "references a credential that is not listed in credentials[]."
msgstr "引用了未列在 credentials[] 中的凭据。"

#: src/Services/Export/BuildSchemaValidator.php:327
msgid "references a webhook UUID not present in webhooks[]."
msgstr "引用了 webhooks[] 中不存在的 Webhook UUID。"

#: admin/src/views/AiBuilderView.vue
msgid "resets in %1$dd %2$dh"
msgstr "%1$d 天 %2$d 小时后重置"

#: admin/src/views/AiBuilderView.vue
msgid "resets in %1$dh %2$dm"
msgstr "%1$d 小时 %2$d 分钟后重置"

#: admin/src/views/AiBuilderView.vue
msgid "resets soon"
msgstr "即将重置"

#: admin/src/components/AiPlanStepper.vue
msgid "reused"
msgstr "已复用"

#: src/Services/RestRouteInspector.php:40
msgid "route is required, e.g. \"/wp/v2/users\"."
msgstr "route 为必填项，例如 \"/wp/v2/users\"。"

#: admin/src/components/ConditionsEditor.vue admin/src/components/MappingEditor.vue
msgid "string"
msgstr "字符串"

#: admin/src/components/ConditionsEditor.vue
msgid "stringify"
msgstr "字符串化"

#: admin/src/components/WebhookForm.vue
msgid "then select it here."
msgstr "然后在此处选择它。"

#: src/Abilities/ReadAbilities.php:72
msgid "trigger is required."
msgstr "trigger 为必填项。"

#: admin/src/components/ConditionsEditor.vue
msgid "unknown"
msgstr "未知"

#: admin/src/components/ConditionsEditor.vue
msgid "value"
msgstr "值"

#: src/Abilities/WriteAbilities.php:123
msgid "webhook_id, trigger and conditions are required."
msgstr "webhook_id、trigger 和 conditions 为必填项。"

#: src/Abilities/WriteAbilities.php:110
msgid "webhook_id, trigger and field_mapping are required."
msgstr "webhook_id、trigger 和 field_mapping 为必填项。"

#: admin/src/components/BuildPublishProgress.vue
msgid ""
"wpwebhooks.org rebuilds after every publish — about %d seconds left. The "
"address becomes a link the moment the page is live."
msgstr "每次发布后 wpwebhooks.org 都会重新构建 — 大约还需 %d 秒。页面一上线，该地址就会变成链接。"

#: admin/src/components/ConditionsEditor.vue
msgid "yes"
msgstr "是"

#: admin/src/views/VaultView.vue
msgid "· database key removed"
msgstr "· 数据库密钥已移除"

#: admin/src/main.js
msgid "…"
msgstr "…"

#: src/Services/Ai/PlanExecutor.php:422
#. translators: %s: what was undone.
#, php-format
msgid "↩︎ Reverted: %s"
msgstr "↩︎ 已还原：%s"

#: admin/src/views/ProView.vue
msgid ""
"💡 Local installs (%1$slocalhost%2$s, %1$s*.local%2$s, %1$s*.test%2$s) "
"don't count toward your site limit."
msgstr "💡 本地安装（%1$slocalhost%2$s、%1$s*.local%2$s、%1$s*.test%2$s）不计入你的站点限额。"
