Hi again. I thought I better publish another column before I started enjoying too much of the summer weather.In this column, I will address:
How can I get my hands on a copy of the Windows 2000 or Windows XP MultiLanguage User Interface version?
multitudes of questions
Dear multitude,
I am glad you asked. I get this question all the time and thought it would be a good time to pull all the information together.
First of all, let me state something that I am constantly repeating, "Any version of Windows 2000 (and the forth coming XP) is multi–lingual." That is, on any version of Windows 2000/XP, you can create and display text and documents in any of the over 60 scripts that they support (i.e. Create Japanese text files on the English version, Arabic on the Japanese version, Thai on the Arabic version, etc. I hope you get the picture.).
Now with that said, you may ask, "What is the MultiLanguage User Interface (MUI) version of Windows 2000/XP?" The MultiLanguage Version is a separate, standalone release of Windows 2000 (in Windows XP it will just be a set of Language Packs), which ship as both Professional and Server editions. It allows the user interface language of the operating system (i.e. menus, dialogs, etc.) to be changed according to the preferences of individual users. If you want to know more about Windows MUI, check out the MUI FAQ or several articles found in other parts of GlobalDev.
The MultiLanguage Version has two important advantages:
| • | It allows large corporations to roll out Windows 2000/XP worldwide with a single install job. Local users can then select the user interface language or it can be set by Group Policy for Organizational Units. |
| • | It allows users of different languages to share the same workstation; one user might choose to see system menus, dialogs and other text in Japanese, while another user logging onto the same system might prefer to see the corresponding text in French. |
The Windows 2000 MultiLanguage Version is NOT:
1. | A replacement for completely localized different language versions of Windows 2000 (the install language is English, so files such as INFs and the registry remain in English). |
2. | A retail product. It is only sold through Volume Licensing programs like Microsoft Open License Program (MOLP / Open), Select, and Enterprise agreement. |
And this is where the confusion has come, "If it is not a retail product, how do I get it?" First of all, if your organization haa Volume Licensing agreement with Microsoft, you can get Windows MUI through your representative, and to make things easier for you and the representative, here are the SKUs:
| SKU | Description |
B23-00481 | Windows Pro 2000 English/MultiLang Disk Kit CD w/Boot Disks |
B23-00808 | Windows Pro 2000 English/MultiLang Disk Kit CD Upg Boot Disks |
E85-01367 | Windows XP Professional MultiLanguage Pack Set 1 (German, French, Japanese, Chinese Simplified, Chinese Traditional, Korean). Disk 1 of 2. |
E85-01367 | Windows XP Professional MultiLanguage Pack Set 1 (Arabic, Hebrew, Spanish, Italian, Swedish, Dutch, Brazilian Portuguese). Disk 2 of 2. |
E85-01368 | Windows XP Professional MultiLanguage Pack Set 2 (Norwegian, Danish, Finnish, Russian, Czech). Disk 1 of 2. |
E85-01368 | Windows XP Professional MultiLanguage Pack Set 2 (Polish, Hungarian, Portuguese, Turkish, Greek). Disk 2 of 2. |
E85-01479 | Windows XP Professional MultiLanguage Pack Set 3 (Slovak, Slovenian, Romanian, Croatian, Bulgarian, Estonian, Lithuanian, Latvian, Thai). Disk 1 of 1. |
If you don't have access to a Volume Licensing program, but would still like use the OS for development and testing purposes, there is still hope. In fact you might already have a copy, but don't realize it. Here is the good news: if you have either a Professional or Universal subscription to MSDN, you should already have a copy of Windows 2000 or Windows XP MUI. Here are the entries from the official MSDN inventory list:
| ID | Date | Disk # | Description |
X08-75476 | Apr 02 | 0013.1 | Windows® 2000 Versions |
X06-11523 | Jan 01 | 0014 | Windows® 2000 MultiLanguage Version, Disc 2 |
X06-11524 | Jan 01 | 0015 | Windows® 2000 MultiLanguage Version, Disc 3 |
X08-57712 | Dec 01 | 1112 | Windows XP Multilingual User Interface Pack, Disc 1 |
X08-57713 | Dec 01 | 1113 | Windows XP Multilingual User Interface Pack, Disc 2 |
X08-74702 | Apr 02 | 1361 | Windows XP Multilingual User Interface Pack, Discs 3 and 4 |
X08-83444 | Jun 02 | 1692 | Windows XP Multilingual User Interface Pack, Disc 5 |
To install MUI, first install the English version of Windows 2000 from disk 13, then run the muisetup.exe on Disc 14 (disc 2). This will then prompt you for which User Interface Language/Languages you want to install.
Don't have a subscription, check out MSDN about how to obtain one.
Besides the Windows 2000 MUI and upcoming Windows XP MUI
Language Packs, Microsoft has MultiLanguage Packs for Office XP
that you can find more out about at:
http://www.microsoft.com/office/ork/xp/three/intb01.htm
As you can see, my associates in the OS and Office groups are hard at work to make the Global IT's job a little easier.
We have a web application that runs from NT 4.0 or Windows 2000 server. We determine the clients language by requesting the HTTP_ACCEPTP_LANGUAGE from the client. For clients running 9x or Windows NT, the procedure to set the language has been to go to regional settings and on the regional settings tab they would pick from the drop down the language they need. After making this change you could right click on the Internet Explorer icon, go to properties, click on language from the general tab and find the language selected through regional settings has propagated through to IE.
I find that with Windows 2000 Professional, making a change in the regional options does not always make the change in IE as before but have been unable to determine what conditions allow this to happen. Any help is appreciated.
Regional unsettling
Dear Unsettling,
That's a good question and fortunately relatively easy to answer:
Internet Explorer on all platforms will default for the accept language header setting to the user locale of the current user – this is what you change in Regional Options. But, as soon as the user goes into the options of Internet Explorer and changes the language settings, this new setting becomes the only valid setting and the user locale is not used anymore.
If in the registry under HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International a value called "AcceptLanguage" exists, it means that the user has changed the language settings in Internet Explorer. As described above, it also means that the user locale is ignored.
I also want to add that using the OS–Regional–Setting Locale (User Locale) as a way to set the browser's content language value is something I don't agree with. Just as an example: let's say a user speaks only English, but is working in Japan. Although the user would set the User Locale to Japanese to get the date and time format, and the currency symbol used in Japan, the user would still like to see English content, but if you use the User Locale to set the browser's content language, the user would only get Japanese content. This doesn't seem very user friendly, does it? What I recommend is that you leave the User Locale alone and only change the browser's Language preference.
If you would like to learn more about each of the different types of locales Windows 2000/XP have, please check out one of my earlier answers called Locale 101.
Do case mappings performed by _mbsupr, and used by _mbsicmp depend on the regional settings, or just the codepage?
For instance, when using codepage 1252, is 0xe1 ("Latin small A with acute") always uppercased to 0xc1 ("Latin Capital A with Acute"), or are there perhaps some regional settings that would cause it to be uppercase to something else, say "Latin Captial A"?
Does CharUpper do something more "region sensitive" than _tcsupr?
Jonathan
Dear Jonathan,
The safest and easiest way to do uppercasing is to use the Win32 API CharUpper. CharUpper will always use "user locale" information to do the upper casing. The system locale or the system's default code page does not affect this operation. To learn more about locales, check out: http://www.microsoft.com/globaldev/drintl/columns/009/default.mspx#locale
As for the c–rune time functions (_strupr and _mbsupr) that you mentioned, their behavior really depends on the version of your c–runtime libraries and might even give you unexpected results. By default, c–runtime functions use the "c" locale information, but depending on the version, you might be able to use the setlocale function in order to do your uppercasing with regards to information specific to a given locale. To learn more on that, check out the MSDN documentation on the setlocale() function.
To summarize, use the Win32 functions for upper and lower casing, CharUpper/CharLower, to allow for automatic user locale dependent results. Hope this helps.
We are particularly interested in a standard way to detect and handle JIS encodings for MIME headers. The spec for MIME does not allow for JIS encoding of strings and only accepts Q and B escaping. It looks like this is a modification to the standard and if so has anyone documented how they thought it should interoperate.
Roy
Certainly JIS is the only acceptable choice for Japanese mail messages. And yes, in the header you need to use the RFC 1522 syntax which supports QP or Base64 encoding, but any charset including JIS is acceptable. JIS already is a 7-bit encoding, so the Q or B encoding actually makes no difference because it would affect only 8-bit bytes.
The MIME spec DOES allow JIS encoding as well as any other character encoding (=="charset"). Look at RFC 1522 to see the syntax by which the header specifies the charset and the encoding used.
In the MIME sense "charset" is the character encoding, and "encoding" sits on top of that, further manipulating the bytes. JIS in the MIME sense is a charset, QP and Base64 are encodings.
Hope this clears it up.
Last March Microsoft announced a new component, Microsoft Layer for Unicode (MSLU), that would help developers create single binary Unicode based applications that could run on both Windows 2000/XP and Windows 9.x (95/98/me). Do you know when it will be available?
anxious developer
Dear Anxious,
First let me explain what MSLU is for those who don' know.
We at Microsoft have always evangelized the importance of basing your World–Ready applications on Unicode, and Windows 2000/XP are excellent platforms to do just that. The problem in the past was the difficulty in supporting a Unicode application on Windows 95/98/ME; developers had to support those customers as well. Because those platforms do not have the native Unicode support provided by the NT family of operating systems, it was just easier to write non–Unicode applications.
However, the Microsoft Layer for Unicode on Windows 95/98/ME Systems (MSLU) helps solve this important challenge. This component provides a layer over the Win32 API on Windows 95/98/ME so that you can write a single Unicode version of your application and have it run properly on all platforms.
(Of course, some features require built–in support from the operating system. For example, you will not find your application able to support the input of Unicode-only languages like Hindi or Georgian – those are features that require Windows 2000 or Windows XP. But by using MSLU, you will be able to support all of these new features on the NT platform and still be able to ship that same version of your application that will run on Windows 95/98/ME.)
MSLU is part of the July 2001 Platform SDK. That means it is available, now! You can get the MSLU dll (uincows.dll) and documentation online. The dll is at:
http://go.microsoft.com/fwlink/?LinkId=14851
And the documentation is part of the updated SDK core documentation which is found at:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Once you are at the sdk site, click on "sdk update" and then check the box for the core documentation to down load.
Once you have this installed, you can then get your questions answered either first trying the Microsoft newsgroup at either: Microsoft Communities or News:microsoft.public.platformsdk.mslayerforunicode
As always, if you don't get any answers there (but most likely you will), you can send me your questions.
See you next time!
Dr. International
Windows International Division