Перевод в RenPy. Уроки. Шрифты в переводе.
Из этого урока вы сможете узнать несколько способов смены/замены шрифтов.
Внимание! Все свои переводы я выполняю в отдельных файлах, а не в файлах проекта, поэтому речь пойдёт именно об отдельных переводах. Всё сказанное ниже — это личный опыт работы с переводами Ren'Py и может содержать какие-то неточности.
Я не буду рассматривать варианты добавления смены языка в игру, об этом и без меня инструкций в интернете достаточно. Здесь я попробовал собрать все случаи, связанные с заявленной темой, которых нигде не встречал сразу в одном месте.
Не редко бывает, когда шрифт в переводимом проекте не поддерживает кириллицу, и в таком случае вместо русского текста на экран выводятся квадратики, кракозябры или вообще пустота. Для решения этой проблемы я вижу два основных способа: физическая замена шрифтов в проекте и переключения шрифтов при смене языка.
1. Физическая замена шрифтов является лёгким в исполнении способом, но он имеет один серьёзный недостаток — заменяются шрифты для всех языков в проекте, а не только для переводимого языка.
Из названия способа понятно, что файлы шрифтов в проекте заменяются на те, которые поддерживают кириллицу.
Единственная сложность, которая может возникнуть при таком способе, — это обнаружение шрифта, который не поддерживает кириллицу, если в проекте используются несколько шрифтов.
Обычно шрифты в проектах представлены стандартными файлами шрифтов, которые имеют расширения .ttf или .otf. Остаётся только найти такие файлы в проекте и поочерёдно заменить их на свои.
2. Переключение шрифтов при смене языка является несколько более сложным в исполнении способом, чем первый, но он позволяет добавлять шрифты только для определённого языка, не затрагивая оригинальных шрифтов проекта. Шрифты в этом способе меняются при смене пользователем используемого языка в проекте. Этот способ я разделю ещё на несколько вариантов:
a) Переключение основных шрифтов проекта, прописанных в файле gui.rpy.
Кусок из файла gui.rpy:
На изображении можно увидеть, что в проекте стандартно используется 3 шрифта: gui.text_font — шрифт стандартного, основного текста, используемого обычно в диалоговом окне и других местах; gui.name_text_font — шрифт для имён персонажей, используемый в заголовке диалогового окна; gui.interface_text_font — шрифт, используемый в меню игры. Это основные три шрифта, но в некоторых индивидуальных случаях требуется брать и другие шрифты из этого gui.rpy.
Чтобы эти шрифты менялись при смене языка, надо создать файл с расширением .rpy в (необязательно) папке со своим переводом, куда прописать такой код:
В строке "translate rus python:" rus - это префикс используемого языка, или по-другому - имя папки с переводом в папке проекта /game/tl/.
После этого, внесённые в этот блок шрифты будут меняться в проекте при смене языка.
б) Переключение шрифтов проекта, прописанных в стилях проекта.
Нередко авторы в своих проектах устанавливают стили для текста. Для примера я беру такой стиль:
Чтобы сделать шрифт переключаемый при смене языка для этого стиля, надо создать файл с расширением .rpy в (необязательно) папке со своим переводом, куда прописать такой код:
Как и в предыдущем случае, в строке "translate rus style board_text:" rus - это префикс используемого языка, или по-другому - имя папки с переводом в папке /game/tl/.
Нет никакой необходимости переписывать весь стиль в этот блок, а достаточно только строки с font, куда вписать свой шрифт на замену. Все остальные свойства стиля при таком написании остаются в силе. Но если вы хотите изменить и даже прописать какие-то новые свойства стиля, вы можете это сделать тут.
После этого, внесённые в этот блок шрифты будут меняться в проекте при смене языка.
в) Переключения шрифтов, которые прописаны в "персонаже".
Бывают случаи, когда шрифты прописываются в переменных, определяющих персонажа. Пример:
Чтобы шрифт менялся при смене языка в таком случае, я предлагаю добавлять к каждому диалогу данного персонажа в файлах вашего перевода нужный шрифт таким образом:
Внимание! На этом скрине ошибка и вместо what должно быть who. Скрин будет заменен позже.
Также этот вариант можно использовать вместо варианта a или ограничено в б, так как этот вариант не работает с old-new конструкциями файлов перевода.
Если вам известен более удобный вариант смены шрифта прописанного в "персонаже" при смене языка, то прошу сообщить мне.
г) Переключение шрифтов "намертво" прописанных в коде проектов.
Бывают случаи, когда шрифт прописывается в какой-то части кода прямым указанием, ниже пример:
В таком случае я предлагаю вот такое решение, которое позволяет изменяться шрифту при смене языка:
В этом примере я вношу изменения в сам код проекта, но есть возможность изменять некоторые части проекта вообще не трогая его файлов, но об этом я хотел бы поговорить в другом уроке по переводу RenPy, который планирую опубликовать позже.
На вопрос "А зачем это все нужно, когда можно закинуть шрифты в папку с переводом, как это делается с картинками?" сразу отвечаю, что это нерабочий способ, это обманка, в таком случае шрифты заменяются для всех языков проекта, а не производится смена шрифтов при смене языка.
На этом завершаю и, надеюсь, что вам это было полезно.
Pretender
Однозначно в закладки для начинающих переводчиков.
May 30 2023 11:11 
1
Дмитрий Перевозкин
Нажимаю в ренри "создать переводы". И - их нет. В доступе только часть системных текстов - сохранить-загрузить, а диалогов в файле нет вообще. Шо делать?)
Sep 21 2025 20:34 (changed)
lf2mr
Дмитрий Перевозкин, возможно, игра запакована в rpa-архивы, а RenPy считывает текст для переводов только с rpy-файлов. Если так, то сначала игру надо распаковать.
Sep 22 2025 04:49 

1