I've written a PowerShell GUI to download Language Packs for most versions of Windows 10 & 11.
This replaces searching
UUP dump or
rg-adguard for the correct version, downloading the links and renaming files.
We're still using UUP dump to generate the expiring download links. The script will skip files with identical names in the current folder.
View attachment 15124
Code:
Downloading "Microsoft-Windows-Client-LanguagePack-Package_cs-cz-amd64-cs-cz.esd"
Downloading "Microsoft-Windows-LanguageFeatures-Basic-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-Handwriting-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-OCR-cs-cz-Package-amd64.cab"
Downloading "Microsoft-Windows-LanguageFeatures-TextToSpeech-cs-cz-Package-amd64.cab"
SHA-1 Hash:
e7b2986577196a4dd08693327a7209dae02545e5 Microsoft-Windows-Client-LanguagePack-Package_cs-cz-amd64-cs-cz.esd
4e6b61b4e3654d03d765bbf59ab6fc45eb5b4c2f Microsoft-Windows-LanguageFeatures-Basic-cs-cz-Package-amd64.cab
4ef0b346760bb818b830b218296c5bfd7b11d38d Microsoft-Windows-LanguageFeatures-Handwriting-cs-cz-Package-amd64.cab
702a8eddbc454768efabb4c04ea540b464a6b7de Microsoft-Windows-LanguageFeatures-OCR-cs-cz-Package-amd64.cab
f980392aca2b3d424c8ca73446beb7e8026bb14f Microsoft-Windows-LanguageFeatures-TextToSpeech-cs-cz-Package-amd64.cab
What versions are supported?
- Win 11 26H1
- Win 11 24H2 & 25H2 are the same
- Win 11 22H2 & 23H2 are the same
- Win 11 21H2
- Win 10 2004, 20H2, 21H1 & 21H2 are the same
- Win 10 1903 & 1909 are the same
- Win 10 1809
Win 10 below 1809 isn't supported (why are you still using it?). Server 2022 isn't here, because the language selection is severely limited.
Do I need ESD2CAB?
Yes, click on the GUI's download link to open abbodi's GitHub.
This script will download and run ESD2CAB for you, converting all *.esd files to CAB format.
Why do I get a PowerShell execution policy error?
Your default execution policy prevents unsigned scripts from running. Run the
W10_11LP.bat instead.
How do I check if the downloaded packages are the correct version?
After files are downloaded, the script will report the packages' SHA-1 values.
You can compare the SHA-1 against UUPdump (select a Windows build, under
Browse Files / Search enter "
language").
ie.
https://uupdump.net/findfiles.php?id=a84eaaea-f57c-4271-a642-4abf996a7101&q=language
Why do you use a different UUP than abbodi's W10MUI?
Language Packs are some of the first Windows packages built, and they're shared across later versions in the same family. While my source builds may be different, all packages have identical SHA-1 values to abbodi's lists. There's no functional difference btw them.
If you're interested, my source builds are listed in the script.
What about Win 7 & 8 versions?
There's a different script for you (included in the ZIP), because the languages list isn't the same as W10/11.
While you could just copy the URL from pastebin or other sources, I already wrote a GUI.
Why don't I see new languages in my user account?
Windows doesn't automatically add every installed language to your user profile. A system might have multiple languages, but you don't need every one of them. Instead you can specify your own list of displayed languages.
Run this PowerShell command from Post-Setup
(After logon):
| powershell | -nop Set-WinUserLanguageList -LanguageList "en-US, en-GB" -Force |
Replace the
-LanguageList "en-US, en-GB" with your ordered list of keyboard languages.
How hard was it writing the GUI?
When you find a good WinForms code example, it's easy to modify and make your own layout. I moved and sized the visual elements by hand.
If you noticed, the OK button isn't active until the user selects from all menu boxes. And W11 doesn't have a x86 version, checking that option will always uncheck the button.
Wouahhhhhhhh !!!!!!!! Very nice script !!!!!!!! Working1000% !!!!!! Without any trouble !!!!!!!! Congratulations garlin.
I have a question : Is that possible to add some language codes, without error messages, if not found ?
Because, of cause, I have already tried the add of many codes (don't remember, but something like 180 or more) .
The precise question is: Is that possible that the script ask to server first, and "hide" what is "unavalable" to ddl ?
If not, it's not so important, I've already a script, to ddl from MSStore, from a 40-language list.
For me, it's just for fun and pleasure to push the thing to the max. Nothing "absolutly required", so...
Thank's for your answer, than I hope positive
------------------------------------------------------------------------------------
Project is Done - Still ''Fully'' Tested
------------------------------------------------------------------------------------
Finally, I created one, no, two scripts (hybrid or mixed, something between CMD and PowerShell, I don't know the exact term) to download, save, and install languages from the Microsoft Store.
The first (and second) scripts handle the download and backup operations (this is essential beforehand for the backup, as the files are immediately deleted after installation), followed by the installation itself. They then allow you to configure the newly downloaded language by default and use it immediately, using the "default" MS option (or not, and simply add it to the Windows Explorer language list). I haven't fully tested them all yet (far from it, only the second or third script are complete, and I hadn't yet determined the exact timing for when I needed to perform this backup, so I haven't had time to check the size of languages like "it-it de-de pt-pt," which were fully installed), and I'm too busy at the moment to perform complete tests on a virtual machine.
So, ultimately, asking the question almost gave me the answer.
"But," because it's often the case, this famous vi-vn language that I'm looking for my knowledge and not for myself, only downloads "15.5 MB," and I haven't checked if it's the same as the ones that are "already" in FOD 11 (incomplete) (and yet another script to install from this one, FOD 11 (24H2/25H2) - (10 1809/2004 (x86/x64)) (but that seems rather sm without all). Furthermore, it's more of a challenge I've set for myself than anything else (I've been doing it anyway, for a few years now, "without"). So, obviously, could someone inform me about what I have (or am missing (even better) in the end?)
Not forgetting, of course, (yet another script), the one for the Uninstalling one or more languages at once.
And to top it all off and make things easier for me (the ultimate goal, after efficiency), they are "all" in "multi-colored" displays in the command prompt for accents (fr-fr only) (which, via Windows 10 or 11, doesn't accept accents, a "known bug in 11") ("2 folders" of scripts "accents/or not/per master script") and also, without forgetting those of PS, which also have different colored messages during "connection/download/success or failure" (these, however, I didn't include accents in, to avoid any bug that could occur, if I work on a PC other than ("fr-fr" or "en-us"), .ps1, which are also the actors in the download, my primary goal of this silly challenge. And to be completely honest, I'm fed up !!!
There, I think I haven't forgotten anything.
Phew, that's finally it for the very precise and complete "current" information! I love it !
So, I thank in advance all those who have taken the time to read this post to the end, and who would be willing to give me information on this subject.
Just for Fun

Koko.
------------------------------------------------------------------------------------
*Special Thanks
------------------------------------------------------------------------------------
Garlin,
I sincerely thank you for the help your invaluable scripts provided, your immediate assistance, and especially your incredibly precise and targeted advice, outlining the possibilities of each approach and the limitations that initially guided me, ultimately leading me to the best techniques to achieve my goal in the fastest possible way, given the complexity of my project. Thanks to this, I saved an enormous amount of time in reaching my primary objective.
Which may have been achieved, to be confirmed after full testing.
(You can see this in the (very long) summary above.)
Well, I couldn't leave without addressing this little paragraph, which is especially dedicated to you, Garlin, to whom it may concern!
This is what "normal" people do when they know how to recognize the help they've received, without which this project could not have succeeded, or would have taken much longer to, first, reflect on it, find a hypothesis, a path, a solution, and organize this idea properly in their mind (even write it down, and by moving all these elements around, in one direction, then the other, below, above, in front, behind, more or less far, etc.), synchronize it very precisely, and finally find a coherent meaning, only then can they begin to test it. So those who shrug their shoulders, high and proud, claim to be "alone" and "unique" creator and director of such a meticulous and precise project as mine.
Let's enjoy it, Garlin, these are our few seconds, a few minutes, of glory for "The Two of Us," not for me alone, NO !!!
And let's enjoy it!
Because we know that glory, like physical beauty, is fleeting. And it never lasts long in our minds before we move on to something else.
On the other hand, you men or women or whatever, who will read this post, and claim to be the "alone" creator and director, "unique" and without help, without equal, when it comes to solving puzzles that few people have decided to tackle, a task seen by most as crazy and so achievable (everything is in computing), but with such a huge waste of time that in the end, it's not even worth it, to take an interest in it.
"Hats off!"
You truly are the "Greatest," "Master Kings," "Immense," "Gigantic," "Monstrous," "Unattainable" in your field, it's "Undeniable," "Incontestable," and "Irrefutable"!!!
"Only truly good copies make us see the ridiculousness of the original."
« Il n'y a que les vraies bonnes copies qui nous font voir le ridicule de l'original. »
— La Rochefoucauld, 1665