i18nlisted
Install: claude install-skill beixiyo/dotfiles
# i18n 变更检测
在**当前 git 变更**中识别与 i18n 相关的修改,并按语言特性做一致性检查
## 执行步骤
1. **获取变更范围**
- `git diff`:工作区未暂存变更
- `git diff --staged`:已暂存变更
或两者结合,确定本次涉及的 i18n 相关文件(locale 文件、调用 i18n 的代码等)
2. **识别 i18n 变更**
- 找出变更中新增/修改/删除的**文案键**(key)或**文案内容**
- 区分:仅代码侧引用键、仅 locale 文件内容、或两者同时变更
3. **一致性检查**
- 各语言文件中**同一键**是否都存在且类型一致(若用 JSON/YAML 等)
- 新增键是否在所有目标语言中都有对应翻译;删除键是否在各语言中同步删除
4. **按语言特性检查**
根据项目支持的语言,对照下方「语言特性」做针对性检查(如复数、性别、占位符等)
## 语言特性(各国差异)
检测时需考虑以下语言特性,避免只改一种语言导致其他语言缺失或错误
| 语言 | 特性 | 检测要点 |
|------|------|----------|
| **英语 (en)** | 单复数 | 是否有 `one`/`other` 或 `zero`/`one`/`other` 等复数形式;数量插值是否与复数规则一致(如 1 item / 2 items) |
| **阿拉伯语 (ar)** | 六复数形式 | ICU 规则中是否考虑 zero/one/two/few/many/other 六类,与文案是否匹配 |
| **俄语 (ru)、波兰语 (pl)、捷克语 (cs) 等** | 多复数形式 | 是否有 one/few/many/other 等形式,数字与形式选择是否一致 |
| **法语 (fr)、西班牙语 (es) 等** | 性别与复数 | 形容词/过去分词等是否随主语性别、数量变化;复数形式是否完整 |
| **中文 (zh)、日文 (ja)** | 无语法复数,可有量词 | 通常无复数形式,但需检查量词(个/条/张等)与占位符是否一致;日文敬语/简语是否统一 |
| **德语 (de)** | 复数 + 格 | 复数形式多样(-e/-er/-en 等),格(主/宾/属/与)在句子中是否一致 |
若项目使用 **ICU MessageFormat**(或类似)的复数/选择语法,需检查:
- `{count, plural, one {…} other {…}}` 等分支是否在所有语言中都存在且语义对应
- 占位符名称(如 `count`)在各语言中是否一致
- 某些语言(如阿拉伯语)是否有 `zero`/`two`/`few`/`many` 等额外分支
## 输出格式
按问题逐条列出,并标注严重度:
```markdown
## i18n 变更概览
- 涉及文件:(列出 locale 文件与引用 i18n 的代码文件)
- 涉及语言:en, zh, …
## 问题 1 — [简短标题]
- 位置:`path/to/file` 行号或键名
- 描述:具体不一致或缺失(如:en 有复数 other,zh 缺少对应键)
- 严重度:🔴 缺失 / 🟡 不一致 / 🟢 建议
- 建议:如何修改或补充
```
## 注意事项
- 若项目使用 i18n 库(如 vue-i18n、react-intl、i18next、Vite 插件等