新增文件: - discord-adapter.ts: 基于 discord.js v14 的适配器,支持 DM/频道消息、 按钮交互、流式预览(edit-based)、@提及过滤(兼容角色 mention)、 图片附件下载、!→/ 命令归一化、消息去重、typing indicator - markdown/discord.ts: Discord 2000 字符分段,代码块围栏自动平衡 - API routes: settings CRUD(Token 掩码)+ verify(Discord REST 验证) - DiscordBridgeSection.tsx: 设置 UI(凭据、授权、服务器策略、配置指南含 ID 获取方法) - discord-bridge.test.ts: 22 项单元测试(chunking/auth/command/HTML 转换) 修改文件: - bridge-manager.ts: Discord 分段投递 + channel-aware stream config (Discord 默认 1500ms/40chars/1900max vs Telegram 700ms/20/3900) - BridgeLayout/BridgeSection: Discord 渠道开关和侧栏入口 - bridge/settings/route.ts: 新增 14 个 Discord 设置键 - next.config.ts: serverExternalPackages 添加 discord.js/zlib-sync - i18n: 中英文完整翻译(30+ keys) - docs/handover/bridge-system.md: Discord 架构文档 依赖:discord.js ^14.18.0, zlib-sync ^0.1.9 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
627 lines
32 KiB
TypeScript
627 lines
32 KiB
TypeScript
import type { TranslationKey } from './en';
|
||
|
||
const zh: Record<TranslationKey, string> = {
|
||
// ── Navigation ──────────────────────────────────────────────
|
||
'nav.chats': '对话',
|
||
'nav.extensions': '扩展',
|
||
'nav.settings': '设置',
|
||
'nav.autoApproveOn': '自动批准已开启',
|
||
'nav.lightMode': '浅色模式',
|
||
'nav.darkMode': '深色模式',
|
||
'nav.toggleTheme': '切换主题',
|
||
'nav.bridge': '桥接',
|
||
|
||
// ── Chat list panel ─────────────────────────────────────────
|
||
'chatList.justNow': '刚刚',
|
||
'chatList.minutesAgo': '{n}分钟',
|
||
'chatList.hoursAgo': '{n}小时',
|
||
'chatList.daysAgo': '{n}天',
|
||
'chatList.newConversation': '新对话',
|
||
'chatList.delete': '删除',
|
||
'chatList.searchSessions': '搜索会话...',
|
||
'chatList.noSessions': '暂无会话',
|
||
'chatList.importFromCli': '从 Claude Code 导入',
|
||
'chatList.addProjectFolder': '添加项目文件夹',
|
||
'chatList.threads': '对话列表',
|
||
|
||
// ── Message list ────────────────────────────────────────────
|
||
'messageList.claudeChat': 'CodePilot 对话',
|
||
'messageList.emptyDescription': '开始与 CodePilot 对话。提问、获取代码帮助或探索想法。',
|
||
'messageList.loadEarlier': '加载更早的消息',
|
||
'messageList.loading': '加载中...',
|
||
|
||
// ── Message input ───────────────────────────────────────────
|
||
'messageInput.attachFiles': '附加文件',
|
||
'messageInput.helpDesc': '显示可用命令和提示',
|
||
'messageInput.clearDesc': '清除对话历史',
|
||
'messageInput.costDesc': '显示 Token 用量统计',
|
||
'messageInput.compactDesc': '压缩对话上下文',
|
||
'messageInput.doctorDesc': '诊断项目健康状况',
|
||
'messageInput.initDesc': '初始化项目 CLAUDE.md',
|
||
'messageInput.reviewDesc': '审查代码质量',
|
||
'messageInput.terminalSetupDesc': '配置终端设置',
|
||
'messageInput.memoryDesc': '编辑项目记忆文件',
|
||
'messageInput.modeCode': '代码',
|
||
'messageInput.modePlan': '计划',
|
||
'messageInput.aiSuggested': 'AI 推荐',
|
||
|
||
// ── Streaming message ───────────────────────────────────────
|
||
'streaming.thinking': '思考中...',
|
||
'streaming.allowForSession': '本次会话允许',
|
||
'streaming.allowed': '已允许',
|
||
'streaming.denied': '已拒绝',
|
||
|
||
// ── Chat view / session page ────────────────────────────────
|
||
'chat.newConversation': '新对话',
|
||
|
||
// ── Settings: General ───────────────────────────────────────
|
||
'settings.title': '设置',
|
||
'settings.description': '管理 CodePilot 和 Claude CLI 设置',
|
||
'settings.general': '通用',
|
||
'settings.providers': '服务商',
|
||
'settings.claudeCli': 'Claude CLI',
|
||
'settings.codepilot': 'CodePilot',
|
||
'settings.version': '版本 {version}',
|
||
'settings.checkForUpdates': '检查更新',
|
||
'settings.checking': '检查中...',
|
||
'settings.updateAvailable': '有新版本:v{version}',
|
||
'settings.viewRelease': '查看发布',
|
||
'settings.latestVersion': '已是最新版本。',
|
||
'settings.autoApproveTitle': '自动批准所有操作',
|
||
'settings.autoApproveDesc': '跳过所有权限检查并自动批准每个工具操作。这很危险,仅应用于受信任的任务。',
|
||
'settings.autoApproveWarning': '所有工具操作将在无确认的情况下自动批准。请谨慎使用。',
|
||
'settings.autoApproveDialogTitle': '启用自动批准所有操作?',
|
||
'settings.autoApproveDialogDesc': '这将绕过所有权限检查。Claude 将能够在不征求您确认的情况下执行任何工具操作,包括:',
|
||
'settings.autoApproveShellCommands': '运行任意 Shell 命令',
|
||
'settings.autoApproveFileOps': '读取、写入和删除文件',
|
||
'settings.autoApproveNetwork': '发起网络请求',
|
||
'settings.autoApproveTrustWarning': '仅在您完全信任当前任务时才启用此选项。此设置适用于所有新的聊天会话。',
|
||
'settings.cancel': '取消',
|
||
'settings.enableAutoApprove': '启用自动批准',
|
||
'settings.language': '语言',
|
||
'settings.languageDesc': '选择界面显示语言',
|
||
'settings.usage': '用量统计',
|
||
|
||
// ── Settings: Usage Stats ───────────────────────────────────
|
||
'usage.totalTokens': '总 Token',
|
||
'usage.totalCost': '总费用',
|
||
'usage.sessions': '会话数',
|
||
'usage.cacheHitRate': '缓存命中率',
|
||
'usage.input': '输入',
|
||
'usage.output': '输出',
|
||
'usage.cached': '已缓存',
|
||
'usage.dailyChart': '每日 Token 用量',
|
||
'usage.loading': '加载中...',
|
||
'usage.loadError': '加载用量数据失败',
|
||
'usage.noData': '暂无用量数据',
|
||
'usage.noDataHint': '开始对话后即可在此查看统计信息。',
|
||
|
||
// ── Settings: CLI ───────────────────────────────────────────
|
||
'cli.permissions': '权限',
|
||
'cli.permissionsDesc': '配置 Claude CLI 的权限设置',
|
||
'cli.envVars': '环境变量',
|
||
'cli.envVarsDesc': '传递给 Claude 的环境变量',
|
||
'cli.form': '表单',
|
||
'cli.json': 'JSON',
|
||
'cli.save': '保存',
|
||
'cli.format': '格式化',
|
||
'cli.reset': '重置',
|
||
'cli.settingsSaved': '设置已保存',
|
||
'cli.confirmSaveTitle': '确认保存',
|
||
'cli.confirmSaveDesc': '这将覆盖您当前的 ~/.claude/settings.json 文件。确定要继续吗?',
|
||
|
||
// ── Settings: Providers ─────────────────────────────────────
|
||
'provider.addProvider': '添加服务商',
|
||
'provider.editProvider': '编辑服务商',
|
||
'provider.deleteProvider': '删除服务商',
|
||
'provider.deleteConfirm': '确定要删除"{name}"吗?此操作无法撤销。',
|
||
'provider.deleting': '删除中...',
|
||
'provider.delete': '删除',
|
||
'provider.noProviders': '未配置服务商',
|
||
'provider.addToStart': '添加服务商以开始使用',
|
||
'provider.quickPresets': '快速预设',
|
||
'provider.customProviders': '自定义服务商',
|
||
'provider.active': '活跃',
|
||
'provider.configured': '已配置',
|
||
'provider.name': '名称',
|
||
'provider.providerType': '服务商类型',
|
||
'provider.apiKey': 'API 密钥',
|
||
'provider.baseUrl': '基础 URL',
|
||
'provider.modelName': '模型名称',
|
||
'provider.advancedOptions': '高级选项',
|
||
'provider.extraEnvVars': '额外环境变量',
|
||
'provider.notes': '备注',
|
||
'provider.notesPlaceholder': '关于此服务商的可选备注...',
|
||
'provider.saving': '保存中...',
|
||
'provider.update': '更新',
|
||
'provider.envDetected': '从环境变量检测到',
|
||
'provider.default': '默认',
|
||
'provider.setDefault': '设为默认',
|
||
'provider.environment': '环境变量',
|
||
'provider.connectedProviders': '已连接的提供商',
|
||
'provider.noConnected': '尚未连接任何提供商',
|
||
'provider.connect': '连接',
|
||
'provider.disconnect': '断开连接',
|
||
'provider.disconnecting': '断开中...',
|
||
'provider.disconnectProvider': '断开提供商',
|
||
'provider.disconnectConfirm': '确定要断开"{name}"吗?此操作无法撤销。',
|
||
'provider.ccSwitchHint': '通过类似 cc switch 等工具添加的 Claude Code 配置可能无法被 CodePilot 读取,建议在此处重新添加。',
|
||
'provider.addProviderSection': '添加提供商',
|
||
'provider.addProviderDesc': '选择要连接的提供商。大多数预设只需填写 API 密钥。',
|
||
|
||
// ── Right panel / Files ─────────────────────────────────────
|
||
'panel.files': '文件',
|
||
'panel.tasks': '任务',
|
||
'panel.openPanel': '打开面板',
|
||
'panel.closePanel': '关闭面板',
|
||
|
||
// ── File tree ───────────────────────────────────────────────
|
||
'fileTree.filterFiles': '筛选文件...',
|
||
'fileTree.refresh': '刷新',
|
||
'fileTree.noFiles': '未找到文件',
|
||
'fileTree.selectFolder': '选择项目文件夹以查看文件',
|
||
|
||
// ── File preview ────────────────────────────────────────────
|
||
'filePreview.backToTree': '返回文件树',
|
||
'filePreview.lines': '{count} 行',
|
||
'filePreview.copyPath': '复制路径',
|
||
'filePreview.failedToLoad': '加载文件失败',
|
||
|
||
// ── Doc preview ─────────────────────────────────────────────
|
||
'docPreview.htmlPreview': 'HTML 预览',
|
||
|
||
// ── Extensions page ─────────────────────────────────────────
|
||
'extensions.title': '扩展',
|
||
'extensions.skills': '技能',
|
||
'extensions.mcpServers': 'MCP 服务器',
|
||
|
||
// ── Skills ──────────────────────────────────────────────────
|
||
'skills.noSelected': '未选择技能',
|
||
'skills.selectOrCreate': '从列表中选择一个技能或创建新技能',
|
||
'skills.newSkill': '新建技能',
|
||
'skills.loadingSkills': '加载技能中...',
|
||
'skills.noSkillsFound': '未找到技能',
|
||
'skills.searchSkills': '搜索技能...',
|
||
'skills.createSkill': '创建技能',
|
||
'skills.nameRequired': '名称为必填项',
|
||
'skills.nameInvalid': '名称只能包含字母、数字、连字符和下划线',
|
||
'skills.skillName': '技能名称',
|
||
'skills.scope': '作用域',
|
||
'skills.global': '全局',
|
||
'skills.project': '项目',
|
||
'skills.template': '模板',
|
||
'skills.blank': '空白',
|
||
'skills.commitHelper': '提交助手',
|
||
'skills.codeReviewer': '代码审查',
|
||
'skills.saved': '已保存',
|
||
'skills.save': '保存',
|
||
'skills.edit': '编辑',
|
||
'skills.preview': '预览',
|
||
'skills.splitView': '分屏视图',
|
||
'skills.deleteConfirm': '再次点击以确认',
|
||
'skills.placeholder': '用 Markdown 编写技能提示词...',
|
||
'skills.mySkills': '我的技能',
|
||
'skills.marketplace': '技能市场',
|
||
'skills.marketplaceSearch': '搜索 Skills.sh...',
|
||
'skills.install': '安装',
|
||
'skills.installed': '已安装',
|
||
'skills.installing': '安装中...',
|
||
'skills.uninstall': '卸载',
|
||
'skills.installs': '次安装',
|
||
'skills.source': '来源',
|
||
'skills.installedAt': '安装时间',
|
||
'skills.installSuccess': '安装完成',
|
||
'skills.installFailed': '安装失败',
|
||
'skills.searchNoResults': '未找到技能',
|
||
'skills.marketplaceError': '加载技能市场失败',
|
||
'skills.marketplaceHint': '浏览技能市场',
|
||
'skills.marketplaceHintDesc': '搜索并安装来自 Skills.sh 的社区技能',
|
||
'skills.noReadme': '暂无技能描述',
|
||
|
||
// ── MCP ─────────────────────────────────────────────────────
|
||
'mcp.addServer': '添加服务器',
|
||
'mcp.loadingServers': '加载 MCP 服务器中...',
|
||
'mcp.serverConfig': 'MCP 服务器配置',
|
||
'mcp.noServers': '未配置 MCP 服务器',
|
||
'mcp.noServersDesc': '添加 MCP 服务器以扩展 Claude 的能力',
|
||
'mcp.arguments': '参数:',
|
||
'mcp.environment': '环境变量:',
|
||
'mcp.listTab': '列表',
|
||
'mcp.jsonTab': 'JSON 配置',
|
||
'mcp.editServer': '编辑服务器',
|
||
'mcp.serverName': '服务器名称',
|
||
'mcp.serverType': '服务器类型',
|
||
'mcp.command': '命令',
|
||
'mcp.argsLabel': '参数(每行一个)',
|
||
'mcp.url': 'URL',
|
||
'mcp.headers': '请求头(JSON)',
|
||
'mcp.envVars': '环境变量(JSON)',
|
||
'mcp.formTab': '表单',
|
||
'mcp.jsonEditTab': 'JSON',
|
||
'mcp.saveChanges': '保存更改',
|
||
|
||
// ── Folder picker ───────────────────────────────────────────
|
||
'folderPicker.title': '选择项目文件夹',
|
||
'folderPicker.loading': '加载中...',
|
||
'folderPicker.noSubdirs': '无子目录',
|
||
'folderPicker.cancel': '取消',
|
||
'folderPicker.select': '选择此文件夹',
|
||
|
||
// ── Import session dialog ───────────────────────────────────
|
||
'import.title': '从 Claude CLI 导入会话',
|
||
'import.searchSessions': '搜索会话...',
|
||
'import.noSessions': '未找到会话',
|
||
'import.import': '导入',
|
||
'import.importing': '导入中...',
|
||
'import.justNow': '刚刚',
|
||
'import.minutesAgo': '{n}分钟前',
|
||
'import.hoursAgo': '{n}小时前',
|
||
'import.daysAgo': '{n}天前',
|
||
'import.messages': '{n} 条消息',
|
||
'import.messagesPlural': '{n} 条消息',
|
||
|
||
// ── Connection status ───────────────────────────────────────
|
||
'connection.notInstalled': 'Claude Code 未安装',
|
||
'connection.installed': 'Claude Code 已安装',
|
||
'connection.version': '版本:{version}',
|
||
'connection.installPrompt': '要使用 Claude Code 功能,您需要安装 Claude Code CLI。',
|
||
'connection.runCommand': '在终端中运行以下命令:',
|
||
'connection.installAuto': '自动安装 Claude Code',
|
||
'connection.refresh': '刷新',
|
||
'connection.installClaude': '安装 Claude Code',
|
||
'connection.connected': '已连接',
|
||
'connection.disconnected': '未连接',
|
||
'connection.checking': '检测中',
|
||
|
||
// ── Install wizard ──────────────────────────────────────────
|
||
'install.title': '安装 Claude Code',
|
||
'install.checkingPrereqs': '检查前置条件...',
|
||
'install.alreadyInstalled': 'Claude Code 已安装',
|
||
'install.readyToInstall': '准备安装',
|
||
'install.installing': '正在安装 Claude Code...',
|
||
'install.complete': '安装完成',
|
||
'install.failed': '安装失败',
|
||
'install.copyLogs': '复制日志',
|
||
'install.copied': '已复制',
|
||
'install.install': '安装',
|
||
'install.cancel': '取消',
|
||
'install.retry': '重试',
|
||
'install.done': '完成',
|
||
'install.recheck': '重新检测',
|
||
'install.copy': '复制',
|
||
'install.homebrewRequired': '需要先安装 Homebrew',
|
||
'install.homebrewDescription': 'Homebrew 是 macOS 的包管理器,安装 Node.js 需要它。',
|
||
'install.homebrewSteps': '请按以下步骤操作:',
|
||
'install.homebrewStep1': '打开终端(Terminal)',
|
||
'install.homebrewStep2': '粘贴上面的命令并按回车',
|
||
'install.homebrewStep3': '按提示完成安装',
|
||
'install.homebrewStep4': '回到这里点击"重新检测"',
|
||
|
||
// ── Task list ───────────────────────────────────────────────
|
||
'tasks.all': '全部',
|
||
'tasks.active': '进行中',
|
||
'tasks.done': '已完成',
|
||
'tasks.addPlaceholder': '添加任务...',
|
||
'tasks.addTask': '添加任务',
|
||
'tasks.loading': '加载任务中...',
|
||
'tasks.noTasks': '暂无任务',
|
||
'tasks.noMatching': '无匹配任务',
|
||
|
||
// ── Tool call block ─────────────────────────────────────────
|
||
'tool.running': '运行中',
|
||
'tool.success': '成功',
|
||
'tool.error': '错误',
|
||
|
||
// ── Common ──────────────────────────────────────────────────
|
||
'common.cancel': '取消',
|
||
'common.save': '保存',
|
||
'common.delete': '删除',
|
||
'common.loading': '加载中...',
|
||
'common.close': '关闭',
|
||
'common.enabled': '已启用',
|
||
'common.disabled': '已禁用',
|
||
|
||
// ── Error boundary ────────────────────────────────────────
|
||
'error.title': '出错了',
|
||
'error.description': '发生了意外错误。您可以重试或重新加载应用。',
|
||
'error.showDetails': '显示详情',
|
||
'error.hideDetails': '隐藏详情',
|
||
'error.tryAgain': '重试',
|
||
'error.reloadApp': '重新加载',
|
||
|
||
// ── Update ─────────────────────────────────────────────────
|
||
'update.newVersionAvailable': '有新版本可用',
|
||
'update.downloading': '下载中',
|
||
'update.restartToUpdate': '重启以更新',
|
||
'update.restartNow': '立即重启',
|
||
'update.readyToInstall': 'CodePilot v{version} 已就绪 — 重启以完成更新',
|
||
'update.installUpdate': '下载并安装',
|
||
'update.later': '稍后',
|
||
|
||
// ── Image Generation ──────────────────────────────────────
|
||
'imageGen.toggle': '图片生成',
|
||
'imageGen.toggleLabel': 'Image Agent',
|
||
'imageGen.toggleTooltip': '切换 Image Agent — AI 自动分析意图,支持单张和批量生图',
|
||
'imageGen.generating': '正在生成图片...',
|
||
'imageGen.params': '生成参数',
|
||
'imageGen.aspectRatio': '画面比例',
|
||
'imageGen.resolution': '分辨率',
|
||
'imageGen.generate': '生成',
|
||
'imageGen.regenerate': '重新生成',
|
||
'imageGen.download': '下载',
|
||
'imageGen.prompt': '提示词',
|
||
'imageGen.model': '模型',
|
||
'imageGen.noApiKey': '请先在设置 > 服务商中配置 Gemini API Key',
|
||
'imageGen.error': '图片生成失败',
|
||
'imageGen.success': '图片生成成功',
|
||
'imageGen.referenceImages': '参考图片',
|
||
'imageGen.uploadReference': '上传参考图片',
|
||
'imageGen.resetChat': '重置对话',
|
||
'imageGen.multiTurnHint': '你可以描述需要的修改来调整生成的图片',
|
||
'imageGen.settings': '生成设置',
|
||
'imageGen.generated': '生成的图片',
|
||
'imageGen.confirmTitle': '图片生成',
|
||
'imageGen.editPrompt': '编辑提示词',
|
||
'imageGen.generateButton': '生成',
|
||
'imageGen.retryButton': '重试',
|
||
'imageGen.generatingStatus': '正在生成...',
|
||
'imageGen.stopButton': '停止',
|
||
|
||
// ── Batch Image Generation ─────────────────────────────────
|
||
'batchImageGen.toggle': '批量生图',
|
||
'batchImageGen.toggleTooltip': '切换批量图片生成模式',
|
||
'batchImageGen.entryTitle': '批量图片生成',
|
||
'batchImageGen.stylePrompt': '风格提示词',
|
||
'batchImageGen.stylePromptPlaceholder': '描述所有图片的视觉风格...',
|
||
'batchImageGen.uploadDocs': '上传文档',
|
||
'batchImageGen.uploadDocsHint': '上传文本/Markdown 文件作为内容来源',
|
||
'batchImageGen.count': '图片数量',
|
||
'batchImageGen.countAuto': '自动',
|
||
'batchImageGen.aspectRatioStrategy': '画面比例',
|
||
'batchImageGen.resolution': '分辨率',
|
||
'batchImageGen.generatePlan': '生成计划',
|
||
'batchImageGen.planning': '规划中...',
|
||
'batchImageGen.planPreviewTitle': '生成计划',
|
||
'batchImageGen.planSummary': '计划摘要',
|
||
'batchImageGen.editPrompt': '编辑提示词',
|
||
'batchImageGen.addItem': '添加项目',
|
||
'batchImageGen.removeItem': '删除',
|
||
'batchImageGen.regeneratePlan': '重新生成计划',
|
||
'batchImageGen.confirmAndExecute': '确认并执行',
|
||
'batchImageGen.executing': '执行中...',
|
||
'batchImageGen.totalProgress': '进度',
|
||
'batchImageGen.itemPending': '等待中',
|
||
'batchImageGen.itemProcessing': '生成中...',
|
||
'batchImageGen.itemCompleted': '完成',
|
||
'batchImageGen.itemFailed': '失败',
|
||
'batchImageGen.retryFailed': '重试失败项',
|
||
'batchImageGen.retryItem': '重试',
|
||
'batchImageGen.pause': '暂停',
|
||
'batchImageGen.resume': '继续',
|
||
'batchImageGen.cancel': '取消',
|
||
'batchImageGen.syncToChat': '同步到对话',
|
||
'batchImageGen.syncComplete': '已同步到对话',
|
||
'batchImageGen.syncMode': '同步模式',
|
||
'batchImageGen.syncManual': '手动',
|
||
'batchImageGen.syncAutoBatch': '自动批量',
|
||
'batchImageGen.completed': '批量生成完成',
|
||
'batchImageGen.completedStats': '已生成 {completed}/{total} 张图片',
|
||
'batchImageGen.noProvider': '请先在设置中配置文本生成服务商',
|
||
'batchImageGen.tags': '标签',
|
||
'batchImageGen.sourceRefs': '来源',
|
||
'batchImageGen.prompt': '提示词',
|
||
'batchImageGen.aspectRatio': '比例',
|
||
'batchImageGen.imageSize': '尺寸',
|
||
|
||
// ── Gallery ─────────────────────────────────────────────────
|
||
'gallery.title': '素材库',
|
||
'gallery.empty': '暂无生成的图片',
|
||
'gallery.emptyHint': '在对话中生成图片后即可在此查看。',
|
||
'gallery.filterByTag': '按标签筛选',
|
||
'gallery.dateFrom': '开始日期',
|
||
'gallery.dateTo': '结束日期',
|
||
'gallery.sortNewest': '最新优先',
|
||
'gallery.sortOldest': '最早优先',
|
||
'gallery.newestFirst': '最新优先',
|
||
'gallery.oldestFirst': '最早优先',
|
||
'gallery.filters': '筛选',
|
||
'gallery.clearFilters': '清除筛选',
|
||
'gallery.loadMore': '加载更多',
|
||
'gallery.openChat': '打开对话',
|
||
'gallery.delete': '删除',
|
||
'gallery.confirmDelete': '确认删除?',
|
||
'gallery.deleteConfirm': '确定删除这张图片?此操作无法撤销。',
|
||
'gallery.tags': '标签',
|
||
'gallery.addTag': '添加标签',
|
||
'gallery.newTag': '新标签名称',
|
||
'gallery.newTagPlaceholder': '新标签名称...',
|
||
'gallery.cancel': '取消',
|
||
'gallery.removeTag': '移除标签',
|
||
'gallery.noTags': '暂无标签',
|
||
'gallery.generatedAt': '生成时间',
|
||
'gallery.viewDetails': '查看详情',
|
||
'gallery.imageDetail': '图片详情',
|
||
'gallery.prompt': '提示词',
|
||
'gallery.download': '下载',
|
||
'gallery.favorites': '收藏',
|
||
'gallery.favoritesOnly': '只看收藏',
|
||
'gallery.addToFavorites': '添加到收藏',
|
||
'gallery.removeFromFavorites': '取消收藏',
|
||
|
||
// ── Provider: Gemini Image ──────────────────────────────────
|
||
'provider.chatProviders': '聊天服务商',
|
||
'provider.mediaProviders': '媒体服务商',
|
||
'provider.geminiImageDesc': 'Nano Banana Pro — Google Gemini AI 图片生成',
|
||
|
||
// ── CLI dynamic field labels ──────────────────────────────
|
||
'cli.loadingSettings': '加载设置中...',
|
||
'cli.field.skipDangerousModePermissionPrompt': '跳过危险模式权限提示',
|
||
'cli.field.verbose': '详细日志',
|
||
'cli.field.theme': '主题',
|
||
'cli.formatError': '无法格式化:无效的 JSON',
|
||
|
||
// ── Split screen ─────────────────────────────────────────────
|
||
'split.splitScreen': '分屏',
|
||
'split.closeSplit': '关闭分屏',
|
||
'split.splitGroup': '分屏',
|
||
'chatList.splitScreen': '分屏',
|
||
|
||
// ── Telegram (Bridge) ──────────────────────────────────────
|
||
'telegram.credentials': 'Bot 凭据',
|
||
'telegram.credentialsDesc': '输入您的 Telegram Bot Token 和 Chat ID',
|
||
'telegram.botToken': 'Bot Token',
|
||
'telegram.chatId': 'Chat ID',
|
||
'telegram.chatIdHint': '先向您的 Bot 发送 /start,然后点击「自动检测」填入 Chat ID',
|
||
'telegram.detectChatId': '自动检测',
|
||
'telegram.chatIdDetected': '检测到 Chat ID:{id}({name})',
|
||
'telegram.chatIdDetectFailed': '无法检测 Chat ID。请先向 Bot 发送 /start,然后重试。',
|
||
'telegram.verify': '测试连接',
|
||
'telegram.verified': '连接验证成功',
|
||
'telegram.verifiedAs': '已连接为 @{name}',
|
||
'telegram.verifyFailed': '连接失败',
|
||
'telegram.enterTokenFirst': '请先输入 Bot Token',
|
||
'telegram.setupGuide': '设置指南',
|
||
'telegram.step1': '打开 Telegram 搜索 @BotFather',
|
||
'telegram.step2': '发送 /newbot 并按提示创建 Bot',
|
||
'telegram.step3': '复制 Bot Token 并粘贴到上方',
|
||
'telegram.step4': '点击「测试连接」验证 Token 是否有效',
|
||
'telegram.step5': '向您的 Bot 发送 /start,然后点击 Chat ID 旁的「自动检测」按钮',
|
||
'telegram.step6': '点击「保存」存储凭据',
|
||
|
||
// ── Feishu (Bridge) ──────────────────────────────────────
|
||
'feishu.credentials': '应用凭据',
|
||
'feishu.credentialsDesc': '输入您的飞书 App ID 和 App Secret',
|
||
'feishu.appId': 'App ID',
|
||
'feishu.appSecret': 'App Secret',
|
||
'feishu.domain': '平台',
|
||
'feishu.domainFeishu': '飞书 (feishu.cn)',
|
||
'feishu.domainLark': 'Lark (larksuite.com)',
|
||
'feishu.domainHint': '中国大陆选择飞书,海外选择 Lark',
|
||
'feishu.verify': '测试连接',
|
||
'feishu.verified': '连接验证成功',
|
||
'feishu.verifiedAs': '已连接为 {name}',
|
||
'feishu.verifyFailed': '连接失败',
|
||
'feishu.enterCredentialsFirst': '请先输入 App ID 和 App Secret',
|
||
'feishu.allowedUsers': '允许的用户',
|
||
'feishu.allowedUsersDesc': '允许使用桥接的 open_id 或 chat_id,逗号分隔',
|
||
'feishu.allowedUsersHint': '留空则允许所有用户',
|
||
'feishu.groupSettings': '群聊设置',
|
||
'feishu.groupSettingsDesc': '控制机器人在群聊中的响应方式',
|
||
'feishu.groupPolicy': '群聊策略',
|
||
'feishu.groupPolicyOpen': '开放 — 响应所有群消息',
|
||
'feishu.groupPolicyAllowlist': '白名单 — 仅指定群组',
|
||
'feishu.groupPolicyDisabled': '禁用 — 忽略所有群消息',
|
||
'feishu.groupAllowFrom': '允许的群组',
|
||
'feishu.groupAllowFromHint': '允许的群组 chat_id,逗号分隔',
|
||
'feishu.requireMention': '需要 @提及',
|
||
'feishu.requireMentionDesc': '群聊中仅在 @机器人时响应',
|
||
'feishu.setupGuide': '设置指南',
|
||
'feishu.step1': '前往飞书开放平台 (open.feishu.cn) 创建自建应用',
|
||
'feishu.step2': '在应用功能中启用「机器人」能力',
|
||
'feishu.step3': '在凭证页面复制 App ID 和 App Secret',
|
||
'feishu.step4': '添加事件订阅:im.message.receive_v1',
|
||
'feishu.step5': '发布应用版本并在管理后台审批通过',
|
||
'feishu.step6': '将凭据粘贴到上方,点击「测试连接」验证',
|
||
|
||
// ── Settings: Remote Bridge ────────────────────────────────
|
||
'settings.bridge': '远程桥接',
|
||
'bridge.title': '远程桥接',
|
||
'bridge.description': '通过 Telegram、飞书等外部渠道控制 Claude',
|
||
'bridge.enabled': '启用远程桥接',
|
||
'bridge.enabledDesc': '允许外部消息渠道与 Claude 交互',
|
||
'bridge.activeHint': '桥接已激活。外部渠道可以向 Claude 发送任务。',
|
||
'bridge.status': '桥接状态',
|
||
'bridge.statusConnected': '已连接',
|
||
'bridge.statusDisconnected': '未连接',
|
||
'bridge.statusStarting': '启动中...',
|
||
'bridge.statusStopping': '停止中...',
|
||
'bridge.activeBindings': '{count} 个活跃绑定',
|
||
'bridge.noBindings': '无活跃绑定',
|
||
'bridge.channels': '渠道',
|
||
'bridge.channelsDesc': '启用或禁用各消息渠道',
|
||
'bridge.telegramChannel': 'Telegram',
|
||
'bridge.telegramChannelDesc': '通过 Telegram Bot 接收和回复消息',
|
||
'bridge.bindings': '活跃会话',
|
||
'bridge.bindingsDesc': '来自外部渠道的当前会话绑定',
|
||
'bridge.bindingChat': '对话',
|
||
'bridge.bindingChannel': '渠道',
|
||
'bridge.bindingCreated': '创建时间',
|
||
'bridge.bindingStatus': '状态',
|
||
'bridge.noActiveBindings': '无活跃会话绑定',
|
||
'bridge.defaults': '默认设置',
|
||
'bridge.defaultsDesc': '桥接发起会话的默认设置',
|
||
'bridge.defaultWorkDir': '工作目录',
|
||
'bridge.defaultWorkDirHint': '桥接会话的默认项目文件夹',
|
||
'bridge.defaultModel': '模型',
|
||
'bridge.defaultModelHint': '桥接会话的默认模型',
|
||
'bridge.browse': '浏览',
|
||
'bridge.start': '启动桥接',
|
||
'bridge.stop': '停止桥接',
|
||
'bridge.starting': '启动中...',
|
||
'bridge.stopping': '停止中...',
|
||
'bridge.autoStart': '自动启动桥接',
|
||
'bridge.autoStartDesc': '应用启动时自动启动桥接',
|
||
'bridge.adapterRunning': '运行中',
|
||
'bridge.adapterStopped': '已停止',
|
||
'bridge.adapterLastMessage': '最近消息',
|
||
'bridge.adapterLastError': '最近错误',
|
||
'bridge.adapters': '适配器状态',
|
||
'bridge.adaptersDesc': '各渠道适配器的实时状态',
|
||
'bridge.telegramSettings': 'Telegram 设置',
|
||
'bridge.telegramSettingsDesc': '配置桥接使用的 Telegram Bot 凭据',
|
||
'bridge.allowedUsers': '允许的用户',
|
||
'bridge.allowedUsersDesc': '允许使用桥接的 Telegram 用户 ID,逗号分隔',
|
||
'bridge.allowedUsersHint': '留空则仅允许上方配置的 Chat ID',
|
||
'bridge.feishuChannel': '飞书',
|
||
'bridge.feishuChannelDesc': '通过飞书机器人接收和回复消息',
|
||
'bridge.feishuSettings': '飞书设置',
|
||
'bridge.feishuSettingsDesc': '配置桥接使用的飞书应用凭据',
|
||
'bridge.discordChannel': 'Discord',
|
||
'bridge.discordChannelDesc': '通过 Discord Bot 接收和回复消息',
|
||
'bridge.discordSettings': 'Discord 设置',
|
||
'bridge.discordSettingsDesc': '配置桥接使用的 Discord Bot 凭据',
|
||
|
||
// ── Settings: Discord Bridge ─────────────────────────────────
|
||
'discord.credentials': 'Bot 凭据',
|
||
'discord.credentialsDesc': '输入您的 Discord Bot Token',
|
||
'discord.botToken': 'Bot Token',
|
||
'discord.verify': '测试连接',
|
||
'discord.verified': '连接验证成功',
|
||
'discord.verifiedAs': '已连接为 {name}',
|
||
'discord.verifyFailed': '连接失败',
|
||
'discord.enterTokenFirst': '请先输入 Bot Token',
|
||
'discord.allowedUsers': '授权设置',
|
||
'discord.allowedUsersDesc': '控制哪些用户和频道可以与 Bot 交互',
|
||
'discord.allowedUserIds': '允许的用户 ID',
|
||
'discord.allowedUsersHint': 'Discord 用户 ID,多个用逗号分隔。用户和频道均为空时拒绝所有请求。',
|
||
'discord.allowedChannelIds': '允许的频道 ID',
|
||
'discord.allowedChannelsHint': '允许的 Discord 频道 ID,多个用逗号分隔。',
|
||
'discord.guildSettings': '服务器和群组设置',
|
||
'discord.guildSettingsDesc': '控制 Bot 在 Discord 服务器中的响应方式',
|
||
'discord.allowedGuilds': '允许的服务器 (Guild) ID',
|
||
'discord.allowedGuildsHint': '服务器 ID,多个用逗号分隔。留空则允许所有服务器。',
|
||
'discord.groupPolicy': '服务器消息策略',
|
||
'discord.groupPolicyOpen': '开放 — 响应所有服务器频道消息',
|
||
'discord.groupPolicyDisabled': '禁用 — 忽略所有服务器消息(仅私信)',
|
||
'discord.requireMention': '需要 @提及',
|
||
'discord.requireMentionDesc': '服务器中仅在 @机器人时响应',
|
||
'discord.streamPreview': '流式预览',
|
||
'discord.streamPreviewDesc': '通过编辑消息实时显示响应预览',
|
||
'discord.setupGuide': '配置指南',
|
||
'discord.setupBotTitle': '创建 Discord Bot',
|
||
'discord.step1': '前往 Discord 开发者门户 (discord.com/developers),点击「New Application」创建应用',
|
||
'discord.step2': '进入左侧「Bot」页面,点击「Add Bot」创建机器人',
|
||
'discord.step3': '向下滚动到「Privileged Gateway Intents」,开启「MESSAGE CONTENT INTENT」开关',
|
||
'discord.step4': '点击「Reset Token」复制 Bot Token,粘贴到上方「Bot 凭据」中保存',
|
||
'discord.step5': '前往「OAuth2 → URL Generator」,Scopes 勾选「bot」,Bot Permissions 勾选「Send Messages」和「Read Message History」',
|
||
'discord.step6': '复制生成的邀请链接,在浏览器中打开,将 Bot 邀请到你的服务器',
|
||
'discord.step7': '回到上方点击「测试连接」,确认显示 Bot 名称即配置成功',
|
||
'discord.setupIdTitle': '获取 ID(需开启开发者模式)',
|
||
'discord.stepDevMode': '打开 Discord 客户端 →「用户设置」→「高级」→ 开启「开发者模式」',
|
||
'discord.stepUserId': '获取用户 ID:右键点击自己的头像或用户名 →「复制用户 ID」',
|
||
'discord.stepChannelId': '获取频道 ID:右键点击左侧频道名称 →「复制频道 ID」',
|
||
'discord.stepGuildId': '获取服务器 ID:右键点击左上角服务器名称 →「复制服务器 ID」',
|
||
};
|
||
|
||
export default zh;
|