23 · 本地化与文化适配
23 · 本地化与文化适配
本地化不是翻译,是系统层的约束。它必须从设计阶段就进入规格,而不是出货前贴上去。 后期补本地化的代价是前期就做的 3–5 倍,且必然出现破版与逻辑错误。
1. 本地化对系统的六种硬影响
| # | 影响 | 具体表现 | 设计阶段对策 |
|---|---|---|---|
| 1 | 文本膨胀 | 德/俄/西语比英语长 30–40%;中/日较短但字宽不同 | UI 预留 30–40% 余量;禁止固定宽度的文本框 |
| 2 | 字体覆盖 | 中日韩需独立字体(数千字形);字体文件体积 | 提前确认字体授权与体积预算;备好 CJK 字体方案 |
| 3 | 布局方向 | 阿拉伯语/希伯来语为 RTL(从右到左) | 布局用镜像友好结构,不要硬编码左右 |
| 4 | 字符串拼接 | "你有 " + n + " 个金币" 在语序不同的语言里全错 |
禁止拼接,用完整句 + 占位符:{count} 个金币 |
| 5 | 复数规则 | 英语 2 种,俄语 3 种,阿拉伯语 6 种 | 用标准复数规则(ICU MessageFormat),不用 if-else |
| 6 | 语法性别 | 罗曼语系的名词/形容词有性别 | 字符串表支持性别变体;避免"他/她"硬编码 |
系统侧的底线要求(写进规格单):
- 所有面向玩家的字符串走字符串表,禁止硬编码
- 字符串用完整句 + 命名占位符,不拼接
- 复数用标准规则库
- UI 布局无固定宽度文本容器
- 所有文本有上下文注释(给译者)
2. 数字、日期、货币、单位
| 项 | 陷阱 | 做法 |
|---|---|---|
| 小数分隔符 | 英语用 .,欧洲多用 , |
用本地化 API,不手写格式 |
| 千位分隔 | 印度用 1,00,000 |
同上 |
| 日期格式 | 美 MM/DD,欧 DD/MM |
用本地化 API,或统一写 2026-03-14 |
| 数字膨胀 | 中文习惯"万/亿",英文"K/M/B" | 提供两种记数法,按语言切换 |
| 货币 | 符号位置、小数位 | 若涉及真实货币需合规检查 |
| 单位 | 公制/英制 | 提供切换或统一公制 |
| 大数字显示 | 中文 1 万 vs 英文 10K | 数值显示层必须可配置 |
数值显示设计:伤害从 100 涨到 10⁹ 时,中文玩家期待"10 亿",英文玩家期待"1B"。 数值显示格式必须作为常数表的一项,而不是硬编码。
3. 文化敏感清单(出货前必查)
| 类别 | 需检查 |
|---|---|
| 颜色 | 红(中国=喜庆 / 西方=危险)、白(东方=丧事)、绿(某些文化=宗教色) |
| 符号 | 手势(竖大拇指、OK 手势在多国有冒犯含义)、宗教符号、政治符号 |
| 数字 | 4(东亚)、13(西方)、666 |
| 动物 | 猪/牛/狗/猫在不同文化的含义 |
| 身体 | 骷髅、血迹、暴露程度(分级制度差异) |
| 历史/政治 | 地图边界、旗帜、历史事件、宗教内容 |
| 文字 | 避免使用随机汉字做装饰(可能构成无意义或冒犯词) |
| 语音 | 音效中的语言、语调 |
流程:每个地区发行前过一遍该清单;地图类内容必须走合规审查。
4. 玩法的文化差异
| 维度 | 差异 | 设计影响 |
|---|---|---|
| 难度预期 | 部分市场偏好高难度,部分偏好轻松 | 提供可调难度/辅助选项(见 systems/10) |
| 教程需求 | 部分市场玩家更接受长引导 | 教学分层 L0–L4,可跳过 |
| 付费习惯 | 对 IAP/抽卡的接受度差异极大 | 买断制是最安全的全球化模式 |
| 社交需求 | 多人/排行榜偏好差异 | 若做社交需考虑区域基础设施 |
| 文本量容忍 | 部分市场更接受大量文本 | 文本可跳过/可回看 |
| 节奏偏好 | 单次会话时长差异 | 短局结构更全球化 |
独立游戏建议:默认做买断制 + 可调难度 + 可跳过文本,这是跨文化最稳的组合。
5. 音频与配音本地化
| 项 | 做法 |
|---|---|
| 字幕优先于配音 | 配音成本极高,字幕成本低且覆盖全语言 |
| 字幕规范 | 说话人标签、半透明底衬、≥24px、可调大小 |
| 文本与语音不同步 | 允许语音长度差异,字幕可独立计时 |
| 拟声词/语气词 | 需要本地化(不能直接用英文 "Hmph") |
| 音频中的语言 | 环境音/广播若含语言需检查 |
| 配音优先级 | 只对高价值市场 + 大量台词做配音,否则全字幕 |
6. 技术实现规范
字符串表结构
key: ui.shop.buy_button
source: Buy
context: 商店界面的购买按钮,可能被截断,尽量短
placeholders: {count}, {item_name}
max_length: 12
plural_rules: yes
gender_variants: no
必须有 context 和 max_length —— 这是译者唯一能保证质量的依据。
占位符规范
| 规则 | 说明 |
|---|---|
| 命名占位符 | {player_name} 而非 %s(译者可重排语序) |
| 禁止拼接 | 完整句 + 占位符 |
| 占位符不可翻译 | 用工具校验 |
| 复数用标准库 | ICU MessageFormat / 引擎自带 |
文本膨胀测试
出货前必须用**最长语言(通常是德语或俄语)**做一次 UI 检查:
- 无文本溢出
- 无按钮被撑破
- 无文本被截断导致语义丢失
- 无行高错乱
- 字体缺字(豆腐块)
7. 语言优先级与成本
| 优先级 | 语言 | 理由 |
|---|---|---|
| P0 | 英语、简体中文 | 覆盖最大市场 |
| P1 | 日语、韩语、俄语、德语、法语、西班牙语(拉美)、葡萄牙语(巴西) | 高价值 PC 市场 |
| P2 | 意大利语、波兰语、土耳其语、繁体中文 | 视体裁而定 |
| P3 | 其他 | 视销量决定 |
成本参考:
- 翻译:按字数计费(英文字数为基准)
- 总文本量 2–8 万字 × 语言数 = 主要成本
- 每增加一种语言 ≈ 文本量 × 单价 + 一次 UI 检查
降低成本的三个手段:
- 减少文本总量(用机制替代文本,见
integration/12) - 优先做 P0/P1,其余按销量补
- 用标准格式 + 完整上下文,降低译者返工
本地化对文本预算的反向约束:如果打算做 10 种语言,单局强制文本 300 字的上限就要再降。
8. 反模式
| 症状 | 修法 |
|---|---|
| 出货前才做本地化 | 从设计阶段就进规格 |
| 字符串硬编码在代码里 | 走字符串表 |
| 拼接字符串 | 完整句 + 命名占位符 |
| 复数用 if-else | 用标准复数规则库 |
| 固定宽度文本框 | 留 30–40% 余量 |
| 布局硬编码左右 | 镜像友好结构(RTL) |
| 字符串表无 context | 每个 key 必须有 context + max_length |
| 用随机汉字做装饰 | 可能构成冒犯词,改用图形 |
| 默认做配音 | 字幕优先 |
| 只按英文长度做 UI | 用最长语言做膨胀测试 |
| 忽略文化敏感 | 出货前过敏感清单;地图内容走合规审查 |
| 中文数字格式写死"万/亿" | 数值显示格式可配置 |
9. 交付物
- 字符串表规范(key 命名、context、max_length、占位符规则)
- 文本膨胀测试报告(用最长语言)
- 文化敏感检查表(按地区)
- 语言优先级与成本估算
- 数值/日期/货币显示配置表
10. 参考
integration/14-ux-and-onboarding.md(字幕与 UI 可访问性规范)integration/12-narrative-integration.md(用机制替代文本以降成本)- ICU MessageFormat 规范(复数与性别)
- 地图类内容需遵守所在地区的合规要求