i18n Skills
用于审核和包装 i18n 字符串的 AI 命令
问题
您的代码库中有 500 个硬编码字符串,散落在组件、模板和视图中。手动包装需要数天枯燥的查找替换。即使包装完成,仍可能漏掉在德语中会失效的拆分句子、在阿拉伯语中出错的复数逻辑,以及让本地化文件膨胀的孤立键。
解决方案
两个 AI 斜杠命令即可处理完整 i18n 工作流。先运行 /i18n-review 以只读方式审核代码,再运行 /i18n-wrap 自动修复所有问题。两个命令都会检测框架、理解本地化文件格式,并在提交前验证更改。
/i18n-review
只读审核,查找拆分句子、损坏的复数、未包装字符串和未使用的键,绝不会修改代码。
/i18n-wrap
使用正确的翻译函数自动包装硬编码字符串、生成语义键、更新本地化文件并验证构建。
/i18n-review 命令
review 命令会以只读方式审核代码库,扫描每个文件中的 i18n 问题,并生成按优先级排列的报告,列出准确文件位置和修复建议。您的代码绝不会被修改。
/i18n-review src/
/i18n-review src/ --framework=next-intl检查内容
- 拆分句子:拼接 t() 调用,导致其他语言的词序失效
- 过度包装:技术字符串、CSS 类、URL 和枚举值被错误地用 t() 包装
- 包装不足:按钮标签、标题和错误消息等可见 UI 字符串仍为硬编码
- 复数问题:使用三元运算符或 === 1 检查,而非正确的 ICU 复数语法
- 未使用的键:已在本地化文件中定义,却从未在代码中引用
- 硬编码格式值:日期、币种和数字未使用 Intl 格式化程序
/i18n-wrap 命令
wrap 命令会使用框架对应的正确翻译函数自动包装硬编码字符串。它会检测 i18n 库,按组件或功能分组生成语义键,更新本地化文件,并验证构建仍然通过。
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18next功能
- 框架检测:识别 i18n 库及其翻译函数(t、$t、$_、gettext 等)
- 语义键生成:创建 nav.signIn、errors.notFound 等含义明确的键,而不是通用标签
- 本地化文件更新:以正确格式(JSON、YAML、PO 等)向源语言文件添加新键
- 构建验证:包装后运行构建、检查和测试命令,发现任何回归
支持的框架
两个命令都会根据项目依赖自动检测框架。您也可以通过 --framework 标志明确指定。以下列出受支持的 10 种框架及其翻译函数和复数格式。
| 框架 | 翻译函数 | 复数格式 |
|---|---|---|
| react-i18next | t() | key_one / key_other |
| next-intl | t() | ICU {count, plural, ...} |
| vue-i18n | $t() | Pipe syntax | singular | plural |
| angular i18n | $localize | ICU {count, plural, ...} |
| svelte-i18n | $_() | ICU {count, plural, ...} |
| flutter intl | S.of(context) | Intl.plural() |
| django | gettext / _() | ngettext() |
| rails i18n | t() | count key |
| laravel | __() / @lang | trans_choice() |
| swift | NSLocalizedString | .stringsdict |
安装
将命令文件复制到 .claude/commands/ 目录,仅此而已,无需依赖或配置。命令是普通 Markdown 文件,任何 AI 编码助手都能执行。
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/用法示例
React 项目
审核使用 react-i18next 的 React 应用,再包装所有硬编码字符串。命令会从 package.json 检测 react-i18next,并使用正确的 t() 函数和 key_one/key_other 复数格式。
# Review a React project for i18n issues
/i18n-review src/ --framework=react-i18next
# Wrap all hardcoded strings automatically
/i18n-wrap src/components/ --framework=react-i18next
# Result: t() calls inserted, keys added to en/translation.jsonDjango 项目
审核 Django 模板和视图中的 i18n 问题,再使用 gettext 包装字符串。命令会从 settings.py 检测 Django,简单字符串使用 _(),复数则使用 ngettext()。
# Review Django templates and views
/i18n-review myapp/ --framework=django
# Wrap hardcoded strings with gettext
/i18n-wrap myapp/templates/ --framework=django
# Result: _() calls inserted, .po file updated立即试用 i18n Agent
将翻译文件拖放到此处
JSON, YAML, PO, XML, CSV, Markdown, Properties
或点击选择文件
目标语言