Unity游戏自动翻译插件XUnity.AutoTranslator终极配置指南 1. 项目概述为什么我们需要一个游戏自动翻译神器如果你是一个喜欢玩独立游戏或者小众Unity游戏的玩家肯定遇到过这样的烦恼一款游戏玩法绝佳美术风格也对胃口但偏偏没有中文。对着满屏的英文、日文或者韩文查字典查到心累剧情体验支离破碎乐趣大打折扣。对于开发者而言想要了解和学习海外优秀的游戏设计语言也是一道高高的门槛。手动替换游戏文本那是个浩大工程而且每次游戏更新都可能前功尽弃。XUnity.AutoTranslator后文简称AutoTranslator就是为了解决这个痛点而生的神器。它不是一个独立的软件而是一个运行在Unity游戏内部的插件通过BepInEx等Mod框架注入。其核心原理是“运行时劫持”当游戏调用Unity的文本显示函数如TextMeshPro的SetText时AutoTranslator会拦截这个调用获取原始文本然后调用你配置的翻译服务如谷歌翻译、百度翻译、DeepL甚至是本地运行的AI大模型进行翻译最后将翻译结果返回给游戏进行显示。整个过程对游戏本身几乎无感实现了真正的“沉浸式”自动汉化。我接触这个工具已经好几年了从最早期的版本用到现在见证了它从一个功能简单的文本替换工具成长为一个支持多种后端、高度可配置的成熟解决方案。它不仅仅是一个“翻译”工具更是一个强大的“文本处理”中间件。今天我就结合自己踩过的无数坑和积累的经验为你带来一份终极配置与使用指南。无论你是想畅玩无中文的独立游戏还是开发者想研究海外项目这篇文章都能帮你从零开始搭建一个稳定、高效、翻译质量可调的自动翻译环境。2. 核心思路与工具选型理解AutoTranslator的生态系统在深入配置之前我们必须先理清AutoTranslator所依赖的整个技术栈。单独一个AutoTranslator的DLL文件是无法工作的它需要运行在一个“模组加载器”提供的环境中。这个生态决定了安装的流程和后续的稳定性。2.1 核心组件解析BepInEx vs MelonLoaderAutoTranslator主要支持两种主流的Unity游戏模组框架BepInEx和MelonLoader。你的选择取决于目标游戏本身更适配哪种框架。BepInEx目前Unity游戏Mod社区的事实标准尤其对于使用IL2CPP后端编译的游戏现代Unity游戏的主流选择支持非常好。它的架构清晰插件管理方便社区资源极其丰富。绝大多数Unity游戏的Mod都会优先提供BepInEx版本。MelonLoader另一个强大的Mod框架在某些特定游戏或旧版本Mono编译的游戏上可能有独特优势。但就目前社区的活跃度和插件数量而言BepInEx是更通用、更稳妥的选择。我的经验之谈除非游戏Mod社区明确指明必须使用MelonLoader否则一律优先选择BepInEx。这不仅因为其稳定性更因为后续你寻找其他辅助Mod如控制台、UI调整等时BepInEx的兼容性会好得多。如何判断去游戏的社区如NexusMods或相关论坛看看哪个框架的Mod多就用哪个。2.2 翻译后端选型免费、付费与本地AI的权衡AutoTranslator本身不提供翻译能力它只是一个调度器。真正的翻译工作由你配置的“翻译端点”来完成。后端的选择直接决定了翻译质量、速度和成本。免费在线API如Google Translate Bing Translator优点设置简单无需付费。缺点稳定性存疑可能有访问限制或速率限制。翻译质量对于日常用语尚可但对于游戏特有的术语、技能名称、文化梗等常常会闹出笑话。此外频繁请求有IP被暂时封禁的风险。付费在线API如百度翻译API DeepL API优点翻译质量通常比免费版更高、更稳定拥有更高的请求额度。缺点需要花钱。对于重度玩家这是一笔需要考虑的持续开销。需要注册开发者账号、获取API Key并进行充值。本地大语言模型LLM后端如ollama qwen, llama.cpp优点这是当前追求高质量翻译的终极方案。完全离线隐私无忧。你可以使用专门在游戏文本上微调过的模型或者通过设计精妙的提示词Prompt让AI理解游戏上下文翻译出符合角色性格、世界观的专业文本。质量上限极高。缺点门槛最高。需要一定的硬件显存/内存需要部署本地模型服务配置相对复杂。翻译速度取决于你的硬件性能。选型建议新手尝鲜先从免费的Google翻译开始感受自动翻译的效果并测试游戏兼容性。追求稳定质量如果经常玩某类游戏如JRPG可以考虑购买DeepL或百度翻译的API套餐它们的翻译在亚洲语言互译上表现不错。硬核玩家/研究者如果你的显卡有8G以上显存强烈建议折腾本地LLM方案。一次投入长期受益翻译质量是质的飞跃。后文我会详细讲解基于ollama的配置方法。3. 环境准备与基础安装一步步搭建你的翻译框架理论讲完我们开始动手。这里我以最通用的BepInEx AutoTranslator组合为例演示标准安装流程。请确保你已准备好游戏的本体文件。3.1 第一步安装BepInEx模组加载器确定游戏架构打开游戏根目录查看GameName_Data/Managed文件夹是否存在。如果存在通常是Mono架构如果不存在而是有GameName_Data/il2cpp_data等文件夹则是IL2CPP架构。现代游戏多为后者。下载对应版本的BepInEx前往BepInEx的GitHub Releases页面下载对应你游戏架构的版本。对于IL2CPP游戏需要下载BepInEx_unity_xxxx_x.x.x.0.zip通常标注为Unity IL2CPP版本。安装将下载的ZIP包内所有文件解压到游戏根目录即GameName.exe所在的目录。解压后目录里会多出BepInEx、doorstop_config.ini、winhttp.dll等文件和文件夹。首次运行启动一次游戏。如果安装成功游戏会正常启动并在根目录下生成完整的BepInEx文件夹结构其中BepInEx/plugins文件夹就是我们后续放插件的地方。关闭游戏。3.2 第二步安装XUnity.AutoTranslator插件下载插件从AutoTranslator的GitHub Releases页面下载最新版本的XUnity.AutoTranslator-BepInEx-xxxx.zip。安装核心插件将ZIP包内的Translation文件夹和XUnity.AutoTranslator.dll等核心文件复制到BepInEx/plugins目录下。安装资源包可选但推荐同一下载页面通常有一个XUnity.ResourceRedirector.zip。这是一个资源重定向插件能帮助AutoTranslator更好地处理一些嵌入在资源包里的文本。将其中的DLL也复制到BepInEx/plugins目录。3.3 第三步基础配置与首次运行安装完成后运行游戏然后退出。此时AutoTranslator会生成默认的配置文件。找到配置文件配置文件位于BepInEx/config/AutoTranslatorConfig.ini。用记事本或任何文本编辑器推荐VSCode、Notepad打开它。进行最简配置我们首先让翻译功能跑起来。找到以下关键配置项进行修改[General] ; 启用翻译 EnableTranslation true ; 翻译语言比如从日语翻译到简体中文 FromLanguage ja ToLanguage zh-CN [Service] ; 选择翻译服务端点我们先用免费的Google Endpoint GoogleTranslate测试运行保存配置重新启动游戏。进入游戏观察是否有英文/日文文本被替换成了中文。如果游戏内文本变成了中文哪怕翻译得很生硬恭喜你基础框架搭建成功踩坑记录第一次运行时游戏可能会卡顿几秒到十几秒这是AutoTranslator在初始化并加载字典属于正常现象。如果游戏直接闪退请检查BepInEx的日志文件BepInEx/LogOutput.log里面通常会有详细的错误信息例如插件版本不兼容、依赖缺失等。4. 深度配置详解从能用走向好用基础翻译能用了但你会发现很多问题翻译质量差、UI错位、漏翻、重复翻译同一句导致API限额浪费。本章节我们深入配置文件解决这些问题。4.1 翻译服务Service配置优化打开AutoTranslatorConfig.ini我们聚焦[Service]区块。[Service] ; 端点选择 Endpoint GoogleTranslate ; 备用端点当主端点失败时尝试 FallbackEndpoint ; 是否启用翻译缓存强烈建议开启能极大提升重复文本的加载速度并节省额度 EnableTranslationCache true ; 缓存文件位置 TranslationCachePath Translation\Cache关于Endpoint的详细说明GoogleTranslate: 免费谷歌翻译。配置简单但需要网络能正常访问谷歌。BaiduTranslate: 百度翻译。需要配置BaiduAppId和BaiduAppSecret。在国内网络环境下更稳定。DeepLTranslate: DeepL翻译。质量高需要配置DeepLAuthKey付费API Key。Custom: 自定义端点。这是连接本地AI大模型的关键我们后面会重点讲。配置百度翻译示例[Service] Endpoint BaiduTranslate BaiduAppId 你的AppID BaiduAppSecret 你的密钥你需要到百度翻译开放平台注册开发者创建通用翻译服务即可获得AppID和密钥。它有免费额度超出后需付费。4.2 文本处理Text与正则表达式Regex配置这是提升体验的核心。游戏文本千奇百怪有些不需要翻译如代码、变量{playerName}有些翻译了会破坏UI。[Text] ; 最大文本长度超长的文本如冗长的描述可能不翻译避免API错误或超时 MaxCharacters 500 ; 是否翻译数字 SkipNumbers false ; 是否翻译单个字母 SkipSingleLetters true [Regex] ; 使用正则表达式匹配不需要翻译的文本 ; 排除所有看起来像变量或代码的文本例如 {name}, [COLOR], size12 ExclusionRegex (?i)\{[^}]\}|\[[^\]]\]|[^]|\$[a-z]|%[sd] ; 排除纯符号组成的文本 ExclusionRegex ^[\\W_]$正则表达式是神器通过配置ExclusionRegex可以精准过滤掉游戏中的UI标签、富文本标记、变量占位符等。上面的示例是一个组合可以过滤掉大括号、中括号、尖括号包裹的内容以及一些常见变量格式。掌握基础的正则表达式能让你配置的翻译结果干净很多。4.3 翻译缓存与离线词典提升速度和固定翻译EnableTranslationCache true这个选项务必开启。它会把翻译过的文本及其结果以文件形式缓存下来。下次游戏启动或遇到相同句子时直接读取缓存无需再次请求网络速度极快。更高级的用法是手动编辑缓存文件创建离线词典。缓存文件位于BepInEx/Translation/Cache下以{FromLanguage}_to_{ToLanguage}.dat命名。你可以用文本编辑器打开它注意备份它的格式是原文1 译文1 原文2 译文2你可以手动添加或修改其中的条目。例如你发现游戏里“Attack”被翻译成了“攻击”但你觉得“进攻”更合适或者某个技能名“Shadow Bolt”被直译成“阴影螺栓”很滑稽你可以找到对应行直接修改为“暗影箭”然后保存。这样修改后游戏就会永久使用你定义的翻译。这是实现高质量、个性化翻译的终极手段尤其适合和社区伙伴一起维护一个游戏的专用词典。4.4 字体与UI适配解决乱码和排版错乱很多非中文游戏不包含中文字体导致翻译出来的中文显示为方框□□□。AutoTranslator支持字体重定向。准备中文字体文件.ttf例如“霞鹜文楷”、“思源黑体”等将字体文件复制到BepInEx/Translation文件夹下。配置字体重定向在AutoTranslatorConfig.ini中添加或修改[Font] ; 启用字体替换 EnableFontPatch true ; 要替换的默认字体名可以在游戏日志里找或尝试常见名如 Arial DefaultFontNames Arial, Times New Roman ; 替换成的中文字体文件名不含.ttf后缀 FallbackFont LXGWWenKai-Regular有时游戏使用多种字体你需要将DefaultFontNames设置为游戏实际使用的字体名多个字体用逗号分隔。如何查找可以尝试用Unity游戏资源查看工具如AssetStudio去解包游戏资源或者在网上搜索该游戏的Mod社区看是否有字体相关的发现。重要提示字体替换不一定100%成功尤其对于使用TextMeshProTMP的游戏。TMP字体是另一种机制可能需要额外的TMP字体资产补丁。如果字体替换后仍有方框可能需要寻找或制作该游戏专用的TMP中文字体Mod。5. 高阶玩法配置本地AI大模型进行高质量翻译免费API翻译质量堪忧付费API长期来看成本不低。本地LLM方案是目前平衡质量、隐私和长期成本的最佳选择。这里我以部署ollamaqwen模型为例。5.1 本地环境搭建Ollama部署安装Ollama前往Ollama官网下载并安装对应你操作系统的版本Windows/macOS/Linux。安装后它会作为一个后台服务运行。拉取语言模型打开命令行终端/PowerShell运行以下命令拉取一个适合翻译的中等尺寸模型。Qwen系列对中文支持很好且相对轻量。ollama pull qwen2.5:7b-instruct这将下载约5GB的模型文件。请确保你的硬盘有足够空间。7b表示70亿参数在消费级显卡如RTX 4060 8G上可以流畅运行。如果你的显存不足可以尝试3b或1.5b的版本或者使用CPU模式速度会慢很多。5.2 配置AutoTranslator使用自定义LLM端点Ollama默认在本地11434端口提供API服务。我们需要将AutoTranslator配置为使用这个自定义端点。修改配置文件打开AutoTranslatorConfig.ini找到[Service]部分修改如下[Service] ; 使用自定义端点 Endpoint Custom ; 自定义端点的URL CustomEndpoint http://localhost:11434/api/generate ; 请求方法 CustomEndpointMethod POST ; 请求头 CustomEndpointHeaders Content-Type: application/json ; 请求体模板这是与LLM对话的关键 CustomEndpointBodyTemplate {model: qwen2.5:7b-instruct, prompt: 请将以下游戏文本从{0}翻译为{1}保持术语一致语言流畅自然符合游戏语境。直接输出翻译结果不要添加任何解释。原文{2}, stream: false}关键解析{0}: 会被自动替换为FromLanguage如ja。{1}: 会被自动替换为ToLanguage如zh-CN。{2}: 会被自动替换为需要翻译的原文。prompt提示词是灵魂。我提供的这个提示词经过了多次优化它明确指令AI扮演“游戏翻译者”要求“术语一致”、“语言流畅自然”、“符合游戏语境”并强制“只输出结果”。这能极大提升翻译质量避免AI输出多余的解释文字污染游戏界面。处理响应Ollama API返回的是JSON格式我们需要告诉AutoTranslator如何从中提取翻译文本。在配置文件中继续添加[Service] ; 定义如何从JSON响应中提取翻译结果 CustomEndpointResponseRegex (?response:).*?(?)这个正则表达式会匹配JSON中response:后面的字符串内容直到遇到闭合的引号。5.3 提示词工程与模型微调让AI更懂游戏基础的提示词已经能工作但要达到“信达雅”的水平还需要更精细的调整。提供上下文对于RPG游戏你可以在提示词中加入游戏类型和风格。例如...这是一款黑暗奇幻风格的角色扮演游戏。请将以下文本...翻译为...译文需符合黑暗奇幻的凝重、史诗感...但这需要每个请求都携带这段描述可能会增加token消耗。一个更高效的方法是在首次翻译某个角色的对话时在提示词里加入角色简介。创建术语表这是最有效的方法。你可以先让AI翻译一段时间然后去缓存文件里把翻译不准的专有名词角色名、技能名、地名、特殊物品名手动修正。之后在提示词的开头加入术语表技能名“Shadow Bolt”应译为“暗影箭”。角色名“Aethelred”应译为“埃塞尔雷德”。请遵循此术语表。这样AI在后续翻译中就会遵循你的设定。使用更大的模型或微调模型如果7b模型的效果仍不满意可以尝试14b或32b的模型但需要更强的硬件。终极方案是收集游戏原文和理想的译文对对一个小模型如1.5b进行LoRA微调得到一个专属于这款游戏的翻译模型。这需要一定的机器学习知识但效果是无与伦比的。5.4 性能与稳定性调优本地LLM翻译的缺点是速度。你可以通过以下方式改善调整ollama参数运行ollama时可以指定参数例如ollama run qwen2.5:7b-instruct --num-predict 512 --temperature 0.1。--temperature调低如0.1可以让输出更确定、更稳定--num-predict限制生成长度避免AI“废话太多”。在AutoTranslator中启用批处理和延迟[General] ; 翻译前等待时间毫秒给游戏UI加载留出时间避免卡顿 TranslationDelay 50 ; 最大并发翻译请求数对于本地LLM建议设为1或2避免压垮服务 MaxConcurrentTranslations 1善用缓存本地LLM翻译一次后结果就会被缓存。游戏内的重复文本如“攻击”、“确认”、“返回”非常多缓存能极大提升二次及以后游玩的体验。6. 实战问题排查与进阶技巧即使配置无误在实际使用中还是会遇到各种稀奇古怪的问题。这里我汇总了一个常见问题排查表并分享一些进阶技巧。6.1 常见问题速查表问题现象可能原因排查步骤与解决方案游戏启动闪退1. BepInEx版本与游戏不兼容2. AutoTranslator版本与BepInEx不兼容3. 缺少依赖如ResourceRedirector1. 检查BepInEx/LogOutput.log看错误堆栈。2. 确保BepInEx是针对游戏正确架构Mono/IL2CPP下载的。3. 尝试使用插件管理工具如r2modman自动解决依赖。游戏内文本无变化1. 插件未正确加载2. 配置文件错误3. 翻译服务未响应1. 检查BepInEx/plugins目录下是否有XUnity.AutoTranslator.dll且无报错。2. 检查AutoTranslatorConfig.ini中EnableTranslation是否为true语言设置是否正确。3. 检查网络在线API或Ollama服务是否运行本地LLM。查看BepInEx/LogOutput.log中AutoTranslator的日志。翻译结果为空白或错误代码1. API密钥无效或额度用尽2. 自定义端点响应格式不匹配3. 正则表达式过滤掉了所有内容1. 检查百度/DeepL的API密钥状态和余额。2. 用Postman或curl测试你的自定义端点确保返回的JSON格式与CustomEndpointResponseRegex匹配。3. 暂时注释掉ExclusionRegex看是否恢复正常。中文显示为方框□□1. 游戏字体不支持中文2. 字体替换配置错误或未生效1. 确认已启用EnableFontPatch并配置了正确的中文字体文件。2. 确认字体文件在BepInEx/Translation目录下且文件名与配置一致无.ttf后缀。3. 对于TMP游戏需要额外的TMP字体资产需寻找特定游戏的中文补丁。翻译速度极慢本地LLM1. 模型太大硬件跟不上2. 并发请求数过高1. 换用更小的模型如3b。在Ollama中尝试使用--num-gpu等参数调整。2. 将MaxConcurrentTranslations设置为1。部分UI文本错位、重叠1. 翻译后文本长度远超原文挤坏了UI布局1. 这是自动翻译的固有问题。可以尝试在[Text]中设置MaxCharacters限制长度但会截断文本。2. 最好的办法是手动修改缓存将导致错位的长句翻译改成一个简短的、语义相近的版本。6.2 进阶技巧与心得分场景配置AutoTranslator支持为不同的游戏“场景”配置不同的设置。你可以通过修改[Scene]配置节为游戏主菜单、过场动画、战斗界面等设置不同的翻译延迟、是否启用翻译等以获得最佳体验。使用插件管理器对于经常打Mod的玩家强烈推荐使用r2modman或Thunderstore Mod Manager。它们可以为你管理的每个游戏创建独立的Mod配置环境一键安装、更新、卸载Mod包括BepInEx和AutoTranslator完全避免污染游戏原文件管理起来非常清爽。翻译记忆与共享你精心维护的缓存字典文件.dat文件是可以分享的。如果你和朋友们都在玩同一款游戏可以由一个人主导翻译和修正术语然后将最终的缓存文件分享给大家放到各自的Cache目录下就能享受到一致的优质翻译体验。这形成了小型社区的众包翻译。调试模式在配置文件中开启[General]下的EnableDebugLogging true游戏运行时会在日志中输出更详细的信息例如拦截了哪句文本、发送了什么翻译请求、收到了什么响应。这对于排查复杂问题至关重要。尊重开发者自动翻译工具是为了学习和体验的便利。如果游戏真的让你喜爱并且后续推出了官方中文请务必支持官方版本。同时不要将自动翻译用于任何商业或侵权用途。折腾AutoTranslator的过程本身就像是在解一个关于游戏和语言的谜题。从最初的磕磕绊绊到最终流畅地体验一款外语游戏这种成就感是独特的。它不仅仅是一个工具更是一把钥匙为你打开了更多游戏世界的大门。希望这份指南能帮你少走弯路更快地享受到无缝游戏体验的乐趣。如果在配置过程中遇到任何上面没覆盖的怪问题不妨去GitHub的Issues页面或者相关的游戏Mod社区看看很可能已经有人提供了解决方案。