游戏翻译工具实战:7个步骤让外语游戏实现实时汉化
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
想不装汉化补丁就把日文、英文游戏实时换成中文?XUnity.AutoTranslator 正是一款面向 Unity 引擎游戏的实时汉化工具,它能自动识别游戏画面里的文字并即时翻译回填,也支持手工维护译文。这份指南按"装前弄懂→动手安装→首次验证→调优提速→手工救场"的推进顺序,用 7 个可操作的步骤带新手走完全流程。
第一步:先弄懂它"实时"在哪里
很多人误以为这类工具是"截图翻译",其实它的工作方式完全不同。它做的是文本捕获(Text Hooking):在游戏运行时挂钩(Hook)文字组件的读写方法,把显示前的原始字符串截下来,交给翻译流程处理,再把结果写回去。整个过程发生在内存里,不修改游戏本体文件。
一次完整的翻译请求会走这样的流水线:
| 环节 | 发生什么 | 备注 |
|---|---|---|
| 捕获 | 拦截 UI 文字组件的赋值动作 | 支持 UGUI、NGUI、TextMeshPro、TextMesh、IMGUI 等 |
| 查缓存 | 先在本地已翻译词条里查找 | 命中则直接显示,不发网络请求 |
| 翻译 | 未命中则发给在线翻译端点 | 端点就是各翻译服务的插件 |
| 回填 | 把译文写回文字组件 | 可附带字号、换行等调整 |
这里有两个术语需要先记住:**翻译端点(Translate Endpoint)**指接入的翻译服务,比如 Google、DeepL、百度;翻译缓存指本地保存的历史译文,同一句话只翻译一次。核心实现代码在src/XUnity.AutoTranslator.Plugin.Core/Hooks/与src/Translators/两个目录下,前者负责捕获文字,后者存放各翻译引擎的接入插件,有兴趣可以对照源码理解。
第二步:安装前先回答三个选择题
动手下载之前,先想清楚三件事,能省下后面一大半的折腾时间。
选择一:你的游戏用哪套 Mod 框架?
这个工具不绑定单一框架,官方支持多种挂载方式,默认推荐 BepInEx。对照下表挑一个:
| 挂载方式 | 适用场景 | 安装难度 |
|---|---|---|
| BepInEx | 绝大多数 Unity 游戏,社区生态最好 | 低 |
| MelonLoader | 部分采用 Melon 生态的游戏 | 低 |
| IPA | 特定游戏所需的框架 | 中 |
| UnityInjector | 老游戏或已有该环境 | 中 |
| ReiPatcher 独立安装 | 不想装任何 Mod 管理器时 | 低(但易与框架冲突) |
选择二:装哪个安装包?
发布包按挂载方式命名,例如XUnity.AutoTranslator-BepInEx-{版本号}.zip。选错了包,最常见的症状是启动游戏毫无反应。
选择三:装到哪个目录?
答案永远是游戏根目录,也就是游戏主程序 exe 所在的那一层。解压时不要把压缩包里的文件夹再嵌套一层,保证插件 dll 直接落进对应的BepInEx/plugins目录。
如果你想自己编译最新源码,可以 clone 仓库 https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 后用 Visual Studio 打开根目录的XUnity.AutoTranslator.sln构建,libs/目录下已备好各框架的依赖 dll。
第三步:以 BepInEx 为例,10 分钟完成部署
假设你的游戏是常见 Unity 引擎,按下面 4 步走,每一步都有明确的完成标志。
- 装好 BepInEx 本体:把 BepInEx 的压缩包解压到游戏根目录,先启动一次游戏再关闭,让框架生成必要的文件夹。✅ 完成标志:游戏根目录出现
BepInEx文件夹 - 放入翻译插件:下载
XUnity.AutoTranslator-BepInEx-{版本}.zip,解压后把其中所有文件覆盖进游戏根目录。✅ 完成标志:BepInEx/plugins/XUnity.AutoTranslator/目录下能看到XUnity.AutoTranslator.Plugin.Core.dll、XUnity.AutoTranslator.Plugin.BepInEx.dll、ExIni.dll等文件 - 启动游戏:正常双击游戏 exe。插件会在首次运行时自动生成配置文件
AutoTranslatorConfig.ini。✅ 完成标志:插件目录下出现这个 ini 文件 - 观察悬浮窗:游戏界面左上角应出现一个小窗口。✅ 完成标志:能看到窗口即挂载成功
如果第 3 步后什么都没生成,按"目录权限 → 杀毒软件拦截 → 框架版本是否匹配游戏"的顺序排查,这是出现频率最高的三个原因。
第四步:第一次启动后,用四个快捷键做体检
插件有一组全局快捷键,先记住最常用的四个:
| 快捷键 | 作用 | 适合场景 |
|---|---|---|
| ALT+0 | 开关翻译插件的控制面板 | 查看状态、切换端点 |
| ALT+T | 在译文与原文本之间切换 | 对比翻译效果 |
| ALT+R | 立即重载本地译文文件 | 改完文本文件后刷新 |
| ALT+U | 手动触发文字捕获 | 游戏默认没抓到的文字 |
体检流程建议:进游戏 → 找一个有文字的场景 → 按 ALT+T 看能否在原文本和译文间切换 → 切回译文后观察是否有明显漏译。如果大部分文字没反应,先别急着怀疑插件坏了,八成是下面第五步要讲的配置问题。
第五步:翻译引擎怎么选,决定译文质量上限
翻译端点存放在插件目录下的Translators/子文件夹里,每个服务对应一个 dll。内置端点分两类:
免注册直接用的:GoogleTranslate、BingTranslate、DeepLTranslate、PapagoTranslate。优点是不需要任何账号,缺点是这类免费通道不稳定,官方 README 也明确提示"随时可能失效"。
注册拿密钥(API Key)的:稳定性好、有免费额度,适合长期使用。
| 端点 | 要不要注册 | 免费额度参考 | 适合谁 |
|---|---|---|---|
| BaiduTranslate | 要(AppId+密钥) | 每月前 5 万字符 | 中日、中韩互译需求 |
| YandexTranslate | 要 | 每天 100 万字符 | 量大、多种语言 |
| LingoCloudTranslate | 要 | 每月 100 万字符 | 中日英三语场景 |
| BingTranslateLegitimate | 要 | 每月 200 万字符 | 微软系服务用户 |
| DeepLLegitimate | 要 | 每月 50 万字符 | 追求翻译文学性 |
选定后,打开AutoTranslatorConfig.ini,在[Service]段修改两行:
[Service] Endpoint=BaiduTranslate ; 主端点 FallbackEndpoint=GoogleTranslate ; 主端点失败时自动切换的备用端点对应各服务的密钥填在文件下方的独立小节里,例如百度的[Baidu]段要填BaiduAppId和BaiduAppSecret。所有端点插件的源码都可以在src/Translators/下找到,比如src/Translators/BaiduTranslate/、src/Translators/DeepLTranslate/。
第六步:想让翻译更快更稳,只动三个开关
新手最容易在配置文件里迷路,其实日常只需关注三个地方。
开关一:手动指定源语言
[General]段的FromLanguage默认是ja(日语),Language默认是en。要汉化就改成:
[General] FromLanguage=ja Language=zh-CN虽然部分端点支持FromLanguage=auto,但自动检测会明显拖慢速度、增加误判,能手动指定就别偷懒。
开关二:解决中文缺字
这是汉化到中文时几乎必遇的问题:游戏自带字体不含中文字形,译文显示成方块或空白。对策是在[Behaviour]段配置OverrideFont(UGUI 用)或FallbackFontTextMeshPro(TextMeshPro 用),指向一个包含中文字符的字体文件。这是"译文出来了但显示不全"时的第一排查项。
开关三:理解它的"防刷"逻辑,别催
插件内置了多道防滥用机制:同一句文本要等 1 秒无变化才会发起请求;同一时间只发一个请求;单次游戏会话最多 8000 次请求;连续失败会自动停摆。看到翻译"慢慢出"是正常现象,它是在主动保护你的端点额度。EnableBatching=True(批量合并请求)和内存+磁盘双缓存都能显著减少重复请求,保持默认即可。
第七步:自动翻译靠不住时,用手工词条救场
在线翻译难免有术语错误或剧情误译,好在这套工具把手写译文的口子留得很大。
自动翻译结果会实时写进Translation\{Lang}\Text\_AutoGeneratedTranslations.txt(Lang 指语言代码,如zh-CN)。你可以直接编辑这个文件,把错误词条改成你想要的样子,保存后按ALT+R立即生效,不用重启游戏。
想批量修正固定称谓,用替换文件_Substitutions.txt:
主人公=主角想处理带数字的道具名这类动态文本,可以用正则词条。标准正则以r:开头:
r:"^シンプルリング ([0-9]+)$"=Simple Ring $1分割正则以sr:开头,把组合文本拆开翻译再拼回:
sr:"^([0-9]{2}) ([\S\s]+)$"=$1 $2需要说明优先级:手工词条(包括替换文件里的)永远优先于自动生成文件里的译文。这一整套手工机制对应的文件模板,可以从src/XUnity.AutoTranslator.Plugin.Core/下的加载逻辑里看到完整的读取顺序。
三个新手最常踩的坑
坑一:部分文本框架默认是关的
EnableIMGUI和EnableTextMesh默认是False。如果发现游戏里某些窗口(尤其是 Mod 自带 UI)永远不翻译,多半就是这个原因。改成True前要有心理准备:IMGUI 文本容易被频繁捕获,属于"能开但别乱开"的选项。
坑二:IL2CPP 版功能有缩水
对 IL2CPP 编译的游戏(Unity 2019.2 以后很多新作如此),插件支持并不完整:部分文字变化检测不到、IMGUI 不支持。判断依据是发布包名是否带-IL2CPP后缀,选错版本会直接装不上。
坑三:把免费端点当长期饭票
不注册的免费端点(Google、Bing、DeepL 等)随时可能因服务方改版而失效,这是 README 里反复强调的现实。追求稳定就把主端点换成带密钥的服务,并顺手配置FallbackEndpoint兜底。
上手核对清单
照着这张清单走一遍,能覆盖 90% 的新手问题:
- 挂载框架与游戏匹配,插件 dll 在正确目录
- 首次启动后生成了
AutoTranslatorConfig.ini FromLanguage已手动指定,Language已改为zh-CN- 主端点已选定,需要密钥的已填入对应小节
- 中文出现方块字时已配置
OverrideFont或FallbackFontTextMeshPro - 试过 ALT+T 切换、ALT+R 重载
- 确认
Translation\{Lang}\Text\下有自动生成译文文件,且手工词条优先级生效
完成这些之后,下一步建议读一读项目根目录README.md的 Configuration 章节,里面详细解释了空白处理、UI 自适应缩放、TextMeshPro 字体加载等进阶选项;想深入了解文本是怎么被查表和匹配的,可以看src/XUnity.AutoTranslator.Plugin.Core/Parsing/下的解析相关源码。从"能跑起来"到"翻得准",中间差的往往只是一份属于自己的术语表。
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考