Как получить исходные файлы для их последующего перевода?
Делается это просто:
1. Переключаемся на английский язык (файл language.txt)
2. Запускаем игру
3. В самом первом окне заходим в Configure и включаем оконный режим (Start Windowed)
4. Выбираем необходимый Current Setting (Native или мод)
5. Начинаем новую игру
6. При появлении игровой карты нажимаем View/Create Language Template=>Default
7. В корневом каталоге игры появится папка new_language с исходными файлами
Не создались файлы hints.csv, ui.csv, uimain.csv. Где их взять?
Эти файлы общие для игры и всех модов. Если вы делаете перевод мода, а локализация для Native уже установлена, то их переводить не нужно. А английские файлы находятся в папке Mount&Blade\languages\en.
Примечание. Если локализация Native установлена, но для переводимого мода всё-таки хочется использовать свой вариант этих файлов, то можно их перевести и положить в ту же папку, где лежат остальные языковые файлы. В некоторых (а возможно и во всех) случаях это срабатывает.
Что именно нужно переводить?
Языковой CSV-файл имеет такую структуру: ID|text,
где ID - идентификатор строки (обычно имеет вид: bla_blabla_bla_bla),
text - содержание, отображающееся в игре
В какой программе лучше всего делать перевод?
Для этого прекрасно подходит самый обычный Блокнот, встроенный в Windows, или его аналоги. Сейчас я использую Notepad++. Перевод следует сохранять в кодировке UTF-8 (настраивается в окне "Сохранить как...").
Не советую использовать программы, форматирующие текст по собственному разумению (MS Word, например).
Excel форевер! Нафиг нужен этот блокнот?
Ой, как соблазнительно использовать Excel для перевода. Он и CSV-файлы открывает, и разделители понимает, и столбики в нём аккуратные, и строчки пронумерованные... Только вот при сохранении может текст переформатировать по-своему, и с кириллицей в кодировке UTF-8 он принципиально не работает. Очень не советую, если не хотите потом лишнего гемора с кракозябрами. А блокнот - одна из немногих программ, которая сохраняет текст без искажений. Вы много видели настоящих программистов, пишущих исходники в Ворде? Вот, а Экселем они пользуются ещё меньше.
А можно ли как-то облегчить процесс получения и перевода файлов?
Можно воспользоваться услугами M&B Mod Localiser.
Как заставить игру увидеть переведённые файлы?
Во-первых, эти файлы нужно поместить в папку Mount&Blade\Modules\...название модуля...\languages\ru.
Во-вторых, надо переключить игру на русский язык: в корневом каталоге игры изменить содержание файла language.txt с EN на RU.
После этого запустить игру.
Русские буквы не отображаются, одни кракозябры. Что не так?
Дело в кодировке. Все языковые CSV-файлы должны быть сохранены в UTF-8. Это легко проверить: открываем файл блокнотом, нажимаем "Файл/Сохранить как..." и снизу смотрим кодировку. Она обязательно должна быть UTF-8. Если другая, то выбираем нужную и пересохраняем файл.
В случае проблем с отображением русского языка рекомендую сравнить подозрительный файл с аналогичным файлом на другом языке, если это возможно. Или поэкспериментировать самостоятельно.
Почему в некоторых меню отображаются одинаковые строчки, хотя должны быть разные?
Это давний глюк модульной системы. Дело в том, что идентификаторы строк содержит не только языковой CSV-файл, но и исходный файл ресурсов игры, хотя общая структура у него другая. Движок игры определяет ID строки в исходном файле и подставляет значение строки с таким же ID из локализованного. И если в исходном файле разные строки идут под одним идентификатором, то и отображаться будет только одна строка.
Возьмём для сравнения исходный файл menus.txt и соответствующий ему языковой файл game_menus.csv. Если открыть оба файла блокнотом и сравнить, то можно заметить, что в исходном файле есть точно такие же идентификаторы строк, как и в языковом. И если вы поищете строку с ID= mno_continue, то найдёте несколько строк со значением Continue и по одной строке со значением Yes и No. К сожалению, игра сама не может определить какую строку в каком случае надо подставлять, поэтому в переводе всегда будет показано "Продолжить". Как же разделить строки? А просто. В обоих файлах мы изменим идентификаторы нужных строк: для просто Continue оставим без изменений, а для Yes и No переименуем идентификаторы соответственно в mno_continue_yes и mno_continue_no (если вы установили мою локализацию, то это уже сделано). Теперь в меню игры слова "Продолжить", "Да" и "Нет" показываются там, где надо.
Как сделать перевод приятным и привлекательным?
Очень просто: делайте проверку правописания, хотя бы для диалогов. Иначе можно здорово насмешить почтенную публику: как можно всерьёз воспринимать своего персонажа, если вместо битвы его хочется взять за ручку и отвести в школу? Для этого надо сделать копию CSV-файла и пересохранить её в кодировке ANSI. Полученный файл открыть в Excel'е, удалить столбец с идентификаторами и включить проверку орфографии. Все найденные ошибки исправлять в оригинальном файле через блокнот.
Не могу проверить орфографию. Почему мой Excel не делит текст по столбикам?
Что ж, будем настраивать Excel. Тут вся фишка в разделителе: в игре используется "|", а в системе по умолчанию ";". Надо открыть Панель управления -> Язык и региональные стандарты -> Региональные параметры -> Настройка -> Числа и поставить | в строке "Разделитель элементов списка".
Хочу вставить перевод мода в инсталлятор. Как это сделать?
Надо создать текстовый документ и скопировать в него следующий код:
SetCompressor /SOLID lzma
!define PRODUCT_NAME "Russian Language for MODNAME"
!define PRODUCT_VERSION "(v1.0)"
!define PRODUCT_WEB_SITE "http://rusmnb.ru"
!include "MUI.nsh"
BrandingText "_NICKNAME_"
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp"
!define MUI_FINISHPAGE_LINK "Посетить русский форум на taleworlds.net"
!define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}"
!insertmacro MUI_PAGE_WELCOME
!define MUI_TEXT_WELCOME_INFO_TITLE "Русификатор для MODNAME"
!define MUI_TEXT_WELCOME_INFO_TEXT "Эта программа установит файлы русского языка для MODNAME.$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\nПеред началом установки рекомендуется закрыть игру.$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\nНажмите 'Установить'для продолжения."
!define MUI_TEXT_FINISH_INFO_TITLE "Завершение установки"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Russian.exe"
ShowInstDetails hide
Function .onInit
ReadRegStr $R4 HKLM Software\Mount&Blade ""
StrCmp $R4 "" 0 RegFine
MessageBox MB_ICONSTOP|MB_YESNO "Игра Mount&Blade не обнаружена. Рекомендуется прекратить установку.$\nЕсли Вы продолжите, то установка будет произведена по умолчанию в:$\nC:\Program Files\Mount&Blade.$\n$\nПродолжить установку?" IDYES RegFine1
Quit
RegFine1:
StrCpy $R4 "$PROGRAMFILES\Mount&Blade"
RegFine:
StrCpy $INSTDIR "$R4"
FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR\Modules\MODNAME\languages\ru"
SetOverwrite on
File "dialogs.csv"
File "factions.csv"
File "game_menus.csv"
File "game_strings.csv"
File "item_kinds.csv"
File "item_modifiers.csv"
File "parties.csv"
File "party_templates.csv"
File "quests.csv"
File "quick_strings.csv"
File "skills.csv"
File "skins.csv"
File "troops.csv"
; File "hints.csv"
; File "ui.csv"
; File "uimain.csv"
SetOutPath "$INSTDIR"
SetOverwrite on
File "language.txt"
SectionEnd После сохранения меняем расширение с txt на nsi. Теперь это не просто текст, а установочный скрипт для инсталлятора NSIS (он бесплатный, качаем 1.5Mb с домашней страницы). Скрипт проверен на текущей версии NSIS 2.35, но должен работать и на более новых, пока там что-нибудь кардинально не поменяют.
У него нет визуального интерфейса, но пользоваться им просто:
1. В скрипте вместо NICKNAME пишем своё имя
2. Вместо всех MODNAME пишем название локализованного мода
3. Указываем версию перевода (по умолчанию стоит v1.0)
4. Копируем скрипт в папку с нашими локализованными файлами
5. Нажимаем на него правой кнопкой и в меню выбираем Compile NSIS Script (ясное дело, сам NSIS должен быть уже установлен)
6. В той же папке появляется файл Russian.exe
7. Запускаем, проверяем, радуемся.
- Название мода пишите внимательно - так называется папка с установленным модом в папке Modules. Иначе русификация установится мимо мода. Это название встречается в скрипте несколько раз, не пропустите.
- Вместо win-install.ico и win.bmp можете вставить свои картинки.
- В секции "MainSection" есть три неактивные строки (в самом низу). Если вы захотите использовать в моде файлы hints.csv, ui.csv и uimain.csv собственного перевода, то надо поместить их в папку к остальным файлам и раскомментить эти строчки (просто стереть символ ";" перед ними). Тогда скрипт включит их в сборку.
- Перед распространением русификатора проверяйте его онлайн-антивирусом, на всякий случай
- Инсталлятор сам находит установленную игру по записи в реестре. Если не находит, то появляется предупреждение, что файлы будут установлены по умолчанию в C:\Program Files\Mount&Blade
- Номер версии не проверяется: поскольку моды в реестр не записываются, то и проверять там нечего.