Wednesday, 14 July 2010

Language Pack installation on Windows 7 Professional

There is a lot of information on the 'net about how to persuade Windows 7 Professional (or Home Premium) to accept language packs. This is the route I followed to convert a laptop bought abroad to en-US:

I downloaded the language pack installation from Microsoft using the URLs kindly listed on the Sevenlizator site. This produces an .exe file which when run creates a lp.cab in the working directory which you need to grab quickly before it gets deleted. On my Windows 7 Home Premium, the installer failed without so much as an error message, probably because it detected that this version doesn't support language packs.

Once you have the lp.cab file you can use the GUI lpksetup or the command-line tool dism to install it:

# dism /online /add-package /packagepath:lp.cab
This will require a reboot. You can also use dism /online /get-intl to list the currently installed language packs.

It is now possible to change the locale of the boot and OS load process, but this wasn't necessary in my case because curiously the locale changed after installing the language pack:

# bcdedit /set {bootmgr} locale en-US
# bcdedit /set {current} locale en-US
To find the strings {bootmgr} and {current} I used bcdedit which lists both the available identifiers and the current settings. This affects the "Starting Windows" message that is displayed at system startup.

Next, you might want to change the boot process to the new locale using bcdboot:

# bcdboot %windir% /l en-US
I'm not sure what this affects and I don't know how to find out what the current setting is.

Now for the hard part: actually making the system accept the new language pack. As is to be expected, the GUI is missing from the "Regional settings" Control Panel in versions which don't support language packs. So it comes down to the Registry and you. After playing around fruitlessly with HKCU\System\Control Panel\Desktop\MUILanguagePending for a while I came to the conclusion that the code dealing with this key does not appear to be active either in my version of Windows 7. So I followed the advice given in multiple places to just change what I believe to be the default system language:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language]
"InstallLanguage"="0409"
"Default"="0409"
I have not worked out yet how to modify the language on a per-user basis in a cut-down version of Windows 7.

Finally, in order to change the language displayed for the current user, the following key might be modified:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
; The value is the string "en-US".
"PreferredUILanguages"=hex(7):65,00,6e,00,2d,00,55,00,53,00,00,00,00,00

I cannot confirm that Microsoft's validity check fails after installing a language pack. On my system, everything seems to be working smoothly.