Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
kurkoff1965, мало информации. По вашей картинке не понятно, что у вас не получается. В любом случае обратитесь к справке к программе (она на русском языке), к главе "Локализация файлов РЕ -> Жестко-закодированные строки".
Нужна помощь. Вот программа для жеребьевки шахматных турниров, последняя версия 5.7.8: https://www.schaakbond.nl/swissmaster, скачать: https://www.schaakbond.nl/sites/default/files/userfiles/schaakbond/org anisatoren/swismaster.zip. Я переводил версию 5.6.12 http://rgho.st/7MXTcWYdb, почти все нормально, но в Карточках пар, Отчетах и Инструменты-Опубликовать в сети появляются кракозябры. Пользователи потом могут решить это, например: отчеты - экспортировать в блокнот, при публикации в сети на сайте - править документ .htaccess, но хотелось бы правильно сделать. Раньше Ю.Воронов переводил версию 5.5.3 http://rgho.st/7f2sJ9GMk (портабель), там вроде нормально было. Я писал ему, но он не отвечает. Посоветуйте, как это можно исправить.
Еще информация: при переводе версии 5.6.12 после подмены файла кодовой страницы c_1252.NLS на c_1251.NLS кракозябры большей частью исчезали. Рисунки с ними загрузил сюда http://dropmefiles.com/DmDmF, на rgho.st почему-то никак не грузились.
нельзя ли подправить как-нибудь место под длину строки (подчеркнуто красным)
alexger, можно. Отладчик вам в помощь. Пока предлагаю вам уже готовое решение, с которым вы справитесь самостоятельно. Откройте исполняемый файл программы SonicfirePro6.exe (далее в примере использован оригинальный файл программы) в шестнадцатеричном редакторе. Например, я это делаю в редакторе WinHEX. Откройте диалог поиска последовательности байт и введите значение "6A126A3768", также укажите параметр вывести все найденные позиции в виде списка.
Нажмите ОК и получите список с адресами найденных вхождений, всего четыре адреса.
Перейдите в редакторе по первому вхождению, найденное вхождение будет выделено цветовым блоком. В этом блоке найдите байт со значением "37".
Теперь вместо значение "37" введите значение "7F" (просто установите курсор на байт "37" и с клавиатуры введите "7F").
Аналогичным образом сделайте для всех остальных найденных вхождений. Всего у вас получится 4 изменения, по числу найденных блоков. Сохраните изменения в файле.
Значение "37" - это ширина элемента управления для надписи "Mood". Естественно это значение в шестнадцатеричном виде, а десятичном будет 55 пикселей (для перевода величин из одной системы счисления в другую можете использовать обычный калькулятор Windows). Мы изменяем это значение на "7F" - 128 пикселей. Этого вполне достаточно. Большее значение вводить нельзя, программа перестанет работать. Если же очень нужно сделать ширину более 128 пикселей (7F), то тогда нужно использовать отладчик.
Правку можете выполнить в локализованном файле, просто тогда адресация искомых вхождений может быть другой, а не как показана в примере.
Сообщение отредактировал gazon01 29 мая 2018 - 09:44
Почитайте этот обучающий материал про функции CreateFontA (Рисунок 15)
Не получается найти, как в описании. Запускаю ollydbg, открываю в ней файл Swiss_RUS.exe, выбераю команду "Search for -> All intermodular calls". В списке найденных функций CreateFontA у меня нет. Есть CreateFontAStub 5 строк, но у них в комментариях нет фразы "CharSet=ANSI_CHARSET", и есть CreateFontIndirectА строк 30, но они без комментариев. Как найти "CharSet=ANSI_CHARSET" и далее PUSH0 не понимаю.
StInd2013, у вашей программы классический случай с функциями CreateFont, описанный в указанной статье. Просто для новичков, не знакомых с работой в отладчике и ассемблером, материал довольно сложный для понимания, хотя автор и старался сделать его доступным для широкой аудитории пользователей. Первое, за что я зацепился при знакомстве с вашей локализованной версией (5.6.12_Rus), так это некорректное отображение кириллицы в отчетах HTML (меню Инструменты -> Опубликовать в Сети...). Здесь все оказалось просто. Открываем в текстовом редакторе файл отчета и смотрим атрибут установки кодировки текста:
Кодировка текста задана iso-8859-1, которая не дружит с кириллицей. Нам нужна кодировка windows-1251. То есть необходимо, чтобы при публикации программа записывала атрибут "charset=windows-1251" вместо "[s]charset=iso-8859-1[/s]". Отправляем исполняемый файл программы в шестнадцатеричный редактор (я использую WinHEX) и задаем поиск текста iso-8859-1. Также указываем параметр вывести все найденные позиции в виде списка.
Будет найден всего лишь один адрес с искомым текстом. Переходим на него.
Смотрим, есть ли возможность записать вместо "iso-8859-1" кодировку "windows-1251". Строка "windows-1251" длиннее строки "iso-8859-1" на 2 символа, что равнозначно 2-м байтам. Как раз в конце блока с кодировкой имеется 3-и пустых байта.
Один пустой байт должен быть обязательно. Он символизирует конец строки. Остается 2-а байта в нашем распоряжении, поэтому смело пишем нашу кодировку (не забываем скопировать окончание строки как в оригинале - ">0x0A).
Сохраняем изменения в файле. Проверяем создание отчета для публикации. Теперь все правильно.
Если вы делаете локализацию в Radialix, то найдите в жестко-закодированных строку "meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"" и для перевода запишите как "meta http-equiv="Content-Type" content="text/html; charset=windows-1251"". Тогда не нужно будет шаманить в шестнадцатериченом редакторе.
Теперь по функциям CreateFont. Предлагаю вам использовать современный отладчик x64Dbg. OllyDbg не развивается и устарел (хотя в хозяйстве все еще полезный инструмент). Поиск проблемных мест в коде лучше всего вести по именам шрифта "Arial" и "Courier New" (эти шрифты используются программой). Найдите все ссылки на эти шрифты. Запустите программу под отладчиком. После запуска и отображения главного окна программы поставьте точки останова на все найденные ссылки. Теперь по очереди вызывайте диалоги и формы, где неверно отображается кириллица. При создании логических шрифтов отладчик будет останавливать выполнение программы. Так сразу можно выявить конкретные места в коде.
Сообщение отредактировал gazon01 29 мая 2018 - 09:37
После выбора в контекстном меню(OllyDbg) команды "Search for -> All intermodular calls" откроется список найденных функций, щелкните вверху списка по Dest name для сортировки функций. Если не получится, напишите здесь, тогда кинем модифицированный exe. Удачи!