В Ren-Engine поддерживается система переводов из Ren'Py, но с некоторыми отличиями.

Например, язык по умолчанию напрямую устанавливается в файле `resources/mods/common/config.rpy`:

    init python:
        config.default_language = "english"

В то время как в Ren'Py это просто `None`.

Это сделано для того, чтобы моды (особенно моды-утилиты вроде РПГ-редактора), которые используются в разных играх на разных языках, всегда имели корректный перевод. Для этого нужно обязательно знать название текущего языка, тогда как значение `None` в этом случае просто бесполезно.

## Смена языка

Так его можно переключиться, например, на французский:
`renpy.change_language('french')`
Для `action` в ScreenLang можно использовать `Language`:
`textbutton 'French' action Language('french')`

При смене языка посылается сигнал `'language'`.
Узнать текущий язык можно по значению `config.language` (после строк выше это будет `'french'`).

## Перевод строк

Перевод доступен после инициализации (т. е. использовать в `init`-блоках не получится).
Это сделано из-за того, что язык может быть изменён после инициализации.
Варианты внутриигрового меню и имена персонажей переводятся автоматически.

Пример создания переводов:

    translate french strings:

        old "Оригинальный текст"
        new "Texte original"

        old "Робеспьер"
        new "Robespierre"

        old "Гражданин"
        new "Citoyen"

Примеры использования:
`text _('Оригинальный текст')`
`rp = Character('Робеспьер', unknown_name = 'Гражданин', color = 0xFF0000)`

## Перевод сценария

Файлы переводы сценария для вашей игры можно сгенерировать в лаунчере.

Работает это следующим образом.

Есть сценарий:

    label start:
        # ...
        me "Some Text."
        # ...

Для перевода этой строки вычисляется md5 от (персонаж + пробел + текст + переносы строки), т. е. от `me "Some Text."\r\n`, т. е. `e6deb2859c7681092056b6b84fd149d2`, от него берутся первые 8 символов `e6deb285`. Спереди к этому добавляется название текущей метки и подчёркивание, в итоге получается `start_e6deb285`.

Если существует перевод вроде такого:

    translate french start_e6deb285:
        me "Un texte."

То вместо `Some Text.` будет выведен переведённый вариант. Кстати, приведённый выше код является полноценной меткой (`label`), так что в нём можно использовать также питон, условия, изображения и т. д. Или же можно разбить текст на несколько частей.

Как можно заметить, создание перевода сценария не требует правки этого сценария.
Однако, если сценарий будет изменён, то и перевод должен быть обновлён.

## Перевод названий модов

Обычно мод содержит файл `name`, в котором написано его название.
Для перевода в конец этого файла следует добавить строку вида `lang = name`, например:
`russian = РПГ редактор`

Удалять первую строку (без указания языка) не следует, она используется как вариант по умолчанию, если перевод на текущий язык не будет найден.
Количество строк в этом файле не ограничено.