Locale.pl.txt

(20 KB) Pobierz
  Jak zrobić ustawienia lokalne w Linux-ie. (Locales)
  Peeter Joot, peeter_joot@vnet.ibm.com
  v1.5, 21 Lipca 1997.
  Wersja polska: Bartosz Maruszewski
  B.Maruszewski@zsmeie.torun.pl
  v1.4, 4 Listopada 1997


  Dokument ten opisuje jak skonfigurować twojego Linux-a, aby móc używać
  pakietu "Locales", czyli ustawień narodowych.  Dokument ten jest
  napisany w standardzie ISO-8859-2.  Wersja oryginalna znajduje się pod
  adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/sun­
  site/docs/HOWTO/>.  Nowsza wersja zawiera uaktualnione wskazania na
  katalog zawieraj±cy j±dra na ftp.icm.edu.pl
  ______________________________________________________________________

  Spis&nbsp;tre¶ci


  1. Wprowadzenie.

  2. Co to w ogóle jest pakiet "Locales"?

  3. Uwagi.

  4. Czego potrzebujesz.

  5. Instalacja wszystkiego.

  6. I co teraz?

  7. Naprawa błędu "catopen".

  8. Pytania i odpowiedzi.

     8.1 msgcat

  9. Zakończenie.

     9.1 Od tłumacza.


  ______________________________________________________________________

  1.  Wprowadzenie.


  To jest naprawdę opis tego co musiałem zrobić, żeby działał u mnie
  pakiet "Locales". Zrobiłem to tylko dla zabawy, i pomy¶lałem, że może
  niektórzy chc± sami spróbować. Jak już raz wszystko poustawiasz,
  powiniene¶ móc używać aplikacji korzystaj±cych z NLS, wraz z twoimi
  lokalnymi ustawieniami. Już niedługo pakiet "Locales" powinien być
  czę¶ci± standardowych dystrybucji i większo¶ć z tego co tu napisałem
  będzie niepotrzebne.


  2.  Co to w ogóle jest pakiet "Locales"?


  Jest to pakiet, który zawiera ustawienia specyficzne dla twojego
  kraju. (zapis daty, czasu, specjalne litery itp.) Ustawień tych nie
  powinene¶ zapisywać na stałe w swoich programach.

  Je¶li masz na swoim komputerze zainstalowane ustawienia lokalne dla
  różnych krajów/języków, to poprzez następuj±ce zmienne możesz
  kontrolować zachowanie programów korzystaj±cych z nich.  Ustawieniem
  domy¶lnym jest ustawienie wg.  standardu C lub POSIX zapisane na stałe
  w "libc".


     LANG
        -- ustawia jakiego języka używamy; może być zmienione przez
        zmienn± LC_xxxx,


     LC_COLLATE
        -- ustawia porz±dek sortowania,


     LC_CTYPE
        -- definicje znaków, duże i małe litery... używane jest to przez
        takie funkcje jak: toupper, tolower, islower, isdigit itp.


     LC_MONETARY
        -- definicja formatu liczb zwi±zanych z pieniędzmi. S± tu
        definicje separatora tysięcy, separatora ułamkowego, symbolu
        pieni±dza (zł) i miejsce, gdzie należy go umie¶cić,


     LC_NUMERIC
        -- separatory tysięcy i ułamkowe oraz grupowanie numeryczne,


     LC_TIME
        -- definicja formatu czasowego i datowego. S± tu zdefiniowane
        np. dni tygodnia, miesi±ce,


     LC_MESSAGES
        -- wyrażenia Nie i Tak,


     LC_ALL
        -- ustawia jakiego języka używamy i zmienia wszystkie inne
        zmienne LC_xxxx.

  Oto niektóre ustawienia, a jest ich znacznie więcej:


     en_CA
        -- kanadyjski angielski,


     en_US
        -- amerykański angielski,


     de_DE
        -- niemiecki niemiecki,


     fr_FR
        -- francuski francuski.

  Je¶li piszesz program i chcesz, aby można go było używać na całym
  ¶wiecie respektuj ustawienia lokalne. Najważniejszym powodem jest to,
  że nie każdy będzie używał tego samego zestawu znaków czy strony
  kodowej co ty.

  Upewnij się, że nie robisz czego¶ takiego w swoich programach:

     /* sprawdĽ czy to litera */
     if ( (( c >= 'a') && ( c <= 'z' )) ||
          (( c >= 'A') && ( c <= 'Z' )) ) { ... }



  Je¶li napiszesz co¶ takiego, to zakładasz, że użytkownik będzie używał
  tylko podstawowych znaków z kodu ASCII i nie bierzesz pod uwagę, iż
  może używać strony kodowej specyficznej dla swojego kraju. Pomija to
  takie znaki jak np. a-umlaut, które zostałoby użyte w ¶rodowisku
  niemieckim. Zamiast tego powiniene¶ raczej używać funkcji, które
  respektuj± lokalne ustawienia, jak np.  isalpha(). Je¶li twój program
  wyraĽnie wymaga tylko podstawowych znaków ASCII (US-ASCII), dalej
  używasz funkcji isalpha(), ale musisz także ustawić zmienn± LANG albo
  LC_CTYPE albo LC_ALL na "C" lub użyć funkcji setlocale(LC_CTYPE, "C").

  Ustawienia lokalne pozwalaj± na duż± elastyczno¶ć i robi± pewne
  założenia, o których programista mógł zapomnieć.

  Na przykład nie możesz z góry założyć pozycji danego znaku na stronie
  kodowej. Nic nie stoi na przeszkodzie, żeby¶ np. stworzył sobie stronę
  kodow±, na której "A" byłoby na pozycji 99 a nie 65.

  Podstawow± ide± jest to, że różni ludzie mówi± różnymi językami,
  przetsrzegaj± różnych reguł sortowania, używaj± różnych stron kodowych
  i mieszkaj± w różnych krajach. Ustawienia lokalne i funkcje, które ich
  przstrzegaj± daj± ¶rodki na respektowanie takich rzeczy i
  odpowiedniego ich traktowanie. Nie wymaga to dużego nakładu pracy,
  tylko trochę innego sposobu my¶lenia podczas pisania takich programów.


  3.  Uwagi.



  ·  Aby ustawienia lokalne na moim komputerze działały musiałem odnowić
     kilka rzeczy. No i tak: ftp.torun.pdi.net w katalogu
     /pub/nls/locale.  znajduj± się wszystkie potrzebne programy. Nie
     wiedziałem, że jest osobny pakiet "Locales" i jako¶ się domy¶liłem,
     że trzeba mieć zainstalowane odpowiednie biblioteki libc i lib.so.
     Z tego powodu to HOWTO jest w większo¶ci zapisem tego co ja
     musiałem zrobić, żeby odnowić biblioteki. Je¶li zrobisz to w taki
     sposób jak ja, będziesz musiał mieć system ELF, albo zmienić swój
     na taki, jak już ustawisz swoje lokalne definicje.


  ·  Wszystko co robiłem, aby odnowić swój system, to to samo, co jest
     potrzebne, aby przej¶ć z a.out na ELF. Je¶li tego nie zrobiłe¶,
     albo je¶li zrobiłe¶ to poprzez reinstalację Linux-a, powiniene¶
     zdobyć ostatni± wersję ELF-HOWTO. Jest to wspaniały podręcznik, w
     którym znajdziesz dodatkowe wskazówki dotycz±ce instalacji
     bibliotek libc, ld.so i innych odnowień do ELF-a.


  ·  Przed instalacj± czegokolwiek, przeczytaj odpowiednie pliki
     dostarczone wraz z wersj± instalacyjn± (README itp.). Je¶li
     popsujesz sobie co¶, bo Ľle zinterpretowałe¶ co¶, co ja tutaj
     napisałem, albo przez (oby nie) zrobienie czego¶ co ja zrobiłem,
     nie wiń mnie proszę.


  ·  Je¶li zapomnisz zainstalować now± bibliotekę libc albo ld.so, to
     możesz doprowadzić nawet do tego, że nie będziesz mógł wystartować
     systemu. Także lepiej mieć pod ręk± dyskietkę startow±, i upewnij
     się, że wszelkie krytyczne albo niezamienialne dane s±
     zarchiwizowane.
  4.  Czego potrzebujesz.


  Kilka rzeczy musisz sobie ¶ciagn±ć. Wszystko czego potrzebujesz
  znajdziesz na ftp.icm.edu.pl Kiedy ja instalowałem u siebie ustawienia
  lokalne używałem libc-5.2.18, która jest teraz troche przestarzała.
  Jak na razie powiedziano mi, że bież±c± wersj± jest 5.4.17 i tak± też
  umieszczam w opisie.  Przypuszczalnie libc-5.4.17 będzie przestarzała
  zanim zd±żysz mrugn±ć więc po prostu użyj najnowszej dostępnej wersji.

  Rozważ użycie glibc (gnu libc) zamiast Linux libc 5 w pracach
  unaradawiaj±cych (internalizacyjnych). Glibc jest w pełni unarodowiona
  i ma pełne wsparcie dla programowania narodowego tak samo jak jest w
  pełni przenaszalna FIXME i ma wbudowan± obsługę w±tków. Prawie cała
  internalizacja zrobiona w libc 5 wzięta został± z glibc. Lokalizacje i
  mapy klawiszy dla glibc s± powi±zane z dodatkami o lokalizacjami
  glibc.

  Je¶li jeste¶ za używaniem glibc, to możesz pomin±ć to mini-howto.
  Doł±czanie dodatków lokalizacyjnych do kompilacji i instalacji glibc
  jest trywialne i opisane jest w dokumentacji do instalacji glibc.
  ednak ostrzegam, że pełna aktualizacja nie jest trywialnym zadaniem!
  Mam nadzieję, że RedHat (którego używam) wypu¶ci niedługo dystrybucję
  opart± na glibc, bo jako¶ nie u¶miecha mi się rekompilacja całego
  mojego systemu.  Wszystkie poniższe pakiety możesz znaleĽć pod adresem
  ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/GCC oprócz "make" -
  /pub/Linux/sunsite/devel/make oraz j±dra - /pub/Linux/kernel/


  ·  ustawienia lokalne i Ľródła zestawów znaków -- to jest to, co
     kompilujesz, używaj±c localedef,


  ·  libc-5.4.x.bin.tar.gz -- biblioteki dzielone w wersji ELF dla
     bibliotek C i MATH.  Zauważ, że prekompilowany dla biblioteki
     libc-5.4.17 program "localedef" ma  przypuszczalnie w sobie bł±d i
     tworzy LC_CTYPE ze zł± liczb± magiczn±. Oznacza to przypuszczalnie,
     że jaka¶ stara wersja "localedef" dostała się do dystrybucji.

  ·  libc-5.4.x.tar.gz -- Ľródła bibliotek dzielonych w wersji ELF -
     będziesz tego potrzebował, aby skompilować localedef,

  ·  make-3.74.tar.gz -- może będziesz musiał skompilować "make", tak
     aby zawierał łatę na tzw. dirent bug,

  ·  release.libc-5.4.x -- ta wersja zawiera łatę, która pozwala
     skompilować "make", minęło już sporo czasu odk±d powstał bł±d w
     libc i przypuszczalnie nie musisz się już tym przejmować.

  ·  ld.so-1.8.x -- biblioteka do ł±czenia dynamicznego w wersji ELF,


  ·  gcc-2.7.2+ -- kompilator C w wersji ELF,


  ·  j±dro 2.0.x -- j±dro w wersji ELF,


  ·  binutils 2.7.0.x -- różne narzędzia do binariów potrzebne do
     kompilacji.


  5.  Instalacja wszystkiego.



  Oto co zrobiłem, aby wszystko zainstalować. Miałem już system ELF
  (kompilator, j±dro ...).


  1. Najpierw zainstalowałem pakiet binutils:
      tar xzf binutils-2.6.0.2.bin.tar.gz -C /

  2. Potem zainstalowałem bibliotekę do ł±czenia:


        tar zxf ld.so-1.7.12.tar.gz -C /usr/src
        cd /usr/src/ld.so-1.7.12
        sh instldso.sh




  3. Potem binaria do libc. Przeczytaj odpowiednie pliki dotycz±ce
     instalacji w release.libc-5.4.17.


        rm -f /usr/lib/libc.so /usr/lib/libm.so
        rm -f /usr/include/iolibio.h /usr/...
Zgłoś jeśli naruszono regulamin