给Unity游戏请一位“同声翻译“:XUnity.AutoTranslator游戏翻译10分钟上手指南 给Unity游戏请一位同声翻译XUnity.AutoTranslator游戏翻译10分钟上手指南【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator还在为日语、英语Unity游戏里的剧情对话发愁吗XUnity.AutoTranslator是一款开源的Unity游戏自动翻译插件能在游戏运行的同时实时翻译对话与菜单把啃生肉变成听母语。无论你是普通玩家还是模组爱好者10分钟就能让它跑起来。那个什么都好就是看不懂的时刻很多好游戏死在了语言门槛上。你心心念念下载了一款Unity引擎的日系RPG开场动画很惊艳但角色一张嘴你只认识零星几个汉字想玩某个英语视觉小说生词多到查词典比玩游戏还久更难受的是很多小众作品压根没有汉化组接手等汉化 遥遥无期。于是你试过这些土办法截图翻译一段对话截三次屏翻完上一句下一句已经过去了手忙脚乱网页机翻把剧情复制出来粘进去翻译结果比原文还难懂打汉化补丁版本一更新补丁立刻失效还得重新等。如果你也经历过这些这篇就是为你写的。XUnity.AutoTranslator的思路完全不同与其翻译给你看不如让游戏直接说你的语言。它像是给游戏请了一位同声翻译——游戏说一句它翻一句而且第一遍翻过之后还会记住之后越玩越快。它不是翻译器而是一条翻译管道很多人第一次听到自动翻译插件第一反应是这不就是个套了翻译接口的壳吗。如果只是把文本丢给翻译服务再读回来那确实没什么了不起。XUnity.AutoTranslator真正值得玩味的地方在于它把翻译做成了一条完整的管道而不是一个孤立的动作钩子Hook在游戏把文本写到屏幕的那一刻拦截住它——UGUI、NGUI、TextMeshPro、TextMesh、IMGUI 等常见文本框架都在覆盖范围内查缓存先翻本地翻译文件命中了直接显示这一步根本不上网调端点缓存没命中才把文本交给翻译服务Google、Bing、DeepL、百度等任选其一回填存档译文写回游戏界面同时存进本地文件下次同样的句子秒出。【示意图XUnity.AutoTranslator的翻译数据流——游戏文本出现→钩子拦截→查询本地翻译缓存→未命中则请求翻译端点→译文回填显示并写入缓存】把这条管道和另外两条主流路线放在一起对比差异就很明显了方案实时性对游戏版本网络依赖可定制性截图OCR翻译差边玩边切无要求强几乎没有替换式汉化补丁好强依赖版本一更新就失效无低只能等汉化组XUnity.AutoTranslator好弱依赖通吃大部分Unity游戏仅首次翻译高可手动精修它经久不衰的秘密就藏在这里它不修改游戏文件只是接住文本。所以游戏升级、换版本之后它通常还能继续工作这是替换式补丁做不到的。10分钟跑通第一次翻译先别碰高级设置。我们的目标很朴素在10分钟内看到游戏里的日文变成中文。姿势一ReiPatcher独立安装新手最省事如果你不想折腾任何mod管理器选这条路从发布页下载XUnity.AutoTranslator-ReiPatcher-{版本}.zip解压到游戏根目录让SetupReiPatcherAndAutoTranslator.exe和游戏exe躺在一起双击运行这个exeReiPatcher会自动完成补丁装配用生成的游戏名 (Patch and Run)快捷方式启动游戏之后直接点游戏exe启动即可。整个过程不需要预装任何东西这是让插件跑起来的最短路径。姿势二BepInEx插件方式功能最全推荐如果游戏本来就在用BepInEx那就更简单了下载XUnity.AutoTranslator-BepInEx-{版本}.zip解压到游戏目录让DLL落进BepInEx/plugins/XUnity.AutoTranslator/正常启动游戏。首次启动后插件会在游戏根目录生成一个AutoTranslator文件夹这就是它的工作台游戏根目录/ └── AutoTranslator/ ├── Config.ini ← 所有配置都在这 └── Translation/ └── zh-CN/ └── Text/ ← 翻译文件都在这打开Config.ini只需要改两个最关键的地方[General] Languagezh-CN ; 目标语言简体中文 FromLanguageja ; 游戏原文是日语保存、重启游戏。如果日语对话开始变成中文恭喜管道通了。按ALT0随时开关翻译界面按ALTT对比原文和译文。实用技巧第一次运行别急着调一堆参数先让默认配置跑一局观察哪些文本没翻译、哪里卡顿再对症下药——盲目开满所有选项反而会引入新问题。如果你是想从源码自己构建比如想改翻译逻辑、研究实现克隆仓库的命令是git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator翻译质量三件套语言、端点、框架开关跑通之后下一个问题几乎是必然的为什么有的句子翻得像样有的句子像机翻灾难现场排除游戏文本本身写得太碎的极端情况绝大多数质量问题的根源只有三个我们一个一个治。第一件语言对别偷懒用 autoFromLanguageauto看起来很智能但自动识别偶尔会翻车——尤其当文本里混着片假名、英文缩写时。能明确就明确游戏原文是什么语言就填什么[General] Languagezh-CN FromLanguageja第二件端点不是越贵越好是越合身越好翻译质量的大头其实在端点选择。插件内置了十几种翻译服务大致分三类类型代表端点特点免费无认证GoogleTranslate、BingTranslate、DeepLTranslate、Papago即开即用但服务随时可能变化需密钥BaiduTranslate、Yandex、GoogleTranslateLegitimate、BingLegitimate稳定、有免费额度适合长期用本地/自建ezTransXP、CustomTranslate离线可用或接入自己的翻译服务几点实打实的建议想省事先用默认的GoogleTranslate追求译文自然试试DeepLTranslate质量公认好免费无认证中文语境、有百度账号BaiduTranslate注册后有免费额度对中文翻译友好在意隐私、不想联网CustomTranslate可以指向你自己搭建的翻译服务。切换端点就一行配置[Service] EndpointDeepLTranslate实用技巧FallbackEndpoint可以配一个备胎端点——主端点某次翻译失败时自动顶上减少这句没翻出来的尴尬。第三件文本框架开关按需打开插件默认只开了一部分文本框架[TextFrameworks] EnableUGUITrue ; 默认开 EnableNGUITrue ; 默认开 EnableTextMeshProTrue ; 默认开 EnableTextMeshFalse ; 3D漂浮文字默认关 EnableIMGUIFalse ; 老式GUI/部分mod界面默认关默认关不是偷懒而是这些框架的文本更碎容易触发大量请求。如果游戏里有些文字始终不被翻译八成是框架没开mod的窗口界面没反应试试EnableIMGUITrue3D世界里的漂浮字幕没反应试试EnableTextMeshTrue。改完配置重启游戏再用ALTU手动触发一次钩子、ALTR重载翻译文件基本就能覆盖绝大多数漏网之鱼。让翻译记住你手动翻译与正则自动翻译是下限手动翻译才是上限。这也是XUnity.AutoTranslator和那些纯在线翻译工具最本质的区别你翻过的每一句插件都会存成文件而你可以在文件里直接改。自动生成的记忆本每次翻译成功后插件都会把原文译文追加到AutoTranslator/Translation/zh-CN/Text/_AutoGeneratedTranslations.txt这个文件有三大用途第二次运行免联网——同样的文本直接命中本地缓存翻译速度起飞随时人工修正——把某一行的译文改掉按ALTR立刻生效变成你的私有词典——人名、专有名词越攒越多翻译越来越懂你。手动翻译优先级更高的定制本直接改自动文件有个隐患下次生成时可能被覆盖。正确的姿势是——把想精修的条目剪切到自己的txt文件里放进同一个Text目录。手动文件的优先级高于自动生成文件插件会读取Text目录下所有txt文件甚至支持zip压缩包。【示意图翻译文件目录的分层结构——_AutoGeneratedTranslations.txt自动生成优先级最低、Manual目录下的UI.txt/Dialogues.txt/Items.txt手动精修、Plugins目录针对特定mod的翻译】正则对付动态文本的瑞士军刀游戏里总有名字数字这种不断变化的文本比如シンプルリング 001、シンプルリング 002逐条翻译会累死人。正则一行搞定r:^シンプルリング ([0-9])$Simple Ring $1r:前缀表示这是一条正则规则$1会把捕获到的数字原样放回译文。更进阶的是分割正则sr:前缀有些游戏会把好几段文本拼在一起再显示导致缓存永远查不中。用分割正则把文本拆开、各自翻译、再拼回去sr:^([0-9]{2}) ([\S\s])$$1 $2这样01 シンプルリング、02 シンプルリング都能复用同一条シンプルリングSimple Ring翻译一举解决同义不同串的查询问题。实用技巧正则虽强务必克制。放太多、写太宽的正则反而拖慢查询还可能误伤其他文本建议只对确实动态的文本用正则。相关实现可以在 src/XUnity.AutoTranslator.Plugin.Core/Parsing/ 里看到。免费端点凭什么能长期活着一套克制的防刷机制这一节是这个插件最值得敬佩、也最容易被忽略的地方。用在线翻译服务当端点本质是在蹭别人的服务。如果插件无脑狂刷请求用不了几天端点就会把你拉黑整个插件也会名声扫地。XUnity.AutoTranslator为此内置了一整套防刷策略——你可以把它理解为一位很懂礼貌的同声传译看到新文本先等1秒确认它不再变化才发起翻译请求防止滚动字幕刷屏同一时间只发一个请求绝不并发轰炸单次会话请求数有上限默认最多8000次单次默认不超过200字符每个句子只翻一次——内存缓存磁盘缓存双保险绝不重复问第二遍多个组件同时请求同一句翻译时合并成一个请求内置约2000条常用短语的静态词典日译英能本地解决的根本不发请求支持端点的批量翻译一次请求打包多句一旦检测到异常请求积压、连续无结果、反复刷屏主动停机宁可不用也不滥用。这些机制对你个人玩家意味着三件事省流量玩一晚上实际发出的翻译请求远比你想象的少更稳定不容易被端点封禁插件能长期工作越玩越快文本都是翻一次、记一辈子玩到后期基本秒翻。顺着这个思路性能调优其实就一句话让插件少干活。[Behaviour] MaxCharactersPerTranslation200 ; 超过200字符的文本直接跳过别硬翻 EnableBatchingTrue ; 批量翻译减少请求次数 UseStaticTranslationsTrue ; 启用内置静态词典少发请求新手最容易踩的五个坑附逃生路线下面五个坑基本每个新手都会至少踩中一个。我们用故事化的方式提前过一遍。坑1翻译出来了但屏幕上全是□□□症状中文显示成一排方块。原因游戏默认字体里没有中文字形中文直接查无此字。解药给文本组件指定一款中文字体。UGUI用OverrideFontTextMeshPro优先用FallbackFontTextMeshPro缺字才回退不影响原字体观感[Behaviour] OverrideFont你的中文字体.ttf FallbackFontTextMeshProFonts Materials/LiberationSans SDF实用技巧ALTF可以在覆盖字体和原字体之间即时切换用来对比显示效果很方便。坑2一翻译游戏逻辑就乱了症状翻完后游戏行为诡异——对话框选项点了没反应、NPC不再正常回应。原因有些游戏会读取当前显示的文字做逻辑判断比如屏幕上显示是就走分支A。翻译把文字改了游戏就认不出来了。解药打开兼容模式让游戏以为屏幕上的还是原文[Behaviour] TextGetterCompatibilityModeTrue判断是不是这个坑很简单按ALTT切回原文如果功能立刻恢复正常那就是它了。坑3多行文本翻得稀碎症状一段好好的对话翻译后被截断、语序错乱。原因很多翻译端点会把多行文本的每一行当作独立句子翻译一个换行符就能毁掉整句。解药让插件在翻译前忽略对话中的空白[Behaviour] IgnoreWhitespaceInDialogueTrue MinDialogueChars20 ; 超过20字符的文本按对话处理去掉空白再翻译坑4译文太长把界面撑爆了症状日文短句翻成中文后变长按钮文字溢出、重叠。原因中文比日文占地UI组件没预留空间。解药先打开默认的UI自适应再微调行距[Behaviour] EnableUIResizingTrue ResizeUILineSpacingScale0.80个别顽固组件还可以用resizer.txt精确控制——把指定路径下的所有文字缩小到50%CharaCustom/CustomControl/CanvasDrawChangeFontSizeByPercentage(0.5)坑5免费端点突然罢工症状刚开始翻译正常某天开始大面积失败。原因免费端点本身就是不稳定的服务方随时可能调整接口。解药按ALTQ重启插件如果它触发了防刷停机或者干脆换个端点。长期使用建议换成有密钥的端点百度、Yandex、彩云小译等都有免费额度再把FallbackEndpoint配上双保险。从会用到会做接下来的路到这里你已经不是一个只会点按钮的玩家了。按你的身份选一条路继续走如果你是普通玩家把快捷键刻进肌肉记忆——ALT0开关界面、ALTT对比原文、ALTR重载翻译、ALTU手动钩子、ALTF切换字体——然后安心享受游戏。如果你是翻译爱好者从手动翻译文件开始你的精修之路把专有名词统一、把关键剧情打磨自然然后整理成自己的翻译包分享给同好。手动翻译与文本处理的逻辑在 src/XUnity.AutoTranslator.Plugin.Core/Text/ 里都能找到对应实现。如果你是mod开发者这个插件为你留好了扩展位自定义翻译端点src/Translators/ 下每种端点一个工程照着现有代码写就行、查询翻译的公开API甚至可以让自己的mod界面主动标记不需要翻译——给GameObject名字加上XUAIGNORE即可。整套解析管道则集中在 src/XUnity.AutoTranslator.Plugin.Core/Parsing/。写在最后把一款游戏翻译成母语在过去意味着等待一个可能永远不会来的汉化组现在XUnity.AutoTranslator把这个过程压缩成了装插件→改两行配置→玩游戏。它并不神奇——翻译质量的上限最终取决于你为它积累了多少条精修译文。但它确实做到了一件了不起的事让语言障碍从一个无解的问题变成了一个可以动手解决的小事。现在就去启动那款搁置了很久的游戏吧。这一次不用再等别人了。【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考