Я использую скрипт powershell для настройки языков / клавиатур планшетов под конкретную конфигурацию. Французский канадский (1) и американский (2) для клавиатуры и все настройки языка / региона / формата для французского канадского.
Есть некоторая избыточность, но она работает:
$DefaultHKEY = "HKU\DEFAULT_USER"
$DefaultRegPath = "C:\Users\Default\NTUSER.DAT"
Set-Culture fr-ca
Set-WinSystemLocale fr-ca
Set-WinHomeLocation -GeoId 39
Set-WinUserLanguageList fr-ca -Force
Set-WinUILanguageOverride fr-ca
reg load $DefaultHKEY $DefaultRegPath
reg import "./langue/fr-ca-default.reg"
reg unload $DefaultHKEY
reg import "./langue/fr-ca-welcome.reg"
cmd.exe /c 'locale.bat'
и это сценарий reg (второй такой же, за исключением того, что я использую DEFAULT_USER)
Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Control Panel\International]
"Locale"="00000C0C"
"LocaleName"="fr-CA"
"s1159"=""
"s2359"=""
"sCountry"="Canada"
"sCurrency"="$"
"sDate"="-"
"sDecimal"=","
"sGrouping"="3;0"
"sLanguage"="FRC"
"sList"=";"
"sLongDate"="d MMMM yyyy"
"sMonDecimalSep"=","
"sMonGrouping"="3;0"
"sMonThousandSep"=" "
"sNativeDigits"="0123456789"
"sNegativeSign"="-"
"sPositiveSign"=""
"sShortDate"="yyyy-MM-dd"
"sThousand"=" "
"sTime"=":"
"sTimeFormat"="HH:mm:ss"
"sShortTime"="HH:mm"
"sYearMonth"="MMMM, yyyy"
"iCalendarType"="1"
"iCountry"="1"
"iCurrDigits"="2"
"iCurrency"="3"
"iDate"="2"
"iDigits"="2"
"NumShape"="1"
"iFirstDayOfWeek"="6"
"iFirstWeekOfYear"="0"
"iLZero"="1"
"iMeasure"="0"
"iNegCurr"="15"
"iNegNumber"="1"
"iPaperSize"="1"
"iTime"="1"
"iTimePrefix"="0"
"iTLZero"="1"
[HKEY_USERS\.DEFAULT\Control Panel\International\Geo]
"Nation"="39"
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile]
"Languages"=hex(7):66,00,72,00,2d,00,43,00,41,00,00,00,65,00,6e,00,2d,00,55,00,\
53,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
"UserLocaleFromLanguageProfileOptOut"=dword:00000001
"WindowsOverride"="fr-CA"
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile\en-US]
"CachedLanguageName"="@Winlangdb.dll,-1121"
"0409:00000409"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile\fr-CA]
"CachedLanguageName"="@Winlangdb.dll,-1160"
"0C0C:00001009"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile System Backup]
"Languages"=hex(7):66,00,72,00,2d,00,43,00,41,00,00,00,65,00,6e,00,2d,00,55,00,\
53,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
"UserLocaleFromLanguageProfileOptOut"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile System Backup\en-US]
"CachedLanguageName"="@Winlangdb.dll,-1121"
"0409:00000409"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile System Backup\fr-CA]
"CachedLanguageName"="@Winlangdb.dll,-1160"
"0C0C:00001009"=dword:00000001
[HKEY_USERS\.DEFAULT\Keyboard Layout]
[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]
"2"="00000409"
"1"="00000c0c"
[HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes]
"00000c0c"="00001009"
[HKEY_USERS\.DEFAULT\Keyboard Layout\Toggle]
[HKEY_USERS\.DEFAULT\Control Panel\Desktop\MuiCached]
"MachinePreferredUILanguages"=hex(7):66,00,72,00,2d,00,43,00,41,00,00,00,00,00
[HKEY_USERS\.DEFAULT\Control Panel\Desktop]
"PreferredUILanguages"=hex(7):66,00,72,00,2d,00,43,00,41,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\Settings]
"PreferredUILanguages"=hex(7):66,00,72,00,2d,00,43,00,41,00,00,00,00,00
и locale.bat выполнить простой
control.exe intl.cpl,, /f:".\locale.xml"
XML-файл:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<!-- user list -->
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/>
</gs:UserList>
<!-- GeoID -->
<gs:LocationPreferences>
<gs:GeoID Value="39"/>
</gs:LocationPreferences>
<gs:MUILanguagePreferences>
<gs:MUILanguage Value="fr-CA"/>
<gs:MUIFallback Value="en-US"/>
</gs:MUILanguagePreferences>
<!-- system locale -->
<gs:SystemLocale Name="fr-CA"/>
<!-- input preferences -->
<gs:InputPreferences>
<gs:InputLanguageID Action="add" ID="1009:00001009"/>
<gs:InputLanguageID Action="add" ID="0409:00000409"/>
</gs:InputPreferences>
<!-- user locale -->
<gs:UserLocale>
<gs:Locale Name="fr-CA" SetAsCurrent="true" ResetAllSettings="false">
</gs:Locale>
</gs:UserLocale>
</gs:GlobalizationServices>
Все работает, кроме одной вещи, и я не могу понять, почему. По какой-то причине после выполнения моего скрипта. В итоге у меня только один язык клавиатуры (французский канадский), я не могу автоматически добавить макет в США. Я сравнил свой reg файл с планшетом с двумя клавиатурами, которые я хочу (FRCA и ENUS), и я не вижу никакой разницы ...?
Любая помощь приветствуется.