Latest posts by Wolfgang Sommergut (see all)
- Scan, download and install Windows Updates with PowerShell - Mon, Mar 23 2020
- WinPE for Windows 10: Create an ISO or a USB stick - Mon, Mar 16 2020
- WIM Witch: Customizing Windows 10 images with a GUI - Tue, Mar 3 2020
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.
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.
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.
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.
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
You can easily verify this with PowerShell in an administrative session:
Get-AppxPackage -AllUsers | ? Name -Like *LanguageExperiencePack* |
Format-List Name, PackageUserInformation
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
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.
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.
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.
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.
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.