Skip to content

Формат файлів перекладу

Yaroslav edited this page Dec 5, 2017 · 1 revision

Файл має відповідати наступним вимогам:

  • Кодування: UTF-8 with BOM
  • Відступи: табуляція а не пробіли
  • В кінці файлу має бути пустий рядок

Переклад складається із файлів різного формату

Strings

У каталозі Strings та його підкаталогах знаходяться здебільшого прості текстові файли, в яких кожне слово знаходиться на окремому рядку.

Наприклад, файл Strings/NameBanks/Colors.txt містить рядки:


//Simple colors only, no mauve and puce


червоний
синій
зелений
фіолетовий
чорний
білий
сірий
помаранчевий

Ці слова використовуються, наприклад, при випадковій генерації назв для фракцій чи описів витворів мистецтва.

Keyed

У каталозі Keyed знаходяться здебільшого XML-файли певної тематики. Вони використовуються, наприклад, самим інтерфейсом гри. Оригінальні файли ви можете знайти в каталозі path/to/rimworld/root/directory/Mods/Core/Languages/English/Keyed або за посиланням: https://github.com/RimWorld-zh/RimWorld-English/tree/master/Keyed

DefInjected

У каталозі Strings та його підкаталогах знаходяться XML-файли, теги якого є шляхом, за яким відбувається підставлення рядків у ресурсах гри (Defs). Зазвичай мають досить складну вкладену структуру.

Припустимо, що в файлі Mods/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/Ukrainian/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>

Ці підставлені значення буде видно у грі.

Якщо в перекладі який-небудь очікуваний переклад відсутній, то гра при старті в режимі розробника виведе відповідне попередження в лог.

В ресурсах гри всі об'єкти описані за шляхом Mods/Core/Defs/. Вони розбиті за підкаталогами. Також дані, необзідні для перекладу цих об'єктів, але у більш зручному для сприйняття вигляді можна знайти за посиланням: https://github.com/RimWorld-zh/RimWorld-English/tree/master/DefInjected

В переклади файли формату DefInjected знаходяться за шляхом Mods/Core/Languages/Ukrainian/DefInjected/, теж розподілені за каталогами.

Назви каталогів змінювати не можна. Файли всередині каталогів можна називать будь-яким чином, та все ж раджу вам називати їх у відповідності до інших переклад, наприклад, німецького. Це значно спрощує у майбутньому пошук.