用 GitHub Copilot Agent 批量整理前端多语言配置

_

背景

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 存在几类问题,统一修正:

问题

示例

修正后

前缀不统一

faa.alert.*

faa.alertRule.*

冗余后缀

quotaObject(含 Obj 语义)

quota

key 含义不准确

faa.alert.view.quotaManagement

faa.alertRule.view.quotaManagement

命名歧义

assign.userId vs assign.memberId

按业务字段含义保留区分

前缀约定(本项目):

页面目录

规范前缀

旧前缀(废弃)

AlertRuleMaintenance

faa.alertRule

faa.alert

QuotaManagement

faa.quota

faa.quotas

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 追加页面→前缀映射和保留前缀白名单,无需改动主流程。


小结

环节

工具/方式

效果

全量提取

grep + sed 单行命令

不漏 stores,自动去重

命名规范化

Agent 批量分析 + 人工确认

全局一致,废弃前缀有据可查

四语翻译

Agent 生成 + 业务翻译合并

Tab 格式直接入 Excel

流程复用

Copilot Skill(用户级)

跨项目生效,一次配置永久有效

Git 多身份管理:工作实名与开源网名一键切换 2026-03-12

评论区