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

Например, язык по умолчанию напрямую устанавливается в файле `resources/mods/common/config.rpy`:  
```renpy
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`-блоках не получится).  
Это сделано из-за того, что язык может быть изменён после инициализации.  
Варианты внутриигрового меню и имена персонажей переводятся автоматически.  

Пример создания переводов:  
```renpy
translate french strings:
	
	old "Оригинальный текст"
	new "Texte original"
	
	old "Робеспьер"
	new "Robespierre"
	
	old "Гражданин"
	new "Citoyen"
```

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

***

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

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

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

Есть сценарий:  
```renpy
label start:
	# ...
	me "Some Text."
	# ...
```

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

Если существует перевод вроде такого:  
```renpy
translate french start_e6deb285:
	me "Un texte."
```
То вместо `Some Text.` будет выведен переведённый вариант.
Кстати, приведённый выше код является полноценной меткой (`label`),
так что в нём можно использовать также питон, условия, изображения и т. д.
Или же можно разбить текст на несколько частей.

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

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

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

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