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

Основные форумы => Общий форум => Тема начата: миха04 от 01 Марта 2016, 11:55:39

Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 01 Марта 2016, 11:55:39
Решил перевести Manga Studio 5.0. Часть ресурсов обнаружил в файле с расширением .todb, открывается и редактируется с помощью плагина к Мозилле - SQLite Manager, часть в странном файле вообще без расширения. В нём строки для выпадающих менюшек интерфейса и стандартное File  и так далее. Проблема в том, что при изменении латиницы на кириллицу программа висит в диспетчере задач, но не запускается. Сам файл имеет имя 742DEA58-ED6B-4402-BC11-20DFC6D08040. Открыть смог только в HEX-редакторе. Не могу докопаться в чём причина. Может кто сталкивался с подобной проблемой? Файл скачивать тут https://yadi.sk/d/Hl7oy55tpn3Fv (https://yadi.sk/d/Hl7oy55tpn3Fv)
Название: Локализация Manga Studio 5.0
Отправлено: leserg73 от 02 Марта 2016, 00:18:19
Это собственный формат ресурсов программы, придуманный разработчиками. Нечто подобное я разбирал в программе Auslogics (можете глянуть здесь (http://www.wylek.ru/forum/17-695-10089-16-1391375909)).

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

Если программа с изменённым файлом не запускается, то:
1) Может быть нарушена оригинальная структура данных в файле;
2) Может быть проверка контрольной суммы этого файла;
3) Может быть символы кириллицы не поддерживаются или строка имеет неверную кодировку;
4) Может в системе имеется дубликат файла, по которому программа выполняет сравнение с оригинальным файлом;
5) Другие причины.

Также может быть совокупность перечисленных причин. Посмотреть саму программу пока нет возможности.
Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 02 Марта 2016, 21:40:42
leserg73
Заглянул на рекомендуемую страницу. Ваша программа не помогла. Она даже файл не открыла. Что касается глубокого копания в файле - тут я пас, нет знаний. Manga при запуске обращается C:\Program Files\Smith Micro\Manga Studio 5E\Manga Studio\resource к папке other, файл 742DEA58-ED6B-4402-BC11-20DFC6D08040, где находится практически весь интерфейс. Точно такой файл присутствует в соседней папке english , но его изменение ни на что не влияет. Программа перестаёт запускаться при замене строк на кириллицу или при увеличении строки независимо от языка.

Сегодня один товарищ высказал идею: ф- 0424 два байта которые ты вставляешь вместо f -2F один байт следовательно нарушается вся программа. Ф - первая буква слова Файл, соответственно f - File.

Вот так выглядит замена первой буквы в слове File на Ф с кодировкой Windows 1251. Символ занимает две буквы F и i.
Название: Локализация Manga Studio 5.0
Отправлено: leserg73 от 03 Марта 2016, 23:35:46
Цитировать
Ваша программа не помогла. Она даже файл не открыла.
Конечно не подошла, она же предназначена для разбора языкового файла программы Aulogics.  
Я же ясно указал, что структура данных очень похожа на то, что я увидел в вашем файле. По аналогии с предложенным анализом файла, можно разобрать и это случай.

Вот смотрите, касательно файла 742DEA58-ED6B-4402-BC11-20DFC6D08040:
(наименования "раздел", "секция" и т.д. даны условно)

Рис. 1. Заголовок файла. Содержит характеристики разделов, из которых состоит файл (порядковый номер, смещение данных относительно начала файла и размер раздела.
[a href="http://savepic.net/7838068.htm" target="_blank"]
Название: Локализация Manga Studio 5.0
Отправлено: leserg73 от 04 Марта 2016, 12:24:54
"Умная мысля приходит опосля!" Так как в файле ресурса используется прямая адресация к данным, то вполне возможно сделать перенос необходимых строк (если перевод не помещается в исходные границы строк) в другое место — конец файла. Проверить нет возможности, тем более вы не указали версию программы (на оффсайте предлагается несколько редакций). Поэтому попробуйте сделать это сами. На примере все той же строки "Show layer in 2 panes". Она находится по смещению 0024F06A. Обратите внимание, смещение указывает на указатель длины строки, после которого идет сама строка.

(http://savepic.net/7801988m.png) (http://savepic.net/7801988.htm)

Опуститесь в конец файла добавьте примерно 100 байт. Запишите здесь перевод строки. Из вашего сообщения я сделал вывод, что корректная кодировка строк - UTF-8. Поэтому запишите перевод в этой кодировке. Для удобства можете воспользоваться утилитой "1251 to Hex":

(http://savepic.net/7822471m.png) (http://savepic.net/7822471.htm)

Длина полученной строки 32h. Поэтому в файле ресурса по новому смещению 00511420 записываем длину строки 00000032. Потом в утилите "1251 to Hex" копируем код строки (нажмите кнопку "с") в буфер обмена и записываем по смещению 00511424. Получится так:

(http://savepic.net/7852166m.png) (http://savepic.net/7852166.htm)

Теперь осталось подкорректировать смещение на новую строку и размер ресурса. Задаем поиск смещения исходной строки 0024F06A. Вот оно

(http://savepic.net/7838854m.png) (http://savepic.net/7838854.htm)

Теперь запишем здесь вместо 0024F06A новое смещение 00511420, а длину ресурса строки изменим на 36. Вот так

(http://savepic.net/7799942m.png) (http://savepic.net/7799942.htm)

Сохраните изменения и запустите программу. Если вы нигде не ошиблись, то должно работать. Сообщите, если это так. Если будет работать, то думаю можно перенести в конец все блоки данных со строками и делать нормальный перевод без гоблинов.
Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 04 Марта 2016, 15:34:47
leserg73
Спасибо за советы, но пока не разобрался. Вставляю код из 1251toHex  в WinHex, а он имеет тот же вид, число-буквенный. 2 часа моск себе парил, так ни до чего не добрался. Отложил на потом. Версия Манги 5.0.3 Кстати, хотел скачать ваш 1251toHex 1.7, но 360Total Security его сразу рубит за генерик троян.
Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 06 Марта 2016, 13:06:00
leserg73
Наконец разобрался  Большое спасибо! Всё так как вы и советовали.
Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 09 Марта 2016, 10:40:31
leserg73, с переводом всё нормально, но возникла другая проблема - при размере строк от 21(Hex) и больше, перед переведённой строкой появляются дополнительные символы, например 21 это !, 22 - ", 23 - #, 24 - $ и так далее. Возможно в коде стоит ограничение на длину?

А также после каждой переведённой строки появляется латинский символ в скобках.
Название: Локализация Manga Studio 5.0
Отправлено: leserg73 от 10 Марта 2016, 00:32:02
Здравствуйте.
Цитировать
Версия Манги 5.0.3
Такую версию найти не удалось, поэтому посмотрел последнюю - 5.0.6.
Цитировать
хотел скачать ваш 1251toHex 1.7, но 360Total Security его сразу рубит за генерик троян
Решайте проблему с вашим антивирусом. Вот отчёт с VirusTotal (https://www.virustotal.com/ru/file/e144e5ce74ae6766867c6ed5be5c67278dada8e1daf310435a4bdf51d8e20c0d/analysis/).
Цитировать
перед переведённой строкой появляются дополнительные символы
Вы не внимательно читали мои сообщения. Это не дополнительные символы, а указатель длины строки в шестнадцатеричном формате, который вы должны давать в соответствии с переведенной строкой.

{указатель}{строка}

А при изменении адреса уже на переведенную строку необходимо давать длину ресурса строки: указатель (4 байта) + длина строка.

Вот смотрите по вашему рисунку. Берем строку, с кружком синего цвета:
{указатель}{ ----------------------------------------------------------- строка --------------------------------------------------------- }
0000002C   D0ADD0BAD181D0BFD0BED180D18228D09CD0BDD0BED0B3D0BED181D0BBD0BED0B9D0BDD18BD0B929

Длина строки в шестнадцатеричном формате составляет 28h. У вас записано значение h. Аналогичная ошибка допущена и для остальных строк, которые я вижу на вашем рисунке. То есть сейчас у вас для длин строк указаны значения, которые должны быть записаны для ресурсов строки. Для приведенного выше примера должно быть записано вот так:

{указатель}{ ----------------------------------------------------------- строка --------------------------------------------------------- }
00000028   D0ADD0BAD181D0BFD0BED180D18228D09CD0BDD0BED0B3D0BED181D0BBD0BED0B9D0BDD18BD0B929

Еще раз внимательно посмотрите мое предыдущее сообщение, это очень важно. Разберитесь, где длина строки, а где длина ресурса строки.

Вот в версии 5.0.6 результат переноса и перевода строки "Show layer in 2 panes" из предыдущего моего сообщения:
(http://savepic.net/7851871.png)

Если все сделано корректно, то проблем быть не должно.

Цитировать
А также после каждой переведённой строки появляется латинский символ в скобках.
Это горячая клавиша, например, в английском варианте записано &File. Здесь горячая клавиша F, так как на неё указывает символ &. Возможно, если в переводе не указана горячая клавиша, то автоматом в скобочках отображается англоязычный вариант. В общем, так задумано разработчиками.
Название: Локализация Manga Studio 5.0
Отправлено: миха04 от 10 Марта 2016, 18:17:46
leserg73, добрый вечер:-) Да, действительно моя ошибка из-за невнимательности. Ещё раз спасибо за помощь - прекратили мои пляски с бубном.