Skip to content
Mar 22 / Michaël Hompus

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

Screenshot displaying the modified registry entry to localize the language of the Shell.

The modified registry entry to localize the Surface Shell language.

Surface button displaying "Close everything" (English) as caption.

Close button with caption "Close everything" in English (default).

Surface button displaying "Alles sluiten" (Dutch) as caption.

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

Screenshot displaying the modified registry entry to localize the mapping of the Surface Keyboard.

The modified registry entry to localize the Surface Keyboard mapping.

Keyboard using US English mapping.

Surface Keyboard with US English mapping (default).

Keyboard using Korean mapping.

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

Screenshot displaying the modified registry entry to localize the formatting of date and time values.

The modified registry entry to localize the date and number formatting.

Date and time formatted in US English: "Monday, March 22, 2010 12:00:00 AM".

Date formatting in US English (default).

Date and time formatted in Dutch: "maandag 22 maart 2010 0:00:00".

Date formatting in Dutch (localized).

Leave a Comment