Windows has supported multiple UI languages for over a decade, but nobody knew it


In the early days of Windows, there was a separate version of Windows for each language, and once you decided to install, say, the French version of Windows, you were locked into using French. You couldn't change your mind and, say, switch to German. The reason for this is that there were bits and pieces of language-dependent information stored all over the system.

One obvious place is in file names. For example, a shortcut to the calculator program was kept at %USERPROFILE%\Start Menu\Programs\Accessories\Calculator.lnk on US-English systems, but %USERPROFILE%\Startmenü\Programme\Zubehör\Rechner.lnk on German systems. The name of the physical file system directory or file was displayed to the user as the name of the menu item. This means that if you started with an English system and simply replaced all the user interface resources with the corresponding German ones, you would still see a folder named Accessories on your Start menu, containing a shortcut named Calculator, even though they should now be displayed as Zubehör and Rechner.

The registry was another place where language-dependent strings were stored. For example, file type descriptions were stored in plain text, which meant that if you installed an English system, then HKEY_CLASSES_ROOT\txtfile had the value Text Document, and that's the value shown to the user under the Typ column even though the user had switched the user interface resources to German.

For Windows 2000, an effort was made to move all language-dependent content into resources so that they could be changed dynamically. If you need to store a language-dependent string anywhere, you can't store the string in plain text, because that would not survive a change in language. You have to store an indirect string and convert the indirect string to a real string at runtime, so that it mapped through the user's current user interface language. It was quite an effort identifying all the places that needed to be changed to conform to the new rules while still ensuring that the new rules were backward compatible with old code that followed the old rules.

For example, you couldn't just say "To register a language-aware file type friendly name, write an indirect string to HKEY_CLASSES_ROOT\progid. For example, set HKEY_CLASSES_ROOT\txtfile to REG_SZ:@C:\Windows\system32\notepad.exe,-469." If you did that, then applications which retrieved file type friendly names by reading directly from HKEY_CLASSES_ROOT\progid (instead of using functions like SHGet­File­Info) would end up showing this to the user:

Name Type Modified
House pictures @C:\Windows\system32\zipfldr.dll,-10195 11/16/1998 4:09 PM
notes @C:\Windows\system32\notepad.exe,-469 11/23/1998 1:52 PM
Proposal @"C:\Program Files\Windows NT\Accessories\WORDPAD.EXE",-190 10/31/1998 10:32 AM

instead of

Name Type Modified
House pictures Compressed Folder 11/16/1998 4:09 PM
notes Text Document 11/23/1998 1:52 PM
Proposal Rich Text Document 10/31/1998 10:32 AM

Designing and implementing all this was a major undertaking (that's what happens when you have to retrofit something as opposed to designing it in from the beginning), and to keep the test matrix from growing quadratically in the number of supported languages, a decision was made early on to support dynamic language changes only if the starting language is English. So yes, you could have both English and Dutch resources installed, but you have to start with English and add Dutch and not the other way around.

Mind you, the implementation in Windows 2000 was not perfect. There were still places where English strings appeared even after you switched the user interface language to Dutch or German, but things got better at each new version of Windows. Unfortunately, pretty much nobody knew about this feature, since it was marketed to large multinational corporations and not to your random everyday users who simply want to change the user interface to a language they are more comfortable with.

For Windows 2000 and Windows XP, you still had two ways of installing Windows with a German user interface: You could either install the English version and then add the German language pack (the fancy Windows 2000 multilingual way), or you could install the fully-localized German version of Windows, just as you always did. In Windows Vista, fully-localized versions of Windows were dropped. From Windows Vista onwards, all versions of Windows consist of a base language-neutral version with a language pack installed on top.

While it's true that access to the feature has improved in more recent versions of Windows, the feature has existed for over a decade. But of course, that doesn't stop people from claiming that it's a "new" feature. Don't let the facts get in the way of a good story.

Comments (30)
  1. SimonRev says:

    And every once in a while you get a post packed with little tidbits of information that may be useful one day (I have never had to play with localization myself, but I suspect I will one day).

    I hope the next couple of blogs are more details about what had to be done (such as how you solved the HKEY_CLASSES_ROOTtxtfile problem).

  2. gedoe says:

    For the French declaring something to be new to the world when it becomes available to them is a normal way of behaving :P

  3. RobertWrayUK says:

    In the third paragraph, "Typ column" > "Type column"?

  4. Menno says:

    @Robert Wray: 'Typ' is german for Type.

  5. Troll says:

    And who claims it's a new feature? :) The Windows geeks always knew about this. Maybe you should stop saying "nobody" and start saying "Joe Average". And this feature is still out of reach because MS keeps it exclusive to Enterprise and Ultimate editions. MUI should be there in Home Premium and above.

  6. Alex says:

    I would have loved them marketing it to end users right away. Well actually, I couldn't have cared less about marketing it properly. But just having the option of installing the English version only, without the German localization (or even better, remove the lanugage pack later, as the OS is mostly preloaded anyway) would have been great. One thing I always did in Linux was to never install German localization files. In Windows I never had this option, until I switched from XP to Windows 7 and found that even my pre-installed Windows 7 on my new laptop allowed me to choose English as my interface language. Finally! Bad to know I could have had this 10 years ago …

  7. Jim says:

    Raymond described the right behavior for the Window XP, but not for window 7. In Window 7, when I installed the English and try to bring the other language, like Chinese. I found a great difficulty to display the characters for the OS interface, do not know why. Maybe window 7 was changed for the language support procudure?

  8. Ben Voigt says:

    @Troll: I suspect it's the writers and editors of "technology-for-the-masses" magazines (and their online counterparts) that Raymond is gently rebuking for the misinformation.

  9. Windows may have supported MUI for a long time, but it wasn't until Vista that regular users could get their hands on it (with Ultimate and the Language packs), wasn't it?  Before that you needed a volume license.

  10. David Walker says:

    The tech writer clearly said that with Windows 7, Microsoft has finally "joined" (those other vendors and *nix operating systems) in offering multiple language interfaces for their operating systems.

  11. Paul says:

    Well, if you had to have the English version installed in order to be able to change the language, the feature did not exist for all the people who had any non-English version installed, did it? So the ability to change the OS language is "new" for all of them.

    [Now you're just rationalizing via nitpicking. The article was written in English. English-language users have had this feature since 2000. (And the article didn't say "new for non-English users"; it just said "new". It'd be like when PayPal expanded to Japan, writing an article *in English* saying "There's a new service called PayPal!" and never mentioning the fact that it had been available in the United States all along.) -Raymond]
  12. skSdnW says:

    I remember installing the English IE4 shell update on a non-English Win95 system, ended up with a nice mix of the two.

    @SimonRev: Just check the registry or MSDN yourself, they added the optional FriendlyTypeName…

  13. Trevor says:

    Is it not time we people from the UK had a version in English (or British English as you would say)? I should like 'favourites' and licence as a noun with a c.

    [already covered a few years ago. -Raymond]
  14. Trevor says:

    Yes, I did read it; however I believe the conclusion was that the US market would consider our British spellings wrong, and the UK market is more tolerant to US spellings. It is sad that our UK differences are going to be lost and I believe MS is helping to pave the road to oblivion. I should certainly be prepared to pay more for a British English version. I raise the point again because the post suggests that it is now relatively easy to add new languages thanks to the MUI.

    [Technically all you need is a MUI. But procedurally, it's much harder. As noted in the original article, you need to organize a committee to standardize terminology and obtain appropriate government sponsorship in order to qualify for LIP status. -Raymond]
  15. steveg says:

    #trevor: evolution hurts. The British (and the rest of the world that avoided Webster's bastardisations) have nothing on the Portugese, though. They're now 3rd cousins to Brazil who drove most of the recent Portugese-language spelling reform.

  16. Yuhong Bao says:

    "Windows may have supported MUI for a long time, but it wasn't until Vista that regular users could get their hands on it (with Ultimate and the Language packs), wasn't it?  Before that you needed a volume license."

    Yep, I think michkap's blog have a few articles talking about it.

    "And this feature is still out of reach because MS keeps it exclusive to Enterprise and Ultimate editions. MUI should be there in Home Premium and above."

    One reason it isn't in Home editions is so that MS can price Windows differently in different locales, in an attempt to solve one of the biggest reasons of piracy. Often they even restrict activation to certain locales.

  17. Myria says:

    Now we just need to remove the "A" versions of API calls from Win32 to force remaining application developers to support Unicode.  I'm tired of having programs blow up because I installed them in a directory whose name cannot be represented in the system code page.

  18. Jolyon Smith says:

    @Myria – removing the ANSI API wouldn't force app developers to "support Unicode" – it would force them to work in Unicode whether they know how to support it or not.  Which isn't the same thing.  Proper "Unicode Support" isn't just about using UTF16 everywhere.

  19. Mark says:

    Trevor: one of the great things about English is its lack of standardisation.  Kids learn that the spellings they see aren't authoritative or universal, and therefore are less worried about using a "received" orthography.  Would you also want a MUI for the tens of dialects in the UK?

  20. ender says:

    Windows may have supported MUI for a long time, but it wasn't until Vista that regular users could get their hands on it

    OEM versions of Windows XP usually came with either language packs preinstalled (and you could choose them in the Language applet in Control Panel), or included CDs with language packs (this makes me wonder: I have several of such CDs – some let you install a single language only, which once installed is automatically applied for all users, and you can't switched back to English, while other CDs allow installing multiple languages, which each user can then pick individually in Control Panel).

    Also, I wish Windows localization would support proper plural forms – right now it seems to only support one/many distinction, which is not enough for languages such as Slovenian.

  21. ender says:

    …and I forgot to add "Why the difference" to the second paragraph in my post above.

  22. Paul says:

    @Mark

    I'd pay for a Yorkshire version.

    "Empty T'Recycle Bin"

  23. US says:

    @Myria: That's what Wince did!

    @Yuhong Bao: Changing language is the ultimate feature an os can have!

    And, as you all concluded, American Edition is the best edition!

  24. Worf says:

    Yeah, all my WinCE days of building just made me use wide strings, and the use of mbstowcs and wcstombs.

    The fun part was when using different API sets – you got a skinny string but had to pass in a fat one, then you got a fat one and had to make it skinny again. Some calls had this happen several times as they traversed from application down to the kernel…

    So, how did Microsoft solve the file hierarchy thing? If you started out with en_US, then n stalled French, what happens to Program Files and other directories?

  25. hagenp says:

    "From Windows Vista onwards, all versions of Windows consist of a base language-neutral version with a language pack installed on top."

    …with the usual definition of

    "language-neutral" == "US American English"

  26. ender says:

    So, how did Microsoft solve the file hierarchy thing? If you started out with en_US, then n stalled French, what happens to Program Files and other directories?

    Very confusingly. From Vista onwards, the file and directory names are always in English, but Explorer shows localized names. Maybe it looks pretty, but just about everybody I know (me included) was confused by this at one time or another (especially since the file list shows localized name, but the input boxes only accept on-disk names, and there's no indication why typing what you see doesn't work).

  27. Alex says:

    Oh and Office allows you to install language packs too. However, they cost money. I can't normally get an English version of office here in Germany. The English language pack costs an extra 27EUR. Are you crazy? English is the language the software is created in. I should not pay anything extra for downloading the_source_language, should I?

  28. ender says:

    @Alex: buy the German version of Office, then download the English trial version and activate it with the CD-key that you bought.

  29. Rick says:

    Do realise that after changing the language pack, you can not install service packs or new Internet Explorers like you are used too. I succeeded in changing a dutch Windows 7 to the english version, than SP1 came out and the boot would hang on a language related error. This seemed to be common knowledge, just like the multiple UI thing?

  30. ender says:

    @Rick: you can only change the language on Enerprise and Ultimate SKUs (on Ultimate you can install them through Windows Update, then switch them per-user in the Control Panel, and this will not cause any problems).

    On any other version of Windows, you're stuck with the language you installed with (and various hacks to change the language later are exactly that – hacks). If you want a different language version of Windows on non-Ultimate, get an install DVD in that language and do a clean install (though according to Microsoft this is not legal – you're supposed to install and use only the language you bought, unless you have Ultimate).

Comments are closed.

Skip to main content