Promjeni jezik LightDM Greetera

Jezik koji koristim na kompjuteru je engleski. To obuhvata jezik teksta u svim programima i okruženju. Za sve ostalo, kao što je datum, jedinice za mjeru, specifičnosti brojeva, adresa i slično koristim bosanski.

Na Linux distribucijama je jednostavno prilagoditi jezike i standarde. Za to se koriste lokali (locales, ne znam tačni prevod na naš) i promjenjljive okruženja (environment variables, isti slučaj). Moje postavke izgledaju ovako:

LANG=en_US.utf8
LC_CTYPE=bs_BA.UTF-8
LC_NUMERIC=bs_BA.UTF-8
LC_TIME=bs_BA.UTF-8
LC_COLLATE=bs_BA.UTF-8
LC_MONETARY=bs_BA.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=bs_BA.UTF-8
LC_NAME=bs_BA.UTF-8
LC_ADDRESS=bs_BA.UTF-8
LC_TELEPHONE=bs_BA.UTF-8
LC_MEASUREMENT=bs_BA.UTF-8
LC_IDENTIFICATION=bs_BA.UTF-8
LC_ALL=

Koristim engleski za LANG (i LANGUAGE koji nije naveden jer ga nasljeđuje od LANG postavke) i za LC_MESSAGES. Sve ostalo koristi bosanske postavke, tj bs_BA lokal.

Globalno, odnosno sistemski mi je eksportovano samo LANG=en_US.UTF-8 u /etc/locale.conf fajlu. Znači da je sve na engleskom, osim gdje je navedeno drugačije. Nakon toga, svaki korisnik ima svoj locale.conf fajl gdje je podešeno za njega. Fajl se nalazi u ~/.config/locale.conf, a osim njega imam iste vrijednosti eksportovane u Openbox konfiguracionom fajlu u ~/.config/openbox/environment za grafičko okruženje (postavke iz locale.conf se ne pikaju pod Xorgom, ne znam još zašto).

LightDM problem

Kompjutere koriste i moji roditelji. Nemaju nikakvih problema, čak je sve i lakše jer je prevedeno na domaći jezik. Oni umjesto LANG=en_US.UTF-8 koriste LANG=bs_BA.UTF-8. Također je za njih eksportovano i LANGUAGE=bs:hr:sr. GNU gettext programi uzimaju u obzir tu promjenjljivu za postavke o jezicima, a prednost naspram korištenju samo LANG= je to što je moguće zadati i alternative u slučaju da prevod na jednom jeziku nije dostupan tako da se jezici odvoje sa dvotačkom (:).

LightDMov greeter je međutim ostao na engleskom, jer je engleski globalno namješten. Htio sam da im potpuno pružim prevedeno okruženje, tako da je i LightDMov greeter trebao biti na domaćem.

Prvo hakasto rješenje je bilo da kopiram bosanski prevod (koji je za vrijeme pisanja ovoga nepotpun), prevedem do kraja i stavim pod engleski u /usr/share/locale/en/.... Međutim sjetio sam se boljeg rješenja.

Kako sad?

LightDM pokreće systemd servis. Systemd je u stanju da proslijedi promjenjljive okruženja servisima, i to je nama pogodno. Naime programi se mogu privremeno pokrenuti sa određenim okruženjem, npr. LANG=de_DE.UTF-8 gimp. To će GIMP pokrenuti na njemačkom jeziku, bez da mijenja ikakve trajne postavke.

Isti princip se može primjeniti i za LightDM, samo što se mora dodati systemd servisu. To možemo pomoću service fajla. Najbolji način je da se napravi globalni override.

Možete ručno napraviti direktorij za servis koji želite promjeniti pod /etc/systemd/system/ zajedno sa fajlom ili koristiti systemctl edit servis.

Nama treba ENVIRONMENT= postavka. U nju unesemo željenu promjenjljivu. Ovako na kraju izgleda moj fajl:

$ cat /etc/systemd/system/lightdm.service.d/override.conf 
[Service]
Environment=
Environment="LANG=bs_BA.UTF-8"

Dva puta je navedeno, a prvi red je prazan. Nisam potpuno siguran, mislim da radi i bez praznog reda. Prazni red ima efekat da "očisti" prijašnju vrijednost, a u našem slučaju ne može naškoditi (makar ne prema znaju tokom pisanja ovog članka).