MSI Lab - Форум по русификации

Основные форумы => Общий форум => Тема начата: Cometosee от 19 Сентября 2005, 07:58:31

Название: Как я переводил GetDiz 3.0
Отправлено: Cometosee от 19 Сентября 2005, 07:58:31
Не знаю, в том ли разделе размещаю тему, но вопрос такой. Занялся я переводом программы GetDiz 3.0 (любителям вареза она должна быть знакома  ;) ). Программа упакована UPX упаковщиком. Я ее распаковал, она выросла в размрах в 2 раза (250КБ -> 500КБ). Сделав перевод, я ее снова запокавал. Размер русифицированного файла стал отличаться от исходного на несколько КБ. После этого я сделал патч-русификатор (при самых низких скоростях генерации патча, программа PatchWise Free). Так он по размеру стал больше самого исполняемого файла! Так не легче ли просто предоставлять .exe-шник программы вместо русификатора, или может я не правильно что-то сделал?  

P. S. Если кто хочет посмотреть на результат моей работы, сообщите.
Название: Как я переводил GetDiz 3.0
Отправлено: CaptainFlint от 19 Сентября 2005, 09:47:01
Cometosee
Просто упаковка-изменение-запаковка приводит к тому, что всё ужатое содержимое начинает полностью отличаться оторигинала (зависит от алгоритма сжатия). Попробуй сравнить эти два файлв (оригинал и перевод) какой-нибудь утилитой побайтного сравнения: одинаковыми будут только заголовки, да и то не факт.
А патч - он просто ищет различающиеся места и заменяет одни другими. Ясное дело, что в данном случае он должен будет заменить почти весь оригинальный файл на почти весь переведённый - т.е. запомнить два практически целых файла, вот он и получается таким большим. Русификации, оформленные в виде патчей, подходят в тех случаях, когда внутренняя структура файла почти не меняется - тогда запомненные различия займут меньше места.
Название: Как я переводил GetDiz 3.0
Отправлено: Cometosee от 20 Сентября 2005, 07:36:03
Я это уже понял, а как тогда вообще переводить файлы, сжатые каким-либо упаковщиком? Распаковал, перевел,.. а что дальше?
Название: Как я переводил GetDiz 3.0
Отправлено: CaptainFlint от 20 Сентября 2005, 09:38:24
Cometosee
Видимо, кроме как выкладывать переведённый файл полностью, вариантов нет...  Упаковывать или не упаковывать обратно - это уже как хочешь.
Хотя, конечно, есть возможность сделать патч: написать программу, которая самостоятельно на компе пользователя распаковывает нужный файл, применяет патч (в этом случае он не должен быть большим, т.к. распакованные файлы будут различаться не так сильно), и потом упаковывает обратно. Но программ, делающих такие супер-патчилки, мне не попадалось, т.е. скорее всего, придётся писать программу самому...

добавлено спустя 44 секунды:

Ну или кого-нибудь просить.
Название: Как я переводил GetDiz 3.0
Отправлено: Kindly от 20 Сентября 2005, 10:09:37
Цитировать
Я это уже понял, а как тогда вообще переводить файлы, сжатые каким-либо упаковщиком? Распаковал, перевел,.. а что дальше?

После распаковки желательно протестировать программу на работоспособность. Был у меня случай, что при распаковке прога глючила - пришлось делать эмулятор-русификатор *.RUS. При упаковке другим пакером нужно также убедится в работоспособности на различных ОС. Отсюда вывод: если екзешник сжат, то лучше создать эмулятор-русификатор. Преимущества - маленький размер (по сравнению с упакованной прогой), недостатки - уже картинки не заменишь и в HEX-е не побалуешся.
Название: Как я переводил GetDiz 3.0
Отправлено: CaptainFlint от 20 Сентября 2005, 10:17:23
Kindly
Цитировать
то лучше создать эмулятор-русификатор

А вас ист дас? То бишь, что это такое - эмулятор-русификатор?
Название: Как я переводил GetDiz 3.0
Отправлено: Kindly от 20 Сентября 2005, 12:11:15
Сорри что сразу не пояснил. Эмулятор ресурсов - есть подключаемая к экзешнику DLL-ка, созданная в Passolo или Multilizer. В Multilizer-е можно поотключать ненужные ресурсы для нее, такие как: картинки, музыка и прочие "неэмулируемые" ресурсы. Если прога написана на Delphi, то есть смысл оставить секцию "String", т.к. даже если мы ее не переводим (по большому счету), то прога без нее будет глючить, в смысле сообщений. Если создавать в Passolo, то можно затем поизвращаться Restorator-ом, поудаляв ненужные секции. Кстати Passolo немного криптует ресурсы (по крайней мере для некоторых редакторов) и это сказывается на работе некоторых программ (например, когда я переводил Inno Setup v5.1.5, то использовал для правки Passolo, но прога глючила в результате, а затем отконвертировал Пассоловский файл в Мультике и получилось так, что Мультик исправил ресурсы, после чего прога стала работать как полагается, да и затем Resource Hacker стал видеть нормально ресурсы). Вообще надо отдельную тему создавать по этому поводу типа: Редакторы ресурсов - их преимущества и недостатки, или вроде этого...
Название: Как я переводил GetDiz 3.0
Отправлено: NedMaker от 24 Сентября 2005, 20:18:43
Цитировать
Отсюда вывод: если екзешник сжат, то лучше создать эмулятор-русификатор.

Так называемый эмулятор-русификатор, или как его принято называть языковой модуль, можно делать, если программа поддерживает смену языков, или же она написана на Delphi, в противном же случае не имеет смысла.
Название: Как я переводил GetDiz 3.0
Отправлено: CaptainFlint от 24 Сентября 2005, 21:27:07
Kindly
Спасибо за разъяснение. Хотя всё ещё не совсем понятно: с какой стати программа будет цеплять к себе какую-то левую внешнюю DLL-ку? Это же автор должен сам предусмотреть такую возможность. Хотя я в Дельфях не прогал, там что, автоматом, сам по себе такой добавочный код генерируется?
Название: Как я переводил GetDiz 3.0
Отправлено: ZeroChaos от 24 Сентября 2005, 23:55:19
NedMaker
Цитировать
или же она написана на Delphi

Не совсем так, языковые модули к себе цепляют программы, откомпилированные в компиляторе от Borland, будь то C++Builder, либо Delphi.
Название: Как я переводил GetDiz 3.0
Отправлено: NedMaker от 25 Сентября 2005, 14:26:47
CaptainFlint
Цитировать
Хотя всё ещё не совсем понятно: с какой стати программа будет цеплять к себе какую-то левую внешнюю DLL-ку? Это же автор должен сам предусмотреть такую возможность. Хотя я в Дельфях не прогал, там что, автоматом, сам по себе такой добавочный код генерируется?

Автоматически подхватывается файл с ресурсами, взятыми из загрузочного *.exe файла, в виде библиотеки *.dll, расширение которого переименовывается в *.rus или *.ru, если для русского языка. Можно сделать в PASSOLO или Multilizer. В принципе можно и переведённую экзешку переименовать в *.rus программа её тоже подхватит, но для уменьшения объема модуля, лучше оставить в ней только ресурсы. Если её упаковать пакером программа её не подхватывает.
ZeroChaos
Спасибо за внесённые коррективы , я имел ввиду что для программ скомпилированных на MS Visual C++ не имеющих смену языка (в отличие от Delphi т.е. с компилятором от Borland) нельзя создать языковой модуль.
Но, что-то мы от темы ушли
Название: Как я переводил GetDiz 3.0
Отправлено: Kindly от 26 Сентября 2005, 11:58:33
Цитировать
Но, что-то мы от темы ушли

Вот я и говорю, надо отдельную тему по этому поводу создать.