Gratt
Модостроитель
- Регистрация
- 14 Ноя 2014
- Сообщения
- 3.301
- Благодарности
- 4.636
- Баллы
- 625
Общий смысл инструмента в том, чтобы развязать переводчикам руки.
Для перевода вам не нужно иметь исходный код мода. Более того, сам мод трогать вообще не надо.
Файл перевода будем называть словарем.
Словарь - обычный текстовый файл с кодировкой Unicode LE (UCS-2 LE BOM).
Синтаксис словаря делит документ на теги:
Тег
;
- это комментарий. За стоящим в начале строки символом можно писать любой произвольный текст.Тег
Text
- строка, следующая за этим тегом, будет определять исходную строку, которую необходимо перевести.Языковые теги
Rus/Pol/Eng/Ger
- текст, следующий за тегом, будет определять один из вариантов перевода строки Text.Тег
OneMore
- этот тег говорит, что если в скриптах существует более одного экземпляра строки Text, то следующий вариант перевода для предшествующего языка будет выбираться поочередно.Пример готового словаря:
Всё! Больше никаких действий над словарем производить не нужно.
Теперь разберемся как подключить словарь к игре. Тут все предельно шаблонно. Необходимо создать .patch файл в кодировке ANSI (который всегда запускается автоматически, если виден игрой), в нем вызвать плагин zGlossary и передать имена ваших словарей.
Пример такого .patch файла:
Можно сделать множество словарей, в один засунуть переводы предметов, в другой переводы писем, в третий диалоги, а затем подключить через .patch
Union:
#engine
#patch
LoadPlugins("zGlossary")
LoadGlossary("GlossaryItems.gls")
LoadGlossary("GlossaryLetters.gls")
LoadGlossary("GlossaryDialogs.gls")
#/patch
#/engine
Все просто, верно? Но что делать с релизом перевода? Выкладывать кучу текстовиков не самая лучшая идея, поэтому все свои .dll, .patch и .gls спокойно пакуем в .vdf или .mod. Весь функционал сохранится, Union сам найдет документы внутри томов.
Кстати, о шрифтах. Очевидно, он необходим для правильного отображения теста соответствующих локализаций. Предлагаю интересный фокус. Находите такие шрифты, называете их удобным образом, например в конце имени приписываете тег языка. А потом изменяете имя шрифта в скриптах на тот, который необходим. И вуаля, ваш словарь ещё и шрифт динамически менять умеет!
Теперь разберемся с пользовательскими вопросами. Как словарь определит язык игрока? Он сделает запрос у Union и тот ему ответит, какой целевой язык используется системой. Результат запроса продублируется в Systempack.ini, секцию Glossary, в параметр Language, который всегда можно изменить. Например у меня такой язык определится как Rus.
Прикладываю тестовый исходник, проверенный на G1 с ModFix от ElderGamer
Внутри .dll, готовый .patch и .gls. А также синтаксисы для Notepad++.
Вложения
Последнее редактирование модератором: