Non-localized version of MinGW/MSYS2?
Asked Answered
L

4

10

Is there a way to download MinGW/MSYS2 with gcc, that is not localized? Localized gcc causes all warnings to become errors in CodeBlocks, if the system language is not English.
This bug is also reported here:

http://forums.codeblocks.org/index.php/topic,9489.msg67120.html

The thread also contains a working solution to the problem, but if one could download a non-localized version in the first place, this would be much more convenient.

Licketysplit answered 13/2, 2012 at 21:33 Comment(0)
A
10

Gcc & G++ in mingw use the environment variable LC_ALL to define the language at top level (if this variable is set), defaulting with the system locale if available, and then english if the locale does not exist.

If you want to force those tools to output their messages in english, just add/edit the environment variable LC_ALL with the value en_US.UTF-8

Adamantine answered 28/6, 2012 at 13:33 Comment(2)
That's not a valid locale on Windows. Just set LANG=C and be done with it :)Menon
@Menon It is not a windows locale, it is a Mingw locale, we're not trying to make windows do something there.Adamantine
F
11

I'm pretty sure the following is not the "recommended solution", but I personally gave up on trying to find one. So: My locale is da (Danish) which causes exactly the kind of problem you describe.

My solution? Simply erase the locale used, causing the system to default to english: i.e. in my case erase the folder:

C:\MinGW\share\locale\da

(In more recent versions the location might be for example msys64\usr\share\locale\sv where in this case sv represents Swedish.)

Why on earth anyone coding in C/C++ would want their tools to output localized error-messages is beyond me...

Fourdrinier answered 24/4, 2012 at 13:44 Comment(2)
Well, i guess it's the easiest solution to this problem. Thank you :)Licketysplit
Although this is (currently) my preferred solution, I just discovered that whenever I install a new package, the language (in my case sv) is installed back again. So I might have to delete that folder every time I install a new package ... (SIGH!)Krilov
A
10

Gcc & G++ in mingw use the environment variable LC_ALL to define the language at top level (if this variable is set), defaulting with the system locale if available, and then english if the locale does not exist.

If you want to force those tools to output their messages in english, just add/edit the environment variable LC_ALL with the value en_US.UTF-8

Adamantine answered 28/6, 2012 at 13:33 Comment(2)
That's not a valid locale on Windows. Just set LANG=C and be done with it :)Menon
@Menon It is not a windows locale, it is a Mingw locale, we're not trying to make windows do something there.Adamantine
D
3

Use the commmand

locale -a

to see a list of enabled locales. To use USA English, I set below environment variables in my bash's source file

export LANG=en_US.UTF-8
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
Delegation answered 14/2, 2018 at 6:36 Comment(0)
K
1

The following worked for me.

After installing MSYS2, I tried :

$ drivel
-bash: drivel: kommandot finns inte

As you can see, kommandot finns inte is not English. So I ran : 1

$ echo "export LANG=en_US.UTF-8" > /etc/profile.d/english.sh

Then I closed and restarted MSYS2, and tried running drivel again :

$ drivel
-bash: drivel: command not found

Yay! – It's now in English: command not found.


1 My solution is inspired by this answer.

Karolinekaroly answered 23/10, 2022 at 13:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.