This is a fresh Manjaro installation on a Thinkpad with a US keyboard layout and English language everywhere (using en_US.UTF-8 locale).
Since I reside in Germany, I use the German locale for other things like number formats and monetary syntax. Apart from Plasma this usually doesn’t create any issues.
This is my current locale setting (as it shows inside the kitty terminal or Konsole application):
$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=en_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
$ localectl status
System Locale: LANG=en_US.UTF-8
LANGUAGE=en_US:en_GB:en:de_DE:de
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
VC Keymap: us
X11 Layout: us
Unfortunately, when running the ls command, Umlauts in file names like “ä” become $‘\303\244’.
Running the command explicitly with a set LC_ALL environment variable does fix the issue:
$ LC_ALL=en_US.UTF-8 ls
So does using another ls replacement like eza.
Umlauts in file names are also displayed correctly inside the graphical applications, like Dolphin. The ls command also displays them correctly in text-only terminals on the same machine.
There may be other commands having the same issue, but ls is the one I noticed it first.
Sometimes, when running pacman, I also get this message in the output, which is probably related to the issue:
bsdtar: Failed to set default locale
I know that Plasma uses its own language settings and I’ve set them up as I did on my other machines running Manjaro. Although, I get this warning message, which is new to me:
I’ve tried using the Manjaro and Arch Wiki entries about locales, but cant figure this out by myself.
This is my /etc/locale.conf:
LANG=en_US.UTF-8
LANGUAGE=en_US:en_GB:en:de_DE:de
LC_MESSAGES=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_ALL=
I’ve un-commented the en_US.UTF-8, en_GB.UTF-8 and de_DE.UTF-8 locales in the locales.gen file and generated them with locale-gen multiple times and also restarted the system a couple of times after configuration changes.
AFAIK LC_ALL is supposed to be empty, so I don’t get why the locale command complains about it.
I’ve tried some other things like
$ LANG=en_US.UTF-8 ls
or
$ LC_MESSAGES=en_US.UTF-8 ls
but that doesn’t change anything.
Also some sources recommend to set the C locale in locales.conf, but the default configuration doesn’t and it’s also not showing up in the locales.gen file. But I’ve tried that too and it didn’t change anything.
I know that Plasma and locale settings is a big mess for many years now, but I wonder if there’s a solution for this issue? Usually there was a “set and don’t touch after” solution for these kind of issues.