There is no E in MUI, even if you pronounce it MOO-EE

by Michael S. Kaplan, published on 2007/11/27 10:16 -05:00, original URI:

This guest blog is written by Erik Fortune, the development manager for MUI.

He gave a tutorial presentation at the 31st Internationalization and Unicode Conference (IUC) entitled Writing Win32 Multilingual Applications Using the Windows Vista MUI Technology, in which he mentioned he'd be posting some information/resources here.

I have to mention that Erik is someone whose office I am unable to walk by without him having some relevant story from his past, but he did draw a blank at coming up with a story for the post.

So instead I will put up his picture, which as they say is always worth 1000 words (in this case the 1000 words he did not give me!):

Erik Fortune

When he doesn't have a story, he usually has random music to play, some if which I enjoy and some of which horrifies me. But I wasn't going to try to attach a song to the page either. :-)

Anyway, without further delay, let me present that guest blog post!

First off, I’d like to apologize for the delay in getting these links posted (and for the lack of content for Michael’s weekend readers).  The links have actually been ready for a long time, but we’ve been waiting on the MFC sample code and for me to write something to accompany them.    We’ve decided to stop waiting and just post the code when it’s ready.  It’ll probably take even longer for me to write something interesting1.

I’d also like to thank everyone who attended for your questions and suggestions.  Here in MUI Central Command, we’re trying to figure out how to fit them in both functionally and schedule-wise.

Finally, the slides on the conference CD are out of date.  If you need to refer back to the presentation, please pull the slides from the “late presentations” section of the Unicode website.

And now for some links to more detailed information on various things discussed in the tutorial.

Start off with the "Multilingual User Interface" section on MSDN :

Sample MUI Application
The Windows Vista SDK includes a sample MUI Application that demonstrates many of the techniques covered in the tutorial.   Documentation here:

Indirect Strings
Prior to Windows Vista, it was quite common to store localized strings in the registry, .inf files and so forth.  That leads to all kinds of problems for multilingual systems or distributions, so starting with Windows Vista we recommend the use of MUI indirection.   MUI indirection replaces hardcoded localized strings with references to strings contained in MUI files.

A discussion of the use of MUI indirection for registry stings, shell shortcuts and verbs, MMC snap-in names, service names and much much more can be found here:

Event Logs
In the XML  Instrumentation Manifest that describes your events:

The Message Compiler (mc.exe) uses this XML event description to produce header and localized binary resource files.

As you might expect, there are lots of details.   You’ll find much more information, including examples, in MSDN:

Group Policies
Windows Vista uses XML for group policy descriptions.   Language neutral content in “.ADMX” files refers to localized content defined in “.ADML” files, which live in subdirectories that follow MUI naming conventions (e.g. “%windir%\policydefinitions\de-DE\Policy.adml” contains the localized German strings for “Policy.admx”).

You’ll find overall documentation for using and managing group policy at:

The schema for ADMX and ADML is described at:

And you’ll find an example of creating a custom group policy (including localizable strings) here:

A WMI provider consists of a Managed Object Format (MOF) file and a DLL with provider logic.   Localizable resources are marked with the “amended” qualifier in the MOF file.

Documentation for localizing WMI class information can be found at:

The MFC helper function is still not ready.


1 - Due to brain-freeze when I need to blog on a specific topic and inability to turn off my inner editor, which are two of the reasons I stopped blogging on my own.   The third is that it became counterproductive – I started blogging as a way to vent but eventually wound up searching out things that pissed me off so I’d have something to write about.   Not exactly the most cunning of plans.

Every visible character in Unicode supports MUI in general and this post in particular; the invisible ones are still evaluating the technology

# Cristian Secară on 28 Nov 2007 4:10 PM:

To whom is addressed that tutorial ? The sense of the above post is like "we, Microsoft, are recommending to you (?) that MUI files should be build like this and like that".

Who else is building MUI files other than Microsoft itself for the own software ? I never encountered a non-Microsoft product that uses the "MUI" model Microsoft is using. Most other translations are either simple .ini files or .lng files (plain text, usually ANSI, sometimes UTF-8 with explicit header), or GNU gettext compiled files (UTF-8), only rarely C++ distinctly compiled files (either locked to a single language, or user selectable).

What about LIPs ? (an unfortunate user restricted language translation concept, in my opinion)


referenced by

2011/05/28 MUI and MFC live together in perfect harmony...

2007/12/10 MUI is like your heartbeat; it's important and useful, whether you know about it or not

go to newer or older post, or back to index or month or day