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:
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:
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.
Solution
To get the Apps in the correct language we need to change the Language Order.
Then we can check the Store and search for updates and we will get a lot of App Updates…
After that the apps have the correct language set.
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:
- Unattend File specified in this Blog
- Set the International Settings with the above XML File
- 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.
Principal Security Consultant | MVP at baseVISION AGI’m a consultant, trainer and architect for modern workplace and enterprise mobility projects with Microsoft Technologies in the past ten years. I love to push and design the modern workplace based on Microsoft 365 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. Latest posts by Thomas Kurth (see all)
- Microsoft Sentinel ASIM Parser demystified - March 31, 2024
- Enhancing Network Security Insights with IDS/IPS of Ubiquiti Dream Machine Pro and Microsoft Sentinel - March 10, 2024
- Ubiquiti Dream Machine Pro Logs to Microsoft Sentinel - February 6, 2024
3 Comments
Renaud · July 22, 2016 at 17:24
Hi,
We had the same problem here in Lausanne
4 months with premier support to find a solution of a English UI with swiss french keyboard.
Finally we succed with a special input locale value 0409:0000100c
0409:0000100c
en-us
en-us
en-us
fr-ch
0409:0000100c
en-us
en-us
en-us
fr-ch
Hope it helps !
Renaud · July 22, 2016 at 17:25
InputLocale=0409:0000100c
SystemLocale=en-us
UILanguage=en-us
UILanguageFallback=en-us
UserLocale=fr-ch
blog.colemberg.ch | How to create an Easy Tasksequence for Win10 Servicing (inplace Upgrade) · April 21, 2018 at 11:17
[…] Integration of the language, that was installed prior to update. For this, I used a mix from the two solutions from Roger Zander on his blog (thanks for sharing Roger) http://rzander.azurewebsites.net/how-to-change-the-welcome-screen-language-in-win10/ and Thomas Kurth https://blog.basevision.ch/2016/07/windows-10-language-settings-with-store-apps/. […]