diff --git a/internal/tui/i18n_command.go b/internal/tui/i18n_command.go index 6176345d4..4089e64cc 100644 --- a/internal/tui/i18n_command.go +++ b/internal/tui/i18n_command.go @@ -25,22 +25,17 @@ func enCommandModule() map[string]string { "slash.lang": "Switch interface language", "slash.skills": "Browse available skills", "slash.exit": "Exit ggcode", - "slash.agents": "List sub-agents", - "slash.agent": "Sub-agent details", "slash.compact": "Compress conversation history", "slash.todo": "View/manage todo list", "slash.bug": "Report a bug", "slash.config": "View/modify configuration", "slash.qq": "Manage QQ channel binding", - "slash.tg": "Manage Telegram bot binding", "slash.telegram": "Manage Telegram bot binding", "slash.pc": "Manage PC channel binding", "slash.discord": "Manage Discord binding", "slash.feishu": "Manage Feishu binding", - "slash.lark": "Manage Feishu binding", "slash.slack": "Manage Slack binding", "slash.dingtalk": "Manage DingTalk binding", - "slash.ding": "Manage DingTalk binding", "slash.status": "Show current status", "slash.update": "Update ggcode", "slash.restart": "Restart ggcode", @@ -62,16 +57,12 @@ func enCommandModule() map[string]string { "slash.tunnel": "Share session to mobile (QR code tunnel)", "slash.retry": "Retry last submission after error", "slash.edit": "Edit and resend last submission", - "slash.regen": "Regenerate last response", - "slash.fork": "Fork conversation into new session", "slash.reflect": "Show recent run reflections", "slash.rules": "Manage ratchet rules", "slash.goal": "Show, set, or clear persistent autopilot goal", "command.unknown": "Unknown command: %s\n", "command.help_hint": "Type /help for available commands\n\n", "command.usage.allow": "Usage: /allow \n\n", - "command.usage.resume": "Usage: /resume \n\n", - "command.usage.export": "Usage: /export \n\n", "command.model_switched": "Switched model to: %s (vendor: %s)\n\n", "command.model_failed": "Failed to switch model: %v\n\n", "command.model_current": "Current model: %s (vendor: %s)\nAvailable models: %s\nUse /model to open the model panel or /model to switch directly.\n\n", @@ -81,7 +72,6 @@ func enCommandModule() map[string]string { "command.provider_current": "Current vendor: %s (endpoint: %s, model: %s)\nAvailable vendors: %s\nAvailable endpoints: %s\nUsage: /provider [vendor] [endpoint]\n\n", "command.allow_set": "✓ %s is now always allowed\n\n", "command.custom": "Custom command /%s:\n", - "command.mention_error": "Mention expansion error: %v", "command.skill_agent_only": "Skill %s can only be invoked by the agent.", "init.resolve_failed": "Failed to resolve init target: %v\n\n", "init.generate_failed": "Failed to generate AGENTS.md content: %v\n\n", @@ -173,22 +163,17 @@ func zhCommandModule() map[string]string { "slash.lang": "切换界面语言", "slash.skills": "浏览可用 skills", "slash.exit": "退出 ggcode", - "slash.agents": "列出子 Agent", - "slash.agent": "查看子 Agent 详情", "slash.compact": "压缩对话历史", "slash.todo": "查看/管理 todo", "slash.bug": "报告 bug", "slash.config": "查看/修改配置", "slash.qq": "管理 QQ 渠道绑定", - "slash.tg": "管理 Telegram 机器人绑定", "slash.telegram": "管理 Telegram 机器人绑定", "slash.pc": "管理 PC 渠道绑定", "slash.discord": "管理 Discord 绑定", "slash.feishu": "管理飞书绑定", - "slash.lark": "管理飞书绑定", "slash.slack": "管理 Slack 绑定", "slash.dingtalk": "管理钉钉绑定", - "slash.ding": "管理钉钉绑定", "slash.status": "显示当前状态", "slash.update": "升级 ggcode", "slash.restart": "重启 ggcode", @@ -210,16 +195,12 @@ func zhCommandModule() map[string]string { "slash.tunnel": "分享会话到手机(二维码隧道)", "slash.retry": "出错后重试上次提交", "slash.edit": "编辑并重新发送上次提交", - "slash.regen": "重新生成最近回复", - "slash.fork": "分叉对话到新会话", "slash.reflect": "显示最近运行反思", "slash.rules": "管理棘轮规则", "slash.goal": "查看、设置或清除持久化自动驾驶目标", "command.unknown": "未知命令:%s\n", "command.help_hint": "输入 /help 查看可用命令\n\n", "command.usage.allow": "用法:/allow \n\n", - "command.usage.resume": "用法:/resume \n\n", - "command.usage.export": "用法:/export \n\n", "command.model_switched": "已切换模型为:%s(供应商:%s)\n\n", "command.model_failed": "切换模型失败:%v\n\n", "command.model_current": "当前模型:%s(供应商:%s)\n可用模型:%s\n使用 /model 打开模型面板,或用 /model 直接切换。\n\n", @@ -229,7 +210,6 @@ func zhCommandModule() map[string]string { "command.provider_current": "当前供应商:%s(接口:%s,模型:%s)\n可用供应商:%s\n可用接口:%s\n用法:/provider [vendor] [endpoint]\n\n", "command.allow_set": "✓ %s 已设为永久允许\n\n", "command.custom": "自定义命令 /%s:\n", - "command.mention_error": "展开 @ 引用失败:%v", "command.skill_agent_only": "技能 %s 只能由 agent 调用。", "init.resolve_failed": "解析初始化目标失败:%v\n\n", "init.generate_failed": "生成 AGENTS.md 内容失败:%v\n\n", diff --git a/internal/tui/i18n_dingtalk.go b/internal/tui/i18n_dingtalk.go index 65a95b6b8..bb955796f 100644 --- a/internal/tui/i18n_dingtalk.go +++ b/internal/tui/i18n_dingtalk.go @@ -12,10 +12,7 @@ func enDingtalkModule() map[string]string { "panel.dingtalk.bound": "Bound: %d", "panel.dingtalk.available": "Available: %d", "panel.dingtalk.none": "(none)", - "panel.dingtalk.default": "(default)", "panel.dingtalk.adapter": "Adapter: %s", - "panel.dingtalk.target": "Target: %s", - "panel.dingtalk.channel": "Channel: %s", "panel.dingtalk.bot_list": "DingTalk Bot List", "panel.dingtalk.no_bots": "No DingTalk bots configured.", "panel.dingtalk.entry.available": "Available", @@ -48,7 +45,6 @@ func enDingtalkModule() map[string]string { "panel.dingtalk.error.config_format": "DingTalk bot config must be: ", "panel.dingtalk.error.adapter_required": "DingTalk adapter name is required", "panel.dingtalk.error.not_configured": "DingTalk bot %q is not configured", - "panel.dingtalk.error.disabled": "DingTalk bot %q is disabled", "panel.dingtalk.error.not_dingtalk_adapter": "adapter %q is not a DingTalk bot", "panel.dingtalk.error.not_online": "DingTalk bot %q is not online", "panel.dingtalk.error.not_online_detail": "DingTalk bot %q is not online: %s", @@ -65,10 +61,7 @@ func zhDingtalkModule() map[string]string { "panel.dingtalk.bound": "已绑定:%d", "panel.dingtalk.available": "可用:%d", "panel.dingtalk.none": "(无)", - "panel.dingtalk.default": "(默认)", "panel.dingtalk.adapter": "机器人:%s", - "panel.dingtalk.target": "目标:%s", - "panel.dingtalk.channel": "渠道:%s", "panel.dingtalk.bot_list": "钉钉机器人列表", "panel.dingtalk.no_bots": "没有配置钉钉机器人。", "panel.dingtalk.entry.available": "可用", @@ -101,7 +94,6 @@ func zhDingtalkModule() map[string]string { "panel.dingtalk.error.config_format": "钉钉配置格式:<名称> ", "panel.dingtalk.error.adapter_required": "需要钉钉适配器名称", "panel.dingtalk.error.not_configured": "钉钉机器人 %q 未配置", - "panel.dingtalk.error.disabled": "钉钉机器人 %q 已禁用", "panel.dingtalk.error.not_dingtalk_adapter": "适配器 %q 不是钉钉机器人", "panel.dingtalk.error.not_online": "钉钉机器人 %q 未上线", "panel.dingtalk.error.not_online_detail": "钉钉机器人 %q 未上线:%s", diff --git a/internal/tui/i18n_discord.go b/internal/tui/i18n_discord.go index fdcb176c5..f7194aed6 100644 --- a/internal/tui/i18n_discord.go +++ b/internal/tui/i18n_discord.go @@ -12,10 +12,7 @@ func enDiscordModule() map[string]string { "panel.discord.bound": "Bound: %d", "panel.discord.available": "Available: %d", "panel.discord.none": "(none)", - "panel.discord.default": "(default)", "panel.discord.adapter": "Adapter: %s", - "panel.discord.target": "Target: %s", - "panel.discord.channel": "Channel: %s", "panel.discord.bot_list": "Discord Bot List", "panel.discord.no_bots": "No Discord bots configured.", "panel.discord.entry.available": "Available", @@ -48,7 +45,6 @@ func enDiscordModule() map[string]string { "panel.discord.error.config_format": "Discord bot config must be: ", "panel.discord.error.adapter_required": "Discord adapter name is required", "panel.discord.error.not_configured": "Discord bot %q is not configured", - "panel.discord.error.disabled": "Discord bot %q is disabled", "panel.discord.error.not_discord_adapter": "adapter %q is not a Discord bot", "panel.discord.error.not_online": "Discord bot %q is not online", "panel.discord.error.not_online_detail": "Discord bot %q is not online: %s", @@ -65,10 +61,7 @@ func zhDiscordModule() map[string]string { "panel.discord.bound": "已绑定:%d", "panel.discord.available": "可用:%d", "panel.discord.none": "(无)", - "panel.discord.default": "(默认)", "panel.discord.adapter": "机器人:%s", - "panel.discord.target": "目标:%s", - "panel.discord.channel": "渠道:%s", "panel.discord.bot_list": "Discord 机器人列表", "panel.discord.no_bots": "没有配置 Discord 机器人。", "panel.discord.entry.available": "可用", @@ -101,7 +94,6 @@ func zhDiscordModule() map[string]string { "panel.discord.error.config_format": "Discord 配置格式:<名称> ", "panel.discord.error.adapter_required": "需要 Discord 适配器名称", "panel.discord.error.not_configured": "Discord 机器人 %q 未配置", - "panel.discord.error.disabled": "Discord 机器人 %q 已禁用", "panel.discord.error.not_discord_adapter": "适配器 %q 不是 Discord 机器人", "panel.discord.error.not_online": "Discord 机器人 %q 未上线", "panel.discord.error.not_online_detail": "Discord 机器人 %q 未上线:%s", diff --git a/internal/tui/i18n_feishu.go b/internal/tui/i18n_feishu.go index 07b35bdaa..f09d40c45 100644 --- a/internal/tui/i18n_feishu.go +++ b/internal/tui/i18n_feishu.go @@ -12,10 +12,7 @@ func enFeishuModule() map[string]string { "panel.feishu.bound": "Bound: %d", "panel.feishu.available": "Available: %d", "panel.feishu.none": "(none)", - "panel.feishu.default": "(default)", "panel.feishu.adapter": "Adapter: %s", - "panel.feishu.target": "Target: %s", - "panel.feishu.channel": "Channel: %s", "panel.feishu.bot_list": "Feishu Bot List", "panel.feishu.no_bots": "No Feishu bots configured.", "panel.feishu.entry.available": "Available", @@ -48,7 +45,6 @@ func enFeishuModule() map[string]string { "panel.feishu.error.config_format": "Feishu bot config must be: ", "panel.feishu.error.adapter_required": "Feishu adapter name is required", "panel.feishu.error.not_configured": "Feishu bot %q is not configured", - "panel.feishu.error.disabled": "Feishu bot %q is disabled", "panel.feishu.error.not_feishu_adapter": "adapter %q is not a Feishu bot", "panel.feishu.error.not_online": "Feishu bot %q is not online", "panel.feishu.error.not_online_detail": "Feishu bot %q is not online: %s", @@ -65,10 +61,7 @@ func zhFeishuModule() map[string]string { "panel.feishu.bound": "已绑定:%d", "panel.feishu.available": "可用:%d", "panel.feishu.none": "(无)", - "panel.feishu.default": "(默认)", "panel.feishu.adapter": "机器人:%s", - "panel.feishu.target": "目标:%s", - "panel.feishu.channel": "渠道:%s", "panel.feishu.bot_list": "飞书机器人列表", "panel.feishu.no_bots": "没有配置飞书机器人。", "panel.feishu.entry.available": "可用", @@ -101,7 +94,6 @@ func zhFeishuModule() map[string]string { "panel.feishu.error.config_format": "飞书配置格式:<名称> ", "panel.feishu.error.adapter_required": "需要飞书适配器名称", "panel.feishu.error.not_configured": "飞书机器人 %q 未配置", - "panel.feishu.error.disabled": "飞书机器人 %q 已禁用", "panel.feishu.error.not_feishu_adapter": "适配器 %q 不是飞书机器人", "panel.feishu.error.not_online": "飞书机器人 %q 未上线", "panel.feishu.error.not_online_detail": "飞书机器人 %q 未上线:%s", diff --git a/internal/tui/i18n_im.go b/internal/tui/i18n_im.go index 27644b581..65ff9f31b 100644 --- a/internal/tui/i18n_im.go +++ b/internal/tui/i18n_im.go @@ -29,7 +29,6 @@ func init() { "panel.im.status.disabled": "disabled", "panel.im.health.healthy": "healthy", "panel.im.health.unhealthy": "unhealthy", - "panel.im.health.muted": "muted", "panel.im.health.not_bound": "not bound", "panel.im.actions": "Actions", "panel.im.output_mode": "Output Mode", @@ -68,7 +67,6 @@ func init() { "panel.im.edit.empty_value": "Value cannot be empty", "panel.im.edit.invalid_format": "Invalid format. Use key=value", "panel.im.edit.enter_field_name": "Enter new field as: key=value", - "panel.im.edit_result.saved": "Updated %s for %s", "panel.im.instances": "Instances (%d)", "panel.im.label.active": "✓ active", "panel.im.label.muted": "⊘ muted", @@ -103,7 +101,6 @@ func init() { "panel.im.status.disabled": "已禁用", "panel.im.health.healthy": "正常", "panel.im.health.unhealthy": "异常", - "panel.im.health.muted": "已静音", "panel.im.health.not_bound": "未绑定", "panel.im.actions": "操作", "panel.im.output_mode": "输出模式", @@ -142,7 +139,6 @@ func init() { "panel.im.edit.empty_value": "值不能为空", "panel.im.edit.invalid_format": "格式无效。请使用 key=value", "panel.im.edit.enter_field_name": "输入新字段: key=value", - "panel.im.edit_result.saved": "已更新 %s 的 %s", "panel.im.instances": "实例 (%d)", "panel.im.label.active": "✓ 活跃", "panel.im.label.muted": "⊘ 已静音", diff --git a/internal/tui/i18n_irc.go b/internal/tui/i18n_irc.go index 3a7305b35..f3b8b9b33 100644 --- a/internal/tui/i18n_irc.go +++ b/internal/tui/i18n_irc.go @@ -12,10 +12,7 @@ func enIRCModule() map[string]string { "panel.irc.bound": "Bound: %d", "panel.irc.available": "Available: %d", "panel.irc.none": "(none)", - "panel.irc.default": "(default)", "panel.irc.adapter": "Adapter: %s", - "panel.irc.target": "Target: %s", - "panel.irc.channel": "Channel: %s", "panel.irc.bot_list": "IRC Bot List", "panel.irc.no_bots": "No IRC bots configured.", "panel.irc.entry.available": "Available", @@ -48,7 +45,6 @@ func enIRCModule() map[string]string { "panel.irc.error.config_format": "IRC bot config must be: ", "panel.irc.error.adapter_required": "IRC adapter name is required", "panel.irc.error.not_configured": "IRC bot %q is not configured", - "panel.irc.error.disabled": "IRC bot %q is disabled", "panel.irc.error.not_irc_adapter": "adapter %q is not an IRC bot", "panel.irc.status.not_started": "not started", "panel.irc.status.unknown": "unknown", @@ -63,10 +59,7 @@ func zhIRCModule() map[string]string { "panel.irc.bound": "已绑定: %d", "panel.irc.available": "可用: %d", "panel.irc.none": "(无)", - "panel.irc.default": "(默认)", "panel.irc.adapter": "适配器: %s", - "panel.irc.target": "目标: %s", - "panel.irc.channel": "频道: %s", "panel.irc.bot_list": "IRC 机器人列表", "panel.irc.no_bots": "未配置 IRC 机器人。", "panel.irc.entry.available": "可用", @@ -99,7 +92,6 @@ func zhIRCModule() map[string]string { "panel.irc.error.config_format": "IRC 机器人配置格式: <名称> <主机> <昵称> <频道>", "panel.irc.error.adapter_required": "需要 IRC 适配器名称", "panel.irc.error.not_configured": "IRC 机器人 %q 未配置", - "panel.irc.error.disabled": "IRC 机器人 %q 已禁用", "panel.irc.error.not_irc_adapter": "适配器 %q 不是 IRC 机器人", "panel.irc.status.not_started": "未启动", "panel.irc.status.unknown": "未知", diff --git a/internal/tui/i18n_matrix.go b/internal/tui/i18n_matrix.go index 67da293da..e022d46c6 100644 --- a/internal/tui/i18n_matrix.go +++ b/internal/tui/i18n_matrix.go @@ -12,10 +12,7 @@ func enMatrixModule() map[string]string { "panel.matrix.bound": "Bound: %d", "panel.matrix.available": "Available: %d", "panel.matrix.none": "(none)", - "panel.matrix.default": "(default)", "panel.matrix.adapter": "Adapter: %s", - "panel.matrix.target": "Target: %s", - "panel.matrix.channel": "Channel: %s", "panel.matrix.bot_list": "Matrix Bot List", "panel.matrix.no_bots": "No Matrix bots configured.", "panel.matrix.entry.available": "Available", @@ -48,7 +45,6 @@ func enMatrixModule() map[string]string { "panel.matrix.error.config_format": "Matrix bot config must be: ", "panel.matrix.error.adapter_required": "Matrix adapter name is required", "panel.matrix.error.not_configured": "Matrix bot %q is not configured", - "panel.matrix.error.disabled": "Matrix bot %q is disabled", "panel.matrix.error.not_matrix_adapter": "adapter %q is not a Matrix bot", "panel.matrix.status.not_started": "not started", "panel.matrix.status.unknown": "unknown", @@ -63,10 +59,7 @@ func zhMatrixModule() map[string]string { "panel.matrix.bound": "已绑定:%d", "panel.matrix.available": "可用:%d", "panel.matrix.none": "(无)", - "panel.matrix.default": "(默认)", "panel.matrix.adapter": "机器人:%s", - "panel.matrix.target": "目标:%s", - "panel.matrix.channel": "渠道:%s", "panel.matrix.bot_list": "Matrix 机器人列表", "panel.matrix.no_bots": "没有配置 Matrix 机器人。", "panel.matrix.entry.available": "可用", @@ -99,7 +92,6 @@ func zhMatrixModule() map[string]string { "panel.matrix.error.config_format": "Matrix 配置格式:<名称> <服务器URL> ", "panel.matrix.error.adapter_required": "需要 Matrix 适配器名称", "panel.matrix.error.not_configured": "Matrix 机器人 %q 未配置", - "panel.matrix.error.disabled": "Matrix 机器人 %q 已禁用", "panel.matrix.error.not_matrix_adapter": "适配器 %q 不是 Matrix 机器人", "panel.matrix.status.not_started": "未启动", "panel.matrix.status.unknown": "未知", diff --git a/internal/tui/i18n_mattermost.go b/internal/tui/i18n_mattermost.go index 48124d150..ecd585ea3 100644 --- a/internal/tui/i18n_mattermost.go +++ b/internal/tui/i18n_mattermost.go @@ -12,10 +12,7 @@ func enMattermostModule() map[string]string { "panel.mattermost.bound": "Bound: %d", "panel.mattermost.available": "Available: %d", "panel.mattermost.none": "(none)", - "panel.mattermost.default": "(default)", "panel.mattermost.adapter": "Adapter: %s", - "panel.mattermost.target": "Target: %s", - "panel.mattermost.channel": "Channel: %s", "panel.mattermost.bot_list": "Mattermost Bot List", "panel.mattermost.no_bots": "No Mattermost bots configured.", "panel.mattermost.entry.available": "Available", @@ -48,7 +45,6 @@ func enMattermostModule() map[string]string { "panel.mattermost.error.config_format": "Mattermost bot config must be: ", "panel.mattermost.error.adapter_required": "Mattermost adapter name is required", "panel.mattermost.error.not_configured": "Mattermost bot %q is not configured", - "panel.mattermost.error.disabled": "Mattermost bot %q is disabled", "panel.mattermost.error.not_mm_adapter": "adapter %q is not a Mattermost bot", "panel.mattermost.status.not_started": "not started", "panel.mattermost.status.unknown": "unknown", @@ -63,10 +59,7 @@ func zhMattermostModule() map[string]string { "panel.mattermost.bound": "已绑定:%d", "panel.mattermost.available": "可用:%d", "panel.mattermost.none": "(无)", - "panel.mattermost.default": "(默认)", "panel.mattermost.adapter": "机器人:%s", - "panel.mattermost.target": "目标:%s", - "panel.mattermost.channel": "渠道:%s", "panel.mattermost.bot_list": "Mattermost 机器人列表", "panel.mattermost.no_bots": "没有配置 Mattermost 机器人。", "panel.mattermost.entry.available": "可用", @@ -99,7 +92,6 @@ func zhMattermostModule() map[string]string { "panel.mattermost.error.config_format": "Mattermost 配置格式:<名称> <服务器URL> ", "panel.mattermost.error.adapter_required": "需要 Mattermost 适配器名称", "panel.mattermost.error.not_configured": "Mattermost 机器人 %q 未配置", - "panel.mattermost.error.disabled": "Mattermost 机器人 %q 已禁用", "panel.mattermost.error.not_mm_adapter": "适配器 %q 不是 Mattermost 机器人", "panel.mattermost.status.not_started": "未启动", "panel.mattermost.status.unknown": "未知", diff --git a/internal/tui/i18n_nostr.go b/internal/tui/i18n_nostr.go index f10411d95..a1001583e 100644 --- a/internal/tui/i18n_nostr.go +++ b/internal/tui/i18n_nostr.go @@ -12,10 +12,7 @@ func enNostrModule() map[string]string { "panel.nostr.bound": "Bound: %d", "panel.nostr.available": "Available: %d", "panel.nostr.none": "(none)", - "panel.nostr.default": "(default)", "panel.nostr.adapter": "Adapter: %s", - "panel.nostr.target": "Target: %s", - "panel.nostr.channel": "Channel: %s", "panel.nostr.bot_list": "Nostr Bot List", "panel.nostr.no_bots": "No Nostr bots configured.", "panel.nostr.entry.available": "Available", @@ -46,12 +43,10 @@ func enNostrModule() map[string]string { "panel.nostr.message.cleared": "Nostr channel cleared for current workspace.", "panel.nostr.message.added_bot": "Added Nostr bot %s.", "panel.nostr.message.added_bot_key": "Generated key for %s — save this nsec: %s", - "panel.nostr.message.pubkey": "Public key (npub): %s", "panel.nostr.error.config_unavailable": "config is unavailable", "panel.nostr.error.config_format": "Nostr bot config requires at least a name", "panel.nostr.error.adapter_required": "Nostr adapter name is required", "panel.nostr.error.not_configured": "Nostr bot %q is not configured", - "panel.nostr.error.disabled": "Nostr bot %q is disabled", "panel.nostr.error.not_nostr_adapter": "adapter %q is not a Nostr bot", "panel.nostr.status.not_started": "not started", "panel.nostr.status.unknown": "unknown", @@ -66,10 +61,7 @@ func zhNostrModule() map[string]string { "panel.nostr.bound": "已绑定: %d", "panel.nostr.available": "可用: %d", "panel.nostr.none": "(无)", - "panel.nostr.default": "(默认)", "panel.nostr.adapter": "适配器: %s", - "panel.nostr.target": "目标: %s", - "panel.nostr.channel": "频道: %s", "panel.nostr.bot_list": "Nostr 机器人列表", "panel.nostr.no_bots": "未配置 Nostr 机器人。", "panel.nostr.entry.available": "可用", @@ -100,12 +92,10 @@ func zhNostrModule() map[string]string { "panel.nostr.message.cleared": "Nostr 频道已清除。", "panel.nostr.message.added_bot": "已添加 Nostr 机器人 %s。", "panel.nostr.message.added_bot_key": "已为 %s 生成密钥 — 请保存此 nsec: %s", - "panel.nostr.message.pubkey": "公钥 (npub): %s", "panel.nostr.error.config_unavailable": "配置不可用", "panel.nostr.error.config_format": "Nostr 机器人配置至少需要一个名称", "panel.nostr.error.adapter_required": "需要 Nostr 适配器名称", "panel.nostr.error.not_configured": "Nostr 机器人 %q 未配置", - "panel.nostr.error.disabled": "Nostr 机器人 %q 已禁用", "panel.nostr.error.not_nostr_adapter": "适配器 %q 不是 Nostr 机器人", "panel.nostr.status.not_started": "未启动", "panel.nostr.status.unknown": "未知", diff --git a/internal/tui/i18n_qq.go b/internal/tui/i18n_qq.go index 753a5e8fa..9cb91b2aa 100644 --- a/internal/tui/i18n_qq.go +++ b/internal/tui/i18n_qq.go @@ -12,14 +12,10 @@ func enQQModule() map[string]string { "panel.qq.bound": "Bound: %d", "panel.qq.available": "Available: %d", "panel.qq.none": "(none)", - "panel.qq.default": "(default)", "panel.qq.adapter": "Adapter: %s", - "panel.qq.target": "Target: %s", - "panel.qq.channel": "Channel: %s", "panel.qq.bot_list": "QQ Bot List", "panel.qq.no_bots": "No QQ bots configured.", "panel.qq.entry.available": "Available", - "panel.qq.entry.bound": "Bound", "panel.qq.entry.muted": "Muted", "panel.qq.entry.disabled": "disabled", "panel.qq.details": "Details", @@ -37,10 +33,6 @@ func enQQModule() map[string]string { "panel.qq.create_example": "Example: qq-main 123456 secret-value", "panel.qq.create_hint": "Enter create bot • Esc cancel", "panel.qq.actions_hint": "j/k move • d disable/enable • Enter or b bind bot • c bind channel • x unbind channel • u unbind bot • i create bot • e edit config • q show QR • Esc close", - "panel.qq.bind_channel": "Bind Channel", - "panel.qq.scan_hint": "Scan the QR code, add the bot, then send a message to start pairing.", - "panel.qq.qr_code": "QR Code:", - "panel.qq.share_link": "Share Link:", "panel.qq.message.no_bot": "No QQ bot available.", "panel.qq.message.bound_success": "QQ bot bound to current workspace. Use c to generate the channel bind QR code.", "panel.qq.message.share_generated": "QQ share link generated. Scan the QR code, add the bot, then send a message to start pairing.", @@ -51,7 +43,6 @@ func enQQModule() map[string]string { "panel.qq.error.config_format": "QQ bot config must be: ", "panel.qq.error.adapter_required": "QQ adapter name is required", "panel.qq.error.not_configured": "QQ bot %q is not configured", - "panel.qq.error.disabled": "QQ bot %q is disabled", "panel.qq.error.not_qq_adapter": "adapter %q is not a QQ bot", "panel.qq.error.not_online": "QQ bot %q is not online", "panel.qq.error.not_online_detail": "QQ bot %q is not online: %s", @@ -71,14 +62,10 @@ func zhQQModule() map[string]string { "panel.qq.bound": "已绑定:%d", "panel.qq.available": "可用:%d", "panel.qq.none": "(无)", - "panel.qq.default": "(默认)", "panel.qq.adapter": "机器人:%s", - "panel.qq.target": "目标:%s", - "panel.qq.channel": "渠道:%s", "panel.qq.bot_list": "QQ 机器人列表", "panel.qq.no_bots": "没有配置 QQ 机器人。", "panel.qq.entry.available": "可用", - "panel.qq.entry.bound": "已绑定", "panel.qq.entry.muted": "已静音", "panel.qq.entry.disabled": "已禁用", "panel.qq.details": "详情", @@ -96,10 +83,6 @@ func zhQQModule() map[string]string { "panel.qq.create_example": "示例:qq-main 123456 secret-value", "panel.qq.create_hint": "Enter 创建机器人 • Esc 取消", "panel.qq.actions_hint": "j/k 移动 • d 禁用/启用 • Enter 或 b 绑定机器人 • c 绑定渠道 • x 解绑渠道 • u 解绑机器人 • i 创建机器人 • e 编辑配置 • q 二维码 • Esc 关闭", - "panel.qq.bind_channel": "绑定渠道", - "panel.qq.scan_hint": "扫描二维码添加机器人,然后发送一条消息开始配对。", - "panel.qq.qr_code": "二维码:", - "panel.qq.share_link": "分享链接:", "panel.qq.message.no_bot": "当前没有可用的 QQ 机器人。", "panel.qq.message.bound_success": "QQ 机器人已绑定到当前工作区。按 c 生成渠道绑定二维码。", "panel.qq.message.share_generated": "已生成 QQ 分享链接。扫描二维码添加机器人,然后发送一条消息开始配对。", @@ -110,7 +93,6 @@ func zhQQModule() map[string]string { "panel.qq.error.config_format": "QQ 机器人配置格式必须为: ", "panel.qq.error.adapter_required": "QQ 适配器名称不能为空", "panel.qq.error.not_configured": "QQ 机器人 %q 未配置", - "panel.qq.error.disabled": "QQ 机器人 %q 已禁用", "panel.qq.error.not_qq_adapter": "适配器 %q 不是 QQ 机器人", "panel.qq.error.not_online": "QQ 机器人 %q 未在线", "panel.qq.error.not_online_detail": "QQ 机器人 %q 未在线:%s", diff --git a/internal/tui/i18n_qr_overlay.go b/internal/tui/i18n_qr_overlay.go index bbfd2d424..acd4bd5f2 100644 --- a/internal/tui/i18n_qr_overlay.go +++ b/internal/tui/i18n_qr_overlay.go @@ -9,7 +9,6 @@ func enQROverlay() map[string]string { "panel.qr.title": "Scan to Add Bot", "panel.qr.scan_hint": "Scan the QR code with your mobile app to add this bot", "panel.qr.esc_hint": "Esc or q - back to panel", - "panel.qr.no_qr": "No contact link available for this adapter", } } @@ -18,6 +17,5 @@ func zhQROverlay() map[string]string { "panel.qr.title": "扫码添加机器人", "panel.qr.scan_hint": "用手机客户端扫描二维码添加机器人", "panel.qr.esc_hint": "Esc 或 q - 返回面板", - "panel.qr.no_qr": "当前适配器没有可用的联系链接", } } diff --git a/internal/tui/i18n_signal.go b/internal/tui/i18n_signal.go index 36418dd58..2024d39b8 100644 --- a/internal/tui/i18n_signal.go +++ b/internal/tui/i18n_signal.go @@ -12,10 +12,7 @@ func enSignalModule() map[string]string { "panel.signal.bound": "Bound: %d", "panel.signal.available": "Available: %d", "panel.signal.none": "(none)", - "panel.signal.default": "(default)", "panel.signal.adapter": "Adapter: %s", - "panel.signal.target": "Target: %s", - "panel.signal.channel": "Channel: %s", "panel.signal.bot_list": "Signal Bot List", "panel.signal.no_bots": "No Signal bots configured.", "panel.signal.entry.available": "Available", @@ -48,7 +45,6 @@ func enSignalModule() map[string]string { "panel.signal.error.config_format": "Signal bot config must be: ", "panel.signal.error.adapter_required": "Signal adapter name is required", "panel.signal.error.not_configured": "Signal bot %q is not configured", - "panel.signal.error.disabled": "Signal bot %q is disabled", "panel.signal.error.not_signal_adapter": "adapter %q is not a Signal bot", "panel.signal.status.not_started": "not started", "panel.signal.status.unknown": "unknown", @@ -61,12 +57,10 @@ func enSignalModule() map[string]string { "panel.signal.qr_title": "Link Device (QR Code)", "panel.signal.qr_fetching": "Fetching QR code...", "panel.signal.qr_scan_hint": "Scan this QR code with Signal app: Settings > Linked devices > +", - "panel.signal.qr_retry_hint": "Press q to retry", "panel.signal.qr_fetch_failed": "QR fetch failed", "panel.signal.qr_no_daemon": "Daemon not running. Install with 'd' first.", "panel.signal.message.installed_pending": "Docker container started. Daemon may need a few seconds to become ready. Press r to re-check.", "panel.signal.message.installed_running": "signal-cli-rest-api installed and running. Press q to generate QR code.", - "panel.signal.qr_press_q": "Press q to generate QR code for device linking", } } @@ -78,10 +72,7 @@ func zhSignalModule() map[string]string { "panel.signal.bound": "已绑定: %d", "panel.signal.available": "可用: %d", "panel.signal.none": "(无)", - "panel.signal.default": "(默认)", "panel.signal.adapter": "适配器: %s", - "panel.signal.target": "目标: %s", - "panel.signal.channel": "频道: %s", "panel.signal.bot_list": "Signal 机器人列表", "panel.signal.no_bots": "未配置 Signal 机器人。", "panel.signal.entry.available": "可用", @@ -114,7 +105,6 @@ func zhSignalModule() map[string]string { "panel.signal.error.config_format": "Signal 机器人配置格式: <名称> <基础URL> <账号>", "panel.signal.error.adapter_required": "需要 Signal 适配器名称", "panel.signal.error.not_configured": "Signal 机器人 %q 未配置", - "panel.signal.error.disabled": "Signal 机器人 %q 已禁用", "panel.signal.error.not_signal_adapter": "适配器 %q 不是 Signal 机器人", "panel.signal.status.not_started": "未启动", "panel.signal.status.unknown": "未知", @@ -127,11 +117,9 @@ func zhSignalModule() map[string]string { "panel.signal.qr_title": "链接设备 (二维码)", "panel.signal.qr_fetching": "获取二维码中...", "panel.signal.qr_scan_hint": "用 Signal 扫码: 设置 > 已链接设备 > +", - "panel.signal.qr_retry_hint": "按 q 重试", "panel.signal.qr_fetch_failed": "二维码获取失败", "panel.signal.qr_no_daemon": "守护进程未运行,请先按 d 安装", "panel.signal.message.installed_pending": "Docker 容器已启动,守护进程可能需要几秒钟就绪,按 r 重新检查。", "panel.signal.message.installed_running": "signal-cli-rest-api 已安装并运行,按 q 生成二维码。", - "panel.signal.qr_press_q": "按 q 生成设备链接二维码", } } diff --git a/internal/tui/i18n_slack.go b/internal/tui/i18n_slack.go index 6aec8d92a..3e268bbd0 100644 --- a/internal/tui/i18n_slack.go +++ b/internal/tui/i18n_slack.go @@ -12,10 +12,7 @@ func enSlackModule() map[string]string { "panel.slack.bound": "Bound: %d", "panel.slack.available": "Available: %d", "panel.slack.none": "(none)", - "panel.slack.default": "(default)", "panel.slack.adapter": "Adapter: %s", - "panel.slack.target": "Target: %s", - "panel.slack.channel": "Channel: %s", "panel.slack.bot_list": "Slack Bot List", "panel.slack.no_bots": "No Slack bots configured.", "panel.slack.entry.available": "Available", @@ -48,7 +45,6 @@ func enSlackModule() map[string]string { "panel.slack.error.config_format": "Slack bot config must be: ", "panel.slack.error.adapter_required": "Slack adapter name is required", "panel.slack.error.not_configured": "Slack bot %q is not configured", - "panel.slack.error.disabled": "Slack bot %q is disabled", "panel.slack.error.not_slack_adapter": "adapter %q is not a Slack bot", "panel.slack.error.not_online": "Slack bot %q is not online", "panel.slack.error.not_online_detail": "Slack bot %q is not online: %s", @@ -65,10 +61,7 @@ func zhSlackModule() map[string]string { "panel.slack.bound": "已绑定:%d", "panel.slack.available": "可用:%d", "panel.slack.none": "(无)", - "panel.slack.default": "(默认)", "panel.slack.adapter": "机器人:%s", - "panel.slack.target": "目标:%s", - "panel.slack.channel": "渠道:%s", "panel.slack.bot_list": "Slack 机器人列表", "panel.slack.no_bots": "没有配置 Slack 机器人。", "panel.slack.entry.available": "可用", @@ -101,7 +94,6 @@ func zhSlackModule() map[string]string { "panel.slack.error.config_format": "Slack 配置格式:<名称> ", "panel.slack.error.adapter_required": "需要 Slack 适配器名称", "panel.slack.error.not_configured": "Slack 机器人 %q 未配置", - "panel.slack.error.disabled": "Slack 机器人 %q 已禁用", "panel.slack.error.not_slack_adapter": "适配器 %q 不是 Slack 机器人", "panel.slack.error.not_online": "Slack 机器人 %q 未上线", "panel.slack.error.not_online_detail": "Slack 机器人 %q 未上线:%s", diff --git a/internal/tui/i18n_tg.go b/internal/tui/i18n_tg.go index 0b639b79f..9139e34a0 100644 --- a/internal/tui/i18n_tg.go +++ b/internal/tui/i18n_tg.go @@ -12,14 +12,10 @@ func enTGModule() map[string]string { "panel.tg.bound": "Bound: %d", "panel.tg.available": "Available: %d", "panel.tg.none": "(none)", - "panel.tg.default": "(default)", "panel.tg.adapter": "Adapter: %s", - "panel.tg.target": "Target: %s", - "panel.tg.channel": "Channel: %s", "panel.tg.bot_list": "Telegram Bot List", "panel.tg.no_bots": "No Telegram bots configured.", "panel.tg.entry.available": "Available", - "panel.tg.entry.bound": "Bound", "panel.tg.entry.active": "Active", "panel.tg.entry.bound_other": "Bound: %s", "panel.tg.entry.muted": "Muted", @@ -49,7 +45,6 @@ func enTGModule() map[string]string { "panel.tg.error.token_format": "bot_token must look like : (from BotFather)", "panel.tg.error.adapter_required": "Telegram adapter name is required", "panel.tg.error.not_configured": "Telegram bot %q is not configured", - "panel.tg.error.disabled": "Telegram bot %q is disabled", "panel.tg.error.not_tg_adapter": "adapter %q is not a Telegram bot", "panel.tg.error.not_online": "Telegram bot %q is not online", "panel.tg.error.not_online_detail": "Telegram bot %q is not online: %s", @@ -69,14 +64,10 @@ func zhTGModule() map[string]string { "panel.tg.bound": "已绑定:%d", "panel.tg.available": "可用:%d", "panel.tg.none": "(无)", - "panel.tg.default": "(默认)", "panel.tg.adapter": "机器人:%s", - "panel.tg.target": "目标:%s", - "panel.tg.channel": "渠道:%s", "panel.tg.bot_list": "Telegram 机器人列表", "panel.tg.no_bots": "没有配置 Telegram 机器人。", "panel.tg.entry.available": "可用", - "panel.tg.entry.bound": "已绑定", "panel.tg.entry.active": "活跃", "panel.tg.entry.bound_other": "已绑定: %s", "panel.tg.entry.muted": "已静音", @@ -106,7 +97,6 @@ func zhTGModule() map[string]string { "panel.tg.error.token_format": "bot_token 须为 <数字ID>:<密钥> 形态(来自 BotFather)", "panel.tg.error.adapter_required": "Telegram 适配器名称不能为空", "panel.tg.error.not_configured": "Telegram 机器人 %q 未配置", - "panel.tg.error.disabled": "Telegram 机器人 %q 已禁用", "panel.tg.error.not_tg_adapter": "适配器 %q 不是 Telegram 机器人", "panel.tg.error.not_online": "Telegram 机器人 %q 未在线", "panel.tg.error.not_online_detail": "Telegram 机器人 %q 未在线:%s", diff --git a/internal/tui/i18n_twitch.go b/internal/tui/i18n_twitch.go index e8ef2d1ef..c51aefb34 100644 --- a/internal/tui/i18n_twitch.go +++ b/internal/tui/i18n_twitch.go @@ -12,10 +12,7 @@ func enTwitchModule() map[string]string { "panel.twitch.bound": "Bound: %d", "panel.twitch.available": "Available: %d", "panel.twitch.none": "(none)", - "panel.twitch.default": "(default)", "panel.twitch.adapter": "Adapter: %s", - "panel.twitch.target": "Target: %s", - "panel.twitch.channel": "Channel: %s", "panel.twitch.bot_list": "Twitch Bot List", "panel.twitch.no_bots": "No Twitch bots configured.", "panel.twitch.entry.available": "Available", @@ -48,7 +45,6 @@ func enTwitchModule() map[string]string { "panel.twitch.error.config_format": "Twitch bot config must be: ", "panel.twitch.error.adapter_required": "Twitch adapter name is required", "panel.twitch.error.not_configured": "Twitch bot %q is not configured", - "panel.twitch.error.disabled": "Twitch bot %q is disabled", "panel.twitch.error.not_twitch_adapter": "adapter %q is not a Twitch bot", "panel.twitch.status.not_started": "not started", "panel.twitch.status.unknown": "unknown", @@ -63,10 +59,7 @@ func zhTwitchModule() map[string]string { "panel.twitch.bound": "已绑定: %d", "panel.twitch.available": "可用: %d", "panel.twitch.none": "(无)", - "panel.twitch.default": "(默认)", "panel.twitch.adapter": "适配器: %s", - "panel.twitch.target": "目标: %s", - "panel.twitch.channel": "频道: %s", "panel.twitch.bot_list": "Twitch 机器人列表", "panel.twitch.no_bots": "未配置 Twitch 机器人。", "panel.twitch.entry.available": "可用", @@ -99,7 +92,6 @@ func zhTwitchModule() map[string]string { "panel.twitch.error.config_format": "Twitch 机器人配置格式: <名称> <令牌> <昵称> <频道>", "panel.twitch.error.adapter_required": "需要 Twitch 适配器名称", "panel.twitch.error.not_configured": "Twitch 机器人 %q 未配置", - "panel.twitch.error.disabled": "Twitch 机器人 %q 已禁用", "panel.twitch.error.not_twitch_adapter": "适配器 %q 不是 Twitch 机器人", "panel.twitch.status.not_started": "未启动", "panel.twitch.status.unknown": "未知", diff --git a/internal/tui/i18n_wechat.go b/internal/tui/i18n_wechat.go index 4e93ac5ef..6ddbc7754 100644 --- a/internal/tui/i18n_wechat.go +++ b/internal/tui/i18n_wechat.go @@ -12,14 +12,10 @@ func enWechatModule() map[string]string { "panel.wechat.bound": "Bound: %d", "panel.wechat.available": "Available: %d", "panel.wechat.none": "(none)", - "panel.wechat.default": "(default)", - "panel.wechat.target": "Target: %s", "panel.wechat.bot_list": "WeChat Bot List", "panel.wechat.no_bots": "No WeChat bots configured. Press 'a' to scan QR code.", "panel.wechat.scan_qr": "📱 Scan QR Code with WeChat", - "panel.wechat.waiting_scan": "Waiting for scan confirmation...", "panel.wechat.scanned": "Scanned! Waiting for confirmation...", - "panel.wechat.auth_confirmed": "✓ Authorization confirmed! Bot connected.", "panel.wechat.auth_success": "WeChat Bot authorized successfully!", "panel.wechat.removed": "Removed binding for %s", "panel.wechat.message.no_bot": "No WeChat bot available. Create or enable one first.", @@ -36,14 +32,10 @@ func zhWechatModule() map[string]string { "panel.wechat.bound": "已绑定: %d", "panel.wechat.available": "可用: %d", "panel.wechat.none": "(无)", - "panel.wechat.default": "(默认)", - "panel.wechat.target": "目标: %s", "panel.wechat.bot_list": "微信机器人列表", "panel.wechat.no_bots": "暂无微信机器人。按 'a' 扫码授权。", "panel.wechat.scan_qr": "📱 请用微信扫描二维码", - "panel.wechat.waiting_scan": "等待扫码确认中...", "panel.wechat.scanned": "已扫码!等待确认中...", - "panel.wechat.auth_confirmed": "✓ 授权成功!机器人已连接。", "panel.wechat.auth_success": "微信机器人授权成功!", "panel.wechat.removed": "已移除 %s 的绑定", "panel.wechat.message.no_bot": "暂无可用微信机器人,请先创建或启用。", diff --git a/internal/tui/i18n_wecom.go b/internal/tui/i18n_wecom.go index 009811c92..5bea44c01 100644 --- a/internal/tui/i18n_wecom.go +++ b/internal/tui/i18n_wecom.go @@ -12,10 +12,7 @@ func enWeComModule() map[string]string { "panel.wecom.bound": "Bound: %d", "panel.wecom.available": "Available: %d", "panel.wecom.none": "(none)", - "panel.wecom.default": "(default)", "panel.wecom.adapter": "Adapter: %s", - "panel.wecom.target": "Target: %s", - "panel.wecom.channel": "Channel: %s", "panel.wecom.bot_list": "WeCom Bot List", "panel.wecom.no_bots": "No WeCom bots configured.", "panel.wecom.entry.available": "Available", @@ -48,7 +45,6 @@ func enWeComModule() map[string]string { "panel.wecom.error.config_format": "WeCom bot config must be: ", "panel.wecom.error.adapter_required": "WeCom adapter name is required", "panel.wecom.error.not_configured": "WeCom bot %q is not configured", - "panel.wecom.error.disabled": "WeCom bot %q is disabled", "panel.wecom.error.not_wecom_adapter": "adapter %q is not a WeCom bot", "panel.wecom.status.not_started": "not started", "panel.wecom.status.unknown": "unknown", @@ -63,10 +59,7 @@ func zhWeComModule() map[string]string { "panel.wecom.bound": "已绑定:%d", "panel.wecom.available": "可用:%d", "panel.wecom.none": "(无)", - "panel.wecom.default": "(默认)", "panel.wecom.adapter": "机器人:%s", - "panel.wecom.target": "目标:%s", - "panel.wecom.channel": "渠道:%s", "panel.wecom.bot_list": "企业微信机器人列表", "panel.wecom.no_bots": "没有配置企业微信机器人。", "panel.wecom.entry.available": "可用", @@ -99,7 +92,6 @@ func zhWeComModule() map[string]string { "panel.wecom.error.config_format": "企业微信配置格式:<名称> ", "panel.wecom.error.adapter_required": "需要企业微信适配器名称", "panel.wecom.error.not_configured": "企业微信机器人 %q 未配置", - "panel.wecom.error.disabled": "企业微信机器人 %q 已禁用", "panel.wecom.error.not_wecom_adapter": "适配器 %q 不是企业微信机器人", "panel.wecom.status.not_started": "未启动", "panel.wecom.status.unknown": "未知", diff --git a/internal/tui/i18n_whatsapp.go b/internal/tui/i18n_whatsapp.go index 3beadcd5f..8d14c393b 100644 --- a/internal/tui/i18n_whatsapp.go +++ b/internal/tui/i18n_whatsapp.go @@ -11,7 +11,6 @@ func enWhatsAppModule() map[string]string { "panel.whatsapp.adapters": "Adapters", "panel.whatsapp.summary": "Configured: %d Bound: %d Available: %d", "panel.whatsapp.none": "(none)", - "panel.whatsapp.default": "(default)", "panel.whatsapp.adapter": "Adapter: %s", "panel.whatsapp.target": "Target: %s", "panel.whatsapp.channel": "Channel: %s", @@ -37,7 +36,6 @@ func enWhatsAppModule() map[string]string { "panel.whatsapp.status.disabled": "disabled", "panel.whatsapp.status.bound": "bound", "panel.whatsapp.status.muted": "muted", - "panel.whatsapp.status.pairing": "pairing", "panel.whatsapp.not_started": "not started", "panel.whatsapp.online": "online", "panel.whatsapp.unknown": "unknown", @@ -62,7 +60,6 @@ func zhWhatsAppModule() map[string]string { "panel.whatsapp.adapters": "适配器", "panel.whatsapp.summary": "已配置:%d 已绑定:%d 可用:%d", "panel.whatsapp.none": "(无)", - "panel.whatsapp.default": "(默认)", "panel.whatsapp.adapter": "适配器:%s", "panel.whatsapp.target": "目标:%s", "panel.whatsapp.channel": "渠道:%s", @@ -88,7 +85,6 @@ func zhWhatsAppModule() map[string]string { "panel.whatsapp.status.disabled": "已禁用", "panel.whatsapp.status.bound": "已绑定", "panel.whatsapp.status.muted": "已静音", - "panel.whatsapp.status.pairing": "配对中", "panel.whatsapp.not_started": "未启动", "panel.whatsapp.online": "在线", "panel.whatsapp.unknown": "未知",