[HowTo] Use multiple languages in KDE Plasma

Difficulty: ★☆☆☆☆

This is not meant as a complete tutorial but rather an addition to the existing ones if you use plasma.

As a non native English speaker you might want to change locale settings to fit your local language but still keep some settings in English. There are a few tutorials out there, I thought a specific one for plasma could be needed. But here is a general one that I recommend giving a read first.

In this example I will use English as the os language, but set a few locale variables to Swedish and C (C is very useful if the English version, sorting for example is not doing what you want it to).

Start by configuring your locale by editing:
sudo nano /etc/locale-gen

You can either remove the # in front of the language/languages you want to use or just add them at the bottom for you to find them more easy if you come back to the file at a later stage. (Calamares might have already added locales at the bottom of the file, in that case make sure the locale/locales is defined only once in the file)

In my case it is:

en_US.UTF-8 UTF-8
sv_SE.UTF-8 UTF-8

Run: sudo locale-gen to create the locales.

Now open Settings > Regional Settings

In here set everything as you want it, for me everything except Time and Language is set to Swedish. I do not want time to be in Swedish (weekdays etc would be in Swedish, I want that in English).
But at the same time, the date format in US do not fit my preference, but the C locale does, so I click modify and set time to C.

These settings will be saved in ~/.config/plasma-localerc

[Formats]
LANG=en_US.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_NAME=sv_SE.UTF-8
LC_NUMERIC=sv_SE.UTF-8
LC_PAPER=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_TIME=C

[Translations]
LANGUAGE=en_US

Edit /etc/locale.conf and make sure LANGUAGE and LC_ALL is commented out with a # (or they will override the variables) and that the rest of the locales are set as you set them in plasma:
sudo nano /etc/locale.conf

And here is the trick:
Since we have set the locale in plasma, that is the locale that will be used in plasma (in my example time is set to C) but if I set time to C in locale.conf the login screen will also show seconds, I do not want that so I opt to use the US time here (defined by LANG) ie I do not set LC_TIME here (comment it out).

Sorting is also not working as I want it, but there is no setting in plasma for that, but fear not, you can use locale.conf and set LC_COLLATE to fix that:

#LC_ALL=
LANG=en_US.UTF-8
#LANGUAGE=en_US.UTF-8
LC_COLLATE=C
LC_NUMERIC=sv_SE.UTF-8
#LC_TIME=C
LC_MONETARY=sv_SE.UTF-8
LC_PAPER=sv_SE.UTF-8
LC_NAME=sv_SE.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.UTF-8
LC_IDENTIFICATION=sv_SE.UTF-8

Log out (or reboot if you want to make sure your login screen displays the time correctly) and login again.
I use SDDM so I reboot to see the changes take effect on the login screen.
We can now see what variables are in use (in plasma) by echoing them:

$ echo $LC_TIME
C

$ echo $LC_COLLATE
C

$ echo $LC_MONETARY
sv_SE.UTF-8

There is also the Manjaro Settings Manager, I THINK you might be able to do the settings in locale.conf here, but I have not tested this (the above is tested and works). You can NOT set C in there though, that is why I opted to not include that feature when configuring this on my computer.

Hope this helps.

2 Likes