• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

Gothic ½ Инструмент для переводчиков | zGlossary [Плагин для Union]

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
Общий смысл инструмента в том, чтобы развязать переводчикам руки.​
Для перевода вам не нужно иметь исходный код мода. Более того, сам мод трогать вообще не надо.​

Файл перевода будем называть словарем.​
Словарь - обычный текстовый файл с кодировкой Unicode LE (UCS-2 LE BOM).​

Синтаксис словаря делит документ на теги:​
Тег ; - это комментарий. За стоящим в начале строки символом можно писать любой произвольный текст.​

Тег Text - строка, следующая за этим тегом, будет определять исходную строку, которую необходимо перевести.​

Языковые теги Rus/Pol/Eng/Ger - текст, следующий за тегом, будет определять один из вариантов перевода строки Text.​

Тег OneMore - этот тег говорит, что если в скриптах существует более одного экземпляра строки Text, то следующий вариант перевода для предшествующего языка будет выбираться поочередно.​

Пример готового словаря:
1579297956683.png

Всё! Больше никаких действий над словарем производить не нужно.​

Теперь разберемся как подключить словарь к игре. Тут все предельно шаблонно. Необходимо создать .patch файл в кодировке ANSI (который всегда запускается автоматически, если виден игрой), в нем вызвать плагин zGlossary и передать имена ваших словарей.​

Пример такого .patch файла:​
1579296727533.png

Можно сделать множество словарей, в один засунуть переводы предметов, в другой переводы писем, в третий диалоги, а затем подключить через .patch​
Union:
#engine
    #patch
        LoadPlugins("zGlossary")
        LoadGlossary("GlossaryItems.gls")
        LoadGlossary("GlossaryLetters.gls")
        LoadGlossary("GlossaryDialogs.gls")
    #/patch
#/engine

Все просто, верно? Но что делать с релизом перевода? Выкладывать кучу текстовиков не самая лучшая идея, поэтому все свои .dll, .patch и .gls спокойно пакуем в .vdf или .mod. Весь функционал сохранится, Union сам найдет документы внутри томов.​

Кстати, о шрифтах. Очевидно, он необходим для правильного отображения теста соответствующих локализаций. Предлагаю интересный фокус. Находите такие шрифты, называете их удобным образом, например в конце имени приписываете тег языка. А потом изменяете имя шрифта в скриптах на тот, который необходим. И вуаля, ваш словарь ещё и шрифт динамически менять умеет!​
1579296987545.png



Теперь разберемся с пользовательскими вопросами. Как словарь определит язык игрока? Он сделает запрос у Union и тот ему ответит, какой целевой язык используется системой. Результат запроса продублируется в Systempack.ini, секцию Glossary, в параметр Language, который всегда можно изменить. Например у меня такой язык определится как Rus.​


Прикладываю тестовый исходник, проверенный на G1 с ModFix от ElderGamer
Внутри .dll, готовый .patch и .gls. А также синтаксисы для Notepad++.​
 

Вложения

  • zGlossaryTest.zip
    50,9 KB · Просмотры: 113
Последнее редактирование модератором:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
Наверное имеет смысл обратиться к N1kX как к переводчику. Мне интересно разобрать некоторые рабочие моменты, которые могут вызвать трудности.

Итак, начну с пояснения механики словаря. В момент загрузки dat и ou я перехватываю инициализацию строковых переменных. Нахожу соответствия в словаре и меняю на перевод. За счёт этого игра не теряет в производительности.
Предлагаю обсудить этап выдергивания строк из игры. Можно извлечь все тексты из бинарников в отдельный файл, как бы сгенерировав основу тегов Text, а также сразу для всех дубликатов сделать суффикс типа #1, #2, #3. Тогда будет наглядно видно, когда используется конкретная фраза.

Возможно есть ещё какие-то важные, но не очевидные для меня моменты? Стоит ли добавлять какие-то команды для марвин консоли?
В общем жду от вас каких-то комментариев.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910
Пока у меня нет возможности (мне предоставлюсь полностью исходники всего), но есть пожелания или предложения:
Если разобрать датник через DecDat, то можно увидеть, что все строковые переменные имеют название я15649 - типо строка + строка из списка, который создается при компиляции.
Так вот, у тебя наверно будут выдергиваться строки, которые нельзя переводить (их опытный переводчик заметит, а новичок нет)
Например: нельзя переводить строки всех расписаний НПС, названия WP/FP, некоторые служебные строки, если мод состоит из расширителя Ikarus+Lego, возможно что-то ещё (близкий пример - пиратские переводы Г2, где все было сломано)
Вот можешь посмотреть из датника мода Legend of Asshung строки с я10000 и возможно придумать алгоритм, чтобы исключить то, что нельзя переводить.
Насчет марвин команд не знаю, только в русском моде видел новые команды для консоли и все.
 

Вложения

  • Content.d
    17,7 MB · Просмотры: 92
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
возможно придумать алгоритм, чтобы исключить то, что нельзя переводить.
У меня в коробочке с хламом валяется программа, которая строит таблицу строковых переменных из датника. Думаю можно напичкать её фильтрами для разделения переменных по признакам, а затем почистить фильтрами от мусора.

Так вот, у тебя наверно будут выдергиваться строки, которые нельзя переводить
Но если такие и попадутся, то их несложно вычислить глазами. Все равно пока ты руками не введёшь перевод, строка в игре не изменится
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910
Для примера, название инстанции НПС/предмета может совпадать с названием рутины/Wp/FP и тут, только через код понятно где переводить, а где нет - пример из Г2 Декстер.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
N1kX, ну тут регистр разный, совпадение не точное :) и это очень легко обходится
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
1609866108628.png


Text:"Сохранение игры"
Rus:"Save game"

патч стоит. Что не так?
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910
Там ошибка в плагине
Первая строка должна быть пустой, никакого комментария
Также файл в UCS-2 LE BOM
Daedalus:
Пустая строка
Text:"Сохранение игры"
Rus:"Save game"
Пустая строка

Вообще там плагин вроде был сильно обновлен, пока я его смотрел, но как вышло есть некоторые траблы и я забросил, + несовместимость модов на икаре.
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Там ошибка в плагине
Первая строка должна быть пустой, никакого комментария
Также файл в UCS-2 LE BOM
Daedalus:
Пустая строка
Text:"Сохранение игры"
Rus:"Save game"
Пустая строка

Вообще там плагин вроде был сильно обновлен, пока я его смотрел, но как вышло есть некоторые траблы и я забросил, + несовместимость модов на икаре.

Ага..понял. Ну я так, чисто попробовать. Переводить весь проект на несоклько языков - особенно 6 полномаштабных сюжетов в 300+ страниц - мы точно не будет. Пусть мучаются сами кому надо.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910
Сделал синтаксис для плагина
1613577884856.png

1. в Меню выбираем Синтаксисы
2. прокручиваем в самый низ
3. выбираем Задать свой синтаксис
1542899513633.png
4. В меню пользовательское определение синтаксиса, нажимаем кнопку импортировать
5. Выбираем файл GlsText.xml, который вы скачали ранее
6. Перезапускаем Notepad++
7. При открытии gls словарей синтаксис будет применяться автоматом
 

Вложения

  • GlsText.zip
    973 байт · Просмотры: 9
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
А можно небольшой гайдик-пример как пользоваться плагином?
В шапке темы и так исчерпывающая информация, даже файл с примером прикреплен. Какой тебе ещё гайдик надо, как в Гугл переводчик вставлять фразы?)
 

Schmarotzer

Участник форума
Регистрация
30 Дек 2005
Сообщения
39
Благодарности
30
Баллы
175
Gratt, ну значит я тупой. Спасибо
 

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
У меня вопрос, а можно как то автоматически вытащить и синхронизировать "рыбу" словаря/ей из оригиналов разных версий игры и уже переведённых модов? Да я понимаю что в диалогах кое где в английской версии и в русской он состоит из нескольких частей, и это придётся ручками синхронизировать.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
Нифига не понял честно говоря. Попроще можно как-то? Типа по имени переменной на основе двух dat файлов сгенерировать словарь или что?
 

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
Аналогично, тоже нифига не понял :D, поскольку представления не имею в *.dat или ещё где хранятся переводимые ресурсы.
Вот у меня допустим установлена русская версия Г2НВ, английская и немецкая.
Вот как тупо по инструкции из нета при помощи редактора ресурсов извлечь словарь из *.exe или *.dll двух вариантов языков одной версии ПО, а потом тупо накатить на новую версию той же программы мне понятно. Останется только применить полученный словарь к новой версии программы, перевести пару новых строк и можно пользоваться. Что там сравнивает параграмма при сканируя ресурсов, имена переменных или что иное, я х/з, для меня это чёрный ящик.
Вопрос в том есть ли способ сканируя разные языковые версии готики (человеке не малейшего представления что там в нутре), получить словарь желательно заданного в шапке темы образца или нет.
Судя по всему нет пока
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
А зачем оно надо?
 

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
А зачем оно надо?
Что бы не переводит то что уже переведено. В своё время видел кучу иностранных модов дополняющих сюжет, если их накатить на русскую версию то всё становится по буржуйски.
 
Сверху Снизу