支持的引擎 · Ren'Py
Ren'Py 是占主导地位的基于 Python 的视觉小说引擎,用于从独立动力小说到长盛不衰的成人 VN 的一切。RuneTranslate 以三种模式翻译它:源代码驱动的项目(game/**/*.rpy)、只编译的发布版本(.rpyc,通过捆绑的 unrpyc 附属程序反编译),以及只归档的发布版本(.rpa,通过捆绑的 rpatool 附属程序拆包,带自动混淆密钥检测)。它提取 say / 旁白 / menu 行加上 _() / __() / _p() UI 字符串。导出时,对话和菜单在运行时应用:一个生成的 .rpy 把每一条源行内容匹配(config.say_menu_text_filter)到一个 game/rt_translations.json 映射,并强制游戏语言为你的翻译 —— 刻意不用 Ren'Py 原生的基于 id 的 tl/ 块,因为那些 id 无法总是被复现。只有 _() UI 字符串被写成一个真正的 game/tl/translated/translation.rpy 块。对于非拉丁目标语言,RuneTranslate 捆绑一个支持 CJK / 泰语 / 阿拉伯语的字体,并把游戏的字体通过 config.font_replacement_map 路由,让译好的文字永不渲染成方块。什么都不重新打包 —— 额外的 .rpy 文件和 JSON 落进 game/,紧挨原件。与赞助者档位的术语表搭配,在长 VN 里锁定角色名和招牌术语。
Ren'Py VN 因角色声线而生死攸关 —— 女主角在三幕里被叫成 'Alice' / 'Aris' / 'Arisu' 会很快破坏读者的沉浸感。用术语表锁定每一个角色名、主角昵称的变体、地名,以及任何生造的世界观术语。屏蔽与翻译服务无关,所以无论你在预算跑用 DeepL 还是在对话密集的主要章节用 Claude,你的术语都保持一致。 术语表入门 →
把 RuneTranslate 指向含游戏可执行文件的文件夹。引擎检测会自动把项目归类为源代码驱动(有 .rpy)、编译(只有 .rpyc)或归档(只有 .rpa)。捆绑的 unrpyc 和 rpatool 附属程序自动运行 —— 无需安装 Python。
选择目标语言(30 多种支持之一)和翻译服务。Anthropic Claude 和 OpenAI GPT-4o 在 Ren'Py 对话上最强,因为它们比统计式 MT 更好地保留语气、语域和拟声词。DeepL 是长篇描述性旁白的稳妥第二选择。
RuneTranslate 提取每一条可翻译的行(对话、选项文本、屏幕标签、UI 字符串)并分批。Ren'Py 特有的标记([[player_name]]、{color=#fff}…{/color}、{b}…{/b})在翻译期间被屏蔽,让 LLM 把它们当作不透明占位符,然后逐字还原。
RuneTranslate 把几个小文件丢进 game/:一个 rt_translations.json 映射,和一个生成的 .rpy,它在运行时把每一条源行内容匹配(config.say_menu_text_filter)并强制语言为你的翻译,于是对话和菜单显示译文,而无需重新打包 .rpa。_() UI 字符串进 game/tl/translated/translation.rpy,当目标需要时捆绑一个 CJK / 非拉丁字体。重跑翻译器会保留你手动编辑过的行。