|
Перевод программ под Windows. ...by Vladimir Drigalkin, LENIN INC
Для перевода программ под Windows используются редакторы ресурсов, которых развелось достаточно много. Самые лучшие, на мой взгляд, Resurs Hacker и Restorator. У каждой из них есть свои плюсы и минусы. С помощью программы Resurs Hacker Вы можете курсором мыши передвигать или растягивать окна и кнопки, а это Вам понадобится, т.к. переведя надпись кнопки на другой язык, она может быть больше и не вмещаться в размеры кнопки. Также можно изменять стили, создавать новые или удалять существующие ресурсы непосредственно в exe модуле или res файле. У программы Restorator более удобное дерево ресурсов, есть возможность произвести удаление или замену системного файла после перезагрузки компьютера. Это удобно если файл используется Windows. К сожалению, эта функция Restorator не поддерживает длинные имена каталогов и файлов. Двух этих программ для русификации будет более чем достаточно. Не в счет программы для распаковки exe модулей, а также Вам может понадобится шестнадцатеричный редактор. Самые лучшие, на мой взгляд, WinHex, Qview. Шестнадцатеричный редактор будет нужен только в том случае, если определенный текст находится не в ресурсах, а в самом модуле программы. К сожалению, здесь нельзя вводить текст, который будет превышать оригинальный текст. Не забывайте об этом, иначе программа просто загнется.
Программа может содержать различные ресурсы - AVI, Bitmap, Menu, String, Icon, Dialog и другие. Мы рассмотрим пример ресурса Dialog, отображаемый в программе Resurs Hacker. Это всего лишь пример, я не указал Стили, которые будут отображены в реальном ресурсе и разделены между собой вертикальной чертой (|). Мои комментарии выделены красным.
ABOUT DIALOG 138, 102, 276, 68 ; Размеры всего диалога
STYLE (Стили) ; Стиль окна
CAPTION "About..." ; Название окна
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL ; Язык диалога
FONT 8, "MS Sans Serif" ; Размер и тип используемого шрифта
{
CONTROL "©2002 by LENIN INC", 8, STATIC (Стили), 40, 14, 90, 32
CONTROL "All Rights Reserved", 9, STATIC (Стили), 40, 19, 90, 32
CONTROL "&OK", 1, BUTTON (Стили), 218, 6, 50, 14
CONTROL "&Cancel", 2, BUTTON (Стили), 218, 26, 50, 14
CONTROL 1, 3903, STATIC (Стили), 10, 10, 18, 20
} |
Для перевода на другой язык вам нужно будет заменять текст, находящийся в кавычках (" "). Если Ваш текст не помещается, растяните его курсором мыши в окне. Размер текста и кнопок можно также задать числами, которые находятся в конце строк (выделены зеленым). Посмотрите на окончание самой последней из строк - Вы увидите четыре числа:
Первое - задает отступ элемента от правого края
Второе - задает отступ элемента от верхнего края
Третье - задает ширину элемента
Четвертое - задает высоту элемента
Символ & подчеркивает букву, расположенную после него. Подчеркнутая буква задает "гарячую" клавишу, при нажатии на которую запускаеться соответствующий процесс. Ресурсы Menu и String редактируються также, как и Dialog - изменяется текст, находящийся в кавычках (" ").
Посмотрите как выглядит ресурс меню.
TOOLBAR MENU
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL ; Язык меню
{
POPUP "&File"
{
MENUITEM "&Open File\tCtrl+O", 190
MENUITEM "&Save File\tCtrl+S", 151
MENUITEM "Save File &As...\tShift+Ctrl+S", 152
MENUITEM SEPARATOR ; Разделительная полоса
MENUITEM "&Exit\tAlt+X", 143
}
} |
После элемента \t указаны сочитания клавиш для быстрого доступа.
Все, что было сказано выше, в основном касается программ, написанных на API настоящими программерами, то есть без использования визуальных компонентов. Открыв программу, написанную с помощью визуальных компонентов, например, в Delphi, Вы увидите структуру, в которой будут ресурсы типа RCData. Привожу фрагмент подобного кода, который отображает окно "Errors". К сожалению, само окно Вы не сможите увидеть в редакторе ресурсов. Ни один из указанных здесь редакторов ресурсов не отображает предпросмотр окон программ, написанных в Delphi.
object ErrForm: TErrForm \\ Начало создания окна
Left = 389
Top = 337
Width = 348 \\ Ширина основного окна
Height = 283 \\ Высота основного окна
Caption = 'Errors' \\ Заголовок окна
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif' \\ Используемый шрифт
Font.Style = []
Position = poDefaultPosOnly
OnClose = FormClose
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel \\ Начало создания панели
Left = 0 \\ Отступ слева
Top = 0 \\ Отступ справа
Width = 340 \\ Ширина панели
Height = 25 \\ Высота панели
Align = alTop
Alignment = taLeftJustify
BevelOuter = bvNone
Hint = 'Message' \\ Текст подсказки
Caption = 'Not found this files! Run process again?'
TabOrder = 0
end \\ Завершение создания панели
end \\ Завершение создания окна |
Здесь нужно изменять текст, находящийся между кавычками (' '). Я разделил цветом каждый елемент, который начинается атрибутом object и завершается end.
Если при переводе Ваш текст не поместился в одну строку, добавьте конструкцию WordWrap = True. Это позволит расположить текст любой длины, причем количество строк будет определяться автоматически. Но это будет работать только для компонента, который имеет свойство WordWrap, иначе будет ошибка.
object Panel1: TPanel \\ Начало создания панели
Left = 0 \\ Отступ слева
Top = 0 \\ Отступ справа
Width = 340 \\ Ширина панели
Height = 25 \\ Высота панели
Align = alTop
Alignment = taLeftJustify
BevelOuter = bvNone
Hint = 'Message' \\ Текст подсказки
Caption = 'Not found this files! Run process again?'
WordWrap = True \\ Добавили новый параметр
TabOrder = 0
end \\ Завершение создания панели |
Теперь попробуем изменить текст сообщения в самом модуле программы. Итак, мы открываем программу в шестнадцатеричном редакторе, например, в WinHex и находим структуру, которую хотим перевести: в нашем случае это текст All Rights Reserved.
Переводим его на русский язык так, чтобы наш текст не выходил за рамки оригинального текста и сохраняем.
И не забывайте первое правило любого крякера - Делайте резервные копии!
|
|
|