Windows 10

New in Windows 10 2004: Better Language Handling

It might seem like a very long time ago, but at the Microsoft Ignite 2019 conference in Orlando, there was a theater session presented:

THR4002:  Solving Windows 10 feature updates in a multilingual deployment

You can watch the video for all the details, but I want to focus on one specific slide that talks about the improvements coming in the 20H1 release of Windows, which is now available as Windows 10 2004:


The Unattend.xml route

First let’s look at the unattend.xml behavior changes.  To do that, I set up a virtual machine based on the Windows 10 2004 English media (en-us) and then added the Spanish (es-es) language pack to it using DISM, where I had mounted the VHD file and assigned drive letter E: to the Windows volume:

DISM.EXE /image:E:\ /Add-Package /PackagePath:”F:\x64\langpacks\”

After that, I put an unattend.xml into the E:\Windows\Panther\Unattend folder containing this content:


This is similar to the typical unattend.xml that would be generated by MDT, or that you might build yourself for ConfigMgr OSD, specifying that you want the language to be Spanish (es-es) instead of the default of English (en-us).  And then I booted the VM, and as expected the OS ended up in Spanish (with an English keyboard because I was too lazy to look up the InputLocale value for Spanish):


But this is where it gets a little more interesting.  If you look at the international settings with DISM, you can see a slight difference:


In case your Spanish is poor, here’s what my laptop’s English output looks like:


So, the Windows 10 2004 VM is configured with the default system UI language still set to en-US even though all the settings I specified in the unattend.xml specified es-ES.  The default language was set to Spanish as I specified, but the underlying system UI language was unchanged.  That’s the big change: You don’t have to worry about the system UI language when it comes time to install a new feature update using media, where the system UI language needs to match the media’s language.  Perfect, goal achieved.

The OOBE route

If you look at the process I went through above, I installed a language pack CAB file from the Windows 10 2004 languages ISO.  But if I try to do the same basic thing without an unattend.xml (e.g. using Windows Autopilot), I get a different result.  I can still see the added language pack and choose it, but it doesn’t work the same.  (In fact, it generated a “Something went wrong” error with the OOBELANGUAGE page – no idea why that happened, but something to look into later.)

As described above, I need to instead use Local Experience Packs (LXPs):  The original OS language isn’t affected when installing those.  The process for adding an LXP is a little different, again pulling the files needed from the Windows 10 2004 languages ISO:


After adding that and booting up the VM, I can boot up and see the language choices:


And then I can proceed through OOBE (I really need to practice my Spanish skills to know what I accepted along the way, without Autopilot suppressing the screens) and sign in:


Looking at the language settings again (I gave up on finding the slash and dash keys on a Spanish keyboard and just pasted them in from the host):


You can see the system UI language is still en-US, but the user default language is obviously es-ES as “most things” are in Spanish.  (Notice that some of the DISM output is still in English.  That’s what they mean by “partially localized language” in the output – and why LXPs are smaller than the language pack CAB files.)  So again, goal achieved.

The changes in DISM behavior (the third part of the slide above) are very similar in nature to the OOBE changes: use LXPs, get a better behavior when choosing a user default UI language, leaving the system UI language alone.


Since Windows Autopilot uses the OOBE route, the ideal scenario would be to have OEMs add additional local experience packs (LXPs) to their OS images that ship on new devices (at least in the areas of the world where they ship devices with multiple languages preinstalled).  Whether or not they will be shipping devices with Windows 10 configured with LXPs remains to be seen, as devices aren’t yet shipping with Windows 10 2004.

But at the end of the day, most of these changes are being done for scenarios where the OS isn’t being updated from Windows Update or Windows Update for Business, where UUP can be used for a language-neutral experience.  These behaviors matter most with ConfigMgr and WSUS, where UUP is not yet available.

Categories: Windows 10

3 replies »

  1. Nice Article Mike, any word updates for adding languages during a in-place upgrade? Managing languages during IPU has become more difficult with each new version. It would be nice if these changes are applied for existing users as well.