Quests Lang Splitter: зачем делить языковые файлы FTB Quests
Если вы собираете модпак с квестами, вы наверняка сталкивались с тем, что один большой en_us.snbt превращается в «монолит»: правки сливаются в одном diff, конфликты в Git становятся болью, а переводчикам неудобно работать параллельно. Мод Quests Lang Splitter решает именно эту задачу: он помогает разбить lang-файлы на логичные части, чтобы версионирование, ревью и локализация шли спокойнее. Ниже разберём механику, команды и рабочий процесс без лишней теории — так, как это обычно делают на серверах и в сборках с FTB Quests.
Что меняется в структуре папок
После разбиения вместо одного «плоского» файла появляется аккуратная иерархия в lang/: отдельные сниппеты для глав, групп глав, названия книги квестов, таблиц наград и т. д. Для квестов, задач и связей квестов записи группируются по главам — это сильно упрощает навигацию по блокам текста и снижает риск случайно затронуть чужую главу.
- chapters/ — файлы вида
chapter1.snbt, где сосредоточены id квестов, задач и связей для конкретной главы - chapter.snbt — имена глав
- chapter_group.snbt — имена групп глав
- file.snbt — название квестбука
- reward_table.snbt — названия таблиц наград
- en_us.snbt — исходный файл, который при загрузке/перезагрузке может обновляться из разделённых файлов
Такой подход особенно полезен командам, которые живут в Git: меньше «шумных» изменений, проще ревью, проще параллельная работа переводчиков. Кстати, если вы часто ставите моды и пересобираете клиент, установка дополнений вроде этого становится проще с хорошим лаунчером: этот мод можно легко установить через лаунчер foxygame.net — удобный, гибкий и современный лаунчер для Minecraft, где можно скачать моды прямо из меню, не теряясь в ручной возне с jar-файлами.
Команды: split, fill_missing_translation и purge_merged
Утилита ориентирована на админов сборки и мейнтейнеров контента. Команда /langsplitter split принимает параметр replace_unmerged (чаще всего вы захотите false, если не планируете перезаписывать уже сгенерированные и не смерженные split-файлы) и опционально locale (например, pt_br, zh_cn, ko_kr). Если локаль не указать, разделение выполнится для всех доступных языков.
Команда /langsplitter fill_missing_translation заполняет отсутствующие строки на основе en_us и затем запускает split. Полезно стартовать переводчикам: сначала появляется полный каркас записей, дальше вы точечно переводите нужное. Новые добавленные записи можно отслеживать в debug.log — это спасает, когда нужно понять, что именно «подтянулось» автоматически.
Когда вы загружаете или перезагружаете квесты и split-файлы существуют, они мержатся обратно в исходный файл, после чего на диске могут появиться файлы с суффиксом .snbt_merged. Если такие артефакты раздражают визуально, команда /langsplitter purge_merged поможет их убрать. В идеале это дополняется корректным .gitignore, чтобы репозиторий оставался чистым.
Практика для переводчиков и мейнтейнеров
Переводчикам обычно удобно начать с fill_missing_translation, затем перевести нужные фрагменты, выполнить /ftbquests reload, чтобы изменения смержились. Если правки продолжаются, можно снова запустить split или отредактировать .snbt_merged, переименовать обратно в .snbt и снова перезагрузить. Перед коммитом часто делают финальный split и отправляют в репозиторий только релевантные split-файлы; при необходимости — purge_merged.
Мейнтейнерам имеет смысл обновить .gitignore: в lang/ остаются папки локалей, а «оригинальные» монолитные *.snbt в корне lang для локали можно убрать из версионирования, потому что они дальше генерируются при мерже из split-файлов на запуске. После того как структура папок настроена, политика простая: принимать PR только с split-файлами — так проще жить на разных версиях Minecraft и не ломать историю изменений.
Папка recovery: страховка от случайных перезаписей
Если при мерже заменяется существующая запись (например, вы снова перевели строку), мод может сохранить резервную копию в recovery. Там появится файл вида en_us_<timestamp>.snbt с указанием пути файла, ключа и пар old/new. Это не «магия», а обычная дисциплина контента: вы быстрее откатываете спорные правки и спокойнее обновляете модпак между релизами.
Лицензия и когда мод реально нужен
Проект распространяется под лицензией MIT — это обычно хороший знак для интеграции в сборки и форков. Если ваш проект серьёзно опирается на FTB Quests и у вас растёт команда локализации, Quests Lang Splitter почти неизбежно окупается: меньше конфликтов, понятнее структура, проще сопровождение обновлений и контроль качества текстов.
В итоге мод не «рисует новые биомы» и не меняет игровые механики в прямом смысле, но делает инфраструктуру квестов зрелой: вы переводите и правите контент так, как положено взрослой разработке — маленькими, осмысленными кусками, с предсказуемым мержем и понятными командами для обслуживания.
--- **Обновление 27.08.2026:** Добавлено 2 файла для версии 1.21.1 (NeoForge).