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 (Przykład dla Warszawy) (Zaczynamy od skopiowania pliku strefy do localtime) # cp /usr/share/zoneinfo/Europe/Warsaw /etc/localtime (Następnie ustawiamy tę strefę w pliku konfiguracyjnym) # 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". |
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 |
Rekomendowany: CLOCK="UTC" Alternatywny: CLOCK="local" |
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 |
(Gdy lokalizacje zostały ustawione dla całego systemu) # env-update && source /etc/profile (Gdy lokalizacje zostały ustawione tylko dla poszczególnych użytkowników) $ 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 (Dodajemy zmienną LINGUAS. Przykład dla języków angielskiego, fińskiego i polskiego:) 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" ## ustawienie dla
międzynarodowych klawiatur.
# Option "XkbVariant" "nodeadkeys" ## ustawienie zmiennej
używanej przez xterm
...
|
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.
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.
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
|
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 |
(W katalogu domowym) $ echo 'XTerm*font: fixed' >> .Xresources $ xrdb -merge .Xresources |
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. |
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.