MrSMiT прав, на оригинальной системе Windows, где
НЕ была сделана подмена кодовых страниц и шрифтов в реестре, текст в интерфейсе программы действительно отображается кракозябрами.
миха04, то что у вас отображается корректно, говорит о том, что в реестре вашей системы были сделаны правки. Сама программа использует шрифт
Tahoma. Это задано в базе данных сообщений (файл MessageData_X.mdb):
Для шрифта
Tahoma в реестре Windows (оригинальная установка, не сборка, не патченная и т.д.) в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutesотсутствует переопределение набора символов для русского языка, т.е. по умолчанию используется набор ANSI. Чтобы Windows автоматически выполняла подмену символов ANSI на кириллицу (справка
MSDN), в этот раздел необходимо добавить запись:
"Tahoma,0"="Tahoma,204"Это безопасная мера и предусмотрена спецификациями Windows. Чтобы изменения вступили в силу, ПК необходимо перегрузить.
Если вы не хотите что-либо делать с реестром на системе пользователя (или у пользователя в системе ограниченные права), то тогда (и это самый приемлемый вариант) необходимо изменить шрифт, заданный в самой программе, в файле
MessageData_X.mdb. Для выбранного языка, строки которого вы переводите, укажите шрифт, который поддерживает кириллицу, например
Arial CYR (на рисунке ниже показана замена для строк польского языка):
Конечно, могут быть ещё нюансы, например не все строки будут корректными, но это необходимо решать в индивидуальном порядке. А сам шрифт
Arial CYR присутствует во всех Windows в оригинальной поставке.
Если вы просмотрите этот список, то заметите, что еще можно выбрать шрифт
Courier New CYR или
Times New Roman CYR. Все, больше вариантов нет.
Небольшое отступление: обратите внимание на запись
MS Shell Dlg 2 = Tahoma. При программировании приложений в визуальной среде разработки, по умолчанию шрифт для всех элементов управления задан как MS Shell Dlg 2. Это означает, что в системе Windows он автоматически будет заменен на Tahoma. А как вы могли уже заметить, для шрифта Tahoma в системе по умолчанию используется набор символов ANSI, который не поддерживает кириллицы. Поэтому, при переводе нужно или менять шрифт, или добавлять в реестр запись "Tahoma,0"="Tahoma,204" для подмены набора символов. В некоторых программах можно увидеть свойство, заданное для шрифта, Font.Charset (набор символов). Если программист грамотный, то он укажет данное свойство как DEFAULT_CHARSET (набор символов по умолчанию, согласно региональным настройкам языка в Windows). Но во многих случаях свойство указано - ANSI_CHARSET. При переводе это свойство необходимо заменить на DEFAULT_CHARSET или RUSSIAN_CHARSET у всех элементов управления, иначе пользователь увидит кракозябры.(Конец отступления)
А вот подмена кодовых страниц в ключе реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePageнапример,
"1252"="c_1251.nls" - это уже самый крайний случай, когда действительно ничего нельзя сделать. Кстати такая кардинальная подмена - это самая распространённая ошибка русификаторщиков. На их системе локализованная программа будет выглядеть корректно, но на системе рядового пользователя, у которого установлена оригинальная Windows, - уже с кракозябрами.
Совет: при локализации программ используйте оригинальные настройки реестра касательно шрифтов. В большинстве случаев проблему кракозябров можно решить правкой самой программы и её ресурсов.