Geoff Chappell - Software Analyst
The install language is what MLLoadLibrary defaults to when choosing which MUI satellite library to load.
On Windows 2000 and higher, the install language is just the system default UI language. Indeed, this identity of the concepts is cemented into the SHLWAPI version 6.00 from Windows Server 2003 and Windows Vista and higher, such that SHLWAPI no longer has its own internal procedure GetInstallLanguage but simply calls the standard API function GetSystemDefaultUILanguage. Builds of version 6.00 from Windows XP and Internet Explorer 6.0, and all earlier versions back to 5.00, retain the separation but when they find themselves executing on Windows 2000 or higher, they end up evaluating the install language just by calling the standard API function GetUserDefaultUILanguage, if this is available as an export from KERNEL32.
When these earlier builds execute on other operating systems, they make their own determination of the install language from the registry. Of course, the install language is assumed not to change, and so this discovery is done just the once and is then remembered. The defining registry value is:
Key: | HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{89820200-ECBD-11CF-8B85-00AA005B4383} |
Value: | Locale |
Data for this value is a two-character code for the install language. The function accepts as many as 3 characters of string data, including a terminating null, or 3 bytes of data (which the function will interpret as characters). The following table shows for each recognised code the language ID as returned by the function and the corresponding language name:
Code | Language ID | RFC 3066 |
---|---|---|
AR | 0x0401 | ar-SA |
BR | 0x0416 | pt-BR |
CN | 0x0804 | zh-CN |
CS | 0x0405 | cs-CZ |
DA | 0x0406 | da-DK |
DE | 0x0407 | de-DE |
EL | 0x0408 | el-GR |
EN | 0x0409 | en-US |
ES | 0x0C0A | es-ES |
FI | 0x040B | fi-FI |
FR | 0x040C | fr-FR |
HE | 0x040D | he-IL |
HU | 0x040E | hu-HU |
IT | 0x0410 | it-IT |
JA | 0x0411 | ja-JP |
KO | 0x0412 | ko-KR |
NL | 0x0413 | nl-NL |
NO | 0x0414 | nb-NO |
PL | 0x0415 | pl-PL |
PT | 0x0816 | pt-PT |
RU | 0x0419 | ru-RU |
SK | 0x041B | sk-SK |
SL | 0x0424 | sl-SI |
SV | 0x041D | sv-SE |
TR | 0x041F | tr-TR |
TW | 0x0404 | zh-TW |