Sophie

Sophie

distrib > Mandriva > 8.1 > i586 > by-pkgid > 1d876fa8c1caf5809b8232d098efff65 > files > 63

howto-text-pl-8.1-1mdk.noarch.rpm

  Jak zrobiæ ustawienia lokalne w Linux-ie. (Locales)
  Peeter Joot, peeter_joot@vnet.ibm.com
  v1.5, 21 Lipca 1997.
  WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
  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 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.


  ______________________________________________________________________

  11..  WWpprroowwaaddzzeenniiee..


  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.


  22..  CCoo ttoo ww ooggóóllee jjeesstt ppaakkiieett ""LLooccaalleess""??


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


     LLAANNGG
        -- ustawia jakiego jêzyka u¿ywamy; mo¿e byæ zmienione przez
        zmienn± LC_xxxx,


     LLCC__CCOOLLLLAATTEE
        -- ustawia porz±dek sortowania,


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


     LLCC__MMOONNEETTAARRYY
        -- 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æ,


     LLCC__NNUUMMEERRIICC
        -- separatory tysiêcy i u³amkowe oraz grupowanie numeryczne,


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


     LLCC__MMEESSSSAAGGEESS
        -- wyra¿enia Nie i Tak,


     LLCC__AALLLL
        -- ustawia jakiego jêzyka u¿ywamy i zmienia wszystkie inne
        zmienne LC_xxxx.

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


     eenn__CCAA
        -- kanadyjski angielski,


     eenn__UUSS
        -- amerykañski angielski,


     ddee__DDEE
        -- niemiecki niemiecki,


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


  33..  UUwwaaggii..



  ·  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.
  44..  CCzzeeggoo ppoottrrzzeebbuujjeesszz..


  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.


  55..  IInnssttaallaaccjjaa wwsszzyyssttkkiieeggoo..



  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/include/iostdio.h
        rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h
        rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread
        tar -xzf libc-5.4.17.bin.tar.gz -C /




  4. Teraz trzeba uruchomiæ ldconfig, ¿eby zlokalizowaæ nowe biblioteki
     dzielone: ldconfig -v.


  5. Jest b³±d, który zosta³ ju¿ poprawiony w libc. Powodowa³ on z³e
     dzia³anie "make" i innych programów.  Oto co zrobi³em, ¿eby
     skompilowaæ i zainstalowaæ "make":


        tar zxf make-3.74.tar.gz -C /usr/src
        cd /usr/src/make-3.74
        patch < ¶cie¿ka_do_release.libc-5.4.17
        configure --prefix=/usr
        sh build.sh
        ./make install
        cd ..
        rm -rf make-2.74




  6. Teraz mo¿na skompilowaæ i zainstalowaæ localedef:














        mkdir /usr/src/libc
        tar zxf libc-5.4.17.tar.gz -C /usr/src/libc
        cd /usr/src/libc
        cd include
        ln -s /usr/src/linux/include/asm .
        ln -s /usr/src/linux/include/linux .
        cd ../libc
        ./configure
        make clean ; make depend
        cd locale
        make programs
        mv localedef /usr/local/bin
        mv locale /usr/local/bin




  7. Umie¶æ zestawy znaków tam, gdzie je znajdzie localedef.  Ja u¿y³em
     zestawów znaków i locales z ftp.dkuug.dk (charmaps.tar i
     locales.tar).  W Polsce dostêpne s± pod adresem:
     ftp.arch.pwr.wroc.pl w katalogu /mirror/linux/nls/locale/dkuug.
     Starsze "localedef" (5.2.18) szuka³o ¼róde³ zestawów znaków w
     katalogu /usr/share/nls/charmap, ale teraz "localedef" szuka ich w
     katalogu /usr/share/i18n/charmaps oraz ¼róde³ definicji lokalnych w
     /usr/share/i18n/locales


        mkdir /usr/share/i18n
        mkdir /usr/share/i18n/charmaps
        mkdir /usr/share/i18n/locales
        tar xf charmaps.tar -C /usr/share/i18n/charmaps
        tar xf locales.tar -C /usr/share/i18n/locales



  Nowsze "localedef" (5.4.17) s± sprytniejsze i szukaj± zbiorów
  ¼ród³owych definicji lokalnych podczas obs³ugi funkcji "copy".
  Podczas, gdy starsze "localedef" musia³y mieæ ju¿ utworzone pliki
  ¼ród³owe definicji lokalnych, aby obs³u¿yæ funkcjê "copy".  Poni¿sza
  lista poleceñ ma wysortowane zale¿no¶ci i mo¿e byæ u¿yta, aby
  wygenerowaæ wszystkie objekty lokalne w zale¼no¶ci od u¿ywanej wersji
  biblioteki libc, ale powiniene¶ móc teraz utworzyæ tylko te, które
  chcesz.























     localedef -ci en_DK -f ISO_8859-1:1987 en_DK
     localedef -ci sv_SE -f ISO_8859-1:1987 sv_SE
     localedef -ci fi_FI -f ISO_8859-1:1987 fi_FI
     localedef -ci sv_FI -f ISO_8859-1:1987 sv_FI
     localedef -ci ro_RO -f ISO_8859-1:1987 ro_RO
     localedef -ci pt_PT -f ISO_8859-1:1987 pt_PT
     localedef -ci no_NO -f ISO_8859-1:1987 no_NO
     localedef -ci nl_NL -f ISO_8859-1:1987 nl_NL
     localedef -ci fr_BE -f ISO_8859-1:1987 fr_BE
     localedef -ci nl_BE -f ISO_8859-1:1987 nl_BE
     localedef -ci da_DK -f ISO_8859-1:1987 da_DK
     localedef -ci kl_GL -f ISO_8859-1:1987 kl_GL
     localedef -ci it_IT -f ISO_8859-1:1987 it_IT
     localedef -ci is_IS -f ISO_8859-1:1987 is_IS
     localedef -ci fr_LU -f ISO_8859-1:1987 fr_LU
     localedef -ci fr_FR -f ISO_8859-1:1987 fr_FR
     localedef -ci de_DE -f ISO_8859-1:1987 de_DE
     localedef -ci de_CH -f ISO_8859-1:1987 de_CH
     localedef -ci fr_CH -f ISO_8859-1:1987 fr_CH
     localedef -ci en_CA -f ISO_8859-1:1987 en_CA
     localedef -ci fr_CA -f ISO_8859-1:1987 fr_CA
     localedef -ci fo_FO -f ISO_8859-1:1987 fo_FO
     localedef -ci et_EE -f ISO_8859-1:1987 et_EE
     localedef -ci es_ES -f ISO_8859-1:1987 es_ES
     localedef -ci en_US -f ISO_8859-1:1987 en_US
     localedef -ci en_GB -f ISO_8859-1:1987 en_GB
     localedef -ci en_IE -f ISO_8859-1:1987 en_IE
     localedef -ci de_LU -f ISO_8859-1:1987 de_LU
     localedef -ci de_BE -f ISO_8859-1:1987 de_BE
     localedef -ci de_AT -f ISO_8859-1:1987 de_AT
     localedef -ci sl_SI -f ISO_8859-2:1987 sl_SI
     localedef -ci ru_RU -f ISO_8859-5:1988 ru_RU
     localedef -ci pl_PL -f ISO_8859-2:1987 pl_PL
     localedef -ci lv_LV -f BALTIC lv_LV
     localedef -ci lt_LT -f BALTIC lt_LT
     localedef -ci iw_IL -f ISO_8859-8:1988 iw_IL
     localedef -ci hu_HU -f ISO_8859-2:1987 hu_HU
     localedef -ci hr_HR -f ISO_8859-4:1988 hr_HR
     localedef -ci gr_GR -f ISO_8859-7:1987 gr_GR




  66..  II ccoo tteerraazz??


  Po przej¶ciu omówionych powy¿ej kroków powiniene¶ móc u¿ywaæ ustawieñ
  lokalnych na swoim komputerze.  Oto prosty przyk³adowy program.


















     /* test.c : prosty przyk³adowy program do sprawdzenia czy
     ustawienia lokalne dzia³aj±
     */
      #include <locale.h>
      #include <stdio.h>
      #include <time.h>

      main(){
              time_t t;
              struct tm * _t;
              char buf[256];

              time(&t);
              _t = gmtime(&t);


              setlocale(LC_TIME,"");
              strftime(buf,256,"%c",_t);

              printf("%s\n",buf);
      }



  ¯eby sprawdziæ jakie s± bie¿±ce ustawienia mo¿esz u¿yæ programu
  "locale".  Skompiluj powy¿szy program i uruchom z ró¿nymi
  ustawieniami.  gcc -s -o Test test.c Zobacz jakie s± bie¿±ce
  ustawienia: locale

     LANG=POSIX
     LC_COLLATE="POSIX"
     LC_CTYPE="POSIX"
     LC_MONETARY="POSIX"
     LC_NUMERIC="POSIX"
     LC_TIME="POSIX"
     LC_MESSAGES="POSIX"
     LC_ALL=

     Hmmm... ustawienia standardowe C...
     No to zmieñmy na inne:

     export LC_TIME=en_CA -- kanadyjski angielski
     Test
     Sat 23 Mar 1996 07:51:49 PM

     A teraz francuski kanadyjski:
     export LC_TIME=fr_CA
     Test
     sam 23 mar 1996 19:55:27




  77..  NNaapprraawwaa bb³³êêdduu ""ccaattooppeenn""..


  Instalacja obs³ugi ustawieñ lokalnych naprawia automatycznie b³±d (a
  mo¿e zaletê) w poleceniu "catopen" w bibliotece libc.  Powiedzmy, ¿e
  napiszesz program, który u¿ywa komunikatów z katalogu
  /home/peeter/catalogs/de_DE.

  Teraz - je¶li wykonasz nastêpuj±ce polecenia nie maj±c zainstalowanych
  ustawieñ lokalnych dla de_DE,



     export LC_MESSAGES=de_DE
     export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH



  katalog z niemieckimi komunikatami nie zostanie otwarty.  Funkcja
  catgets pobierze komunikaty z katalogu standardowego.

  Dzieje siê tak poniewa¿ funkcja "catopen" wywo³uje funkcjê
  "setlocale", ¿eby pobraæ odpowiednie komunikaty, a funkcja "setlocale"
  zwróci b³±d pomimo tego, ¿e zosta³a ustawiona zmienna ¶rodowiskowa.
  Nastêpnie funkcja "catopen" próbuje za³adowaæ komunikaty zastêpuj±c
  wszystkie "L" liter± "C" w zmiennej NLSPATH.

  Mo¿esz nadal u¿ywaæ swojego katalogu z komunikatami bez definiowania
  ustawieñ lokalnych, ale musia³by¶ bezpo¶rednio ustawiæ czê¶æ "L"
  zmiennej NLSPATH:


     export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH



  ale to mija siê z celem zastosowania zmiennych ustawieñ lokalnych.


  88..  PPyyttaanniiaa ii ooddppoowwiieeddzzii..


  Sekcja ta mog³aby urosn±æ i zmieniæ siê w FAQ, ale jest jeszcze za
  ma³a.


  88..11..  mmssggccaatt


  U¿ywam Linux-a i napisa³em taki program:


     --------------------------------------------------------------------
     #include <stdio.h>
     #include <locale.h>
     #include <features.h>
     #include <nl_types.h>

     main(int argc, char ** argv)
     {
             nl_catd catd;

             setlocale(LC_MESSAGES, "");
             catd = catopen("msg", MCLoadBySet);
             fprintf(stderr,catgets(catd, 1, 1, "otwarcie komunikatów lokalnych nie powiod³o siê\n"));
             catclose(catd);
     }

     --------------------------------------------------------------------
     $ msg.m
     $set 1

     1 locale message pass\n
     --------------------------------------------------------------------



  Je¶li u¿yjê bezwzglêdnej ¶cie¿ki dostêpu w "catopen", np.:

  catopen("/etc/locale/msg.cat", MCLoadBySet);

  To jest dobrze. Ale je¶li u¿ywam poprzedniego przyk³adu "catopen"
  zwraca mi -1 (czyli, ¿e siê nie powiod³o)

  Czê¶ciowa odpowied¼ na to pytanie jest w poprzedniej sekcji, ale podam
  jeszcze trochê dodatkowych informacji.

  Jest wiele "odpowiednich miejsc", gdzie mo¿esz umie¶ciæ katalog z
  komunikatami. Nawet gdyby¶ nie ustawi³ zmiennej ¶rodowiskowej NLSPATH,
  to jest ona nastêpuj±co zdefiniowana w libc:


     $ strings /lib/libc.so.5.4.17 | grep locale | grep %L
     /etc/locale/%L/%N.cat:/usr/lib/locale/%L/%N.cat:/usr
     /lib/locale/%N/%L:/usr/share/locale/%L/%N.cat:/usr/
     local/share/locale/%L/%N.cat



  Wiêc je¶li zrobi³e¶ jedno z poni¿szych:

     $ export LC_MESSAGES=en_CA
     $ export LC_ALL=en_CA
     $ export LANG=en_CA



  to funkcja catopen("msg", MCLoadBySet); dzia³a³aby, gdyby twój katalog
  z komunikatami by³ jednym z:


     /etc/locale/en_CA/
     /usr/lib/locale/en_CA/
     /usr/lib/locale/msg/
     /usr/share/locale/en_CA/
     /usr/local/share/locale/en_CA/



  Jednak to nie zadzia³a je¶li nie masz zainstalowanych ustawieñ
  lokalnych dla en_CA, poniewa¿ funkcja "setlocale" nie powiedzie siê i
  w wywo³aniu funkcji "catopen" w miejsce "L" zostanie podstawiona
  litera "C".



  99..  ZZaakkooññcczzeenniiee..


  To tyle. Mam nadziejê, ¿e ten "podrêcznik" pomóg³ ci chocia¿ trochê.
  Jest zapewne du¿o miejsc, gdzie mo¿esz szukaæ dodatkowych informacji
  na temat pisania programów zgodnych z ustawieniami lokalnymi. Za³o¿ê
  siê, ¿e je¶li poszukasz trochê po sieci (WWW), to znajdziesz du¿o
  informacji.  Ulrich Drepper, który zaimplementowa³ wiêkszo¶æ kodu
  umiêdzynarodowiaj±cego, ma troche informacji na swojej stronie WWW;
  mo¿esz tam zacz±æ.  Jest tak¿e trochê informacji na stronach
  informacyjnych i w podrêczniku systemowym "man" o libc.


  99..11..  OOdd tt³³uummaacczzaa..


  Je¶li znalaz³e¶ jakie¶ ra¿±ce b³êdy ortograficzne, gramatyczne,
  sk³adniowe, techniczne to pisz do mnie:

  B.Maruszewski@jtz.org.pl

  Oficjaln± stron± t³umaczeñ HOWTO jest http://www.jtz.org.pl/

  Aktualne wersje przet³umaczonych dokumentów znajduj± siê na tej¿e
  stronie. Dostêpne s± tak¿e poprzez anonimowe ftp pod adresem
  ftp.jtz.org.pl/HOWTO/

  Przet³umaczone przeze mnie dokumenty znajduj± siê tak¿e na mojej
  stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> S± tam
  te¿ odwo³ania do Polskiej Strony T³umaczeniowej.

  Kontakt z nasz± grup±, grup± t³umaczy mo¿esz uzyskaæ poprzez listê
  dyskusyjn± jtz@ippt.gov.pl. Je¶li chcesz sie na ni± zapisaæ, to wy¶lij
  list o tre¶ci subscribe jtz Imiê Nazwisko na adres
  majordomo@ippt.gov.pl

  Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odno¶niki
  do serwerów ftp i WWW.
  W wersji v1.31 zosta³a poprawiona nazwa pliku testowego z "test" na
  "Test", co jak zauwa¿y³ jeden z czytelników ma podstawowe znaczenie
  poniewa¿ program "test" ju¿ istnieje w systemie.