Files
-----/rules/translation_rules.md

200 lines
9.9 KiB
Markdown

# 通用翻译规则
这是一份给多线程轻小说翻译任务共用的规则文件。所有线程在开始工作前,都应先读取本文件,再读取当前系列的风格文件与术语表。
## 适用范围
- 适用于本工作流根目录下的所有系列与卷。
- 适用于单线程翻译,也适用于拆分成多个线程的并行翻译、复审、封装任务。
- 若某个系列有自己的 `series-style.md`,则以该系列风格文件为准,但不得覆盖本文件的硬性规则。
## 标准目录
```text
<project-root>
<series-folder>\
mingcibiao.json
mingcibiao.ai.json
mingcibiao.candidates.json
series-style.md
<novel-folder>\
text\
preprocess_text\
trans_text\
final_text\
deliverables\
```
## 多 Agent 协作规则
- 默认按“统筹、术语、首译、复审、格式恢复、QA、交付”分工;小任务可由一个 Agent 连续承担多个角色,但仍必须按阶段产出。
- 每个 Agent 开工前必须确认当前系列、当前卷、输入路径、输出路径、chunk 范围和所读规则文件。
- 每个线程只处理明确分配的卷、文件或 chunk 范围,不要跨卷混写。
- 线程之间共享同一套系列术语表和系列风格文件。
- 多线程任务中,所有线程都必须遵守相同的译名、标点、ruby、标签和交付规则。
- 首译 Agent 不修改正式术语表;复审 Agent 不直接改源文;QA Agent 默认只报告,除非用户要求修复。
- 并行 chunk 必须以段落编号作为边界,不得合并、拆分或重排段落。
- 任何影响全卷一致性的判断,只能进入候选词、风格建议或 QA 报告,不能在单个 chunk 内私自固定。
- 如果用户要求“继续”,且当前任务没有需要确认的风险点,可以直接接着做下一步。
- 如果用户要求“自动输入继续”,则在任务完成并等待后续指令时,默认继续推进下一步,直到遇到必须确认的分歧或风险。
## 术语规则
- `mingcibiao.json` 是正式术语表,优先级最高。
- `mingcibiao.candidates.json` 只放候选词,不直接当正式词表使用。
- 用户确认后,先合并候选词,再进入锁词、翻译、复审流程。
- 术语一旦锁定,所有线程都必须一致使用。
- 若发现新术语且会影响一致性,先记录为候选词,不要在线程里擅自发明多个译名。
### 术语命中规则
术语命中必须以当前任务范围实时计算,不能把完整术语表塞进提示词。单段重翻只使用目标段落源文、ruby 与少量上下文中实际命中的术语;复审可额外参考当前译文中的旧译名或疑似不一致译名进行纠偏。
命中优先级:
1. `mingcibiao.json` 的精确源语 key 命中。
2. 原文 ruby 中的 rb/rt 命中,尤其是技能名、称号、别名、外语读音和世界观术语。
3. 正文中片假名、专名、组织名、地名、人名、带特殊标记的称谓命中。
4. 当前译文中已出现的旧译名或疑似不一致译名,仅用于复审纠偏,不用于单段重翻扩展术语。
5. `mingcibiao.candidates.json` 只作为候选参考,不能覆盖正式术语。
这里的“命中”指目标文本与正式术语表 key、别名或 ruby 信息匹配。原文中出现但尚未进入正式术语表的片假名、专名或称谓,只能作为候选术语发现,不得作为固定译名硬约束写入 prompt。当前译文中的旧译名只用于发现不一致或疑似误译,不得反向触发源文未命中的术语提示。
术语应用规则:
- 正式术语表命中后,译文必须使用指定译名;除非上下文证明不是同一概念,才可标记为冲突并暂停确认。
- value 中如含 `#` 备注,`#` 前作为译名,`#` 后作为说明,不得把说明直接写入正文。
- 如果术语表写作 `中文(外语/读音)`,且原文对应有意义 ruby,最终 HTML 应恢复为真实 ruby,不保留括号形式。
- 同一源语在同卷中不得出现多个译名;发现历史不一致时,复审阶段统一并记录。
- 新术语只进入候选词表,候选项至少包含:源语、建议译名、出现位置、上下文、理由、是否含 ruby。
## 系列风格规则
- 每个系列都应拥有自己的 `series-style.md`
- 在开始首译之前确认 `series-style.md` 已存在且已填写完毕。
- 如果当前系列没有 `series-style.md`,先在系列根目录生成一个,再要求填写该系列的风格内容后继续后续步骤。
- 如果 `series-style.md` 为空、只有部分内容,或明显未完成,先提示用户确认是否继续。
- 如果用户确认继续,则只以已填写的部分作为当前系列的风格约束;空白部分视为未指定,不要自行补写成固定规则。
- 如果用户不确认继续,先补全系列风格,再进入候选词表或首译。
- 系列风格文件应记录该系列的语气、叙述习惯、对话风格、术语偏好、标点偏好、双语版处理偏好和禁止事项。
## 翻译流程
### 1. 导入与预处理
- 源文件若为 EPUB,先导入到对应系列与卷目录。
- 预处理时保留段落编号、div 结构、ruby 信息和必要的标签。
- 只对正文文本做翻译,不要破坏 HTML 结构。
### 2. 候选词表
- 先整理候选词表。
- 用户确认后再合并成正式术语表。
- 术语表更新后,再进行锁词。
### 3. 首译
- 首译前确认 `series-style.md` 已填写并与当前系列一致。
- 如果不存在,先创建 `series-style.md`,写入系列风格模板,再暂停等待用户填写并确认。
- 如果 `series-style.md` 为空或只有部分内容,先提示用户确认。
- 用户确认继续后,只按已填写部分限定首译风格;空白项不额外施加约束。
- 如果用户不确认继续,先补齐系列风格,再开始首译。
- 只翻译锁词后的 chunk,不要回头直接改源 HTML。
- 每个段落都要按中文自然语序重写,不要机械贴着日语句序。
- 保留 `[Pxxxx]``<lk>...</lk>`、必要的 ruby 和 div 标记。
### 4. 复审
- 复审必须逐段检查,不可以只抽查。
- 复审时以“源文 + 首译 + 中文自然度”三者一起判断。
- 复审记录要完整覆盖全部段落。
### 5. 恢复与校验
- 复审完成后再恢复 HTML。
- 最后必须做术语、残留日文、ruby、覆盖率检查。
- 若有可修复的警报,优先修复后再交付。
## 验收标准
首译验收:
- chunk 范围内所有 `[Pxxxx]` 均有对应译文。
- 段落数量、顺序、编号不变。
- 正式术语命中项全部使用统一译名。
- 无明显漏译、整句日文残留、机器直译式语序。
- 必要 HTML、ruby、`<lk>` 标签未被破坏。
复审验收:
- 逐段覆盖,不以抽查代替复审。
- 每段同时检查源文、首译、术语和中文自然度。
- 修正误译、漏译、术语不一致、角色口吻漂移、标点不统一、ruby 处理错误。
- reviewed_chunks 可直接进入 HTML 恢复,不遗留“待确认”正文占位。
交付验收:
- final_text 段落覆盖率为 100%。
- 残留日文只允许出现在双语日文层、必要 ruby rt 或用户确认保留的位置。
- HTML 可解析,章节顺序、标题、图片、注释、ruby 和空段落正常。
- 纯译版与中日双语版按用户要求生成,文件名、版本和输出目录清晰。
- 如存在未修复风险,必须在交付说明中列出。
## 中文风格
- 输出必须是自然、流畅的简体中文轻小说文风。
- 以意义优先,再调整成中文语序。
- 不要保留日语式前置修饰和拖长句。
- 不要把“看得懂”的汉字词直接照搬成中文。
- 对话要符合角色性格,不要统一成同一种口吻。
## Ruby 规则
- 只在有意义时保留 `<ruby><rt>`
- 纯读音、无额外信息的 ruby,通常直接译成普通中文。
- 隐含义、别名、外语读音、技能名、称号、世界观术语,应按需要保留为真实 ruby。
- 不要把有意义的 ruby 改成括号。
- 不要删除 `<rt>` 后再用猜测补回。
- 如果术语表写作 `中文(外语/读音)`,且原文对应位置是有意义 ruby,最终 HTML 必须恢复为 `<ruby><rb>中文</rb><rt>外语/读音</rt></ruby>`,不要在正文中保留 `中文(外语/读音)` 括号形式。
## 标签与格式
- 保留 `[Pxxxx]` 段落编号。
- 保留 `<lk>...</lk>` 块的内容一致性。
- 保留必要的 HTML 结构,不要把标签当成普通文本改写。
- 交付前检查段落、标题、ruby、空段落和灰字双语格式是否正确。
## 双语交付
- 用户说“生成双语版”时,默认执行双语封装。
- 双语版规则:
- 日文保留在上或前一层。
- 日文用灰色字体显示。
- 中文译文紧随其后。
- 原始 HTML 结构尽量保持。
- 用户说“生成翻译版”时,生成纯译文 EPUB。
- 用户说“终交付封装”或“合并为epub交付给我”时,默认生成两份:
- 纯译文版
- 中日双语版
## 推荐命令模板
```powershell
$env:PYTHONIOENCODING='utf-8'
$env:SOURCE_EPUB='<source epub path>'
$env:NOVEL_ROOT='<novel root path>'
python '<project-root>\epub_delivery\build_epub_variants.py' --mode both
```
```powershell
python '<project-root>\epub_delivery\build_epub_variants.py' --mode translated
python '<project-root>\epub_delivery\build_epub_variants.py' --mode bilingual
```
## 默认响应
- 当任务完成并等待下一步时,如果用户已经要求自动续跑,则继续下一步。
- 如果需要用户确认,先暂停并说明原因。
- 如果用户只说“继续”,则按当前上下文中的下一步执行,不重新解释整套流程。
- 每次完成代码、文档或工作流更新后,先完成必要检查,再将当前仓库同步到 `https://git.diaomin.asia/` 对应远端;如果缺少远端地址、凭据或登录授权,先询问用户,不要静默跳过。