Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Auslogics BoostSpeed - это мощный пакет утилит, который позволит оптимизировать и ускорить работу компьютера. BoostSpeed производит полную проверку вашего компьютера, определяя основные причины снижения его быстродействия, и предлагает легко и быстро устранить их. Наряду с полным набором мощных инструментов для улучшения производительности вашего ПК, вы получаете возможность исправить ошибки реестра, оптимизировать настройки Windows, дефрагментировать жесткий диск – все для эффективного восстановления стабильности и быстродействия ПК.
В шестой линейке данного продукта разработчики сказали русскому "НЕТ"! Как долго это будет продолжаться и будет ли этот вопрос в конце концов разрешён положительно - неизвестно. Поддержка отвечает, что работает в этом направлении, но сроки окончания затрудняется озвучить.
Оставим в стороне Интернет баталии по поводу работы программы, полезности и нужности русского языка в её новом обличье, и попробуем взглянуть на неё со стороны возможности самостоятельного перевода.
Всему свое время. Но пока попробую рассказать, что собой представляет языковой файл программы. Возможно это поможет вам при анализе подобных ресурсов в других программах и подтолкнет к активным действиям.
Для анализа я взял небольшой языковой файл 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
Для чего все это нужно знать? Как было сказано ранее, все секции в файле идут друг за дружкой. После перевода строк, во-первых, размер секции будет уже другой, а во-вторых это повлечет смещение остальных секций, которые следую следом. Зная же какие параметры использованы в заголовке файла, мы сможем в последствии их подкорректировать (размер и адрес смещения).
Секция. В каждой секции в заголовке идет таблица смещений всех строк (по четыре байта на адрес), как для массива элементов управления, так и для массива собственно самих строк. Порядок байт в адресах смещений - обратный. Самое важное - отсчет адресации строк начинается с <u>начала секции</u>. Т.е. в каждой секции смещение первой строки начинается с нулевого адреса (как с начала файла). Далее, каждый адрес смещения указывает на байт, который определяет количество символов в заданной строке. Сама же структура строк следующая:
Количество символов в строке|Разделительный символ|Текст строки
Кодировка - 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 - написать распаковщик. Но потом потребуется еще упаковщик
Я про официальных локализаторов говорил, а то они сроки выхода русского языка озвучить не могут, да всё потому что сами не знают как файлик перевести. А в вас я не сомневаюсь!
Этап I. Предлагаю вам небольшую утилиту "I.Извлечение секций" (исполняемый файл "I.StripSections.exe"), сделанную в конструкторе программ HiAsm (автор Dilma), которая выполняет извлечение из языкового файла всех секций для последующего разбора.
Пользоваться утилитой очень просто. Кнопкой [...] открываете языковой файл enu.lng. При успешной загрузке файла будут определены его параметры. Кнопкой [Сохранить] можно выполнить сохранение содержимого таблицы в тестовый документ (*.txt). Кнопкой [Извлечь] можно извлечь выбранную в таблице секцию. Наконец, по кнопке [Извлечь все] выполняется извлечение всех секций в отдельные файлы. Имена файлам присваиваются автоматически вида Section_N.bin, где N - это порядковый номер секции. Перед началом применения утилиты, рекомендую скопировать языковой файл, над которым вы собрались работать, в отдельно созданную папку.
Этап II. Следующая утилита "II.Парсер строк в секциях LNG" (исполняемый файл "II.SearchStrings.exe") автоматизирует процесс извлечения строк из файлов секций, которые были получены при помощи утилиты "I.Извлечение секций", в текстовый файл в формате TXT. Она также сделана в конструкторе программ HiAsm (автор Dilma).
Работа с этой утилитой сопряжена с несколькими неудобствами. К сожалению, я не знаю как с ними справиться, не хватает опыта и знаний по программированию. Во всяком случае со своей задачей, извлечение строк, она вроде бы как справляется.
Итак, сначала необходимо загрузить в неё файл секции Section_N.bin (N - порядковый номер секции), нажав кнопку [...]. Потом нажмите кнопку [Найти]. Если будут найдены начальный и конечный адрес таблицы смещений для строк, то станет активной кнопка [Декодировать], нажав на которую в текстовый документ будут извлечены все строки. Имя файлу присваивается автоматически согласно имени файлу секции, только расширение у него будет *.txt, а сам файл будет сохранён в той же папке, что исходный файл. Например, если вы открыли файл секции Section_1.bin, то на выходе получите текстовый файл Section_1.txt. Адреса смещений, которые будут определены для этого файла секции, я думаю пригодятся при обратной сборке секции. Также запишите себе, сколько строк определено в данной секции. Это очень важно! В переводе должно быть такое же количество строк!
Чтобы извлечь строки из другого файла секции, утилиту необходимо перезапустить, иначе она начинает делать ошибки. По этой причине я сделал блокировку кнопок после успешного декодирования строк. Поэтому открыли утилиту, загрузили файл, произвели поиск, декодировали строки и закрыли утилиту. Для следующего файла снова её запустите.
Теперь ситуация, когда адреса таблицы смещений для строк не найдены. Вместо значений адресов появится сообщение об ошибке, а кнопка [Декодировать] будет неактивной. Нужно закрыть утилиту, затем запустить вновь и открыть тот же файл секции, для которого первоначальный поиск был неудачен. Перед тем как нажать кнопку [Найти], измените значение параметра "Коррекция байтового смещения строк" на ноль (0) (по умолчанию там стоит значение 1), и только после этого нажмите [Найти]. По идее теперь поиск будет удачен. Таким образом, если при поиске произошла ошибка, то измените значение параметра на противоположное (был 1 - ставьте 0, и наоборот). Но запомните, менять его нужно <u>ДО</u> нажатия кнопки [Найти]. Вот такая чехарда.
Теперь по извлеченным строкам в текстовых документах. Если вы работали с шаблонными редакторами, то наверняка знаете, что одну строку можно разделить на несколько строк, используя символы escape-последовательностей, т.е символы переноса ( - возврат каретки, - подача строки). Также этот прием используется и самими разработчиками, когда в ресурсе строка объявлена как одна, а при выводе на экран, благодаря наличию символов переноса, строка выводится в несколько строк. Подобные строки есть и в языковом файле, поэтому при их переводе не удаляйте символы переноса, а оставьте без изменений. И последнее, откройте текстовый документ и проверьте количество строк: оно должно соответствовать тому, что показала утилита. Обычно в самом конце файла добавляется лишняя строка с символом - удалите её.
Рис. 6
Обе программы являются бесплатными и распространяются как есть, без каких-либо гарантий. Вы используете данный продукт на свой страх и риск. Обращаю ваше внимание на то, что для языковых файлов LNG от Auslogics 5 версии утилиты не подходят, т.к. эти файлы имеют другой формат данных. Только для LNG-файлов Auslogics 6 версии! Программы создавались и тестировались в виртуальной среде Windows XP.
Этап III. На этом этапе занимаетесь переводом строк в полученных документах. Пока не ясно, как обстоит дело с размерами элементов управления в интерфейсе программы (фиксированная у них длина или автоматическая по размеру строку). Это нужно еще проверять. Но, думаю, что в переводе не стоит слишком разгоняться.
Этап IV. Итак, перевели текстовый документ одной из секций. Теперь необходимо его закодировать обратно в файл секции. Для этого предлагаю утилиту "IV.Кодирование в файл секций LNG" (исполняемый файл "IV.EncodeStrings.exe"), сделанную в конструкторе программ HiAsm (автор Dilma). Она выполняет кодирование списка строк, формирование таблицы с адресами смещений, и запись полученных данных в файл секции LNG, который был получен при помощи программы "I.Извлечение секций" на первом этапе.
Пользоваться утилитой очень просто, но при этом нужно быть очень внимательным, т.к. запись данных осуществляется напрямую в файл секции. Перед началом кодирования рекомендуется сделать резервную копию файла секции LNG.
Итак, нажмите кнопку [...] и выберите текстовый документ с переведенными строками Section_N.txt (N - порядковый номер секции). Также кодировка текста должна быть (обязательно!) Unicode (UTF-16 LE без BOM - см. на рис. 6 в строке состояния). Предварительно убедитесь, что документ содержит такое же количество строк, как и в исходном файле. Затем выберите файл секции Section_N.bin (N - порядковый номер секции), нажав кнопку [...] для второго поля ввода. Заметьте, порядковые номера файлов должны совпадать! Если вы загрузили файл Section_4.txt, то соответственно и файл секции должен быть Section_4.bin. Далее необходимо ввести некоторые параметры данной секции, а именно начальный адрес таблицы смещений для строк и адрес смещения первой строки. Эти данные вы можете взять из утилиты "II.Парсер строк в секциях LNG" из второго этапа. Будьте внимательны при вводе адресов. Ошибка в один байт сделает языковой файл неработоспособным. После этого нажмите кнопку [Кодировать].
Теперь осталось заменить в языковом файле полученной секцией оригинальную и, при необходимости, подкорректировать параметры секции в заголовке файла LNG.
Программа "IV.Кодирование в файл секций LNG" бесплатна и распространяются как есть, без каких-либо гарантий. Вы используете данный продукт на свой страх и риск.
Тест показал, что в некоторых элементах интерфейса имеются ограничения на размер. Например, строка "Защита конфиденциальности" (Privacy Protection) не помещается в нижнем ряду на одной из кнопок, пришлось её менять на "Личные данные" (в пятой версии Auslogics перевод данной функции сделан как "Конфиденциальность", но в шестой версии и это слово не помещается на кнопке). А для кнопки "Инструменты" необходимо корректировать рисунок, чтобы текст был в границах желтого поля. В общем, для качественного перевода нужно хорошо постараться. Но, как видите, перевод сделать можно.
Этап V. Завершающий этап - создание языкового файла. Требуется объединить все файлы секций *.BIN в один файл и подкорректировать заголовок языкового файла LNG. Для автоматизации сборки предлагаю вам утилиту "V.Создание LNG-файла" (исполняемый файл "V.PackLNG.exe"), сделанную в конструкторе программ HiAsm (автор Dilma). Она выполняет сведение в один массив данных всех файлов секций *.BIN, коррекцию свойств (размер, смещение) в заголовке языкового файла, замену аббревиатуры ENU на RUS, и запись нового языкового файла с именем rus.lng.
Пользоваться утилитой очень просто, от вас только требуется выполнение некоторых требований:
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 пока нет возможности выбрать язык интерфейса, хотя в её компонентах это возможно. Но можно указать язык прямо в реестре. Откройте ветку
Оу... А я уж думал писать для этой программы автоматический распаковщикупаковщик. Но Leserg избавил меня от лишних хлопот Вот как за неделю меняются события