Windows 10 MUI challenge

The Problem:

Windows 10 (at least with Build 1511) has a nice "feature":
If you setup a Windows 10 that has a MUI integrated (with DISM) and you set the "UILanguage" in the Unattend.xml, the Language of the OS will be converted to the Language of the MUI...

That means, if your Windows 10 Image is English and you install the German MUI in the unattend.xml... you will get a German Windows 10.

The bad side of the story is:

  • Local Accounts and Groups are translated into the Language of the MUI
  • Windows 10 Build Upgrades must have the same Language as the OS Language !! -> You may end in distributing different Languages of an Windows 10 Build Upgrade.
  • there is no way to change it back to the original Language...
    Edit: it seems there are ways to change the OS language by using DISM in WinPE, will test that...

Conclusion

Integrating MUI's and changing the "UILanguage" in the unattend.xml is not the best option in multilanguage environments...

Workaround

  1. Do not set the "UILanguage" in the unattend.xml. You can still integrate the MUI's with DISM as long as the language is not the "UILanguage" in the Unattend-XML.
  2. Create an Application (or Package) for every MUI (I'm using the German MUI as example)

2.2 Create an installation Script that installs the MUI (if the MUI was not integrated with DISM):

cmd /cSTART /WAIT lpksetup.exe /i de-de /p . /r /s

2.3 Create an XML File that configures your Language Settings. The XML Format is documented here: https://msdn.microsoft.com/en-us/goglobal/bb964650

 <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> 

	<!--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>

2.4 Add a second command on your install script to apply the XML-File (in my case: UI.xml):

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

In my environment, the Script returned an Exit-Code of "1", which can be interpreted as a Reboot-Required (If you create an Application, you can add it as an additional Reboot-Code)

You can now apply this Package/Application within your Task-Sequence or as optional Software from the Software-Center.

It will keep the Original OS Language (local security Group names are still English) but installs the MUI and sets the Welcome-Screen and Default-Profile-Language based on your XML settings.

If you want to know the Language of the Operating System, run the following PowerShell command:

([wmi]"root\cimv2:win32_OperatingSystem=@").OSLanguage

If you get a "1033" as Result, your OS-Language is English. Other Codes: https://technet.microsoft.com/en-us/library/cc287874(v=office.12).aspx