XUnity Auto Translator 完整实战教程:十分钟把看不懂的 Unity 游戏变成中文版
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
先讲一个我自己的故事。很多年前我在 Steam 上淘到一款口碑极佳的日式 RPG,下载安装一气呵成,结果进游戏三分钟就傻眼了——满屏片假名,选项全靠蒙,剧情全靠脑补,那款游戏从此在我的库里吃灰。直到后来我遇到了XUnity Auto Translator,一个专门解决Unity 游戏汉化难题的实时翻译插件,能在游戏运行时自动把对话、菜单、道具说明翻译成你指定的语言。我库里那些"看得见玩不动"的外语游戏,就这样一个个活了过来。
这篇文章我不打算按说明书讲,而是用带路的方式,把从安装、配置、调优到翻车自救的完整路径给你捋一遍。全程不需要编程基础,跟着走就行。
动手前先搞清楚:你的游戏用的是哪种插件框架
很多人卡在第一步,不是因为难,而是下载错了安装包。XUnity Auto Translator 提供了好几个版本,分别对应不同的游戏插件框架,选错了装上去就是没反应。
怎么判断?其实很简单,先打开你的游戏根目录看一眼:
- 目录里已经有
BepInEx文件夹(或者你本来就装过 BepInEx 打其他 mod)→ 选BepInEx 版,这也是官方最推荐的方案,兼容性最好; - 有
MelonLoader文件夹 → 选MelonMod 版,现代 Unity 游戏很常见; - 游戏走的是 IPA 框架 → 选IPA 版;
- 以上都看不出来、或者游戏根本没有 mod 框架 → 直接用ReiPatcher 独立版,这个版本自带补丁器,不依赖任何框架,两下点击就能用,是"不知道装哪个"时的兜底方案。
顺带提醒一句:如果游戏里已经装了某种插件管理器,就别再用独立版去补丁它,两套机制打架容易出问题。一句话总结就是——有框架就匹配框架,没框架就独立版。
从解压到看到中文:十分钟跑通的最小路径
以最常用的 BepInEx 版为例,完整流程是这样的。
先从项目仓库的 Releases 页面下载XUnity.AutoTranslator-BepInEx-版本号.zip这个包,把压缩包直接解压到游戏根目录。注意是"直接解压",解压后 dll 文件会自动落到BepInEx/plugins下面,不用你手动搬。然后正常启动游戏,等几秒钟,插件会完成两件事:挂钩游戏的文本组件,并在BepInEx/config/下自动生成配置文件AutoTranslatorConfig.ini。
第一次启动先别急着玩,打开这个配置文件,改两个最要紧的值:
[General] Language=zh-CN ; 目标语言:简体中文 FromLanguage=ja ; 源语言:日语,改成你游戏的实际语言保存后重启游戏,进入游戏随便点几个菜单、看几句对话——如果文字变成中文了,恭喜你,十分钟目标达成。
如果你用的是 ReiPatcher 独立版,流程也差不多:解压到游戏根目录后,运行SetupReiPatcherAndAutoTranslator.exe,然后从生成的"{游戏名} (Patch and Run).lnk"快捷方式启动游戏,之后就能直接点原 exe 玩了。
跑通之后,有几个热键你一定要记住,它们是验证和调试的好帮手:
- ALT+0:打开/关闭自动翻译的设置界面(注意是数字 0,不是字母 O);
- ALT+T:在"原文"和"译文"之间一键切换,验证翻译是否生效就靠它;
- ALT+R:立刻重载翻译文件,你手动改完翻译文本不用重启游戏;
- ALT+U:手动挂钩。有些文本默认钩子没抓到,按一下它会主动去抓一遍;
- ALT+F:当你配置了自定义字体时,用它切换字体看效果;
- ALT+Q:插件因为连续报错而自我保护停机后,用它重启插件。
让中文正常显示:字体与 UI 的三个关键设置
跑通翻译只是第一步,很多游戏接着会给你一记闷棍——中文变成一排排小方块(□□□)。原因很简单:游戏自带的字体文件里压根没有中文字形,翻译结果写进去了,但显示不出来。
解决办法有三个层次,从简单到讲究:
第一,先把FromLanguage设成游戏的实际语言,比如日语就写ja。虽然有些引擎支持auto自动检测,但自动检测偶尔会误判,明确指定能让翻译命中率更高,这是性价比最高的一步。
第二,处理字体。对 UGUI 文本,配置OverrideFont指定一个中文字体文件;对 TextMeshPro 文本,更推荐用FallbackFontTextMeshPro——它只做"缺字回退",不影响游戏原有字体风格:
[Behaviour] OverrideFont=MyChineseFont.ttf ; UGUI 文本强制换字体 FallbackFontTextMeshPro=Fonts/LiberationSans SDF ; TMP 文本缺字回退第三,解决"译文太长被截断"的问题。日文原文一般很短,翻成中文后经常变长,超出文本框就显示不全。插件默认开启EnableUIResizing=True,会自动调整文本溢出模式;如果个别界面还是挤,可以配合ForceSplitTextAfterCharacters强制按字符数换行,别让一句长台词憋死在一个窄框里。
翻译引擎怎么选:免费额度与稳定性,一次说清
翻译质量这件事,七分看引擎,三分看配置。XUnity Auto Translator 内置了一堆翻译端点(Endpoint),它们本质上是给插件插拔的"翻译服务驱动",放在Translators子文件夹里。按使用门槛大致分三类:
免登录、零成本型:Google、Bing、DeepL、Papago 这些在线翻译服务都有对应的内置端点,不用注册不用 key,配置里填个名字就能用。其中 DeepL 的译文质量口碑最好,Google 最通用但偶尔不稳定。
注册拿免费额度型:这类需要你去服务商官网注册一个 API key,但免费额度通常够个人用了。比如 DeepL 官方 API 每月免费 50 万字符,Azure 翻译(对应 BingLegitimate)每月 200 万字符,Yandex 每天 100 万,百度、彩云云译(灵云)认证后每月也有 100 万左右。这类端点最大的好处是稳定,不怕被限流,适合长期使用。需要注意:API key 是你的私人凭证,千万别随手发到群里。
本地软件型:比如 ezTrans XP、LEC 的 Power Translator,需要本机装了对应软件,好处是翻译不走网络、没有额度概念。
配置方式就是在[Service]段指定端点,还可以配一个备胎:
[Service] Endpoint=DeepLTranslate FallbackEndpoint=GoogleTranslateFallbackEndpoint的意思是:主端点某次翻译失败时,自动用备胎顶上去,避免一句话翻不出来。
这里插一句原理科普:为什么插件有时候会"自己停机"?因为它的防滥用机制非常严格——同时只发一个翻译请求、每遇到新文本先等 1 秒确认文本不再变化、单个游戏会话最多发 8000 次请求、连续 5 次无结果或队列积压到 4000 条就直接自我保护式关闭。这是为了保护你的 API 额度、也避免游戏把免费服务打爆。真遇到停机了,先检查网络和 key,确认问题解决后按ALT+Q重启插件即可。
从"能看"到"好看":手动校对、词典与正则的用法
机翻毕竟是机翻,专有名词、人名地名经常翻得离谱。好消息是,这个插件把"人工修正"的入口留得明明白白。
插件会自动把所有翻译结果写进Translation\zh-CN\Text\_AutoGeneratedTranslations.txt这个文件里,格式就是一行"原文=译文"。你直接在里面改,比如把"魔王"改回你喜欢的译名,保存后按ALT+R立刻生效,连游戏都不用重启。更讲究一点的做法是,把想固定的词条从自动生成文件里剪切出来,放到Text目录下你自己的.txt文件里——自动生成的文件优先级永远最低,这样你手动维护的词条永远优先于机器翻译。
还有两个更强大的"预处理"文件值得知道:
一是_Substitutions.txt替换词典,在翻译请求发出去之前先把原文里的词替换掉,适合固定人名地名的译法,还支持参数化写法:
私は{{A}}=I am {{A}}二是翻译文件支持正则,适合处理带数字、带格式的文本。标准正则用r:开头:
r:"^アイテム ([0-9]+)$"=物品 $1分割器正则用sr:开头,能把一段拼在一起的文本拆开分别翻译再拼回去,比如游戏把"编号+物品名"拼在一行显示的情况:
sr:"^([0-9]{2}) ([\S\s]+)$"=$1 $2小提示:正则可以放在Text目录下任何手动的.txt文件里,但千万不要放进_开头的自动生成文件,那里不生效。正则这东西好使但别滥用,规则越复杂性能损耗越大,够用就行。
进阶玩法:作用域、图片汉化和几个隐藏开关
如果你已经玩转了上面的内容,下面这几个进阶功能能让你的汉化体验再上一个台阶。
翻译作用域。同一份翻译文件可能被多个场景、多个 exe 共用,容易互相污染。翻译文件支持指令限定作用范围,前提是先在配置里打开开关:
[Behaviour] EnableTranslationScoping=True然后在翻译文件里写:
#set level 1,2,3 ; 只在这些场景ID下生效 #set exe game1,game2 ; 只在指定的exe下生效 #unset level 4 ; 在场景4下禁用多语言版本的游戏还可以用{GameExeName}占位符把翻译目录按 exe 分开,互不干扰。
图片汉化(纹理翻译)。有些游戏的 UI 图片里直接嵌着文字,文本翻译管不到它。插件提供了一套纹理替换流程:先开EnableTextureDumping=True,启动游戏后插件会把游戏里能识别的图片全部导出到Translation\zh-CN\Texture目录,文件名末尾带着一段[hash]标识;你用 PS 或画图把图里的日文涂掉改成中文,文件名和 hash 千万别动;最后把EnableTextureDumping关掉、打开EnableTextureTranslation=True,再进游戏,图片就被替换掉了。注意纹理导出的性能开销不小,改完图记得把 Dumping 关掉。
字体局部微调。想针对某个界面单独缩小字号?在Text目录放一个以resizer.txt结尾的文件,写上行路径和命令:
CharaCustom/CustomControl/CanvasDraw=ChangeFontSizeByPercentage(0.5)意思是把这个路径下的所有文本字号缩到原来的 50%。类似的命令还有ChangeFontSize(16)、TMP_Alignment(...)等,UGUI 和 TextMeshPro 各有对应的控制命令。
给 mod 单独做翻译。想给某个 mod 的界面配专属翻译?在Translation\zh-CN\Text\Plugins\下建一个以该 mod 的 dll 文件名命名的文件夹,把翻译文件放进去,再在第一行写#enable fallback允许回退到通用翻译即可。
翻车自救:高频问题的排查清单
玩汉化出问题太正常了,我把自己踩过的坑按频率排个序,你按着顺序查:
- 完全没翻译:先按 ALT+0 看看设置界面是否正常弹出;再确认配置里
Endpoint没被清空、Language是否写对;还不行就按 ALT+U 手动挂钩一次。 - 大部分翻了,个别界面没翻:九成是文本框架没开。IMGUI 和 TextMesh 默认是关闭的,打开配置文件把
EnableIMGUI=True、EnableTextMesh=True试试。 - 翻译后游戏逻辑错乱或闪退:有些游戏会根据屏幕上显示的文字做逻辑判断,一看是译文就懵了。把
TextGetterCompatibilityMode=True打开,让游戏以为它看到的还是原文。 - 插件莫名停机:参考前面说的防滥用机制,多半是网络不稳或请求超限。检查网络、确认 key 无误,ALT+Q 重启。
- 中文是方块:回到"字体与 UI"那一节,上字体配置。
- 翻译很慢、一句话半天才出来:这是正常的,插件故意"延迟 1 秒"确认文本不再滚动才发请求,宁可慢一点也不重复请求。长文本可以调低
MaxCharactersPerTranslation让插件别去碰超长文本。
开发者彩蛋:给你的插件也接上翻译
如果你是 mod 作者,XUnity Auto Translator 还留了几个正式的扩展口,篇幅所限只点一下。
想在你自己写的插件里查询翻译,两行代码的事:
if (AutoTranslator.Default.TryTranslate("おはよう", out string translation)) { // 用翻译结果 }想接一个自己的翻译服务,既可以用CustomTranslate端点指向任意符合规范的 HTTP 接口(GET 请求带from、to、text参数,返回纯文本结果),也可以实现ITranslateEndpoint接口,编译成 dll 丢进Translators文件夹就自动被识别。项目里src/XUnity.AutoTranslator.Plugin.Core目录下的代码结构很清晰,想深度定制的可以照着源码研究。
下一步,就是现在
至此,从判断框架、完成安装、配置语言、挑选引擎,到手动校对、图片汉化、问题排查,一条完整的路你已经走完了。剩下的就是动手:去项目仓库的 Releases 页面下载对应你游戏的安装包,照着本文走一遍,让那款吃灰的游戏重新亮起来。
想研究源码、或者以后想给这个插件提点改进的,把仓库克隆下来慢慢看:
git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator好的翻译配置是成功的一半,但另一半永远是:现在就打开那个游戏试一次。游戏愉快,翻译无忧。
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考