Deploying Localized Surface Applications

If your Microsoft Surface application will be released in countries or regions around the world, you should consider adapting your application and its content to meet the needs of the locales where your application will be released. This process is called localization. For more information about how to localize your application, see Localizing Applications. For an example of a localized application, see the Controls Box sample application.

When you deploy localized Surface applications on devices made for Surface, you must consider how the applications appear in Launcher and administrators must configure the devices made for Surface for the locales where they will be deployed.

Creating Localized Versions of the Application Registration XML File

When you register a Surface application, you specify the title, description, and application icon that appear in Launcher. For more information, see Registering Standard Applications. To specify an application's title and description in another language, you must do the following:

  1. Create a copy of the application's XML registration file with the same file name.

  2. In the new file, find the following XML namespace declaration in the <ss:ApplicationInfo> tag:


    Update the XML namespace to support localization by changing it to this:

  3. Enter the localized title and description.

  4. Enter the path to any localized icon image file in the <IconImageFile> tag.

  5. Remove the <ExecutableFile> and the <Arguments> elements from the new file. These elements are not allowed in a localized application registration file. This information is always obtained from the original (language-neutral) registration.

  6. Create a subfolder in the folder where you keep your non-localized application registration XML file, and name the new subfolder in accordance with the locale that your application supports (for example, a de-DE folder if your application supports German). For example, in the Controls Box SDK sample, the application registration XML file is contained in the InstalledAppInfo project folder, and the localized registration file is in the InstalledAppInfo\es-ES folder. When the Controls Box sample is built, the es-ES folder is copied to the same location as the application executable and the application registration XML file.

    For a list of the supported locale names, see the UILanguageName table in the following "Microsoft Surface Localization Registry Settings" section.

  7. Copy your localized registration file to the new subfolder.

    You do not need to create a shortcut to the localized registration file. Only the shortcut to the non-localized application registration XML file must be copied to the %PROGRAMDATA%\Microsoft\Surface\v2.0\Programs folder when your application is deployed.

If your application uses object routing to display a menu when a tagged object is placed on the screen, you can also localize the text that is displayed in the object routing menu. For more information, see Localizing the Text that Appears in the Object Routing Menu.

Preparing Devices Made for Surface for Localized Applications

To display your localized application on a device made for Surface, the administrator must set the locale of the device.

The Windows 7 operating system uses a globalized architecture that enables you to establish settings that are applicable to a culture and locale. There are three types of settings that you can apply:

  • The interface language setting (UILanguageName) controls the language that is used to display tool bars, menus, dialog boxes, and so on.

  • The date and number format setting (LocaleName) affects how numbers, currencies, dates, and time are displayed.

  • The input language setting (InputLanguageID) changes the keyboard layout and the characters that certain keys generate. For example, users can use this setting to enter accented characters that are applicable to a specific locale.

These settings are independent of each other. For example, you can set the interface language to English and set the date and number format and the input language to use settings from a different culture.

Surface uses globalization settings that are equivalent to Windows 7, but these settings are separate from the operating system settings. For example, you could perform administrative functions on a device made for Surface (such as installing applications) by using the English language interface of Windows 7 while the Surface interface language displays German for Launcher, the out-of-order screen, and so on.

Microsoft Surface Localization Registry Settings

To change the Surface localization settings, you must modify the following registry values, which are located in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Surface\v2.0\Global\InternationalSupport key. If the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Surface\v2.0\Global\InternationalSupport does not exist, you create it.

  • The UILanguageName registry value controls the interface display language for Surface. You can set this registry value to any UI language that the .NET Framework supports. Surface is localized into following UI languages.


    UILanguageName value Language






    English (United States)










    Norwegian (Bokmål)





    The preceding table shows the languages that the Surface software is localized into. If you set this value to a valid value that is not listed above, the GlobalizationSettings class will reflect your setting, enabling you to load resources for that language in your application. The Surface software will determine which language to use for Surface Shell and the out-of-order screen by using .NET Framework rules. For example, if you specify fr-CA (which is not a supported Surface locale), Surface Shell and the out-of-order screen will use fr-FR. If the Surface software cannot determine a language to use, Surface Shell and the out-of-order screen use English (United States).

  • The LocaleName registry value changes how Surface displays numbers, currencies, dates, and time. You can specify any locale name that the .NET Framework supports.

    For a full list of locale identifiers, see Locale Identifier Constants and Strings on the MSDN web site.

  • The InputLanguageID registry value controls the layout and key mapping of the on-screen keyboard (SurfaceKeyboard). This entry must be one of the following values.


    InputLanguageID value Keyboard layout


    US English




    United Kingdom


    United Kingdom Extended


    Canadian Multilingual Standard




    Canadian French


    Swiss French


    Belgian French


    Belgian (Comma)




    Swiss German




    Latin American











Missing or Invalid Localization Settings

If a localization registry setting is missing or invalid, Surface uses default and fallback values. For example, if you specify an unsupported language for the UILanguageName key, Surface automatically uses the default interface language for the operating system and adds the following warning to the event log.

Failed to set specified Surface UI language: xx-YYY.
Using operating system default language 'en-US'.
Additional information: Culture name 'xx-YYY is not supported.

Similarly, if you specify an invalid locale for the LocaleName key, Surface automatically uses the default system locale.

If the registry setting for the input language (keyboard layout) is invalid or missing, Surface determines the input language by looking for the closest match based on the Surface locale. If it cannot find a match, the Surface software sets the input language to English (United States) (0x409).

Ultimately, the resource loader of each individual component (Launcher, Surface applications, and so on) determines which resources to load, based on the Surface UI language and the resource loading fallback rules from the .NET Framework.

See Also

Did you find this information useful? Please send us your suggestions and comments.

© Microsoft Corporation. All rights reserved.