Kazbek / StarSectorLocalizer

6 stars 10 forks source link

StarSectorLocalizer

Как переводить файлы?

На данный момент патчер может автоматичечки переводить файлы нескольких типов, а именно: txt, csv, json, jar. Все файлы переводов должны находиться в той же папке (по иерархии относительно корня игры), что и файл они переводят. В зависимости от типа файла и обработчика к его названию добавляется постфикс, а какой именно описано в каждом отдельном случае далее. Также учитывайте, что все ключи переводов чувствительны к регистру.

Перевод txt, java файлов

Самыми простыми для переводя являются txt и java файлы. Для этого требуется в оригинальный файл на новую строку добавить [###StarSectorLocalization###], а со следующей строки поместить перевод. Важно сохранить исходный текст в оригинале, т.к. патчер сравнивает его с тем, что найдёт в файле игры, и в случае обновления текста в новых версиях игры, можно будет уведомить о необходимости корректировки перевода. В точности разделителем между оригинальным текстом и переводом является строка вида "\r\n[###StarSectorLocalization###]\r\n", код обработки txt (и по совместительству java) файлов можно найти здесь.

Постфикс к названию файла: .translation.txt

Пример перевода txt файла: ссылка

Перевод json файлов

Для перевода json файла потребуется создать json файл - словарь, который будет содержать пары "ключ - значение", где в качестве ключа буднт выступать оригинальный текст, а в качестве значений перевод. Во время подготовки имеет смысл создать полный список фраз к переводу, а затем уже переводить. В таком случае в качестве перевода можно будет указывать значение null, которое будет игнорироваться при переводе. Либо его можно использовать, когда Вы точно не уверены как правильно перевести ту или иную фразу.

Постфикс к названию файла: .translation.json

Пример перевода json файла: ссылка

Перевод jar файлов

На данный момент основная часть пользовательского интерфейса заключена в jar файлах. Создание перевода для них ничем не отличается по виду от json файлов, требуется создать такие же пары "ключ - значение", однако, найти фразы для перевода несколько сложнее. Поэтому были заранее подготовлены для файла-шаблона для перевода (сейчас это необходимо только для двух файлов), где непереведенный текст имеет значение null.

Переводы для starfarer.api.jar и starfarer_obf.jar

Во время перевода jar файлов происходит их базовый анализ, чтобы предотвратить переименование названия переменных и параметров (например, строковая константа "ship" иногда является параметром используемым в динамическом вызове, а не текстом интерфейса), но это блокирует перевод фразы во всём классе целиком, из-за чего могут оставаться непереведенные места даже если фраза указана в словаре.

Перевод csv файлов

При переводе csv файлов создаётся json файл в котоом указывается перечень столбцов, которые требуется переводить (в элементе "TranslatedColumns"), и переводы "ключ - значение" (в элементе "Translations").

Постфикс к названию файла: .translation.json

Пример перевода json файла: ссылка

Прочие файлы

Если в папке с переводами содержится файл называющийся в точности как оригинальный, то он просто его перезапишет. Так, в частности, работает локализация шрифтов.

Локализация шрифтов

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

Локализованные шрифты находятся в этой папке.

Пользовательские переводы модов

  1. Перевод от WhitePulsar