Ludeon Forums

RimWorld => Mods => Translations => Topic started by: KviEt on September 01, 2016, 05:48:33 AM

Title: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 01, 2016, 05:48:33 AM
Hi, i apologize for bad English in advance. I help to translate for Russian team.
Because i can't use Python 3.0 i created script on Python 2.7.
The console-program saves results of comparing into Result.doc. Creates XML files with translation and missed lines without translation into DefInjectedRaws folder.
The Result.doc consist of:
    1. Text which perhaps needs to be translated.
    2. Folders which perhaps have wrong name in DefInjected folder.
    3. Missed labels with text.
    4. Labels which absent in Defs folder, probably the labels must be deleted, check a log in games for this.

You can translate the XML files in DefInjectedRaws folder and place it into DefInjected folder. The XML files must work in the game.
The console-program not write all text which perhaps needs to be translated, example: Hidden, because Defs have much words with upper symbol.
The console-program can also miss what should be translated. It's possible with new version of Defs when new tags were added and old tags are changed or i missed the tags.
I will also update and fix whenever possible the console-program.
The console-program of version 0.7.* is expected Defs folder of version 0.15.1284.

How to use?
Download archive with CompareAndAddXML (https://github.com/KviEt/RimWorldHelpInTranslation/releases) console-program.
Unpack archive in any directory. Put Defs and DefInjected folders into the directory. Run the console-program.

If the console-program have bugs or i missed tags for translation or the console-program doesn't work for you or u have wishes to the console-program tell me about it.
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: Ivanzyfer on September 01, 2016, 03:01:32 PM
Почему-то не хочет работать скрипт :-\
http://i.imgur.com/pJ0Vffh.png
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: KviEt on September 01, 2016, 03:50:32 PM
Спасибо, исправил.
Какую версию defs ты используешь если не секрет?
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: Ivanzyfer on September 01, 2016, 04:02:13 PM
Не понял вопроса про версию defs

Скрипт запустился.
Теперь вот такие строки добавляет .None.(хотя перевод у шоколада есть)
http://i.imgur.com/UGfRnNh.png
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: KviEt on September 01, 2016, 04:44:17 PM
Defs разные в зависимости от версии игры...

Спасибо ещё раз, теперь точно должен работать, какая-то подстава от питона, на 2.7.9 у меня этой ошибки не было...
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: Ivanzyfer on September 02, 2016, 03:11:09 AM
Спасибо! Теперь всё работает как надо. Плохо только что весь текст подряд идёт. Без пустых строк. Глаза болеть будут, если много смотреть. 8)
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: KviEt on September 02, 2016, 06:08:52 AM
Глаза будут болеть это плохо, в отчете ведь есть пустые строки они разделяют текст по смыслу или этого мало? Могу тогда попробовать сделать файл с отчетом вместо Python Shell сделать какой-нибудь word документ.

I fixed script.
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: Ivanzyfer on September 02, 2016, 06:54:25 AM
В папке DefInjectedRaw генерируются вот такие файлы: http://i.imgur.com/KhpPIYN.png
Все строки без разделения
Title: Re: Script on Python 2.7 for comparing the Defs folder with the DefInjected folder.
Post by: KviEt on September 02, 2016, 07:26:39 AM
Изменил, так пойдет? Наверное, надо ещё чтобы комментарии сохранялись?

Судя по твоему отчету у тебя старая версия скрипта, желательно обновить его...
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 13, 2016, 06:07:23 AM
Скачал только что программу. Почему могут быть такие ошибки?
http://i.imgur.com/l26wINP.png
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 13, 2016, 06:24:47 AM
Это моя ошибка, папка defs имеет более сложную структуру(больше вложностей), я сделал чтобы это учитывалось и работало, но допустил ошибку поэтому у тебя программа не работает, позже исправлю(сегодня).
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 13, 2016, 11:55:20 AM
Исправил, проверил, вроде работает.
Если программа что-то пропускает и ты понимаешь какой тэг пропущен, то скажи - я добавлю его или могу сделать чтобы тэги считывались с файла, тогда ты сможешь сам спокойно указывать программе какие тэги тебе требуется.
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 15, 2016, 01:18:50 AM
А можно как-то группировать строки с одинаковым defname?
Чтобы получалось не так - http://i.imgur.com/kv2R2PB.png, а вот так- http://i.imgur.com/YDDH9fq.png ?
=================
Ещё иногда в модах бывает что defname берётся из Core и просто изменяются параметры.
Получается двойной перевод.(в Core и в моде) Можно как-то это обойти? Дополнительную проверку добавить?
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 15, 2016, 03:39:15 AM
Quote from: Ivanzyfer on September 15, 2016, 01:18:50 AM
А можно как-то группировать строки с одинаковым defname?
Чтобы получалось не так - http://i.imgur.com/kv2R2PB.png, а вот так- http://i.imgur.com/YDDH9fq.png ?
=================
Ещё иногда в модах бывает что defname берётся из Core и просто изменяются параметры.
Получается двойной перевод.(в Core и в моде) Можно как-то это обойти? Дополнительную проверку добавить?
1. По defname можно, сделаю.
2. Плохо осознал проблему... у игры есть Core - это основная папка, в первую очередь игра берет отсюда перевод, а потом игра, если есть мод, из папки для мода берет значения, которые перезаписывают основные значения взятые из Core? Папок для мода может быть несколько?
Я просто не использую в игре моды, поэтому мне эта система не знакома совсем...
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 15, 2016, 07:12:55 AM
У каждого мода своя папка. По типу Core. Перевод у каждого мода отдельный.
В некоторых модах кроме внесения новых вещей в игру есть изменение оригинальных дефов.
В таком случае в моде не нужен перевод этого defname, потому что он уже есть в Core.(иначе будут жёлтые ошибки о дубликате)
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 15, 2016, 11:50:36 AM
Но если у мода отдельная папка Core и перевод у каждого мода отдельный, то программе надо передать папку Defs мода, она создаст xml файлы именно для этого мода, и никаких повторов из оригинального Core быть не должно, судя по твоему описанию...
В чем же проблема?
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 15, 2016, 01:21:05 PM
Немного не так. У каждого мода есть папка Defs. Но в этой папке могут быть Defname, которые есть и в Core.
То есть мод берёт оригинальный defname, который есть в Core и изменяет его свойства(ресурсы для постройки, стоимость, количество здоровья и прочее)

Если добавлять перевод этого Defname и в Core и в моде, то будет ошибка о дубликате перевода.
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 15, 2016, 06:14:27 PM
Но программа не создает перевод если в свойствах defname нету описания, которое показывается в игре, она игнорирует такие свойства как (ресурсы для постройки, стоимость, количество здоровья и прочее)
Поэтому если использовать Defs мода отдельно от основного Defs дубликатов быть не должно... да даже теоретически если их использовать вместе дубликаты не появятся...
Может все же мод не только изменяет свойства у defname но и изменяет описание перезаписывая основное? Тогда проблема мне понятна...
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 16, 2016, 07:27:21 AM
изменяет описание перезаписывая основное
Именно так и происходит.
Берётся полностью defname и перезаписывается с другими параметрами.
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 16, 2016, 08:09:33 AM
Хорошо, базовая проблема ясна.
Что относительно модов? Они могут перезаписывать значения друг у друга? У них есть какой-то порядок чтения?

Ты обсуждал эту проблему с разработчиком? По хорошему, такой проблемы как дубликаты в данном случаи быть не должно, перевод мода должен перезаписывать основной перевод и никаких ошибок быть не должно. Иначе получается проблема с переводом игры, если игрок удалит мод, тогда ему потребуется основной перевод, а его не будет так как он брал перевод для мода и у него выскочат ошибки о том, что таких тэгов не существует...
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 17, 2016, 01:40:33 AM
Такой проблемы как отсутствие перевода после удаления мода не будет - весь перевод дефов, которые есть в Core находится в Core.
Просто не нужно в модах добавлять перевод дефов, которые есть в Core.
С разработчиком бесполезно говорить. Он даже перевод бэкстори не может организовать.

Про то что моды перезаписывают друг друга не видел такого, но вполне возможно что такое тоже есть. Не уверен точно.
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: KviEt on September 17, 2016, 08:44:55 AM
Хм, но если игнорировать значения из модов, то перевод будет неполным для мода... тебя и игроков устраивает такой расклад?
Title: Re: A console-program for comparing Defs folder with DefInjected folder.
Post by: Ivanzyfer on September 17, 2016, 03:12:44 PM
Плохо я объяснил. Попробую на примере. Допустим есть мод, которые берет дефнэйм bed и изменяет ресурсы, необходимые для постройки. Этот дефнэйм оказывается в папке defa мода. Но этот же дефнэйм остаётся в папке defs Core. Если добавить перевод дефнэйма bed в мод, то будет ошибка о дубликате перевода.( Потому что перевод уже есть в Core)

Выходит что значения мод перезаписывают, а перевод не может переписать.