Локализация: MUI, шрифты и региональные настройки

OSzone.net » Microsoft » Автоматическая установка » Автоматическая установка Windows XP » Локализация: MUI, шрифты и региональные настройки
Автор: Вадим Стеркин
Иcточник: unattended.oszone.net
Опубликована: 08.11.2005

Вопросы о региональных настройках и локализации возникают на форуме Автоматической установки с завидной регулярностью. В принципе, практически вся информация, позволяющая разобраться с проблемой, на страницах сайта представлена, хотя и не собрана в одном месте. Кроме того, некорректная отработка секции [RegionalSettings] из файла ответов вносит дополнительную неразбериху. В данной статье я постарался собрать как личный опыт, так и опыт участников форума. Я попытаюсь осветить все тонкости локализации и выработать алгоритм применения настроек, срабатывающий на 100%.

Статья разбита на секции, каждая из которых так или иначе относится к локализации. Для каждой секции приводится работающий метод применения настроек. В конце статьи все методы сводятся воедино для выполнения во время автоматической установки системы.

Multilanguage User Interface (MUI)anchor

Если вы работаете с локализованной версией Windows, то можете пропустить эту секцию.

Для локализации элементов интерфейса используется Multilanguage User Interface (MUI). Вообще, он предназначен для корпоративных пользователей и не доступен для загрузки с сайта Microsoft (где выложен только MUI для Windows Embedded, который не подходит для Windows XP). В данном примере рассматривается русский MUI и выбор русского интерфейса, как интерфейса по умолчанию для всех учетных записей, создаваемых впоследствии.

muisetup.exe /i 0419 /d 0419 /l /f /r /s

Ключ /i указывает, какой язык выбирается, и соответственно 0419 - русский, а ключ /d назначает язык интерфейса по умолчанию. Полный список ключей, а также значений языков можно найти в файле muisetup.hlp, входящем в комплект поставки MUI.

Важно! Для наиболее полной локализации интерфейса вам нужно взять muisetup.exe от SP3 и заменить им одноименный файл в дистрибутиве MUI. Также, вам могут понадобиться дополнительные пакеты для локализации Справки, Windows Media Player 10 и Windows Movie Maker 2.1.

Если вы хотите, чтобы русский интерфейс был уже при первом входе в систему, то устанавливайте MUI из cmdlines.txt. В противном случае, вы можете произвести установку при первом входе в систему любым удобным вам способом (пакетный файл из GuiRunOnce, RunOnceEx и т.д.). Ниже пример установки русского MUI и его обновлений из cmdlines.txt

[COMMANDS]
".\WinMUI\muisetup.exe /i 0419 /d 0419 /l /f /r /s"
".\WinMUI\WindowsXP-KB841625-x86MUI-RUS.exe /quiet /norestart"
".\WinMUI\MP10Setup_muiRUS.exe /Q"
".\WinMUI\mm21_muirus.exe /Q"

Понятно, что абсолютный путь к файлам на CD должен быть $OEM$\WinMUI\. Подробнее об $ОЕМ$ директориях читайте в соответствующей статье Справочника.

Корректное отображение кириллицы в меню и диалогах ПОanchor

Как было сказано выше, локализация интерфейса ОС осуществляется при помощи MUI. А вот за корректное отображение кириллических шрифтов в меню и диалогах программного обеспечения отвечает параметр SystemLocale файла ответов. Однако в некоторых программах все равно наблюдается некорректное отображение кириллических символов (также известное как иероглифы или кракозябры ;-). Стандартной рекомендацией является импортирование следующих параметров в реестр:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"System,0"="Arial,204"
"Fixedsys,0"="Fixedsys,204"
"Small Fonts,0"="Small Fonts,204"
"MS Serif,0"="MS Serif,204"
"MS Sans Serif,0"="MS Sans Serif,204"
"Courier,0"="Courier New,204"
"Arial Cyr,0"="Arial,204"
"Courier New Cyr,0"="Courier New,204"
"Times New Roman Cyr,0"="Times New Roman,204"
"Helv,0"="MS Sans Serif,204"
"Tms Rmn,0"="MS Serif,204"
"Arial,0"="Arial,204"

Примечание. Исправляя проблему в одних программах, вы можете привнести ее в другие. Например, в Adobe Reader возникают проблемы при печати. Не используйте твик, если у вас нет проблем.

Эти настройки являются системными и распространяются на всех пользователей. Вы можете включить их в уже существующий файл hklm.reg (подробнее в статье Твики реестра) или создать отдельный файл для настроек шрифтов, скажем, fonts.reg, который можно импортировать из cmdlines.txt или при первом входе в систему любым удобным вам способом (пакетный файл из GuiRunOnce, RunOnceEx и т. д.).

Языковые и региональные настройки

Одной из основных причин неразбeрихи с региональными настройками является [частично] некорректная отработка секции [RegionalSettings]. Почему это происходит не знают, похоже, и в Microsoft, т. к. я пока не видел статьи, объясняющей причину или по крайней мере признающей проблему. Кроме того, не все региональные настройки могут быть сконфигурированы через файл ответов.

Секция [RegionalSettings] файла ответовanchor

Я рекомендую внимательно изучить параметры секции [RegionalSettings] файла ответов, т. к. ее мы применим другим способом.

[RegionalSettings]
LanguageGroup=1,2,3,4,5
SystemLocale=00000419
UserLocale=00000419
InputLocale=0409:00000409,0419:00000419

Секцию [ReginalSettings] удобно конфигурировать через Setup Manager. Однако давайте рассмотрим ее детально, т. к. она содержит много параметров и традиционно вызывает вопросы. Ниже я привожу подробные описания параметров, которые взяты из KB289125 (в статье также перечислены и другие параметры).

Таким образом, в приведенном выше примере будут установлены:

regopts.txtanchor

Как уже было сказано выше, секция [RegionalSettings] не отрабатывает корректно из файла ответов в некоторых случаях (по сообщениям участников конференции - в английской XP SP2, хотя у меня такой проблемы не наблюдалось). Точнее не срабатывают некоторые параметры (UserLocale и InputLocale, если мне не изменяет память), но это не суть важно, т. к. общий итог все равно неудовлетворительный. Существует альтернативный способ конфигурирования региональных настроек, который описан в этой статье MS KB. Вкратце, секция [RegionalSettings] помещается в текстовый файл regopts.txt, а потом выполняется команда

rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"c:\regopts.txt"

Кoманду можно выполнять при первом входе в систему, что косвенно и подтверждает примечание в конце статьи базы знаний. Конечно, файл regopts.txt необязательно должен находиться в корне диска C:\. Вы можете изменить путь соответственно расположению файла. Выполнить команду вы можете любым удобным вам способом (пакетный файл из GuiRunOnce, RunOnceEx и т. д.). Однако, выполняя команду при первом входе в систему, вы примените пользовательские параметры (например, UserLocale) только к текущему пользователю. Для того чтобы применить параметры ко всем пользователям, команду нужно выполнять из cmdlines.txt. Пример вы найдете ниже в статье.

Далее в статье этот способ я буду обозначать как "способ regopts.txt".

Раскладка клавиатурыanchor

Наборы раскладок клавиатуры и их порядок (приоритет) можно задать при помощи способа regopts.txt, а вот способ переключения между раскладками

Key sequence

конфигурируется через реестр. Достаточно настроить желаемый способ на рабочей системе и экспортировать раздел реестра

HKEY_CURRENT_USER\Keyboard Layout\Toggle

Ниже приводится пример параметра, отвечающего за переключение раскладки левым ALT+SHIFT

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout\Toggle]
"Hotkey"="1"

Приоритет раскладки клавиатуры при входе в систему (Экран приветствия или классический вход) можно задать следующим образом:

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="00000409"
"2"="00000419"

В данном случае по умолчанию выставляется английская раскладка клавиатуры.

Поскольку раскладка клавиатуры является пользовательской настройкой, вам нужно обеспечить импорт параметра из cmdlines.txt, если вы хотите применить его для всех пользователей. Вы можете включить экспортированные значения в уже существующий файл hkcu.reg (подробнее в статье Твики реестра) или создать отдельный файл для региональных настроек, скажем, regional.reg, который также будет импортироваться из cmdlines.txt.

Расположение (Location)anchor

Это еще один элемент региональных настроек, который надо конфигурировать через реестр.

Location

За настройку элемента отвечает параметр Geo из раздела

HKEY_CURRENT_USER\Control Panel\International\Geo

Например, расположению Россия соответствует

[HKEY_CURRENT_USER\Control Panel\International\Geo]
"Nation"="203"

Поскольку "Расположение" является пользовательской настройкой, вам нужно обеспечить импорт параметра из cmdlines.txt, если вы хотите применить его для всех пользователей. Вы можете включить экспортированные значения в уже существующий файл hkcu.reg (подробнее в статье Твики реестра) или в regional.reg, который вы, возможно, создали для импорта способа переключения клавиатуры.

Сводим все вместе

Итак, подведем итог. Для наиболее полной и корректной локализации нам понадобится:

Как вы уже поняли из прочтения статьи, эти настройки устанавливаются при помощи файлов, исполняемых из cmdlines.txt. Пример содержимого cmdlines.txt:

[COMMANDS]
".\WinMUI\muisetup.exe /i 0419 /d 0419 /l /f /r /s"
".\WinMUI\WindowsXP-KB841625-x86MUI-RUS.exe /quiet /norestart"
".\WinMUI\MP10Setup_muiRUS.exe /Q"
".\WinMUI\mm21_muirus.exe /Q"
"REGEDIT /S regional.reg"
"REGEDIT /S fonts.reg"
"regset.cmd"

Первые четыре команды последовательно устанавливают MUI, а также обновления Справки, Windows Media Player 10 и Windows Movie Maker. Если вы не устанавливаете MUI, то все строки, относящиеся к нему, вам не нужны. Пятая команда импортирует файл regional.reg, содержащий способ переключения раскладки клавиатуры и настройки Расположения. Альтернативно можно включить содержимое regional.reg в состав hkcu.reg, если у вас таковой имеется. Затем выполняется импорт параметров реестра для шрифтов из файла fonts.reg (вы также можете объединить этот REG-файл с другими).

Наконец, последняя строка в файле cmdlines.txt реализует "способ regopts.txt", импортируя параметры секции [RegionalSettings]. Я приведу пример пакетного файла regset.cmd, который и совершит нужные действия:

@echo off
%systemroot%\system32\rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:".\regopts.txt"
exit

В данном примере файлы regional.reg, fonts.reg и regopts.txt должны находиться в одной папке с файлом cmdlines.txt. Все перечисленные в файле cmdlines.txt команды будут выполнены за 12 минут до окончания установки ОС.

Надеюсь, данная статья будет вам полезна и поможет обойти подводные камни, препятствующие успешной локализации с первого захода.


Ссылка: http://www.oszone.net/3480/