Why does Manjaro have such localisation issues?

I’ve used Gentoo, Ubuntu, Fedora, Redhat and none of them has caused issues with the locales like Manjaro does for me.

Filezilla needed a command line fix in the .desktop file to launch since LC_ALL isn’t defined.
image

Strawberry shows some of it’s GUI in Chinese/Japanese.
image

In Wine I can’t type the letter v instead I get an ö and the letter v is not defined anywhere on the keyboard in Wine.

KDE Plasma shows a mix of English and Swedish although it should ONLY show English with Swedish comma/date formats
image
image

K3b says this:

System locale charset is ANSI_X3.4-1968
Your system’s locale charset (i.e. the charset used to encode filenames) is set to ANSI_X3.4-1968. It is highly unlikely that this has been done intentionally. Most likely the locale is not set at all. An invalid setting will result in problems when creating data projects.
Solution: To properly set the locale charset make sure the LC_* environment variables are set. Normally the distribution setup tools take care of this.

:~>locale                                                                                                                                                                                                                                                                       
locale: Cannot set LC_CTYPE to default locale: No such file or directory
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_SE.UTF-8
LC_CTYPE="en_SE.UTF-8"
LC_NUMERIC=sv_SE.UTF-8
LC_TIME=sv_SE.UTF-8
LC_COLLATE=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_MESSAGES="en_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
LC_ALL=

Locale errors is common - for reasons unknown - to me a least.

I can easily understand your confusion and your system confusion as en_SE.UTF-8 does not exist.

~ $ cat /etc/locale.gen | grep SE     
#sv_SE.UTF-8 UTF-8   
#sv_SE ISO-8859-1

I have only seen references to non-existing locales with KDE Plasma - never with other systems - so whether this is caused by Manjaro Settings Manager or by KDE system settings - I don’t know - because I don’t use Plasma. At first glance it does not look like MSM but the KDE settings.

So my advise is to fix the lines in /etc/locale.conf to read sv_SE and when you prefer english then use

LANG=en_DK.UTF-8
LC_CTYPE=sv_SE.UTF-8
LC_MESSAGES=en_DK.UTF-8

Then edit your /etc/locale.gen (scroll to the end of file check they are not doubled) to include - ensure en_US.UTF-8 for fallback

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

Then rebuild

sudo locale-gen

For comparison is the content from my system (technically I could have da_DK on everything but LANG but I really don’t bother that much)

~ $ cat /etc/locale.conf
LANG=en_DK.UTF-8
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_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
2 Likes

Thanks,
This has solved the issue with Filezilla, Wine and perhaps KDE…

K3b still complains that my System Locale Charset is ANSI_X3.4-1968
which is fixed by changing the .desktop file to be “env LC_ALL=en_US.UTF-8 k3b” instead of the default.

I’m regretting my choice of KDE Plasma as a Desktop, I’ve never had this much issues before running Gnome.

locale -a spits out ALL the locales not a few as I’ve defined them in locale.conf, any ideas to why?

You shouldn’t need to modify the desktop entry - remember that any change you make in /usr/ tree will be overwritten without warning - so if such an edit is necessary - you should copy the entry to home in ~/.local/share/applications and keep the modification local.

I suspect this caused by your /etc/locale.gen - only the necessary locales should be uncommented.

And only one of a specific locale as they are usually in pairs - UTF-8 and ISO-XXXX-Y - and the UTF-8 is the recommended choice.

As the default for locale.gen is all commented - you could remove all content and only leave the ones in use.

Then rerun the locale generator script.

Remember that your /etc/locale.conf the entry LC_ALL= must be undefined.

It is reserved for e.g. debugging where you set it before executing a command to get the standard messages when you have e.g. swedish messages and want to post the output to an english speaking forum.

LANG=C command

Yeah this is what I suspected as well, but there are only three lines uncommented in locale.gen

#
# Locales enabled by Calamares
en_GB.UTF-8 UTF-8
sv_SE.UTF-8 UTF-8
en_US.UTF-8 UTF-8
~> cat /etc/locale.conf                                                                                                                                                                                                                                              
LANG=en_US.UTF-8
LC_CTYPE=sv_SE.UTF-8
LC_MESSAGES=en_US.UTF-8

The command locale -a should only list the generated locales so if you are getting more thatn that - rerunning the locale-gen script would remove those not enabled.

~ $ cat /etc/locale.conf
LANG=en_DK.UTF-8
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_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
~ $ cat /etc/locale.gen
    .....
###
#
# Locales enabled by Calamares
en_US.UTF-8 UTF-8
en_DK.UTF-8 UTF-8
~ $ locale -a
C
en_DK.utf8
en_US.utf8
POSIX
 ~ $ cat /etc/locale.conf                                                                                                                                                                                                                                                         ✔ 
LANG=en_US.UTF-8
LC_CTYPE=sv_SE.UTF-8
LC_MESSAGES=en_US.UTF-8


It doesn’t.

    ~  sudo locale-gen                                                                                                                                                                                                                                                              ✔ 
[sudo] password for max: 
Generating locales...
  en_GB.UTF-8... done
  sv_SE.UTF-8... done
  en_US.UTF-8... done
Generation complete.
Copying saved locales...
Copying complete.

Locale is as long as ever.

    ~  locale -a                                                                                                                                                                                                                                                             ✔  6s  
aa_DJ.utf8
aa_ER.utf8
aa_ER.utf8@saaho
aa_ET.utf8
af_ZA.utf8
agr_PE.utf8
ak_GH.utf8
am_ET.utf8
an_ES.utf8
anp_IN.utf8
ar_AE.utf8
ar_BH.utf8
ar_DZ.utf8
ar_EG.utf8
ar_IN.utf8
ar_IQ.utf8
ar_JO.utf8
ar_KW.utf8
ar_LB.utf8
ar_LY.utf8
ar_MA.utf8
ar_OM.utf8
ar_QA.utf8
ar_SA.utf8
ar_SD.utf8
ar_SS.utf8
ar_SY.utf8
ar_TN.utf8
ar_YE.utf8
as_IN.utf8
ast_ES.utf8
ayc_PE.utf8
az_AZ.utf8
az_IR.utf8
be_BY.utf8
be_BY.utf8@latin
bem_ZM.utf8
ber_DZ.utf8
ber_MA.utf8
bg_BG.utf8
bhb_IN.utf8
bho_IN.utf8
bho_NP.utf8
bi_VU.utf8
bn_BD.utf8
bn_IN.utf8
bo_CN.utf8
bo_IN.utf8
br_FR.utf8
brx_IN.utf8
bs_BA.utf8
byn_ER.utf8
C
ca_AD.utf8
ca_ES.utf8
ca_ES.utf8@valencia
ca_FR.utf8
ca_IT.utf8
ce_RU.utf8
chr_US.utf8
cmn_TW.utf8
crh_UA.utf8
csb_PL.utf8
cs_CZ.utf8
cv_RU.utf8
cy_GB.utf8
da_DK.utf8
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_IT.utf8
de_LI.utf8
de_LU.utf8
doi_IN.utf8
dsb_DE.utf8
dv_MV.utf8
dz_BT.utf8
el_CY.utf8
el_GR.utf8
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL.utf8
en_IN.utf8
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SC.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM.utf8
en_ZW.utf8
eo.utf8
es_AR.utf8
es_BO.utf8
es_CL.utf8
es_CO.utf8
es_CR.utf8
es_CU.utf8
es_DO.utf8
es_EC.utf8
es_ES.utf8
es_GT.utf8
es_HN.utf8
es_MX.utf8
es_NI.utf8
es_PA.utf8
es_PE.utf8
es_PR.utf8
es_PY.utf8
es_SV.utf8
es_US.utf8
es_UY.utf8
es_VE.utf8
et_EE.utf8
eu_ES.utf8
fa_IR.utf8
ff_SN.utf8
fi_FI.utf8
fil_PH.utf8
fo_FO.utf8
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
fur_IT.utf8
fy_DE.utf8
fy_NL.utf8
ga_IE.utf8
gd_GB.utf8
gez_ER.utf8
gez_ER.utf8@abegede
gez_ET.utf8
gez_ET.utf8@abegede
gl_ES.utf8
gu_IN.utf8
gv_GB.utf8
hak_TW.utf8
ha_NG.utf8
he_IL.utf8
hif_FJ.utf8
hi_IN.utf8
hne_IN.utf8
hr_HR.utf8
hsb_DE.utf8
ht_HT.utf8
hu_HU.utf8
hy_AM.utf8
ia_FR.utf8
id_ID.utf8
ig_NG.utf8
ik_CA.utf8
is_IS.utf8
it_CH.utf8
it_IT.utf8
iu_CA.utf8
ja_JP.utf8
kab_DZ.utf8
ka_GE.utf8
kk_KZ.utf8
kl_GL.utf8
km_KH.utf8
kn_IN.utf8
kok_IN.utf8
ko_KR.utf8
ks_IN.utf8
ks_IN.utf8@devanagari
ku_TR.utf8
kw_GB.utf8
ky_KG.utf8
lb_LU.utf8
lg_UG.utf8
li_BE.utf8
lij_IT.utf8
li_NL.utf8
ln_CD.utf8
lo_LA.utf8
lt_LT.utf8
lv_LV.utf8
lzh_TW.utf8
mag_IN.utf8
mai_IN.utf8
mai_NP.utf8
mfe_MU.utf8
mg_MG.utf8
mhr_RU.utf8
mi_NZ.utf8
miq_NI.utf8
mjw_IN.utf8
mk_MK.utf8
ml_IN.utf8
mni_IN.utf8
mn_MN.utf8
mnw_MM.utf8
mr_IN.utf8
ms_MY.utf8
mt_MT.utf8
my_MM.utf8
nan_TW.utf8
nan_TW.utf8@latin
nb_NO.utf8
nds_DE.utf8
nds_NL.utf8
ne_NP.utf8
nhn_MX.utf8
niu_NU.utf8
niu_NZ.utf8
nl_AW.utf8
nl_BE.utf8
nl_NL.utf8
nn_NO.utf8
nr_ZA.utf8
nso_ZA.utf8
oc_FR.utf8
om_ET.utf8
om_KE.utf8
or_IN.utf8
os_RU.utf8
pa_IN.utf8
pap_AW.utf8
pap_CW.utf8
pa_PK.utf8
pl_PL.utf8
POSIX
ps_AF.utf8
pt_BR.utf8
pt_PT.utf8
quz_PE.utf8
raj_IN.utf8
ro_RO.utf8
ru_RU.utf8
ru_UA.utf8
rw_RW.utf8
sah_RU.utf8
sa_IN.utf8
sat_IN.utf8
sc_IT.utf8
sd_IN.utf8
sd_IN.utf8@devanagari
se_NO.utf8
sgs_LT.utf8
shn_MM.utf8
shs_CA.utf8
sid_ET.utf8
si_LK.utf8
sk_SK.utf8
sl_SI.utf8
sm_WS.utf8
so_DJ.utf8
so_ET.utf8
so_KE.utf8
so_SO.utf8
sq_AL.utf8
sq_MK.utf8
sr_ME.utf8
sr_RS.utf8
sr_RS.utf8@latin
ss_ZA.utf8
st_ZA.utf8
sv_FI.utf8
sv_SE.utf8
sw_KE.utf8
sw_TZ.utf8
szl_PL.utf8
ta_IN.utf8
ta_LK.utf8
tcy_IN.utf8
te_IN.utf8
tg_TJ.utf8
the_NP.utf8
th_TH.utf8
ti_ER.utf8
ti_ET.utf8
tig_ER.utf8
tk_TM.utf8
tl_PH.utf8
tn_ZA.utf8
to_TO.utf8
tpi_PG.utf8
tr_CY.utf8
tr_TR.utf8
ts_ZA.utf8
tt_RU.utf8
tt_RU.utf8@iqtelif
ug_CN.utf8
uk_UA.utf8
unm_US.utf8
ur_IN.utf8
ur_PK.utf8
uz_UZ.utf8
uz_UZ.utf8@cyrillic
ve_ZA.utf8
vi_VN.utf8
wa_BE.utf8
wae_CH.utf8
wal_ET.utf8
wo_SN.utf8
xh_ZA.utf8
yi_US.utf8
yo_NG.utf8
yue_HK.utf8
yuw_PG.utf8
zh_CN.utf8
zh_HK.utf8
zh_SG.utf8
zh_TW.utf8
zu_ZA.utf8
    ~                                                                               

Then you have other issues and I have no idea what but this is a symptom of something which is not normal for Manjaro

Since you have done a lot of changes - e.g. the modification of desktop entries to work around the locale issue - I suspect you have made other changes which has created a system which does not match a normal Manjaro system.

If I

  • include a random locale
  • run the locale generator
  • check the locale
  • exclude the locale
  • run locale generator
  • recheck

the random locale appears and disappears.

I cannot say what your issue is but I know for certain - it is not how a normal Manjaro system works.

1 Like

It’s KDE messing it up with a language that doesn’t exist.
Clearing out all KDE settings and only using languages that actually exists (even though KDE lists them) made the problem go away.