Люди, помогите решить проблему! Вопрос, я подозреваю, простой, но не для меня. Взялся переводить прогу, а у неё часть интерфейса находится в бинарном виде не в коде (или данных), а в самих ресурсах. Открываю её в Hex Workshop, нахожу нужные записи. Замена "File" на "Файл" проблем не вызывает. Так же нет проблем, если исходный текст длинее переведённого. Проблемы начинаются, когда исходный текст короче, например "Cut" - как его, заразу, заменить на "Вырезать"? Мне посоветовали делать так: Вот нужная мне запись - "&Cut". Копирую четыре соседних символа, вставляю их в середину "&Cut". Т.е. получается - "&C....ut", и пишу поверх "Вырезать". Потом прописываю новое кол-во символов в строке - 08 (Знак перед амперсандом, типа большой буквы "Ять"). Сохраняю - файл падает, т.е. перестаёт запускаться. Извращался по разному, результат - полсотни убитых файлов (а может и больше). Гестапо отдыхает! И всё! Расскажите, в чём ошибка, кто знает! Желательно попроще, знаний в этом вопросе - минимум.
А почему бы не воспользоваться специализированным софтом для работы с ресурсами ? PE Explorer, Restorator, ....., они умеют перекомпиливать ресурсы.
Я же написал - часть ресурсов находится в бинарном виде. А их, насколько я знаю, можно редактировать только в НЕХ-редакторах.
Если эти строки прописаны в коде, то для каждой отведено соответствующее число байт. В редких случаях, каждой строчке выделяется масив определённого размера, но это явно не твой случай. Изменяя длинну строки, ты смещаешь все остальные адреса, и, естественно, всё падает. Длина должна совпадать и исходной, и ничего тут не поделаешь. Хотя можно например заменить Cut на Чик, Paste на Шлёп и т.д. Русский язык ведь такой богатый =)))
Да нет, это возможно. Я связался с одним спецом по части переводов, он мне кое-что рассказал и выслал в письме скриншот этой проги, переведённой им (частично). Т.е. выход есть. Я пытался делать по его рецепту, но вышло так, как я описал выше. Где-то я допускаю ошибку. Вопрос - где? А он намекнул мне, что у него нет времени заниматься моим просвещением, к сожалению.
Все просто! Ищешь VA(RVA)-ссылки на нужный текст (Cut, Copy, Paste ect.), находишь свободное пространство (обычно в этой же секции, в конце), вбиваешь туда свой текст (Вырезать, Копировать, Вставить и т.д.) и изменяешь эти ссылки на свои. Если это сложно, то воспользуйся программой OgreGUI (скачать, где-то там), там этот процесс автоматизирован.
Нет, не получается!DruID,может, разжуёшь? Справка в OgreGUI довольно скромная. Открывает она только *.exe-файлы, а поиск отсутствует, к сожалению. Файлы *.res, *.bin открывать не хочет, т.е. я не могу экспортировать нужный раздел, отредактировать и запихать назад. А где его найдешь в 3,5мб exe-файле, этот раздел.
Тебе необходимо выяснить формат файла который надо локализировать. Если это RES - то с вероятностью в 99% он будет открываться всякими редакторами ресурсов. EXE, DLL и остальные PE - тоже самое, кроме вшитых строк - для них OgreGUI или OverNimbl Localize Plus Если это какой-то "фирменный" формат, то нужно просто разобраться со структурой. У тебя возможно, кроме изменения длины строк, нужно также изменять длину сектора\секции в которой эти строки храняться, соответсвенно ссылки на другие сектора и т.д. Надо найти байты которые так или иначе связаны с размером строк, блоков\секций, других обьектов в этом файле и т.д. Поищи ответы на сайтах переводчиков.