Localizing the Microsoft Surface Shell
The Microsoft Surface is a Windows Vista computer running the Microsoft Surface Shell. This shell is by default localized for US English. It’s possible to localize for other locales, but there is no configuration screen to set the desired localization.
This post will summarize the different steps to localize the Surface shell.
Microsoft Surface Device vs. Microsoft Surface Simulator
The settings work for both the Microsoft Surface device and the Surface Simulator.
Note for x64 machines (Running the SDK)
If you’re running the Surface Simulator on a x64 machine (see my post about "Installing the Microsoft Surface SDK on Windows 7 x64") the registry entries are slightly different.
For x86:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0
For x64:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Surface\v1.0
All my examples in this post will use the x86 path.
Setting the Surface Shell interface language
With service pack 1 the Shell now supports 10 UI languages.
| Language | UILanguageName value |
|---|---|
| Danish | da-DK |
| Dutch | nl-NL |
| English (United States) | en-US |
| French | fr-FR |
| German | de-DE |
| Italian | it-IT |
| Korean | ko-KR |
| Norwegian (Bokmål) | nb-NO |
| Spanish | es-ES |
| Swedish | sv-SE |
To set the required language you need to edit the registry.
Look for the following key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
Change the UILanguageName value into the desired language name you find in the table. For example to set the language to Dutch you enter "nl-NL".
Restart the shell
The modified registry entry to localize the Surface Shell language.
Close button with caption "Close everything" in English (default).
Close button with caption "Alles sluiten" in Dutch (localized).
Setting the Surface Keyboard mapping
There are 19 supported keyboard mappings.
| Keyboard layout | InputLanguageID value |
|---|---|
| Belgian (Comma) | 0x1080c |
| Belgian French | 0x80c |
| Canadian French | 0×1009 |
| Canadian Multilingual Standard | 0×11009 |
| Danish | 0×406 |
| French | 0x40c |
| German | 0×407 |
| Italian | 0×410 |
| Korean | 0×412 |
| Latin American | 0x80a |
| Norwegian | 0×414 |
| Spanish | 0x40a |
| Swedish | 0x41d |
| Swiss French | 0x100c |
| Swiss German | 0×807 |
| United Kingdom | 0×809 |
| United Kingdom Extended | 0×452 |
| US English | 0×409 |
| US-International | 0×20409 |
To set the desired keyboard mapping you need to edit the registry.
Look for the following key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
Change the InputLanguageID value into the desired keyboard mapping you find in the table. For example to set the shell to Korean you enter "0×412" (Hexadecimal).
Restart the shell
The modified registry entry to localize the Surface Keyboard mapping.
Surface Keyboard with US English mapping (default).
Surface Keyboard with Korean mapping (localized).
Setting the Surface Date and Number formatting
For date and number formatting you can use all locales supported by the .NET Framework. The complete list can be found on the Language Identifier Constants and Strings MSDN page.
Just combine the primary language, for example: Dutch (nl), with the sublanguage, for example Netherlands (NL): nl-NL.
To set the desired date and number formatting you need to edit the registry.
Look for the following key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
Change the LocaleName value into the desired formatting locale. For example to set the formatting to Dutch you enter "nl-NL".
Restart the shell
The modified registry entry to localize the date and number formatting.
Date formatting in US English (default).
Date formatting in Dutch (localized).



