MSI Lab - Форум по русификации

Основные форумы => RusMe - РусМи! => Тема начата: MrSMiT от 08 Марта 2014, 15:19:03

Название: Кракозяблы
Отправлено: MrSMiT от 08 Марта 2014, 15:19:03
Прога тащит строки из mdb. Есть инглиш, китай, корея, польша. Любой из них пытаюсь перевести - кракозяблы. Подмена кодовой страницы помогает, но хотелось бы более изящьного решения. Фонт редактировать - не вариант.
http://yadi.sk/d/wlec1DGoK7Zui (http://yadi.sk/d/wlec1DGoK7Zui)
Название: Кракозяблы
Отправлено: миха04 от 08 Марта 2014, 23:15:54
MrSMiT, никакой проблемы с переводом не заметил. Делал его в MO Access 2007. Заменял слова в языковой строке English_USA.
Название: Кракозяблы
Отправлено: leserg73 от 09 Марта 2014, 16:20:39
MrSMiT прав, на оригинальной системе Windows, где НЕ была сделана подмена кодовых страниц и шрифтов в реестре, текст в интерфейсе программы действительно отображается кракозябрами. миха04, то что у вас отображается корректно, говорит о том, что в реестре вашей системы были сделаны правки. Сама программа использует шрифт Tahoma. Это задано в базе данных сообщений (файл MessageData_X.mdb):

(http://savepic.org/5150873m.png) (http://savepic.org/5150873.htm)

Для шрифта Tahoma в реестре Windows (оригинальная установка, не сборка, не патченная и т.д.) в разделе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

отсутствует переопределение набора символов для русского языка, т.е. по умолчанию используется набор ANSI. Чтобы Windows автоматически выполняла подмену символов ANSI на кириллицу (справка MSDN (http://msdn.microsoft.com/en-us/library/cc194829.aspx)), в этот раздел необходимо добавить запись:

"Tahoma,0"="Tahoma,204"

Это безопасная мера и предусмотрена спецификациями Windows. Чтобы изменения вступили в силу, ПК необходимо перегрузить.

Если вы не хотите что-либо делать с реестром на системе пользователя (или у пользователя в системе ограниченные права), то тогда (и это самый приемлемый вариант) необходимо изменить шрифт, заданный в самой программе, в файле MessageData_X.mdb. Для выбранного языка, строки которого вы переводите, укажите шрифт, который поддерживает кириллицу, например Arial CYR (на рисунке ниже показана замена для строк польского языка):

(http://savepic.org/5126296m.png) (http://savepic.org/5126296.htm)

Конечно, могут быть ещё нюансы, например не все строки будут корректными, но это необходимо решать в индивидуальном порядке. А сам шрифт Arial CYR присутствует во всех Windows в оригинальной поставке.

(http://savepic.org/5167259m.png) (http://savepic.org/5167259.htm)

Если вы просмотрите этот список, то заметите, что еще можно выбрать шрифт 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, - уже с кракозябрами. Совет: при локализации программ используйте оригинальные настройки реестра касательно шрифтов. В большинстве случаев проблему кракозябров можно решить правкой самой программы и её ресурсов.
Название: Кракозяблы
Отправлено: MrSMiT от 10 Марта 2014, 12:10:17
Цитата: leserg73
укажите шрифт, который поддерживает кириллицу, например Arial CYR
Благодарю!
Не очень внимательно таблицы просмотрел, так бы сам допёр.