ChatClaw i18n-check

检查并补充前端和后端的i18n翻译文件。以中文(zh-CN)为基准,检查其他语言翻译文件是否缺少key,并补充缺失的key和对应的翻译值。对于日语(ja-JP)、韩语(ko-KR)、繁体中文(zh-TW),使用与非CJK语言对比的方式检测未翻译内容。

install
source · Clone the upstream repo
git clone https://github.com/zhimaAi/ChatClaw
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/zhimaAi/ChatClaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.cursor/skills/i18n-check" ~/.claude/skills/zhimaai-chatclaw-i18n-check && rm -rf "$T"
manifest: .cursor/skills/i18n-check/SKILL.md
source content

i18n 翻译检查与补充

快速开始(推荐安全用法)

强制前提:先用 Git 保证当前工作区是干净的(或至少 locales 相关改动可回滚),再运行下面任何脚本。

  1. 只在必要范围格式化翻译文件(建议从后端/英文开始)

    • 后端 JSON 一般是纯英文,占位少,优先安全
    python .cursor/skills/i18n-check/scripts/format_frontend.py
    python .cursor/skills/i18n-check/scripts/format_backend.py
    
    • format_frontend.py
      重写所有
      frontend/src/locales/*.ts
      • 仅做语法级重排与缩进,不再对字符做任何再编码;
      • 仍然建议:先只在当前分支本地运行,确认 diff 可接受后再提交
  2. 对比翻译差异(只读,不改文件):

    python .cursor/skills/i18n-check/scripts/compare_frontend.py
    python .cursor/skills/i18n-check/scripts/compare_backend.py
    
  3. 补全缺失的 key(使用中文作为占位符)

    • 推荐做法:先只对英文和后端补全,再视情况扩展到其他语言。
    # 仅补前端英文(安全范围小)
    python .cursor/skills/i18n-check/scripts/fill_frontend.py --target en-US
    
    # 补全所有前端语言(会改动所有 locales,务必在 Git 干净时使用)
    python .cursor/skills/i18n-check/scripts/fill_frontend.py
    
    # 补全所有后端语言(JSON,风险相对可控)
    python .cursor/skills/i18n-check/scripts/fill_backend.py
    
  4. AI 翻译(自动检测需要翻译的内容,不会直接改 TS/JSON 文件

    # 翻译特定语言
    python .cursor/skills/i18n-check/scripts/translate_with_ai.py --target en-US
    
    # 翻译所有语言(包括 CJK 语言)
    python .cursor/skills/i18n-check/scripts/translate_with_ai.py --all --cjk
    
  5. CJK 语言翻译后检测(翻译完成后检查是否还有未翻译)

    # 导出 CJK 语言未翻译内容到文本文件
    python .cursor/skills/i18n-check/scripts/export_translations.py --target ja-JP --cjk
    
    # 填充后检测 CJK 语言未翻译 key
    python .cursor/skills/i18n-check/scripts/fill_frontend.py --check-cjk
    

完整工作流程(推荐顺序)

# Step 0: 确认 Git 状态
# - 确保 frontend/src/locales 和 internal/services/i18n/locales 内的改动都可回滚
# - 不要在未提交的重要改动上直接批量格式化/补全

# Step 1: 格式化(可选,但推荐先只在后端/英文上尝试)
python .cursor/skills/i18n-check/scripts/format_frontend.py
python .cursor/skills/i18n-check/scripts/format_backend.py

# Step 2: 对比(只读)
python .cursor/skills/i18n-check/scripts/compare_frontend.py
python .cursor/skills/i18n-check/scripts/compare_backend.py

# Step 3: 补全缺失 key(中文占位)
# 先补英文,再按需扩展其他语言
python .cursor/skills/i18n-check/scripts/fill_frontend.py --target en-US
python .cursor/skills/i18n-check/scripts/fill_backend.py

# Step 4: AI 翻译(前端 + 后端)
# 脚本会自动检测需要翻译的内容并生成翻译提示(只读,不改 TS/JSON)
python .cursor/skills/i18n-check/scripts/translate_with_ai.py --all
# 仅处理后端 JSON 时,可显式指定:
# python .cursor/skills/i18n-check/scripts/translate_with_ai.py --type backend --all

# Step 5: 翻译完成后检测 CJK 语言
# 对于 ja-JP, ko-KR, zh-TW,检测是否还有未翻译内容
python .cursor/skills/i18n-check/scripts/fill_frontend.py --check-cjk
python .cursor/skills/i18n-check/scripts/translate_with_ai.py --cjk

# Step 6: 导出未翻译内容到文本,统一翻译后再导入
python .cursor/skills/i18n-check/scripts/export_translations.py --target ja-JP --cjk
# 手动翻译文本文件中的内容
python .cursor/skills/i18n-check/scripts/import_translations.py --file translation_export_ja-JP.txt

脚本说明

脚本位置

所有脚本位于

.cursor/skills/i18n-check/scripts/
目录:

脚本用途
format_frontend.py
格式化前端 TS 翻译文件
compare_frontend.py
对比前端翻译差异,支持
--cjk
检测 CJK 语言
fill_frontend.py
补全前端缺失的 key,支持
--check-cjk
检测 CJK 未翻译
translate_with_ai.py
AI 翻译:自动检测需要翻译的内容并生成翻译提示,支持
--cjk
export_translations.py
导出未翻译内容到文本文件,支持
--cjk
import_translations.py
导入翻译结果
format_backend.py
格式化后端 JSON 翻译文件
compare_backend.py
对比后端翻译差异
fill_backend.py
补全后端缺失的 key

使用示例

对比 CJK 语言

# 对比特定 CJK 语言与英文
python compare_frontend.py --target ja-JP --cjk

# 对比所有 CJK 语言
python compare_frontend.py --cjk-only

填充 CJK 语言

# 填充时使用 CJK 模式
python fill_frontend.py --cjk

# 检测 CJK 语言未翻译 key
python fill_frontend.py --check-cjk

AI 翻译脚本

# 翻译特定语言
python translate_with_ai.py --type frontend --target en-US

# 翻译 CJK 语言
python translate_with_ai.py --target ja-JP --cjk

# 翻译所有语言(包括 CJK)
python translate_with_ai.py --all --cjk

导出翻译

# 导出 CJK 语言未翻译内容
python export_translations.py --target ja-JP --cjk

翻译检测逻辑

  • 非 CJK 语言 (en-US, de-DE, fr-FR 等): 检测含有中文的 key,需要翻译
  • CJK 语言 (zh-TW, ja-JP, ko-KR): 检测与非 CJK 语言(如 en-US)相同的 key,需要翻译成对应语言

CJK 语言特殊处理

对于日语 (ja-JP)、韩语 (ko-KR)、繁体中文 (zh-TW),采用以下检测逻辑:

  1. 对比方式: 不以 zh-CN 为基准,而是与英语等非 CJK 语言对比
  2. 检测原理: 如果某个 key 在目标语言中的值与英语相同,说明该 key 未翻译
  3. 导出格式: 显示 baseline(中文) | reference(英语) | current(当前值),便于翻译

AI 翻译流程

  1. 运行
    translate_with_ai.py
    脚本
  2. 脚本会自动:
    • 读取目标语言文件
    • 检测需要翻译的中文内容(或 CJK 未翻译内容)
    • 生成 AI 翻译提示 (prompt)
  3. 将生成的提示复制给 AI 进行翻译
  4. AI 返回 JSON 格式的翻译结果
  5. 使用
    import_translations.py
    导入翻译结果

文件位置

类型目录格式基准文件CJK 基准文件
前端
frontend/src/locales/
TypeScript
.ts
zh-CN.ts
en-US.ts
后端
internal/services/i18n/locales/
JSON
.json
zh-CN.json
en-US.json

注意事项

  • 保持 key 结构: 必须与基准文件完全一致,使用相同的嵌套层级
  • 不要删除任何内容: 只能添加缺失的 key,不能删除现有的 key
  • 变量占位符: 后端 JSON 使用
    {{.xxx}}
    格式,前端使用
    {xxx}
    格式,必须保留
  • 格式化后再对比: 每次对比前先运行格式化脚本,确保格式统一
  • CJK 语言处理: 繁体中文(zh-TW)、日语(ja-JP)、韩语(ko-KR)使用英语(en-US)作为基准文件进行对比和填充