Starting with Windows 10 1803, Microsoft has begun to replace language packs (LPs) in .cab format with Local Experience Packs (LXPs). You can also add these AppX packages via the store. They will change language management fundamentally for admins. Only Windows Server 2019 will keep .cab files for the time being.

Microsoft traditionally differentiates between LPs and language interface packs (LIPs) when it comes to multilingual operating systems. The former are complete LPs for important markets, such as the US, Germany, France, China, and Spain.

These also have features on demand, such as handwriting recognition, spell checking, and text-to-speech.

Selection of language features in the settings app

Selection of language features in the settings app

On the other hand, LIPs only contain a partially translated interface for less widely used languages or smaller markets, and they require a regular LP as a basis (see this overview).

All LPs for Windows 10 1903 as LXPs

In the past, Microsoft made the language files available in .cab format. If required, they can be integrated offline into a Windows image using DISM. With Windows 10 1803, however, the migration to LXPs began. These files are available in AppX format, and you can therefore obtain them also from the store.

You can add LXPs to the OS via the store

You can add LXPs to the OS via the store

Since version 1809, LIPs are no longer available as .cab files but only as LXPs. Users can download the .iso images containing all languages supported by Windows 10 from the Volume Licensing Service Center (VLSC) or from My Visual Studio (formerly MSDN). For version 1903 it also ships several regular LPs as LXPs, and all of them are available in the store too. But for the time being, they are additionally available as .cab files on the .iso.

The .iso file with the LPs now contains all languages as LXPs

The .iso file with the LPs now contains all languages as LXPs

Integrating LPs into a Windows image

This juxtaposition of formats, installation sources, and separate versions for each release of Windows 10 makes the situation confusing. Admins who want to add additional LPs to a Windows image before deployment can choose between .cab files and LXPs for the May update.

Each release of Windows 10 requires its own version of the LPs

Each release of Windows 10 requires its own version of the LPs

An installation of LPs by the admin is mainly for companies that do not want their users to get apps from the Microsoft Store themselves. For integrating the .cab version into an image, you can still use DISM with this pattern:

Dism /Add-Package /Image:"C:\mount" /PackagePath="Microsoft-Windows-Client-Language-Pack_x64_en-us.cab"

Similarly, you would install the LXP for Italian with PowerShell as follows:

Add-AppxProvisionedPackage -Path c:\mount -PackagePath .\LanguageExperiencePack.it-IT.Neutral.appx -LicensePath .\License.xml

This provisions the AppX in the system, and it should appear in the language selection during the out-of-box experience (OOBE) phase.

Adding an LXP online

It gets more complicated if you install the LXP into a running Windows system by using the Online switch instead of the Path parameter:

Add-AppxProvisionedPackage -Online -PackagePath .\LanguageExperiencePack.it-IT.Neutral.appx `-LicensePath .\License.xml

The LP then becomes available in the system and installed for the user currently logged in.

Adding the LXP to the live system via PowerShell

Adding the LXP to the live system via PowerShell

You can easily verify this with PowerShell in an administrative session:

Get-AppxPackage -AllUsers | ? Name -Like *LanguageExperiencePack* |
Format-List Name, PackageUserInformation
Viewing the installed LXP with PowerShell

Viewing the installed LXP with PowerShell

However, Microsoft's move to AppX means you must add each LXP separately for each additional user.

You could do this with PowerShell like this:

$p = (Get-AppxPackage | ? Name -Like *LanguageExperiencePackit-IT).InstallLocation
Add-AppxPackage -Register -Path "$p\AppxManifest.xml" -DisableDevelopmentMode

With these two commands, you would install the Italian LXP for the current user. If you now expect the Settings app to reflect the newly added language in its list, you'll be disappointed. PowerShell can fix this with:

Set-WinUILanguageOverride -Language it-it

Now since you have explicitly activated Italian as the new display language, it also appears in the Settings app.

If in this example you want to use Italian not only for the display but also as your preferred language, proceed as follows:

$ll = New-WinUserLanguageList -Language it-it
Set-WinUserLanguageList $ll -Force
Only after activating a language with PowerShell does it appear in the Settings app

Only after activating a language with PowerShell does it appear in the Settings app

Adding an LP using the GUI

To be able to add LPs including optional features via the Settings app, you have to log on to the system as an administrator. As you know, running the app with elevated rights via runas is not possible. Standard users can only add a new display language themselves.

The redesigned language configuration page offers two options for interactive installation. First, you can download an LP from the store by clicking on the corresponding link. Secondly, you can reach this goal by clicking on the plus symbol under Add a language.

Both options for adding languages in the app settings lead to the same result

Both options for adding languages in the app settings lead to the same result

The result for both methods is obviously the same. Only the language you place at the top of the list is the preferred language and will determine the appearance of applications. All others are just additional languages. Thus, early builds for Windows 10 20H1 will only show one language in this list.

In addition, since Windows 10 1809, it is possible to set the display language separately from the default language for applications and websites. Current previews of Windows 10 20H1 divide the language configuration even further and allow you to select the language for voice input independently.

Previews of Windows 10 20H1 allow a separate configuration of different language settings

Previews of Windows 10 20H1 allow a separate configuration of different language settings

Windows Server 2019

Windows Server 2019 got stuck halfway during the transition from .cab to LXP. While you could still add an LP in the Settings app with version 2016, this procedure does not work anymore. Downloading an LP from the store is not possible because the store app is missing here.

After adding a language, it is missing for the GUI localization

After adding a language, it is missing for the GUI localization

If you want to install an LP this way, you will get the optional features, but the corresponding display language is missing. Even if you see a Download button for the LP on the options page, it won't work. Instead, you should add an LP as a .cab file before the interactive installation in the Settings app.

Subscribe to 4sysops newsletter!

Add an LP under Windows Server 2019 with lpksetup.exe

Add an LP under Windows Server 2019 with lpksetup.exe

Since the LPs for Windows 10 are not compatible with the server OS, the required .iso is a separate download. It is generally available and not bound to a volume license as it is on the client. The installation then occurs via lpksetup.exe as usual for .cab LPs.

avatar
6 Comments
  1. Steeve 4 years ago

    Hi Wolfgang,

    First thanks for your sharing about the LPs and  the quality of the explanations.

    As I work for an International Compagny I have to build a new Gold Image, common to the Company, with Windows 10 1809 in English (default language) and put the French Language Pack.
    For the French branch Office I need to set the french language as the default for All Users using this VDI.
    But  despite everything, I was note able to implement your solution on my running Win10 1809 VDI Gold Master.

    I put Win10 in Audit Mode, mounted the LP iso in CD-Drive, start Powershell and put the command prompt in the LocalExperiencePack Folder.
    Then I use the -Online switch and the powershell command "Add-AppxProvisionedPackage -Online -PackagePath .\LanguageExperiencePack.fr-FR.Neutral.appx `-LicensePath .\License.xml".

    But the installation failed.
    If i browse the DVD I can't find a fr-FR folder (nor it-IT like in your example).

    So can you help me more ?
    Do we need to set the default language in Audit Mode ?

    Thanks in advance for your help.

    Regards
    Steeve

    PS : I use SW_DVD9_NTRL_Win_10_1809_32_64_ARM64_MultiLang_LangPackAll_LIP_X21-91305, is it the right iso ?

  2. Ernst Jan 3 years ago

    Just out of curiosity , how did you find these things out?  
    I can only do it because of this blog.

  3. Adam 3 years ago

    Man, this is exactly what I needed to understand LP, LXP and LIP! WTH?!

    Thanks 🙂

    Adam

  4. Guest 3 years ago

    Is there a way to download language components through direct links to make an offline installation elsewhere?

    Or alternatively, is there a way to collect the downloaded language files on one system and transfer them for an offline installation on another machine?

    • Josh O'Brien 3 years ago

      did you ever find an answer for this it would be great if we could build a repository of offline LXP's then transfer when needed or if we could load the LXP into the packages section of an MDT server.

  5. longmiao 5 months ago

    I searched the global website and found the tutorial here.

    Windows 11 22H2 Offline Packaging Multilingual Tutorial

    https://youtu.be/_khTgPmIcAo

Leave a reply

Your email address will not be published.

*

© 4sysops 2006 - 2023

CONTACT US

Please ask IT administration questions in the forums. Any other messages are welcome.

Sending

Log in with your credentials

or    

Forgot your details?

Create Account