PDA

Просмотр полной версии : Инструкция по русификации модов



Tomahawk
03.03.2016, 06:47
Вы скачали интересную модификацию, а русский язык в ней не поддерживается, что делать? Можно сделать перевод "по-быстрому" для себя, или хорошо поработать в интересах всего сообщества, но тогда от вас потребуется хорошее знание не только английского, но и русского языка. В этом случае должна получиться именно русификация, а не какая-нибудь "руссефекацыя" :D В ходе перевода необходимо придерживаться реальных исторических или географических названий, соблюдать основную идею оригинального текста, чтобы не исказить задумки авторов. В некоторых случаях, когда описание юнита, здания и т.д. скудное, его можно дополнить своими предложениями. Итак, рассмотрим суть процесса.

1) Для начала необходимо определиться с инструментом, который будет подсвечивать нам синтаксис. Я использую бесплатный "программерский" блокнот log Notepad++.

2) Текст как правило находится в одном или нескольких файлах XML, но некоторые создатели модов могли оставить его и в скриптах lua. Разберём оба случая.

3) Находим файл XML, открываем. Текст может быть заключён внутри


<GameData>
<Language_en_US>
<Row Tag="TXT_KEY_NAME_ML_SAHARA">
<Text>Sahara</Text>
</Row>
<Row Tag="TXT_KEY_NAME_ML_MAGHREB">
<Text>Maghreb</Text>
</Row>
</Language_en_US>
</GameData>

- Первым делом меняем кодировку файла, чтобы наши труды не пропали зря ввиду появления крякозябр. В меню Notepad++ нажимаем "Кодировки \ Преобразовать в UTF-8 (без BOM)". Файл можно тут же сохранить, чтобы он остался в нужной кодировке и больше об этом не думать.
- Переводим строки и у нас получается <Text>Сахара</Text> и <Text>Магриб</Text>, готово. Кто хотел перевести 2 слова, может дальше не читать. Это был перевод "по-быстрому для себя". Работать будет, но грамотнее сделать так, как описано ниже.

Поддержка нескольких языков в модификации.

bullet Например, имеется файл "Text_EN.xml" с английским текстом. Скопируйте его в другое место и переименуйте в "Text_RU.xml", измените в нём кодировку на UTF-8 (см. выше).

bullet Английские тэги Language_en_US замените на Language_ru_RU.

bullet Переводите текст.

bullet Откройте главный файл мода *.modinfo с notepad++, в нём вы увидите строку наподобие:
<File md5="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" import="0">All_Text/Text_EN.xml</File>

bullet Поместите в папку All_Text рядом с Text_EN.xml файл Text_RU.xml

bullet Добавьте в *.modinfo запись, должно получиться так:
<File md5="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" import="0">All_Text/Text_EN.xml</File>
<File md5="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" import="0">All_Text/Text_RU.xml</File>

bullet И не забудьте подцепить его к базе данных, добавив запись
<UpdateDatabase>All_Text/Text_EN.xml</UpdateDatabase>
<UpdateDatabase>All_Text/Text_RU.xml</UpdateDatabase>
*файл с другими языками располагайте после файла с английским текстом.

Пояснение как это работает. Игра по умолчанию ожидает увидеть английские тэги, и уже потом ищёт локализацию. Оригинальный текст вы оставляете, добавляете к моду только русский. Игра посчитает, что всё в порядке.

Вместо XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX вы увидите что-то наподобие ABD5FA5416A63C4E062E3F9113215550, это контрольная сумма файла MD5. По сути она нужна только для того, чтобы определить изменения в файлах, например для выкладывания мода в Steam.

Удобно использовать программу HashMe, она прикреплена к этому сообщению ниже. Установите программу на ваш компьютер (проверялось на Windos 7 64). Теперь по нажатию правой кнопки по любому файлу в контекстом меню будете видеть пункт Hash (MD5/SHA-1/SHA-256/CRC-32). Нажимаете, открывается окно, отметьте там галочку Uppercase. Всё, теперь достаточно скопировать строку MD5.


4) Вам может потребоваться изменить оригинальный текст самой игры, если модификация внесла какие-то изменения, а текст в игре по смыслу перестал с ней совпадать. Первым делом нужно найти оригинальный тэг в файлах из папки с Цивилизацией 5. Проблема в том, что каждый аддон вносил свои изменения, поэтому нужно поискать его среди обоих аддонов (папки Expansion и Expansion2), а в некоторых случаях и среди DLC. Придётся открывать все эти файлы и делать поиск по тексту. Итак, например мы нашли тэг описания Каравеллы в цивилопедии, чтобы изменить этот текст нам потребуется:



<GameData>
<Language_en_US>
<Row Tag="TXT_KEY_NAME_ML_SAHARA">
<Text>Sahara</Text>
</Row>
<Row Tag="TXT_KEY_NAME_ML_MAGHREB">
<Text>Maghreb</Text>
</Row>
</Language_en_US>

<Language_ru_RU>
<Update>
<Where Tag="TXT_KEY_UNIT_CARAVEL_STRATEGY"/>
<Set Text="Новый текст. На каравеллах типа плавали раньше. Было круто."/>
</Update>
</Language_ru_RU>
</GameData>

Обратите внимание, что обновление текста заключено в тэг русской базы. С точки зрения игры у неё уже есть файлы с английским текстом, мы обновляем здесь только то, что нам нужно.

5) Некоторые англоязычные разработчики модов могут считать, что их язык единственный на Земле, или просто поленились, оставив текст прямо в lua-скрипте. Открыв скрипт в Notepad++, программа должна автоматически подсветить синтаксис. Текст будет выделен серым и заключаться по примеру "Random Islands Setting". Но будьте внимательны! Переводить нужно только те слова, которые вы уже видели при игре с этим модом, если не уверены - не переводите. Потому что если вы "переведёте" все серые названия, то кроме текста затроните и "служебные имена" (назову так для понимания). Это неизбежно испортит код скрипта.

6) Если планируете делиться переводом с кем-то ещё, то вы просто обязаны провести полную проверку перед публикацией. Все тэги в XML должны быть закрыты, lua надо было переводить аккуратно, чтобы не стереть лишние кавычки и скобочки - иначе у игры съедет голова, она может вылететь произвольным образом и так далее. В Notepad++ нажмите на тэге </Row>, и если он подсветился фиолетовым цветом, значит закрыт правильно. Лучше проверить все тэги, дабы быть уверенными в качестве, это всё равно быстрее, чем потом искать возможные проблемы.

bullet Если по результатам перевода он получился качественный, то своим трудом можно поделиться в этом разделе, создав новую тему.score

С уважением, Tomahawk.