Skip to main content

FTB Quest Localizer

PyPI version Python Version License

English | 中文

A tool for extracting and managing FTB Quest localization strings. Supports both new format (1.20+, with lang/ directory) and old format (pre-1.20, inline strings in chapter files).

Installation

From PyPI:

pip install ftb-quest-localizer

From source (using uv):

git clone https://github.com/zack-zzq/FTBQuestLocalizerPython
cd FTBQuestLocalizerPython
uv sync

Usage

The tool provides three commands: split, extract, and merge.

split — New Format (1.20+)

Split SNBT lang files from lang/en_us/ into per-chapter JSON files for translation:

ftb-quest-localizer split -i <ftbquests/quests> -o <output_dir>

This reads the lang/en_us/ directory and outputs one JSON file per chapter, plus separate files for chapter groups, reward tables, etc.

extract — Old Format (pre-1.20)

Extract translatable strings directly from chapter SNBT files:

ftb-quest-localizer extract -i <ftbquests/quests> -o <output_dir> -m <modpack_name>

This replaces inline strings with translation keys and generates an en_us.json language file.

merge — Merge Translations Back

Merge translated JSON files back into SNBT lang directory structure:

ftb-quest-localizer merge -i <json_dir> -o <output_lang_dir>

This recreates the same structure as lang/en_us/ (chapter.snbt, chapter_group.snbt, chapters/*.snbt, etc.) for direct use in a modpack.

As a Python Library

from ftb_quest_localizer.splitter import split_lang_files
from ftb_quest_localizer.extractor import extract_quest_strings
from ftb_quest_localizer.merger import merge_json_to_lang_dir

# New format: split SNBT lang files into JSON
split_lang_files("path/to/ftbquests/quests", "output/")

# Old format: extract strings from chapter files
extract_quest_strings("path/to/ftbquests/quests", "output/", "modpack_name")

# Merge translated JSON back into SNBT
merge_json_to_lang_dir("translated_json/", "lang/zh_cn/")

How It Works

New Format (1.20+)

  1. Reads SNBT lang files from lang/en_us/ (chapter, quest, task, reward entries)
  2. Flattens multi-line descriptions into numbered keys
  3. Groups entries by chapter and outputs per-chapter JSON files
  4. Merge reconstructs the original directory structure from translated JSON

Old Format (pre-1.20)

  1. Parses chapter SNBT files using snbtlib
  2. Extracts title, subtitle, description, text, and hover text fields
  3. Replaces original text with translation keys
  4. Generates JSON language files with the original text

Release files for ftb-quest-localizer 2.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ftb-quest-localizer 2.0.5
File Size Uploaded
ftb_quest_localizer-2.0.5.tar.gz 25.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ftb-quest-localizer 2.0.5
File Interpreter ABI Platform
ftb_quest_localizer-2.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 39.4 kB

Release files / ftb_quest_localizer-2.0.5.tar.gz

Download URL ftb_quest_localizer-2.0.5.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b3946b33ad555485ef0685d07eb80907f0d5482c2d8b64703f0c6239d9c16065
BLAKE2b-256 checksum
How to use checksums
67d0037256ceeadb4906a621110de7c2d2967a94a3ae96835dbb783ffc06edda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 26, 2026.

Transparency log

Release files / ftb_quest_localizer-2.0.5-py3-none-any.whl

Download URL ftb_quest_localizer-2.0.5-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b3bdcc8a7be89448f20991ca82bb67340c12787472c961492946ab30b1aaefd4
BLAKE2b-256 checksum
How to use checksums
14ae83e8fc826e69a325e8076751fc4501c354a7fd8e90caeea30eaef51c24ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.5 This release

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page