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)
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:
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:
# Michael Kaplan on 18 Dec 2004 11:13 AM:
# Michael Kaplan on 18 Dec 2004 11:16 AM:
# Mike Williams on 20 Dec 2004 6:27 PM:
# Michael Kaplan on 20 Dec 2004 6:38 PM:
# Mike Williams on 20 Dec 2004 9:35 PM:
# Michael Kaplan on 20 Dec 2004 11:09 PM:
# 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.
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!)