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?
Napomena: ovo je stari, lošiji način. Vidi dole za bolje i čistije riješenje
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:
[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).
Kako sad, ali stvarno?
Ukratko: samo pokrenuti LightDM-GTK-Greeter sa drugim jezikom. Razlog tome je što ako pokrećemo LightDM, sesija naslijedi environment variable i to može dovesti to problema naknadno.
LightDM saznaje koji su mu greeteri dostupni preko desktop fajlova,
obično u /usr/share/xgreeters
. Kopirao sam fajl od LightDM-GTK-Greetera
i izmjenio Exec=
liniju. Koristio sam env
program koji pokreće
programe u modifikovanom okruženju, tj. sa drugim environment variables.
Nakon toga potrebno je samo LightDMu reći da koristi naš novi greeter
navođenjem toga u njegovom konfiguracionom fajlu sa greeter-session
opcijom.
[Desktop Entry]
Name=LightDM GTK+ Greeter
Comment=This runs the GTK+ greeter, it should only be run from LightDM
Exec=env LANGUAGE=bs lightdm-gtk-greeter
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
Vjerovatno je env
bespotreban i radilo bi i jednostavno sa Exec=LANGUAGE=bs lightdm-gtk-greeter
,
ali sam prelijen da isprobam, jer ovako već radi.
Arch Linux korisnici mogu koristiti moj PKGBUILD da instaliraju modifikovani desktop fajl.