• Добро пожаловать на WYLEK.ru. Пожалуйста, войдите или зарегистрируйтесь.
 
128 гостей, 0 пользователей

avatar_Leserg

Программы от Auslogics

Автор Leserg, 02 февраля 2014, 16:37:00

« предыдущая - следующая »

LesergАвтор темы

Тема создана 02 февраля 2014, 16:37:00 Последнее редактирование: 31 июля 2018, 13:15:38 от WYLEK
Программы от Auslogics

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


В шестой линейке данного продукта разработчики сказали русскому "НЕТ"! Как долго это будет продолжаться и будет ли этот вопрос в конце концов разрешён положительно - неизвестно. Поддержка отвечает, что работает в этом направлении, но сроки окончания затрудняется озвучить.

Оставим в стороне Интернет баталии по поводу работы программы, полезности и нужности русского языка в её новом обличье, и попробуем взглянуть на неё со стороны возможности самостоятельного перевода.
Кто ищет, тот всегда найдет!

LesergАвтор темы

Ответ #1 : 03 февраля 2014, 11:39:00 #1 Последнее редактирование: 31 июля 2018, 13:17:01 от WYLEK
Всему свое время. Но пока попробую рассказать, что собой представляет языковой файл программы. Возможно это поможет вам при анализе подобных ресурсов в других программах и подтолкнет к активным действиям.

Для анализа я взял небольшой языковой файл enu.lng от программы Auslogics Disk Defrag Pro. Структура файла следующая: сначала идет заголовок с описанием секций (здесь "секция" - условно-принятый термин), далее идет массив с данными Секции 1, затем Секция 2 и т.д. Секция N. Каждая секция содержит таблицу смещений, массив элементов управления и массив строк для этих элементов управления. Переводить необходимо массив строк в каждой из секций. Кодировка строк - Unicode. Рассмотри чуть подробнее и Заголовок и Секцию.

Заголовок.
В заголовке перечисляются следующие данные: размер заголовка, аббревиатура языка (ENU - английский), количество секций, свойства Секции 1 (размер, смещение), свойства Секции 2 (размер, смещение),.. свойства Секции N (размер, смещение).., и условные названия секций.

Рис. 1


Обратите внимание, что на описание свойств каждой из секций отводится 12 байт (3 блока по 4 байта).
Например, Секция 1:
1-й блок, байты [34 00 00 00] - неизвестно за что отвечает (требуется дополнительное исследование - пока же никаких мыслей);
2-й блок [AA 35 00 00 00] - это размер секции (порядок байт обратный), т.е. в нормальном представлении это 35AAh (13636 байт);
3-й блок [A6 00 00 00] - это адрес смещения (порядок байт обратный), по которому начинаются данные Секции 1 в файле, т.е. в нормальном виде это адрес 000000A6 (см. рис. 2):

Рис. 2


Для чего все это нужно знать? Как было сказано ранее, все секции в файле идут друг за дружкой. После перевода строк, во-первых, размер секции будет уже другой, а во-вторых это повлечет смещение остальных секций, которые следую следом. Зная же какие параметры использованы в заголовке файла, мы сможем в последствии их подкорректировать (размер и адрес смещения).

Секция.
В каждой секции в заголовке идет таблица смещений всех строк (по четыре байта на адрес), как для массива элементов управления, так и для массива собственно самих строк. Порядок байт в адресах смещений - обратный. Самое важное - отсчет адресации строк начинается с начала секции. Т.е. в каждой секции смещение первой строки начинается с нулевого адреса (как с начала файла). Далее, каждый адрес смещения указывает на байт, который определяет количество символов в заданной строке. Сама же структура строк следующая:

Количество символов в строке|Разделительный символ|Текст строки

Кодировка - Unicode. Посмотрите на следующий рисунок (рис. 3). В качестве примера я привел одну из строк секции. В верхней части рисунка показана часть таблицы смещений и в ней выделены байты [72 15 00 00]. Перевернём байты -> [00 00 15 72] - это адрес, которому начинается строка "Free for personal use". В строке 21 символ, включая символы пробелов. В шестнадцатеричной системе это значение 15h (в кодировке Unicode -> 15 00). Как вы можете видеть, адрес [00 00 15 72] указывает на значение с числом символов в строке "Free for personal use". Так как кодировка Unicode, то под каждый символ и значение отводится два байта. Между значением с числом символов и самой строкой стоит разделительный байт 00 (в кодировке Unicode -> 00 00).

Рис. 3


Таким образом, чтобы перевести языковой файл потребуется корректировать следующие параметры:
1) длина строки (количество символов);
2) Адрес смещения строки (длина строк на русском будет отличаться от оригинала);
3) Размер и смещение секции (после перевода строк в секции, её размер изменится (станет больше или меньше), это же в свою очередь повлечет смещение всех последующих секций.

Можно, конечно, попытаться перевод строк сделать так, чтобы их суммарная длина не изменилась, тогда размер секции останется прежним. Но для этого потребуется более кропотливая работа на переводом (я исключаю вариант сокращения строк по типу а-ля Гоблин).

Руководствуясь вышеизложенными сведениями, а также с целью облегчения работы над языковым файлом, предлагаю разделить весь процесс на несколько этапов.
  • Первый этап - это извлечение секций.
    Второй этап - извлечение из секций строк для перевода.
    Третий этап - собственно перевод строк.
    Четвертый этап - компоновка секций с переведенными строками.
    Пятый этап - компоновка языкового файла (соединение секций и коррекция заголовка).
Осталось дело за малым - автоматизировать процесс, как сказал BullFFm - написать распаковщик. Но потом потребуется еще упаковщик 
Кто ищет, тот всегда найдет!

LesergАвтор темы

Ответ #2 : 03 февраля 2014, 12:39:00 #2 Последнее редактирование: 31 июля 2018, 13:18:26 от WYLEK
Этап I.
Предлагаю вам небольшую утилиту "I.Извлечение секций" (исполняемый файл "I.StripSections.exe"), сделанную в конструкторе программ Войдите на сайт для перехода по ссылке (автор Dilma), которая выполняет извлечение из языкового файла всех секций для последующего разбора.

Рис. 4


Архив с программой:
Показать / Скрыть текст
Скачать
[свернуть]
[/color][/b]

Пользоваться утилитой очень просто. Кнопкой [...] открываете языковой файл enu.lng. При успешной загрузке файла будут определены его параметры. Кнопкой [Сохранить] можно выполнить сохранение содержимого таблицы в тестовый документ (*.txt). Кнопкой [Извлечь] можно извлечь выбранную в таблице секцию. Наконец, по кнопке [Извлечь все] выполняется извлечение всех секций в отдельные файлы. Имена файлам присваиваются автоматически вида Section_N.bin, где N - это порядковый номер секции. Перед началом применения утилиты, рекомендую скопировать языковой файл, над которым вы собрались работать, в отдельно созданную папку.

Этап II.
Следующая утилита "II.Парсер строк в секциях LNG" (исполняемый файл "II.SearchStrings.exe") автоматизирует процесс извлечения строк из файлов секций, которые были получены при помощи утилиты "I.Извлечение секций", в текстовый файл в формате TXT. Она также сделана в конструкторе программ Войдите на сайт для перехода по ссылке (автор Dilma).

Рис. 5


Архив с программой:
Показать / Скрыть текст
Скачать
[свернуть]
[/color][/b]

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

Итак, сначала необходимо загрузить в неё файл секции Section_N.bin (N - порядковый номер секции), нажав кнопку [...]. Потом нажмите кнопку [Найти]. Если будут найдены начальный и конечный адрес таблицы смещений для строк, то станет активной кнопка [Декодировать], нажав на которую в текстовый документ будут извлечены все строки. Имя файлу присваивается автоматически согласно имени файлу секции, только расширение у него будет *.txt, а сам файл будет сохранён в той же папке, что исходный файл. Например, если вы открыли файл секции Section_1.bin, то на выходе получите текстовый файл Section_1.txt. Адреса смещений, которые будут определены для этого файла секции, я думаю пригодятся при обратной сборке секции. Также запишите себе, сколько строк определено в данной секции. Это очень важно! В переводе должно быть такое же количество строк!

Чтобы извлечь строки из другого файла секции, утилиту необходимо перезапустить, иначе она начинает делать ошибки. По этой причине я сделал блокировку кнопок после успешного декодирования строк. Поэтому открыли утилиту, загрузили файл, произвели поиск, декодировали строки и закрыли утилиту. Для следующего файла снова её запустите.

Теперь ситуация, когда адреса таблицы смещений для строк не найдены. Вместо значений адресов появится сообщение об ошибке, а кнопка [Декодировать] будет неактивной. Нужно закрыть утилиту, затем запустить вновь и открыть тот же файл секции, для которого первоначальный поиск был неудачен. Перед тем как нажать кнопку [Найти], измените значение параметра "Коррекция байтового смещения строк" на ноль (0) (по умолчанию там стоит значение 1), и только после этого нажмите [Найти]. По идее теперь поиск будет удачен. Таким образом, если при поиске произошла ошибка, то измените значение параметра на противоположное (был 1 - ставьте 0, и наоборот). Но запомните, менять его нужно ДО нажатия кнопки [Найти]. Вот такая чехарда. :(

Теперь по извлеченным строкам в текстовых документах. Если вы работали с шаблонными редакторами, то наверняка знаете, что одну строку можно разделить на несколько строк, используя символы escape-последовательностей, т.е символы переноса
( - возврат каретки,
- подача строки). Также этот прием используется и самими разработчиками, когда в ресурсе строка объявлена как одна, а при выводе на экран, благодаря наличию символов переноса, строка выводится в несколько строк. Подобные строки есть и в языковом файле, поэтому при их переводе не удаляйте символы переноса, а оставьте без изменений. И последнее, откройте текстовый документ и проверьте количество строк: оно должно соответствовать тому, что показала утилита. Обычно в самом конце файла добавляется лишняя строка с символом - удалите её.

Рис. 6


Обе программы являются бесплатными и распространяются как есть, без каких-либо гарантий. Вы используете данный продукт на свой страх и риск. Обращаю ваше внимание на то, что для языковых файлов LNG от Auslogics 5 версии утилиты не подходят, т.к. эти файлы имеют другой формат данных. Только для LNG-файлов Auslogics 6 версии! Программы создавались и тестировались в виртуальной среде Windows XP.

Этап III.
На этом этапе занимаетесь переводом строк в полученных документах. Пока не ясно, как обстоит дело с размерами элементов управления в интерфейсе программы (фиксированная у них длина или автоматическая по размеру строку). Это нужно еще проверять. Но, думаю, что в переводе не стоит слишком разгоняться.
Кто ищет, тот всегда найдет!

LesergАвтор темы

Ответ #3 : 03 февраля 2014, 13:39:00 #3 Последнее редактирование: 31 июля 2018, 13:19:33 от WYLEK
Этап V.
Завершающий этап - создание языкового файла. Требуется объединить все файлы секций *.BIN в один файл и подкорректировать заголовок языкового файла LNG. Для автоматизации сборки предлагаю вам утилиту "V.Создание LNG-файла" (исполняемый файл "V.PackLNG.exe"), сделанную в конструкторе программ Войдите на сайт для перехода по ссылке (автор Dilma). Она выполняет сведение в один массив данных всех файлов секций *.BIN, коррекцию свойств (размер, смещение) в заголовке языкового файла, замену аббревиатуры ENU на RUS, и запись нового языкового файла с именем rus.lng.

Рис. 8


Архив с программой:
Показать / Скрыть текст
Скачать
[свернуть]
[/color][/b]

Пользоваться утилитой очень просто, от вас только требуется выполнение некоторых требований:

1) Создайте отдельную папку и скопируйте в неё все файлы секций *.BIN;
2) Скопируйте в эту же папку исполняемый файл данной утилиты "V.PackLNG.exe".

Теперь запустите её. Нажмите кнопку [...] и выберите оригинальный языковой файл enu.lng. За него можете не переживать, работа будет проводиться с его копией. Далее укажите количество секций в данном языковом файле (это вы узнали на первом этапе при помощи утилиты "I.Извлечение секций"). Например, в языковом файле программы Auslogics Disk Defrag Professional четыре секции, а в комплексной программе Auslogics BoostSpeed 6 - 26 секций. Затем укажите адрес смещения первой секции. Его вы могли также узнать на первом этапе (посмотрите в табличке первую строку, колонка "Offset"). Наконец нажмите кнопку [Создать LNG]. В этой же папке будет создан новый языковой файл с именем rus.lng.

Программа "V.Создание LNG-файла" бесплатна и распространяются как есть, без каких-либо гарантий. Вы используете данный продукт на свой страх и риск.

Полученный файл rus.lng необходимо разместить в папке "Lang" рядом с файлом enu.lng по месту установки программы Auslogics. Запустите программу и выберите в настройках язык интерфейса "Русский". Выполните перезапуск программы и проверяйте свою работу. В программе Auslogics BoostSpeed 6 пока нет возможности выбрать язык интерфейса, хотя в её компонентах это возможно. Но можно указать язык прямо в реестре. Откройте ветку

HKEY_LOCAL_MACHINESOFTWAREAuslogicsBoostSpeed6.xSettings

найдите там параметр "General.Language" и измените его значение "ENU" на "RUS".

Рис. 9


Вот, пожалуй, и все.
Кто ищет, тот всегда найдет!

Nexus

Ответ #4 : 03 февраля 2014, 14:39:00 #4 Последнее редактирование: 31 июля 2018, 13:20:12 от WYLEK
Не могу разобраться что за число стоит вначале каждой контрольной строки. Например вот такое:

Показать / Скрыть текст
[свернуть]


Куда только его не лепил, но понять так и не смог Вероятней всего это служебный порядковый номер какой-то группы, такие же числа есть и в языковом файле Olly Debugger. А так вроде во всех значениях разобрался, теперь дело пойдет по накатной

* Ваши права на сайте

    TinyPortal

  • Вы не можете создавать статьи.
  • Вы не можете изменять свои статьи.
  • Вы не можете писать комментарии.
  • Вы не можете управлять статьями.
  • Вы не можете загружать файлы в TPdownloads.
  • Вы не можете управлять TPlistimages.

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

 аталог@MAIL.RU - каталог ресурсов интернет Яндекс.Метрика