文件预览

plan-glossary.md

查看 微信小游戏本地化Skill 技能包中的文件内容。

文件内容

references/plan-glossary.md

# Skill — 执行计划与术语表生成

## 职责

基于扫描报告和分析报告,提取高频词汇生成术语表,按功能模块组织翻译内容,生成可执行的本地化计划。

## 前置条件

- `i18n/scan_report.json` 已生成(来自扫描分析阶段)
- `i18n/analysis_report.json` 已生成
- `i18n-config.json` 中已配置目标语言

## 执行步骤

### 步骤 1:读取扫描报告和分析报告

1. 读取 `i18n/scan_report.json`,获取所有文本条目(以及图片条目,如果 `translateImages` 为 `true`)
2. 读取 `i18n/analysis_report.json`,获取项目结构和模块分组信息
3. 读取 `i18n-config.json`,获取目标语言列表

### 步骤 2:术语提取与术语表生成

#### 2a. 词频分析

从所有文本条目(如果 `translateImages` 为 `true`,还包括图片 OCR 结果)中提取高频词汇:

1. **分词处理**:对所有中文文本进行分词
   - 游戏常见术语:金币、钻石、体力、经验、等级、血量、攻击、防御、技能、装备、道具等
   - UI 常见词汇:确认、取消、返回、设置、商城、背包、任务、成就等
   - 动词短语:获得、消耗、升级、解锁、购买、开始、结束等

2. **统计词频**:计算每个词汇出现的频次
3. **筛选高频词**:选取频次 >= 2 的词汇作为术语候选

#### 2b. 生成术语表草案

为每个高频词汇生成翻译建议:

```json
{
  "version": "1.0",
  "sourceLanguage": "zh-CN",
  "targetLanguage": "en",
  "generatedAt": "2026-04-02T16:30:00Z",
  "entries": [
    {
      "id": "term_001",
      "source": "金币",
      "target": "Gold",
      "alternatives": ["Coins", "Gold Coins"],
      "context": "游戏内主要货币",
      "frequency": 23,
      "category": "currency",
      "approved": false,
      "sources": ["assets/Scripts/ShopManager.ts", "assets/Scripts/RewardManager.ts"]
    }
  ]
}
```

翻译原则:
- **游戏行业惯例**:使用游戏行业通用的翻译(如 HP, MP, EXP 等)
- **简洁优先**:游戏 UI 空间有限,尽量使用简短的翻译
- **一致性**:同一概念必须使用相同翻译
- **上下文适配**:根据游戏类型选择合适的翻译风格
  - 休闲游戏:轻松友好
  - RPG:严肃史诗风
  - 策略游戏:专业精确

#### 2c. 特殊术语处理

1. **专有名词**:角色名、地名、技能名等可能需要音译或保留原文
2. **数字相关**:如 "1级"、"第3关" 中的中文部分
3. **复合术语**:如 "攻击力"、"暴击率" 等复合词需要整体翻译
4. **缩写惯例**:如 "ATK"(攻击)、"DEF"(防御) 等游戏中常见的缩写

### 步骤 3:按功能模块分组

基于分析报告的模块信息,将所有文本条目按功能模块分组:

| 模块 | 说明 | 典型文件 |
|------|------|----------|
| **UI标签** | 按钮文本、标题、标签页 | UI 相关脚本、Scene 文件 |
| **战斗** | 战斗提示、伤害数字、状态描述 | Battle 相关脚本 |
| **教程** | 新手引导、提示文本 | Tutorial/Guide 脚本 |
| **设置** | 设置选项、说明文本 | Settings 脚本 |
| **技能描述** | 技能名称、效果描述 | Skill/Ability 脚本 |
| **商城** | 商品名称、价格描述、购买提示 | Shop 脚本 |
| **对话/剧情** | NPC 对话、剧情文本 | Dialog/Story 脚本 |
| **成就/任务** | 任务描述、成就条件 | Achievement/Quest 脚本 |
| **通知/弹窗** | 系统通知、弹窗提示 | Notification/Popup 脚本 |
| **其他** | 无法归类的文本 | — |

分组策略:
1. 先根据文件路径和文件名推断模块归属
2. 再根据文本内容关键词辅助分类
3. 无法确定的归入"其他"

### 步骤 4:生成本地化执行计划

生成 `i18n/i18n_plan.md`,包含分步执行计划。

**关键要求**:执行计划中所有步骤的条目 ID 列表合并后,必须覆盖 scan_report.json 中的全部 TextEntry。不允许遗漏。

执行计划原则:
1. **每步有明确的 ID 列表**:可以通过 ID 回溯到 scan_report 中的具体条目
2. **每步有完成标准**:可量化验证是否完成
3. **先核心后外围**:UI标签 > 游戏核心 > 教程/设置 > 图片(仅 `translateImages` 为 `true` 时包含图片步骤)
4. **同模块内相关文本一起处理**:确保上下文一致性
5. **拼接字符串单独标注**:在注意事项中提醒处理方式

### 步骤 5:保存产物

1. 将术语表保存到 `{projectRoot}/i18n/glossary.json`
2. 将执行计划保存到 `{projectRoot}/i18n/i18n_plan.md`

### 步骤 5b:自检(保存后、请求确认前)

**⚠️ 保存产物后,必须执行以下检查。任何一项不通过都必须修正后重新保存。**

**验证上游产物(阶段 1):**

| 检查项 | 验证方法 | 不通过时 |
|--------|----------|----------|
| 扫描报告存在 | `i18n/scan_report.json` 文件存在且可解析 | 回到阶段 1 |
| 分析报告存在 | `i18n/analysis_report.json` 文件存在且可解析 | 回到阶段 1 |

**验证本阶段产物:**

| 检查项 | 验证方法 | 不通过时 |
|--------|----------|----------|
| 术语表存在 | `i18n/glossary.json` 文件存在且可解析 | 回到步骤 2 重新生成 |
| 术语表不为空 | `entries` 数组长度 > 0 | 回到步骤 2 |
| 术语表字段完整 | 每个 entry 都有 `source`、`target`、`frequency` | 补全缺失字段 |
| 执行计划存在 | `i18n/i18n_plan.md` 文件存在且非空 | 回到步骤 4 重新生成 |
| 全覆盖校验 | 执行计划中所有步骤涉及的条目 ID 总数 == `scan_report.json` 的 `summary.totalTextEntries` | 补全遗漏的条目 |

全部通过后进入步骤 6。

### 步骤 6:请求用户确认

输出摘要并请求用户确认:

```
📋 执行计划和术语表已生成!

术语表统计:
  - 总术语数:N 条

执行计划统计:
  - 总步骤:X 步
  - 文本翻译:Y 条(全覆盖)
  - 图片翻译:Z 张             ← 仅 translateImages 为 true 时显示

📖 请查看并确认:
  - 术语表:i18n/glossary.json
  - 执行计划:i18n/i18n_plan.md

⚠️ 确认后将一次性完成翻译、替换和验证,无需再次确认。
```

## 关键注意事项

1. **术语表的准确性至关重要**:它将约束后续所有翻译的用词,一旦确认就会贯穿整个翻译流程
2. **多义词处理**:同一个中文词在不同上下文可能有不同翻译,需在术语表中通过 `context` 字段区分
3. **品牌名/角色名**:这类专有名词最好由用户确认,不要擅自翻译
4. **执行计划的粒度**:每步不宜过大(建议 < 50 条),便于逐步执行和验证
5. **全覆盖校验**:生成执行计划后,统计所有步骤涉及的条目 ID 总数,确认 == scan_report 的 totalTextEntries