microsoft / WSL

Issues found on WSL
https://docs.microsoft.com/windows/wsl
MIT License
17.41k stars 822 forks source link

wsl.exe Wrong Default Display Langauge #9242

Closed mdragosv closed 7 months ago

mdragosv commented 1 year ago

Version

Microsoft Windows [Version 10.0.22621.900]

WSL Version

Kernel Version

No response

Distro Version

No response

Other Software

No response

Repro Steps

Install Windows 11 with the romanian language pack, maybe other languages affected. Run wsl --install Do wsl --help the help language wont be in english as expected

image

Expected Behavior

Default to english

Actual Behavior

PS C:\Users\marin> wsl -v Verze WSL: 1.0.0.0 Verze jádra: 5.15.74.2 Verze WSLg: 1.0.47 Verze MSRDC: 1.2.3575 Verze Direct3D: 1.606.4 Verze DXCore: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp verze Windows: 10.0.22621.900 PS C:\Users\marin> image

Diagnostic Logs

No response

Solution

https://github.com/microsoft/WSL/issues/9242#issuecomment-1406138325

benhillis commented 1 year ago

Could you try powershell Get-WinSystemLocale?

mdragosv commented 1 year ago

Could you try powershell Get-WinSystemLocale?

LCID Name DisplayName


1048 ro-RO Romanian (Romania) image

Nuklon commented 1 year ago

I have a similar problem, although it goes to Dutch. My display language is English:

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

I don't even have Dutch installed.

E: Managed to fix it. In Windows settings, change the "Apps & Websites" language to English (United States).

Sedemicra commented 1 year ago

Had a similar issue, where WSL display language was in Czech.

In language settings: Windows display language: English (United States) Under Preferred languages: Only Estonian (language pack not even downloaded), which also set Apps & websites language to Estonian.

Solution: Installed English (United States) language pack under Preferred languages. Left the order remain (Estonian first, English second), so the Apps & websites language remained Estonian, but WSL diaplay language turned to English (as desired).

Hope it is helpful for others dealing with similar issue.

dorinlazar commented 1 year ago

Same issue here, only the system locale is en-US. However, I do have the country and region set to Romania and the default input method set as Romanian (Programmers). image

mdragosv commented 1 year ago

Had a similar issue, where WSL display language was in Czech.

In language settings: Windows display language: English (United States) Under Preferred languages: Only Estonian (language pack not even downloaded), which also set Apps & websites language to Estonian.

Solution: Installed English (United States) language pack under Preferred languages. Left the order remain (Estonian first, English second), so the Apps & websites language remained Estonian, but WSL diaplay language turned to English (as desired).

Hope it is helpful for others dealing with similar issue.

Can confirm your solution works!

image

dorinlazar commented 1 year ago

Still, it's a problem that should be clarified - is the Romanian language package filled with Czech localization strings, or is there a bug in wsl?

Sedemicra commented 1 year ago

@dorinlazar In my case there was nothing to do with Romanian language. I myself suspect WSL, but being not familiar in detail, how languages and locales work, can't really confirm my suspicions.

mdragosv commented 1 year ago

Bug in WSL

jurecotic commented 1 year ago

I have the same issue, locale is Slovenian, until a few days ago WSL was in English, then from today on it is in Czech language. Although this happened to me already about a year ago but then fixed itself.

futag commented 1 year ago

My solution only downloads and install English (US) language packs.

Stanzilla commented 1 year ago

My Windows is set to English and there is no language pack installed:

gril002 commented 1 year ago

It's been almost a year and it's still broken. @benhillis Can we expect a solution anytime soon?

JEAYNE commented 1 year ago

Same problem here since the upgrade from WSL 1.2.5.0 to 2.0.7.0

My Windows 11 is setup to use English for the Language and French for the Region.

PS> systeminfo | findstr Locale
System Locale:             en-gb;English (United Kingdom)
Input Locale:              en-gb;English (United Kingdom)

PS> Get-WinSystemLocale

LCID             Name             DisplayName
----             ----             -----------
2057             en-GB            English (United Kingdom)

PS> xyz
xyz : The term 'xyz' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.

It looks like that sometime WSL.EXE uses the Region, and sometime it uses the Language.

For some options WLS.EXE displays result in French (my Windows Region):

PS> wsl.exe --version
Version WSL : 2.0.7.0
Version du noyau : 5.15.133.1-1
Version WSLg : 1.0.59
Version MSRDC : 1.2.4677
Version direct3D : 1.611.1-81528511
Version de DXCore : 10.0.25880.1000-230602-1350.main
Version de Windows : 10.0.22621.2428

For other options it displays result in English (my Windows Language):

PS> wsl -l -v
  NAME                      STATE           VERSION
* Alpine                    Running         2
  docker-desktop            Stopped         2
  docker-desktop-data       Stopped         2
  OracleLinux_7_9           Stopped         2
  podman-machine-default    Stopped         2

And sometime it is a mix of French and English

PS> wsl --import my_distro .\dir\ alpine.tar.gz
Importation en cours. Cette opération peut prendre quelques minutes.
The operation completed successfully.

NOTES: the solution from Sedemicra doesn't work for me.

Here my Windows setup that was working before the upgrade from WSL 1.2.5.0 to 2.0.7.0

Language-Region

But this is not the real problem

WSL is not a tool for general public, it is only used by developers. I believe that every developer expects an output in English, regardless of language and region. If the output is depending on the Windows configuration how can I grep the WSL output?

Example: This bash statement works only in English but not in French, Spanish, Greek, Japanese etc... name=$( wsl.exe --list --all | tr -d '\r\0' | grep '(Default)' | cut '-d ' -f1 )

English:

wsl --list --all Windows Subsystem for Linux Distributions: OracleLinux_9_1 (Default)

French:

wsl --list --all Distributions du Sous-système Windows pour Linux : OracleLinux_9_1 (par défaut)

Regards

AndreasBrostrom commented 11 months ago

This just suddenbly happend for me today: image image

dstarkowski commented 11 months ago

Single command - two languages.

image

It's a widespread problem across Microsoft products where Culture and UI Culture are mixed.

Region/Regional format/Location should never affect the language. Either Windows display language or the first one on preferred language list should be used (these are both en-US for me).

danielniccoli commented 9 months ago

Why on earth is my WSL German? I installed Windows in English (United States). @benhillis, you commented over a year ago without any follow-up. Please, look at it.

grafik

grafik

iburakov commented 9 months ago

I have the same problem right after doing the wsl --update from 1.x.x.x to 2.0.14.0. WSL output language has changed to Russian. image

Should've been English - the chosen Windows display language and the topmost preferred language: image

Mentioned solutions don't work. Chosen regional date/time format should NOT affect the WSL output language.

romasandu-gaijin commented 9 months ago

After some experimentation, it is clear that the language WSL uses for localization is taken from the "reginal format" setting, as several people have pointed out above, which is 100% a bug. People can and do use other contries formats without knowing the language, and not being able to even read the help without changing system settings to something inconvenient is awful. Please fix.

jurecotic commented 9 months ago

I don't think it is taken from regional. mdragosv has regional set to Romanian and his wsl was in Czech. Same for me, regional set to Slovenian, wsl in Czech...

stefan-oskamp commented 9 months ago

Can confirm that wsl.exe 2.0.14 is switching its display language when you change the Windows Region and Regional Format.

What part of "Windows Display Language = English (US)" does wsl.exe not understand??? Does it need more AI or maybe just more common sense?

stianthaulow commented 8 months ago

Changing Regional format does indeed change the wsl language: wsl-region

WSL version: 2.0.14.0 Kernel version: 5.15.133.1-1 WSLg version: 1.0.59 MSRDC version: 1.2.4677 Direct3D version: 1.611.1-81528511 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.19045.3930

danielniccoli commented 8 months ago

Can this please be labeled as a bug?

Florian-Thake commented 8 months ago

Same here on Windows 10. After update it is displayed in German instead of English. Region is Germany but preferred language as well as the Windows display language is English (US).

Please, know, that advanced users and especially developers and administrators usually never want a translated version. This is also annoying on technical documentation webpages where often an automatic translation is shown. English is the de-facto standard in IT. It cannot be expressed more clear as in English. Everything else will lead to errors and misunderstandings. Also, we need English as the one and common language for interchange. CLI tools should never be translated at all in my opinion! This also saves development resources.

danielniccoli commented 8 months ago

Please, know, that advanced users and especially developers and administrators usually never want a translated version.

I disagree. If applications are translated, they should come in the language the user expects. You're using a generalisation to express your personal opinion. That does not help the quality of the application and only shifts the issue to a different group of people - namely the ones who want localised apps. If you want your system and apps to be in English, then you can do that via the system language settings.

The problem here is that the application does not follow the system language, but rather the region. These are two different settings. A user can be located in Germany, Poland, France or any other place in the world and would prefer to see content from that region. This is why you can set the region in Windows to wherever you are at the moment. All the while you can still have your system language in the language you are comfortable with. And then there are date, time and number formats, which can also be configured independent of region and language.

And applications should follow system language. It's that simple.

I'm frankly tired of seeing these issues in Microsoft applications, as these settings have been in Windows for at least 20 years and I'm shocked that Microsoft developers still don't grasp this concept.

Otiel commented 8 months ago

https://github.com/microsoft/WSL/releases/tag/2.1.3

Use the display language for localization instead of the default locale (solves #11087,#11051)

Florian-Thake commented 8 months ago

The problem here is that the application does not follow the system language, but rather the region. These are two different settings. A user can be located in Germany, Poland, France or any other place in the world and would prefer to see content from that region. This is why you can set the region in Windows to wherever you are at the moment. All the while you can still have your system language in the language you are comfortable with. And then there are date, time and number formats, which can also be configured independent of region and language.

And applications should follow system language. It's that simple.

I'm frankly tired of seeing these issues in Microsoft applications, as these settings have been in Windows for at least 20 years and I'm shocked that Microsoft developers still don't grasp this concept.

Yes, that is the bug here and must be fixed.

Furthermore there are not only the region and the display language but also the input method (keyboard layout) and the formatting options for currency, date and so on as well as the time zone. All of these settings must be changeable completely independently and must be respected by every application.

I disagree. If applications are translated, they should come in the language the user expects. You're using a generalisation to express your personal opinion. That does not help the quality of the application and only shifts the issue to a different group of people - namely the ones who want localised apps. If you want your system and apps to be in English, then you can do that via the system language settings.

Sure, that is one way. But I claim that there are different kind of applications. There are those which main target audience are developers and administrators. And for those I claim, that there is only one working way for avoid misunderstandings and errors: English language. It does not make sense to translate technical keywords or phrases into some other language. It will only lead to subtle differences in the meaning and a lost in some details (best case) or even to big errors (worst case). For example, to program VBA in Excel in any other language than English is just a pain. English is the common language for interchange. Imagine, everybody would program an API of a library, the source and all the comments in his/her native spoken language. The IT world would collapse entirely. So, again, I claim, that for tools which are targeted for developers and administrators are best available only in English. It will lead to global interchangeable results automatically. This is not only my personal opinion but backed with reasonable points.

When it comes to personal opinion, I can add the following: I not only want that application will follow the set system language. I want set the display language for each application individually. As I said, tools for developing shall be in English for me, but my Word shall be in German as well as any movie app. Also, for movies, I don't want English or English subtitles but German for default, and so on.

Florian-Thake commented 8 months ago

https://github.com/microsoft/WSL/releases/tag/2.1.3

Use the display language for localization instead of the default locale (solves #11087,#11051)

That sounds promising. Thank you!

OneBlue commented 7 months ago

Solved with 2.1.3