用于大规模多语言翻译前的预处理:将 DarkSoul3 游戏文本提取为多个可编辑文件并在修改后恢复成原始 SmithBox JSON 格式。
本工具提供 两个核心功能:提取(Extract)与合并(Merge)。
从 SmithBox 导出的原始 JSON 中读取所有 FMG Wrappers,并提取其中的所有文本,生成为多个易于翻译和处理的分片文件。
-
自动读取 FMG 结构:
- Wrapper 名称
- Wrapper ID
- FMG 名称
- Entries 列表
- Entry ID
- 以及重要元字段
Version,BigEndian,Unicode,Compression
-
自动生成提取专用目录:
<source>_extracted/ ├── 0_header.json ├── part_1.json 或 part_1.xlsx ├── part_2.json 或 part_2.xlsx ... -
每个分片仅包含 纯文本数据(更适合人工或翻译工具编辑)
-
可自定义是否拆分与每片大小
将多文件格式(JSON 或 XLSX)重新合并成一个完整的 DarkSoul3 游戏文本 JSON,格式完全与 SmithBox 导出的原始结构一致。
- Entries 顺序完全恢复
- 每条 Entry 的 ID 不变
- Version / BigEndian / Unicode / Compression 等 FMG 元字段自动恢复
- 输出一个可直接通过 SmithBox 导入的 JSON 文件
输出示例:
{
"Name": "MenuText",
"FmgWrappers": [
{
"Name": "Messages - DLC2.fmg",
"ID": 279,
"Fmg": {
"Name": "Messages - DLC2.fmg",
"Entries": [
{ "ID": 5010, "Text": "Take the plunge. You won’t die." },
{ "ID": 5011, "Text": "Take the plunge." }
],
"Version": 2,
"BigEndian": false,
"Unicode": true,
"Compression": 1
}
}
]
}在“提取”页签中可以选择导出格式。
["text1", "text2", "", "", "text3"]
特点:
- 最简单
- 兼容所有翻译工具
- 不丢失空字符串
- 完全保留顺序
导出为:
part_1.xlsx
part_2.xlsx
...
仅包含两列:
| OriginalText | Initial |
|---|---|
| 需要翻译的文本 | (留空) |
注意:
- Initial 始终为空
- 如果未安装
openpyxl,程序会自动降级为 JSON 数组导出 - 合并时优先读取
Initial列,如为空则使用OriginalText
示例:
{
"Meta": {
"SourceTopName": "menu_en_cinder.json",
"Version": 1,
"TotalEntries": 35290,
"ChunkCount": 20,
"Chunks": [
{ "start": 0, "count": 2500 },
{ "start": 2500, "count": 2500 }
],
"ExtractFormat": "极简默认"
},
"Structure": [ ... ],
"EntryIDs": [ 7000, 7001, ... ]
}功能:
- 完整记录原始 JSON 的结构
- 存储所有 Entry 的 ID
- 标记所有分片的范围(start, count)
- 指定导出格式,合并时会自动检测
- 选择原始 SmithBox 导出的 JSON
- 选择导出格式(极简默认 / translatorpp)
- 可选启用拆分
- 点击“开始提取”
程序会生成:
xxx_extracted/
0_header.json
part_1.json
part_2.json
或:
xxx_extracted/
0_header.json
part_1.xlsx
part_2.xlsx
- 选择提取目录
_extracted/ - 程序自动识别导出格式
- 选择输出文件路径
- 点击“开始合并并恢复”