如何翻译《环世界》的模组?

0 点赞
环世界
转载

Детальный, но простой гайд по локализации модов из Steam Workshop для RimWorld и дальнейшей публикации как "перевода" в мастерской. Введение Этот гайд посвящён тому, как делать переводы модов для RimWorld и выкладывать их в Steam Workshop. Он рассчитан на новичков и объясняет самые простые и минимальные способы локализации - от копирования файлов до загрузки готового перевода. Важно: этот гайд не является универсальным решением на все случаи жизни. У каждого мода может быть своя структура и особенности, поэтому где-то придется действовать иначе. Здесь я собрал базовые методы, которые помогут быстро начать переводить и разбираться в процессе. Раздел 1: Где хранятся файлы модов? Файлы модов хранятся по пути: Steam steamapps workshop content 294100 В этой папке находятся все моды, скачанные из Steam Workshop для RimWorld. Чтобы быстро открыть папку нужного мода: - Запустите RimWorld; - Перейдите в меню Моды; - Выберите нужный мод; - Нажмите Расширенные настройки; - Кликните Открыть папку. После этого откроется директория с оригинальными файлами выбранного мода. Внутри обязательно будет папка About, а также папки с файлами строк, где хранятся названия предметов, событий, рецептов и других элементов игры. 💡 Примечание: все эти файлы переводятся одинаково, независимо от того, содержат ли они предметы, события или рецепты. Раздел 2: Как создать свой мод (для перевода)? Заходим в директорию Rimworld. Сделать это можно через библиотеку Steam: - Кликаем ПКМ по игре в библиотеке; - Нажимаем “Свойства”; - Переходим в “Установленные файлы”; - Затем “Обзор” Для корректной работы игры необходимо создать определенные папки и файлы (названия должны быть точными, иначе при запуске возникает ошибка). Шаг 1. Структура мода - Создаем папку About - Создаем папку Languages Внутри них: - В папке Languages создайте папку с названием языка. Для русского — Russian. - В папке About создайте файл About.xml. 💡 Чтобы правильно сохранить файл как .xml: В проводнике включите отображение расширений файлов: В Windows 10/11: Вид → Показать → Расширения имен файлов. Теперь можно переименовать файл с About.txt на About.xml. Шаг 2. Картинки мода Для обложки (превью) используйте изображение Preview.png. - Обязательно название: Preview.png. - Размер файла — не более 2 Мб. - Рекомендуемое разрешение: 1600×900. Дополнительно можно добавить иконку мода — файл modicon.png (64×64 px). Эта иконка будет отображаться в списке модов в игре. Шаг 3. XML код для About.xml <?xml version= "1.0" encoding= "utf-8" ?> <ModMetaData> <name>НАЗВАНИЕ ВАШЕГО МОДА</name> <author>ВАШ НИКНЕЙМ</author> <url></url> <supportedVersions> <li>1.6</li> </supportedVersions> <packageId>ID</packageId> <description>ОПИСАНИЕ ВАШЕГО МОДА</description> </ModMetaData> <name> - Укажите название вашего мода (на английском), например "ModTranslationRUS"; <author> - Укажите ваш никнейм; <li> - Укажите поддерживаемые версии, например 1.6; <packageId> - Укажите ID, например "nickname.modrus"; <description> - Укажите описание вашего мода. Раздел 3: Как редактировать строки? В папке Languages создайте папки DefInjected, Keyed, Strings. P.S. В основном используются папки DefInjected и Keyed. DefInjected - в этой папке хранятся переводы ВСЕХ предметов, описаний, событий и т.д. Keyed - в этой папке хранятся строки для перевода интерфейса и т.д. Создавайте эти папки только в том случае, если они присутствуют в оригинальном моде! Шаг 1. Создание папок.Чтобы перевод заработал нужно разделить все .xml файлы на различные директории. Например: В оригинальном (переводимом) моде .xml файлы находятся по пути: “D: Steam steamapps workshop content 294100 код мода 1.6 Defs” Возьмем в пример один мод: в папке Defs у него хранятся другие, со следующими названиями: AbilityDef, DamageDef, ResearchProjectDef, ResearchTabDef и т.д. В этих папках хранятся .xml файлы, описывающие предметы, события и т.д, а также подпапки, разделяющие .xml файлы на категории (исключительно для удобства). Чтобы создать папки с правильными названиями (это важно) нужно открыть один из .xml файлов и посмотреть начало кода. ПримерВ папке AbilityDefs хранится один файл AbilityDefs.xml, начало его кода: <?xml version="1.0" encoding="utf-8" ?> <Defs> <AbilityDef> <defName>Cookie</defName> <label>Cookie</label> <description>Very tasty.</description> … После <Defs> идёт строка <AbilityDef>, это и есть название папки, в которой должен хранится ваш .xml файл с переводом. Таким образом, необходимо скопировать файл AbilityDefs.xml в папку вашего мода с именем AbilityDef. После этого мы получаем путь (только пример): D: Steam steamapps common RimWorld Mods SuperModRUS Languages Russian DefInjected AbilityDef AbilityDefs.xml ... ↓Languages ↓Russian ↓DefInjected ↓AbilityDef ↓AbilityDefs.xml (это лишь пример) Шаг 2. Как создать код с переводом?ВАЖНО: Нельзя просто переводить английский текст на русский и копировать весь файл — игра выдаст ошибку при загрузке! Чтобы перевод работал, нужно изменить структуру кода. Это сложно, но есть простой способ, о котором расскажу чуть позже. Как писать код (вручную)?Для примера возьмем предыдущий код. РЕКОМЕНДУЮ работать в бесплатном Notepad++ ВАЖНО: Переводить можно только: <label> - Название <description> - Описание Ничего другого переводить не нужно! Создаем код: * В шапке всегда кодировка: <?xml version="1.0" encoding="utf-8" ?> * Код начинается с <LanguageData> и заканчивается </LanguageData> Далее нужно писать строки. Они отличаются от оригинального кода. Чтобы перевести (например) предмет - смотрим на его defname: <defName>Cookie</defName>Имя предмета “Cookie”. Теперь нужно прописать теги и закрыть их соответственно через “/”. Пишем так: <Cookie.label>Печенька</Cookie.label>В начале строки мы пишем имя defname, затем тег label (название), потом перевод самого предмета, в конце то же самое только в начале "/". Аналогично с описанием: <description>Very tasty.</description>В нашем коде пишем как: <Cookie.description>Очень вкусная.<Cookie.description> Переводим так каждую строку. Раздел 4: Важная информация Краткая структура: 1. Создайте папку с названием вашего мода-перевода в директории RimWorld/mods. 2. Внутри неё создайте папки About и Languages. 3. В папке About добавьте файл About.xml и отредактируйте его, а также добавьте Preview.png. 4. В папке Languages создайте папку Russian (или любую другую, например, Czech). 5. Откройте папку с оригинальным модом, который вы переводите, и найдите папку с файлами .xml (в разных модах она может называться по-разному, чаще всего это название версии, например 1.6). 6. В папке Russian вашего мода создайте директории DefInjected (обязательно) и Keyed (только если такая папка есть в оригинальном моде). 7. В папке DefInjected создайте подпапки с названиями, к которым обращается код из файлов оригинального мода (чаще всего названия почти совпадают). 8. По очереди проверяйте каждый .xml файл из папок оригинального мода и создавайте соответствующие подпапки в вашем DefInjected. 9. Копируйте (для удобства) или создавайте .xml файлы с теми же названиями, что и в оригинальном моде. Копируйте только в соответствующие файлу папки! 10. Для удобства откройте два .xml файла одновременно: один — в вашем моде (скопированный), другой — из оригинального мода. 11. Следуя инструкции, расписывайте теги и переводите текст, не забывая про кодировку в шапке файлов, затем сохраняйте изменения. Важно В некоторых модах файлы .xml могут быть заменены на .txt. Но так как игра может читать .txt тоже, то мод работает корректно. Но в моде-переводе все файлы обязательно должны быть с расширением .xml, иначе будут ошибки в игре. Структуры некоторых модов могут быть сложными, например в одной папке могут храниться несколько файлов .xml, которым нужны разные папки. Будьте внимательны и создавайте папки, соответствующие коду каждого .xml файла! В модах может быть адаптация под другие моды или DLC, такая папка называется Patches. Её не нужно переводить, так как она содержит .xml файлы, которые лишь адаптируют мод под DLС а не вносят новые предметы, названия и т.д. Раздел 5: Пример создания мода локализации Выбор мода- Зайдем в Мастерскую RimWorld - В фильтрах выберем Mod и версию 1.6 - Далее в сортировке подбираем нужный нам мод P.S. Выбирайте моды для которых ещё нет перевода, например самые новые или трендовые. Для примера мод sbzFridge: https://steamcommunity.com/sharedfiles/filedetails/?id=3486264784 Заходим в две директории - В папку с ориг. модом - В папку Mods игры RimWorld В Mods создаем папку с названием "sbzFridgeRUS", в ней: About и Languages. Редактируем файлы как в руководстве. В моде [sbz]Fridge все файлы хранятся в директории 1.6. Структура такая: ↓3486264784 1.5 1.6 About Languages Textures Выбираем папку 1.6, её структура: ↓1.6 ↓Defs ↓ThingCategoryDef ThingCategory.xml ↓ThingDefs_Buildings Buildings_Fridge.xml ↓Patches VanillaNutrientPasteExpanded.xml В Defs хранятся подпапки, а в них файлы. В нашей папке DefInjected создаем соответствующие папки: в файле ThingCategory.xml код следующий: <?xml version="1.0" encoding="utf-8" ?> <Defs> <ThingCategoryDef> <defName>BuildingsNeatStorage</defName> <label>Storage</label> <parent>Buildings</parent> </ThingCategoryDef> </Defs> Он обращается к папке ThingCategoryDef, такую и создаем в DefInjected. В новую папку копируем ThingCategory.xml, заменяем строки, получается так: <LanguageData> <BuildingsNeatStorage.label>Хранилище</BuildingsNeatStorage.label> </LanguageData> В файле Buildings_Fridge.xml код довольно громоздкий, т.к. в нем описаны все свойства и механики предметов, поэтому часть кода: <?xml version="1.0" encoding="utf-8"?> <Defs> ... <ThingDef ParentName="sbzFridgeBase"> <defName>sbz_Fridge</defName> <label>fridge</label> <graphicData> ... Он обращается к папке ThingDef, создаем её в DefInjected. Так же копируем и меняем код на следующий (файл большой, так что только часть): <?xml version="1.0" encoding="utf-8" ?> <LanguageData> <sbz_Fridge.label>холодильник</sbz_Fridge.label> <sbz_Fridge.description>Холодильник, способный заморозить до 2-х продуктов. Не работает при температуре выше 100С.</sbz_Fridge.description> <sbz_LargeFridge.label>большой холодильник</sbz_LargeFridge.label> <sbz_LargeFridge.description>Холодильник, способный заморозить до 10 продуктов. Не работает при температуре выше 100С.</sbz_LargeFridge.description> Так как мод маленький, то на этом вся работа заканчивается. Раздел 6: Как протестировать и выложить мод в Мастерскую? Когда вы закончили работу с переводом и проверили всю структуру вашего мода, можно запускать игру. ВАЖНО: Включите режим разработчика в настройках игры! - В менеджере модов переносим все моды в "Активные" (ваш мод должен быть ниже в списке чем оригинальный), сохраняем и перезапускаем игру. - Заходим в Dev мир. Такая настройка появится после включения режима разработчика. Это тестовый мир, который быстро загружается и нужен для проверки. - Включаем "Режим Бога" (вверху есть кнопки Dev, режим бога в самом конце) и тестируем перевод. - В Разделе 5 я переводил мод [sbz]Fridge, этот мод добавляет холодильники. Режим бога позволяет построить что угодно. Холодильники это раздел "Температура". Попробуйте перевести этот мод самостоятельно и проверить его работоспособность! Режим Бога позволяет заспавнить нужные предметы, события и т.д. Как выложить мод в Мастерскую?- Зайдите в менеджер модов - Выберите ваш мод > Расширенные настройки > Загрузить в Мастерскую Steam - Мод соберётся и откроется окно Steam. Далее прописывайте описание, видимость, настройки и т.д. Теперь ваш мод можно скачать из Мастерской. Если вы хотите обновить мод (если вышла новая версия ориг. мода), то: - После публикации вашего мода в папке с ним в Mods (директории игры) в папке About появится файл PublishedFileId - это ID вашего мода в мастерской, он нужен для обновлений. - Теперь, если вы обновили мод, вместо "Загрузить в Мастерскую Steam" будет "Обновить в Мастерской Steam", а далее всё как раньше. Раздел 7: Программа для генерации XML файлов XML_Generator 2.0 XML_Generator 2.0[drive.google.com] - авторское консольное приложение на языке C++, которое автоматически преобразует все .xml файлы в код <LanguageData>. Я создал эту программу для упрощения процесса создания модов-переводов для игры RimWorld. Она абсолютно бесплатна и скачать её может каждый нуждающийся. Программа будет дорабатываться и улучшаться. Структура архива Перейдя по кликабельной ссылке, указанной выше, вы можете скачать .exe файл и прилагающиеся к нему файлы: README.txt SourceCode.txt SourceCode.xml XML_Generator v 2.0.exe Программа запускается через .exe. Необходимо ознакомиться с файлов README.txt - это инструкция по использованию. Для тех, кто боится запускать сторонние .exe файлы я прикрепил текстовый и xml документ с исходным кодом на C++ для VisualStudio. P.S. Для тех кто выбрал копировать исходник в свой проект VS: если программа выдает ошибки, это значит, что она требует другого стандарта языка, а именно ISO C++ 17 (/std:c++ 17). Если вы создали проект и не можете выполнить отладку: Зайдите в свойства проекта > C/C++ > Язык > Стандарт языка C++ > Стандарт ISO C++ 17. После применения программа будет работать корректно. Как пользоваться? После запуска программа потребует путь к папке с исходниками, то есть с оригинальными .xml файлами. В руководстве рассказано где найти эти файлы. Затем нужно вписать конечный путь, в котором программа создаст папку "XMLsLGD". В эту папку программа закинет те .xml файлы, которые находились по первому пути. Эти файлы уже готовы, их осталось только перевести и закинуть в нужные папки (см. Раздел 3). Как это работает?Программа XML_Generator 2.0 получает на вход путь и парсит все .xml и .txt файлы. Она проверяет теги и генерирует готовый код в новые файлы, которые сохраняются по указанному пути. Плюсы: - Цикличность — программа не выключается после первого использования. - Скорость — файлы создаются мгновенно. - Удобство — нужно указать только два пути, больше ничего делать не надо. - Универсальность — программа работает с любым .xml и .txt кодом. - Корректность — программа преобразует .txt в .xml, чтобы файлы корректно работали в вашем моде. Минусы: А минусов я пока не нашел 😄 Если вы сможете найти их, или выявить какие-либо ошибки в программе, то сообщите об этом в комментариях. Заключение Надеюсь это руководство поможет вам начать переводить моды для RimWorld на ваш язык. Используйте его, чтобы создавать контент для личного пользования или делитесь вашими работами в мастерской! ⠀⠀⠀⠀⠀⠀⠀⠀⠀Если вы неравнодушны к моей работе, то оцените её по достоинству! ⠀⠀⠀Оставляйте комментарии с замечаниями и разумной критикой по данному руководству. ⠀⠀⠀⠀⠀⠀Если у вас возникли проблемы в ходе практического применения этого гайда: ⠀Пишите комментарий с подробным описанием проблемы, а я отвечу вам как можно быстрее!