Skip to content

Null993/DS3_ModLocalizationExtractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🎮 DarkSoul3 JSON 工具(Extraction / Merge)

用于大规模多语言翻译前的预处理:将 DarkSoul3 游戏文本提取为多个可编辑文件并在修改后恢复成原始 SmithBox JSON 格式。


✨ 功能概览

本工具提供 两个核心功能:提取(Extract)与合并(Merge)


1. 🔍 提取(Extraction)

从 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
        ...
    
  • 每个分片仅包含 纯文本数据(更适合人工或翻译工具编辑)

  • 可自定义是否拆分与每片大小


2. 🔄 合并(Merge)

将多文件格式(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"]

特点:

  • 最简单
  • 兼容所有翻译工具
  • 不丢失空字符串
  • 完全保留顺序

② Translator++(XLSX)

导出为:

part_1.xlsx
part_2.xlsx
...

仅包含两列:

OriginalText Initial
需要翻译的文本 (留空)

注意:

  • Initial 始终为空
  • 如果未安装 openpyxl,程序会自动降级为 JSON 数组导出
  • 合并时优先读取 Initial 列,如为空则使用 OriginalText

📁 头文件(0_header.json)

示例:

{
  "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)
  • 指定导出格式,合并时会自动检测

🖥 用户操作步骤

1)提取流程

  1. 选择原始 SmithBox 导出的 JSON
  2. 选择导出格式(极简默认 / translatorpp)
  3. 可选启用拆分
  4. 点击“开始提取”

程序会生成:

xxx_extracted/
    0_header.json
    part_1.json
    part_2.json

或:

xxx_extracted/
    0_header.json
    part_1.xlsx
    part_2.xlsx

2)合并流程

  1. 选择提取目录 _extracted/
  2. 程序自动识别导出格式
  3. 选择输出文件路径
  4. 点击“开始合并并恢复”

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages