如何用QuickBMS快速做游戏本地化翻译:SLog命令与重导入实战教程
【免费下载链接】QuickBMSQuickBMS by aluigi - Github Mirror项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS
QuickBMS 是一款开源的多平台游戏解包引擎,它内置的SLog 命令可以把游戏档案里的文本字符串直接导出成纯文本文件,翻译完成后再用重导入(Reimport)功能把译文写回原档案——整个过程不需要你编写任何重打包程序。本文将带你完整走通"导出 → 翻译 → 重导入"的游戏本地化全流程,并讲清三种重导入模式的差别与常见坑。
一、为什么选 QuickBMS 做游戏本地化 🎮
大多数解包工具只能"拆不能装":把游戏文件解出来后,改完文字就很难再塞回原档案。QuickBMS 的独特之处在于:
- 同一套 BMS 脚本,既能解包也能重导入——提取和回写用的是同一个脚本文件,省去了单独写重建工具的工作量;
- SLog 命令专为本地化设计:按行导出字符串到 UTF-8 文本文件,翻译时"一行一句",改完即可回写;
- 跨平台:Windows、Linux、macOS 通用,源码见 readme.md 开头的介绍。
官方说明:"The reimport feature of QuickBMS has already allowed to slightly mod and translate various games."——重导入功能已被社区用于多种游戏的 Mod 与翻译(见 readme.md)。
二、获取 QuickBMS 与必备文件清单 📦
两种方式任选其一:
# 方式一:克隆源码仓库 git clone https://gitcode.com/gh_mirrors/qui/QuickBMS cd QuickBMS && make # Linux/macOS,需 openssl、zlib、bzip2 开发库# 方式二:Windows 下使用官方发布的 quickbms.exe(GUI 双击即可)Linux 编译依赖可参考 src/Makefile,常见问题用apt-get install gcc g++ zlib1g-dev libssl-dev unicode解决。
拿到 QuickBMS 后,重点关注 scripts/ 目录下的 5 个重导入脚本,它们是本地化工作流的核心入口:
| 脚本 | 实际执行的命令 | 用途 |
|---|---|---|
| scripts/reimport.bat | quickbms.exe -G -w -r | 标准 REIMPORT 模式 |
| scripts/reimport2.bat | quickbms.exe -G -w -r -r | REIMPORT2:支持译文变长 |
| scripts/reimport3_localizations.bat | quickbms.exe -G -G -w -r -r -r | REIMPORT3:专为本地化文件设计,可自动收缩/扩大档案 |
| scripts/reimport_4gb_files.bat | quickbms_4gb_files.exe -G -w -r | 处理大于 4GB 的档案 |
| scripts/reimport2_4gb_files.bat | quickbms_4gb_files.exe -G -w -r -r | REIMPORT2 的 4GB 版本 |
💡 注意:
reimport3_localizations.bat从文件名就能看出定位——它就是给语言/本地化文件准备的回写入口。
三、SLog 命令详解:一条指令导出全部游戏文本 📝
SLog 的语法(完整文档见 readme.md):
SLog NAME OFFSET SIZE [TYPE] [FILENUM] [ID]| 参数 | 说明 | 本地化场景建议 |
|---|---|---|
NAME | 输出文件名(UTF-8、Windows 换行),为空则自动命名 | 固定命名如strings_zh.txt |
OFFSET | >=0导出指定位置的字符串;<0从当前位置读取并前进 | 多数脚本用-1顺序读取 |
SIZE | >=0固定长度读取;<0读到字符串结束符 | 视游戏格式而定 |
TYPE | 数据类型,缺省为 String,也支持long、unicode等 | 数字类字段可用long |
ID | 指定 ID 后只有匹配的字符串会被重导入 | 只回写已翻译的行,非常安全 |
关键特性:
- 每行一条字符串,多行文本通过
\r、\n转义符写在同一行内(反斜杠是 C 风格转义); - 译文不能比原文更长(SLog 回写模式下该限制与全局重导入规则一致),多余空间用空格填充(可用命令行
-b选项改填充字节); - 配合命令行选项
-j可强制以 UTF16 输出,适合需要 Unicode 字符串的引擎; - 官方强烈建议用Notepad++编辑,并把编辑器切到INS(覆盖)模式,从根源上避免译文超长。
一个典型的导出脚本片段长这样:
set STRINGS_FILE string "strings.txt" slog STRINGS_FILE -1 -1 # 从当前位置按字符串读入并前进四、五步完成一次游戏本地化 🔁
备份原档案(最重要的一步,官方文档反复强调 Make a backup copy);
提取文本:
quickbms script.bms archive.pak output_folder翻译:用 Notepad++ 打开 SLog 导出的文本,逐行把原文替换为译文,保持长度不超原文,删除不需要回写的行;
重导入:双击 scripts/reimport.bat,或在命令行执行(参数与第 2 步相同):
quickbms -w -r script.bms archive.pak output_folder运行游戏验证,出错就回滚备份重来。
命令行方式同样支持 GUI 流程,-w开启写模式、-r开启重导入,细节见 readme.md。
五、三种重导入模式怎么选?
| 模式 | 启动方式 | 核心能力 | 适用场景 |
|---|---|---|---|
| REIMPORT | -r | 原位替换,文件只能变短或等长 | 译文长度可控、格式最简单的档案 |
| REIMPORT2 | -r -r | 自动重写 offset / size 字段,超长文件追加到档案末尾 | 译文明显变长、压缩格式复杂(如 lz4) |
| REIMPORT3 | -r -r -r | 在 REIMPORT2 基础上自动收缩/扩大档案(无 offset 字段时) | 语言文件、顺序存放的文本档案——本地化首选 |
选择建议:
- 一般游戏 Mod:先试 REIMPORT;
- 纯文本/语言文件(LNG、STR、DIA 等):直接用 scripts/reimport3_localizations.bat;
- 档案超过 4GB:换用
reimport*_4gb_files.bat系列。
REIMPORT2/3 的限制也需知晓(见 readme.md):目录(TOC)被压缩、位于档案尾部、或内容完全顺序无 offset 时不生效;变量上最多允许一次数学运算,否则会算错 offset。
六、SLog 重导入的常见坑与避坑清单 ⚠️
- 译文超长:QuickBMS 只提示不中断,请务必留意日志——这是最隐蔽的坑;
- 顺序 NUL 字符串:新文本与原文之间的空隙默认填零(0x00),对连续 NUL 分隔的字符串可能有害,此时应在译文里自己补空格;
- 只想回写改过的行:给 SLog 传
ID参数,回写时只处理当前 ID 匹配的字符串,未翻译的行可以安全删除; - 校验是否改对了:重导入加
#选项(写作-#)可对比档案内外文件的 hash,未修改的文件自动跳过,更快更安全; - 压缩回写较慢:zlib/deflate/lzma 等重压缩耗时会明显变长,属正常现象;
- 加密/CRC 档案:依赖 MEMORY_FILE 做临时解密、带 CRC 校验的格式不支持回写,遇到这类游戏建议寻找游戏专用重建工具。
七、本地化常用命令行参数速查 ⚡
| 参数 | 作用 | 本地化用法示例 |
|---|---|---|
-l | 只列出文件不解包 | 先看档案里有哪些文本文件 |
-f "{}.lng" | 按通配符过滤文件 | 只提取语言文件 |
-o | 覆盖已存在的输出文件 | 反复调试时免确认 |
-j | 强制 UTF16 输出 | 兼容 Unicode 字符串的 SLog |
-b C | 自定义 *Log 填充字节 | 空隙填空格而非 0 |
# | 按 hash 跳过未修改文件 | 加速大批量回写 |
-Z | 把档案内所有文件清零 | 制作"空档案"分发,再回写译文 |
完整参数列表可直接在命令行不带参数运行 QuickBMS 查看(选项说明见 readme.md),源码实现位于 src/quickbms.c。
八、加分项:QuickBMS 还能反汇编游戏代码 🔍
做深度本地化时,你可能需要看懂游戏的文本加载逻辑。QuickBMS 源码内置了完整的Capstone 反汇编引擎(src/disasm/),支持 x86、ARM、MIPS 等多种架构,配合 BMS 语言的ASM类型可以直接在脚本里反汇编游戏二进制——这也是它区别于普通解包工具的地方。下图是 Capstone 引擎的官方反汇编界面示例:
小结:QuickBMS 的游戏本地化工作流 =SLog 导出文本 + 翻译 + 重导入写回,三个动作覆盖从拆包到封包的闭环。新手建议按"备份 → REIMPORT 试跑 → REIMPORT3 处理语言文件"的顺序上手,遇到 4GB 大档案再切换到quickbms_4gb_files系列工具。掌握这套流程后,你无需为每个游戏单独写一个重打包工具,几十行 BMS 脚本就能让翻译真正落回游戏里。
【免费下载链接】QuickBMSQuickBMS by aluigi - Github Mirror项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考