背景
hzero/choerodon 前端项目普遍使用 intl.get('key').d('默认中文') 的方式做国际化。随着页面增多,多语言 key 散落在页面文件、子组件和 Store 里,手工整理既容易遗漏又难以保持命名一致性。
本文记录一次用 Copilot Agent 完成"从零提取 → 规范命名 → 生成四语翻译 → 合并业务翻译 → 沉淀为复用 Skill"的完整实践。
一、扫描全量 key
第一步让 Agent 用一行命令扫描页面目录下所有文件(包括 stores,这是手工整理最容易漏掉的地方):
grep -RIn "intl.get(" packages/faa/src/pages/AlertRuleMaintenance \
| sed -E "s/.*intl\.get\('([^']+)'\)\.d\('([^']*)'\).*/\1\t\2/" \
| sort -u输出结果直接是 key\t中文默认值 的去重列表,例如:
faa.alert.assign.memberId 成员ID
faa.alert.model.alertPercentage 告警百分点(%)
faa.alert.view.title 预警规则维护
hzero.common.button.save 保存注意:grep 只能处理单行调用。多行的 intl.get(\n 'key'\n) 需要额外用 read_file 人工核查。
二、规范化命名
原始 key 存在几类问题,统一修正:
前缀约定(本项目):
hzero.common.*、hpfm.*、haip.quotas.* 属于平台公共库,不做调整。
三、生成六列翻译表
按照固定格式输出,可直接粘贴 Excel:
六列:模板 / 编码 / 中文 / 英文 / 日文 / 繁体中文,制表符分隔,无表头
faa.alertRule model.ruleCode 告警规则编码 Alert Rule Code アラートルールコード 告警規則編碼
faa.alertRule model.alertPercentage 告警百分比(%) Alert Percentage (%) アラート割合(%) 告警百分比(%)
faa.alertRule view.title 预警规则维护 Alert Rule Maintenance アラートルール保守 預警規則維護
hzero.common button.save 保存 Save 保存 儲存翻译规范:
英文:Title Case,标准技术术语
日文:软件界面惯用语,借词优先(クォータ、テナント)
繁体:繁简转换为基础,注意港台用语(儲存 vs 保存、用戶 vs 用戶)
四、合并业务翻译
业务同学通常会提供自己整理的翻译表。以中文为匹配键,合并时:
英文、繁体以业务版本为准
日文保留机器翻译(除非业务另有提供)
在第七列标记
替换/未动,方便审核
faa.alertRule view.quotaAssign 配额分配 Quota Allocation クォータ割当 配額分配 替换
faa.alertRule assign.userId 用户ID User ID ユーザーID 用戶ID 未动五、沉淀为 Copilot Skill
整个流程固化为一个用户级 Skill,路径 ~/.copilot/skills/i18n-extract/,所有项目开箱即用:
~/.copilot/skills/i18n-extract/
├── SKILL.md # 触发词 + 完整操作流程
└── assets/
└── naming-rules.md # 命名规范 + 各项目前缀映射Skill 的 description 字段包含触发关键词,Agent 在你描述"提取多语言 / 整理 intl.get / 生成翻译表"时会自动加载:
---
name: i18n-extract
description: "提取并整理前端多语言配置。Use when: 需要提取 intl.get() 多语言 key、
生成多语言翻译表、整理 language.js、规范化 i18n key 命名、
将多语言内容输出为可粘贴到 Excel 的 Tab 分隔格式。"
---新项目接入只需在 naming-rules.md 追加页面→前缀映射和保留前缀白名单,无需改动主流程。