Поддерживаемый движок · Gettext (.po / .mo)
Gettext — это то, как локализуется большинство неяпонских инди-игр: игры на Python и pygame, Solarus, игры на SDL и GTK, а также всё, что проходит через Poedit, Weblate или Crowdin. Строки лежат в папке locale в виде исходников .po и скомпилированных каталогов .mo. RuneTranslate находит их при создании проекта, переводит каждую строку и записывает рабочий .mo — именно тот файл, который читает запущенная игра.
Gettext-каталоги — это в основном интерфейс: пункты меню, надписи на кнопках, подсказки и строки состояния, повторяющиеся на разных экранах. Добавьте свои существительные, названия предметов и ключевые глаголы в глоссарий один раз, и каждое вхождение переведётся одинаково — здесь это важнее, чем в диалогах, потому что меню, где в одном месте «Сохранить», а в другом «Записать», выглядит как ошибка. Глоссарий: основы →
Укажите RuneTranslate каталог игры — тот, где есть папка locale/, lang/ или i18n/. Определение ищет каталоги по фактическим байтам, а не по расширению, поэтому .mo, который на деле является 3D-сценой, будет проигнорирован. Папка с отдельными .po тоже подойдёт.
Диалог нового проекта показывает, сколько каталогов прочитано, сколько из них скомпилированных .mo против исходных .po, какие языки игра уже содержит и общее число строк — до того, как вы создадите проект.
Выберите целевой язык и сервис перевода: бесплатный Google или DeepL либо свой ключ DeepL, OpenAI, Claude или DeepSeek. Форматные плейсхолдеры — %s, %d, %(player)s, {count} — маскируются перед переводом и восстанавливаются после, чтобы сервис не смог их удалить или переписать.
Строки сгруппированы по файлам каталогов. Каждая запись сохраняет свой gettext-контекст (msgctxt) — то уточнение, которое разработчик написал именно для этой строки. Так видно, почему одно и то же слово встречается дважды, и каждое можно перевести правильно.
Экспорт создаёт полную копию игры с корректным каталогом locale/<ваш язык>/LC_MESSAGES/ И обновлённой версией каталога, который игра уже загружала, — чтобы перевод появился независимо от того, как игра выбирает язык. Записываются и .po, и скомпилированный .mo.