RimWorld

RimWorld

87 ratings
Удобный перевод модов
By pashka
Подготавливаем файлы;
Настраиваем софт для удобного перевода;
Переводим;
Бонусы.
3
2
   
Award
Favorite
Favorited
Unfavorite
0. Пара вводных слов
Здравствуйте, решил поделиться с вами некоторыми мыслями по переводу модов. Сразу хочу оговориться, что всё, что будет написано ниже – не является единственно верным. Просто расскажу вам, как это делаю я, а от вас надеюсь получить комментарии, как это можно делать правильнее.
Упомянем некоторые способы получения файлов для перевода, расскажу как переводить удобно, используя специализированное ПО, в частности OmegaT, а так же не много о самом процессе перевода.
Ниже расскажу о excel-файлах, которые сделал и использую. Некоторые из них с макросами, если вас этот факт смущает, просто игнорируйте их. (правда тогда для вас здесь будет много лишнего)
1. Получение файлов
Первое, конечно же всё делать вручную. Вот например Статья[lttlword.ru], в которой расписаны основные моменты, так же обратите внимание на Дополнение #1[lttlword.ru] и Дополнение #2[lttlword.ru].
Как по мне, так это не совсем «Путь самурая», очень муторно, долго и нет особой необходимости, так как есть варианты попроще. Тем не менее, может быть полезно при переводе содержимого папки с патчами (Patches).


Второе, скорее всего вы уже слышали, раз вас заинтересовала эта статья – это конечно же RimTrans. На всякий случай, ссылки: оригинал[github.com], более свежая[github.com] версия от автора Aironsoft.
Как пользоваться данной чудесной штукой здесь мы рассматривать не будем, так как сложностей с этим нет. Либо рассмотрим в другой раз, а пока, вот например уже есть статья на Японском.
Важно! От себя, крайне рекомендую посмотреть в сторону Text-grabber[github.com] от kamikadza13. Просто отлично работающая софтина, плюс имеется возможность связаться с автором.


Третье, это инструментарий предоставленный разработчиками. На этом остановимся подробнее. Сам процесс описан в той статье, что указывал выше, так что буду повторяться. Суть в том, что чудесный RimTrans, к сожалению, выдёргивает не все теги, поэтому поможем ему (на этом моменте, я считаю, что у вас уже есть папка с нужным вам языком, в нужном вам моде). Немного забегая вперёд, мы получаем TranslationReport.txt на рабочий стол. Его содержание, опять-таки, расписано в статье на Японском. Мы же поступим более лениво.
И так, активируем все необходимые моды, для мода, который собираетесь переводить, перезапускаем игру. Прям совсем хорошо будет, наверно, если активируете моды, которые будут указаны в файлах, в папке с патчами (Patches). Далее «Debug actions menu», затем «Save Translation Report»

Переименовываем получившийся файл, добавив в конец «wom» (without mod), получим TranslationReportwom.txt.
Далее, активируем мод, который хотим перевести, перезапускаем игру, повторяем процедуру «Debug actions menu», затем «Save Translation Report». Полученный файл переименовываем, добавив в конец «wm» (with mod), получим TranslationReportwm.txt. Почему именно такие названия? - просто для удобства.
Качаем эксельку GameExport[drive.google.com]. Вот тут остановимся. Я не программист, в программистский не умею, увы, но люблю автоматизацию, поэтому делаю как умею, так что прошу прощение за убогость исполнения. Если у вас будут предложения, советы и т.д., как можно это сделать по-другому – делитесь. Продолжаем.
  • Запускаем скаченный файл. Если есть проблемы с производительностью, уменьшите количество строк тысяч до десяти, будет думаю более чем достаточно, я делал с запасом.
  • На листах «WoM_import» и «WM_import» правим пути до созданных ранее файлов и имена самих файлов. Прожимаем кнопки.
  • На листе «WM» жмём кнопку.
Получаем кашу примерно следующего вида:
Нас интересует момент начиная с «=== Def-injected translations missing ...»
Столбец F - название папки, в которую вручную нужно добавить тег из столбца J. Название папки не всегда правильно, например будет указано «BackstoryDef», хотя вероятнее всего должно находиться в «AlienRace.BackstoryDef» смотрите как и что сделал RimTrans и уже от этого отталкивайтесь.
Обновление! Уже достаточно давно сделал для себя мини-программку, что бы не морочиться с экселькой CompareToCSV[drive.google.com]. Делал её просто так, даже в мыслях не было что буду пользоваться и уж тем более что буду делиться ей, поэтому даже исходников от неё не оставил. В целом она рабочая, есть небольшие косяки, но жить не мешают. При открытии укажите вначале текстовый файл без мода (имею в виду TranslationReportwom.txt, хотя название может быть любым, это для понимания просто), затем второй текстовый файл (TranslationReportwm.txt, опять же - название любое, просто для понимания) и затем любой *.csv (у меня лежит result.csv и я в него постоянно сохраняю результат. Каждый раз файл перезаписывается, очищать вручную не требуется). Если вдруг антивирус или браузер будут ругаться на .exe-файл, можете смело им не пользоваться, тут уж я помочь не могу, всё на свой страх и риск. Я понятия не имею как уж там питон запаковывает себя в exe-файл. У меня у самого периодически ругается за запакованные в exe-файл питоновские скрипты.
2. Софт для удобного перевода
Предлагаю рассмотреть один из вариантов, например бесплатное ПО OmegaT. Как написано на официальном сайте «OmegaT — это свободная система автоматизированного перевода, поддерживающая память переводов, написанная на языке программирования Java. OmegaT не переводит вместо человека! (В отличие от программ, выполняющих «машинный перевод», OmegaT лишь помогает переводчику и упрощает его работу.)»
Далее два варианта, вариант первый – вы самостоятельный человек, сами можете разобраться в том, что и зачем вам нужно, вам достаточно того, что подсказали о таком удобном инструменте. Вариант второй – вам лениво настраивать, качать много разных ссылок, вы просто хотите, что бы работало.
Вариант 1
  • Качаем нужную вам версию OmegaT[omegat.org], устанавливаем.
  • В разделе Ресурсы[omegat.org] обязателен к скачиванию Плагин фильтров Okapi[okapiframework.org], остальное на ваше усмотрение.
Вариант 2
  • Качаем Java[www.java.com], устанавливаем.
  • Качаем OmegaT[sourceforge.net](эта версия уже старая, можете скачать с сайта свежую или же скачать эту и обновить до актуальной), устанавливаем.
  • Запускаем OmegaT, убеждаемся что всё работает, закрываем.
  • (Старая версия x86) Качаем установленную и настроенную[drive.google.com] версию, распаковываем с заменой в «Program Files (x86)».
  • (Обновлённая версия x64) Качаем установленную и настроенную[drive.google.com] версию, распаковываем с заменой в «Program Files».
  • Качаем настройки и прочие штуки[drive.google.com], распаковываем с заменой в «AppData\Roaming».
И так, скачали всё, установили, запустили, ох..ли, пробежались по настройкам внешнего вида, по горячим клавишам, подвигали окошки как удобно. По большому счёту уже можно приступить к переводу, но перед этим всё же немного расскажу, зачем и почему были сделаны некоторые настройки, так как в целом, было добавлено достаточно много плагинов для удобной и красивой работы (это я про тёмную тему, найденную где-то в недрах гитхаба). Выбравшим вариант 1 – это должно быть особенно полезно. Погнали.
Параметры, Настройки…, Файловые фильры. Выбираем XML files (Okapi – XML Stream Filter и Текстовые файлы. XML files… это для основных файлов перевода, в данный момент менять ничего не нужно. Текстовые файлы – это имена, названия поселений и т.д., находятся как правило в папке Strings. В параметрах этого фильтра указываем «по разрывам строк».
Параметры, Настройки…, Параметры сегментации, По умолчанию, добавил две строчки «\\[nN]» до и после. Добавляем сегментацию принудительного переноса строк.
3. Переводим
Перейдём к созданию самого проекта. Сегментация, штука неоднозначная. Если выключена, то каждый сегмент – это содержимое тега. Для более красивого и, наверное, правильного перевода, возможно следует отключать и переводить смысл, а не предложение за предложением. Я же сам, сегментацией пользуюсь, мне так удобнее. Далее структура проекта – по умолчанию, все папки проекта предлагается создать в одном месте. Я же вам советую сделать немного по-другому. Файлы оригиналов и файлы переводов оставить как есть, а файлы памяти перевода, глоссария, словари – вынести в отдельное место (как это выглядит у меня, видно на скрине).
После того, как переведёте мод, в папке с проектом появятся три *.tmx файла, я всегда использую тот, что с «level2» в названии. Переносим данный файл в общую папку с памятью переводов. В дальнейшем, в окне нечёткие совпадения, в OmegaT, будут предлагаться совпадения. Это удобно, чтобы перевод был похожим друг на друга. Так же крайне советую не лениться, все названия добавлять в глоссарий, что бы не получалось например так, что в одном моде кровать двуспальная, в другом двухместная и т.д.
4. Дополнительное
Ещё одна экселька - обратный транслит[drive.google.com]
Пара слов о том как работает, хотя и так не сложно понять:
  • Столбец A - исходник
  • Столбец B - результат
  • Столбцы J и T - латиница
  • Столбцы L-Q и V-AA - варианты кириллицы. Для того, что бы увеличить шанс появления какого-либо варианта, просто добавьте его несколько раз (*например буква L)


Для менее болезненного перехода на работу с OmegaT, если вы до этого вручную переводили *.xml файлы, предлагаю вам очередную эксельку - SuperfileTMX[drive.google.com]. Работает криво, косо, (прошу прощение за это) но работает, пара слов о том как с этим безобразием разобраться:
  • Лист «Список файлов» указываем путь (ячейка C1) до папки, где лежит оригинал, и жмём «Найти подходящие файлы»
  • Лист «ImportEn» жмём «Импорт текста»
  • Лист «Список файлов» указываем путь (ячейка C1) до папки, где лежит ваш перевод. Жмём «Очистка списка», и затем «Найти подходящие файлы»
  • Лист «ImportRu» жмём «Импорт текста»
  • Лист «Compare» жмём «Авто»
  • В столбце F снимаем галочку с #Н/Д
  • Копируем получившееся содержимое столбцов E и F на лист «tmx_s», затем жмём кнопку «TMX»
  • Делаем копию любого *.tmx файла (можно просто создать текстовый файл, поменять ему расширение на tmx, но может быть проблема с кодировкой, поэтому копируем файл, что бы её не было)
  • Копируем всё содержимое листа «tmx»
  • Открываем блокнотом *.tmx файл, вставляем в него скопированное
  • Используем полученный файл памяти перевода в OmegaT


Для того, что бы перевод модов хоть сколько-нибудь был похож на оригинальный перевод Rimworld, я немного сделал *.tmx файлы игры. Сделаны они через костыли, но всё же лучше чем ничего:
  • Core[drive.google.com] Устаревший файл, на всякий случай пока удалять не стал.
  • Royalty[drive.google.com] Устаревший файл, на всякий случай пока удалять не стал.
  • Ideology[drive.google.com] Устаревший файл, на всякий случай пока удалять не стал.
Дальше новиночки, с уже более старательным подходом:
  • Rimworld_raw[drive.google.com] Всё, что выдернул с гитхаба и смог преобразовать в вид «оригинал-перевод». Моё вмешательство в содержимое - минимально (точно убраны дубликаты строк).
  • Rimworld_unic[drive.google.com] Здесь, моего вмешательства много, делал для себя, так как нравится сегментация, хоть это и не правильно наверно при переводе (потому что правильно переводить смысл, а не текст, но это не точно). Суть файла вот в чём: Во первых убраны переносы строк «\n». Строки которые содержали одну «точку» или вообще без точек, остались как есть. Строки которые содержали равное количество «точек» были побиты на сегменты. Из всего получившегося убрал дубликаты.
  • Rimworld_not_eq[drive.google.com] Здесь всё что содержало неравное количество точек в оригинале и переводе, и соответственно не смогло стать побитым на сегменты автоматически. Так же убраны переносы строк «\n».
Вы можете использовать либо Rimworld_raw, либо [0]_Rimworld_unic + [0]_Rimworld_not_eq файлы, в зависимости от вашего метода перевода. А можете вообще использовать всё вместе, кто ж вам запретит.
В файлах могут быть косяки, если буду находить, буду поправлять. Вы так же можете помочь с этим при желании.
Ещё пара файлов[drive.google.com] Вдруг кому понадобится и кто то захочет довести до ума:
NTr - Это те самые сегменты из файла [0]_Rimworld_not_eq, просто в другом виде.
Other_NTr - Здесь всё, что было сделано через списки <li>, я в каком бы то ни было автоматическом виде не смог сделать из этого пригодный вид. Проблема в том, что количество строк оригинала не всегда совпадает с количеством строк перевода. И возможно где совпадает - нарушен порядок. Так что я оставил как есть, быть может кто-то, как-то, когда-то захочет/сможет и сделает, нет, из этого файл памяти перевода.
Ну, и бонусом:
Глоссарий[drive.google.com] Всё что было в оригинале с меньше чем четыре пробела - вынес в отдельный глоссарий, для удобства.
Перевод в файлах выше актуален на примерно 26.06.2022.
Если вдруг кто захочет поделиться хорошими файлами памяти перевода игры - дайте знать, буду очень благодарен.


Ещё один очень важный момент. Если вы делаете перевод нескольких модов в одном, разбиваете красиво по папочкам, пожалуйста убедитесь, что всех *.xml файлы имеют уникальное название, иначе они попросту пропускаются (скорее всего загрузится только один из файлов).
5. Ещё пара слов
На этом, собственно, пока всё. В целом получилось скомкано, не совсем понятно, возможно. Дальше, если будут вопросы, предложения и т.д., я буду дополнять. Если же не будет, значит и так всё отлично.
На самом деле очень тяжело оказалось сделать это маленькое руководство, потому как кажется, что всё и так понятно, а некоторые же моменты просто мог и просто забыть. Поэтому спрашивайте, не стесняйтесь.
Небольшой бонус. Если кому будет нужно, с ГуглДиска[drive.google.com] можете взять небольшой плагин. В окне «Комментарии» будет отображаться тег текущего сегмента. Мне очень этого не хватало когда переводил моды. На деле оказалось очень не сложно реализуемо (Слава искусственному интеллекту). Дотошно я этот плагин не тестировал, так как давненько не переводил ничего, но закрыть этот вопрос хотелось - поэтому сделал. После копирования в папку «\OmegaT\plugins» проверьте в настройках, что бы плагин был активным.
Небольшой бонус 2. Опять же, хотелось разобраться - разобрался. С версии вроде 6.0 OmegaT отвалился плагин omegat-browser. На деле, проблема не с омегой, а с java, начиная с версии 11? или около того, JavaFX перестала входить в состав стандартного пакета java, на котором собственно сделан плагин. Так как я в этом не разбираюсь, пришлось чинить как смог. Качаем отдельно javaFX, распаковываем куда-нибудь, в папке с омегой добавляем в файл OmegaT.l4J.ini пару строк:
--module-path - путь до папки, куда вы распаковали javaFX
--add-modules - оставляем как в примере. Собственно пример как у меня (распаковывал в папку с OmegaT, в папку lib-custom:
--module-path "lib-custom\javafx-sdk-17.0.14\lib" --add-modules javafx.controls,javafx.swing,javafx.web
Ну и ещё пришлось обновить jre (в папке с OmegaT) - просто удалил то, что там было (версия 11.0.19), и скопировал туда те же папки с более свежей версией java (11.0.25).
Делать это нужно, если вы используете OmeraT с java в комплекте.
По уже традиции, запакованная в zip-файл OmegaT с ГуглДиска[drive.google.com].
Там же, в папке с плагинами, omegat-browser-1.4.0-rc.2, это просто собранный jar файл с гитхаба автора плагина (по моему только поменял репозитории, давненько делал, запамятовал). К слову, omegat-browser-1.3 так же работает нормально.
Не забудьте так же про сами скрипты, которые лежат в %AppData%\OmegaT\browser-scripts.
Делайте бекапы, что бы в случае чего откатиться, что бы не ругаться на меня. Я всё это делал для себя, но решил поделиться, так как всё же этим пользоваться очень удобно.
71 Comments
noob 12 Sep @ 11:45am 
Всё, я передумал переводить моды.
Написано хорошо, малаца, батя говорит.
pashka  [author] 6 Aug @ 10:13am 
Значит дополнение к инструкции было полезным, это хорошо:laugh_lif:
ign2011gul 6 Aug @ 10:11am 
емать я овощ
ign2011gul 6 Aug @ 10:11am 
стоп. я только что понял что я качал не релиз проекта, а весь код на главной страничке :steamsad:
ign2011gul 6 Aug @ 10:09am 
спасиб
pashka  [author] 6 Aug @ 10:05am 
Там небольшую инструкцию дополнили, попробуйте посмотреть, может понятнее будет.
ign2011gul 6 Aug @ 10:01am 
Я просто не понимаю, вроде качаю последний релиз, распаковываю. А инструкции чё дальше нету. Экзешник запакован и куда его кидать?
ign2011gul 6 Aug @ 9:59am 
я это понимаю мужик. Только вот прикол в том, что когда я разархивировал эту zip-ку, то в ней есть ещё две zip-ки. Одна с экзешником и парой папок, а другая только с папками. А что дальше собственно? Как бы я не разархивировал это всё и не кидал друг к другу оно не хочет работать. Тыкаю, консоль включится на секунду и исчезнет. Бред
Mewn Goddess 6 Aug @ 9:46am 
Любой контент, скачиваемый с гитхаба заархивирован. На странице репозитория есть инструкция, которая говорит, что *всю* папку надо разархивировать, а не просто исполняемый файл.
ign2011gul 5 Aug @ 3:19pm 
я чё-то так и не допёр как пользоваться Text Grabber-ом, в гитхабе тоже ничего об этом нет, только сам результат. Вроде и нашёл экзешник (который зачем-то заархивирован?) и не раб отает он даже если извлечь. Бред какой-то