Руководство для переводчиков Cyberpunk 2077

Автор руководства: vanaukas
Источник: nexusmods.com
Эту инструкцию также можно найти в CYBERPUNK MODDING WIKI.

Требования:​

Для работы с этим руководством вам необходимо установить следующее:
Не существует единственно верного способа перевода существующих модов, но в этом руководстве я покажу два основных метода:
  1. Если автор предоставил ресурс в формате .json.json
  2. Извлечение файла локализации из мода в формате .archive
Для целей данного руководства я буду использовать в качестве примера свой мод. Используемые имена и структура файлов не являются обязательными, но как общее правило: избегайте использования символов в именах файлов и папок, кроме - и _.


Полезные советы для этого руководства:​

Создание проекта в Wolvenkit:

Откройте Wolvenkit и нажмите на «Создать новый проект» (Create a new project):

HsJJUgl.png


Дайте проекту подходящее название, связанное с контентом, который переводите. Имя проекта будет именем файла .archive (его можно изменить позже).

6Bced1r.png


Внутренние правила о наименованиях для поддерживаемых языков:

Поддерживаемые языки хранятся в папках с аббревиатурами, соответствующими каждому поддерживаемому языку.
Это должно выглядеть так:

MGqTLAO.png


Каждая аббревиатура соответствует следующим языкам:
  • ar-ar: Арабский (العربية)
  • cz-cz: Чешский (čeština)
  • de-de: Немецкий (Deutsch)
  • en-us: Английский (English)
  • es-es: Испанский (Español)
  • es-mx: Латиноамериканский испанский (Español latinoamericano)
  • fr-fr: Французский (Français)
  • hu-hu: Венгерский (Magyar)
  • it-it: Итальянский (Italiano)
  • jp-jp: Японский (日本語)
  • kr-kr: Корейский (한국어)
  • pl-pl: Польский (Polski)
  • pt-br: Бразильский португальский (Português do Brasil)
  • ru-ru: Русский (Русский)
  • th-th: Тайский (ไทย)
  • tr-tr: Турецкий (Türkçe)
  • ua-ua: Украинский (Українська)
  • zh-cn: Упрощенный китайский (简体中文)
  • zh-tw: Традиционный китайский (繁體中文)
Этот список пригодится позже для настройки файлов ArchiveXL, чтобы правильно добавить перевод (не волнуйтесь, это тоже будет подробно объяснено).

Принятые обозначения (номенклатура) для форматирования текста:​

Cyberpunk использует нечто похожее на XML + JSON для форматирования текста. Ниже приведены некоторые из наиболее часто используемых кодов:
Код:
\n
Этот код используется для переноса строки. Нельзя использовать клавишу Enter для переносов, иначе весь ваш текст не будет распознан правильно. Вы можете использовать несколько \n подряд для большего отступа, если это необходимо. Это правило одинаково для файлов .json.json и .json (не беспокойтесь, оба этих расширения файлов будут объяснены позже).

<Rich color="TooltipText.cyberwareDescriptionHighlightColor" style="Semi-Bold">ВАШЕ СЛОВО</>

Этот тег используется для выделения слов оранжевым цветом, как показано в следующем примере:

Qp4Htm5.png


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

Начало перевода:

Если автор предоставил ресурс в формате .json.json:

Установите все упомянутые ранее требования и загрузите файл .json.json со страницы мода. Создайте проект в Wolvenkit.

Шаг первый: Импорт файла .json.json в проект:

Откройте проект, наведите курсор на папку raw в Project Explorer и нажмите на желтую иконку, чтобы открыть папку raw в Проводнике Windows:

vKJ4VO9.png


В Проводнике Windows переместите уже загруженный файл .json.json в папку raw, создав для него отдельную папку. Для этого примера я назову эту папку localization, и внутри нее я создам еще одну папку, соответствующую языку, который я хочу использовать.

Для этого примера я создам две папки: es-es и es-mx, так как они довольно похожи и это мой основной язык, а затем скопирую и вставлю один и тот же файл .json.json в обе папки. Вот как это будет выглядеть внутри Wolvenkit:

UBsTDe6.png

Импортируйте файл .json.json в проект:

Щелкните правой кнопкой мыши на файле .json.json и выберите Convert from JSON (Конвертировать из JSON):

ljtzY3F.png


Проделайте то же самое для всех файлов, которые нужно импортировать. После импорта Project Explorer должен выглядеть так:

5mEHj5b.png


Шаг второй: Перевод мода:

Вы можете выбрать один из двух способов перевода файла .json.json:

1) Перевод файла .json.json в текстовом редакторе до импорта

Это можно сделать, когда файл .json.json уже декомпилирован (именно поэтому у него два расширения .json - потому что он был экспортирован из скомпилированного файла .json в Wolvenkit). Он выглядит так:

r1FnTi6.png

НЕ МЕНЯЙТЕ ОТСТУПЫ (ФОРМАТИРОВАНИЕ), ИЛИ ФАЙЛ БУДЕТ ПОВРЕЖДЕН!!!

Этот метод немного сложнее для чтения и более подвержен ошибкам, но некоторым он может показаться удобным. В этом случае вам нужно импортировать файл .json.json ПОСЛЕ того, как выполните перевод, то есть вы будете импортировать уже переведенный файл.

2) Перевод файла .json в Wolvenkit после импорта

Файл с расширением .json (только одно расширение) уже скомпилирован и не может быть открыт в текстовом редакторе, но его можно открыть в Wolvenkit. Этот метод несколько проще для чтения, потому что XML-форматирование текста не будет декомпилировано, что обеспечивает лучшую читаемость.

Посмотрим, как файл .json выглядит внутри Wolvenkit:

jJRewQB.png

Не беспокойтесь, файл onscreens.json в базовых файлах игры намного больше этого.

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

Внутри каждой записи вы найдете следующие параметры:
  • femaleVariant: По какой-то причине это поле по умолчанию для любого текста. Здесь можно писать названия, описания и т. д.
  • maleVariant: Используется в некоторых особых случаях, если существует вариант, основанный на гендере т.е. пола (например, одежда).
  • primaryKey: Так запись называется внутри игры. Использует числа. Рекомендуется оставлять значение 0, чтобы избежать непреднамеренных конфликтов с текстами игры или других модов.
  • secondaryKey: Таким же образом можно присвоить записи внутреннее имя. Рекомендуется использовать это поле вместо primaryKey, потому что оно может содержать буквы и некоторые символы. Старайтесь использовать подробные имена (проще говоря идентификаторы, переменные с конкретикой), связанные с вашим модом и тем, где вы собираетесь использовать запись в вашем моде.
Вот как будет выглядеть одна запись внутри Wolvenkit:

PM941gj.png

Всегда старайтесь использовать подробные имена для secondaryKey, чтобы избежать ошибок типа PEBCAK (Problem Exists Between Chair And Keyboard - проблема находится между стулом и клавиатурой).

Пожалуйста, помните, что нельзя использовать клавишу Enter для переносов строк, иначе ваш текст сломается. Используйте вместо этого \n.

Вот как выглядит запись с большим объемом текста:

I8BrY8z.png


Да...

Весь этот текст - одна большая строка. Всегда помните об этом.


Шаг третий: Финальные штрихи и упаковка вашего перевода

После выполнения перевода любым из методов вам нужно создать файл для ArchiveXL, чтобы объединить ваши файлы .json с остальными переводами игры. Этот процесс очень быстрый и простой благодаря инструментам psiberx.

1) Создайте новый файл ArchiveXL

Нажмите «New File» (Создать файл) в Wolvenkit:

vIM2jhm.png


Выберите «ArchiveXL», а затем «ArchiveXL file». Измените сгенерированное имя на такое же, как у вашего мода (не обязательно, просто чтобы оба файла были рядом после установки), но сохраните расширение .archive.xl. Следуя примеру, получившееся имя будет RaitoLabs-ES.archive.xl. Нажмите «Create» (Создать).

ijLEBhJ.png

2) Заполните ваш файл ArchiveXL

После нажатия «Create» ваш файл должен автоматически открыться в основном текстовом редакторе (в моем случае — VSCode).

Для заполнения файла ArchiveXL используйте следующую структуру кода:
Код:
localization:
  extend: THE_ARCHIVEXL_MOD_YOU_WANT_TO_TRANSLATE
  onscreens:
    Language_Acronym: File_Path_To_Your_JSON
  • localization указывает системе, что вы добавляете текст.
  • extend должен ссылаться на файл .archive.xl мода, который вы переводите. ArchiveXL возьмет его содержимое и автоматически объединит, так что вам не придется перезаписывать файлы оригинала, что обеспечивает гибкость и максимальную совместимость.
  • onscreens указывает системе тип добавляемого текста.
  • Language_Code относится к внутренним кодам поддерживаемых языков. Список был предоставлен ранее. В этом примере это будут es-es и es-mx.
  • Path/To/Your/File.json, как следует из названия, должен быть путем к вашему переведенному файлу .json. Самый простой способ не ошибиться - использовать Wolvenkit, чтобы скопировать этот путь:
Щелкните правой кнопкой мыши на вашем файле .json и выберите «Copy relative path to game file». Затем вставьте содержимое в ваш файл ArchiveXL.

MmjaUAE.png


Вот как код должен выглядеть в этом примере:
Код:
localization:
  extend: RaitoLabs.archive.xl
  onscreens:
    es-es: localization\es-es\RaitoLoc.json
    es-mx: localization\es-mx\RaitoLoc.json
Важно сохранять отступы, как показано в примерах кода. Также крайне важно использовать обратную косую черту (\) вместо обычной прямой (/) в пути к файлу, если вы делаете это вручную.

Упаковка мода:

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

Нажмите «Pack mod», чтобы создать готовый к загрузке zip-файл, и «Install mod», чтобы установить его в папку игры.

femLPY6.png


И, наконец, ваш файл перевода готов к тестированию или распространению. Вот как должны выглядеть файлы после установки:

Fih9eo4.png


Использование имени, похожего на имя переводимого мода, позволит держать их рядом, и это выглядит аккуратно.

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

8rB49gb.png


Всё закончилось... Или нет?


Извлечение файла локализации из мода в формате .archive:

Установите все упомянутые ранее требования и загрузите мод, который хотите перевести (если еще не сделали этого). Создайте проект в Wolvenkit.

Откройте ваш проект и, после загрузки, откройте «Assets Browser». Затем нажмите «Mod Browser»:

yBwnJU8.png


После нажатия «Mod Browser» ваша система может зависнуть на несколько секунд (в зависимости от количества модов в формате .archive). После загрузки найдите мод, который хотите перевести:

y3Sz2tp.png


Открывайте внутренние папки, пока не найдете файл локализации, который нужно извлечь:

LFJu41p.png


Найдя его, щелкните правой кнопкой мыши и выберите «Add selected items to project»:

maWThif.png


Как следует из названия, теперь у вас есть файл локализации .json в вашем проекте:

52ySICq.png


Чтобы избежать конфликтов с исходным модом, давайте изменим путь к файлу.

Наведите курсор на папку archive и нажмите на желтую иконку, чтобы открыть ее в Проводнике Windows:

NH28r3P.png


В Проводнике Windows создайте новую папку. Для этого примера я создам папку localization, а внутри нее - две папки es-es и es-mx, следуя внутреннему правилу об именах для языков.

Создав папки, в Проводнике Windows скопируйте и вставьте файл .json в папки es-es и es-mx. Вот как это будет выглядеть в Wolvenkit после выполнения:

mu5VkGL.png


Теперь вы можете удалить исходные извлеченные папки и файл .json, чтобы избежать конфликтов. Наведите курсор на base (в этом примере) и нажмите на красную иконку с корзиной, чтобы удалить этот файл/папку:

C1iTjbH.png


После удаления папок ваш проект будет выглядеть так, готовый к переводу:

jCNkdTX.png


Вы можете прочитать часть руководства «Перевод файла .json в Wolvenkit после импорта», чтобы узнать больше о переводе файла .json в Wolvenkit.

После завершения перевода вы готовы выполнить обязательные финальные шаги по упаковке и/или установке. Прочтите часть руководства «Финальные штрихи и упаковка вашего перевода», чтобы узнать, как это сделать. Не забудьте включить файл ArchiveXL, иначе ваш перевод не будет работать.

Надеюсь, это руководство было полезным. Удачи в ваших переводах!​

 
Небольшие советы от опытных переводчиков:
  • Не делать ошибок в переводе с лишними знаками. Можно использовать Notepad++ для lua и json. Не переводить, если это часть кода! В логах кор мода всегда покажет ошибку, если вы её допустили.
  • На тему мультиязычности, то не все авторы предоставляют нужные файлы, поэтому иногда приходится делать всё вручную, но есть и такие, кто всегда оставляет возможность для перевода. Внимательно изучаем, что публикует автор мода.
  • Когда язык игры на английском и не видно английских букв это нормально при прямом переводе на русский файлов мода, где это допустимо, виной тут то, что нет у автора обшей локализации, она лишь одна. Тут зависит от автора мода, потому не заморачиваемся на этот счёт.
  • Еще есть моды, где вы можете просто добавить русский перевод в мод и просто добавить строку с путем к ru-ru и просто заменить основной мод, а есть внутри мода, где нет отдельной папки локализации, он просто лежит среди других файлов и сложно сделать несколько языков в одном моде, в этом случает придется сделать дополнительный мод с локализацией. Конечно необходимо стремится, чтобы было меньше отдельных файлов с локализацией, но на деле не всегда это возможно.
 
Назад
Сверху Снизу