A PowerShell script to fix a common Windows 11 bug where changing the system display language through Settings only partially applies — leaving many system elements, dialogs, and menus in the previous language even after switching.
Changing your display language via Settings → Time & language → Language & region sometimes only installs a simplified/partial language pack. As a result:
- Some UI elements switch to the new language
- Many system elements, menus, and dialogs remain in the old language
- This can persist indefinitely, even after multiple restarts
This has been observed when adding a language pack to a system originally installed
from an ISO in a different language (e.g., adding fr-FR to an en-US ISO install,
or in this case switching a Polish install to English).
This script forces Windows to install the full language pack (not the simplified version) and properly propagates it across the entire system, including the Welcome/lock screen.
Install-Languageforces a full language pack install, rather than the simplified version Windows Settings normally installs.Set-WinUserLanguageListsets the target language as the active language for the current user.Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $Truepropagates the language and regional settings to system-level processes, the Welcome/lock screen, and any new user accounts created afterward. Both-WelcomeScreenand-NewUserare mandatory parameters for this cmdlet — if either is omitted, PowerShell will interactively prompt you to supply it (e.g., "Supply values for the following parameters: NewUser"). Set-NewUserto$Falseif you don't want the language applied to future new accounts.Restart-Computer -Forcerestarts immediately so the changes take full effect system-wide.
- Open PowerShell as Administrator (Win + X → "Terminal (Admin)" or "PowerShell (Admin)")
- Edit the
$targetLanguagevariable to your desired language/region code (e.g.,en-US,en-GB,pl-PL,fr-FR,pt-BR). - Copy and paste the entire script into the PowerShell window and press Enter.
- Save any open work first — the script restarts your computer automatically at the end with no confirmation prompt.
- Be patient. The installation may appear stuck for up to ~20 minutes. Let it run.
- After the automatic restart, the new language should be fully applied across the system.
If you get an error about execution policies (scripts being disabled on your system), run this first in your Administrator PowerShell session, then re-run the script:
```powershell Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass ```
This only bypasses the policy for the current session — it doesn't change your system-wide execution policy settings.
- Windows 11, version 22H2 or later (the
Install-Languagecmdlet was introduced in this version). If it's not recognized, update Windows first. - Must be run as Administrator.
- Internet connection (to download the language pack).
-
Set-WinUserLanguageList $targetLanguage -Forcereplaces your entire language list with just the target language. If you use a non-US/UK keyboard layout or want to keep another language installed (e.g., for typing), pass an array instead:```powershell Set-WinUserLanguageList @("en-US","pl-PL") -Force ```
-
If
Install-Languageisn't recognized, you can fall back to:```powershell Add-WindowsCapability -Online -Name "Language.Basic~~~en-US~0.0.1.0" ```
(adjusting the language tag as needed, and adding speech/handwriting/OCR capabilities separately if desired).
This script forces a system restart with no confirmation. Use at your own risk, and make sure to save any open work before running it.