Dr. International has another round of questions and answerers for you. It may seem like a re-occurring theme, but yes the Doctor is always getting questions about keyboards. This set is no different, plus there are questions about changing locales on the fly, fonts and converting ISO 636 language codes into Windows LCIDs and converting back again.
| Where do Polish keyboards come from? | |
| Where do Office 2000 IMEs come from? | |
| Where do Fonts come from? | |
| Locale on-the-fly switching | |
| ISO639 Language id conversion to LCIDs and back again |
I am using Windows 2000 Professional (based on the NT technology). To my dismay, there is no Polish keyboard available when I want to use Microsoft Word or e-mail in Microsoft Outlook. From time to time I would like to write in Polish and obviously I cannot. Would you please let me know how this situation can be remedied?
Keyless in Illinois
Dear Keyless,
Dr. International has some good news for you. Because you are using Windows 2000, you have all the things you need to input Polish. (Windows 2000 has the capability to handle over 126 different languages of which Polish is just one of these). Here is what you need to do:
1. | Go to Start -> Settings -> Control Panel -> Regional Options |
2. | Under the "General" Tab make sure that "Language settings for the system" section's Central Europe check box is marked. If not check it and then exit. Your system may ask you for your Windows 2000 installation CD to get files it may need. |
3. | Once the system has installed the necessary files go back to Regional Options and click on the "Input Locales" tab. |
4. | In the Installed input locales, press the "Add..." button. |
5. | In the Input locale field, choose Polish. |
6. | In the Keyboard Layout/IME field, choose either the Polish (Programmers) keyboard or the Polish (214) keyboard. |
7. | Press "OK" |
8. | Press "OK" in the Regional Options dialog box. |
9. | You should now have a Dark Blue box appear in system tray at the bottom of your screen. Inside the box should be 2 characters. Most likely they will be "EN" for English. |
10. | Now get into either Word or Outlook where you want to write Polish. |
11. | Click on the Blue box mentioned in #9. It should now give you a list of languages that you can do input with. Choose Polish. |
12. | The Blue Box should now have "PL" for Polish in it, and you should be able to input Polish using your standard keyboard. |
Note to see where all the Polish keys are on the keyboard layout you can go to:
http://www.microsoft.com/globaldev/reference/keyboards.aspx
Then choose which keyboard you want to display. Also Dr. International has instructions on how to print these keyboard layouts out. See:
http://www.microsoft.com/globaldev/drintl/columns/007/default.mspx
The good Doctor hopes that this prescription meets your needs.
I've been having trouble loading the IMEs supplied on the Office Proofing Tools CD for Chinese and Korean on Windows ME (English version).
I eventually managed to load a Japanese IME by copying the IME directory from the CD onto my hard drive. But this didn't help for the others.
I also can't figure out how to set the keyboard to, say, Arabic or Russian (I have loaded the right stuff from the CD, but I am not presented with a selection for these keyboards).
Can you tell me why?
Thanks!
Keyless in the UK
Dear UK-Keyless,
My friends in the Office group said that you need to run the "global" setup for IME from the CD on English platforms. You will find this under the \Extras folder, look for the "global" folder. (e.g. EXTRAS\IME\KOREAN\GLOBAL) This folder contains the setup executable, which can be run on non-matching language platforms.
For your Arabic needs, you need to install the Arabic language support from IE5 to get a keyboard. Officially, Office2000 does not support Arabic on WinMe, but you never know how anything works unless you try it. B^)
As for the Russian keyboard these are the steps to install it.
1. | Choose Add/Remove Programs from the control panel |
2. | Choose Multilanguage from Window components |
3. | Check the Cyrillic check box. |
Your machine will now install the files necessary to handle Russian. Be prepared, you many need your WindowsME setup CD. Make sure you let your computer reboot to get all file properly installed. Now you need to do the following:
1. | Choose the Keyboard Icon from the control panel. |
2. | Click the Language tab. |
3. | Click the Add button. |
4. | Choose Russian in the drop down box |
5. | OK all the way out to Desktop. |
You should now see the Blue 'EN" box in your system tray at the right-most-bottom of your screen. Click on this when you are in Office 2000 and then you should be able to choose Russian for your input.
Hope this helps.
I just want to ask you about how to get Korean fonts. I had one, but they got erased when I set up something.
Fontless
Dear Fontless,
As a general rule, having Korean fonts are not enough to have Korean language support (that applies to any language). That's why Microsoft does not distribute fonts by themselves.
If you use Windows 2000, to restore the files you have deleted, uncheck the check box for the Korean language in the list of language settings for the system (in the "Regional Options" applet), restart your machine and then select it again. All missing files will be restored on your hard drive.
Otherwise, if your OS is not Korean-enabled by itself:
| • | If you need Korean support in Internet Explorer and Outlook Express, you may get it at http://www.microsoft.com/ie. |
| • | If you have Microsoft Office with Korean support and have removed part of the files, you may restore them from your Office LanguagePack CD (Language Pack CD2 if you use Office 2000). See more on the Office web site at http://www.microsoft.com/office |
I have an application where one of my customer requirements is the GUI updated immediately when the user's language changes via the control panel. In addition to language, the same is true for date formatting, time, numbers, metric vs. English, etc.
I've scoured all of the old WM_ messages, read about hooks, shell extensions, control panel applications...
Nothing seems to pop out at me, as to how my application can determine if and when any of these Control Panel settings have changed (aside from polling ::GetLocaleInfo(...) often).
Is there some callback that can get hit when the Regional Settings are modified?
Thanks.
Switchless
Dear Switchless,
Okay, lets look into those changes that you are interested in one by one:
1. | UI Language: I assume that you are referring to Multilingual UI version of Windows 2000. Well, in this case the user needs to log-off and log-on back to the system in order for changes to take affect. That means basically that a new instance of your app needs to start. All you need then is to get the new UI language of the OS and load the appropriate resource DLL within your application. You can find more info on that at: http://www.microsoft.com/globaldev/articles/muiapp.mspx |
2. | Changes in "user locale" that would affect the formatting of date/time/numbers... These changes get applied on the fly. All top windows will get a WM_SETTINGCHANGE. wParam of this WM might have no information depending on the case, but the lParam would be set to "intl". |
Hope this does help.
Environment: The web development environment consists of using ASP and ASP components (Java COM objects). Use DHTML and JScript and occasionally VBScripts. IIS server on NT or Win2000. Client is Ineternet Explorer.
Scenario: Currently the COM object uses the default system locale and formats the data (numbers and dates) and sends (xml) them to clients (IE) which displays the data.
Question: I need to figure out a way to retrieve the locale of the user (anywhere in the world using IE) and pass it to COM on the servers so that it would format data based on the locale of the client before they send them to the client. The closest I have come is the page code provided by the Session object. Is there any way to find the locale of the user?
Thanks for your help.
Id-less
Dear Id-less,
Unfortunately, at the moment JavaScript does not have this functionality. The following article: http://msdn.microsoft.com/workshop/languages/clinic/scripting080999.asp describes why it is so. Still you may call a short VBScript script to determine it in your client - even if the rest of the code is JavaScript.
Another way to find the user locale of your client may be by calling on your server the code described at Knowledge Base Article 229690. After SetLCID is called, locale-dependant functions (like Date or FormatCurrency) will return results formatted according to proper locale settings. The problem with this code, though, is that you have to update it manually when new locales are added on the clients.
To convert LCIDs back to ISO standards you can use the GetLocaleInfo API:
| • | GetLocaleInfo with LCTYPE LOCALE_SABBREVLANGNAME will return the two letter ISO639 language code. |
| • | GetLocaleInfo with LOCALE_SABBREVCTRYNAME will return the three letter ISO 3166 country code. |
| • | Then you can concatenate them to create RFC 1766 codes. |
Well that's all for now. Remember that Dr. International is matchless when it comes to finding answers to your global development questions, so keep them coming.
See you next time!
Dr. International
Windows International Division