Питання про регіональні налаштуваннях і локалізації виникають на форумі Автоматичної установки із завидною регулярністю. В принципі, практично вся інформація, що дозволяє розібратися з проблемою, на сторінках сайту представлена, хоча і не зібрана в одному місці. Крім того, некоректна відпрацювання секції [RegionalSettings] з файлу відповідей вносить додаткову плутанину. У даній статті я постарався зібрати особистий досвід, так і досвід учасників форуму. Я спробую висвітлити всі тонкощі локалізації та виробити алгоритм застосування налаштувань, що спрацьовує на 100%.
Multilanguage User Interface (MUI)
Якщо ви працюєте з локалізованою версією 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 від SP2 і замінити їм однойменний файл в дистрибутиві MUI. Також, вам можуть знадобитися додаткові пакети для локалізації Довідки. Windows Media Player 10 і Windows Movie Maker 2.1.
Якщо ви хочете, щоб російський інтерфейс був уже при першому вході в систему, то встановлюйте MUI з cmdlines.txt. В іншому випадку, ви можете зробити установку при першому вході в систему будь-яким зручним вам способом (пакетний файл з GuiRunOnce. RunOnceEx і т.д.). Нижче приклад установки російського MUI і його оновлень з cmdlines.txt
[COMMANDS]
".WinMUImuisetup.exe / i 0419 / d 0419 / l / f / r / s"
".WinMUIWindowsXP-KB841625-x86MUI-RUS.exe / quiet / norestart"
".WinMUIMP10Setup_muiRUS.exe / Q"
".WinMUImm21_muirus.exe / Q"
Коректне відображення кирилиці в меню і діалогах ПО
Як було сказано вище, локалізація інтерфейсу ОС здійснюється за допомогою MUI. А ось за коректне відображення кириличних шрифтів в меню і діалогах програмного забезпечення відповідає параметр SystemLocale файлу відповідей. Однак, в деяких програмах все одно спостерігається некоректне відображення кириличних символів (також відоме як ієрогліфи або кракозябри ;-). Стандартної рекомендацією є імпортування наступних ключів до реєстру:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage] "1250" = "c_1251.nls" "1251" = "c_1251.nls" "1252" = "c_1251.nls" "1 253" = "c_1251.nls" [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFontSubstitutes] "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 "
Ці настройки є системними і поширюються на всіх користувачів. Ви можете включити їх в уже існуючий файл hklm.reg (докладніше в статті Твіки реєстру) або створити окремий файл для налаштувань шрифтів, скажімо, fonts.reg. який [з особистого досвіду] краще імпортувати при вході в систему будь-яким зручним вам способом (пакетний файл з GuiRunOnce. RunOnceEx і т.д.).
Мовні і Регіональні настройки
Однією з основних причин неразбeріхі з регіональними настройками є [частково] некоректна відпрацювання секції [RegionalSettings]. Чому це відбувається не знають, схоже, і в Microsoft, тому що я поки не бачив статті пояснює причину або принаймні визнає проблему. Крім того, не всі регіональні настройки можуть бути налаштовані через файл відповідей.
Секція [RegionalSettings] файлу відповідей
Я рекомендую уважно вивчити параметри секції [RegionalSettings] файлу відповідей, тому що її ми застосуємо інший спосіб.
[RegionalSettings]
LanguageGroup = 1,2,3,4,5
SystemLocale = 00000419
UserLocale = 00000419
InputLocale = 0409: +00000409,0419: 00000419
Секцію [ReginalSettings] зручно конфігурувати через Setup Manager. Однак, давайте розглянемо її детально, тому що вона містить багато параметрів і традиційно викликає питання. Нижче я привожу докладні описи параметрів, які взяті з KB289125 (в статті також перераховані і інші параметри).
- LanguageGroup - Задає підтримку мовної групи операційною системою, встановленою на комп'ютері. Якщо цей параметр вказана, то вона визначає також значення налаштувань InputLocale, SystemLocale і UserLocale. За замовчуванням в будь-якому випадку встановлюються перші п'ять мовних груп з цього списку. так що для підтримки кирилиці даний параметр взагалі необов'язковий.
- SystemLocale
Задає код розкладки клавіатури і комбінації розкладок. Якщо вказано кілька мов введення, першої використовуваної розкладкою клавіатури буде та, яка визначена для даного комп'ютера за умовчанням ((в тому числі і при введенні пароля при вході в систему). Зазначені комбінації розкладок клавіатури повинні підтримуватися для мов, або певних шляхом використання настройки LanguageGroup, або для мови за замовчуванням для встановлюваної локалізованої версії операційної системи Windows XP. Якщо для доступного мови не підтримує зазначена комбінація, буде використовуватися комбінація ра складки клавіатури за замовчуванням. Ця установка ігнорується, якщо задана настройка Language.
Таким чином, у наведеному вище прикладі будуть встановлені:
- LanguageGroup = 1,2,3,4,5
П'ять мовних груп: Western Europe and United States, Central Europe, Baltic, Greek і Cyrillic. Строго кажучи можна не вказувати цей параметр взагалі, тому що групи 1-5 встановлюються за замовчуванням. - SystemLocale = 00000419
Російська мова за замовчуванням для програм, які не використовують Юнікод. - UserLocale = 00000419
Російські Стандарти і Формати. - InputLocale = 0409: +00000409,0419: 00000419
Дві розкладки клавіатури: російська і англійська. Англійська буде розкладкою за замовчуванням (в тому числі і при вході в систему, тому що йде першою в списку).
Як вже було сказано вище, секція [RegionalSettings] відпрацьовується коректно з файлу відповідей. Точніше, не спрацьовують деякі параметри (UserLocale і InputLocale, якщо мені не зраджує пам'ять), але це не суть важливо, тому що загальний підсумок все одно незадовільний. Існує альтернативний спосіб конфігурації регіональних налаштувань, який описаний в цій статті MS KB. Якщо коротко, секція [RegionalSettings] поміщається в текстовий файл regopts.txt. а потім виконується команда
rundll32.exe shell32, Control_RunDLL intl.cpl ,, / f: "c: egopts.txt"
Кoманда краще виконувати при першому вході в систему, що побічно і підтверджує примітка в кінці статті MS KB. Звичайно, файл regopts.txt не обов'язково повинен знаходитися в корені диска C. Ви можете змінити шлях відповідно місця розташування інфікованого файлу. Виконати команду ви можете будь-яким зручним вам способом (пакетний файл з GuiRunOnce. RunOnceEx і т.д.)
Далі в статті цей спосіб я буду позначати як "спосіб regopts.txt".
Набори розкладок клавіатури та їх порядок (пріоритет) можна задати за допомогою способу regopts.txt. а ось спосіб перемикання між розкладками
конфигурируется через реєстр. Досить налаштувати бажаний спосіб на робочій системі і експортувати гілку реєстру
Нижче наводиться приклад ключа, що відповідає за перемикання розкладки лівим ALT + SHIFT
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERKeyboard LayoutToggle]
"Hotkey" = "1"
Пріоритет розкладки клавіатури при вході в систему (Екран привітання або класичний вхід) можна задати наступним чином:
[HKEY_CURRENT_USERKeyboard LayoutPreload]
"1" = "00000409"
"2" = "00000419"
В даному випадку за замовчуванням виставляється англійська розкладка клавіатури.
Оскільки розкладка клавіатури є користувальницької налаштуванням, вам потрібно забезпечити імпорт ключа з cmdlines.txt. якщо ви хочете застосувати його для всіх користувачів. Ви можете включити експортовані значення в уже існуючий файл hkcu.reg (докладніше в статті Твіки реєстру) або створити окремий файл для регіональних налаштувань, скажімо, regional.reg. який також буде імпортуватися з cmdlines.txt.
Це ще один елемент регіональних налаштувань, який треба конфігурувати через реєстр.
За настройку елемента відповідає ключ Geo з гілки
Наприклад, розташуванню Росія відповідає
[HKEY_CURRENT_USERControl PanelInternationalGeo]
"Nation" = "203"
Оскільки "Розташування" є користувальницької налаштуванням, вам потрібно забезпечити імпорт ключа з cmdlines.txt. якщо ви хочете застосувати його для всіх користувачів. Ви можете включити експортовані значення в уже існуючий файл hkcu.reg (докладніше в статті Твіки реєстру) або в regional.reg. який ви, можливо, створили для імпорту способу перемикання клавіатури.
Зводимо все разом
Отже, підіб'ємо підсумок. Для найбільш повної і коректної локалізації нам знадобиться:
- Встановити MUI (якщо ОС не локалізована)
- Забезпечити коректне відображення кирилиці в меню і діалогах ПО
- Конфігурувати мовні та регіональні настройки і спосіб розкладки клавіатури
Як ви вже зрозуміли з прочитання статті, частина цих налаштувань встановлюється за допомогою файлів, що виконуються з cmdlines.txt. а що залишилися налаштування задаються при першому вході в систему. Приклад вмісту cmdlines.txt:
[COMMANDS]
".WinMUImuisetup.exe / i 0419 / d 0419 / l / f / r / s"
".WinMUIWindowsXP-KB841625-x86MUI-RUS.exe / quiet / norestart"
".WinMUIMP10Setup_muiRUS.exe / Q"
".WinMUImm21_muirus.exe / Q"
"REGEDIT / S regional.reg"
Перші чотири команди послідовно встановлюють MUI, а також поновлення Довідки, Windows Media Player 10 і Windows Movie Maker. Якщо ви не встановлюєте MUI, то всі рядки відносяться до нього вам не потрібні. Остання команда імпортує regional.reg. містить спосіб перемикання розкладки клавіатури і налаштування Розташування. Альтернативно, можна включити вміст regional.reg до складу hkcu.reg. якщо у вас такий є. Всі перераховані у файлі cmdlines.txt команди будуть виконані за 12 хвилин до закінчення установки ОС.
Далі, при першому вході в систему потрібно застосувати "спосіб regopts.txt" і імпортувати настройки кодової сторінки і шрифтів для коректного відображення кирилиці в ПО. Я приведу приклад пакетного файлу regional.bat. який і зробить потрібні дії:
@echo off
REGEDIT / S c: fonts.reg
rundll32.exe shell32, Control_RunDLL intl.cpl ,, / f: "c: egopts.txt"
exit
В даному прикладі файли fonts.reg і regopts.txt повинні знаходитися в корені диска C. однак ви можете розмістити їх де завгодно за допомогою $ OEM $ директорій і змінити шляху соответственно.о.