i18n-translate
按计划文件顺序逐文件完成 i18n(哈希键 + @/i18n 的 $t/ti,禁止页面使用 globalThis.$t),维护 subpages/i18n/locales 三语,并在对应 plan 中更新进度与统计。用户说「按计划做 i18n」「继续翻译 plans」时触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
按计划文件顺序逐文件完成 i18n(哈希键 + @/i18n 的 $t/ti,禁止页面使用 globalThis.$t),维护 subpages/i18n/locales 三语,并在对应 plan 中更新进度与统计。用户说「按计划做 i18n」「继续翻译 plans」时触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
按 GitLab TBID 强制校验规范提交 Git 变更并在对话中总结。提交信息必须以 [TBID:项目ID-任务编号] 开头。用户说「提交」「提交并总结」「帮我 commit」时使用;不写 .cursor/commit-summary 文件。
按用户指定目录扫描并翻译页面标题(navigationBarTitleText、SpPage title、setNavigationBarTitle)。用户说「翻译页面 title」「目录下 title 没翻译」「i18n page title」时触发。
Summarize current code changes and optionally commit. Use when the user asks to summarize what changed, record changes, commit with a message, or "总结这次改了什么并提交"/"帮我 commit".
Use when analyzing a frontend codebase, onboarding into an existing project, or documenting stack, structure, configs, and coding conventions into .f2e-ai/handbook/.
Use when a requirement-id is ready for delivery and the next step is to summarize Git changes, write change-summary.md, commit, push, and prepare a PR.
Use when a requirement-id already has test.spec.ts and the next step is to run Playwright and persist the results in test-result.md.
| name | i18n-translate |
| description | 按计划文件顺序逐文件完成 i18n(哈希键 + @/i18n 的 $t/ti,禁止页面使用 globalThis.$t),维护 subpages/i18n/locales 三语,并在对应 plan 中更新进度与统计。用户说「按计划做 i18n」「继续翻译 plans」时触发。 |
本技能有两层含义:
.cursor/skills/i18n-translate/plans/ 下各 Markdown 计划文件的顺序,逐个处理其中 「未翻译完」 列表里的源文件;每完成一个文件,立即在同一份计划里更新进度(列表迁移 + 统计表)。src/ 下面向用户的中文替换为 脚本生成的哈希键,接入 i18next + react-i18next(@/i18n),并维护 zhcn / en / ar 三份 locale;具体规则见下文「翻译规则与技术步骤」。本仓库为 Taro + React:文案资源在 src/subpages/i18n/locales/*.json,运行时用 syncI18nLanguage 等与 Taro 存储 lang(zhcn | en | ar)对齐并注入 i18next(见 src/i18n/instance.js)。新代码一律用 @/i18n,不要在页面/组件里写 globalThis.$t;src/lang/index.js 里对 globalThis.$t 的挂载仅作历史兼容,不作为本技能推荐的取词方式。
.cursor/skills/i18n-translate/plans/ 下所有 *.md 计划文件(不含子目录若有则同样纳入;通常仅一层)。batch-1-1_*.md → batch-1-2_*.md → … → batch-7-15_*.md)。不要跳号、不要凭主观挑批次。每个计划 Markdown 顶部通常包含:
**扫描目录**: 后接绝对路径(或可复制到本机的路径)——这是列表里相对路径的 根目录。**报告文件**: 当前文件名,便于自检。列表中的条目形如 `components/foo.js`,相对路径相对于「扫描目录」。磁盘上的源文件路径为:
{扫描目录规范化后}/{列表中的相对路径}
(路径拼接时去掉重复斜杠;Windows 环境按本机实际分隔符处理。)
## 未翻译完 小节下的条目,按文件中出现的先后顺序(从上到下)一次一个源文件。## 已翻译、## 无需翻译 仅作记录,不要把其中的文件再次当作待译任务,除非用户明确要求复查。每当你确认某个源文件已按本技能「翻译规则与技术步骤」完成(用户可见中文已走 $t/ti 等,locale 已写),必须立刻编辑 当前正在执行的那份 plans/*.md:
## 未翻译完 中 删除对应那一行(整行 - \path``)。## 已翻译 中 追加同一相对路径的一行,格式与原有列表一致:- \path``。## 已翻译 原先仅有「(无)」占位,删除「(无)」,改为正常的 bullet 列表。## 统计 表格:
未翻译完、已翻译、无需翻译 的数量 = 各小节下有效条目数(排除空行、排除单独的「(无)」)。合计 = 三者之和。占比 = 该项数量 / 合计 × 100%,保留一位小数,与现有表格风格一致(如 44.8%)。不要只改代码而不改计划文件;不要把已完成文件仍留在「未翻译完」里。
src/ 下文件(计划中的路径已相对于各批次的扫描根目录)。rg -n "[\u4e00-\u9fff]" <文件或目录>" 辅助确认残留中文。//、/* */、<!-- --> 内的中文。要译:模板文案、按钮、占位与提示、校验与 $message / $confirm 文案、表格列标题与操作名等 UI 字符串。
不译:作标识符、枚举、后端码、接口参数字段、switch 比较值、数据集 key 等必须稳定的中文字符串;调试日志(除非产品要求);品牌名等专有名词。
不确定时 宁可不译,可在对话中简短说明。
禁止手搓哈希键。
键格式:{file_hash}.{text_hash}
file_hash = 源文件路径的 md5,取前 8 位十六进制text_hash = 中文文本的 md5,取前 6 位十六进制在仓库根目录执行:
python3 .cursor/skills/i18n-translate/scripts/gen_i18n_key.py --path "src/..." --text "中文文本"
批量建议 JSONL:
cat << 'EOF' | python3 .cursor/skills/i18n-translate/scripts/gen_i18n_key.py --jsonl
{"path":"src/views/xxx.vue","text":"文本1"}
{"path":"src/views/xxx.vue","text":"文本2"}
EOF
@/i18n)import { useTranslation, $t, ti } from '@/i18n'(按需增删命名导出)。需要随语言刷新时,在组件内调用 const { i18n } = useTranslation()。$t('哈希键') 或 ti('哈希键', [arg0, arg1])(占位符 ${0}、${1}… 与数组下标对应)。不要在业务代码里使用 globalThis.$t(key, 中文, 'lang') 或任何 globalThis.$t 作为 UI 文案来源。$t 手写「展示用 defaultValue」凑中文;中文基准以 zhcn.json 中该键的值为准(见下节 E)。Taro.setNavigationBarTitle)等与语言强相关的副作用,在 useEffect 中根据当前词条设置标题,并依赖 i18n.language,以便切换语言后标题同步更新,例如:const { i18n } = useTranslation()
useEffect(() => {
Taro.setNavigationBarTitle({ title: $t('xxxxxxxx.yyyyyy') })
}, [i18n.language])
globalThis.$t 依赖。更新(键已存在则 覆盖 值),三语文件路径为:
src/subpages/i18n/locales/zhcn.json(中文原文,与存储侧语言码 zhcn 对应;i18next 内部 lng 为 zh-CN,由 src/i18n/instance.js 映射)src/subpages/i18n/locales/en.jsonsrc/subpages/i18n/locales/ar.json规则:zhcn.json = 原文;en / ar 可先在同键或同语义既有条目中检索 locales/*.json 是否已有译文;未命中再自行翻译。新键 只写入 上述三份 locales/*.json。
脚本目录:.cursor/skills/i18n-translate/scripts/(相对仓库根)。若目录或脚本尚未纳入仓库,键生成仍按上文 C) 哈希规则 执行,待脚本补齐后再改用命令行生成。
python3 .cursor/skills/i18n-translate/scripts/gen_i18n_key.py --path <file> --text <chinese>
cat items.jsonl | python3 .cursor/skills/i18n-translate/scripts/gen_i18n_key.py --jsonl
python3 .cursor/skills/i18n-translate/scripts/check_i18n_keys.py --src src --locales src/subpages/i18n/locales
可选:--list、--clean、--no-fail。