Home Dokumentacje Lokalizacja Gentoo Linux
10 | 12 | 2019
Lokalizacja Gentoo Linux Drukuj

Lokalizacja Gentoo Linux

Spis treści:

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
(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".

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

Rekomendowany:
CLOCK="UTC"
Alternatywny:
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

(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.

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

(W katalogu domowym)
$ 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.

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.