Windows 10 Language Settings with Store Apps

In the last year we experienced a lot of problems with Windows 10 language settings and the Microsoft Store Apps. Like Roger Zander described in his blog, we would like to have an English operating system but an activated German MUI. We are living in Switzerland, so we need to have the Swiss German keyboard Layout set. Additionally, we need to have de correct language order to get the Store Apps in the correct language.

This means, we need the following Order:

Correct Language Order
Sidenote: français (Suisse) is added as soon as de-CH is specified as System Locale. But this isn’t a problem.

If we try to do this with the following command:

control intl.cpl,, /f:"UI.xml" 

And the following Xml File:

 
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"> 
<!--User List--> 
<gs:UserList> 
<gs:User UserID="Current" CopySettingsToSystemAcct="true" CopySettingsToDefaultUserAcct="true" />  
</gs:UserList> 
<!--Display Language-->  
<gs:MUILanguagePreferences>  
<gs:MUILanguage Value="de-DE" />  
<gs:MUIFallback Value="en-US" /> 
</gs:MUILanguagePreferences>  
<!--System Locale--> 
<gs:SystemLocale Name="de-CH"/> 
<!--User Locale--> 
<gs:UserLocale>  
<gs:Locale Name="de-CH" SetAsCurrent="true" ResetAllSettings="false"/> 
</gs:UserLocale> 
<!--input preferences-->  
<gs:InputPreferences>  
<!--de-CH-->  
<gs:InputLanguageID Action="add" ID="0807:00000807" Default="true"/>  
<!--en-US-->  
<gs:InputLanguageID Action="remove" ID="0409:00000409"/>  
<!--de-DE-->  
<gs:InputLanguageID Action="remove" ID="0407:00000407"/>  
<!--fr-CH--> 
<gs:InputLanguageID Action="remove" ID="100c:0000100c"/>  
</gs:InputPreferences>  
<!--location-->  
<gs:LocationPreferences>  
<gs:GeoID Value="223"/>  
</gs:LocationPreferences> 
</gs:GlobalizationServices> 

In the Windows Setup I used the following Unattend settings:

 
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<InputLocale>de-CH</InputLocale> 
<SystemLocale>en-US</SystemLocale> 
<UILanguage>en-US</UILanguage> 
<UserLocale>de-CH</UserLocale> 
<UILanguageFallback>de-DE</UILanguageFallback> 
</component>  

The result is not as expected. With the above values, we specified de-DE as MUI Language, en-US as MUI Fallback Language and de-CH as Keyboard Layout, we will get the following Experience:

Incorrect Language Order

Windows is setting de-CH at the top of the list and specifies it also as the display language. In fact, there is no display language for de-CH. If you try to set de-CH as MUI language, you will receive an error in the event log.

As you can see, there is also no possibility to move the entries in the new Control Panel.

The main issue with these settings is, that the Store Apps are still in English, because they are not available for de-CH, which is the primary Language. The Apps are downloaded in the next available Language in the List. It is not possible to get an Order of de-CH, de-DE, en-US with command line tools.

Universal Apps are not translated

Solution

To get the Apps in the correct language we need to change the Language Order.

Correct Language Order

Then we can check the Store and search for updates and we will get a lot of App Updates…

Microsoft Store is updating all apps

After that the apps have the correct language set.

Unversal Apps are translated

Now there is only the question, how can we modify the Language Order during OSD with a Script? There are no tools available and I decided to create a PowerShell Script for it.

There are three locations which need to be updated in the registry:

  • Current User
    Path: HKCU:\Control Panel\International\User Profile
    Name: Languages
  • Default User Profile
    Path: HKCU:\Control Panel\International\User Profile
    Name: Languages
  • Welcome Screen
    Path: HKEY_USERS\.DEFAULT\Control Panel\International\User Profile
    Name: Languages

It is important, that we only change the order and don’t add additional Languages to this value. So I created a Script, which can be executed in the Task Sequence after you have applied the correct settings with the “control intl.cpl” method I mentioned earlier.

 Set-LanguageOrder.ps1 -LanguageOrder "de-CH,de-DE,en-US"

This Script validates the provided Order and will change the registry keys to have the specified order and attaches all not provided Languages at the end.

Example 1:

Registry Value: “de-CH,en-US,de-DE,fr-CH”
Provided LanguageOrder to the Script: “de-CH,de-DE”
Result: “de-CH,de-DE,en-US,fr-CH”

Example 2:

Registry Value: “de-CH,en-US,de-DE”
Provided LanguageOrder to the Script: “de-CH,de-DE,it-IT
Result: “de-CH,de-DE,en-US,fr-CH”
It-IT is not added because it was not in the list before.

Result

The result is as expected when using the following things:

  1. Unattend File specified in this Blog
  2. Set the International Settings with the above XML File
  3. Set the Language Order with my Script

The Microsoft Store Apps are switching to German, as soon the Store updates them.

The Script can be downloaded here.

I’m happy to get feedback about your experience with Language Settings and Windows 10.

Follow me

Thomas Kurth

Principal Workplace Consultant at baseVISION AG
I’m a consultant, trainer and architect formodern workplace and enterprise mobility projects with Microsoft Technologies in the past eight years. I love to push and design the modern workplace based on Windows 10, EM&S and O365 for my customers which is the only answer for the current security threats, agile world and the fast-changing business requirements of my customers. Important for me is to simplify and automate the operational processes, because there are the highest costs.

Enterprise Adminstrator ExpertMCTCMCE
Thomas Kurth
Follow me