Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Приветствую! При переводе HTML Help Workshop, столкнулся с сообщениями контекстно-зависимой справки. Как я понял сообщения работают на ява. Подскажите пожалуйста, какую кодировку надо использовать в данном случае. Сам текст сообщений находятся в CHM справке, в файле wintype.txt с кодировкой UTF-8 без сигнатуры. И при клике на вопрос в программе, из этого текстового файла, берётся определённая строка. Штирлица всего перепробовал, ни одна кодировка не подошла. :) Если обратился не в ту тему, извиняйте, просто везде "Доступ закрыт". Единственную тему нашёл, где можно написать.
Чтобы добраться до данных сообщений в программе, нужно: Запустить программу, создать проект File > New > выделить пункт Project > ОК > Далее > кнопка Browse задать любое имя проекту > кнопка Открыть > Далее > Далее > Готово. После чего на боковой панели, нажать третью кнопку с верху "Add/Modify window definitions", в появившемся окне ввести любое имя, нажать ОК, перейти на вкладку "Buttons" и всё, дальше вопрос и опция. Делов-то :)
Или просто запустить уже готовый проект(я бросил его в папку) и на боковой панели, нажать третью кнопку с верху "Add/Modify window definitions", перейти на вкладку "Buttons", а далее ? и опция.
dinis124, это вы шутите так или вправду советуете скачать эту версии перевода?
Цитата: dinis124 писал:
Автор там правда не заморачивался
Ну вот и я про это, Автор не заморачивался! Прежде чем браться за перевод, я немного покачал русских версий, после чего и пришлось переводить.
Я не хочу оспаривать труды парней, это всё же труды и не малые! Но у меня есть перевод всей(а не одного файла) программы и другой мне не нужен, спасибо. Я просто попросил помощи у вас, у знатоков: Как перевести данные сообщения? Вернее сказать как перевести я знаю, я не знаю какую кодировку использовать. Если вы знаете какую, то подскажите пожалуйста, буду признателен. Или может кто другой знает, лично я всё уже перепробовал
slayer Да ну, какие шутки, это вы с места в карьер шутите, а я увидел и решил показать (помочь), мало ли не видели и что-то почерпнёте для себя полезного и нужного.
Попытался поискать шрифты и нехорошие константы по ехе но тоже не нашел для себя зацепку для дальнейшего направления поисков. Возможно стоит уделить внимание и папке java но с этим я не дружу. Хотя утилиты где то и есть на сайте для просмотра и правки классов.
Цитата: Цитата:
Или может кто другой знает, лично я всё уже перепробовал
Это не факт что проблема кроется в кодировке именно в wintype.txt.
Приветствую! При переводе HTML Help Workshop, столкнулся с сообщениями контекстно-зависимой справки. Как я понял сообщения работают на ява. Подскажите пожалуйста, какую кодировку надо использовать в данном случае. Сам текст сообщений находятся в CHM справке, в файле wintype.txt с кодировкой UTF-8 без сигнатуры. И при клике на вопрос в программе, из этого текстового файла, берётся определённая строка.
slayer, в первую очередь рекомендую вам ознакомиться со статьей "". В ней находится ключ к решению вашей проблемы. А пока коротко...
Кодировка файла wintype.txt - ANSI (windows-1251) — однозначно, именно такую кодировку имеет оригинальный файл. Теперь проведем простой эксперимент. Берем дистрибутив программы, модифицированный файл справки (переведен файл wintype.txt) и идем на разные ОС (виртуально - VMWare, VirtualBox).
Смотрим на системе Windows XP (оригинальная, из коробки, RUS) - все путем, строки отображаются корректно.
Рис. 1
Идем на Windows 7 (Windows 8, Windows 10 и т.д.). Программа HTML Help Workshop - таже. Заменена только справка с переведенным файлом wintype.txt. Что видим? А видим хрень. Почему на XP нормально, а на остальных ОС - кракозябры? Причина в программе? Явно нет, т.к. на устаревшей ОС кириллица отображается корректно. А в чем тогда?
Программа HTML Help Workshop - разработка Microsoft, поэтому для работы она использует системные библиотеки Windows. В частности файл comctl32.dll, который подгружает компонент hhctrl.ocx, а тот в свою очередь локализованную библиотеку ресурсов (все эти файлы находятся в системном каталоге). Именно компонент hhctrl.ocx отвечает за вывод на экран строк контекстной справки, т.е. тех, которые в данном примере читаются из wintype.txt. Так где же кроется засада?
На Windows XP за русскую локализацию отвечает файл hhctrlui.dll. Если открыть его в редакторе ресурсов, то в строковых ресурсах найдутся строки вида "MS Shell Dlg,8,204". Эти строки задают свойства шрифта элементов диалоговых окон. MS Shell Dlg - название шрифта, 8 - размер шрифта, 204 - идентификатор кодовой страницы (кириллица).
Рис. 2
То что эти ресурсы используются для формирования шрифта у элементов диалоговых окон можно выяснить при помощи отладчика (отправной точкой служат функции CreateFont и CreateFontIndirect). Этот момент я оставлю вам на самостоятельное изучение, если будет такой интерес. Идем дальше.
Так, а что у нас на Windows 7? Ага файл hhctrlui.dll разработчики успешно похерили и ввели новый стандарт локализации ОС. Теперь начали использовать файлы MUI, которые собраны в отдельные папки соответственно локали. Нас интересует локаль ru-RU. Идем в этот каталог и ищем файл, в названии которого есть подстрока "hhctrl". Есть такой — это файл hhctrl.ocx.mui (файл компонента hhctrl.ocx, соответственно локализованная библиотека ресурсов - hhctrl.ocx.mui). Открываем его в редакторе ресурсов, переходим на строковый ресурс с тем же идентификатором (64) и....
Рис. 3
Не, блин, ну как это называется? Для набора символов указан нейтральный, т.е. латиница (windows-1252)! Аналогичная картина и на Windows 8, Windows 10 и скорее всего будущих версиях. Это пример деградации системы.
Ну а теперь, чтобы вернуть поддержку кириллицы — надеюсь вам понятно, что нужно сделать. Если нет, смотрите рисунок 2. Таких строк несколько!
К сожалению, решение из разряда "специальных", т.к. файлы являются системными. Защита системы не даст просто так вам заменить файлы, а при малейшей возможности попытается выполнить их восстановление. А в файлах программы HTML Help Workshop патчить нечего, почему, рассказано выше. Все претензии к компании Microsoft.
Но к счастью есть безопасный вариант. Чтобы не насиловать систему, можно пропатчить файл hhctrl.ocx (в нем строка "MS Shell Dlg,8,0" является жестко-закодированной — 0 нужно заменить на 204) и вместе с файлом comctl32.dll закинуть в каталог HTML Help Workshop. Механизм этих действий следующий. Когда выполняется запуск программы, в первую очередь происходит поиск зависимых файлов в собственном каталоге (каталоге установки). Если таковых не найдено, то поиск переключается на системный каталог, а также каталоги, указанные в системных переменных. Поэтому размещение указанных файлов в каталоге программы HTML Help Workshop будут однозначно использованы в первую очередь.
Вот интересно, а есть хоть что-нибудь такое, чего не знает Leserg? Сергей, вы как всегда на высоте, Спасибо! Статью "Логический шрифт" обязательно почитаю.
Нашёл "MS Shell Dlg,8,0" Юникод + Фиксированная длина 16 символов (с помощью IDA добавил) Поправил х32 (hhctrl.ocx) в 64 системе, кинул в папку не сработало. Поправил х64 (hhctrl.ocx) и кинул в папку сработало! Вывод! При установке "HTML Help Workshop", нужно в соответствии с разрядностью, распаковывать поправленный "hhctrl.ocx" + "comctl32.dll", в папку с установленной программой. Разрядность для библиотеки "comctl32.dll", не влияет, а для "hhctrl.ocx", влияет!