Автор Тема: Локализация Manga Studio 5.0  (Прочитано 13864 раз)

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« : 01 Марта 2016, 11:55:39 »
Решил перевести Manga Studio 5.0. Часть ресурсов обнаружил в файле с расширением .todb, открывается и редактируется с помощью плагина к Мозилле - SQLite Manager, часть в странном файле вообще без расширения. В нём строки для выпадающих менюшек интерфейса и стандартное File  и так далее. Проблема в том, что при изменении латиницы на кириллицу программа висит в диспетчере задач, но не запускается. Сам файл имеет имя 742DEA58-ED6B-4402-BC11-20DFC6D08040. Открыть смог только в HEX-редакторе. Не могу докопаться в чём причина. Может кто сталкивался с подобной проблемой? Файл скачивать тут https://yadi.sk/d/Hl7oy55tpn3Fv

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Локализация Manga Studio 5.0
« Ответ #1 : 02 Марта 2016, 00:18:19 »
Это собственный формат ресурсов программы, придуманный разработчиками. Нечто подобное я разбирал в программе Auslogics (можете глянуть здесь).

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

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

Также может быть совокупность перечисленных причин. Посмотреть саму программу пока нет возможности.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« Ответ #2 : 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.
« Последнее редактирование: 03 Марта 2016, 23:16:56 от миха04 »

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Локализация Manga Studio 5.0
« Ответ #3 : 03 Марта 2016, 23:35:46 »
Цитировать
Ваша программа не помогла. Она даже файл не открыла.
Конечно не подошла, она же предназначена для разбора языкового файла программы Aulogics.  
Я же ясно указал, что структура данных очень похожа на то, что я увидел в вашем файле. По аналогии с предложенным анализом файла, можно разобрать и это случай.

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

Рис. 1. Заголовок файла. Содержит характеристики разделов, из которых состоит файл (порядковый номер, смещение данных относительно начала файла и размер раздела.
[a href="http://savepic.net/7838068.htm" target="_blank"]

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Локализация Manga Studio 5.0
« Ответ #4 : 04 Марта 2016, 12:24:54 »
"Умная мысля приходит опосля!" Так как в файле ресурса используется прямая адресация к данным, то вполне возможно сделать перенос необходимых строк (если перевод не помещается в исходные границы строк) в другое место — конец файла. Проверить нет возможности, тем более вы не указали версию программы (на оффсайте предлагается несколько редакций). Поэтому попробуйте сделать это сами. На примере все той же строки "Show layer in 2 panes". Она находится по смещению 0024F06A. Обратите внимание, смещение указывает на указатель длины строки, после которого идет сама строка.



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



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



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



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



Сохраните изменения и запустите программу. Если вы нигде не ошиблись, то должно работать. Сообщите, если это так. Если будет работать, то думаю можно перенести в конец все блоки данных со строками и делать нормальный перевод без гоблинов.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« Ответ #5 : 04 Марта 2016, 15:34:47 »
leserg73
Спасибо за советы, но пока не разобрался. Вставляю код из 1251toHex  в WinHex, а он имеет тот же вид, число-буквенный. 2 часа моск себе парил, так ни до чего не добрался. Отложил на потом. Версия Манги 5.0.3 Кстати, хотел скачать ваш 1251toHex 1.7, но 360Total Security его сразу рубит за генерик троян.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« Ответ #6 : 06 Марта 2016, 13:06:00 »
leserg73
Наконец разобрался  Большое спасибо! Всё так как вы и советовали.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« Ответ #7 : 09 Марта 2016, 10:40:31 »
leserg73, с переводом всё нормально, но возникла другая проблема - при размере строк от 21(Hex) и больше, перед переведённой строкой появляются дополнительные символы, например 21 это !, 22 - ", 23 - #, 24 - $ и так далее. Возможно в коде стоит ограничение на длину?

А также после каждой переведённой строки появляется латинский символ в скобках.
« Последнее редактирование: 09 Марта 2016, 16:51:27 от миха04 »

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Локализация Manga Studio 5.0
« Ответ #8 : 10 Марта 2016, 00:32:02 »
Здравствуйте.
Цитировать
Версия Манги 5.0.3
Такую версию найти не удалось, поэтому посмотрел последнюю - 5.0.6.
Цитировать
хотел скачать ваш 1251toHex 1.7, но 360Total Security его сразу рубит за генерик троян
Решайте проблему с вашим антивирусом. Вот отчёт с VirusTotal.
Цитировать
перед переведённой строкой появляются дополнительные символы
Вы не внимательно читали мои сообщения. Это не дополнительные символы, а указатель длины строки в шестнадцатеричном формате, который вы должны давать в соответствии с переведенной строкой.

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

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

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

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

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

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

Вот в версии 5.0.6 результат переноса и перевода строки "Show layer in 2 panes" из предыдущего моего сообщения:


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

Цитировать
А также после каждой переведённой строки появляется латинский символ в скобках.
Это горячая клавиша, например, в английском варианте записано &File. Здесь горячая клавиша F, так как на неё указывает символ &. Возможно, если в переводе не указана горячая клавиша, то автоматом в скобочках отображается англоязычный вариант. В общем, так задумано разработчиками.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Локализация Manga Studio 5.0
« Ответ #9 : 10 Марта 2016, 18:17:46 »
leserg73, добрый вечер:-) Да, действительно моя ошибка из-за невнимательности. Ещё раз спасибо за помощь - прекратили мои пляски с бубном.