Здравствуйте, Наталья.
Вы писали:
> Возникла необходимость освоить новый вид деятельности - написание
> русификаций к программам. Раскажите, пожалуйста, как это делается, какие
> редакторы нужны (насколько я понимаю для разных программ разные), как ими
> пользоваться...
На самом деле универсального способа не существует. Возможны несколько
вариантов:
1. Некоторые разработчики выкладывают языковые ресурсы в отдельный файл.
Например в каталоге программы есть файл program.lng, и в нем написано нечто
вроде
[fileopendialog]
WindowTitle='Open file'
...
[ErrorMessages]
Err001='Unable to open file %s'
...
Тогда берем обычный текстовый редактор и переводим строки, заключенные в
апострофы, на нужный нам язык. Естественно, формат этого файла для каждой
программы будет отличаться, я привел лишь приблизительный пример.
2. Большинство программ сохраняют языковые данные в своей секции ресурсов.
Чтобы перевести их, нужен какой-либо редактор ресурсов. Лично я пользуюсь
resource hacker, но это дело вкуса. Попробуйте несколько, и выберите тот,
который покажется вам наиболее удобным.
Ресурсы бывают следующих видов:
A) StringTable. Это простые текстовые строки, например
0012="Не удалось открыть файл %s"
0013="Текстовый редактор блокнот"
В них могут храниться сообщения об ошибках, и вообще любые сообщения или
фрагменты сообщений.
B) Меню.
Это описания пунктов меню, например:
POPUP "Файл"
{
POPUP "&опции"
{
MENUITEM "&Основные настройки...", 148
Menuitem separator
MENUITEM "&Дополнительные настройки...", 212
}
}
Здесь описано меню "Файл", в котором имеется вложенное подменю "опции", а
уже в нем 2 пункта. Знак & перед буквой обозначает, что эта буква будет
"клавишей быстрого вызова" для этого меню. "Menuitem separator" - это
горизонтальная черта между пунктами меню.
C) VersionInfo, Accelerator, Bitmap, Cursor, Icon - они не представляют для
нас интереса.
D) Dialog. Здесь описываются диалоги (например, диалог настроек). При
переводе нужно следить, чтобы строки, если они окажутся длиннее
оригинальных, помещались в выделенные для них поля.
E)Rcdata. Некоторые разработчики могут хранить текстовые данные в них, но
поскольку их формат в каждом конкретном случае отличается, то их нужно
анализировать вручную.
Вообще стоит найти в интернете описание языка ресурсов и внимательно
изучить.
Также некоторые програмные защиты и упаковщики (например, AsProtect,
Armadillo и им подобные) шифруют (или запаковывают) секцию ресурсов. В таких
случаях, если очень нужно, сначала снимается защита, а потом уже ресурсы
переводятся как обычно. Но если в большинстве случаев с распространенными
упаковщиками можно найти подходящий распаковщик, то с защитами дело обстоит
хуже. Для более-менее продвинутых защит не существует автоматических
съемщиков, и приходится снимать их вручную. Но это весьма трудоемкий
процесс, и обычно овчинка не стоит выделки.
3. Некоторые разработчики вообще не выделяют языковые ресурсы ни в отдельный
файл, ни в секцию ресурсов. Это самый сложный случай. Приходится находить и
редактировать текстовые строки прямо в исполняемом файле с помощью
дизассемблера. Это, опять же, долго и трудоемко. А если файл еще и
зашифрован, то за такую работу нужно платить большие деньги:-)