-
Notifications
You must be signed in to change notification settings - Fork 116
Форматы файлов
Перевод состоит из файлов различного формата:
Этот формат представляет собой плоский неструктурированный набор XML-тегов с текстами и фразами. Используется для текстов пользовательского интерфейса и общих фраз.
В игре файлы этого формата находятся по путям:
-
Mods\Core\Languages\English\Keyed - оригинал
-
Mods\Core\Languages\Russian\Keyed - перевод
В файлах этого формата теги представляют собой путь, по которому происходит подстановка строк в ресурсах игры (Defs), имеют более сложную, вложенную, структуру.
Допустим, в файле Data\Core\Defs\Tutor\Concepts_NotedSelfshow.xml ресурсов игры находится объект
<ConceptDef>
<defName>Stockpiles</defName>
<label>Stockpiles</label>
<priority>40</priority>
<helpText>Your colonists need somewhere to store items. Designate a STOCKPILE for them to store things.\n\nFind the stockpile in the ZONES section of the ARCHITECT menu in the lower-left.</helpText>
<highlightTags>
<li>MainTab-Architect-Closed</li>
<li>DesignationCategoryButton-Zone-Closed</li>
<li>Designator-ZoneAddStockpile_Resources</li>
</highlightTags>
</ConceptDef>
<ConceptDef>
- указывает на путь, по которому игра будет искать строки для текущей локализации, то есть, в папке Mods\Core\Languages\Russian\DefInjected\ConceptDef. Имя файла не имеет значения для игры.
<defName>Stockpiles</defName>
- указывает на имя объекта, в данном случае: Stockpiles.
<label>Stockpiles</label>
, <priority>40</priority>
- имена и значения полей объекта Stockpiles.
В файле перевода ConceptDef\Concepts_NotedSelfshow.xml вы видите строки:
<Stockpiles.label>Склады</Stockpiles.label>
<Stockpiles.helpText>Вашим поселенцам нужно где-то хранить вещи. Обозначьте для них склад.\n\nЧтобы разместить склад, зайдите во вкладку «Области» в меню «Проектирование» в левом нижнем углу экрана.</Stockpiles.helpText>
Здесь строка <Stockpiles.label>Склады</Stockpiles.label>
значит, что значение поля label объекта Stockpiles будет заменено на Склады
.
В свою очередь, строка <Stockpiles.helpText>Вашим поселенцам нужно где-то хранить вещи. Обозначьте для них склад.\n\nЧтобы разместить склад, зайдите во вкладку «Области» в меню «Проектирование» в левом нижнем углу экрана.</Stockpiles.helpText>
отвечает за замену значения поля helpText того же объекта.
Иногда в описаниях игровых объектов встречаются списки. В файле перевода инъекции для элементов списка просто нумеруются, с нуля. Например, объекту из ресурсов игры:
<HediffDef ParentName="DiseaseBase">
<defName>Asthma</defName>
<label>asthma</label>
...
<stages>
<li>
<label>minor</label>
...
</li>
<li>
<label>major</label>
...
</li>
<li>
<label>major</label>
...
</li>
</stages>
</HediffDef>
соответствует перевод:
<Asthma.label>астма</Asthma.label>
<Asthma.stages.0.label>лёгкая</Asthma.stages.0.label>
<Asthma.stages.1.label>средняя</Asthma.stages.1.label>
<Asthma.stages.2.label>тяжёлая</Asthma.stages.2.label>
Эти подставленные значения будут видны в игре.
Если в переводе какая-либо из ожидаемых подстановок отсутствует, то игра при старте в режиме разработчика выдаст соответствующее предупреждение в логе.
В ресурсах игры все объекты описаны по пути _Data\Core\Defs_. Они разбиты по подпапкам.
В переводе файлы формата DefInjected находятся по пути _Data\Core\Languages\Russian\DefInjected_, тоже распределены по папкам.
Имена папок нельзя менять, иначе то, что там находилось, игрой не подтянется. Внутри папки можно мешать файлы и объекты как угодно. Но желательно руководствоваться соответствовать переводам на другие языки, например, на немецкий. Это делается для удобства поиска.
С недавних пор они получили формат Def-Injected и находятся в подпапке BackstoryDef
У каждой предыстории есть следующие поля:
- title - полный заголовок, обязательное поле, не более 19-21 символов. Шрифт в игре не моноширинный, то есть длина строки зависит от символов этой строки. Рекомендуется проверять заголовки на их вместимость в карточке персонажа для каждого сомнительного случая.
- titleFemale - полный заголовок для персонажей женского пола, необязательное поле;
- titleShort- краткий заголовок, обязательное поле, не более 13 символов;
- titleShortFemale - краткий заголовок для персонажей женского пола, необязательное поле;
- baseDesc - сам текст предыстории;
Для описания предысторий должно использоваться простое прошедшее время. Вам поможет Gender-подсимвол.
Выработанный ранее подход, с настоящим информирующим временем, более неактуален. Все такие предыстории будут постепенно переведены на прошедшее время.
Простые текстовые файлы, в которых каждое слово стоит на отдельной строке. В каждом файле содержатся слова по своей тематике. Файлы рассортированы по папкам.
Например, файл Strings\Games.txt содержит строки:
покер
шахматы
карты
нарды
кости
крэпс
рулетка
блэкджек
Эти слова используются при генерации имён персонажей и фракций, а также описаний произведений искусства. Правила такой генерации описаны в файлах папки DefInjected\RulePackDef. На текущий момент падежи игрой не поддерживаются, поэтому сгенерированный текст для русскоговорящего человека часто выглядит криво.