如何将 TyranoBuilder / TyranoScript 游戏翻译成英文
使用 RuneTranslate 将 TyranoBuilder / TyranoScript 视觉小说翻译成英文的分步指南 — 提取 data/scenario/*.ks 脚本、屏蔽 KAG 标签、翻译角色显示名称,并导出可运行的 HTML5 或 Electron 版本。
TyranoBuilder 及其底层的 TyranoScript 引擎驱动着大量独立日式视觉小说 — 它是 Kirikiri 和 Ren'Py 的网页技术(HTML5 / JavaScript)替代方案,既以独立的 HTML5 文件夹形式发布游戏,也以 Electron 打包的可执行文件形式发布。它的剧本使用与 Kirikiri 相同的 KAG 风格 .ks 脚本语法,因此只要你知道文本存放在哪里,就很容易接触到它。本指南将带你用 RuneTranslate 从头到尾翻译一款 TyranoBuilder 游戏,包括大多数工具都会遗漏的引擎专属部分:角色显示名称。
你需要准备什么
- Windows 版 RuneTranslate — 免费,所有引擎和提供商全部解锁。
- 一款 TyranoBuilder 游戏。既可以是独立的 HTML5 文件夹(根目录下散放着
data/和tyrano/目录),也可以是 Electron 打包的版本(包含tyrano/tyrano.js和data/scenario/*.ks的resources/app.asar)。RuneTranslate 两者都能识别。 - 一种目标语言 — 英文、西班牙文、法文、德文、葡萄牙文、俄文、中文、意大利文、土耳其文、越南文,以及另外 20 多种。
- 一个翻译提供商。视觉小说对话量大,因此 LLM(OpenAI / Anthropic)或 DeepL 通常读起来最佳;免费的 Google Translate 开箱即用。
第 1 步:打开游戏文件夹
启动 RuneTranslate,点击 新建项目,将其指向游戏目录(对于 Electron 打包的版本,则指向包含 .exe 的文件夹)。引擎检测会自动运行,并通过其 tyrano/ 运行时以及 data/scenario/ 脚本识别出 TyranoBuilder。对于 Electron 版本,RuneTranslate 会直接读取 app.asar — 你无需解包任何东西。你的原始游戏永远不会被修改。
第 2 步:字符串是如何提取的
RuneTranslate 会从 TyranoBuilder 存放可翻译文本的所有位置提取它:
- 剧本脚本 — 每一个
data/scenario/**/*.ks文件,包括_preview.ks以及加密版本游戏所依赖的system/_*.ks镜像。 - 界面和配置 —
tyrano/lang.js的界面字符串和data/system/Config.tjs。 - 角色显示名称 — 显示在对话上方的说话人标签(见下一节)。
KAG 内联标签 — [r] 换行、[p] 点击等待、[改ページ] 分页、[font color=...] 以及其他日文命名的标签 — 在任何内容送到提供商之前,都会被隐藏在数字占位符 [[U#]] 之后,然后在导出时还原,从而使引擎的格式完好无损。二进制或加密的 .ks 文件会通过 UTF-8 嗅探被检测出来,永远不会被覆盖。
第 3 步:角色名称 — Tyrano 特有的部分
TyranoBuilder 剧本经常用像 [yuki] 这样的内联简写来指代说话人 — 这是一个角色 ID,而非显示文本。RuneTranslate 绝不会改写这些内联引用(改写它们会破坏引擎的角色查找并导致场景崩溃)。相反,它会翻译角色的显示名称,并在导出时向 data/system/chara_define.ks 中注入一条正确的 [chara_new name=... jname=...] 条目。结果就是:屏幕上显示的名称被翻译了,而脚本用来查找该角色的 ID 保持不变。
第 4 步:翻译并校对
选择一个提供商并运行。OpenAI GPT-4o 或 Anthropic Claude 在角色语气和风格化台词方面读起来最佳;DeepL 快速且干净,适合旁白;免费的 Google Translate 可覆盖菜单。先为你的角色阵容和反复出现的术语建立术语表,让名称在每条路线中都呈现一致 — 参见 术语表入门。每一行都会出现在编辑器中,紧挨其原文;可就地编辑(失焦或按 Ctrl+Enter 时保存)、使用查找与替换,或运行可选的 AI 精修器 进行结合上下文的二次校对。免费版 RuneTranslate 被限速,比付费版慢约 3–4× — 输出质量相同。
第 5 步:导出可运行的版本
点击 导出。对于独立的 HTML5 游戏,RuneTranslate 会将翻译后的 .ks 脚本、lang.js、配置以及注入的 chara_define.ks 写入游戏的一份副本中。对于 Electron 打包的游戏,它会重新打包一个修改过的 app.asar。无论哪种方式,输出都是位于你所选位置的完整、可运行的副本 — 启动它,它就会以你的目标语言运行。
已知限制
- 加密的
.ks文件(被检测为非 UTF-8)会被原样保留 — 如果某个版本对其剧本进行了加密,那些行将无法翻译。 - 图像中的文字(Logo、手绘界面、CG 字幕)不会被翻译 — 超出机器翻译的范围。
- 在运行时构建对话字符串的自定义插件可能需要在编辑器中快速手动修正一遍。
为什么这比老办法更简单
手动方式意味着要解包 app.asar,找出每一个 .ks 文件(包括容易遗漏的系统镜像),手工绕开 KAG 标签进行翻译,弄清角色名称的注入方式好让说话人标签真正改变,然后在不破坏 asar 的前提下重新打包。RuneTranslate 将整条流程浓缩为几次点击,同时保持编辑器打开,让你掌控措辞。
查看 TyranoBuilder 引擎页面 了解完整功能列表,阅读 Kirikiri 指南 了解相关的 KAG 引擎,或 下载 RuneTranslate 在真实游戏上试一试。
