How to change the language on a system with a Single Language license?
Some Windows PCs are sold with a "Single Language" License. This means that by default only one language can be used and it cannot be modified. This is probably a marketing choice made by Microsoft, to avoid the exchange of computers bought in different countries, at a lower price, that could be sold abroad.
In any case, I researched for a working solution, here it is.
Table of contents
First of all, I was using a Windows 10 Home Single Language version 19044.2311.
To check your version, open a Command prompt (cmd) and at the first line you will see something like this:
Microsoft Windows [Version 10.0.19044.2311]
- Let's install the language we need
- Let's remove the other language(s)
Install a new language
Important: on recent versions of Windows, the ".cab" language packs are not valid anymore. You might have found some other sources (StackOverflow for example) talking about cab files. You can still follow those guides if you have a less recent version of Windows 10, in the other case you will get some errors.
Languages can be installed directly from the Microsoft Store: Let's open it and search for our language, for example "Italian". Let's install the language as in the following screenshot:
Removing a language
For this operation, you can use the command prompt or the Powershell, i will use the latter, in any case you need to start them as administrator (right click > run as administrator).
Before removing a language, make sure you already installed the new language, it need to be listed as explained below here.
First of all we check what languages are installed with this command:
dism /online /get-packages | findstr /c:"LanguagePack"
You might need to change /c: with the disk unit where your system is installed, for example /d:, this command will return us the list of packages installed for the languages.
Package Identity : Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~10.0.22000.1098
Package Identity : Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~10.0.22000.1219
Package Identity : Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~it-IT~10.0.22000.1098
Package Identity : Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~it-IT~10.0.22000.1219
Now, let's remove the most recent one (where numbers are greater) with this command, for the language we want to remove, English in this case. You can copy paste the name of the package.
dism /online /remove-package /packagename:"Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~10.0.22000.1219"
Double check that the name of the package is correct and that there are no empty spaces. You can also try removing the double quotes if needed.
If everything went well, you can see the language is being removed, it might take a minute. At the end, the system will ask you to restart the PC. You can remove other languages if you want, or just restart now.
Errors while removing packages
If you get an error like "invalid package", please verify that the name you wrote in the "remove-package" command was correct and double check that the same name is installed when using /get-packages.
You can also run the same command dism /online /get-packages to get the status of all packages: the language you are trying to remove must have a status of "Installed".