Locales gone wild

Hi everyone,
I’ve been using Manjaro for quite some time now and have been enjoying it so far. Recently, I had to change some locales and wanted to set them back in place. My desired setting is as follows: everything displayed in English, except for date, time, numbers and measurements which should be converted to Polish formats.
The system language is in fact English, but the Polish language shows in weird and unexpected places e.g. some pamac captions, or outputs from the Konsole (help messages and errors are still in Polish). I should note that I set locales in system settings in the desired way but outputs of locale or localectl are quite a bit different from what I would expect. I also tried changing Konsole’s language but I was not successful.

Output from locale:
$ locale
LANG=en_GB.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Output from localectl:
$ localectl
System Locale:
LANG=en_GB.UTF-8
VC Keymap: us
X11 Layout: us
X11 Model: pc105

I would be extremely thankful if somebody resolved my issue.

LC_ALL must be empty - it is a troubleshooting and bug finding variable which should only be set prior to executing a terminal command e.g.

LC_ALL=C; some-command

KDE is a pain when it comes to locale - because KDE stores a subset of locale settings in obscure *rc files.

Also remember that - any script can change the locale when needed or just for the fun of the user pulling hair - the latter is probably rare - but it was fun to write.

1 Like

I have changed the stuff you advised and most things seem to be working fine more or less (bash still displays some errors in Polish), however I get a few errors when running the locale command. At this point, I just want to change every single locale to en_DK, because I find that it suit my needs. Here’s my locale.conf file:

 LANG=en_DK.UTF-8
 LANGUAGE=en_DK
 LC_ADDRESS=en_DK.UTF-8
 LC_IDENTIFICATION=en_DK.UTF-8
 LC_MEASUREMENT=en_DK.UTF-8
 LC_MONETARY=en_DK.UTF-8
 LC_MESSAGES=en_DK.UTF-8
 LC_NAME=en_DK.UTF-8
 LC_NUMERIC=en_DK.UTF-8
 LC_PAPER=en_DK.UTF-8
 LC_TELEPHONE=en_DK.UTF-8
 LC_TIME=en_DK.UTF-8

And here’s the output of locale:

$ locale  
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_DK.UTF-8
LC_CTYPE="en_DK.UTF-8"
LC_NUMERIC=en_DK.UTF-8
LC_TIME=en_DK.UTF-8
LC_COLLATE=en_DK.UTF-8
LC_MONETARY=en_DK.UTF-8
LC_MESSAGES=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_DK.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
LC_ALL=

The changes you make to your locale.conf must be reflected in the file local.gen - and that means you must uncomment the locales in locale.gen which you have referenced in locale.conf - then you are required to build the locales using locale-gen script and finally you must reboot yor system to load the locales.

That was a long comment using a tablet