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.