Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web

Перевод программ под Windows

 

Дом Безопасность Библиотеки Хакеры Телефон Халява Казино Поиск Развлечение
 

Как это не прискорбно, но многие хорошие программы имеют англоязычный интерфейс и не всегда программисты заботятся о многоязыковой поддержке своих программных продуктов. Но существует выход: перевести интерфейс программы на другой язык самому. Данная статья рассказывает как это сделать, и с помощью каких программ. 

Для перевода программ под 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 #160;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 \\Завершение создания окна

Здесь нужно изменять текст, находящийся между одинарными кавычками (' ').

Если при переводе Ваш текст не поместился в одну строку, добавьте конструкцию WordWrap = True. Это позволит расположить текст любой длины, причем количество строк будет определяться автоматически:

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 \\Завершение создания панели

Но это будет работать только для компонента, который имеет свойство WordWrap, иначе будет ошибка.

Все это достаточно просто, ведь текст в редакторе ресурсов виден и доступен для редактирования. Но что делать, если текст какого-то окна сообщения находиться не в ресурсах, а в внутри модуля программы? Вот тут нам и поможет шестнадцатеричный редактор. Итак, мы открываем программу, например, в WinHex и находим структуру, которую хотим перевести. Возьмем для примера текст All Rights Reserved, который спрятан внутри EXE модуля (http://www.comizdat.com/3/4/6/2852/img/1/3/4/6/90/2850/2852/before.jpg).

Переводим его на русский язык так, чтобы наш текст не выходил за рамки оригинального текста и сохраняем (http://www.comizdat.com/3/4/6/2852/img/1/3/4/6/90/2850/2852/after.jpg)

И самое главное: не забывайте первое правило любого крякера  

Делайте резервные копии!

Владимир Дригалкин, ep_big@comizdat.com

По материалам сайта: http://www.comizdat.com/  Журнал "К+Р"

 
Zayka - Все что тебе нужно! Вверх Дом Добавить в избранное zayka8m@mail.ru