引擎指南FAQPatreonDiscord下载
登录
RuneTranslate · 端到端翻译日式游戏
引擎指南对比图片文字存档编辑器作弊模式FAQ下载更新日志PatreonDiscordYouTube隐私政策服务条款联系我们
全部文章
troubleshooting · workflow · export · exclusions

翻译后游戏打不开?找出那一行

2026年8月29日·11 分钟阅读

翻译好的游戏窗口一开就关,或者永远卡在加载画面。你翻译的某一行根本不是文本:一个 ID、一条路径、一个游戏用来比对的标记。先证明问题确实出在翻译上,再用对半切分的办法找到那一行:大约十三次导出,就能把五千行缩到一行。

窗口打开。窗口关闭。这游戏昨天还好好的,你花了一晚上翻译它,现在它死了。

在那些行里,有一行从来就不是文本:一个场景名、一条文件路径、一个游戏拿来比对的标记。引擎撞上它,什么都没画出来就放弃了。

你不会为了找它去读五千行。你只会把同一个「是或否」的问题,问上大约十三遍。

简短的答案。 先证明问题确实出在翻译上,然后对半切:翻译一半可疑的行,导出,运行。失败的那一半里藏着你要找的行。对那一半继续重复,直到只剩一行。

动手找之前:问题真的出在翻译上吗

  1. 运行原版游戏。 不是你导出的那份,而是没动过的副本。如果它也打不开,问题在你的电脑、在文件夹,或者在游戏本身。
  2. 只翻译一行短而无害的文字,导出,运行。 屏幕上看得见的一个菜单词就够了。
  3. 做完这些,才开始找那一行。

第 2 步说的是一行而不是一行都不翻,这是有意的。有几个适配器在没有内容要写时会提前返回,所以一次空导出考验的是文件复制而不是真正的写入流程,真正的流程坏掉了它也可能照样通过。

如果只翻一行的版本同样打不开,那就没有哪一行单独有问题,对半切也找不到东西。请重新导出到一个全新的空文件夹,确认你运行的是导出的副本而不是原版,并读一读导出时的警告。如果还是不行,请作为交付问题反馈。

这一轮排查的代价是两次运行加一次导出:小型 RPG Maker 项目几分钟,大型 Unity 游戏更久。换来的是不用花一晚上去找一行根本不存在的东西。

两种看起来很像、其实不是的情况。游戏能跑,但文字变成方块、问号或乱掉的拉丁字母,那是字体或编码问题。装了插件或悬浮层之后立刻崩溃,那是工具的问题,不是你的行。

用对半切分找出那一行

大多数项目包含很多文件,而文件列表是最容易一刀切成两半的东西。

  1. 在工具栏点重置所有翻译。
  2. 打开选择要翻译的文件,它自己就说明白了:「选择要翻译哪些文件。未勾选的文件会保持原样。」取消勾选一半文件,翻译剩下的一半。
  3. 导出到一个全新的空文件夹,然后运行游戏。
  4. 如果能启动,你要找的行在你没碰的那一半里;如果不能,就在你刚翻译的那一半里。无论哪种情况,清单都少了一半,另一半可以忘掉。
  5. 再次重置所有翻译,把剩下的清单对半切,导出,运行。
  6. 重复到只剩一个文件,然后在这个文件里继续对半切,直到只剩一行。

按文件切比按行切要粗,所以轮数跟着文件数走:四十个文件大约六轮能定位到文件,然后你在文件内部重新开始。

只有一个文件的项目——一份 NScripter 脚本,一部只有单个剧本的 Kirikiri 或 Wolf 游戏——没有文件列表可切。那就在行上拖出一个方框:复选框和批量操作栏会自己出现,接下来交给重新翻译所选。想一次覆盖更多,先用筛选和搜索把行缩小,再用选择所有可见项。这一项要当心:它取的正是筛选当前显示的内容,所以一个忘了清掉的筛选会悄悄污染后面每一轮。把你用过的筛选记下来。

一批一百行的坏批次,完整走一遍:

  • 第 1 轮 — 100 行嫌疑,翻译前 50 行:能跑,说明在另外 50 行里。
  • 第 2 轮 — 50 行嫌疑,翻译前 25 行:崩了,说明就在这 25 行里。
  • 第 3 轮 — 25 行嫌疑,翻译前 13 行:能跑,说明在另外 12 行里。
  • 第 4 轮 — 12 行嫌疑,翻译前 6 行:崩了,说明就在这 6 行里。
  • 第 5 轮 — 6 行嫌疑,翻译前 3 行:崩了,说明就在这 3 行里。
  • 第 6 轮 — 3 行嫌疑,翻译前 2 行:能跑,只剩一行。

从一百行开始最坏是七次导出,从五千行开始最坏大约十三次。

一轮要花多少时间

一次导出、一次启动,加上游戏走到第一句对白所需的时间。小型 RPG Maker 项目两三分钟。大型 Unity 游戏里导出要复制整个游戏、标题画面又慢条斯理,那就接近十分钟。

所以十三轮差不多是一整晚。这仍然是便宜的那个选择,因为另一条路是自己读完五千行还得猜对。

手工操作时有两件事容易出错。每一轮都导出到全新的空文件夹, 因为有些引擎会叠加挂载补丁,第 3 轮落在第 1、2 轮上面就等于同时测了三轮。重置就要彻底重置: 用重置所有翻译,不要手动改回去,因为它恢复的是创建项目时抓取的原文,哪怕你之后覆盖过源文件夹也一样有效。

如果把那一行改回去之后还是打不开

那就是不止一行。在对解析敏感的引擎上,第一次「全部翻译」之后出现这种情况很正常。把找到的那一行保持原文,然后针对仍然处于翻译状态的部分再跑一遍同样的循环。第二个元凶往往和第一个是同一类字符串,而且就在同一个文件里。

下次分批翻译

分批并不会省下导出次数;这些导出你本来也要做,区别在于每次失败一出现就已经被圈定在很小的范围里。它是在最后一批坏的,所以对半切从一百行开始,而不是五千行。先从 100 行起步,等连续几批都干净通过,再放大到 500 行或者整个文件。

翻错一行,哪些引擎会坏?

人们说某些引擎严格、某些宽松。真正起决定作用的,是你的译文落在什么地方。

有些引擎把它当作数据来读:Ren'Py 用一个独立文件加运行时挂钩,RPG Maker 用转义过的 JSON,Unreal 用键哈希原样保留的 .locres 值。游戏的结构根本看不到你的文字,所以一行译错的代价就是一行译错。另一些则把它拼进游戏要解析的文件里——当作脚本、标记或字节流——你的句子于是成了那个文件结构的一部分。这时一个冒号、一个方括号、多出来的一个字节,或者一个同时充当查找键的字符串,就足以让游戏停下。

规则就这么多。找到你的引擎,读那一条,然后往下翻。

  • RPG Maker MV/MZ — 没有结构性风险:JSON 和 CSV 都会转义,而且只提供固定的一组事件指令。唯一实际的风险是某些插件用完全相等的方式匹配说话人姓名,而导出会连那个插件的配置键一起改写。
  • Ren'Py — 几乎没有。源码从不被改写,所以一个同时充当逻辑键的字符串是安全的。
  • Unreal Engine — 我们没见过任何行级别的故障:.locres 里的字符串在设计上就是显示文本。这里的风险是文字缺失,而不是打不开的版本。
  • Unity — 严重且无声:场景名、变量键和回调,存放方式和对白一模一样。等着你的是无限加载、点了没反应的按钮,或者一片漆黑。
  • Godot — 严重。节点路径、StringName 和 res:// 引用就是引擎查找用的地址;写回时会直接拒绝它们。
  • Wolf RPG — 这里最脆弱的格式。一个字节的偏移就会让整条流失步,进程在窗口出现之前就中止了。
  • Kirikiri / KAG — 严重:方括号是语法,存储名就是文件名。翻译了标签名、转换了括号、翻译了图片文件名,每一样都会让游戏当场停住。
  • Electron VN — 严重。把模板占位符写进 app.asar 里活着的 JavaScript,那是语法错误,而不是一句翻得不好的话。
  • TyranoBuilder / TyranoScript — 和 Kirikiri 同宗:KAG 标签属于标记,所以翻译标签等于改语法。行内的角色引用永远不会被改写。
  • NScripter — 严重而且独此一家:?、% 和 $ 是变量前缀,落单一个就是语法错误。
  • YU-RIS — 严重,因为这个格式所谓的字符串里有很大一部分其实是操作数。把两者分开之后,某个游戏的有效行数从 40,678 降到 8,914,而且没有丢失任何对白。

其他引擎在引擎里各有自己的页面和指南。

杀死一个游戏的三行字

RuneTranslate 里的每一条排除规则,都是用一个再也打不开的游戏换来的。这三条都已经修好了。每一次,出问题的那一行看上去都完全合理,导出也是一路绿灯。

Godot:游戏凭空造出一个角色。 有一行写着 Warning: the door is locked。完美的英语。Dialogic 会转义存储文本里的每一个冒号,因为没转义的冒号正是它切出说话人姓名的方式。原样写回之后,这句话被重新解析成一个名叫 Warning 的角色在说 the door is locked,插件也就老老实实地把这个角色建了出来。

Kirikiri:游戏去找一个叫 `End` 的文件。 一个按钮的标签里同时带着图片文件名和跳转标签,而遮罩处理跨不过一个自身含有括号的标签,于是两者都暴露出来被翻译了。现在的扫描器懂括号了:它在配对的括号处收尾,嵌套的表达式留在标签内部,而普通标签仍然在它的第一个 ] 处结束。

RPG Maker:一张立绘悄悄消失。 某个立绘插件靠把说话人姓名逐字母地和它自己配置里的表比对,来挑选角色的图像。翻译姓名是对的;不去动那份配置也是对的,因为里面全是资源键。两件对的事凑在一起,等号不成立了,这个角色的立绘就此消失,日志里什么都没留下。

三次导出都报告成功。干净的导出不能证明游戏能跑,在任何引擎上都不能。 唯一的证据是把它启动起来。

当问题根本不在你的行上

对半切找不到这些情况,因为没有哪一半能跑起来:问题在于导出落到了什么地方。Wolf RPG 的游戏会先读自己的 .wolf 压缩包,再看旁边散放的文件,于是有一部游戏照常显示标题画面,而翻译好的数据就躺在硬盘上没人读。Unity 的 Addressables 会拒绝字节与校验和对不上的包,然后给你一片漆黑,任何日志里都没有记录。打包过的 RPG Maker 游戏会无视放在可执行文件旁边的数据文件。这三种现在都已处理,所以交付层面的失败值得反馈,而不值得去追查。

有没有什么标记能看出哪些行是对白?

没有。谁说有,你都该留个心眼。

曾经有位用户告诉我们,他找到一款 Godot 游戏把每一句对白都用 || 包起来,他只翻译了这些,游戏跑得好好的。对那款游戏来说确实管用。但那是某一个开发者的习惯,不是 Godot 的约定,下一款游戏会换成别的做法。

反例来自 YU-RIS。在某个游戏里,反引号那一路存着整张界面字符串表,692 行里有 687 行是显示文本——可反引号在那里依然什么都不代表。三种引号编译出来是同一个东西,所以建立在分隔符上的规则会把真正的正文也标红。值放在哪里,告诉了你一切;它被什么引号包着,什么也没告诉你。

请依靠位置和形态,而这两样都让游戏自己来教你。启动它,读屏幕上出现的第一句对白,然后在编辑器里找到那一行:它所在的文件、它所在的分组、它前后的邻居,就是这款游戏里对白该有的样子。凡是待在别处的,都有可能不是对白。

应用能标出什么,又无从知道什么

RuneTranslate 会把它认为是代码、资源路径或标识符的行标记为已排除。这些行不会被隐藏,而是继续显示,在显示已排除项开关后面染成橙色,好让你看清它的判断,也可以用仍然翻译强制处理任何一行。你还可以添加自己的规则。

如果你选中了已排除的行再开始一次运行,它会停下来询问:「你选择的 340 行中有 12 行被排除——被你的筛选规则标记,或者被 RuneTranslate 判定为代码、资源路径或 ID。翻译它们可能会弄坏游戏。跳过会让它们保持排除状态。翻译它们则会在以后的运行中也一并纳入。」

点过去没关系。只要记得你点过,因为一旦导出的版本打不开,那就是第一个该回头看的地方。

一个诚实的局限:排除只是对某个字符串的猜测,所以它无从知道你游戏里的某句话,同时还是随游戏附带的某个插件里的查找键。如果游戏的源语言本来就是英语,保护会更少,因为最有力的那批筛选靠的正是「这个字符串里有没有源语言的文字」。

常见问题

为什么翻译之后游戏就打不开了?

几乎总是因为你翻译的某一行其实是标识符、路径、场景名,或者游戏按完全相等比对的标记。改动它会弄坏解析,或者弄坏查找。

怎么找出是哪一行翻译弄坏了游戏?

对半切。重置所有翻译,翻译一半,导出到空文件夹,运行。失败的那一半里就有那一行;把它再切一半,如此重复。一百行需要六到七轮,五千行大约十三轮。

翻译后的游戏一开就关,这说明什么?

启动过程中出现了致命错误。在 Kirikiri、Electron 视觉小说和 NScripter 上,通常是语法错误:某个括号、引号或占位符被翻译了或者弄丢了。在 Wolf RPG 和 YU-RIS 上,则是数据流失步。

为什么翻译后的游戏打开是一片黑屏?

多半是某次加载在吞掉异常的代码里失败了;在 Unity 上,则是某个包的校验和不再匹配目录里的记录。试着做一个只翻译了一行无害文字的版本:如果它也是黑屏,问题出在交付上,而不在任何一行。

翻译后的游戏卡在加载画面,是翻译的问题吗?

在 Unity 上很可能是。无限加载正是场景名或变量键被翻译后的典型症状:游戏在等一个已经对不上的名字,而且什么错误都不会抛出。

哪些行绝对不该翻译?

凡是游戏靠完全相等的字符串来解析的东西:路径、场景名和节点名、变量名和事件名、语言代码,以及任何长得像 snake_case 或 res:// 的东西。如果你想象不出玩家会在屏幕上读到它,那就别动。

游戏能跑,但文字是方块或问号,这是同一个问题吗?

不是。整齐的方块意味着字体里没有这些字符的字形;真正的问号意味着它们在写文件时就丢了。两者都是字体或编码问题,解决办法各不相同。

接下来看什么

你是要开始一次翻译,而不是修一次翻译?如何制作翻译补丁把整个流程都讲了。

找到那一行之后:让它保持原文,把它周围的内容都翻译好,导出到一个全新的空文件夹,然后运行。一个没翻译的标识符,对玩家来说没有任何损失。

相关阅读
01

如何制作汉化补丁

patchsharingtutorialworkflow2026年8月18日 · 9 分钟
阅读 →
02

XUnity.AutoTranslator 不翻译怎么办

unityxunity-autotranslatortroubleshooting2026年8月18日 · 9 分钟
阅读 →
03

翻译后的文字为什么显示成方块

unitytextmeshprofontstroubleshooting2026年8月18日 · 9 分钟
阅读 →

准备好试用 RuneTranslate 了吗?

免费版即可解锁全部引擎 + 全部翻译服务商。支持者($3/mo)解锁全速翻译。

下载 Windows 版