前言
最近沉迷于《幸福工厂》(Satisfactory),对其中一个大型电力模组 Refined Power 爱不释手。但它的汉化一直不完整,看着满屏的中英文混合,强迫症的我终于忍不了了。于是,我决定自己动手,丰衣足食,把这个汉化彻底搞定。
这篇博客将详细记录我从拿到汉化文件,到最终成功打包的全过程。这趟旅程充满了各种意想不到的报错和工具的“特性”,希望能为同样想参与Mod汉化的小伙伴提供一份详尽的、可复现的技术指南。
本次汉化的核心是处理虚幻引擎(Unreal Engine)的本地化资源文件
.locres。这是一种二进制格式,无法直接编辑,必须借助专门的工具在它和可读文本格式(如.csv)之间进行转换。
一、提取汉化文件
所有Mod的资源,包括我需要的汉化文件,都被打包在一个 .pak 的“黑箱”里。我们的首要任务,就是打开这个黑箱,拿到原始文件。
我使用的神器是 FModel,一个强大的UE游戏资源浏览器。
操作步骤:
- 打开FModel,在设置中正确指向游戏和模组的
.pak文件所在目录,然后点击 + 和 OK 。

- 在FModel的目录树里,我找到了汉化文件。对于
Refined Power模组,通常需要提取两个关键文件:- 不完整的中文文件:
.../Localization/RefinedPower/zh-Hans/RefinedPower.locres - 完整的英文源文件:
.../Localization/RefinedPower/en/RefinedPower.locres
- 不完整的中文文件:

- 直接右键点击这两个
FactoryGame文件,选择Export将它们导出到本地工作目录。

- 找到所需的两个
.locres语言文件,后面需要用到。
为什么需要两个文件? 因为我们需要英文原文作为翻译的基准,确保翻译的准确性;同时,保留原始的中文文件,可以继承其中已有的、翻译质量不错的文本,减轻工作量。
二、UnrealLocres 的正确打开方式
在尝试了几个不太好用的工具后,我最终锁定了本次汉化成功的最大功臣:UnrealLocres。它是一个命令行工具,逻辑清晰,功能专一。
我们的核心思路是:将中、英文 .locres 都转换成 .csv 表格,在表格中完成翻译合并,最后再将完美的表格打包回 .locres 文件。
步骤一:准备工作区与解包
创建一个干净的文件夹(例如
D:\RP_Translate),把UnrealLocres.exe和刚才导出的两个.locres文件都放进去。在此文件夹中打开命令行(PowerShell 或 CMD)。
分别执行两条导出命令,将中英文
.locres都转换为.csv文件:# 导出不完整的中文locres .\UnrealLocres.exe export .\RefinedPower_zh-Hans.locres -f csv -o zh_incomplete.csv # 导出完整的英文locres .\UnrealLocres.exe export .\RefinedPower_en.locres -f csv -o en_source.csvexport是主命令,-f csv指定输出格式。
执行完毕后,我们会得到
zh_incomplete.csv和en_source.csv两个文件。
步骤二:在CSV表格中完成翻译(最关键的一步)
现在,我们需要借助数据处理软件(如Excel、WPS)的强大能力来处理这两个CSV文件。
我选择的是万能的VSCode
打开
en_source.csv。这个文件包含了所有词条的key和source(英文原文)。这是我们的工作底稿。打开
zh_incomplete.csv。这个文件包含了部分词条的key和source(旧的中文翻译)。直接丢给 AI 翻译:
- 将两个文件丢给 AI ,让它读取后将中文缺少的翻译,由英文翻译过来补充进去。
校对:
- 现在
zh_incomplete.csv的target是所需的中文翻译。 - 在这个过程中,我依然借助了AI助手来批量翻译缺失的条目,并统一了所有术语。
- 现在

- 整理最终文件:完成所有翻译后,确认只有
key,source,target三列。将此文件另存为RefinedPower_final.csv。
步骤三:打包!从 .csv 回到 .locres
这是见证奇迹的时刻。我们手握完美的 RefinedPower_final.csv 和作为模板的原始英文 .locres 文件。
确认
import命令用法:通过UnrealLocres.exe help import,我们知道打包需要一个模板.locres和一个翻译文件。执行打包命令:
.\UnrealLocres.exe import .\RefinedPower_en.locres .\RefinedPower_final.csv -f csv -o RefinedPower_translated.locresimport:主命令。.\RefinedPower_en.locres:作为模板的原始英文locres。使用英文版作为模板可以确保所有key都存在,结构最完整。.\RefinedPower_final.csv:我们包含最终翻译的CSV文件。-o RefinedPower_translated.locres:输出的成品文件名。
检查输出:命令执行后,提示
Translated 652 / 652 (100.00%),这意味着所有条目都成功处理!一个新的、完美的RefinedPower_translated.locres文件诞生了。

四、将汉化文件打包成 .pak 补丁
现在我们有了完美的 .locres 文件,但游戏无法直接读取它。我们必须将它放回正确的目录结构,并打包成一个 .pak 文件,作为汉化补丁让游戏加载。
重要提示:本指南适用于游戏
Paks文件夹内没有.ucas或.utoc文件的情况,这是大多数Mod补丁的制作方式。
步骤一:选择打包工具
我选择的是虚幻引擎官方的命令行工具 UnrealPak。为了方便使用,我下载了由 FluffyQuack 提供的独立整合版,它附带了便捷的批处理脚本。
步骤二:创建正确的目录结构
这是制作补丁最最最重要的一步,目录结构稍有差错,游戏就无法识别你的修改!
- 找到之前解包的
.pak文件夹,通常在.\FModel\Output\Exports\。 - 在这个目录里,把编译好的
.locres文件放入目录,同时确保最终的结构必须是:结构要点解读:.\FModel\Output\ └── Exports\ └── FactoryGame\ └── Mods\ └── RefinedPower\ └── Content\ └── Localization\ └── RefinedPower\ └── zh-Hans\ └── RefinedPower.locres <-- 把我们翻译好的文件放在这里!- 内部路径必须与原始路径完全一致:从
FactoryGame开始,每一层文件夹的名字都不能错。 - 最终文件名:将我们生成的
RefinedPower_translated.locres文件,重命名为原始文件名RefinedPower.locres,并放入最深层的zh-Hans文件夹内。
- 内部路径必须与原始路径完全一致:从
步骤三:执行打包
- 将下载的 UnrealPak 独立版解压到出来。
- 现在,复制我们的导出
Exports文件夹。 - 将它粘贴到 UnrealPak 的目录上面,然后将
Exports文件夹改名为你想要的名字_P。
根文件夹必须以 _P 结尾:这是虚幻引擎加载补丁包的约定,比如 RefinedPower_Patch_P
- 一个黑色的命令行窗口会一闪而过,随后,在
D:\Pak_Workspace目录里,一个名为RefinedPower_Patch_P.pak的文件就诞生了!

- 现在,用鼠标左键按住我们重命名的
RefinedPower_Patch_P文件夹。 - 将它拖动到
UnrealPak-With-compression.bat这个批处理文件上,然后松开鼠标。 - 一个黑色的命令行窗口会一闪而过,随后,在 D:\Pak_Workspace 目录里,一个名为
RefinedPower_Patch_P.pak的文件就诞生了!

步骤四:安装与测试
- 找到模组原来的的
.pak文件。 - 将我们新鲜出炉的
RefinedPower_Patch_P.pak文件改为原来的.pak的名称,覆盖到原来的文件。 - 启动游戏!进入世界,看着你的成果。

总结与感悟
我拿着那个新鲜出炉、包含了自己心血的 .pak 文件,替换掉了原来的文件。启动游戏,进入世界,看着所有UI和物品描述都变成了自己亲手校对的中文,那种成就感无与伦比。
这次汉化之旅,我最大的心得是:
- 工具组合是关键:FModel用于“破冰”和提取,UnrealLocres + VSCode 组成了强大的翻译编辑流水线,而一个好用的 UnrealPak 整合包则是成功的临门一脚。
- 目录结构是圣旨:在制作
.pak补丁时,文件夹路径的正确性高于一切。错一个字母,游戏都不会加载。 - 英文原文是唯一的“真理”:在汉化更新时,一定要以最新的英文源文件为基准,这样才能避免遗漏新词条。
希望我的这段经历,能给屏幕前同样热爱折腾的你带来一些启发和帮助。享受创造的乐趣吧,工程师!
参考资料
- FModel - Unreal Engine exploring tool
- akintos/UnrealLocres - GitHub
- 创建Pak文件
- 强大的AI助手,在我遇到技术瓶颈时,提供了关键的思路和解决方案。


说些什么吧!