Перевод в RenPy. Уроки. Шрифты в переводе.
Из этого урока вы сможете узнать несколько способов смены/замены шрифтов.
Внимание! Все свои переводы я выполняю в отдельных файлах языковых пакетов, а не в файлах проекта, поэтому речь в моих уроках будет идти именно об отдельных переводах и возможно не подходить для случае перевода в файлах проекта. Урок составлен по личному опыту работы с переводами RenPy и может содержать какие-то неточности.
В этом уроке я не буду рассматривать варианты добавления смены языка в игру, так как об этом инструкций в инете достаточно. Здесь я попробовал собрать все случаи связанные с заявленной темой, которых нигде не встречал сразу в одном месте. Также, возможно, этот урок не будет полностью понятен пользователям с нулевыми навыками в этом деле.
Не редко бывает, что шрифт в переводимом проекте не поддерживает кириллицу, и в таком случае вместо русского текста на экран выводятся квадратики, кракозябры или вообще пустота. Для решения этой проблемы я вижу два основных способа: физическая замена шрифтов в проекте и переключения шрифтов при смене языка.
1. Физическая замена шрифтов является легким в исполнении способом, но он имеет один серьезный недостаток - заменяются шрифты для всех языков в проекте, а не только для переводимого языка.
Из описания способа понятно, что достаточно заменить файлы шрифтов в проекте на те, которые поддерживают кириллицу.
Единственная сложность, которая может возникнуть при таком способе, это некая сложность обнаружения шрифта, который не поддерживает кириллицу, если в проекте используются несколько шрифтов.
Обычно шрифты в проектах представлены стандартными файлами шрифтов, которые имеют расширения .ttf или .otf. Остается только найти такие файлы в проекте и поочередно заменять их на свои, при этом запускать проект и смотреть изменения в нем, чтобы вычислить именно не поддерживаемые кириллицу шрифты.
2. Переключение шрифтов при смене языка является несколько более сложным в исполнении способом, чем первый, но он позволяет добавлять шрифты только для определенного языка, не затрагивая оригинальных шрифтов проекта. Шрифты в этом способе меняются при смене пользователем используемого языка в проекте. Этот способ я разделю еще на несколько вариантов:
a) Переключение основных шрифтов проекта, прописанных в файле gui.rpy.
Кусок из файла gui.rpy:
На изображение можно увидеть, что в проекте стандартно используется 3 шрифта: gui.text_font - шрифт стандартного, основного текста, используемого обычно в диалоговом окне и других местах; gui.name_text_font - шрифт для имен персонажей, используемый в заголовке диалогового окна; gui.name_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