# 游戏本地化(Localization / L10n)
> **本地化不是翻译。** 翻译是把文字从 A 语言变成 B 语言;本地化是让游戏在 B 文化中**感觉像是为当地人设计的**。
---
## 目录
1. [本地化 vs 国际化 vs 文化适配](#本地化-vs-国际化-vs-文化适配)
2. [多语言技术实现](#多语言技术实现)
3. [UI/UX 在地化](#uiux-在地化)
4. [文化适配(Culturalization)](#文化适配culturalization)
5. [本地化流程管理](#本地化流程管理)
6. [质量保障与测试](#质量保障与测试)
7. [各语言特殊挑战](#各语言特殊挑战)
8. [工具与平台](#工具与平台)
---
## 本地化 vs 国际化 vs 文化适配
### 概念区分
| 概念 | 英文 | 范围 | 说明 |
|------|------|------|------|
| **全球化** | Globalization (G11n) | 商业策略 | 决定进入哪些市场 |
| **国际化** | Internationalization (I18n) | 技术准备 | 让游戏**具备**支持多语言的能力 |
| **本地化** | Localization (L10n) | 内容适配 | 将游戏适配到特定地区 |
| **文化适配** | Culturalization | 深度调整 | 根据文化价值观修改内容 |
### 国际化(I18n)技术准备清单
```
开发阶段必须完成:
✅ 文本外置
└── 所有用户可见字符串在代码外(CSV/JSON/XLIFF)
└── 硬编码 = 后期无法本地化
✅ 动态文本支持
└── 占位符系统:"{player_name} 获得了 {item_count} 个 {item_name}"
└── 复数规则:1 sword / 2 swords(不同语言规则不同)
✅ 字体支持
└── 中/日/韩:CJK 字体(数万字符)
└── 阿拉伯/希伯来:RTL(从右到左)
└── 泰语/印地语:复合字符
✅ UI 自适应
└── 文本框支持动态扩展
└── 按钮大小随文本长度调整
└── 最小/最大宽度约束
✅ 日期/时间/数字格式
└── 日期:MM/DD/YYYY(美)vs DD/MM/YYYY(欧)vs YYYY/MM/DD(日)
└── 数字:1,000.50(美)vs 1.000,50(德)
└── 货币:符号位置($100 vs 100$)
✅ 语音/音频分离
└── 语音文件按语言分包
└── 音效(非语言)共用
```
---
## 多语言技术实现
### 文本系统架构
```
本地化系统架构:
Key-Value 存储(运行时)
├── 主键: gameplay.dialog.welcome
├── 英文: "Welcome, {player_name}!"
├── 中文: "欢迎回来,{player_name}!"
├── 日文: "お帰りなさい、{player_name}さん!"
└── 占位符:{player_name} → 运行时替换
存储格式对比:
├── CSV — 简单,Excel 友好,但不支持嵌套
├── JSON — 灵活,支持嵌套,解析开销小
├── XLIFF — 行业标准,支持翻译记忆、状态追踪
└── GetText (.po) — Linux 标准,支持复数规则
```
### 复数规则处理
| 语言 | 复数形式 | 示例 |
|------|----------|------|
| **英语** | 2种:1 / other | 1 apple / 2 apples |
| **中文** | 1种:无变化 | 1个苹果 / 2个苹果 |
| **日语** | 1种:通常无变化 | (偶有变化但不依赖数字)|
| **俄语** | 3种:1 / 2-4 / other | 1 яблоко / 2 яблока / 5 яблок |
| **阿拉伯语** | 6种 | 极其复杂 |
| **波兰语** | 3种 | 复杂规则 |
```python
# ICU MessageFormat 风格的复数处理
# "{count, plural, one {# sword} other {# swords}}"
# 俄语需要3种形式
# "{count, plural, one {# меч} few {# меча} many {# мечей}}"
```
### RTL(从右到左)语言支持
| 语言 | 方向 | 特殊处理 |
|------|------|----------|
| **阿拉伯语** | RTL | 文字方向、数字方向、UI 镜像 |
| **希伯来语** | RTL | 同上 |
| **波斯语** | RTL | 同上 |
| **乌尔都语** | RTL | 同上 |
```
RTL 实现要点:
1. 文本渲染方向:从右到左
2. 数字通常保持 LTR(嵌入在 RTL 中)
3. UI 布局镜像:
├── 左对齐 → 右对齐
├── 返回按钮从左上角移到右上角
├── 进度条从右向左填充
└── 列表滚动条在左侧
4. 混合文本(RTL 中夹杂英文)需要 BiDi 算法
```
### 字体与渲染
| 语言族 | 字符数 | 字体大小 | 渲染挑战 |
|--------|--------|----------|----------|
| **拉丁** | ~200 | 小 | 简单 |
| **CJK** | 20,000+ | 极大 | 字形复杂、文件大 |
| **阿拉伯** | ~200 | 中 | 连字、字形变化 |
| **泰语** | ~100 | 小 | 复合字符、无空格分词 |
| **印地语** | ~500 | 中 | 复合字符、重音符号 |
**字体优化策略**:
```
1. 子集化(Subsetting)
└── 只打包实际使用的字符
└── CJK 游戏常用字约 3500 个,而非全部 2 万字
2. 动态字体加载
└── 基础包:常用字
└── 扩展包:生僻字按需下载
3. SDF(Signed Distance Field)字体
└── 放大不模糊,适合 UI
└── 支持描边、发光等效果
4. 字体回退链
└── "游戏专用字体" → "系统默认" → "Noto Sans"
```
---
## UI/UX 在地化
### 文本扩展问题
| 语言 | 相比英语平均长度 | 极端情况 |
|------|-----------------|----------|
| **中文** | 50-70% | 更短 |
| **日语** | 60-80% | 类似 |
| **德语** | 120-150% | 单词极长 |
| **俄语** | 110-130% | 较长 |
| **法语** | 110-120% | 较长 |
| **西班牙语** | 115-125% | 较长 |
**UI 设计原则**:
```
1. 按钮最小宽度 = 英文长度 × 1.5
2. 文本框支持自动换行和动态高度
3. 避免固定宽度的紧凑布局
4. 预留 30% 的文本扩展空间
5. 用图标+文字,而非纯文字按钮
```
### 文化色彩与符号
| 元素 | 西方含义 | 东方含义 | 注意 |
|------|----------|----------|------|
| **白色** | 纯洁、婚礼 | 死亡、葬礼 | 避免在喜庆场景使用 |
| **红色** | 危险、爱情 | 喜庆、好运 | 反向含义 |
| **4** | 普通数字 | 谐音"死" | 中文区避免 |
| **13** | 不吉利 | 普通 | 西方避免 |
| **竖大拇指** | 赞 | 部分地区冒犯 | 中东地区 |
| **OK 手势** | 好的 | 部分地区冒犯 | 巴西等地区 |
---
## 文化适配(Culturalization)
### 内容审查层级
```
层级 1:法律合规(必须改)
├── 赌博机制(部分国家禁止)
├── 血腥/暴力程度(德国、澳大利亚分级严格)
├── 政治敏感内容
├── 宗教冒犯
└── 历史修正(如日本对二战内容的处理)
层级 2:文化敏感(应该改)
├── 骷髅/死亡符号(中韩常见,中国需要和谐)
├── 裸露程度(不同地区接受度不同)
├── 酒精/毒品引用
├── 节假日活动(圣诞节 vs 春节)
└── 角色设计(肤色、体型多样性)
层级 3:文化增强(可以改)
├── 本地节日活动
├── 本地名人/梗引用
├── 本地支付方式
├── 本地社交媒体集成
└── 本地配音(而非仅字幕)
```
### 典型案例
| 游戏 | 地区 | 改动内容 |
|------|------|----------|
| **PUBG** | 中国 | 血液变绿色,死亡改为挥手告别 |
| **魔兽世界** | 中国 | 骷髅变面粉袋,尸体变坟墓 |
| **原神** | 全球 | 四国庆典映射现实节日(璃月=春节) |
| **王者荣耀** | 全球 | 英雄名称/形象本地化(如荆轲→阿轲) |
---
## 本地化流程管理
### 标准本地化流程
```
Phase 1: 准备(开发中同步进行)
├── 提取所有可本地化字符串
├── 锁定文本(Freeze)
├── 准备术语表(Glossary)
├── 准备风格指南(Style Guide)
└── 准备上下文注释(Context)
Phase 2: 翻译
├── 初翻(第一译者)
├── 编辑审校(第二人)
├── LQA(语言质量保证)
└── 客户审阅(可选)
Phase 3: 集成
├── 导入翻译文件
├── 字体/排版调整
├── UI 适配测试
└── 功能测试
Phase 4: 验证
├── 语言测试(In-game LQA)
├── 文化审查
├── Bug 修复
└── 最终签核
```
### 术语表(Glossary)管理
```
术语表示例:
| 英文 | 中文 | 日文 | 备注 |
|------|------|------|------|
| HP | 生命值 | HP | 不要译成" hit point" |
| Mana | 法力值 | MP/マナ | 魔法类游戏 |
| Critical Hit | 暴击 | クリティカル | 统一译法 |
| Quest | 任务 | クエスト | 不要混用"使命" |
| Boss | 首领 | ボス | 不要译成"老板" |
```
### 上下文(Context)的重要性
```
反例:没有上下文的翻译灾难
原文:"Charge!"
├── 战士技能 = "冲锋!" ✅
├── 法师技能 = "充能!" ✅
├── 商店按钮 = "充值!" ✅
└── 没有上下文 → 译者只能猜 → 错误率高
解决方案:
├── 提供截图
├── 提供场景描述
├── 标注角色性别、语气
└── 标注字符串长度限制
```
---
## 质量保障与测试
### 本地化测试检查清单
| 类别 | 检查项 | 通过标准 |
|------|--------|----------|
| **语言** | 拼写/语法错误 | 零错误 |
| **语言** | 术语一致性 | 术语表 100% 匹配 |
| **语言** | 截断/溢出 | 无 UI 溢出 |
| **功能** | 占位符替换 | 所有 {变量} 正确显示 |
| **功能** | 复数规则 | 1/2/5 分别测试 |
| **功能** | 日期/数字格式 | 符合当地习惯 |
| **文化** | 敏感内容 | 无法律/文化风险 |
| **性能** | 字体加载 | 无卡顿、无方块字 |
### Pseudo-Localization(伪本地化测试)
```
在正式翻译前,用伪语言测试 UI 适应性:
原文:"Welcome, Player!"
伪本地化:"[Ŵéļçõmé, þļåýéŕ!]"
特点:
- 增加 30% 字符长度
- 添加重音符号
- 用方括号标记可扩展边界
目的:
- 发现截断问题
- 发现硬编码字符串
- 测试 RTL 布局
- 无需等待真实翻译
```
---
## 各语言特殊挑战
| 语言/地区 | 主要挑战 | 解决方案 |
|-----------|----------|----------|
| **中文** | CJK 字体大、繁简转换、审查 | 子集化字体、自动繁简转换、提前审查 |
| **日语** | 敬语系统、平假名片假名混合 | 语境标注敬语级别、术语统一 |
| **韩语** | 合成字体(字母组合成字)| 确保字体支持合成 |
| **阿拉伯语** | RTL、连字、数字方向 | BiDi 算法、UI 镜像测试 |
| **德语** | 单词极长、复合词 | UI 预留 150% 空间、允许换行 |
| **俄语** | 变格(名词随语境变化)| 占位符设计支持变格 |
| **泰语** | 无空格分词、复合字符 | 使用分词库、特殊字体测试 |
| **印地语** | 复合字符、字体支持有限 | 使用 Noto Sans Devanagari |
---
## 工具与平台
### 本地化工具对比
| 工具 | 类型 | 特点 | 价格 |
|------|------|------|------|
| **Unity Localization** | 引擎内置 | 与 Unity 深度集成 | 免费 |
| **Unreal Text Localization** | 引擎内置 | 基于文本收集 | 免费 |
| **Crowdin** | 云端平台 | 协作翻译、API 集成 | 免费起步 |
| **Transifex** | 云端平台 | 企业级、工作流完善 | 付费 |
| **Phrase** | 云端平台 | 开发者友好、CLI 工具 | 付费 |
| **POEditor** | 云端平台 | 简单轻量、性价比高 | 免费起步 |
| **memoQ** | 桌面 CAT | 专业译者工具 | 付费 |
| **SDL Trados** | 桌面 CAT | 行业标准 | 付费 |
### 本地化成本参考
| 内容类型 | 每字价格(美元) | 备注 |
|----------|-----------------|------|
| **普通游戏文本** | $0.08-0.15 | 量大可议价 |
| **创意/营销文本** | $0.15-0.30 | 需要创译(Transcreation)|
| **LQA 测试** | $40-80/小时 | 或按字数计费 |
| **配音** | $200-500/小时 | 因语言和演员而异 |
| **文化顾问** | $100-300/小时 | 审查敏感内容 |
---
## 最佳实践
- [ ] **开发第一天就做 I18n** — 后期 retrofit 成本是前期的 10 倍
- [ ] **文本 Freeze 后再翻译** — 避免反复修改导致翻译返工
- [ ] **提供上下文** — 截图 + 场景描述 + 长度限制
- [ ] **维护术语表** — 确保全游戏术语一致
- [ ] **先做 Pseudo-Localization** — 在真实翻译前发现 UI 问题
- [ ] **测试所有语言** — 特别是 RTL 和 CJK
- [ ] **分包下载语音** — 语音文件按语言分包,减少首包大小
- [ ] **记录玩家反馈** — 母语玩家的翻译纠错是最宝贵的
- [ ] **考虑方言** — 西班牙语(西班牙 vs 拉美)、葡萄牙语(葡 vs 巴)
- [ ] **节日活动本地化** — 不只是翻译,还要考虑文化相关性
---
## 相关页面
- [游戏 UI/UX](game-ui-ux.md) — UI 自适应设计
- [社区资源](game-dev-communities.md) — GDC 在地化技术分享
- [游戏数据分析](game-data-analytics.md) — 多地区数据对比