Explaining the Windows XP/Server 2003 Regional and Language Options Dialog

by Michael S. Kaplan, published on 2004/12/11 12:48 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2004/12/11/279998.aspx


(This page was originally posted at http://i18nWithVB.com/win2k.htm but I thought it could use a wider audience)

Explaining the Windows XP/Server 2003 Regional and Language Options Dialog

Disclaimer: This page is not officially sanctioned by Microsoft. If it were, it would almost certainly be more polite. :-)

A lot of work was done to this dialog since Windows 2000, including massive shifts in terminology. Here is the handy-dandy conversion chart of the most important items:

Windows 2000 term

Windows XP/Server 2003 term

Regional Options

Regional and Language Options

Default User Locale

Standards and Formats

Default System Locale

Language for Non-Unicode Programs

Language Settings for System

Supplemental Language Support

There are many other changes, as well. While I do welcome change when there are confusing issues, I am not sure how much I welcome change that others will find to be just as confusing. I'll let you decide how you feel about this particular issue yourself....

Anyway, here are some screenshots for the three important tabs for the dialog:





The first change is obvious -- the settings that used to show up on the first tab are now spread across three of them.

Here is each part, explained:

Language for Standards and Formats - Located in the first tab, these are the preference that you, the user, has for items like date formats, calendar, preferences for text sorting, etc. Now most of these settings can be handled individually by clicking on the Customize button. You can think of this dropdown combobox as a useful way to be lazy and have settings made automatically based on the locale you choose. There are really no standards per se involved (such as sorting), but not everything there is a format so there had to be something else there.

I will talk about the Location stuff some other time.

Supplemental Language Support -- In Windows 2000 this was a list containing various familes of locales corresponding to lanaguage groups, but now most of the support is already installed and turned on. In fact, there are only two groups that are not:

  1. Languages that require complex script support, including Thai, Hebrew, Arabic, Hindi, Tamil, and all the rest of the Indic locales
  2. East Asian languages, i.e. Chinese, Japanese, and Korean

This information is in the second tab and is handled by two checkboxes. These two checkboxes control the installation of all the code pages, fonts, keyboards, etc. so that applications can support the particular language. You will probably be prompted for your Windows CD to install the files that you are in essence requesting.

The top of the second tab handles input methods. I will talk about that more another time.

User Interface Language - You may not have this control on your regional options at all; it is only there if you have MUI (the Multilingual User Interface) installed. This allows you to change the actual language of Windows itself. It has no effect, I repeat no effect, on your installation of Windows otherwise. At all. Period. If you think it will, then cure yourself of this delusion and realize that you do not need MUI to have a multilingual experience on Windows XP and Server 2003!

Language for Non-Unicode Programs (aka Default System Locale) - Located on the third tab, this setting is the one that controls, at the machine level, the locale that will be used for all conversions to and from Unicode for applications without Unicode support (like VB 6.0, for example). If you change the Default System Locale, you will be prompted to reboot afterwards (you may be prompted for your Windows CD first if you need to install some files). But I cannot stress it strongly enough: this is the top control on the third tab. You would not believe how many people mess this up and try to change the language at the top of the first tab under "Standards and Formats"! So think carefully and allow yourself to be one of the people laughing about the confusion, rather than one of the people being laughed at.

Incidentally, it also controls the font "language" that is used for the case of [primarily] East Asian fonts that have more than one name, based on language.

Under this are the various code pages you can install. I recommend you use Unicode and avoiding needing these things. :-)

Default Settings - Although the title is misleading, this checkbox located on the bottom of the third tab is incredibly useful in many situations. What is does is apply any changes you make on any of the three tabs to .DEFAULT, the default user profile (copied for all new user accounts), and several system accounts. In the case of keyboards, it copies all keyboards that have been selected by the given user whether they were selected at this time or not and applies them to the .DEFAULT account. The latter is very useful if you want the ability to switch keyboards in the logon dialog.

This setting does not exist in prior versions, which is a damn shame since people try all the time to e.g. set the default user locale on a web server and expect that change to be applied to their IIS. It does not immediately occur to most people that the setting only applies to the currently logged in user; unfortunately understanding is likely piss off any reasonable person since Windows 2000 does not provide any user interface to resolve the issue. Thankfully, much of the problem is taken care of with this one confusing setting.

That's all for now. Let me know if you have any questions or comments about this page!


# Mike Williams on 18 Dec 2004 6:44 AM:

The important question - well, *an* important question - is when are Microsoft product teams going to figure out the difference between locale, language and location? Windows Media Player v10 grants access to nationally-based music stores on the basis of user locale rather than location. Half the Office downloads on Microsoft.com specify a locale e.g. English(US) as a prerequisite, rather than a language (English); so they'd have you believe for example, that the English (or Irish) spell-checker is ONLY for people with user locale = English(United States). It seems that all the locales of non-English(US) still get very little attention, even after years of complaints from folks in the UK, Ireland, Australia, Canada, New Zealand, Singapore, South Africa, ....

# Michael Kaplan on 18 Dec 2004 11:13 AM:

I have to agree with you on this one -- we have a PM on our team who has been trying to sell the location stuff to all of the product groups that ought to be caring about *it* rather than the user locale....

For the case of neutrals, the problem is a different one -- in Windows, neutral locales do not really exist except for resource loading. When people cannot even get the OS to recognize something they are less likely to trust it....

# Michael Kaplan on 18 Dec 2004 11:16 AM:

Also, a colleague of my once suggested that sometimes it is best to think of Microsot not as one big company; a more accurate model is that of a country with many warring factions that get together every four years to have a good olympic team for the world stage.

:-)


# Mike Williams on 20 Dec 2004 6:27 PM:

Except some of the events only risk injury for the spectators... When I was there, the best description I heard was of 400 start-ups with a single marketing department.

It would be a nice if there were APIs that generated the name of a language from a locale, so that appropriate lists could iterate over that. I swear everyone looks at the Language list inside Word and thinks that's the right way to present a set of languages. For a start it incorrectly sets expectations about the level of support available for each of thse listed locales. For many listed, there is no substantial support, and for many others there is no difference. But it's hard getting that message across in Microsoft.

I can see more of the benefits accruing in the open-source world, where those arguments/discussions are carried out in public rather than having to pull together a bunch in PMs in dozens of areas who really aren't sympathetic to the cause.

# Michael Kaplan on 20 Dec 2004 6:38 PM:

A single marketing department? You must not have gotten around too much -- in my experience one could easily mistake two different marketing teams as coming from rival companies!

For getting the name, LOCALE_SLANGUAGE does well -- it already exists and is used in Windows. I cannot answer for Word and Office but when we point out the invalidity of some entries (which we do) they point out they have shipped that way already. :-(

I am not truly convinced that open source is particularly superior in this case, because in my experience the same mix of smart and dumb, internationally saavy and internationally retarded exist as any other company (including Microsoft). And language support is *never* given the priority is deserves....

# Mike Williams on 20 Dec 2004 9:35 PM:

I got around enough to have worked with you (briefly) on Access 2000/XP :-). Prior to that I remember one marketing department handling a press release from SQL Server to the effect that there would be no relational database built on Windows CE, on the same day as another team (partly housed in the same building) announced Pocket Access and ADO for Windows CE.

I love backward-compatibility of bugs. Point 'em out in a spec-review ("let's get feedback in the beta"), in the beta ("postponed"), for next version ("sorry but we can't change it because X has deployed solutions based on that bug" or "I don't understand the issue, I'm new to this project").

My assessment of the language support is that there are good folks like you scurrying around at one level, and then waaay above is SteveB etc trying to placate large international customers ... but in between are VPs, PUMs and GPMs who really don't give a damn in the scheme of things.

# Michael Kaplan on 20 Dec 2004 11:09 PM:

Yes, I remember. And I remember the fun and games on Pocket Access as well as when they did an encore for SQL Server CE Edition. :-)

A little over two years ago I was told that my becoming an MVP for all of my work in the newsgroups on international support and MSLU was being turned down since folks were worried about how it would make Microsoft look.

This was roughly two days after I was made the offer to go full time at MS, as a developer in Windows Globalization who was expected to keep up the very public presence in newsgroups and conferences. So I guess these sorts of mixed messasges happen all over....

Re: language support -- the face of language support is different, these days. From GPMs like John McConnell who own strategic work on ELKs and LIPs to directors like Julie Bennett (the genius whosed group is behind the ELK amd the Windows side of the LIP) to group managers like Lori Brownell (recently named to the Unicode board of directors) to VPs like Brian Valentine, Will Poole, and Jim Allchin (who were all heavily involved in Starter Edition) to CEOs like Steve Ballmer (who was also involved in Starter Edition and who has promised language support all over the world that our team *will* deliver) to Chairmen/Chief Software Architects like Bill Gates who was also involved in Starter Edition and who sees as clear as any of these others and maybe even more clearly than some that the emerging markets are the next frontier. And all up and down the chain people are getting it.

Its a whole new ball game, Mike. And its truly a pleasure to be a part of it. :-)

# noman on 4 Jun 2009 5:59 AM:

I have one web application created in asp.net. i hosted the website on one american server. As the site was on american server so i did all scripting for date checks and conversion by keeping in mind the format mm/dd/yyyy. Now after one and half year i have switched my site from that server to new server but unfortunatly this new server is in uk and that is why the date format configured on server is dd/mm/yyyy.

As i have uploaded all the things on the server and have made it live as well so it is not possible for me to reinstall the server and change the date format i.e to change it to dd/mm/yyyy.

Now the problem i am facing is server side script is doing date checks and display in dd/mm/yyyy, which is not required.

I trued changing dateformat from global settings also but it didnt work although i was aware intitally also that it work. Because as per my exp i have concluded that somewhere in system the date format got stored at installation time and after that changing that is not possible without re-installtion.

so, if anyone can help me how to change/set the date format in the application to mm/dd/yyyy, without re-installing the server. i think some thing like localize settings will have to do with it, but what i dont know...

# Drewfus on 28 Feb 2010 1:44 PM:

Michael,

you state:

"Default Settings - Although the title is misleading, this checkbox located on the bottom of the third tab is incredibly useful in many situations. What is does is apply any changes you make on any of the three tabs to .DEFAULT, the default user profile (copied for all new user accounts), and several system accounts."

.DEFAULT is not the default user profile, it's the profile used by the logon desktop. The default user profile is stored in (by default!)

%SystemDrive%\Documents and Settings\Default User\NTUSER.DAT

http://blogs.sepago.de/helge/2007/11/19/why-is-almost-everybody-wrong-about-hkudefault/

# Michael S. Kaplan on 28 Feb 2010 1:59 PM:

Um, as I said: "the default user profile (copied for all new user accounts),". That is one of the THREE places it is revelant to.

# Drewfus on 1 Mar 2010 5:07 AM:

Michael,

i misread what you'd said. Er, maybe the coffee hadn't kicked in when i read it. Sorry about that.

# Michael S. Kaplan on 1 Mar 2010 7:44 AM:

No worries - it ain't like they made it easy! ;-)

# Drewfus on 8 Mar 2010 10:26 PM:

I find it easy enough (after a fair bit of reading - including this excellent blog), although some of the regional settings in the GUI aren't quite consistent with the unattend settings.

Obviously, this won't work:

[RegionalSettings]

Language="East Asian"

Nor can the system locale be identified for what it really is (as i understand it) - a code page:

[RegionalSettings]

CodePage="Latin 1"

Nor is there GeoId option:

[RegionalSettings|Unattend]

Geoid=Australia

I guess that's what os upgrades are for. :-)

Btw, i came across this interesting page about adding new timezones to sysprep.inf.

http://blogs.technet.com/askcore/archive/2009/07/13/adding-new-timezones-to-windows-xp-windows-server-2003-sysprep-inf-deployments.aspx

I suppose i'm hoping for a couple of other "undocumented" methods for the regional settings section.

# Michael S. Kaplan on 8 Mar 2010 10:28 PM:

The reason for the inconsistency is that the UI model changed in XP/Server 2003 (from Windows 2000) but the interface did not....

# Drewfus on 9 Mar 2010 6:08 PM:

I see.

Another scenario/question...

I have an XP image with all language groups installed. Before installing this image on any particular system, i want to backup various regional settings including preloaded language:keyboardLayout combinations.

Is it enought to simply backup and restore (per user)

HKEY_CURRENT_USER\Keyboard Layout\Preload

or should i really be doing it via

control.exe ...

[RegionalSettings]

InputLocale=locale ID:keyboard layout ID,...

One (other ;-)) thing i'm a little confused by is the format of the InputLocale key. According to this page

http://technet.microsoft.com/en-us/library/cc978687.aspx

"The keyboard layout code consists of the locale ID , which identifies the geographic variation of the spoken language that the user has chosen, and a 4-digit code that indicates whether the keyboard layout is the default layout for the locale."

Similar information here

http://msdn.microsoft.com/en-us/goglobal/bb688135.aspx#eve

I interpret this as meaning that InputLocale is formatted as

LCID:KbIdLCID

That is, the first LCID is apparently redundant. This also makes me think that preloading via the registry key will do the trick and that mapping keyboard layout IDs back to valid LCIDs isn't necessary, assuming that the appropriate language groups are installed.

# Michael S. Kaplan on 9 Mar 2010 8:05 PM:

Actually, it is:

LangId1:LangId2<DeviceId>

The two LangId values do not have to be the same, so they may not be redundant.

Note that KLID == LangId2<DeviceId>.

# Drewfus on 9 Mar 2010 9:12 PM:

Now looking at

http://msdn.microsoft.com/en-au/goglobal/bb895996.aspx

i notice that for Australia, with LCID of 0c09, the only valid LangId1:KLIDLangId2 combo is

0c09:00000409

That is, you have to specify en-us (0409) as LangId2 (same for en-nz). Presumably this wouldn't work

0c09:00000c09

though i can't see why "in theory".

Compare to en-uk, where LangId1=LangId2

0809:00000809

even though both languages are part of the Basic group.

For en-ca, it can be either

1009:00000409,

1009:00011009,

1009:00001009

Just a little curious of these apparent "inconsistencies". But mostly interested in my previous question about backing up and restoring LangId1:KLIDLangId2 combos via the registry.

# Michael S. Kaplan on 9 Mar 2010 9:57 PM:

Well, the values for keyboards are hardcoded values, each representing an actual layout DLL. Don't get hung up on LANGID values matching 100%  every time, since they often don't and in some cases never have.

Re: the backup, using the registry is not supported here; if you do it, you are on your own....

# Drewfus on 10 Mar 2010 4:40 PM:

Your right, i shouldn't get hung up on the details as long things "just work", although it is that sense of curiousity into the inner workings of things that partly drives the interest in IT admin, and without which the industry would probably not be the same.

Now i think i can use the Go Global table to "reverse engineer" the data in

HKEY_USERS\SID\Keyboard Layout\Preload

back to a valid InputLocale key, and use the Locale value under

HKEY_USERS\SID\Control Panel\International

to create a valid UserLocal key.

With these two values i can build a regopt.txt per user, and apply the values in the supported manner, perhaps via Active Setup.

In case your wondering, the target market is international students and business people, newly arrived immigrants and tourists.

Don't stop me while i'm having fun learning!

# Michael S. Kaplan on 10 Mar 2010 6:03 PM:

Again I truly recommend against the registry here. If you run into any problems then don't forget I warned you, okay? :-)

# Drewfus on 10 Mar 2010 8:35 PM:

So i've now read your posts

Why are the HKL and KLID of the keyboard different?

and

How do I get the @!#$% name of the keyboard?

and i'm a little wiser for it.

Also, ive heeded your warnings.

And now i'm going to go ahead and try anyway...

:-)

# NeetaBiswas on 26 Mar 2010 3:42 AM:

Michael,

In the Default Settings paragraph you have mentioned that setting the default user locale on a web server does not apply to IIS, does that mean that checking default user account settings check box on the Advanced tab applies the locale to IIS, this there any msdn document which states this.

I have a confusion regarding from where IIS take the locale value when "Enable anonymous access" is checked?

The IIS appears to take the value of the local administrator account specified as the windows user account for anonymous access sometimes, sometimes it takes the locale of the default profile.

Is there any way to view the current locale and change it and expect a consistent behavior?

Is the explanation given in KB 306044 applicable to IIS 6.0 and Windows 2003 also

Does the registry entry VarConversionLocaleSetting decide the behavior of IIS to select locale in Windows 2003 and IIS 6.0

# Michael S. Kaplan on 27 Mar 2010 11:38 AM:

No versions of IIS use the settings that come out of the first tab of regional options without that advanced tab checkbox.

Some versions of IIS use that checkbox's effect on the .DEFAULT locale (others use a separate account).

# NeetaBiswas on 28 Mar 2010 10:41 PM:

Thanks Michael,

Please could you provide any MSDN document as reference which specifically tells from where IIS 6.0 takes the locale from.

I need to provide it to the customer before telling them to check the "Apply to default" checkbox on the advanced tab

# Michael S. Kaplan on 28 Mar 2010 11:15 PM:

I do not know of one, sorry. The KB article pretty clearly references .DEFAULT which would handle the <= Server 2003 case. The only one that doesn't follow those rules is .Net, which adds its own account that it runs stuff under....

# NeetaBiswas on 29 Mar 2010 4:23 AM:

Is there a way I could view the Locale value used by IIS 6.0

Does HKEY_USERS\.DEFAULT\Control Panel\International\Locale show the same locale as that used by IIS?

# Michael S. Kaplan on 29 Mar 2010 8:03 AM:

Didn't I just say that? :-)

Because of this, that checkbox WILL help in the non-.Net case.

Though I do not know if this applies to 6.0 or not. You'll have to try!

# NeetaBiswas on 30 Mar 2010 10:41 PM:

The reason I asked that question is because at the customer end one machine has HKEY_USERS\.DEFAULT\Control Panel\International\Locale set to English(Australia) and the date is displayed correctly in dd-mm-yyyy form, where as on the other machine with English(Australia) the date is displayed in mm-dd-yyyy form and on changing HKEY_USERS\.DEFAULT\Control Panel\International\Locale to English(US) by checking Default Settings the date displays as dd-mm-yyyy form.

What could be the reason for such behavior

# Michael S. Kaplan on 30 Mar 2010 10:52 PM:

Most likely one person's machine was shipped with one configuration, and the other with the other (most people do not go to Regional Options and use that checkbox, so most likely this is how they have always been).

But that is not really relevant anymore -- now you just need to fix it. And you know how, now. :-)

Mahima Natarajan on 11 Nov 2011 9:48 PM:

Hi Michael..I want a non-unicode program "Toolbook" to display hindi. I don't have the option "Hindi" in the Select a language for Non-Unicode program under the Advanced tab. How do I include it? Im a novice and its urgent. Please help.

Michael S. Kaplan on 14 Nov 2011 8:30 AM:

Answered here.

FFS on 29 Jun 2012 12:43 AM:

TMC....BKL


referenced by

2011/11/14 A Hindi default system locale isn't gonna happen

2010/03/25 Q: Why do the small black squares disappear? Hint: The answer isn't complicated, it's complex...

2007/04/28 When the system locale is the display language

2006/12/11 IsComplexEnoughForYou?

2005/12/28 Getting rid of your extra yen

2005/12/09 And they sort that list HOW, exactly?

2005/11/04 Sticky keys vs. Reading Order

2005/02/21 Give me a [word-]break!

2005/02/18 Ready... set... Reboot!

2005/02/16 Language groups -- the vestigial tail of NLS

2005/02/01 What is my locale? Well, which locale do you mean?

2004/12/13 Regional Options is not intuitive (Duh!)

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