На данный момент патчер может автоматичечки переводить файлы нескольких типов, а именно: txt, csv, json, jar. Все файлы переводов должны находиться в той же папке (по иерархии относительно корня игры), что и файл они переводят. В зависимости от типа файла и обработчика к его названию добавляется постфикс, а какой именно описано в каждом отдельном случае далее. Также учитывайте, что все ключи переводов чувствительны к регистру.
Самыми простыми для переводя являются txt файлы. Для этого требуется в оригинальный файл на новую строку добавить [###StarSectorLocalization###]
, а со следующей строки поместить перевод. Важно сохранить исходный текст в оригинале, т.к. патчер сравнивает его с тем, что найдёт в файле игры, и в случае обновления текста в новых версиях игры, можно будет уведомить о необходимости корректировки перевода. В точности разделителем между оригинальным текстом и переводом является строка вида "\r\n[###StarSectorLocalization###]\r\n"
, код обработки txt файлов можно найти здесь.
Постфикс к названию файла: .translation.txt
Пример перевода txt файла: ссылка
Для перевода json файла потребуется создать json файл - словарь, который будет содержать пары "ключ - значение", где в качестве ключа буднт выступать оригинальный текст, а в качестве значений перевод. Во время подготовки имеет смысл создать полный список фраз к переводу, а затем уже переводить. В таком случае в качестве перевода можно будет указывать значение null
, которое будет игнорироваться при переводе. Либо его можно использовать, когда Вы точно не уверены как правильно перевести ту или иную фразу.
Постфикс к названию файла: .translation.json
Пример перевода json файла: ссылка
На данный момент основная часть пользовательского интерфейса заключена в jar файлах. Создание перевода для них ничем не отличается по виду от json файлов, требуется создать такие же пары "ключ - значение", однако, найти фразы для перевода несколько сложнее. Поэтому были заранее подготовлены для файла-шаблона для перевода (сейчас это необходимо только для двух файлов), где непереведенный текст имеет значение null
.
Переводы для starfarer.api.jar и starfarer_obf.jar
Во время перевода jar файлов происходит их базовый анализ, чтобы предотвратить переименование названия переменных и параметров (например, строковая константа "ship" иногда является параметром используемым в динамическом вызове, а не текстом интерфейса), но это блокирует перевод фразы во всём классе целиком, из-за чего могут оставаться непереведенные места даже если фраза указана в словаре.
При переводе csv файлов создаётся json файл в котоом указывается перечень столбцов, которые требуется переводить (в элементе "TranslatedColumns"
), и переводы "ключ - значение" (в элементе "Translations"
).
Постфикс к названию файла: .translation.json
Пример перевода json файла: ссылка
Если в папке с переводами содержится файл называющийся в точности как оригинальный, то он просто его перезапишет. Так, в частности, работает локализация шрифтов.
В оригинальных шрифтах игры отсутствуют символы для отображения русских букв (да и практически всех, кроме английского), поэтому требуется заменять их собственными шрифтами с поддержкой интересующего языка. Во время локализации эти файлы просто заменяются.
Локализованные шрифты находятся в этой папке.