Продолжаю цикл статей о локализации программ. В первой части я писал о локализации программ для Android. В этой части планировалось написать о локализации программы с использованием моего любимого инструмента Radialix, но всё же я решил для начала ознакомить вас вообще с инструментами, которые используются для этих целей и как с ним работать. И каждый оформить в отдельную статью, а то писать придётся очень много. Лучше раскидаю информацию на каждый день. Также добавлю в цикл информацию о локализации справки, что также иногда бывает нужно.
Вообще, инструменты для локализации можно разделить на три вида:
1. Обычные редакторы ресурсов.
2. Шаблонные переводчики.
3. Хекс редакторы.
Отдельно стоит упомянуть о дополнительных утилитах для снятия защиты и распаковки. К этому мы также вернёмся со временем. Примем за факт в данном случае, что exe или библиотека у нас не нуждается в распаковке и готова к изменению ресурсов.
Редакторы ресурсов.
Очень много зависит конечно от языка, на котором написана программа. Но больше всего меня бесит .NET. Некоторые локализаторы вообще стараются держаться от него подальше. Но не будем о грустном. Чем плоха русификация в редакторах ресурсов - вы заменяете текст и не видите исходника. В шаблонных редакторах это исправлено.
Подопытным кроликом для нас будет программа Araxis Merge. На её примере достаточно просто объяснить некоторые моменты. О нюансах локализации для разных ЯП напишу отдельную статью в будущем. График я себе уже составил о чем буду писать.
Редакторы ресурсов - это Restorator, Resourse Hacker и другие. Работа в них особо между собой не отличается.
Restorator - пожалуй один из самых известных редакторов ресурсов. К сожалению, программа не обновляется с 2007 года. Но старичок ещё жив и активно используется для простых задач. Я, честно сказать, редко им пользуюсь и только для мелочи. Итак, скачаем и установим программу. Она изначально имеет английский интерфейс, но как же локализаторы оставят это без последствий?
После установки открываем программу и выбираем файл для просмотра. Именно просмотра - режим редактирования включается отдельно.
Итак, открываем файл, который вам нужно. Для начала откроем исполняемый файл программы. У меня это Merge.exe в папке с установленной программой. И, как видим, он не содержит строковых ресурсов. Изменить мы можем иконку и другую мелочь, что нам в данном случае не требуется. Тогда закрываем файл и начинаем искать в папке с русифицированной программой библиотеку или исполняемый файл, которые содержит необходимые нам ресурсы. В данном случае у программы существует возможность изменения языка интерфейса, а библиотеки, содержащие ресурсы, названы в соответствии с используемым языком. То есть 2057.dll и 2057rbn.dll. Несколько строк имеет также файл compareshellext.dll - эти строки отвечают за интеграцию в проводник.
Также имеется файл MgReportLocalized.xslt (находится в папке 2057) - в нём находятся строки, отвечающие за создание отчетов. Он правится обычным редактором, например Notepad++.
Копируем файлы, нужные нам в любую папку, например на рабочий стол и сделаем резервную копию куда-нибудь ещё, чтобы потом не пришлось переустанавливать программу в случае чего. Не рекомендую редактировать файлы в папке с установленной программой - могут возникнуть проблемы с сохранением результата. Открываем файл 2057.dll - и смотрим на дерево ресурсов слева. Нам нужны меню, диалоги и строковые ресурсы. В обычном режиме мы видим только текст. Переключаем в режим редактирования, о чем писал выше. Теперь вооружаемся переводчиком и принимаемся за правку меню. После изменения текста нажимаем на зеленую галочку в панели для применения изменений.
Самое главное - подобрать тот перевод, который будет понятен вам и пользователям. Не копируйте тупо текст и гугл переводчика и будьте внимательнее. Не изменяйте идентификаторы, а только текст!
После локализации меню занимаемся строками и переходим к диалогам. Тут есть некоторые нюансы: если тест не влезает в окно или мешает другим строкам, то возможно перемещение пункта, сжатие или удлинение строки. Старайтесь опять же сделать так, чтобы текст не налезал на другой и по возможности делайте перевод более компактным. Ведь изначально строка была на английском, на котором гораздо короче можно объяснить смысл того или иного действия.
2057rbn.dll - этот файл также содержит ресурсы, но отвечает за ставший модным сейчас интерфейс в стиле Ribbon, который используется в Microsoft Office и других популярных программах. Данный ресурс содержит только строковые ресурсы. Но их достаточно много. Они частично дублируют строки меню из файла 2057.dll - остались видимо ещё со старой версии программы, которая не имела интерфейса Ribbon - можете брать свой же перевод оттуда.
Локализацию compareshellext.dll производим аналогично. Но при замене в папке с программой предварительно снимите настройку интеграции в проводник. Иначе система файл вам заменить не даст. MgReportLocalized.xslt правим редактором. Я вообще просто копирую папку с новым именем 1049 и правлю с самой программе Araxis Merge. Кому что удобнее.
После локализации переименовываем отредактированные файлы, заменяя 2057 на 1049 (где они есть, то есть русский) - для того чтобы вы могли переключить язык в программе. Также переименовываем папку 2057 в 1049. Думаю понятно почему. Получается вот это в итоге:
Копируем локализованные файлы в папку с программой и запускаем. Радуемся русскому интерфейсу.