Skip to content

Форматы файлов

Andrey Lemin edited this page Nov 1, 2022 · 8 revisions

Перевод состоит из файлов различного формата:

Keyed

Этот формат представляет собой плоский неструктурированный набор XML-тегов с текстами и фразами. Используется для текстов пользовательского интерфейса и общих фраз.

В игре файлы этого формата находятся по путям:

  • Mods\Core\Languages\English\Keyed - оригинал

  • Mods\Core\Languages\Russian\Keyed - перевод

DefInjected

В файлах этого формата теги представляют собой путь, по которому происходит подстановка строк в ресурсах игры (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

Простые текстовые файлы, в которых каждое слово стоит на отдельной строке. В каждом файле содержатся слова по своей тематике. Файлы рассортированы по папкам.

Например, файл Strings\Games.txt содержит строки:

покер
шахматы
карты
нарды
кости
крэпс
рулетка
блэкджек

Эти слова используются при генерации имён персонажей и фракций, а также описаний произведений искусства. Правила такой генерации описаны в файлах папки DefInjected\RulePackDef. На текущий момент падежи игрой не поддерживаются, поэтому сгенерированный текст для русскоговорящего человека часто выглядит криво.