404 Tech Support

Adding Languages to Windows Language Bar Through the Registry

I can only read and speak one language but for some reason I am frequently involved in adding more languages to the computers at work. I know how to add languages to Windows XP and yesterday I figured out how to do it solely through the Registry. I was working with a Mandatory Profile so I was able to just load the hive and make the changes but there’s no reason this information wouldn’t allow you to make an .adm template for pushing the additional keyboard out through a Group Policy.

The Windows language settings are user-specific, which seems sensible, and when making changes through the Control Panel you can click a button to apply the changes to your account and the Default user account. Modifying the Default user account will only affect new accounts that log into a machine however and there isn’t a way to make a global change to all accounts. Working with the Registry (and a little scripting) could allow you to do that.

In Windows XP, to have the Language Bar showing (either on the Task Bar or its own floating menu) you can find these Registry values set as follows at:

HKEY_CURRENT_USERSoftwareMicrosoftCTFLangBar

+ ExtraIconsOnMinimized = 1
+ Label = 1
+ ShowStatus = 4
+ Transparency= ff

That location has changed in Vista/7/Server 2008, though typically the bar will be shown if more than one keyboard is active.

Now to add the additional keyboards we first need to look up the code for each keyboard that you want to add. In the Registry, if you browse to:
HKEY Local MachineSystemCurrentControlSetControlKeyboard Layouts
you’ll see a list of keys starting with ‘00000’. By selecting one of those keys you can see in the right-pane the value for Layout Text will tell you what keyboard it is. For example, 00000409 is US English and 0000040c is French (France) keyboard. Browse through that list to find the code for the language that you need.

Once you’ve figured out the code you need, go to HKEY_CURRENT_USERKeyboard LayoutPreload

There you can add a new String value. Its name should be the next sequential number after the numbers already in the list. You can change the numbers of other values already in the list to affect the order that the keyboards are displayed in from the language toolbar. Once you’ve decided on an order, set the data for the new value equal to the code you found in the previous step.

Once the user logs off and logs back in, the new language will be showing in the Windows Language Bar or in the case of the mandatory profile, they’ll have the languages the next time the profile is loaded.