Как перевести игру на Ren’Py на английский (полное руководство)
Переводите визуальные новеллы Ren’Py на английский с RuneTranslate — обрабатывая россыпные .rpy, скомпилированные .rpyc и упакованные .rpa игры, маскируя разметку, встраивая шрифт CJK/не-латиница и экспортируя перевод, который игра загружает при запуске.
Ren’Py — движок на Python, стоящий за большинством западных и японских визуальных новелл — от крошечных джемов itch.io до коммерческих тайтлов DLsite. Это один из самых чистых движков для перевода: RuneTranslate никогда не перезаписывает оригинальный скрипт, он накладывает перевод сверху, так что игра остаётся целой. Это руководство проводит через перевод игры на Ren’Py на английский (или любой язык) от начала до конца с RuneTranslate, включая три формы, в которых поставляется игра на Ren’Py — россыпной исходник .rpy, только-скомпилированный .rpyc и упакованный .rpa.
Что вам нужно
- RuneTranslate для Windows — бесплатно, каждый движок и провайдер разблокирован.
- Папка игры Ren’Py. Это каталог, содержащий
.exeигры плюс подпапкуgame/(которая держит файлы.rpy,.rpycи/или.rpa). - Целевой язык — английский, испанский, французский, немецкий, португальский, русский, китайский, итальянский, турецкий, вьетнамский и 20+ других.
- Один провайдер перевода. Бесплатный Google Translate работает из коробки; у DeepL есть бесплатный тариф; OpenAI, Anthropic, локальная модель (Ollama / LM Studio) и любой OpenAI-совместимый API — со своим ключом. Визуальные новеллы насыщены диалогами и чувствительны к тону, поэтому LLM (OpenAI / Anthropic) или DeepL обычно читаются лучше всего.
Шаг 1: Откройте папку игры
Запустите RuneTranslate, нажмите New project и укажите его на каталог игры Ren’Py (папку с .exe или внутреннюю папку game/). Определение движка запускается автоматически и распознаёт проект как Ren’Py в момент, когда видит дерево game/.
Как читается текст, зависит от того, что поставил разработчик:
- Игры на исходниках — россыпные скрипты
.rpyподgame/. RuneTranslate парсит их напрямую. Это идеальный случай. - Только-скомпилированные игры — только байткод
.rpyc. Встроенный сайдкар unrpyc декомпилирует их обратно в читаемый.rpy, затем парсит как обычно. - Упакованные игры — скрипты, упакованные в архив
.rpa. RuneTranslate распаковывает его вендоризованным, пропатченным rpatool в рабочее пространство проекта под%APPDATA%/RuneTranslate/renpy-workspace/<projectId>/, декомпилирует, затем парсит. Наш форк rpatool автоматически определяет обфусцированные и вендорские кастомные ключи архивовRPA-x.y, поэтому он открывает много архивов, которые апстрим-инструменты отказываются.
Ваша оригинальная папка игры никогда не изменяется.
Шаг 2: Как извлекается текст Ren’Py
RuneTranslate вытягивает операторы say (диалоги), варианты выбора menu и переводимый текст интерфейса из скрипта и перечисляет их в редакторе, сгруппированные по файлу. Текстовая разметка Ren’Py — {b}, {color=#fff}, ожидания {w}, курсив {i} и интерполяции переменных в стиле [player_name] — маскируется за числовыми плейсхолдерами [[R#]], прежде чем что-либо достигнет провайдера, затем восстанавливается на выходе. Машина никогда не видит теги, поэтому не может их искорёжить, отбросить или перевести.
Шаг 3: Переведите
Выберите провайдера и запустите. Для визуальной новеллы средней длины (~8 000–15 000 строк) на тарифе Supporter:
- OpenAI / Anthropic — лучше всего для голоса персонажа, шуток и стилизованной речи; примерно несколько долларов в стоимости API за целую игру. Редактор показывает оценку токенов + USD перед тем, как вы возьмёте на себя обязательства.
- DeepL — быстр и чист для повествования; бесплатный тариф покрывает 500k символов/месяц.
- Бесплатный Google Translate — $0, годится для меню и коротких строк, слабее на диалогах.
Внесите ваш состав и повторяющиеся термины в глоссарий заранее, чтобы каждая сцена отображала имена одинаково — см. Глоссарий 101. На бесплатном тарифе перевод умеренно ограничен по скорости — примерно в 2x медленнее на AI-провайдерах, меньше на бесплатных скраперах (меньшая параллельность, меньшие пакеты, короткая пауза между пакетами) — с идентичным качеством вывода. Платные тарифы работают на полной скорости и добавляют память переводов и маршрутизацию провайдеров.
Шаг 4: Проверьте в редакторе
Каждая строка попадает в таблицу рядом с её источником — по умолчанию японский или тот язык, на который вы задали проект (китайский, корейский, английский и другие). Отредактируйте всё, что машина сделала неверно, инлайн (автосохранение при потере фокуса или Ctrl+Enter), используйте поиск и замену для термина, который вы переименовали, или запустите необязательный AI-доработчик для контекстно-зависимой вычитки вторым проходом. Поскольку диалоги Ren’Py длинные, именно здесь происходит полировка.
Шаг 5: Экспортируйте играбельную сборку
Нажмите Export. RuneTranslate не полагается на то, что Ren’Py предпочитает россыпной .rpy в tl/ — это работает только для текста, ключёванного по id диалогов, которые скомпилированные игры надёжно не выдают. Вместо этого он кладёт несколько файлов в game/ и применяет перевод во время выполнения:
rt_translations.json— карта исходный-текст → перевод для каждой строки диалога и меню.zzz_runetranslate_language.rpy— небольшой хук времени выполнения, который устанавливаетconfig.say_menu_text_filter. Он сопоставляет каждую строку, которую игра собирается показать, с картой и подставляет ваш перевод, и он принудительно задаёт активный язык игры переведённым, чтобы текст экранов и интерфейса следовал за ним.tl/translated/translation.rpy— держит только строки интерфейса / экранов_()(кнопки, меню, подсказки), которые Ren’Py действительно разрешает надёжно собственным механизмом.- Встроенный шрифт плюс
zzz_runetranslate_font.rpy, когда целевой язык его требует — см. заметку про не-латиницу ниже.
Запустите .exe игры — и она играется на вашем целевом языке, с нетронутыми оригинальными скриптами и архивами. Чтобы переключиться обратно, удалите файлы, которые добавил RuneTranslate — rt_translations.json, zzz_runetranslate_language.rpy, встроенный шрифт и его .rpy и tl/translated/.
Не-латинские языки
Большинство игр Ren’Py поставляют шрифт только для латиницы, поэтому китайский, корейский, японский, тайский или арабский иначе отображались бы пустыми квадратиками. Когда вы нацеливаетесь на один из них, RuneTranslate встраивает подходящий шрифт (NanumGothic / Noto Sans) и направляет каждый шрифт, используемый игрой, через config.font_replacement_map Ren’Py, так что переведённый текст показывается корректно без редактирования собственных ресурсов игры.
Известные ограничения
- Стандартные RPA-2 / RPA-3 / RPA-3.2 / RPA-4.0 и распространённые вендор-обфусцированные архивы открываются автоматически; действительно нестандартный контейнер или внешне удерживаемый ключ может не распаковаться.
- Текст, запечённый в изображения (логотипы заставок, нарисованный вручную интерфейс, подписи CG), — пиксельная работа и не переводится — вне области машинного перевода.
- Сильно заскриптованные экраны, которые строят строки во время выполнения из переменных, могут потребовать быстрого прохода ручной правки в редакторе.
Почему это проще старого способа
Ручной путь означал декомпиляцию .rpyc вручную, запуск rpatool на архиве, затем либо перевод исходника на месте (и повторную его поломку при следующем обновлении игры), либо ручное написание блоков tl/ строка за строкой — и всё ещё борьбу с отсутствующими шрифтами на не-латинских языках. RuneTranslate делает цепочку декомпиляция + распаковка + извлечение + хук времени выполнения в несколько кликов, держа при этом редактор открытым, чтобы вы контролировали формулировки.
Смотрите страницу движка Ren’Py для полного списка функций, читайте руководство по визуальным новеллам Kirikiri про другой движок ВН или скачайте RuneTranslate и попробуйте его на реальной игре.
Готовы попробовать RuneTranslate?
Бесплатный тариф открывает все движки и всех провайдеров перевода. Supporter ($3/mo) открывает полную скорость.
Скачать для Windows
