三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Unity游戏自动翻译插件 XUnity.AutoTranslator:四步走完从安装到精通

Unity游戏自动翻译插件 XUnity.AutoTranslator:四步走完从安装到精通

Unity游戏自动翻译插件 XUnity.AutoTranslator:四步走完从安装到精通

【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

如果你的游戏库里躺着几款只有日文或英文的 Unity 游戏,那你多半需要一件东西:自动翻译插件。XUnity.AutoTranslator 就是这样一款开源工具——装上它,游戏里的对话、菜单、物品说明会被实时替换成你设定的语言;觉得机器翻译不够味,还能用它的手动翻译体系把质量打磨到接近精翻的水平。这篇文章按我实际折腾下来的路径,分四步带你把它吃透。

事情要从一款"看不懂"的游戏说起

上个月我想重温一款老视觉小说,官方只有日文版。装完一启动,满屏假名,连"保存/读取"都认不出。翻遍设置找语言选项,没有;去问汉化组,坑位早排满了。

最后让我把游戏玩下去的,就是 XUnity.AutoTranslator。它的定位很纯粹:

  • 自动翻译:把游戏中出现的文本发给在线翻译服务,拿到结果立刻替换显示,全程无需退出游戏
  • 手动翻译:每次翻译结果都会落到本地文本文件里,你可以直接编辑,改完按个键就生效
  • 深度扩展:支持正则表达式批量翻译、图片替换、资源重定向,这些后面会一一讲到

也就是说,它不只是"临时救急",更像是一套完整的游戏本地化工具箱。

安装之前,先回答三个问题

别急着下载。花两分钟想清楚下面三件事,能帮你少走一半弯路。

问题一:你装过插件管理器吗?

XUnity.AutoTranslator 可以独立运行,也可以挂在主流模组框架下。如果你已经在用 BepInEx、MelonLoader、IPA 或 UnityInjector 其中之一,就选对应的集成版;什么都没装过,就用自带 ReiPatcher 的独立安装包。

问题二:游戏是 Mono 还是 IL2CPP?

绝大多数 Unity 游戏是 Mono 架构,正常安装即可。少数新游戏用了 IL2CPP,需要配合 BepInEx 6 并使用单独的BepInEx-IL2CPP安装包。不确定的话,看游戏安装目录里有没有GameAssembly.dll——有就是 IL2CPP。

问题三:你图省事还是图折腾?

五种安装方式各有利弊,一张表看懂:

安装方式前置条件适合谁
ReiPatcher 独立版什么都不需要从没碰过模组的新手
BepInEx 插件版已装 BepInEx老模组玩家(项目方最推荐)
MelonLoader 版已装 MelonLoader用 Melon 生态的玩家
IPA 版已装 IPA特定游戏专用
UnityInjector 版已装 UnityInjector传统插件用户

这里有个容易踩的坑:如果你已经用了插件管理器,就不要再选 ReiPatcher 独立版,两套方案会互相打架。独立版的操作是最简单的——把压缩包解压到游戏根目录,运行SetupReiPatcherAndAutoTranslator.exe,之后用生成的"(Patch and Run)"快捷方式启动游戏即可。BepInEx 版则是把插件 DLL 放进BepInEx/plugins文件夹,启动游戏就完事。

第一次启动:只改三行配置就能用

第一次运行游戏后,插件会在游戏目录下生成AutoTranslator文件夹,里面躺着核心配置文件Config.ini。打开它,你只需要关心三行:

[Service] Endpoint=GoogleTranslate [General] Language=zh-CN FromLanguage=ja
  • Endpoint:用哪个翻译服务
  • Language:翻成什么语言(这里填zh-CN
  • FromLanguage:游戏原文是什么语言(日文游戏填ja

改完保存,重启游戏,翻译就开始工作了。

免费翻译服务怎么挑

内置翻译端点一长串,默认的GoogleTranslate就够用,不用注册、不用付费。其他免费选择还有:

  • BingTranslate:微软出品,无需密钥
  • DeepLTranslate:公认质量最高的免费端点之一
  • PapagoTranslate:韩语方向表现不错

要提醒的是:所有免认证的在线端点都有随时失效的风险,毕竟它们本质上是"蹭"公开网页服务。如果哪天翻译突然全部罢工,先怀疑端点挂了。

付费服务适合谁

重度用户或准备做长期汉化包的话,付费端点更稳:

  • DeepLTranslateLegitimate / BingTranslateLegitimate:官方 API,稳定且额度可观
  • BaiduTranslate:中日英互译效果好,注册后每月有免费额度
  • YandexTranslate / WatsonTranslate:各有免费额度,适合特定语言

另外配置里还有个FallbackEndpoint备用端点,主端点抽风时自动顶上,追求稳定可以填上。注意:所有 API 密钥千万别分享出去。

让游戏里每一段文字都被抓到

翻译没生效,八成不是服务的问题,而是文本压根没被"钩"到。

文本框架:能翻译哪些类型的文字

Unity 游戏的文字渲染方式五花八门,插件针对主流框架分别做了钩子,默认开了 UGUI、NGUI、TextMeshPro。但有两种默认是关闭的:

[TextFrameworks] EnableTextMesh=False ; 3D 空间漂浮的文字 EnableIMGUI=False ; 很多模组的设置菜单

如果你的游戏是视觉小说(TextMesh 常见)或装了一堆模组(IMGUI 常见),按需把它们打开。原则是只开游戏实际用到的,全开不会带来额外收益,反而拖累性能。

快捷键:翻译玩家的"遥控器"

日常使用最核心的就是下面这几个组合键:

快捷键作用
ALT + 0显示/隐藏翻译界面
ALT + T在原文和译文之间切换
ALT + R重新加载翻译文件(改完文件立刻生效)
ALT + U手动钩文本(默认钩子漏抓时补救)
ALT + F切换自定义字体(配了 OverrideFont 时)
ALT + Q插件因连续报错停机后手动重启

ALT + U是解决"某段文字没翻译"的第一招——它会把当前画面里的文本强制做一次查找,多数漏网之鱼都能捞回来。

卡壳了?按这个顺序排查

新手上路最怕问题,我把常见症状和处置办法整理成了清单,对号入座即可。

症状一:完全没翻译

按顺序查:插件有没有加载(看游戏日志)→Endpoint是否有效 → 语言配置对不对 → 文本框架有没有开 → 最后按ALT + U手动钩一次。95% 的情况在前四步就解决了。

症状二:翻译出来全是方框

这不是翻译坏了,是字体缺字。翻译成中文后,游戏自带的日文字体往往没有中文字形。解决办法是给插件指定一个中文字体:

[Behaviour] OverrideFont=你的字体.ttf ; UGUI 界面 FallbackFontTextMeshPro=字体路径 ; TextMeshPro 场景

很多汉化社区都发布过为这款插件打包好的字体文件,直接拿来用即可。

症状三:界面文字挤成一团

中文普遍比日文占地方,文本框装不下。插件默认开启了EnableUIResizing自动调整,如果还是挤,可以手动微调行距:

[Behaviour] ResizeUILineSpacingScale=0.80

进阶玩家还能通过resizer.txt文件按 UI 路径精确控制字号,比如把某个面板下所有文字缩小一半。

症状四:翻译后游戏操作错乱

个别游戏的逻辑依赖"用户看到的那行字"来判断,比如选项分支。翻译改了显示文本,游戏就认不出了。遇到这种,打开兼容模式即可:

[Behaviour] TextGetterCompatibilityMode=True

判断方法很简单:按ALT + T切回原文,功能恢复正常,就是需要这个模式。

把翻译质量握在自己手里

机器翻译再强也有翻车的时候,好在插件给了你一套完整的"人工修正"体系。

从自动生成的文件开始修改

游戏运行后,Translation\{语言}\Text目录下会出现_AutoGeneratedTranslations.txt,里面是插件自动翻译过的所有文本对。直接编辑它,按ALT + R立即生效。规则是:手动文件优先级永远高于自动生成文件,你可以把要修正的条目剪切到自己的文件里管理。

正则表达式:一行搞定"药水 I、药水 II"

游戏里大量文本是"名字 + 编号"的动态组合,逐条翻译累死人。正则一条解决:

r:"^シンプルリング ([0-9]+)$"=简约戒指 $1

r:开头的行会被当成正则处理,$1是捕获的编号,翻译后原样保留。

拆分正则:处理被拼在一起的文本

有些游戏把"编号 + 物品名"拼成一句显示,直接查字典永远匹配不上。用sr:拆分正则先把文本切开,各部分单独翻译再拼回去:

sr:"^([0-9]{2}) ([\S\s]+)$"=$1 $2

有了它,你只需要维护一行シンプルリング=简约戒指这样的基础翻译,所有带编号前缀的变体都能命中。

替换与作用域:老玩家的两个小技巧

  • 替换文件_Substitutions.txt):用来修正专有名词,比如人名总被机翻成怪名字,替换成统一译名。支持私は{{A}}=I am {{A}}这样的参数化写法
  • 插件专属翻译:在Text/Plugins/下按模组名建文件夹,放入该模组的专属译文,互不干扰
  • 作用域指令#set level 1,2,3可以把某些翻译限定在特定场景生效,避免翻译撞车

连图片都能换:纹理翻译与资源重定向

文字搞定后,还想更进一步的玩家可以看看这两个功能,它们默认关闭,按需开启。

纹理翻译:把游戏里的图也"汉化"

针对几乎没有模组支持的老游戏,插件可以把游戏用到的图片导出到本地(EnableTextureDumping=True),你用 PS 改完中文版再放回去(EnableTextureTranslation=True),游戏加载时会自动用你的图替换原图。文件名里的哈希值就是图片的"身份证",别删掉。

注意:这两个开关仅供本地使用,做汉化包分发时一定要关掉,否则会拖垮玩家电脑性能。

资源重定向:不碰游戏文件也能改资源

插件内置的 Resource Redirector 模块能把TextAsset等资源"拦下来"落到磁盘,让你直接修改文本资源而无需改动游戏本体文件。适合大型汉化项目——同一套汉化可以适配多个游戏版本。

为什么它可以放心一直开着

用免费端点最怕被封,这也是这个插件设计得最用心的地方。它内置了一整套防滥用机制:

  • 文本出现后先等 1 秒,确认不再变化才发起翻译,避免重复请求
  • 同一时间只发一个请求,绝不对服务端并发轰炸
  • 单次会话最多翻译 8000 段文本,超了自动停止
  • 所有结果同时缓存到内存和磁盘,同一句原文永远不会翻译两次
  • 检测到异常刷屏(比如文本每帧都在变)时,插件会自动停机保护

对你来说,这意味着免费端点能用得更久,流量也花得明明白白。

爱折腾的看这里:从使用者到开发者

如果普通玩法满足不了你,插件还留了三扇门:

接自己的翻译服务:用CustomTranslate端点指向任意 HTTP 接口,只需实现"传 from/to/text、返回译文"的规范,就能把自建翻译服务接进来。

用上大模型翻译:社区有 LlmTranslators 这类第三方端点,可以把 OpenAI 或本地 Ollama 接进来,翻译质量直逼人工。

自己写端点:实现一个ITranslateEndpoint接口,编译出的 DLL 丢进Translators文件夹即可。官方文档给了完整的开发示例,从零到能用不过几十行代码。想深入学习,可以用下面的命令把源码拉下来研究:

git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

顺带一提,如果你自己写模组,把含文本的 GameObject 命名为带XUAIGNORE的名字,就能让 AutoTranslator 自动跳过它,避免翻译冲突。

现在该做什么

按这个顺序走,你今晚就能玩上中文版的游戏:

  1. 确认游戏架构和你现有的模组环境,选定安装方式
  2. 解压安装,启动游戏,等Config.ini自动生成
  3. 改好EndpointLanguageFromLanguage三行配置,重启游戏
  4. 遇到漏翻按ALT + U,改完翻译文件按ALT + R
  5. 进阶需求再回头看正则、纹理和资源重定向

卡住了也别慌:项目仓库的 README 写得非常详尽,每个配置项都有注释;社区里积累了大量字体包和汉化讨论,搜"XUnity.AutoTranslator"就能找到组织。最后再叮嘱一句——免费端点随时可能失效,API 密钥永远不要外传。祝你顺利玩上母语游戏!

【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表