Продолжаю цикл цикл статей по локализации программ. Сегодня у нас достаточно сложная тема - это локализация жестко закодированных строк. Если программа не поддерживает или поддерживает лишь частично локализацию с помощью ресурсов, то часть строк, требующих перевода, может содержаться в коде и данных PE файла. Эти строки называются жестко-закодированными.
Иногда используемый нами ранее Radialix без проблем вытаскивает нужные ресурсы и ссылки из программы. Но так бывает не всегда. Тогда нам приходится использовать дизассемблер IDA, благо у Radialix есть плагин для него.
Итак, качаем IDA и приступаем к локализации.
Сегодняшним подопытным у нас будет программа Vector Magic. Программа позволяет делать перевод растрового изображения в векторное (трассировка). Интерфейс у программы изначально английский.
- Предполагается, что Vector Magic у вас уже установлен и зарегистрирован. Нам потребуется файл VMde.exe - его и будем переводить на русский. Копируем его куда вам удобнее, я обычно кидаю на рабочий стол.
- Установим IDA Pro 5.2 и зарегистрируем. К сожалению, плагин Radialix не работает на новых версиях IDA. Можете взять её тут - https://yadi.sk/d/dKdT-Prz3EmUe2
- Заходим в папку с программой Radialix. Копируем файлы rdmap.plw, rdmap.rus, rdmap64.rus, rdmap64.p64 в папку plugins, где установлена IDA. Скриншоты кликабельны.
- Запускаем IDA и скармиливаем ему файл VMde.exe (File->Open). Ждём когда программа закончит анализ файла. Это займёт некоторое время. Дожидаемся надписи, как на скриншоте:
- В IDA выбираем "Найти все 32-разрядные ссылки" (В меню Edit) и дожидаемся завершения операции. Выскочит запрос на найденое количество ссылок.
- Опять идем в меню Edit и выбираем "Сохранить RDMAP файл как и выбираем путь сохранения.
- Открыввем программу Radialix и создаём проект локализации. Добавляем этот-же файл, которым кормили IDA (VMde.exe). Обязательно включите извлечение жестко закодированных строк и укажите путь к файлу RDMAP, который сохранили в IDA:
- Включите "Установить кодек" в меню "Локализованные файлы". Это даст нам создание библиотеку QTPatch32.1251.dll.Эту библиотеку необходимо копировать вместе с локализованным файлом. Она нужна нам для русификации приложения, написанного на QT. Иначе у нас возникнут проблемы отображения русского интерфейса.
- Нажимаем "Далее" и создаём проект. Идём в дерево ресурсов и открываем HARDCODED. Тут и живут у нас строки, для которых требуется сделать перевод. В данной программе предусмотрена справка и она также находится в этих строках, а не вынесена отдельно. Для редактирования нам обязательно нужно снять параметр "Только для чтения". Изначально строки у нас не активны для перевода и текст вы туда ввести не сможете:
Щелкаем пару раз левой кнопкой мышки по колонке "Статус" в нужной строке (где R). И получаете возможность править текст. Текст будет выделен красным после снятия ограничения:
- Делаем перевод программы, как и в прошлом уроке. И сохраняем. Это конечно осложняется тем, что строк очень много и не все отвечают за перевод. Ну это не беда, при наличии времени и желания победить можно.
- Также файл RDMAP можно подключать в свойствах проекта, а не только при изначальной настройке. В итоге получаем программу на русском:
На сегодня у меня всё. Спасибо за внимание!
К сожалению, скопировал текст без форматирования из документа и отправил. Теперь в BB редакторе никак не поправить. Прошу просить, что некоторые моменты не выделил, как обычно. Скриншоты все кликабельны.