by Michael S. Kaplan, published on 2011/11/14 07:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2011/11/14/10236814.aspx
So over in my Explaining the Windows XP/Server 2003 Regional and Language Options Dialog post (from 2004), Mahima Natarajan asked (this weekend):
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.
I don't usually jump in to answer questions that are urgent since I'm not an official support venue.
But I figured since the answer wasn't going to be the desired one, I'd let down fast and easy rather than drawing it out....
I'm not familiar with Toolbook specifically, but I'll assume it isn't Unicode based on the description.
As the post itself explains:
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.
The list specifically filters out "Unicode-only" languages like Hindi, because there is neither an ACP nor an OEMCP that can support these languages.
In fact, looking at the Unicode-only locales, their ACP is 0 (which is CP_ACP's numeric value) and their OEMCP is 1 (which is CP_OEMCP's numeric value).
Thus there is really no way to support Hindi on Windows outside of Unicode....
In fact, if you try to force the change in the registry, you can make your system unbootable and then it will force you to roll back to a "last known good" choice. And yes, I have had to help several people to untoast their systems after trying to reverse engineer the default system locale and unsuccessfully to make this change!
Unicode is the answer here -- the only supportable answer, in fact.