{
  "channelsSettings": {
    "needToken": "请先保存网关访问令牌后再编辑消息通道设置。",
    "subtitle": "连接 Telegram、微信、飞书等消息通道。保存后写入本地网关配置。",
    "docsLink": "消息通道文档",
    "refresh": "刷新",
    "loadError": "加载消息通道设置失败",
    "loading": "加载中…",
    "save": "保存",
    "discard": "放弃",
    "saving": "保存中…",
    "saved": "已保存",
    "saveError": "保存失败",
    "retry": "重试",
    "unsavedHint": "有未保存的更改。",
    "hubConfigureButton": "配置",
    "hubConnectedBadge": "已连接",
    "hubStatusRunning": "运行中",
    "hubStatusOffline": "未连接",
    "hubStatusDisabled": "已停用",
    "hubStatusNotConfigured": "未配置",
    "hubManageButton": "管理通道",
    "hubSetupButton": "开始配置",
    "hubFixButton": "检查配置",
    "hubPairingButton": "处理配对",
    "hubSummaryDm": "私聊：{{policy}}",
    "hubSummaryStream": "流式：{{mode}}",
    "hubSummaryConnection": "连接：{{mode}}",
    "hubSummaryAccountCount": "{{count}} 个账号",
    "hubConnectionWebsocket": "WebSocket",
    "hubConnectionWebhook": "Webhook",
    "hubViewDocs": "查看文档",
    "hubExtensionSubtitle": "网关注册的扩展消息通道。",
    "hubExtensionConfiguredHint": "网关配置中已有该通道配置",
    "hubExtensionManageHint": "该通道由扩展提供。请在扩展设置或网关配置文件中调整。",
    "hubExtensionStatusLabel": "状态",
    "hubExtensionEnabledLabel": "配置已启用",
    "hubExtensionConnectedLabel": "运行时已连接",
    "hubExtensionYes": "是",
    "hubExtensionNo": "否",
    "enableChannelAria": "启用或停用该通道",
    "modalCancel": "取消",
    "telegramTitle": "Telegram",
    "telegramSubtitle": "配置 Bot Token、访问策略和多账号设置。",
    "weixinTitle": "微信",
    "weixinSubtitle": "用微信扫码登录（网页或命令行）后在此启用。凭据保存在运行网关的本机。",
    "feishuTitle": "飞书 / Lark",
    "feishuSubtitle": "配置飞书应用凭据、访问策略和多账号设置。",
    "enableTelegramAria": "启用 Telegram 消息通道",
    "enableWeixinAria": "启用微信消息通道",
    "enableFeishuAria": "启用飞书消息通道",
    "telegramToken": "Bot Token",
    "telegramTokenDesc": "来自 BotFather，保存在网关配置中。",
    "feishuAppId": "App ID",
    "feishuAppIdDesc": "在飞书开发者后台获取（cli_xxx），保存在网关配置中。",
    "feishuAppSecret": "App Secret",
    "feishuAppSecretDesc": "在飞书开发者后台获取，保存在网关配置中。",
    "feishuDomain": "域名",
    "connectionMode": "连接模式",
    "connectionModeDesc": "websocket：Socket Mode。webhook：本地 HTTP 接收事件。",
    "renderMode": "渲染模式",
    "enableStreaming": "启用流式输出",
    "requireMention": "群聊中需要 @ 才响应",
    "reactionNotifications": "表情反应通知",
    "allowFromDm": "允许私聊（用户 ID）",
    "allowFromDmDesc": "配置文件中的静态白名单，多个用户 ID 用逗号分隔。通过配对允许的用户会显示在下方列表。",
    "pairingTitle": "私聊配对",
    "pairingSubtitle": "私聊策略为「配对」时，新用户向 bot 发消息会收到配对码，在此审批即可，无需命令行。",
    "pairingSetupHint": "在 Telegram 向 bot 发送任意消息，然后在下方输入 8 位配对码。",
    "pairingPendingTitle": "待审批",
    "pairingPendingEmpty": "暂无待审批请求。向 bot 发消息即可发起配对。",
    "pairingCodePlaceholder": "配对码",
    "pairingApprove": "批准",
    "pairingApproving": "批准中…",
    "pairingApproved": "已批准用户 {{id}}。",
    "pairingInvalid": "配对码无效或已过期。",
    "pairingLoadError": "无法加载配对状态。",
    "pairingRefresh": "刷新",
    "pairingExpiresHint": "{{time}} 过期",
    "pairingCodeHint": "配对码后四位 {{suffix}}",
    "pairedTitle": "已允许的用户",
    "pairedFromConfig": "配置白名单",
    "pairedFromCredentials": "已配对",
    "pairedEmpty": "无",
    "pairingAccountLabel": "Bot 账号",
    "pairingAccountNotPairing": "账号「{{account}}」未使用配对私聊策略。请选择其他账号，或在高级 JSON 中修改 dmPolicy。",
    "pairingRevokeAria": "撤销 {{id}} 的配对",
    "pairingRevoked": "已撤销 {{id}} 的配对。",
    "pairingRevokeError": "撤销配对失败。",
    "hubPairingPendingBadge": "{{count}} 待审批",
    "telegramSetupStepToken": "1. 保存 Bot Token 并启用 Telegram",
    "telegramSetupStepPairing": "2. 向 bot 发消息，然后在下方批准配对码",
    "pairingQuickApprove": "快速批准",
    "pairingQuickApproveHint": "快速批准无需输入配对码。请仅在确认该用户 ID 确实已向 bot 发送消息时使用。",
    "pairingDismiss": "忽略",
    "pairingDismissing": "忽略中…",
    "pairingDismissed": "已忽略 {{id}} 的待审批请求。",
    "pairingDismissError": "无法忽略该待审批请求。",
    "pairingStaleItem": "即将过期",
    "advancedShow": "高级选项",
    "advancedHide": "收起高级选项",
    "apiRoot": "API 根地址",
    "proxy": "代理",
    "dmPolicy": "私聊策略",
    "groupPolicy": "群组策略",
    "replyToMode": "回复引用模式",
    "streamMode": "流式模式",
    "allowFromGroups": "允许群组（ID）",
    "allowFromGroupsDesc": "逗号分隔的群 chat_id（群策略为白名单时生效）。",
    "historyLimit": "历史条数上限",
    "textChunkLimit": "文本分块上限",
    "telegramDebug": "调试模式",
    "multiAccountJson": "多账号（JSON）",
    "multiAccountJsonDesc": "可选。每账号可配置 botToken 或 tokenFile、策略与群组。留空 {} 则仅使用上方单一 Token。",
    "weixinQuickStartTitle": "最简步骤",
    "weixinStepLogin": "在本页使用下方「微信扫码登录」，命令行方式请见消息通道文档。",
    "weixinStepEnable": "下方打开「启用微信」并保存。",
    "weixinStepPairing": "扫码登录后即可正常收发；仅在需要限制谁可私聊时，将私聊策略改为白名单并配置允许来源。",
    "weixinAdvancedHint": "可选：白名单、路由标签、流式输出和多账号 JSON。仅在需要时展开。",
    "weixinAllowFrom": "允许来源",
    "weixinAllowFromDesc": "私聊策略为白名单时使用，逗号分隔的 wxid / openid。默认配对在扫码后即可与任意联系人私聊。",
    "weixinRouteTag": "路由标签",
    "weixinRouteTagDesc": "可选路由标签，可为数字或字符串。",
    "routeTagPlaceholder": "例如标签名或数字",
    "weixinDebug": "调试模式",
    "weixinDebugDesc": "为微信消息通道输出更详细的日志。",
    "weixinAccountsJson": "账号（JSON）",
    "weixinAccountsJsonDesc": "分账号名称、CDN 地址、路由标签与策略。",
    "weixinQrLoginTitle": "网页扫码登录",
    "weixinQrLoginDesc": "在网关上发起登录，使用微信扫码；成功后本页会自动刷新配置。",
    "weixinQrLoginButton": "微信扫码登录",
    "weixinQrLoginBusy": "正在启动…",
    "weixinQrLoginScanned": "已扫码，请在微信中确认",
    "weixinQrLoginSuccess": "微信已连接。",
    "weixinQrLoginCancel": "关闭二维码",
    "weixinQrImageError": "无法在页面内生成二维码，可在新标签页打开链接完成扫码，或点击「重新生成」重试。",
    "weixinQrOpenLink": "新标签页打开",
    "weixinQrEncoding": "正在生成二维码…",
    "weixinQrModalTitle": "扫码登录",
    "weixinQrModalSubtitle": "请使用微信扫描下方二维码完成连接",
    "weixinQrRegenerate": "重新生成",
    "weixinQrModalCloseAria": "关闭",
    "feishuQrModalTitle": "扫码创建应用",
    "feishuQrModalSubtitle": "默认使用国内（飞书）。可在二维码下方切换为国际（Lark）。展开高级选项可手动填写凭证与策略。",
    "feishuQrCloseAria": "关闭",
    "feishuRegionSwitchAria": "注册区域",
    "feishuRegionChina": "国内（飞书）",
    "feishuRegionInternational": "国际（Lark）",
    "feishuAdvancedHint": "可选：填写开发者后台的 App ID / Secret、连接模式、Webhook、工具、路由与多账号 JSON。保存后写入网关配置。",
    "feishuQrStarting": "启动中…",
    "feishuQrScanHint": "请使用飞书/Lark 扫描此二维码。",
    "feishuQrEncoding": "正在生成二维码…",
    "feishuQrImageError": "无法生成二维码图片。",
    "feishuQrOpenLink": "在浏览器中打开",
    "feishuQrRegenerate": "重新生成二维码",
    "feishuQrSetupSuccess": "飞书应用创建并配置完成。",
    "agentRoutingTitle": "智能体路由",
    "agentRoutingHint": "在配置 `bindings` 中为每个消息通道账号指定智能体；入站消息会使用对应智能体的会话键。",
    "agentRoutingAccountLabel": "账号",
    "agentRoutingAgentLabel": "智能体",
    "jsonObjectAccounts": "账号必须为 JSON 对象",
    "jsonInvalid": "JSON 无效",
    "copy": "复制",
    "copied": "已复制",
    "show": "显示",
    "hide": "隐藏",
    "webhookTitle": "Webhook 配置",
    "verificationToken": "Verification Token",
    "verificationTokenDesc": "在飞书事件订阅中获取（webhook 模式）。",
    "encryptKey": "Encrypt Key",
    "encryptKeyDesc": "在飞书事件订阅中获取（webhook 模式）。",
    "webhookHost": "Webhook Host",
    "webhookPort": "Webhook Port",
    "webhookPath": "Webhook Path",
    "webhookPathDesc": "飞书事件订阅里配置的 Request URL 路径。",
    "feishuToolsTitle": "飞书工具",
    "feishuToolsDesc": "按需开启。每个工具可能需要额外的应用权限（scopes）。",
    "feishuToolDoc": "文档（feishu_doc）",
    "feishuToolWiki": "知识库（feishu_wiki）",
    "feishuToolDrive": "云盘（feishu_drive）",
    "feishuToolPerm": "权限管理（feishu_perm）",
    "feishuToolBitable": "多维表格（feishu_bitable_*）",
    "feishuToolScopes": "权限诊断（feishu_app_scopes）",
    "feishuActionsTitle": "飞书动作",
    "feishuActionReactions": "启用表情反应动作",
    "policy": {
      "dm": {
        "pairing": "配对",
        "allowlist": "白名单",
        "open": "开放",
        "disabled": "关闭"
      },
      "group": {
        "open": "开放",
        "disabled": "关闭",
        "allowlist": "白名单"
      },
      "reply": {
        "off": "关闭",
        "first": "首条",
        "all": "全部"
      },
      "stream": {
        "off": "关闭",
        "partial": "部分",
        "block": "阻塞"
      }
    }
  },
  "voiceSettings": {
    "needToken": "请先保存网关访问令牌后再编辑语音设置。",
    "subtitle": "配置消息通道中的语音识别和语音合成。API Key 也可以通过环境变量提供。",
    "docsLink": "语音文档",
    "loadError": "加载语音设置失败",
    "loading": "加载中…",
    "save": "保存",
    "discard": "放弃",
    "saving": "保存中…",
    "saved": "已保存",
    "saveError": "保存失败",
    "retry": "重试",
    "unsavedHint": "有未保存的更改。",
    "apiKeyMaskedHelp": "已保存的密钥默认隐藏。点击眼睛图标可从配置文件读取（不含环境变量里的密钥）。",
    "apiKeyCopy": "复制",
    "apiKeyCopied": "已复制",
    "apiKeyShow": "显示",
    "apiKeyHide": "隐藏",
    "apiKeyNotInConfigFile": "配置文件中没有该服务商的密钥（请检查环境变量）。",
    "apiKeyRevealFailed": "无法从配置文件读取密钥。",
    "stt": {
      "title": "语音转文字（STT）",
      "description": "使用阿里云 DashScope 或 OpenAI Whisper 将收到的语音转为文字。",
      "enable": "启用 STT",
      "enableDesc": "开启后，可将语音消息转写给智能体使用。",
      "provider": "STT 服务商",
      "alibaba": "阿里云 DashScope",
      "openai": "OpenAI",
      "apiKey": "API Key",
      "apiKeyDesc": "若环境变量已配置密钥，此处可留空。",
      "model": "模型",
      "fallback": "备用服务商",
      "fallbackDesc": "主服务商失败时尝试备用服务商。"
    },
    "tts": {
      "title": "文字转语音（TTS）",
      "description": "在启用时把助手回复合成为语音。",
      "enable": "启用 TTS",
      "enableDesc": "开启后，按下方触发模式执行 TTS。",
      "trigger": "触发",
      "triggerOff": "关闭",
      "triggerAlways": "始终",
      "triggerInbound": "仅入站语音",
      "triggerTagged": "标签（[[tts]]）",
      "triggerDescOff": "完全关闭 TTS。",
      "triggerDescAlways": "对助手消息尝试使用 TTS。",
      "triggerDescInbound": "仅当用户发送语音时以语音回复。",
      "triggerDescTagged": "仅在使用 [[tts]] 指令时。",
      "provider": "TTS 服务商",
      "providerOpenai": "OpenAI TTS",
      "providerEdge": "Microsoft Edge（免费）",
      "providerLocalCli": "本地 CLI（离线）",
      "voice": "音色",
      "edgeHint": "Microsoft Edge TTS — 无需 API Key。",
      "localCli": {
        "command": "CLI 命令",
        "commandDesc": "Shell 模板；占位符：{{Text}}、{{OutputBase}}。",
        "commandPlaceholder": "mlx_audio.tts.generate --text \"{{Text}}\" --file_prefix {{OutputBase}}",
        "cwd": "工作目录",
        "cwdDesc": "可选；默认使用网关工作目录。",
        "outputFormat": "输出格式",
        "outputFormatDesc": "CLI 输出的文件扩展名（mp3、wav、opus 等）。",
        "timeoutMs": "超时（ms）",
        "timeoutMsDesc": "单次调用超时覆盖；留空则使用 TTS 默认值。",
        "hint": "由内置扩展 `tts-local-cli` 提供。请先启用该扩展并将二进制加入 PATH。"
      }
    },
    "notes": {
      "title": "说明",
      "duration": "长音频会自动分段；效果取决于服务商与模型。",
      "envVars": "环境变量：DASHSCOPE_API_KEY、OPENAI_API_KEY（未在表单填写时）。"
    }
  },
  "gatewaySettings": {
    "needToken": "请先保存网关访问令牌后再加载或修改网关选项。",
    "subtitle": "HTTP API 访问令牌与监听地址。配置写入网关配置文件。",
    "tabsAriaLabel": "网关设置分类",
    "tabNetwork": "网络",
    "tabAccess": "访问控制",
    "tabUpdates": "更新",
    "tabSecurity": "安全",
    "tabAdvanced": "高级",
    "networkTabHint": "配置监听地址、端口与跨域来源。",
    "accessTabHint": "配置访问令牌、密码、受信任代理和认证失败限流。",
    "updatesTabHint": "配置更新通道、启动检查和自动更新策略。",
    "docsLink": "网关文档",
    "loadError": "加载网关设置失败",
    "loading": "加载中…",
    "save": "保存",
    "discard": "放弃",
    "saving": "保存中…",
    "saved": "已保存",
    "saveError": "保存失败",
    "retry": "重试",
    "unsavedHint": "有未保存的更改。",
    "tokenExpired": "会话访问令牌无效。请在客户端更新访问令牌，或修正配置文件中的访问令牌。",
    "updateToken": "更新客户端访问令牌",
    "changeToken": "打开访问令牌对话框",
    "accessToken": "网关访问令牌",
    "tokenPlaceholder": "保存在配置中的访问令牌（若使用环境变量可留空）",
    "tokenHelp": "用于 HTTP/WebSocket API 鉴权。也可通过环境变量 XOPC_GATEWAY_TOKEN 提供。",
    "copy": "复制",
    "copied": "已复制",
    "show": "显示",
    "hide": "隐藏",
    "listenHost": "监听地址",
    "bindMode": "绑定模式",
    "bindLoopback": "本机回环 (127.0.0.1)",
    "bindLan": "局域网 (0.0.0.0)",
    "bindAuto": "自动",
    "bindCustom": "自定义 IPv4",
    "bindTailnet": "Tailnet（Tailscale IP）",
    "customBindHost": "自定义绑定地址",
    "customBindHostPlaceholder": "192.168.1.10",
    "listenPort": "端口",
    "listenHint": "绑定模式决定网关监听哪些网络接口。自动模式：容器内绑定 0.0.0.0，本机绑定 127.0.0.1。仅在已配置 token 与 CORS 来源时使用 LAN。保存后需重启网关。",
    "restartHint": "监听地址、认证或 CORS 的更改需要重启网关后生效。",
    "restartGatewayButton": "重启网关",
    "restartGatewayConfirm": "重启网关会中断所有活跃连接，确定继续吗？",
    "restartGatewayFailed": "重启失败",
    "authMode": "认证模式",
    "authModeToken": "令牌",
    "authModePassword": "密码",
    "authModeTrustedProxy": "受信任代理",
    "authModeNoneLabel": "无",
    "authModeNone": "当前认证模式为 none — API 请求不进行鉴权。",
    "authModeTrustedProxyHint": "由反向代理完成登录并转发用户身份头。请在下方配置受信任代理 CIDR 与相关头。保存后需重启网关。",
    "authPassword": "网关密码",
    "authPasswordPlaceholder": "保存在配置中的密码（若使用环境变量可留空）",
    "authPasswordHelp": "认证模式为 password 时使用。也可通过环境变量 XOPC_GATEWAY_PASSWORD 提供。",
    "rateLimitTitle": "认证失败限流",
    "rateLimitHint": "限制同一客户端 IP 的重复认证失败次数。",
    "rateLimitEnabled": "启用限流",
    "rateLimitExemptLoopback": "豁免本机回环客户端 (127.0.0.1)",
    "rateLimitMaxAttempts": "最大尝试次数",
    "rateLimitWindowMinutes": "统计窗口（分钟）",
    "rateLimitBlockMinutes": "封禁时长（分钟）",
    "updateChannel": "更新通道",
    "channelStable": "稳定版",
    "channelBeta": "测试版",
    "channelDev": "开发版",
    "updateChannelHint": "测试版与开发版会较早收到构建；日常使用建议稳定版。",
    "updateAutoSection": "自动更新",
    "updateAutoSectionHint": "控制网关启动时的 npm/CLI 更新检查以及后台自动更新调度。",
    "updateCheckOnStart": "启动时检查更新",
    "updateCheckOnStartHint": "启用后，网关启动时会检查是否有新版本。",
    "updateAutoEnabled": "启用自动更新",
    "updateAutoEnabledHint": "启用后，符合条件的 stable/beta 构建可能在下方延迟后自动应用。",
    "updateAutoStableDelayHours": "Stable 延迟（小时）",
    "updateAutoStableDelayHoursHint": "stable 发布后至少等待多少小时才允许自动更新。",
    "updateAutoStableJitterHours": "Stable 抖动（小时）",
    "updateAutoStableJitterHoursHint": "额外随机等待上限，用于分散更新负载。",
    "updateAutoBetaCheckIntervalHours": "Beta 检查间隔（小时）",
    "updateAutoBetaCheckIntervalHoursHint": "使用 beta 通道时，轮询新构建的频率。",
    "corsOrigins": "CORS 允许的来源",
    "corsOriginsHint": "填写完整浏览器来源（协议 + 主机 + 端口），例如 http://localhost:5173。留空则使用网关内置的 localhost 默认值。保存后需重启网关生效。",
    "corsOriginsEmpty": "未配置自定义来源 — 网关将对此端口及 Vite 开发端口（3000）使用 localhost 默认值。",
    "corsOriginsPlaceholder": "输入来源后按 Enter 添加",
    "corsOriginsWildcardWarning": "通配符 \"*\" 允许任意网站从浏览器调用 API，请确认风险后再使用。",
    "securitySection": "网络安全",
    "securitySectionHint": "适用于局域网和反向代理部署的安全策略。保存后需要重启网关。",
    "securityStrict": "严格安全模式",
    "securityStrictHint": "启用后，非本机回环绑定必须显式配置认证失败限流。",
    "dangerouslyAllowHostHeaderOriginFallback": "允许 Host 头来源回退",
    "dangerouslyAllowHostHeaderOriginFallbackHint": "危险：未列入 CORS 时，将 HTTP Host 头视为允许的浏览器来源。建议优先配置 corsOrigins。",
    "dangerouslyAllowHostHeaderOriginFallbackWarning": "Host 头回退会削弱浏览器来源校验。仅在受信任且严格校验 Host 的反向代理后使用。",
    "trustedProxies": "受信任代理 CIDR",
    "trustedProxiesHint": "允许终止 trusted-proxy 鉴权的反向代理 IP 或 CIDR（如 127.0.0.1/32、10.0.0.0/8）。网络绑定下必填。",
    "trustedProxiesEmpty": "未配置受信任代理。",
    "trustedProxiesPlaceholder": "输入 CIDR 或 IP 后按 Enter",
    "allowRealIpFallback": "允许 X-Real-IP 回退",
    "allowRealIpFallbackHint": "X-Forwarded-For 解析失败时回退到 X-Real-IP。默认关闭（fail-closed）。",
    "trustedProxyUserHeader": "用户身份头",
    "trustedProxyUserHeaderPlaceholder": "X-Forwarded-User",
    "trustedProxyUserHeaderHint": "反向代理设置的 HTTP 头，携带已认证用户身份。",
    "trustedProxyRequiredHeaders": "必需的代理头",
    "trustedProxyRequiredHeadersHint": "每个请求必须携带的额外头（如 X-Proxy-Auth）。",
    "trustedProxyAllowUsers": "允许的用户",
    "trustedProxyAllowUsersHint": "非空时仅接受列表中的用户身份。留空则接受任意非空用户头值。",
    "trustedProxyAllowLoopback": "允许本机回环代理来源",
    "trustedProxyAllowLoopbackHint": "TCP 连接来自 127.0.0.1 时仍接受 trusted-proxy 鉴权（同机反向代理）。",
    "validationErrorNetworkAuth": "网络可访问的网关必须启用鉴权。",
    "validationErrorTrustedProxies": "网络绑定下的 trusted-proxy 鉴权至少需要一个受信任代理 CIDR。",
    "validationErrorUserHeader": "trusted-proxy 鉴权必须配置用户身份头名称。",
    "validationErrorCors": "网络可访问的网关必须配置 CORS 来源或启用 Host 头回退。",
    "validationErrorCorsWildcard": "网络绑定下不允许 CORS 通配符。",
    "validationErrorCustomBind": "自定义绑定模式必须填写绑定地址。",
    "securityAuditTitle": "安全审计",
    "securityAuditSubtitle": "对当前已保存的网关配置进行实时检查（等同 xopc doctor --security）。",
    "securityAuditSavedConfigHint": "反映磁盘上的配置文件。保存表单更改并重启网关后结果才会更新。",
    "securityAuditRefresh": "刷新",
    "securityAuditLoading": "正在运行安全审计…",
    "securityAuditLoadError": "安全审计失败",
    "securityAuditStatusPass": "无严重问题",
    "securityAuditStatusWarn": "存在建议项",
    "securityAuditStatusFail": "存在严重问题",
    "securityAuditStatusSkip": "审计已跳过",
    "securityAuditNoFindings": "无结构化发现项；配置通过网关安全守卫检查。",
    "securityAuditHintsTitle": "补充说明",
    "securityAuditRemediation": "修复：",
    "advancedSection": "高级",
    "advancedSectionHint": "运行时限制与频道启动顺序。保存后需重启网关生效。",
    "maxSseConnections": "最大 SSE 连接数",
    "maxSseConnectionsHint": "并发 Server-Sent Events 客户端上限（如 `GET /api/events`）。默认 100。",
    "channelConnectDeferMode": "频道连接延后",
    "channelConnectDeferModeAuto": "自动（按插件默认）",
    "channelConnectDeferModeOff": "关闭（监听前先启动全部频道）",
    "channelConnectDeferModeExplicit": "显式列表",
    "channelConnectDeferModeHint": "控制 outbound 较重的频道何时调用 `start()`。自动模式下会延后声明了 opt-in 的插件（如 Telegram、Weixin、飞书）。",
    "channelConnectDeferIds": "延后启动的频道 id",
    "channelConnectDeferIdsHint": "模式为「显式列表」时使用。这些插件 id 在 HTTP 监听绑定后再 start（最多 24 个）。留空表示不延后任何频道。",
    "channelConnectDeferSkipIds": "跳过延后的频道 id",
    "channelConnectDeferSkipIdsHint": "在自动或显式解析后从延后集合中移除（最多 24 个）。例如：Telegram 仍在 phase 1 启动，其余延后。",
    "channelIdListPlaceholder": "输入频道 id 后按 Enter（如 telegram）",
    "channelIdListEmpty": "未配置 id。"
  },
  "heartbeatSettings": {
    "needToken": "请先保存网关访问令牌后再加载或修改心跳选项。",
    "subtitle": "定时唤醒智能体、可选投递到消息通道，以及默认智能体 `profile/` 目录下的 HEARTBEAT.md。配置写入网关配置文件与 `agents/<id>/profile/`。",
    "docsLink": "心跳机制文档",
    "loadError": "加载心跳设置失败",
    "loading": "加载中…",
    "saveConfig": "保存",
    "discard": "放弃",
    "savingConfig": "保存中…",
    "savedConfig": "配置已保存",
    "saveConfigError": "保存配置失败",
    "triggerNow": "立即触发",
    "triggering": "排队中…",
    "triggered": "已加入心跳队列",
    "triggerError": "触发心跳失败",
    "triggerHint": "与定时器相同的一次心跳（会受 HEARTBEAT.md、活跃时段与是否启用心跳影响）。",
    "saveDoc": "保存",
    "savingDoc": "保存中…",
    "savedDoc": "文档已保存",
    "saveDocError": "保存 HEARTBEAT.md 失败",
    "retry": "重试",
    "unsavedConfig": "有未保存的配置更改。",
    "unsavedDoc": "HEARTBEAT.md 有未保存的更改。",
    "workspaceLabel": "工作区",
    "tabsAriaLabel": "心跳设置分类",
    "tabSchedule": "计划",
    "tabDelivery": "投递",
    "tabPrompt": "提示词",
    "tabDocument": "HEARTBEAT.md",
    "scheduleTabHint": "设置心跳是否启用、运行间隔和活跃时段。",
    "deliveryTabHint": "选择要投递的消息通道和会话；留空则只记录日志。",
    "promptTabHint": "调整心跳轮次的系统提示、静默阈值和会话隔离策略。",
    "documentTabHint": "维护每次心跳读取的任务与提醒内容。",
    "configSection": "心跳配置",
    "docSection": "HEARTBEAT.md",
    "docHint": "每次心跳时智能体会读取的任务与提醒。若留空或仅有注释，将跳过 LLM 调用以节省用量。",
    "enable": "启用心跳",
    "includeSystemPromptSection": "在聊天 system prompt 中包含心跳指令",
    "includeSystemPromptSectionHint": "关闭时，心跳指令仅在定时心跳轮次中发送（可减少普通聊天 token 消耗）。",
    "interval": "间隔",
    "intervalHint": "最短 1 秒；保存到网关配置时为毫秒。",
    "intervalHintPreset": "快速选择，或在左侧输入秒数。",
    "intervalSecondsLabel": "秒",
    "intervalPresets": {
      "custom": "自定义",
      "every30s": "每 30 秒",
      "every1min": "每 1 分钟",
      "every5min": "每 5 分钟",
      "every10min": "每 10 分钟",
      "every15min": "每 15 分钟",
      "every30min": "每 30 分钟",
      "every1h": "每 1 小时",
      "every2h": "每 2 小时"
    },
    "deliveryTitle": "投递（可选）",
    "channelNone": "— 无 —",
    "customChannelSuffix": "自定义",
    "deliveryHint": "需同时填写消息通道与会话 ID 才会发送非静默回复；否则仅记录日志。",
    "prompt": "自定义系统提示（可选）",
    "promptPlaceholder": "覆盖默认心跳指令…",
    "promptHint": "留空则使用内置默认提示。",
    "ackMaxChars": "视为静默前的最大回复长度（ackMaxChars）",
    "ackMaxCharsHint": "留空则使用服务端默认值（300）。",
    "ackDefaultPlaceholder": "默认",
    "isolatedSession": "每次使用新的会话键",
    "isolatedSessionHint": "避免与主对话会话混淆上下文。",
    "activeHoursTitle": "活跃时段（可选）",
    "activeStart": "开始",
    "activeEnd": "结束",
    "activeTimezone": "时区（IANA）",
    "activeHoursHint": "仅在该时间窗口内运行心跳。清除则不限时段。",
    "addActiveHours": "添加活跃时段",
    "clearActiveHours": "清除活跃时段"
  },
  "webSearchSettings": {
    "title": "网络搜索",
    "subtitle": "为 web_search 工具配置地区与搜索提供方。未配置 API 时将使用内置 HTML 兜底。",
    "docsLink": "网关文档",
    "needToken": "请先保存网关访问令牌后再编辑网络搜索。",
    "loading": "加载中…",
    "loadError": "加载网络搜索设置失败",
    "save": "保存",
    "discard": "放弃",
    "saving": "保存中…",
    "saved": "已保存",
    "saveError": "保存失败",
    "unsavedHint": "有未保存的更改。",
    "sectionRegion": "地区",
    "sectionRegionHint": "在无可用 API 时，用于选择内置 HTML 兜底（国内优先必应，否则 DuckDuckGo）。",
    "sectionSearch": "搜索提供方",
    "sectionSearchHint": "按列表顺序依次尝试。密钥写在网关配置文件中。列表为空则仅使用 HTML 兜底。",
    "sectionBlocklist": "域名黑名单",
    "sectionBlocklistHint": "启用后，web_search 与 web_extract 会跳过主机名匹配下列域名的 URL（精确或后缀匹配）。",
    "blocklistEnabled": "启用域名黑名单",
    "blocklistEnabledDesc": "在抓取前拦截匹配主机，适用于隐私或合规场景。",
    "blocklistDomains": "屏蔽域名",
    "blocklistDomainsDesc": "每行一个域名（如 example.com）。所列域名的子域名也会被屏蔽。",
    "blocklistDomainsPlaceholder": "example.com\nads.example.net",
    "regionLabel": "兜底地区",
    "regionDesc": "自动根据系统时区判断。若使用代理或需固定策略，可手动覆盖。",
    "regionAuto": "自动（时区）",
    "regionCn": "中国（必应 HTML 兜底）",
    "regionGlobal": "全球（DuckDuckGo HTML 兜底）",
    "maxResultsLabel": "默认结果条数",
    "maxResultsDesc": "模型未指定 count 时使用（1–50）。",
    "providersTitle": "提供方（按顺序）",
    "addProvider": "添加提供方",
    "apiKeyLabel": "API 密钥",
    "apiKeyDesc": "部分场景可选。留空且显示为已掩码时保留原值。",
    "urlLabel": "实例地址",
    "urlDesc": "SearXNG 根地址（如 http://localhost:8080），无需末尾斜杠。",
    "keyPlaceholder": "密钥或环境变量名",
    "keyPlaceholderMasked": "••••••••（未修改）",
    "disabled": "跳过",
    "footerHint": "HTML 兜底依赖第三方页面，可能随站点改版变化。生产环境建议使用正式搜索 API（Brave、Tavily、必应或自建 SearXNG）。",
    "providerTypes": {
      "brave": "Brave Search API",
      "tavily": "Tavily",
      "bing": "Bing Web Search API",
      "searxng": "SearXNG"
    }
  }
}
