Free Address Book
Free Address Book Персональная электронная адресная книга, чьи функции заключаются в организации и хранении персональных
-
Free Address Book
Персональная электронная адресная книга, чьи функции заключаются в организации и хранении персональных контактов пользователя. Запускать её можно с любого переносного носителя информации. Используя Free Address Book, можно хранить различные заметки о том или ином человеке, телефонные номера и адреса электронной почты. Поддерживается функция печати любых данных, которые хранятся в этой программе.
Разработчик: GAS Softwares
Система: Windows XP/Vista/714 февраля 2014 - 08:39 / #1 -
Потрясающе... Попросил за деньги! в теме про платные переводы сделать русификатор для Free Address Book [s]- молча втихомолку снесли тему...
Ни ответа ни привета...[/s],а делают бесплатно!
Красавцы ящитаю.
Повторю вопрос тут.
Готов оплатить создание русифицированной версии программы Free Address Book ( http://addressbook.gassoftwares.com/ ) (разумеется в разумных пределах)
Есть желающие?14 февраля 2014 - 09:39 / #2 -
Цитата: GDragon;10201Готов оплатить создание русифицированной версии программы Free Address Book ( http://addressbook.gassoftwares.com/ ) (разумеется в разумных пределах)
Программа написана в NET Framework 2.0, Радиаликс вроде как переводит, но вот создает конечный файл с ошибками и из-за этого файл не запускается. То ли Framework у меня криво поставлен, то ли еще какая байда. Пока мне не до него. Подозреваю, что Leserg может справиться с этой проблемой14 февраля 2014 - 09:49 / #3 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 945
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1676
Был: 2024-07-28 22:59
Лайков: 167
Цитата: GDragon;10201Программа написана в NET Framework 2.0, Радиаликс вроде как переводит, но вот создает конечный файл с ошибками и из-за этого файл не запускается.
Да, так и есть. Radialix открывает файл, но создает его нерабочим, а все остальные редакторы нервно курят в сторонке. Проблема в самой программе. Там автор использует собственную функцию обработки строк. Пока что на данном этапе программу локализовать очень затруднительно. Можно было бы декомпилировать её до исходника, перевести и собрать обратно, но вместо строк получается мусор:
Сидеть и угадывать, где какая строка - не вариант. Надо еще подумать...Цитата: gazon01;10205Не все программы можно перевести.
Пожалуй эту все-таки можно. Вот что получается:
1) В Radialix"e переводим доступные ресурсы и создаем локализованный файл.
2) Декомпилируем полученный файл.
3) Декомпилируем оригинальный файл.
4) Сравниваем файлы исходных кодов и выясняем, что Radialix все вызовы функций вида
call string "?0?"::"?1?"(string)
заменил на
call "?0?"::"?1?"( [SIGNATURE ENDED PREMATURELY])
По этой причине локализованный файл программы не работает. Поэтому меняем в листинге локализованного кода (в любом блокноте - формат файла текстовый) указанные вызовы функции на оригинальные (команда - заменить все).
6) Восстанавливаем код самой функции "?0?"::"?1?"(string) - Radialix и её испортил. Она находится в конце листинга (просто копируем её код из оригинального листинга).
7) Компилируем обратно локализованный файл.
Все. Так мы одолели только около 20 процентов строк. Все остальные надо выискивать и вписывать прямо в код программы. Когда все будет готово, скомпилировать программу заново.
Но вот терзают меня смутные сомнения по поводу этой функции обработки строк. Может оказаться, что таким образом автор защитил базу данных, которую создает программа. Она строится на соответствии имени поля и соответствующего значения. Если их перевести, то или программа не будет работать или база не будет создаваться, или невозможно будет открыть базу данных, созданную в оригинальной версии программы. Короче надо экспериментировать, точно сказать не могу. Не просто так он все это придумал. А возможно я ошибаюсь.14 февраля 2014 - 09:59 / #4 -
Leserg, круто! А чем ты декомпилируешь? Обязательно ildasm или есть еще какие инструменты?14 февраля 2014 - 10:19 / #5
-
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 945
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1676
Был: 2024-07-28 22:59
Лайков: 167
Цитата: Nexus;10226есть еще какие инструменты
Конечно есть и другие инструменты, которые позволяют править код программы без её полной перекомпиляции (по такому принципу работают шаблонные редакторы). Я использую все возможные, которые дают положительный вариант. Универсальных нет. Для одной программы одна сработала отлично, а для другой - другая.
Вот перечень того, что стоит у меня на вооружении:
9Rays Spices .NET Suite
DisSharp
Dotnet IL Editor
DotNet Resolver
GrayWolf
ILSpy
JustDecompile
Red Gate .NET Reflector
Resource .NET
SharpResourcesEditor
Simple Assembly Explorer (SAE)
Zeta Resource Editor
Все они решают одну задачу: дизассемблирование, редактирование ресурсов, правка кода программ NET. Основной инструмент у меня из этого списка Simple Assembly Explorer.14 февраля 2014 - 10:49 / #6 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 945
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1676
Был: 2024-07-28 22:59
Лайков: 167
Теперь коротко о том, как же редактировать строки. Для этого я использую утилиту Simple Assembly Explorer. Работать придется в ручном режиме. Задача еще осложняется тем, что мы не знаем, о чем говорится в той или иной строке. Также строковыми данными указаны названия объектов и элементов, которые ни в коем случае нельзя трогать, т.к. программа станет неработоспособной. В общем работа над переводом похожа на разминирование.
Итак, строки, использующиеся в программе, загружаются сначала в стек при помощи команды ldstr (назначение всех опокодов сборок NET можно узнать на сайте разработчиков Microsoft). В нормальном приложении строки указаны в явном виде, например:
ldstr "Вы действительно хотите завершить работу с программой?"
В программе Free Address Book строки зашифрованы. Поэтому, после загрузки в стек строка сначала отправляется на расшифровку, т.е. идет вызов необходимой функции, и по возвращению используется по прямому назначению. Вот как это выглядит в коде:
Алгоритм обработки строк - это долгая песня, необходимы хорошие познания в программировании (если есть желание, то можете разбираться). Можно поступить проще: не пускать строку на обработку функцией, т.е. просто занопить команду, а саму строку набрать в явном виде. Вот так:
Таким образом, строка без изменений будет попадать прямо по назначению (в приведенном примере - в заголовок диалога). Еще раз повторю, что нельзя убирать команду вызова функции для всех строк подряд! Нужно внимательно анализировать код и смотреть куда идет строка. Если это имя объекта - переводить нельзя. Если имя элемента - переводить нельзя. Конечно же для этого необходимо хорошо разбираться в структуре программ NET.
Вот такая петрушка. Я поступаю так: нахожу строку, которую можно править, вбиваю 111111111, отключаю команду передачи строки в функцию и сохраняю изменения в файл. Потом запускаю программу и смотрю, где у меня эти 11111111 выплывут. Потом запускаю оригинальную программу и смотрю в ней значение этой строки. Затем возвращаюсь к этой строке в коде и ввожу нормальный перевод. Сохраняю изменения и перехожу к следующей строке. Сами понимаете, что это долго и утомительно. К тому же довольно затруднительно перевести все сообщения программы на те или иные действия пользователя. Для этого их надо все моделировать, а это не всегда бывает возможным.15 февраля 2014 - 11:49 / #7 -
b]Leserg, ну что, как там получается переводить прогу? Не выдержал и тоже залез в прогу через Simple Assembly Explorer (SAE) посмотреть что да как .15 февраля 2014 - 12:49 / #8
-
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 945
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1676
Был: 2024-07-28 22:59
Лайков: 167
Цитата: Nexus;10249Не выдержал и тоже залез в прогу через Simple Assembly Explorer (SAE) посмотреть что да как
Ну и как впечатления? Правда же, что ничего сложного?Цитата: gazon01на главную не забудьте выложить
Нет, на главную ещё рано!16 февраля 2014 - 12:49 / #9 -
Цитата: LesergУбрал кнопки "Donate" и "Facebook" - не думаю что они нужны нашему человеку, хотя надо спросить у GDragon. Вернуть обратно не проблема.
Не вообще не нужны
А можно ещё попросить убрать RSS в верхнем правом углу? (который работает через GAS.Rss.dll)16 февраля 2014 - 13:49 / #10
Статистика форума, пользователей онлайн: 0 (за последние 20 минут)
---
- Создано тем
- 1197
- Всего сообщений
- 15763
- Пользователей
- 18016
- Новый участник
- gippokrat