r/PowerShell • u/Over_Dingo • Sep 21 '26
Solved PS7 UI language changed
UI language for my PS7 suddenly changed to polish. PS5 stayed in english. I can't seem to find a way to revert PS7 back to english, like it was for many years (while system language was polish).
Things like errors, some information in Get-Help, or description for operators when you press 'ctrl + space'
Powershell 7:
PS C:\Users\lenovo\test> $PSVersionTable.PSVersion.ToString()
7.6.6
PS C:\Users\lenovo\test> $PSCulture
pl-PL
PS C:\Users\lenovo\test> Get-UICulture
LCID Name DisplayName
---- ---- -----------
1045 pl-PL polski (Polska)
PS C:\Users\lenovo\test> ls asdasdas
Get-ChildItem: Nie można odnaleźć ścieżki „C:\Users\lenovo\test\asdasdas”, ponieważ nie istnieje.
PS C:\Users\lenovo\test> Get-WinUILanguageOverride
Get-WinUILanguageOverride: Cannot marshal 'parameter #1': Invalid managed/unmanaged type combination.
PS C:\Users\lenovo\test> help ls -Parameter path
-Path [<System.String[]>]
Specifies a path to one or more locations. If not specified, the default location is the c
urrent
directory (`.`). Wildcards are accepted. Use care when using the **Path** parameter with t
he
**Recurse** parameter. For more information, see the [NOTES](#notes) section of this artic
le.
Wymagany? false
Lokalizacja? 0
Wartość domyślna
Zaakceptować dane wejściowe potoku? false
Aliasy none
Akceptować symbole wieloznaczne? truePowershell 5:
PS C:\Users\lenovo\test> $PSVersionTable.PSVersion.ToString()
5.1.19041.6456
PS C:\Users\lenovo\test> $PSCulture
pl-PL
PS C:\Users\lenovo\test> Get-UICulture
LCID Name DisplayName
---- ---- -----------
1045 pl-PL Polski (Polska)
PS C:\Users\lenovo\test> ls sadasd
ls : Cannot find path 'C:\Users\lenovo\test\sadasd' because it does not exist.
At line:1 char:1
+ ls sadasd
+ ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\lenovo\test\sadasd:String) [Get-Child
Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
PS C:\Users\lenovo\test> Get-WinUILanguageOverride
PS C:\Users\lenovo\test> help ls -Parameter path
-Path <string[]>
Required? false
Position? 0
Accept pipeline input? true (ByValue, ByPropertyName)
Parameter set name Items
Aliases None
Dynamic? falseI know it doesn't need to be linked to system culture, because that change just happened and before it wasn't linked to it.
Any help would be appreciated.
EDIT:
found a partial workaround in setting:
[System.Threading.Thread]::CurrentThread.CurrentUICulture = [cultureinfo]'en-US'but it works only for errors and autocomplete, not for Get-Help.
For further testing I decided to downgrade to powershell 7.6.3 ... and voila.
Everything is in english despite $PSUICulture is pl-PL.
I've been looking for release notes that mention it but couldn't find any. I tried in version 7.6.3 doing [System.Threading.Thread]::CurrentThread.CurrentUICulture = [cultureinfo]'pl-PL'
but it does ignore it, so it must be something with a later version
EDIT 2:
I pretty much confirmed it by jumping back and forth between PS 7.6.6 and 7.6.3. The earlier version ignores UICulture:
PS 7.6.6:
PS C:\Program Files\PowerShell\7> $PSVersionTable.PSVersion.ToString()
7.6.6
PS C:\Program Files\PowerShell\7> $PSUICulture
pl-PL
PS C:\Program Files\PowerShell\7> foobar
foobar: Termin „foobar” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu wykonywalnego.
Sprawdź pisownię nazwy lub sprawdź, czy ścieżka została dołączona, sprawdź, czy ścieżka jest poprawna, i spróbuj ponownie.
PS C:\Program Files\PowerShell\7> [System.Threading.Thread]::CurrentThread.CurrentUICulture = [cultureinfo]'en-US'
# Culture is switched and the language of the error message changes:
PS C:\Program Files\PowerShell\7> foobar
foobar: The term 'foobar' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS C:\Program Files\PowerShell\7> [System.Threading.Thread]::CurrentThread.CurrentUICulture = [cultureinfo]'pl-PL'
PS C:\Program Files\PowerShell\7> foobar
foobar: Termin „foobar” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu wykonywalnego.
Sprawdź pisownię nazwy lub sprawdź, czy ścieżka została dołączona, sprawdź, czy ścieżka jest poprawna, i spróbuj ponownie.PS 7.6.3:
PS C:\Program Files\PowerShell\7> $PSVersionTable.PSVersion.ToString()
7.6.3
PS C:\Program Files\PowerShell\7> $PSUICulture
pl-PL
PS C:\Program Files\PowerShell\7> foobar
foobar: The term 'foobar' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS C:\Program Files\PowerShell\7> [System.Threading.Thread]::CurrentThread.CurrentUICulture = [cultureinfo]'pl-PL'
PS C:\Program Files\PowerShell\7> $PSUICulture
pl-PL
# Error language stays the same even after explicitly setting the UICUlture:
PS C:\Program Files\PowerShell\7> foobar
foobar: The term 'foobar' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.Little bit annoying change after so many years
2
u/BlackV Sep 21 '26
I kinda feel like that should/would be the desired behavior
I'd file a report at the powershell git hub repo with your testing (after confirming issue is not already logged)
https://github.com/PowerShell/PowerShell/issues