User:Alvinhochun/Localization

From ReactOS Wiki
Jump to: navigation, search

My notes on Internationalization and Localization.

Sub-topics

Glossary

MUI

Short for Multilingual User Interface.

XP: MUI Pack(s) can be installed only on specific base version (in the case of CJK packs: the English build), which seems to enable certain hacks in the system in order to support loading of localized resources. The MUI files are installed under %SystemRoot%\mui\FALLBACK\<LCID>\ with the filename <MODULE_NAME_WITH_EXT>.mui. TODO: Check if it is really called LCID A combobox is also enabled in the "Languages" tab of intl.cpl for selecting the display language.

Vista and 7: Language packs can be installed via Windows Update for Ultimate and Enterprise editions. The display language can be changed via a combobox in the "Keyboards and Languages" tab of intl.cpl. The mui files are installed under the <LANGUAGE_NAME>\ directory in the directory where the module is located, with the filename <MODULE_NAME_WITH_EXT>.mui. Unlike XP, most of the modules only contain the language-neutral resources instead of those native to the installed SKU TODO: What is a SKU?. Language-specific resources are all inside the MUI files. Despite this, the language of the installed SKU is still a thing for backwards-compatibility. [Citation Needed]

Microsoft apparently has a patent on this: US Patent 6252589

MUI file

A file in the PE executable format, except only containing resources.

TODO: Document more on this and the differences for before and after Vista.

User Locale, System Locale, UI Language

Note: I am unsure if the information here is accurate.

User Locale

Date formats, number formats, digit substitution, etc., for the current user or "system wide".

When the setting is applied "system wide", it is actually applied to the following user profiles[1]:

  • The NetworkService profile
  • The LocalService profile
  • The Default User profile (used as the template for all new user accounts created on the machine)
  • The .DEFAULT profile (used for the LocalSystem account)

Registry location: HKCU\Control Panel\International\Locale

Use SetLocaleInfo to set it.

System Locale

Also called "Language for non-Unicode programs" under intl.cpl since XP.

Sets the ACP, OEMCP and MACCP. Also changes stuff about font linking and font substitution. Not sure if it fiddles with the input languages and IMEs.

GDI loads localized font names according to this setting.

Registry location: HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\Default

UI Language

The language that the UI is displayed in. Affects resource loading. See #MUI

It can also be set for the current user and "system wide" like the user locale.

Registry location: HKCU\Control Panel\Desktop\MultiUILanguageId and MUILanguagePending (Note: Only applies when MUI packs are installed.)

Installed MUI languages are under HKLM\SYSTEM\CurrentControlSet\Control\Nls\MUILanguage, with the 4-digit LCID as subkey name and value "1".

When MUI packs are installed, without these two subkeys the UI language will be English. I tried changing multiple registry settings (including InstalledLanguage) but it is still English. Not sure where language-specific SKUs takes the language setting from.

References