尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

游戏汉化工具汇总:从引擎识别到文本回填的完整流程

游戏汉化工具汇总:从引擎识别到文本回填的完整流程 直接开写。汉化游戏这事儿我前前后后折腾了得有七八年。从最早在论坛蹲汉化补丁到自己动手拆包、抽文本、翻译、回封、修字体算是一路踩坑踩过来的。最近整理硬盘发现自己随手存了二十多款免费工具正好借这篇文做个汇总收录。这篇东西不是软件商店那种干巴巴的功能列表而是基于我真实的汉化工作流来讲——每个工具是干什么的、怎么配合着用、哪个环节容易抓狂我都会说清楚。如果你是想汉化某个老游戏或者是独立游戏作者想给作品做多语言支持又或者单纯好奇汉化组背后用的工具链这篇都值得一看。1. 汉化是个什么活儿拆解完整工作流很多人以为汉化就是翻译文本把英文或者日文翻成中文塞回去完事。真要这么简单汉化圈人手一个翻译器就够了。实际上游戏汉化的技术链路是识别引擎 → 解包资源 → 提取文本 → 翻译 → 回填文本 → 重新封包 → 修字体和编码 → 测试通关。每一步都有专门的工具也都有对应的坑。1.1 汉化不是“翻译”那么简单一个游戏文件在你电脑里长什么样取决于它用什么引擎做的。用Unity做的资源文件基本是AssetBundle用RPG Maker做的数据在Data文件夹下的JSON或者.rvdata2里用RenPy做的剧本全在.rpy脚本里。这些游戏的结构不一样处理方式就完全不一样。有人管这叫“引擎识别”其实用工具一眼看穿文件头就行。我见过太多新手一上来就问“有没有一个工具能把所有游戏都汉化”答案是没有。这不是工具不行是游戏的差异实在太大。举几个例子老式AVG游戏用吉里吉里引擎文本打包在.xp3文件里需要专门的解包器。用Unity开发的游戏大部分文本会以UTF-16或者二进制形式存在资源文件里需要先给资源脱壳。许多日式RPG用的RPG Maker VX Ace文本几乎明文放在Data的System.json和MapXXX.json里用文本编辑器就能改但换成MV版本的就得处理编码和转义符。明白了这个道理你就知道汉化工具的选型核心第一步其实是“识别引擎”然后才是“选对工具”。1.2 工具选型的底层逻辑免费、好用、通用我个人对“好用”的定义有三个标准一是免费二是命令行或图形界面至少有一种上手不费劲三是处理主流引擎游戏的通用性足够。免费这一点不用多说汉化本身就是社区性质的事情收费工具往往还伴随各种暗坑。通用性则直接决定你花一次学习成本、能解决多少游戏。比如GARbro一个工具几乎通吃吉里吉里、NSIS、RPG Maker全系这种就是高通用度工具。而反过来针对某个特定游戏的特制工具虽然好用但只能用一个游戏不值得花太多精力。我推荐的所有工具都是以“一次学会、到处能用”为前提筛选的。还有一点很关键——工具的更新频率。我见过太多好用的汉化工具因为开发者弃坑新一点游戏引擎升级就彻底失效。所以推荐列表里我尽量选那些维护时间比较长、社区活跃度高的用起来才踏实。2. 免费好用的汉化工具汇总接下来进入正题。我会按工作流的顺序来归类每个工具标清楚适用引擎、主要用途、我个人的实际体验以及最值得注意的坑。这些工具我全部实测过有些还在多个项目里反复用。2.1 引擎向综合工具GARbro、AssetStudioGARbro是目前开源界最通吃的资源浏览和提取工具没有之一。它主要针对日系游戏支持的引擎非常广包括吉里吉里、BGI、NScripter、Yuris、RenPy、RPG Maker 2000/2003/VX/VX Ace等等。打开就是图形界面拖入文件就能看到内部资源树可以缺省提取图片、音频和文本。我的体会是它别的不说单是一个界面能预览太多格式就省了无数测试时间。AssetStudio则是Unity游戏提取资源的标杆。Unity的AssetBundle文件五花八门AssetStudio能直接解析Unity生成的Bundle结构提取出文本、图片、音频、动画片段等。用过这个工具之后我才觉得很像“手里有了手术刀”——它可以看到Unity的序列化对象结构连GameObject层级都能浏览。很多汉化组做Unity游戏提取文本靠的就是它。提示AssetStudio的GitHub上有几个分支版本维护状态不太一样建议优先用还在活跃维护的分支处理新版Unity项目的兼容性会好一些。2.2 文本提取与回填SExtractor、TranslatorSExtractor是专门为视觉小说类游戏打造的文本提取/回填脚本工具。它最大的特点是可以自动扫描脚本文件里的日文或英文对话把需要翻译的内容提取成CSV或者TXT翻译完成后再自动填回原文件保持所有控制代码不变。这功能对于文本量几千条起步的AVG来说是真能救命。我汉化一个几万行的AVG时纯手工编辑差点干到崩溃用SExtractor之后至少省了80%的体力活。Translator功能更现代图形界面做得比SExtractor更友好引擎支持也更广包括RenPy、RPG Maker、Wolf RPG Editor、GameMaker甚至一些网页游戏也支持。它最亮眼的其实是批量机器翻译功能内置了多个翻译引擎接口。虽然机器翻译出来的质量需要人工润色但对于文本多到翻不完的情况先用它批量跑一遍再人工校对效率高很多。使用这两个工具时都有一个共同的注意点回填文本时千万不要动源文件里的控制代码比如换行符、选择分支标记、变量插值符。一旦破坏了这些标记轻则游戏内显示乱码重则直接跳错崩溃。我自己的习惯是回填之前先备份一份原始文本并且回填完随便挑三五个特殊标记检查一遍。2.3 脚本编辑与文本处理Notepad、VS Code、Regex汉化工作流里免不了和大量脚本文件打交道这时候一个好用的文本编辑器就是半个主力。Notepad是老牌文本编辑器轻量、启动快处理中小型文本、脚本文件非常顺手。自带十六进制查看器插件的话还能直接检查文件的编码细节。VS Code则适合处理大型工程。它打开几百MB的文本不卡配合正则表达式替换能快速处理批量替换、批量清理乱码这类事。VS Code的插件生态也很有帮助UTF-8、UTF-16、Shift-JIS之类的编码转换一个插件就能搞定。正则表达式是汉化过程中容易被忽视又极其重要的技能它在批量处理时无可替代。举个例子一个文件里几千行的对话文本格式是dialogue Hello world character你想把所有对话内容改成中文引号内的内容手动一行行改会改到你怀疑人生但用一次正则匹配替换几秒就干完了。这事儿没有写代码的门槛但确实需要掌握正则的基础规则值得专门花半天时间学一下。2.4 字体与编码工具FontForge、Locale Emulator汉化之后经常遇到的一个大坑是字体。很多西方游戏根本没有内置中文字形直接替换成中文字符游戏里显示的是方框或者空白完全没法看。这时候就需要处理字体比如在原有字体基础上挂接中文字形或者在游戏设置里指定系统字体。FontForge是开源且免费的字体编辑器可以做字体的合并、子集化、生成我第一次用它给一个Unity游戏补中文字形的时候折腾了整整一天但成功那一刻确实很有成就感。另一类工具是解决乱码用的。很多日文游戏在非日文系统上运行时会因为代码页不对而乱码或无法启动。Locale Emulator就是一个非常顺手的工具右键以日文系统区域运行程序可以绕过大部分语言区域限制让游戏先能跑起来再谈汉化。这类工具不是汉化工具本身但汉化过程里测试游戏时几乎离不开它。2.5 辅助与自动化Python脚本、解包脚本到了这一层再往下深挖就稍微进阶一点了。对于一些引擎特殊、没有现成工具的游戏自己动手写点小脚本是很可靠的路子。Python配合一些常用库几乎能处理所有文本转换问题。以Unity为例从AssetStudio提取出来的文本可能是JSON格式你可以用Python脚本把目标语言列批量替换成中文再重新生成JSON。这个流程看上去麻烦其实只要写一次脚本以后处理同类项目都能复用。还有一些现成的解包脚本比如各种QuickBMS提取脚本某种程度上是“万能解包方案”。QuickBMS本身是个通用解包工具搭配不同游戏专用的脚本就能解特定格式。它的缺点是脚本需要自己找质量参差不齐优点则是覆盖面极广从上古游戏到新出的独立游戏都有机会找到对应脚本。3. 完整实操案例从拆包到回封的每一步下面我用手头一个真实处理过的项目完整演示从拆包到回封的流程这样你照着走一遍基本能掌握汉化的核心套路。3.1 准备阶段识别引擎与确定方案假设我要汉化一个用RenPy引擎做的英文视觉小说。拿到游戏文件夹后我通常先看根目录文件。RenPy的游戏根目录一般有game文件夹、renpy文件夹、lib文件夹然后有.py和.rpy文件。如果你不确定一个游戏是RenPy做的打开game文件夹看有没有script.rpy或者大量的.rpy文件即可确定。对于这个案例方案其实已经很清楚直接处理script.rpy文件提取文本翻译后再写回。RenPy的脚本文件支持UTF-8编码的翻译文件.rpy翻译文件有一个官方的翻译机制叫“translate”。如果游戏本身创建了翻译空间直接在game/tl文件夹下添加中文翻译文件即可如果没有就要新建tl/chinese/目录用RenPy启动器的“Generate Translations”功能生成中文翻译模板然后把汉化文本填进模板里。提示RenPy这种引擎之所以适合新手入门是因为它官方支持翻译你写的翻译文件只要放在对应目录游戏自动加载不需要破解任何东西是一个非常干净的汉化流程。3.2 实操用Translator提取与回填面对RenPy引擎直接用Translator是最省事儿的。新建项目选择RenPy引擎类型打开游戏目录它会自动解析所有的rpy文件解析完成后界面里就是按场景组织的文本行列表左侧原文右侧翻译栏。这个界面的好处是支持在游戏内预览上下文翻译的时候你能看到这句对话是哪个人物在哪个场景说的避免机器翻译那种“脱离语境翻错”的问题。提取出来的文本列表我一般先全选复制到CSV用Excel或者文本编辑器批量过一遍处理掉明显的专有名词和术语保持整个游戏里人名、地名的一致性。这一步很重要不然同一个角色在不同场景被翻译成不同名字玩起来特别出戏。回填的时候Translator 可以直接导出.rpy翻译文件。我导出后会用RenPy启动器生成一次compile确认没有语法错误再进游戏测试。3.3 实测演示Unity游戏的文本提取与回写Unity项目比RenPy复杂一些但用对工具也完全可以搞定。之前我处理过一款Unity引擎的休闲游戏主要文本都打包在resources.assets文件中。我打开AssetStudio加载这个文件左侧对象列表里按MonoBehaviour筛选就能看到所有文本组件。大部分Unity的文本字段会以明文形式出现在右侧属性面板。接下来我会把需要翻译的文本数据导出来通常是复制到CSV按列清洗。Unity资源里的英文文本往往包含\n换行转义符必须先统一成br或者保持\n原样否则中文翻译填回去后游戏里会显示成一行挤在一起。回写时最简单的办法是用脚本。我写了一个Python脚本读取翻译好的CSV然后对原始资源文件做文本替换再保存。但这里有个大坑Unity资源文件内部有偏移表和对齐规则直接修改文本长度不一样时很容易破坏资源结构导致游戏打不开。所以对于Unity游戏更稳妥的做法是利用AssetStudio的“导出对象”功能将文本对象导出成JSON或文本格式修改后再需要注入的话就得结合专门的工具如UABEA来完成。UABEAUnity Asset Bundle Extractor Avalonia是我后来发现的利器。它能够直接编辑Unity资产中的文本并根据内容变化自动调整资源内部的数据长度。这就绕开了手工改偏移的坑。它的界面稍微让人需要适应一阵但流程图工作室的人很多都在用。基本步骤是加载资产文件 → 找到目标TextAsset → 将文本导出为TXT → 翻译后编辑新的TXT → 导入替换 → 保存资产。3.4 字体替换与测试最后一步同样是关键文本修改完一个大问题就是字体。Unity默认的动态字体不一定包含中文字符。我在处理一款Unity游戏时汉化后进游戏一看中文全部是方框根本没法看。这个问题的解决办法有两种替换游戏内部的字体文件比如将默认的Arial替换为支持中文的字体修改游戏的字体设置让它使用系统字体。具体操作要看游戏的灵活性。有些Unity游戏在PlayerSettings里启用了“Dynamic Font”并且回退到系统字体那就不用改字体如果没有就需要用FontForge把中文字体合并到原字体里生成一个新的字体文件再用UABEA把它替换进去。做完这一步中文字就能正常显示了。测试的时候建议开启游戏内的UI缩放到最大、把窗口分辨率调到常见尺寸看看有没有文字被截断或者溢出。然后是完整流程测试。汉化组内测时有一个惯例叫“全流程通关”即从开始新游戏到通关不跳剧情、不漏对话确认所有文本内容都被正确翻译同时检查是否有未汉化文本、乱码、控制符被破坏等问题。这个环节虽然耗时但它是保证最终质量最可靠的手段。4. 常见问题与排查技巧实录在这个流程里踩坑是常态。下面这些问题是几乎每个汉化玩家都会遇到的我按频率从高到低整理成速查表每条都附带我自己的解决思路。常见问题典型表现排查思路我的解决办法编码转换乱码中文变成“鍙兘cos”或问号文件实际是UTF-16编辑器默认UTF-8用VS Code重新打开并指定编码再另存为UTF-8文本控制符被破坏对话出现多余换行、选项错乱回填时破坏了\n或分支标记始终在脚本编辑器中开启“显示所有字符”检查中文字体显示为方框方块字形字体包没有中文字形字体合并或替换系统字体游戏无法启动/闪退点击启动即报错资源封包时结构损坏用UABEA重新导入或恢复备份翻译文本过长溢出UI框显示不全中文字符号宽英文转中文后长度增加采用精简翻译或者扩展UI字段长度区域设置导致乱码日文游戏无法打开系统Locale不匹配Locale Emulator以日文区域运行4.1 编码问题一开始就避免编码是汉化里最基础也是最容易翻车的环节。日文游戏很多是Shift-JIS编码英文游戏大多是UTF-8或UTF-16一旦用错编码打开和保存文件内容立刻变乱码。我的习惯是拿到任何文本文件第一步先查看文件编码再决定用什么编辑器打开。VS Code右下角会显示当前文件编码点击就能切换重新打开。Notepad菜单栏的“编码”也有类似功能。避免编码问题最好的办法就是“统一”。文本提取出来之后我第一步就转成UTF-8带BOM通常兼容性更好一些尤其对Windows路径的老引擎翻译完成后回填时也统一用UTF-8。只要所有中间文件都在同一种编码下处理基本不会出现乱码。4.2 文本长度与溢出问题中文表达通常比英文简洁但特殊情况也很多。一些界面按钮本来只放得下几个字母比如“SAVE”4字符中文“保存”2字符没问题但如果英文“Continue”翻成中文“继续”2字符也OK只怕有些专有名词音译过来很长比如“Grandmas House”翻译成“奶奶的房子”5个汉字在狭窄UI里就会溢出。遇到这种情况要么修改翻译让文字更精炼要么去改UI资源里的字段宽度。在Unity里修改UI布局比较麻烦不太推荐新手轻易尝试。更稳妥的方案是在翻译时预先考虑长度如果某字符串显示在固定小按钮上优先用短词比如“自动战斗”→“自动”或者“物品详情”→“详情”。4.3 文本回填后控制码丢失这个坑至少坑了我三次。有些视觉小说的脚本文本里带有变量插值比如I have {color#ff0000}red{/color} apples.当你把整段文本翻译成“我有{color#ff0000}红{/color}苹果。”能保留颜色标记固然好但手滑删掉{/color}的话游戏脚本解析器直接就报错甚至后面所有文本颜色都会受影响。这个问题在RenPy、吉里吉里引擎里都非常常见。我的对策是回填之前把原文中所有类似标记先挑出来单独保留翻译时只在非标记部分处理文字回填后用一个脚本自动检查括号是否闭合。这样能最大限度地避免控制码破坏。4.4 封包失败与文件损坏使用QuickBMS或UABEA封包时偶尔会碰到新文件保存后游戏打不开。这里有一个非常重要的原则太频繁地用小工具多次保存同一个文件容易累积出问题。所以标准化操作是拿到的原始文件先做备份之后每次操作都在备份副本的基础上进行并且每完成一步就用游戏启动器或引擎调试模式测试一次。千万不要全部改完再测一旦出错排查成本极高。5. 一些我踩了多次坑之后的心得做汉化时间长了我对“免费好用的游戏汉化工具”这件事的理解跟最开始完全不一样了。你以为工具是核心其实流程规范和耐心才是核心工具只是在合适的位置帮你加速。从工具的选择上我个人的建议是初期先专注学透一到两个通用工具比如GARbro加上Translator。不要一开始就囤一堆工具遇到特定游戏再去搜对应的专用工具理解它在这个流程里的位置然后拿来用用完放下。不然很容易被五花八门的工具界面耗掉大量精力最后连一个流程都没走通。从方法上我干活时有一个雷打不动的习惯每个阶段产出中间文件并做一份“翻译原始文件备份”。这在早期看起来很笨因为文件夹会越来越大但每次遇到问题能回滚到某个确定可用的版本那种安全感不是任何工具能比的。从心态上我觉得汉化是一个“延迟满足”的事情特别是做全量汉化几千条文本的清洗、翻译、校对真的很磨人。但我也正是通过汉化才把文本处理、正则、编码、字体、脚本语言这些硬知识全都摸熟了的堪称技术成长最快的自学路径。如果你只是个游戏玩家想玩某个没有官方中文的游戏希望这篇工具汇总能帮你少走弯路快速找到可用工具。如果你也是做汉化的欢迎分享你自己在用的趁手工具大家一起把汉化的路子越走越顺。这个方向后续还能继续往自动翻译质量优化、AI辅助润色、资源包自动化注入这些方向延伸每一条都够再写好几篇长文以后我再慢慢整理出来。
返回列表