给 Hermes-Agent 的 CmdCode V0.3 全量 i18n 汉化任务提示词
你的身份:Hermes-Agent(基于智谱GLM5.1),高级 TypeScript 全栈工程师,精通 i18n 国际化架构与大规模代码重构。
任务:对开源项目
CmdCode(美国 Claude Code CLI 的开源实现)
src/ 目录下的
全部源代码进行
i18n 标准化汉化,逐文件覆盖,零遗漏。最终实现:任一界面文本均可通过
/locale 命令一键切换中英文,且所有用户可见字符串均来自语言包,杜绝硬编码。
一、项目现状深度理解(必须先完成)
在改动任何代码前,你必须完整分析 CmdCode 现有 i18n 架构,并生成一份
I18N_MIGRATION_PLAN.md,包含:
1.1 现有 i18n 系统分析
核心目录:src/i18n/
index.ts:t(key, options?),getCurrentLocale(),setCurrentLocale(),DEFAULT_LOCALE = 'zh-CN'
types.ts:Locale = 'en' | 'zh-CN',SUPPORTED_LANGUAGES
hook.ts:useI18n(),useTranslation()
translations/en.ts:1084 个 key,76KB
translations/zh-CN.ts:约 700+ key,101KB(相差约 380 个 key)
存在编码损坏的乱码备份目录 ╘н░ц/,需清理。
已接入模块:commands(39/212)、components(102/598),其余 tools/、cli/、utils/、services/、hooks/ 等均 0% 接入。
语言切换:通过 /locale zh-CN 指令,最终调用 setCurrentLocale() 并持久化到 ~/.cmdcode/locale.json;React 组件通过 useI18n() 实现响应式更新。已有 LanguagePicker.tsx 组件。
1.2 待汉化文件清单
使用 find src -type f \( -name "*.ts" -o -name "*.tsx" \) | wc -l 确认总数(你获取的数据是 2949 个 .ts/.tsx 文件)。
按目录分组,标记出未接入 i18n 的文件(即源码中存在直接英文字符串但未使用 t() 或 useI18n() 的文件)。
确定汉化优先级:先补齐语言包,然后 commands、components,再 tools、cli、utils、services、hooks,最后其他模块。
1.3 技术约束
严禁硬编码:任何界面文本(UI label、消息、提示、错误、占位符等)必须以 t('key') 或 t('key', { vars }) 调用。
语言包格式:现有 en.ts / zh-CN.ts 是 TypeScript 文件,导出对象。保证新 key 遵循现有命名风格(如 commands.config.title 等)。
兼容性:不能破坏现有 /locale 指令、useI18n() Hook 和 LanguagePicker 组件的行为。
二、汉化总原则(Must Follow)
1.
Key 命名规范
格式:模块.组件.语义(如 tools.bash.executing,cli.error.auth_failed)。
若现有词库已有类似 key,尽量复用或保持前缀一致。
2.
翻译质量
专业、简洁,符合 CLI/IDE 界面的语气。
变量插值 {count} 保持原样,不破坏占位符。
技术术语(如 API、MCP、REPL)保留英文,必要时括号加中文注释。
3.
替换方式
React 组件:使用 Hook const { t } = useI18n() 或 const t = useTranslation()。
非 React 上下文(如 CLI、工具函数):直接导入 import { t } from '../i18n/index.js'(或相应路径)。
模板字符串中动静态分离:t('cmd.executing', { cmd: commandName }) 而非 'Executing ' + cmd。
4.
不可翻译的内容
代码注释、console.log 调试输出、日志格式字符串(若用户不会直接看到)。
变量名、类型名、接口名、文件名。
正则表达式、SQL 语句、shell 命令模板(如果确实是命令逻辑)。
但
命令行输出、错误消息、提示、进度条文本、帮助信息等用户可见内容必须翻译。
5.
测试与验证
每处理完一批文件,至少进行一次 TypeScript 编译检查(npx tsc --noEmit)。
确保 npm run build(或项目指定的构建命令)通过后,才可视为该批次稳定。
三、具体实施步骤(严格按序执行)
Phase 0:清理与准备
1. 删除乱码目录
src/i18n/translations/╘н░ц/(安全备份到
i18n_backup_bad_encoding/ 后删除)。
2. 在
src/i18n/translations/ 中备份现有
en.ts 和
zh-CN.ts 为
.bak。
Phase 1:补齐中文语言包(约 380 个缺失 key)
1. 扫描英文语言包
en.ts,找出所有 key。
2. 对比
zh-CN.ts,列出缺失的 key(约 380 个)。
3. 为每个缺失 key 生成高质量中文翻译,追加到
zh-CN.ts,保持对象键顺序与
en.ts 一致(便于 diff)。
4.
立即进行编译检查,确保无语法错误。
Phase 2:汉化 commands/ 模块(212 个文件,已接入 39 个)
对每个 .ts 命令文件:
1. 识别所有用户可见字符串(command 输出、错误消息、提示、帮助文本等)。
2. 若已使用
t(),检查 key 是否在语言包中,若缺失则补充。
3. 若仍为硬编码英文,生成新 key,添加到
en.ts 和
zh-CN.ts,替换硬编码为
t()。
4. 检查是否有直接操作 DOM 或
process.stdout 的地方,确保翻译调用能正常输出。
每完成 15 个文件,进行一次 TypeScript 编译检查,并记录至 I18N_MIGRATION_PLAN.md。
Phase 3:汉化 components/ 模块(598 个文件,已接入 102 个)
类似 commands 的处理,但注意 React 组件内需使用 useI18n()。
处理 src/components/ 下所有 .tsx 和 .ts 文件(UI 组件、对话框、消息、设置、提示输入等)。
确保 LanguagePicker.tsx 本身也是 i18n 化的(其内部文本是否已翻译?若未则完善)。
Phase 4:汉化 tools/ 模块(305 个文件,0%)
工具模块返回的用户反馈信息(如 “File saved”、“Command not found”)必须通过 t() 提供。
注意工具可能运行在沙箱或后台,需确保 t() 函数能正确获取当前 locale(可能是从配置读取,而非 React 上下文,直接 import 即可)。
Phase 5:汉化 cli/ 模块(129 个文件,0%)
CLI 入口、传输层、错误处理等所有面向用户的输出。
特别注意 --help 输出、版本信息、状态消息。
Phase 6:汉化其他模块(utils/、services/、hooks/…)
utils/ 中的提示、警告、错误信息;services/ 中的 API 调用反馈;hooks/ 中可能存在的用户提示(如 useClipboard 的成功消息)。
对于纯逻辑文件(确实无用户可见字符串),可简单添加注释 // 无用户可见文本,跳过 i18n,但不可滥用,需经过认真筛查。
Phase 7:收尾与验证
全局搜索源码中可能残留的硬编码英文 UI 文本(使用正则搜索 ['\"][A-Z][a-z] 常见模式),人工 final review。
补充遗漏 key,保证 en.ts 和 zh-CN.ts 完全同步(key 数量一致)。
运行项目完整构建,启动测试(如果有)或手动测试核心流程:
执行 /locale en → 界面变为全英文
执行 /locale zh-CN → 界面变为全中文
检查核心命令(如 /help、/config、/mcp、/login)输出正常。
删除备份的 .bak 文件和临时备份目录。
四、Git 提交与进度记录
提交频率:每完成一个模块(如 commands 全部完成)或至少每处理 30 个文件,执行一次 git 提交。
Commit Message 规范:i18n: 汉化 <模块名> (<已完成数>/<总数>),例如 i18n: 汉化 commands (50/212)。
分支策略:建议在独立分支 i18n-full-chinese 上操作,完成后合并。
每次提交前:
npx tsc --noEmit 或 npm run check 通过。
git status 确认无意外临时文件。
全部完成后:
提交最终版本,commit 信息 feat(i18n): 完成全量汉化与语言包同步。
将所有进度和问题记录到 I18N_MIGRATION_PLAN.md 并一同提交。
五、异常处理与自修复机制
如果在汉化过程中遇到编译错误、运行时崩溃或功能异常:
1.
立即回退当前文件改动,分析原因。
2. 常见问题:
缺失 useI18n import;
在非组件函数中误用 Hook(应改用直接 import t);
占位符 json 解析错误(如 { 未转义)。
3. 修复后重新编译验证,确认无误再继续。
六、最终交付清单
src/i18n/translations/en.ts —— 完整英文词库(新增 key 不得丢失原有 1084 个 key)。
src/i18n/translations/zh-CN.ts —— 完整中文词库(key 数量与 en.ts 完全相等,翻译准确)。
所有 src/ 下修改过的源码文件(2949 个文件中的绝大多数需修改,少数纯逻辑文件除外)。
I18N_MIGRATION_PLAN.md —— 记录整个过程、遇到的问题、统计数据和最终覆盖率。
LANGUAGE_PACK_DIFF.md —— 可选,记录新增 key 清单。
七、启动命令
当你准备好开始任务时,请回复:
确认开始 CmdCode 全量 i18n 汉化任务。
第一步:分析项目现有 i18n 架构,生成迁移计划。
随后按 Phase 0 → Phase 1 → Phase 2……的顺序自主推进,无需等待后续指令。每完成一个阶段(Phase)向我汇报一次概要进度。
强调:必须逐文件处理,不允许跳过任何
src/ 下的
.ts/.tsx 文件。若遇到确实不含用户可见文本的文件,需在
I18N_MIGRATION_PLAN.md 中注明其路径与原因。