Lokalizacja Gentoo Linux
1.
Strefa czasowa
Aby system działał poprawnie, musi wiedzieć w jakiej strefie czasowej się
znajduje. Należy zatem najpierw poszukać odpowiedniej strefy w katalogu
/usr/share/zoneinfo. Następnie należy ją ustawić w pliku
/etc/conf.d/clock. Przestrzegamy przed używaniem stref
/usr/share/zoneinfo/Etc/GMT* gdyż ich nazwy nie mówią nic o tym
gdzie dokładnie te strefy się znajdują. Na przykład GMT-8 to tak
naprawdę strefa GMT+8.
Listing 1.1: Konfiguracja strefy czasowej |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
# nano -w /etc/conf.d/clock
TIMEZONE="Europe/Warsaw"
# date
Tue May 8 14:16:32 CEST 2007
|
Uwaga:
Należy sprawdzić czy trzy lub cztery litery kodu strefy czasowej są poprawne
(w naszym polskim przypadku będą to "CEST" (Central European Summer Time)
latem lub "CET" (Central European Time) zimą).
|
Uwaga:
Można ustawić wartość TZ (również wziętą z
/usr/share/zoneinfo w pliku rc (.bash_profile dla
basha), aby skonfigurować strefę czasową tylko dla jednego użytkownika. W
naszym przypadku może to być TZ="Europe/Warsaw".
|
2.
Zegar sprzętowy
W większości systemów Gentoo Linux, zegar sprzętowy jest ustawiony na UTC (lub
GMT, Greenwhich Mean Time), a następnie strefa czasowa jest brana pod uwagę
przy ustalaniu konkretnej godziny. Jeżeli z jakichś powodów zegar sprzętowy nie
jest ustawiony na UTC, to należy wyedytować /etc/rc.conf i zmienić
wartość zmiennej CLOCK.
Listing 2.1: Zegar lokalny vs. GMT |
CLOCK="UTC"
CLOCK="local"
|
3.
Lokalizacje systemu
Co to jest lokalizacja?
Lokalizacje są zbiorem informacji dla większości programów pozwalającym na
ustalenie kraju i języka. Lokalizacje i informacje o nich są częścią biblioteki
systemowej i możesz je znaleźć w /usr/share/locale w większości
systemów. Nazwy lokalizacji mają postać ab_CD, gdzie ab jest
kodem języka (jak określono w ISO-639), a CD kodem kraju (z ISO-3166).
Warianty są często dołączane do nazw lokalizacji, na przykład en_GB.utf8
lub de_DE@euro. Więcej informacji można znaleźć na stronach Wikipedii.
Zmienne środowiskowe dla lokalizacji
Ustawienia lokalizacji są zapisywane w zmiennych środowiskowych, które ustawia
się w pliku /etc/env.d/02locale (dla ustawień całego systemu) i
pliku ~/.bashrc (dla użytkownika). Zmienne kontrolują różne
aspekty ustawień lokalizacji, omawiamy je w tabeli poniżej. Wszystkie zmienne
mają jeden format lokalizacji ab_CD - tak jak opisano to powyżej.
| Nazwa zmiennej |
Opis |
| LANG |
Definiuje wszystkie ustawienia w lokalizacji naraz. Dalsze indywidualne
dopasowanie ustawień odbywa się za pomocą zmiennych LC_* opisanych poniżej.
|
| LC_COLLATE |
Definiuje porządek alfabetyczny. Może mieć efekt na np. wyświetlenie
zawartości katalogów.
|
| LC_CTYPE |
Definiuje zarządzanie ustawieniami znaków dla systemu. Np. które
znaki są widziane jako część alfabetu, a które jako numeryczne. Czasami
ustawia to również zestaw używanych znaków.
|
| LC_MESSAGES |
Ustawienie dla aplikacji, które używają zmiennych lokalizacji do wyświetlania
wiadomości (większość programów GNU, więcej informacji w następnym
rozdziale).
|
| LC_MONETARY |
Definiuje jednostkę waluty i jej format numeryczny. |
| LC_NUMERIC |
Definiuje formatowanie wartości numerycznych które nie są walutą. Ustala np.
separatory tysięcy i dziesiątek.
|
| LC_TIME |
Definiuje format daty i czasu. |
| LC_PAPER |
Definiuje domyślny rozmiar papieru. |
| LC_ALL |
Specjalna zmienna do nadpisywania pozostałych.
|
Uwaga:
Niektóre programy pisane są w taki sposób, że oczekują, aby sortowanie odbywało
się w tradycyjnym angielskim alfabecie jednak niektóre lokale, na przykład
Estońskie, używają innego sortowania. Dlatego zaleca się, aby ustawić zmienną
LC_COLLATE na wartość C w przypadku systemu, który ma szerokie zastosowania.
|
Ostrzeżenie:
Nie zaleca się stosowania zmiennej LC_ALL gdyż nie można jej później łatwo
nadpisać. Zmienną tę należy stosować do celów testowych i nigdy nie należy jej
ustawiać w plikach startowych.
|
Większość użytkowników ustawi jedynie zmienną LANG:
Listing 3.1: Ustawianie polskiej lokalizacji w pliku /etc/env.d/02locale |
LANG="pl_PL.utf8@euro"
LC_COLLATE="C"
|
Uwaga:
Dodajemy @euro do lokalizacji jeżeli chcemy używać symbolu tej waluty
(€). Nie ma go w polskich lokalizacjach, ponieważ nie znajduje się w
tabeli znaków normy iso8859-2.
|
Możliwe jest również i jest to działanie dość powszechne w szczególności w
bardziej tradycyjnych środowiskach UNIX, pozostawienie ustawień globalnych
niezmienionych, na przykład w przypadku lokali "C". Użytkownik może cały
czas ustawić lokale w pliku konfiguracyjnym własnej powłoki:
Listing 3.2: Ustawianie polskiej lokalizacji dla użytkownika w pliku ~/.bashrc |
export LANG="pl_PL.utf8@euro"
export LC_COLLATE="C"
|
Inny sposobem konfiguracji systemu jest pozostawienie domyślnej lokalizacji C i
uruchomienie zestawu znaków UTF-8 w tym samym czasie. Opcja ta jest osiągalna
poprzez wpisanie poniższych ustawień do pliku /etc/env.d/02locale:
Listing 3.3: Użycie lokali C wraz z kodowanie UTF-8 |
LC_CTYPE=pl_PL.utf8
|
Używając powyższych wskazówek użytkownicy będą widzieli zlokalizowane nazwy
plików poprawnie jednak nie będą zmuszeni do używania języka preferowanego
przez administratora systemu.
Aby wiadomości w programach działały jak należy, konieczne będzie skompilowanie
ich z obsługą nls (native language support), którą zapewnia flaga USE o
tej samej nazwie. W takim wypadku do wyświetlania właściwych wiadomości
konieczna będzie biblioteka gettext. Portage zainstaluje ją automatycznie kiedy
tylko będzie potrzebna.
Gdy mamy już ustawione odpowiednie lokale, należy upewnić się, że
zaktualizowaliśmy zmienną środowiskową:
Listing 3.4: Aktualizacja środowiska |
# env-update && source /etc/profile
$ source ~/.bashrc
|
Po aktualizacji, należy zabić serwer X poprzez kombinację klawiszy
Ctrl-Alt-Backspace, wylogować się, a następnie zalogować jako
użytkownik.
Powinniśmy sprawdzić czy zmiany, które wprowadziliśmy przyniosły oczekiwane
działanie:
Listing 3.5: Weryfikacja zmian |
$ locale
|
Istnieje dodatkowa zmienna mająca wpływ na instalowane lokalizacje, ma ona
nazwę LINGUAS. Pozwala ona na określenie plików językowych jakie mają być
instalowane wraz z aplikacjami opartymi na gettext. Pozwala ona również na
wybranie i zainstalowanie tylko niektórych z lokalizacji dostępnych w
pakietach, takich jak kde-base/kde-i18n, czy
app-office/openoffice. Ustawia się ją w pliku
/etc/make.conf i ma ona postać listy kodów języków, jakie chcemy
zainstalować oddzielonych spacjami.
Listing 3.6: Ustawianie zmiennej LINGUAS w pliku make.conf |
# nano -w /etc/make.conf
LINGUAS="en fi pl"
|
Generowanie specyficznych lokalizacji
Do wygenerowania lokalizacji innych niż domyślne służy program
localedef. Na przykład:
Listing 3.7: Generowanie lokalizacji za pomocą localedef |
# localedef -c -i pl_PL -f ISO-8859-2 pl_PL.ISO-8859-2
|
Po wygenerowaniu lokalizacji, można je wyeksportować jako zmienną LANG.
Listing 3.8: Eksportowanie zmiennej LANG |
# export LANG="pl_PL.ISO-8859-2"
|
Należy zaktualizować środowisko po dokonaniu zmian
Listing 3.9: Aktualizacja środowiska |
# env-update && source /etc/profile
|
Po aktualizacji, należy zabić serwer X poprzez kombinację klawiszy
Ctrl-Alt-Backspace, wylogować się, a następnie zalogować jako
użytkownik.
Budowanie lokalizacji dla glibc
W systemie rzadko kiedy używa się więcej niż jednej, góra dwóch lokalizacji.
Można je wybrać w pliku /etc/locale.gen.
Listing 3.10: Dodawanie wpisów do pliku /etc/locale.gen |
en_US ISO-8859-1
en_US.UTF-8 UTF-8
pl_PL ISO-8859-2
|
Kolejnym krokiem jest przekompilowanie i uruchomienie programu
locale-gen. Utworzy on wszystkie lokalizacje określone w pliku
/etc/locale.gen.
Uwaga:
locale-gen jest dostępne w glibc-2.3.6-r4 i nowszych. Jeśli w
systemie jest zainstalowana starsza wersja, należy ją zaktualizować.
|
Aby sprawdzić czy wybrane lokalizacje są dostępne należy uruchomić locale
-a.
4.
Ustawienia klawiatury dla konsoli
Ustawienie klawiatury używane przez konsole jest konfigurowane w pliku
/etc/conf.d/keymaps przez zmienną KEYMAP. Poprawne
wartości można znaleźć w /usr/share/keymaps/{arch}/.
i386 ma podgromady (qwerty/,
azerty/...). Niektóre języki mają kilka opcji, należy na
drodze eksperymentów wybrać najlepsze ustawienia.
Listing 4.1: Ustawianie mapowania klawiatury dla konsoli |
KEYMAP="pl"
|
5.
Mapowanie klawiatury dla serwera X
Mapowanie klawiatury używane przez serwer X jest ustawianie w pliku
/etc/X11/xorg.conf w zmiennej XkbLayout.
Listing 5.1: Ustawianie mapowania dla X |
Section "InputDevice"
Identifier "Keyboard1"
...
Option "XkbLayout" "pl2"
#Option "XkbModel" "pc105"
# Option "XkbVariant" "nodeadkeys"
...
|
Jeżeli posiadamy międzynarodowy układ klawiatury, powinniśmy ustawić opcję
XkbModel na wartość pc102 lub pc105. Pozwoli to mapować
dodatkowe klawisze specyficzne dla danej klawiatury.
Opcja martwe klawisze (deadkeys) pozwala na wciskanie klawiszy, których znaki
nie pojawiają się od razu, a muszą zostać wciśnięte w kombinacji z innymi, aby
wyświetlić znak np. é, á itp. Ustawienie opcji XkbVariant na
nodeadkeys pozwala wprowadzać znaki specjalne do terminali X.
Jeżeli chcemy przełączać się miedzy więcej niż jednym układem klawiatury (dla
przykładu między rosyjskim i angielskim), wystarczy dodać kilka linijek do
pliku xorg.conf, aby zdefiniować pożądane przez nas ustawienia
klawiatury oraz skrót do przełączania się między nimi.
Listing 5.2: Przełączanie się pomiędzy dwoma układami klawiatury |
Section "InputDevice"
Identifier "Keyboard1"
...
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
|
Ustawienie opcji XkbOptions pozwala na przełączanie się pomiędzy
różnymi układami klawiatury poprzez prostą kombinację klawiszy
Alt-Shift. Dzięki opcji grp_led:scroll włączana i wyłączana
będzie również dioda Scroll Lock. Jest to poręczna informacja, pozwalająca
rozpoznać jakiego układu używamy w danym momencie.
6.
KDE
W celu spolszczenia KDE należy zainstalować pakiet kde-i18n. Sporo ułatwi
ustawienie wcześniej zmiennej LINGUAS, którą
opisaliśmy nieco wcześniej.
7.
Symbol Euro w konsoli
Aby wyświetlał się symbol Euro, należy ustawić zmienną CONSOLEFONT w
/etc/conf.d/consolefont. Wartość jaką należy do niej wpisać można
odnaleźć w katalogu /usr/share/consolefonts/. Należy wybrać nazwę
czcionki i opuścić rozszerzenie pliku (.psfu.gz). Symbol euro znajduje
się na przykład w czcionce lat2a-16.
Listing 7.1: Ustawienie fontów dla konsoli |
CONSOLEFONT="lat2a-16"
|
Powinniśmy sprawdzić czy CONSOLEFONT znajduje się w poziomie uruchomieniowym
boot:
Listing 7.2: Weryfikacja poziomu uruchomieniowego |
# rc-update -v show | grep -i consolefont
|
Jeżeli CONSOLEFONT nie znajduje się na żadnym z poziomów
uruchomieniowych, należy je na jakiś dodać.
Listing 7.3: Dodawanie consolefont do prawidłowego poziomu uruchomieniowego |
# rc-update add consolefont boot
|
8.
Symbol Euro w X
Większość aplikacji
Zmuszenie X-ów do wyświetlania symbolu Euro jest trochę trudniejsze. Pierwszą
rzeczą, jaką należy zrobić jest zmiana definicji fixed i variable
w pliku /usr/share/fonts/misc/fonts.alias tak, by kończyły
się ciągiem iso8859-2 zamiast iso8859-1.
Listing 8.1: Ustawienie domyślnych czcionek dla X |
fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-2
variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-2
|
Niektóre aplikacje używają własnych czcionek i należy skonfigurować je
oddzielnie do używania takich z symbolem Euro. Można to zrobić na poziomie
użytkownika w pliku .Xdefaults (plik można skopiować do
/etc/skel/, aby stał się domyślnym dla nowych użytkowników) lub na
poziomie globalnym dla każdej aplikacji w plikach
/usr/share/X11/app-defaults/ (jak xterm). W tych plikach generalnie
trzeba zmienić istniejącą linię, niż dodawać nową. Na przykład, aby zmienić
czcionkę dla xterma:
Listing 8.2: Ustawianie czcionek dla xterm |
$ echo 'XTerm*font: fixed' >> .Xresources
$ xrdb -merge .Xresources
|
Symbol Euro w (X)Emacs
Aby używać symbolu Euro w (X)Emacs, należy dodać poniższą linijkę do pliku
.Xdefaults:
Listing 8.3: Ustawianie czcionek dla emacsa |
Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-2
|
Dla XEmacs (nie Emacs), należy dokonać więcej zmian i dodać następujący wpis w
pliku /home/user/.xemacs/init.el:
Listing 8.4: Ustawianie czcionek dla xemacs |
(define-key global-map '(EuroSign) '[€])
|
Uwaga:
Symbol w [] jest symbolem Euro.
|
OpenOffice.org
Ebuild app-office/openoffice oraz app-office/openoffice-bin
korzysta ze zmiennej LINGUAS w celu wybrania
odpowiedniego pakietu językowego dla interfejsu użytkownika. Wszystkie
szczegóły dotyczące statusu poszczególnych lokalizacji OpenOffice znajdują się
na jego stronie
domowej.
|