Suche
  • Team modernX

Windows 10 & die neuen Sprachpakete (Local Experience Packs)

Aktualisiert: Feb 26

Microsoft entwickelt kontinuierlich sein aktuelles Windows 10 Betriebssystem, wie auch die zugehörigen Sprachpakete, weiter.

Mit Windows 10 1809 hat Microsoft begonnen die bisherigen Sprachpakete im CAB Format abzulösen und die neuen „Local Experience Packs“ (LXP) einzuführen. Diese lassen sich bei Bedarf auch direkt über den Microsoft Store als Appx-Pakete beziehen.

Es besteht nun die Anforderung auch die neuen LXP-Sprachpakete automatisiert per Softwareverteilung an Windows 10 Clients zu verteilen.

Die bis Windows 10 1803 typische Variante per „lpksetup.exe“ oder per DISM war recht einfach: Man lade sich die „lp.cab“ Dateien der jeweiligen Sprache runter und installiert diese mit den altbekannten Befehlen:

lpksetup /i de-DE /r /s /p D:\langpacks\de-de\lp.cab


dism.exe /online /add-package /packagepath:D:\langpacks\de-de\lp.cab


Ab Windows 10 1809 ändert sich die klassische Installation der Sprachpakete etwas, da man nun auch die zusätzlichen LXP-Sprachpakete im Appx-Format mit installieren muss, welche die traditionellen Language Interface Packs (LIPs) ablösen.


Im Detail heißt das nun:


  • Download der entsprechenden Windows Language Pack ISO von der „Windows Volume Licensing“ Website oder „MSDN“ Website:

  • Installation der Language Pack CAB Dateien auf dem entsprechenden Windows 10 System (z.B. “Microsoft-Windows-Client-Language-Pack_x64_de-de.cab”)

  • Installation des zugehörigen LXP Sprachpakets im Appx-Format (z.B. “LanguageExperiencePack.de-DE.Neutral.appx”)

  • Hinzufügen der Sprache zu den bevorzugten Sprachen pro User.

Um diese Tätigkeiten etwas zu vereinfachen haben wir ein kleines PowerShell-Skript (Install-Win10LanguagePackLXP.ps1) geschrieben, welches die Sprachen automatisch installiert. Dazu liegt das entsprechende PowerShell Skript in einem Ordner ab, welches zugleich auch die nötigen Sprachdateien enthält:



















Das PowerShell Skript installiert alle Sprachen, welche es in den Unterordnern vorfindet. Anzupassen sind lediglich die Variablen für OS-Architektur ($architecture) und Gebietsschema ($SystemLocale).



#=============================================================

# Windows 10 - Install language pack (LXP)

# Version 1.00 (17.11.2019)

# Created by Michael Steiner

# https://www.modernx.de

# History

# Version 1.00 - Release

#=============================================================

<#

.SYNOPSIS

Windows 10 - Install language pack (LXP)

Microsoft changed Language Pack Format from lp.cab to LXP files (APPX)

.EXAMPLE

.MISSING"

Windows 10 - Install language pack (LXP)

.LINK

https://www.modernx.de

#>

#=============================================================

#region Preparations


#LanguagePacks: \\Install-Win10LanguagePackLXP\LanguagePacks

#LXP: \\Install-Win10LanguagePackLXP\LXP

#Script: \\Install-Win10LanguagePackLXP\Install-Win10LanguagePackLXP.ps1

#The cab and appx files needs to be installed as Admin


#Current Path

$currentExecutingPath = $MyInvocation.MyCommand.Definition.Replace($MyInvocation.MyCommand.Name, "")


#endregion

#=============================================================

#region Variables


$architecture = "x64"

$SystemLocale = "de-DE"


#endregion

#=============================================================

#region Main Function


Write-Host "Start install language packs..." -ForegroundColor Green


$installed_lp = New-Object System.Collections.ArrayList


foreach ($language in Get-ChildItem -Path "$currentExecutingPath\LXP") {


Write-Host "Installing $language" -ForegroundColor Green

$AppXFile = $currentExecutingPath + "\LXP\" + $language.Name + "\LanguageExperiencePack." + $language.Name + ".Neutral.appx"

$LicFile = $currentExecutingPath + "\LXP\" + $language.Name + "\License.xml"

$CabFile = $currentExecutingPath + "\LanguagePacks\Microsoft-Windows-Client-Language-Pack_" + $architecture + "_" + $language.Name + ".cab"


Write-Host "Installing $CabFile"

Start-Process -FilePath "dism.exe" -WorkingDirectory "C:\Windows\System32" -ArgumentList "/online /Add-Package /PackagePath=$CabFile /NoRestart" -Wait


Write-Host "Installing $AppXFile"

Start-Process -FilePath "dism.exe" -WorkingDirectory "C:\Windows\System32" -ArgumentList "/online /Add-ProvisionedAppxPackage /PackagePath=$AppXFile /LicensePath=$LicFile /NoRestart" -Wait


Write-Host "Add to prefered languages"

$prefered_list = Get-WinUserLanguageList

$prefered_list.Add($language.Name)

Set-WinUserLanguageList($prefered_list) -Force


$installed_lp.Add($language.Name)

}


Write-Host "Setting the system locale: $SystemLocale" -ForegroundColor Green

Set-WinSystemLocale -SystemLocale $SystemLocale


#endregion

#=============================================================


Ausführung des PowerShell-Skripts:

Nun sind die Sprachen installiert und die Region ist auf Deutschland gesetzt. Jedoch fehlt, wie aus dem nachfolgenden Screenshot ersichtlich, die Auswahl der Windows-Anzeigesprache. Trotz installierten Sprachpaketen.














Das Hinzufügen der Auswahl an Windows-Anzeigesprachen erfolgt pro Anwender und kann z.B. durch ein kleines Login-Skript erfolgen. Inhaltlich könnte dies wie folgt aussehen:


#PowerShell Script for users or as a login script

$prefered_list = Get-WinUserLanguageList

$prefered_list.Add("cs-cz")

$prefered_list.Add("de-de")

$prefered_list.Add("pl-pl")

$prefered_list.Add("sk-sk")

$prefered_list.Add("zh-cn")

Set-WinUserLanguageList($prefered_list) -Force



Abschließend stehen dann auch im Dropdown-Menü der Windows-Anzeigesprachen alle Sprachen zur Auswahl:


modernX Logo.png