Skip to content
/

Localizing the Microsoft Surface Shell

The Microsoft Surface (the table, not the tablet) is a Windows Vista computer running the Microsoft Surface Shell. This shell is by default localized for US English.

It is possible to localize for other locales, but there is no configuration screen to set the desired localization.

This article 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 are 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.

LanguageUILanguageName value
Danishda-DK
Dutchnl-NL
English (United States)en-US
Frenchfr-FR
Germande-DE
Italianit-IT
Koreanko-KR
Norwegian (Bokmål)nb-NO
Spanishes-ES
Swedishsv-SE

To set the required language you need to edit the registry.

  1. Look for the following key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. 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.
  3. 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 layoutInputLanguageID value
Belgian (Comma)0x1080c
Belgian French0x80c
Canadian French0x1009
Canadian Multilingual Standard0x11009
Danish0x406
French0x40c
German0x407
Italian0x410
Korean0x412
Latin American0x80a
Norwegian0x414
Spanish0x40a
Swedish0x41d
Swiss French0x100c
Swiss German0x807
United Kingdom0x809
United Kingdom Extended0x452
US English0x409
US-International0x20409

To set the desired keyboard mapping you need to edit the registry.

  1. Look for the following key
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. Change the InputLanguageID value into the desired keyboard mapping you find in the table. For example, to set the shell to Korean you enter 0x412 (Hexadecimal).
  3. 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.

  1. Look for the following key
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\InternationalSupport
  2. Change the LocaleName value into the desired formatting locale. For example, to set the formatting to Dutch you enter nl-NL.
  3. 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).