refine whatsapp bridge defaults and webui polish

This commit is contained in:
lpf
2026-03-10 12:07:56 +08:00
parent 8a6a2755de
commit c7b159d2ed
29 changed files with 1389 additions and 432 deletions

View File

@@ -17,27 +17,73 @@ const resources = {
qqChannelHint: 'Configure QQ bot credentials for the QQ channel.',
dingtalkChannelHint: 'Configure DingTalk app credentials for the DingTalk channel.',
maixcamChannelHint: 'Configure host, port, and allowed senders for the MaixCam channel.',
channelSectionConnection: 'Connection',
channelSectionConnectionHint: 'Enable the channel and configure the credentials or bridge endpoint required to connect.',
channelSectionAccess: 'Access Control',
channelSectionAccessHint: 'Restrict which senders or conversations are allowed to reach this channel.',
channelSectionGroupPolicy: 'Group Policy',
channelSectionGroupPolicyHint: 'Control whether group chats are accepted and when mentions are required.',
channelSectionNetwork: 'Network',
channelSectionNetworkHint: 'Configure the host and port this channel should use to communicate.',
channelFieldTelegramEnabledHint: 'Turn the built-in Telegram bot integration on or off.',
channelFieldTelegramTokenHint: 'Telegram bot token from BotFather, used to receive and send messages.',
channelFieldTelegramStreamingHint: 'Stream partial replies back to Telegram instead of waiting for the full response.',
channelFieldTelegramAllowFromHint: 'Only these Telegram user IDs can message the bot when set.',
channelFieldTelegramAllowChatsHint: 'Optional chat allowlist, for example private chats or specific groups.',
channelFieldDiscordEnabledHint: 'Turn the Discord bot channel on or off.',
channelFieldDiscordTokenHint: 'Discord bot token used to connect to the gateway bot account.',
channelFieldDiscordAllowFromHint: 'Only these Discord user IDs can invoke the bot when set.',
channelFieldFeishuEnabledHint: 'Turn the Feishu channel on or off.',
channelFieldFeishuAppIDHint: 'Feishu app ID for the bot or custom app integration.',
channelFieldFeishuAppSecretHint: 'Secret paired with the Feishu app ID.',
channelFieldFeishuEncryptKeyHint: 'Optional event encryption key provided by Feishu.',
channelFieldFeishuVerificationTokenHint: 'Verification token used to validate callback requests.',
channelFieldFeishuAllowFromHint: 'Only these Feishu senders can invoke the channel when set.',
channelFieldFeishuAllowChatsHint: 'Optional allowlist of Feishu chat IDs.',
channelFieldQQEnabledHint: 'Turn the QQ channel on or off.',
channelFieldQQAppIDHint: 'QQ bot application ID.',
channelFieldQQAppSecretHint: 'QQ bot application secret.',
channelFieldQQAllowFromHint: 'Only these QQ senders can invoke the channel when set.',
channelFieldDingTalkEnabledHint: 'Turn the DingTalk channel on or off.',
channelFieldDingTalkClientIDHint: 'DingTalk application client ID.',
channelFieldDingTalkClientSecretHint: 'Secret paired with the DingTalk client ID.',
channelFieldDingTalkAllowFromHint: 'Only these DingTalk senders can invoke the channel when set.',
channelFieldMaixCamEnabledHint: 'Turn the MaixCam channel on or off.',
channelFieldMaixCamHostHint: 'Hostname or IP address of the MaixCam device.',
channelFieldMaixCamPortHint: 'Port used by the MaixCam service.',
channelFieldMaixCamAllowFromHint: 'Only these device or sender IDs can invoke the channel when set.',
channelFieldEnableGroupsHint: 'Allow messages coming from group chats.',
channelFieldRequireMentionHint: 'When enabled, group messages must mention the bot before they are accepted.',
whatsappBridgeRunning: 'Bridge Running',
whatsappBridgeStopped: 'Bridge Stopped',
whatsappBridgeURL: 'Bridge URL',
whatsappBridgeAccount: 'Linked Account',
whatsappBridgeLastEvent: 'Last Event',
whatsappInbound: 'Inbound',
whatsappOutbound: 'Outbound',
whatsappReadReceipts: 'Read Receipts',
whatsappLastRead: 'Last Read',
whatsappLastInbound: 'Last Inbound',
whatsappLastOutbound: 'Last Outbound',
whatsappBridgeQRCode: 'QR Login',
whatsappQRCodeReady: 'Scan with WhatsApp',
whatsappQRCodeUnavailable: 'QR not available',
whatsappQRCodeHint: 'If you are already linked, no QR is shown.\nIf the bridge is not running, start `clawgo channel whatsapp bridge run` first.',
whatsappQRCodeHint: 'If you are already linked, no QR is shown.\nIf the QR code does not appear, confirm the gateway is running and the WhatsApp channel is enabled.',
whatsappStateAwaitingScan: 'Awaiting Scan',
whatsappStateDisconnected: 'Disconnected',
whatsappBridgeDevHintTitle: 'How to use',
whatsappBridgeDevHint: '1. Start the bridge with `clawgo channel whatsapp bridge run`.\n2. Scan the QR code here with WhatsApp.\n3. Keep `make dev` running to receive WhatsApp messages in ClawGo.',
whatsappBridgeDevHint: '1. Start the gateway and enable the WhatsApp channel.\n2. Scan the QR code here with WhatsApp.\n3. Keep ClawGo running to receive WhatsApp messages.',
whatsappFieldEnabledHint: 'Master switch for receiving WhatsApp messages through the bridge.',
whatsappFieldBridgeURLHint: 'WebSocket address of the local WhatsApp companion bridge service.',
whatsappFieldBridgeURLHint: 'Optional. Leave empty to use the gateway embedded WhatsApp bridge at /whatsapp/ws.',
whatsappFieldAllowFromHint: 'One sender JID per line. Only these senders can trigger ClawGo.',
whatsappFieldEnableGroupsHint: 'Allow messages from WhatsApp groups to enter the channel.',
whatsappFieldRequireMentionHint: 'When enabled, group messages must mention the bot before being handled.',
whatsappFieldAllowFromFootnote: 'Supports one JID per line, and also accepts comma-separated values.',
whatsappLogoutTitle: 'Logout WhatsApp Session',
whatsappLogoutMessage: 'Unlink the current WhatsApp companion session and request a new QR code?',
unknownAgent: 'Unknown Agent',
mainAgent: 'Main Agent',
ekgWindowLabel: '{{window}} window',
mcpServices: 'MCP',
mcpServicesHint: 'Manage MCP servers and install service packages.',
cronJobs: 'Cron Jobs',
@@ -494,7 +540,7 @@ const resources = {
proxy: 'Proxy',
timeout_sec: 'Timeout (Seconds)',
shell: 'Shell',
enabled: 'Enabled',
enabled: 'Enable',
logging: 'Logging',
level: 'Log Level',
format: 'Log Format',
@@ -672,27 +718,73 @@ const resources = {
qqChannelHint: '配置 QQ 通道的机器人凭证。',
dingtalkChannelHint: '配置钉钉通道的应用凭证。',
maixcamChannelHint: '配置 MaixCam 通道的 host、port 和允许发送者。',
channelSectionConnection: '接入配置',
channelSectionConnectionHint: '启用通道,并配置连接所需的凭证或 bridge 地址。',
channelSectionAccess: '访问控制',
channelSectionAccessHint: '限制允许访问该通道的发送者或会话范围。',
channelSectionGroupPolicy: '群组策略',
channelSectionGroupPolicyHint: '控制是否接收群组消息,以及何时必须 @ 提及。',
channelSectionNetwork: '网络配置',
channelSectionNetworkHint: '配置该通道使用的 host 和 port。',
channelFieldTelegramEnabledHint: '开启或关闭内置 Telegram 机器人通道。',
channelFieldTelegramTokenHint: '来自 BotFather 的 Telegram bot token用于收发消息。',
channelFieldTelegramStreamingHint: '将回复分段流式返回到 Telegram而不是等待整条结果完成。',
channelFieldTelegramAllowFromHint: '设置后,仅允许这些 Telegram 用户 ID 调用该机器人。',
channelFieldTelegramAllowChatsHint: '可选的会话白名单,例如私聊或指定群组。',
channelFieldDiscordEnabledHint: '开启或关闭 Discord 机器人通道。',
channelFieldDiscordTokenHint: '用于连接 Discord 机器人的 bot token。',
channelFieldDiscordAllowFromHint: '设置后,仅允许这些 Discord 用户 ID 调用该机器人。',
channelFieldFeishuEnabledHint: '开启或关闭飞书通道。',
channelFieldFeishuAppIDHint: '飞书机器人或应用集成使用的 App ID。',
channelFieldFeishuAppSecretHint: '与飞书 App ID 配套的密钥。',
channelFieldFeishuEncryptKeyHint: '飞书事件订阅可选的加密 Key。',
channelFieldFeishuVerificationTokenHint: '用于校验飞书回调请求的 verification token。',
channelFieldFeishuAllowFromHint: '设置后,仅允许这些飞书发送者调用该通道。',
channelFieldFeishuAllowChatsHint: '可选的飞书会话 ID 白名单。',
channelFieldQQEnabledHint: '开启或关闭 QQ 通道。',
channelFieldQQAppIDHint: 'QQ 机器人应用 ID。',
channelFieldQQAppSecretHint: 'QQ 机器人应用密钥。',
channelFieldQQAllowFromHint: '设置后,仅允许这些 QQ 发送者调用该通道。',
channelFieldDingTalkEnabledHint: '开启或关闭钉钉通道。',
channelFieldDingTalkClientIDHint: '钉钉应用的 Client ID。',
channelFieldDingTalkClientSecretHint: '与钉钉 Client ID 配套的密钥。',
channelFieldDingTalkAllowFromHint: '设置后,仅允许这些钉钉发送者调用该通道。',
channelFieldMaixCamEnabledHint: '开启或关闭 MaixCam 通道。',
channelFieldMaixCamHostHint: 'MaixCam 设备的主机名或 IP 地址。',
channelFieldMaixCamPortHint: 'MaixCam 服务使用的端口。',
channelFieldMaixCamAllowFromHint: '设置后,仅允许这些设备或发送者 ID 调用该通道。',
channelFieldEnableGroupsHint: '允许接收来自群聊的消息。',
channelFieldRequireMentionHint: '开启后,群聊消息必须先 @ 机器人才会被接收。',
whatsappBridgeRunning: 'Bridge 运行中',
whatsappBridgeStopped: 'Bridge 未运行',
whatsappBridgeURL: 'Bridge 地址',
whatsappBridgeAccount: '关联账号',
whatsappBridgeLastEvent: '最近事件',
whatsappInbound: '入站',
whatsappOutbound: '出站',
whatsappReadReceipts: '已读回执',
whatsappLastRead: '最近已读',
whatsappLastInbound: '最近入站',
whatsappLastOutbound: '最近出站',
whatsappBridgeQRCode: '二维码登录',
whatsappQRCodeReady: '请用 WhatsApp 扫码',
whatsappQRCodeUnavailable: '当前没有二维码',
whatsappQRCodeHint: '如果已经关联成功,就不会显示二维码。\n如果 bridge 还没启动,请先执行 `clawgo channel whatsapp bridge run`。',
whatsappQRCodeHint: '如果已经关联成功,就不会显示二维码。\n如果二维码没有出现,请确认 gateway 已启动且 WhatsApp 通道已启用。',
whatsappStateAwaitingScan: '等待扫码',
whatsappStateDisconnected: '已断开',
whatsappBridgeDevHintTitle: '使用方式',
whatsappBridgeDevHint: '1. 先执行 `clawgo channel whatsapp bridge run` 启动 bridge。\n2. 在这里用 WhatsApp 扫描二维码。\n3. 保持 `make dev` 运行,让 ClawGo 接收 WhatsApp 消息。',
whatsappBridgeDevHint: '1. 先启动 gateway并启用 WhatsApp 通道。\n2. 在这里用 WhatsApp 扫描二维码。\n3. 保持 ClawGo 运行以接收 WhatsApp 消息。',
whatsappFieldEnabledHint: '总开关,控制是否通过 bridge 接收 WhatsApp 消息。',
whatsappFieldBridgeURLHint: '本地 WhatsApp companion bridge 服务的 WebSocket 地址。',
whatsappFieldBridgeURLHint: '可选。留空时自动使用当前 Gateway 内嵌的 /whatsapp/ws 地址。',
whatsappFieldAllowFromHint: '每行一个发送者 JID只有这些发送者可以触发 ClawGo。',
whatsappFieldEnableGroupsHint: '允许来自 WhatsApp 群组的消息进入该通道。',
whatsappFieldRequireMentionHint: '开启后,群消息必须显式 @ 提及机器人才会被处理。',
whatsappFieldAllowFromFootnote: '支持每行一个 JID也支持逗号分隔后自动拆分。',
whatsappLogoutTitle: '退出 WhatsApp 会话',
whatsappLogoutMessage: '是否解除当前 WhatsApp companion 会话,并重新申请新的二维码?',
unknownAgent: '未知代理',
mainAgent: '主代理',
ekgWindowLabel: '{{window}} 窗口',
mcpServices: 'MCP',
mcpServicesHint: '管理 MCP 服务并安装服务包。',
cronJobs: '定时任务',
@@ -1149,7 +1241,7 @@ const resources = {
proxy: '代理',
timeout_sec: '超时时间 (秒)',
shell: 'Shell',
enabled: '启用',
enabled: '启用',
logging: '日志',
level: '日志级别',
format: '日志格式',