T4 · 字符串表 Schema(可迭代 / 可本地化)
CSV 表头(最小可用集)
id,tier,speaker,emotion,source_zh,context,condition,chars,translator_note,status
字段规范
| 字段 |
说明 |
示例 |
id |
见 P7.2 规范,全局唯一,永不复用 |
dlg.q07.03 |
tier |
core / plot / flavor / debug |
core |
speaker |
角色 ID,空表示旁白/系统 |
cui_tie |
emotion |
语气标记(给配音/动画/字体) |
低声·回避 |
source_zh |
中文源文本 |
炉子灭了三天了。 |
context |
场景与前置(给翻译的情境) |
首次进入铁匠铺,玩家未接任务 |
condition |
触发条件(逻辑侧读取) |
flag.hammer_sold==false |
chars |
中文字符数(自动计算) |
8 |
translator_note |
译注:双关/俚语/称谓/不可直译处 |
"没抬头"是动作不是台词,可译为语气 |
status |
draft / reviewed / locked / deprecated |
reviewed |
多语言扩展
id,tier,speaker,emotion,source_zh,en,ja,context,condition,chars,chars_en,translator_note,status
- 源语言列与译文列并列,翻译时对照 context 与 translator_note。
chars_en 用于 UI 溢出测试(膨胀 30–50%)。
- 新语言只加列,不动代码、不动 ID。
状态流转
draft → reviewed(过反AI味+朗读) → locked(定稿/已配音/已翻译)
↓
deprecated(废弃保留,不删除)
- locked 后改动必须走变更记录:改了哪些 ID、为什么、影响哪些语言。
- deprecated 行保留到项目结束,避免旧存档与旧分支引用断裂。
变量字典(独立一张表)
var_name,type,meaning,written_by,read_by,default
flag.hammer_sold,bool,玩家得知锤子被卖,dlg.q07.03,dlg.q11.02 / bark.well.*,false
num.trust_cui,int,崔铁的信任度(-3..3),opt.q07.*,dlg.q09.*,0
q07_hammer,quest,赎锤任务状态,dlg.q07.04,HUD,q07_hammer
规则:同一事件全项目只有一种命名;任何新变量先登记再使用。
与引擎集成的注意事项
| 引擎/工具 |
做法 |
| Unity |
CSV → ScriptableObject 或 I2 Localization;禁止在 Prefab 里写死文本 |
| Godot |
CSV → Translation 资源;tr("id") 引用 |
| Ink |
文本写在 .ink 里,ID 用 // id: dlg.q07.03 注释标记,导出时用脚本抽表 |
| Yarn Spinner |
节点名即 ID;变量在 Yarn 里声明,与变量字典同步 |
| 自研 |
启动时加载 CSV 到字典,UI 只按 ID 取值 |
自检