Multilingual User Interface

The core feature of MUI is the user-defined, system settings for preferred language that can be used/shared by all applications on a computer.

To be MUI-enabled, an application need only store user interface assets as language-specific resources and use LoadStrIng to load them at runtime.

MUI also supports storing user interface assets as separate, single-language files which provides for development and deployment flexibility.

MUI also provides system functions that allow for custom and extended localization behavior.

The following optional capabilities of MUI can be implemented if desired: The design of MUI attempts to provide a common way to store application localization information that alleviates limitations of more traditional and monolithic designs for localization such as including all languages in the application logic files (i.e. resources).

Language-neutral (LN): Describes something that conveys a meaning regardless of the languages of the viewer, such as an image without text or other localizable aspects LN resource: a resource that is shared by and installed for all language versions of the application LN file: Windows binary containing the application logic and language-neutral resources Language-specific (LS): Describes something that has significantly different meaning based on the languages of the viewer.

Applications can also use these preferences, and via MUI-enabled system functions (such as LoadString) the use is automatic and transparent (requires no MUI-specific code to use).

An application can modify these language preference lists (via SetThreadPreferredUILanguages and other functions) in order to influence the behavior of MUI.

For example: MUI provides support for localized resources stored in Windows binary (a.k.a.

Example using LoadString: This retrieves the address of the resource text character buffer which is not guaranteed to be null terminated.

Oddly, MS documentation for LoadString does not mention its interaction with MUI -- use of language preference.

Its function reference page describes its interaction with the user's language preference when parameter dwLanguageId is passed as 0.

[4] MS documentation recommends storing UI assets as resources since MUI fully supports retrieving from this storage, but it notes that MUI supports any other file format, such as XML, JSON or flat text file.

[5] This implies that using the resource retrieval aspect of MUI is not required for an application to be MUI-enabled.

In order to take advantage of the deployment flexibility: To store localized assets in formats other than resource, the application must implement a mechanism for reading assets at runtime based on the language preference system settings (see GetThreadUILanguage).

In other words, the application loads UI assets based on the system language preference settings without using LoadString.

The application might leverage the MUI file-per-language location and naming convention by using GetFileMUIPath.

While both display menus and dialogs in the targeted language, only a localized version uses translated file and folder names.

[citation needed] Up to Windows XP, MUI packs for a product are applied on top of an English version to provide a localized user experience.

Windows Vista enhanced MUI technology to separate the English resources from the application logic binary files.

The MUI technology is covered by an international patent titled "Multilingual User Interface for an Operating System".

[21] The inventors are Bjorn C. Rettig, Edward S. Miller, Gregory Wilson, and Shan Xu.

Comparison of Windows 7 Start Menu with English selected in the left image, and Japanese selected in the right.