Language Support

Language support can be enabled at two levels, Application level and OS level, depending on the language resources made available on the image.

Languages in UWP Applications

UWP application languages are not limited to the languages included in the OS. In fact, an IoT device that does not trigger shell UI or utilize speech resources can provide a device experience in many different languages through its UWP applications even though the underlying Windows 10 IoT Core OS is built simply in the en-US default mode.

UWP applications must provide the resources for the languages that are required to be supported. Windows.Globalization.ApplicationLanguage APIs can be used to specify the language-related preferences.

See the below sample applications:

Languages in OS

Windows 10 IoTCore kits now include the language resources for the following languages

  • English : en-US, en-GB
  • French : fr-FR, fr-CA
  • Spanish : es-ES, es-MX
  • Chinese : zh-CN

These language resources contain UI strings, speech language and voices (speech synthesis). Windows IoT images can be built with one or more of these resources and they must be specified during the image time and cannot be modified later. Note that UI language related resources are independent than speech language and voice resources.

Specifying UI and Speech resources

In the OEM Input xml file, the required UI and speech languages are specified as shown below

  <SupportedLanguages>
    <UserInterface>
      <Language>en-US</Language>
      <Language>en-GB</Language> 
      <Language>fr-CA</Language> 
      <Language>es-MX</Language> 
      <Language>es-ES</Language> 
      <Language>fr-FR</Language>
    </UserInterface>
    <Keyboard>
      <Language>en-US</Language>
      <Language>en-GB</Language> 
      <Language>fr-CA</Language> 
      <Language>es-MX</Language> 
      <Language>es-ES</Language> 
      <Language>fr-FR</Language>
    </Keyboard>
    <Speech>
      <Language>en-US</Language>
      <Language>en-GB</Language> 
      <Language>fr-CA</Language> 
      <Language>es-MX</Language> 
      <Language>es-ES</Language> 
      <Language>fr-FR</Language>
    </Speech>
  </SupportedLanguages>
  <BootUILanguage>en-us</BootUILanguage>
  <BootLocale>en-us</BootLocale>

Specifying Speech Data resources

In the OEM Input xml file, the required speech data resources are specified as shown below,

    <Microsoft>
       ...
      <Feature>IOT_SPEECHDATA_EN_CA</Feature>
      <Feature>IOT_SPEECHDATA_ES_MX</Feature> 
      <Feature>IOT_SPEECHDATA_FR_CA</Feature> 
      <Feature>IOT_SPEECHDATA_EN_GB</Feature>
      <Feature>IOT_SPEECHDATA_ES_ES</Feature>  
      <Feature>IOT_SPEECHDATA_FR_FR</Feature> 
    </Microsoft>

Note

By default, en-US speech data is included in the image.

Samples

  • See MultiLangSample for multiple languages support
  • See SingleLangSample for fr-FR language with en-US as fallback language.
    • Note that when the boot UI language is changed, the administrator account name is also translated in the boot UI language. So, in fr-FR it is administrateur. See OEMCustomization.cmd

Changing user preferences (language, region, speech and voice)

UWP application can use WinRT APIs to set the region, preferred UI language list, speech language and voice that should be by default used. Once preferred UI language list set, UWP application will try to load the corresponding resources (unless application programmatically prevents that).

If the application doesn’t have the corresponding resources, then fallback resources will be loaded. Similarly, if the OS resources for the preferred languages aren’t part of the Windows IoT image, Windows IoT will use its fallback ones likely English (en-US).

Note

For proper functioning, Cortana requires the region, UI language and speech language to be consistent, e.g.: region FR, UI and speech languages fr-FR or region ES, UI and speech languages es-ES. Cortana uses its own voice, UWP application cannot change it.

IoTSettings.exe

To learn more about changing settings for region and user or speech language to build Cortana enabled products, please read our Command Line Utils documentation.