Axıs
技能目录

P7 · 可迭代、可维护、可本地化的文本架构

P7 · 可迭代、可维护、可本地化的文本架构

独立游戏一定会改玩法、一定会重写、一定会做多语言。 架构的目标是:改一句台词,只动一个文件;加一种语言,不动任何代码;删一个场景,不炸掉别的场景。

7.1 单一真相源

所有文本只存在于一处(字符串表 / CSV / JSON / Ink / Yarn),不在代码里硬编码,不在预制体里内联。

违规代价示例(真实高频):台词写在 12 个预制体上 → 改一句人称要开 12 个文件 → 漏改 3 处 → 上线后被玩家截图。

结构:

文本(ID + 内容 + 元数据)  ← 唯一真相源
        ↑
逻辑(节点图/脚本)只引用 ID,不持有文本
        ↑
表现(UI/对话系统)按 ID 取文本并渲染

7.2 ID 规范

<类别>.<场景或系统>.<序号>[.<变体>]

dlg.q07_blacksmith.01
dlg.q07_blacksmith.02.well_dried
opt.q07_blacksmith.01a
bark.combat.lowhp.03
item.rope_q01.desc
log.q01_note.body
ui.menu.settings

规则:

  • ID 永不复用(废弃标 deprecated,不删除,以免旧存档引用崩坏)
  • 禁止中文、空格、大小写混用
  • 变量:flag.<事件> / num.<计数> / q<章号>_<事件>
  • 同一事件全项目统一命名(建一张变量字典)

7.3 文本分类标签(裁剪与优先级的依据)

每条文本打 tier 标签:

Tier 含义 裁剪策略
core 关键路径必需,缺失则无法通关/看不懂 永不删
plot 剧情重要,但缺失不阻断 极端情况才删
flavor 风味、可选、氛围 工期吃紧时第一批砍
debug 占位文本 上线前必须清零

开工前就标好 tier,你才能在工期吃紧时有依据地砍,而不是随机删。

7.4 工具选型(按团队规模)

规模 推荐 理由
1 人,文本 < 3 万字 Google Sheets / Excel + CSV 导出 零学习成本,diff 友好,可直接给翻译
1–3 人,有分支 Ink 或 Yarn Spinner 纯文本、可版本管理、Unity/Godot 有成熟集成、变量与条件内建
需要节点可视化 Twine(原型)/ Articy Draft(免费层) 注意:图形化工具有供应商锁定与协作成本
需要多语言协作 Sheets + Crowdin / Lokalise(小项目先用 Sheets) 翻译记忆与 Glossary 值得,但先确认文本量

无论选什么,必须满足:纯文本可 diff、可导出、可批量替换、ID 稳定。

7.5 重写成本控制

  • 场景自包含:一个场景的文本尽量在自己的文件/表里,不跨文件引用他人台词。
  • 依赖登记:每个场景简报标注"我依赖哪些 flag、我写入哪些 flag"。改动时先看依赖表。
  • 改动词条的代价模型:改一处 ≤ 影响 2 个文件。超过 → 架构有问题。
  • 版本管理:文本按文件提交,提交信息写清"改了哪些 ID、为什么"。
  • 废弃不删:保留 deprecated 行,避免旧存档与旧分支引用断裂。

7.6 本地化就绪(开工第一天就要做)

事项 规范
文本膨胀 中文 → 英文/德文/俄文通常膨胀 30–50%;UI 按 +50% 预留或提供缩略版
图片内嵌文字 禁止。要做就分层导出,文字层可替换
UI 定宽 按钮/对话框不能写死宽度;提供自动换行与溢出策略
双关与谐音 登记到 translator note,提供"功能等价替换"而非直译
复数与性别 避免依赖目标语言语法的字符串拼接({n} 个{物品} 在俄语里有 3 种形式)
变量插值 给插值加注释:第 {day} 天 // day = 整数 1-7
专有名词表 叙事统一维护 Glossary(人名/地名/物品名),禁止各处自译
引号与标点 中文引号""在本地化时需按目标语言替换,不要写死在文本里

成本预警:中文 5 万字 → 英文本地化通常是四位数到五位数人民币的支出,且需要 LQA 一轮。若预算为零,至少保证文本架构支持以后再加(而不是重写)。

7.7 配音决策

配音的真实代价不只是钱:

  1. 成本:按条或按分钟计费,5 万字对白的配音可轻松超过美术预算
  2. 锁死改词:录完就改不动了(改一句 = 重录一条 = 再花钱)
  3. 工期:排期、录音、剪辑、植入、口型(若有)
  4. 本地化:每种语言都要重新配

独立游戏默认策略:不配音,或只配"关键句 + 语气音效"(咕哝、笑声、呼吸)。 若一定要配音:先定稿、先冻结、只配 core 与 plot,flavor 不配。

7.8 交付表结构

见 templates/04-string-table-schema.md。最小字段: id | tier | 源文本 | 语气/情绪标记 | 场景 | 条件 | 字数 | 译注 | 状态

7.9 架构自检

  1. 改一句台词需要打开几个文件?> 2 → 重构
  2. 所有文本都能被 grep 到吗?有没有藏在预制体/脚本里的硬编码?
  3. 每条文本都有 tier 吗?工期砍半时你知道先砍哪些吗?
  4. 加一种语言需要改代码吗?
  5. 有图片内嵌文字吗?
  6. 变量字典存在吗?同一事件是否只有一种命名?