File: Locale.pl.html

package info (click to toggle)
doc-linux-pl 1999.10.11-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 6,092 kB
  • ctags: 765
  • sloc: makefile: 44
file content (567 lines) | stat: -rw-r--r-- 23,105 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Jak zrobi&aelig; ustawienia lokalne w Linux-ie. (Locales)</TITLE>


</HEAD>
<BODY>
<H1>Jak zrobi&aelig; ustawienia lokalne w Linux-ie. (Locales)<BR></H1>

<H2>Peeter Joot,
<A HREF="mailto:peeter_joot@vnet.ibm.com">peeter_joot@vnet.ibm.com</A><BR>
v1.5, 21 Lipca 1997.<BR>
<B>Wersja polska:Bartosz Maruszewski
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><BR></B>
v1.4, 4 Listopada 1997</H2>
<P><HR>
<EM>   Dokument ten opisuje jak skonfigurowa&aelig; twojego Linux-a, aby m&oacute;c
   uywa&aelig; pakietu "Locales", czyli ustawie&ntilde; narodowych.
   Dokument ten jest napisany w standardzie ISO-8859-2.
   Wersja oryginalna znajduje si&ecirc; pod adresem
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/">ftp.icm.edu.pl</A>.
Nowsza wersja zawiera uaktualnione wskazania na katalog zawierajcy jdra na
ftp.icm.edu.pl</EM>
<HR>
<H2><A NAME="s1">1. Wprowadzenie.</A></H2>

<P>
<P>To jest naprawd&ecirc; opis tego co musiaem zrobi&aelig;, eby dziaa u
mnie pakiet "Locales". Zrobiem to tylko dla zabawy, i pomylaem, e
moe niekt&oacute;rzy chc sami spr&oacute;bowa&aelig;. Jak ju raz wszystko
poustawiasz, powiniene m&oacute;c uywa&aelig; aplikacji korzystajcych z NLS,
wraz z twoimi lokalnymi ustawieniami. Ju niedugo pakiet "Locales"
powinien by&aelig; cz&ecirc;ci standardowych dystrybucji i wi&ecirc;kszo&aelig; z tego
co tu napisaem b&ecirc;dzie niepotrzebne.
<P>
<H2><A NAME="s2">2. Co to w og&oacute;le jest pakiet "Locales"?</A></H2>

<P>
<P>Jest to pakiet, kt&oacute;ry zawiera ustawienia specyficzne dla twojego
kraju. (zapis daty, czasu, specjalne litery itp.) Ustawie&ntilde; tych
nie powinene zapisywa&aelig; na stae w swoich programach.
<P>Jeli masz na swoim komputerze zainstalowane ustawienia lokalne dla
r&oacute;nych kraj&oacute;w/j&ecirc;zyk&oacute;w, to poprzez nast&ecirc;pujce zmienne moesz
kontrolowa&aelig; zachowanie program&oacute;w korzystajcych z nich.
Ustawieniem domylnym jest ustawienie wg.  standardu C lub POSIX
zapisane na stae w "libc".
<P>
<DL>
<DT><B>LANG</B><DD><P>-- ustawia jakiego j&ecirc;zyka uywamy; moe by&aelig; zmienione przez
zmienn LC_xxxx,
<P>
<DT><B>LC_COLLATE</B><DD><P>-- ustawia porzdek sortowania,
<P>
<DT><B>LC_CTYPE</B><DD><P>-- definicje znak&oacute;w, due i mae litery... uywane
jest to przez takie funkcje jak: toupper, tolower, islower,
isdigit itp.
<P>
<DT><B>LC_MONETARY</B><DD><P>-- definicja formatu liczb zwizanych z
pieni&ecirc;dzmi. S tu definicje separatora tysi&ecirc;cy, separatora
uamkowego, symbolu pienidza (z) i miejsce, gdzie naley go
umieci&aelig;,
<P>
<DT><B>LC_NUMERIC</B><DD><P>-- separatory tysi&ecirc;cy i uamkowe oraz grupowanie
numeryczne,
<P>
<DT><B>LC_TIME</B><DD><P>-- definicja formatu czasowego i datowego. S tu
zdefiniowane np. dni tygodnia, miesice,
<P>
<DT><B>LC_MESSAGES</B><DD><P>-- wyraenia Nie i Tak,
<P>
<DT><B>LC_ALL</B><DD><P>-- ustawia jakiego j&ecirc;zyka uywamy i zmienia wszystkie
inne zmienne LC_xxxx.
</DL>
<P>Oto niekt&oacute;re ustawienia, a jest ich znacznie wi&ecirc;cej:
<P>
<DL>
<DT><B>en_CA</B><DD><P>-- kanadyjski angielski,
<P>
<DT><B>en_US</B><DD><P>-- ameryka&ntilde;ski angielski,
<P>
<DT><B>de_DE</B><DD><P>-- niemiecki niemiecki,
<P>
<DT><B>fr_FR</B><DD><P>-- francuski francuski.
</DL>
<P>Jeli piszesz program i chcesz, aby mona go byo uywa&aelig; na caym
wiecie respektuj ustawienia lokalne. Najwaniejszym powodem jest to, e
nie kady b&ecirc;dzie uywa tego samego zestawu znak&oacute;w czy strony
kodowej co ty.
<P>Upewnij si&ecirc;, e nie robisz czego takiego w swoich programach:
<P>
<PRE>
   /* sprawd czy to litera */
   if ( (( c >= 'a') &amp;&amp; ( c &lt;= 'z' )) ||
        (( c >= 'A') &amp;&amp; ( c &lt;= 'Z' )) ) { ... }
</PRE>
<P>Jeli napiszesz co takiego, to zakadasz, e uytkownik b&ecirc;dzie
uywa tylko podstawowych znak&oacute;w z kodu ASCII i nie bierzesz pod
uwag&ecirc;, i moe uywa&aelig; strony kodowej specyficznej dla swojego
kraju. Pomija to takie znaki jak np. a-umlaut, kt&oacute;re zostaoby
uyte w rodowisku niemieckim. Zamiast tego powiniene raczej
uywa&aelig; funkcji, kt&oacute;re respektuj lokalne ustawienia, jak np.
isalpha(). Jeli tw&oacute;j program wyranie wymaga tylko podstawowych
znak&oacute;w ASCII (US-ASCII), dalej uywasz funkcji isalpha(), ale
musisz take ustawi&aelig; zmienn LANG albo LC_CTYPE albo LC_ALL na "C"
lub uy&aelig; funkcji <CODE>setlocale(LC_CTYPE, "C")</CODE>.
<P>Ustawienia lokalne pozwalaj na du elastyczno&aelig; i robi pewne
zaoenia, o kt&oacute;rych programista m&oacute;g zapomnie&aelig;.
<P>Na przykad nie moesz z g&oacute;ry zaoy&aelig; pozycji danego znaku na
stronie kodowej. Nic nie stoi na przeszkodzie, eby np. stworzy
sobie stron&ecirc; kodow, na kt&oacute;rej "A" byoby na pozycji 99 a nie 65.
<P>Podstawow ide jest to, e r&oacute;ni ludzie m&oacute;wi r&oacute;nymi j&ecirc;zykami,
przetsrzegaj r&oacute;nych regu sortowania, uywaj r&oacute;nych stron
kodowych i mieszkaj w r&oacute;nych krajach. Ustawienia lokalne i
funkcje, kt&oacute;re ich przstrzegaj daj rodki na respektowanie
takich rzeczy i odpowiedniego ich traktowanie. Nie wymaga to duego
nakadu pracy, tylko troch&ecirc; innego sposobu mylenia podczas
pisania takich program&oacute;w.
<P>
<H2><A NAME="s3">3. Uwagi.</A></H2>

<P>
<P>
<UL>
<LI>Aby ustawienia lokalne na moim komputerze dziaay musiaem
odnowi&aelig; kilka rzeczy. No i tak:
<A HREF="ftp://ftp.torun.pdi.net/pub/nls/locale">ftp.torun.pdi.net</A> w katalogu <CODE>/pub/nls/locale</CODE>.
znajduj si&ecirc; wszystkie potrzebne programy. Nie wiedziaem,
e jest osobny pakiet "Locales" i jako si&ecirc; domyliem, e trzeba
mie&aelig; zainstalowane odpowiednie biblioteki libc i lib.so. Z tego
powodu to HOWTO jest w wi&ecirc;kszoci zapisem tego co ja musiaem
zrobi&aelig;, eby odnowi&aelig; biblioteki. Jeli zrobisz to w taki spos&oacute;b
jak ja, b&ecirc;dziesz musia mie&aelig; system ELF, albo zmieni&aelig; sw&oacute;j na taki,
jak ju ustawisz swoje lokalne definicje.
   </LI>
<LI>Wszystko co robiem, aby odnowi&aelig; sw&oacute;j system, to to samo, co
jest potrzebne, aby przej&aelig; z a.out na ELF. Jeli tego nie
zrobie, albo jeli zrobie to poprzez reinstalacj&ecirc; Linux-a,
powiniene zdoby&aelig; ostatni wersj&ecirc; <CODE>ELF-HOWTO</CODE>. Jest to
wspaniay podr&ecirc;cznik, w kt&oacute;rym znajdziesz dodatkowe wskaz&oacute;wki
dotyczce instalacji bibliotek libc, ld.so i innych odnowie&ntilde; do
ELF-a.
   </LI>
<LI>Przed instalacj czegokolwiek, przeczytaj odpowiednie pliki
dostarczone wraz z wersj instalacyjn (README itp.). Jeli
popsujesz sobie co, bo le zinterpretowae co, co ja tutaj
napisaem, albo przez (oby nie) zrobienie czego co ja zrobiem,
nie wi&ntilde; mnie prosz&ecirc;.
   </LI>
<LI>Jeli zapomnisz zainstalowa&aelig; now bibliotek&ecirc; libc albo ld.so,
to moesz doprowadzi&aelig; nawet do tego, e nie b&ecirc;dziesz m&oacute;g
wystartowa&aelig; systemu. Take lepiej mie&aelig; pod r&ecirc;k dyskietk&ecirc; startow,
i upewnij si&ecirc;, e wszelkie krytyczne albo niezamienialne dane s
zarchiwizowane.</LI>
</UL>
<P>
<H2><A NAME="s4">4. Czego potrzebujesz.</A></H2>

<P>
<P>Kilka rzeczy musisz sobie ciagn&aelig;. Wszystko czego potrzebujesz
znajdziesz na ftp.icm.edu.pl
Kiedy ja instalowaem u siebie ustawienia lokalne uywaem
libc-5.2.18, kt&oacute;ra jest teraz troche przestarzaa. Jak na razie
powiedziano mi, e biec wersj jest 5.4.17 i tak te
umieszczam w opisie.
Przypuszczalnie libc-5.4.17 b&ecirc;dzie przestarzaa zanim zdysz
mrugn&aelig; wi&ecirc;c po prostu uyj najnowszej dost&ecirc;pnej wersji.
<P>Rozwa uycie glibc (gnu libc) zamiast Linux libc 5 w pracach
unaradawiajcych (internalizacyjnych). Glibc jest w peni
unarodowiona i ma pene wsparcie dla programowania narodowego tak
samo jak jest w peni przenaszalna FIXME i ma wbudowan obsug&ecirc;
wtk&oacute;w. Prawie caa internalizacja zrobiona w libc 5 wzi&ecirc;ta
zosta z glibc. Lokalizacje i mapy klawiszy dla glibc s
powizane z dodatkami o lokalizacjami glibc.
<P>Jeli jeste za uywaniem glibc, to moesz pomin&aelig; to mini-howto.
Doczanie dodatk&oacute;w lokalizacyjnych do kompilacji i instalacji glibc
jest trywialne i opisane jest w dokumentacji do instalacji glibc.<BR>
ednak ostrzegam, e pena aktualizacja nie jest trywialnym
zadaniem! Mam nadziej&ecirc;, e RedHat (kt&oacute;rego uywam) wypuci
niedugo dystrybucj&ecirc; opart na glibc, bo jako nie umiecha mi si&ecirc;
rekompilacja caego mojego systemu.
Wszystkie ponisze pakiety moesz znale&aelig; pod adresem ftp.icm.edu.pl
w katalogu /pub/Linux/sunsite/GCC opr&oacute;cz "make" -
/pub/Linux/sunsite/devel/make oraz jdra - /pub/Linux/kernel/
<P>
<UL>
<LI><CODE>ustawienia lokalne i r&oacute;da zestaw&oacute;w znak&oacute;w</CODE> -- to jest to, co
kompilujesz, uywajc localedef,
   </LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">libc-5.4.x.bin.tar.gz</A> -- 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 bd i tworzy LC_CTYPE ze
z liczb magiczn. Oznacza to przypuszczalnie, e jaka stara
wersja "localedef" dostaa si&ecirc; do dystrybucji.</LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">libc-5.4.x.tar.gz</A> -- r&oacute;da bibliotek dzielonych w wersji
ELF - b&ecirc;dziesz tego potrzebowa, aby skompilowa&aelig; localedef,
</LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/devel/make">make-3.74.tar.gz</A> -- moe b&ecirc;dziesz musia skompilowa&aelig; "make",
tak aby zawiera at&ecirc; na tzw. <CODE>dirent bug</CODE>,
</LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">release.libc-5.4.x</A> -- ta wersja zawiera at&ecirc;, kt&oacute;ra pozwala
skompilowa&aelig; "make", min&ecirc;o ju sporo czasu odkd powsta bd w
libc i przypuszczalnie nie musisz si&ecirc; ju tym przejmowa&aelig;.
</LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">ld.so-1.8.x</A> -- biblioteka do czenia dynamicznego w wersji ELF,
   </LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">gcc-2.7.2+</A> -- kompilator C w wersji ELF,
   </LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0">jdro 2.0.x</A> -- jdro w wersji ELF,
   </LI>
<LI>
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/GCC/">binutils 2.7.0.x</A> -- r&oacute;ne narz&ecirc;dzia do binari&oacute;w potrzebne do
kompilacji.</LI>
</UL>
<P>
<H2><A NAME="s5">5. Instalacja wszystkiego.</A></H2>

<P>
<P>Oto co zrobiem, aby wszystko zainstalowa&aelig;. Miaem ju system ELF
(kompilator, jdro ...).
<P>
<OL>
<LI>Najpierw zainstalowaem pakiet binutils:
<CODE> tar xzf binutils-2.6.0.2.bin.tar.gz -C /</CODE>
</LI>
<LI>Potem zainstalowaem bibliotek&ecirc; do czenia:
   
<PRE>
   tar zxf ld.so-1.7.12.tar.gz -C /usr/src
   cd /usr/src/ld.so-1.7.12  
   sh instldso.sh
</PRE>

   </LI>
<LI>Potem binaria do libc. Przeczytaj odpowiednie pliki
dotyczce instalacji w <CODE>release.libc-5.4.17</CODE>.
   
<PRE>
   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 /
</PRE>

   </LI>
<LI>Teraz trzeba uruchomi&aelig; <CODE>ldconfig</CODE>, eby zlokalizowa&aelig;
nowe biblioteki dzielone:
<CODE>ldconfig -v</CODE>.
   </LI>
<LI>Jest bd, kt&oacute;ry zosta ju poprawiony w libc. Powodowa on
ze dziaanie "make" i innych program&oacute;w.
Oto co zrobiem, eby skompilowa&aelig; i zainstalowa&aelig; "make":
   
<PRE>
   tar zxf make-3.74.tar.gz -C /usr/src
   cd /usr/src/make-3.74
   patch &lt; cieka_do_release.libc-5.4.17
   configure --prefix=/usr
   sh build.sh
   ./make install
   cd ..
   rm -rf make-2.74
</PRE>

   </LI>
<LI>Teraz mona skompilowa&aelig; i zainstalowa&aelig; localedef:

<PRE>
   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
</PRE>

   </LI>
<LI>Umie&aelig; zestawy znak&oacute;w tam, gdzie je znajdzie <CODE>localedef</CODE>.
Ja uyem zestaw&oacute;w znak&oacute;w i locales z <CODE>ftp.dkuug.dk</CODE>
(charmaps.tar i locales.tar).
W Polsce dost&ecirc;pne s pod adresem: 
<A HREF="ftp://ftp.arch.pwr.wroc.pl/mirror/linux/nls/locale/dkuug">ftp.arch.pwr.wroc.pl</A> w katalogu <CODE>/mirror/linux/nls/locale/dkuug</CODE>.
Starsze "localedef" (5.2.18) szukao r&oacute;de zestaw&oacute;w znak&oacute;w w
katalogu <CODE>/usr/share/nls/charmap</CODE>, ale teraz "localedef"
szuka ich w katalogu <CODE>/usr/share/i18n/charmaps</CODE> oraz
r&oacute;de definicji lokalnych w <CODE>/usr/share/i18n/locales</CODE>
   
<PRE>
   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
</PRE>
   
<P>Nowsze "localedef" (5.4.17) s sprytniejsze i szukaj zbior&oacute;w
r&oacute;dowych definicji lokalnych podczas obsugi funkcji "copy".
Podczas, gdy starsze "localedef" musiay mie&aelig; ju utworzone pliki
r&oacute;dowe definicji lokalnych, aby obsuy&aelig; funkcj&ecirc; "copy".
Ponisza lista polece&ntilde; ma wysortowane zalenoci i moe by&aelig; uyta,
aby wygenerowa&aelig; wszystkie objekty lokalne w zalenoci od uywanej
wersji biblioteki libc, ale powiniene m&oacute;c teraz utworzy&aelig; tylko
te, kt&oacute;re chcesz.
<P>
<PRE>
   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
</PRE>
</LI>
</OL>
<P>
<H2><A NAME="s6">6. I co teraz?</A></H2>

<P>
<P>Po przejciu om&oacute;wionych powyej krok&oacute;w powiniene m&oacute;c uywa&aelig;
ustawie&ntilde; lokalnych na swoim komputerze.
Oto prosty przykadowy program.
<P>
<PRE>
 
   /* test.c : prosty przykadowy program do sprawdzenia czy
   ustawienia lokalne dziaaj
   */
    #include &lt;locale.h>
    #include &lt;stdio.h>
    #include &lt;time.h>
    
    main(){
            time_t t;
            struct tm * _t;
            char buf[256];

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

            setlocale(LC_TIME,"");
            strftime(buf,256,"%c",_t);
           
            printf("%s\n",buf);
    }
</PRE>
<P>eby sprawdzi&aelig; jakie s biece ustawienia moesz uy&aelig; programu
"locale".
Skompiluj powyszy program i uruchom z r&oacute;nymi ustawieniami.
<CODE>gcc -s -o Test test.c</CODE>
Zobacz jakie s biece ustawienia:
<CODE>locale</CODE>
<PRE>
   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&ntilde;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
</PRE>
<P>
<H2><A NAME="s7">7. Naprawa b&ecirc;du "catopen".</A></H2>

<P>
<P>Instalacja obsugi ustawie&ntilde; lokalnych naprawia automatycznie bd
(a moe zalet&ecirc;) w poleceniu "catopen" w bibliotece libc.
Powiedzmy, e napiszesz program, kt&oacute;ry uywa komunikat&oacute;w z
katalogu <CODE>/home/peeter/catalogs/de_DE</CODE>.
<P>Teraz - jeli wykonasz nast&ecirc;pujce polecenia nie majc
zainstalowanych ustawie&ntilde; lokalnych dla de_DE,
<P>
<PRE>
   export LC_MESSAGES=de_DE
   export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH
</PRE>
<P>katalog z niemieckimi komunikatami nie zostanie otwarty.
Funkcja catgets pobierze komunikaty z katalogu standardowego.
<P>Dzieje si&ecirc; tak poniewa funkcja "catopen" wywouje funkcj&ecirc;
"setlocale", eby pobra&aelig; odpowiednie komunikaty, a funkcja
"setlocale" zwr&oacute;ci bd pomimo tego, e zostaa ustawiona zmienna
rodowiskowa. Nast&ecirc;pnie funkcja "catopen" pr&oacute;buje zaadowa&aelig;
komunikaty zast&ecirc;pujc wszystkie "L" liter "C" w zmiennej NLSPATH.
<P>Moesz nadal uywa&aelig; swojego katalogu z komunikatami bez
definiowania ustawie&ntilde; lokalnych, ale musiaby bezporednio
ustawi&aelig; cz&ecirc;&aelig; "L" zmiennej NLSPATH:
<P>
<PRE>
   export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH
</PRE>
<P>ale to mija si&ecirc; z celem zastosowania zmiennych ustawie&ntilde; lokalnych.
<P>
<H2><A NAME="s8">8. Pytania i odpowiedzi.</A></H2>

<P>
<P>Sekcja ta mogaby urosn&aelig; i zmieni&aelig; si&ecirc; w FAQ, ale jest jeszcze za
maa.
<P>
<H2>8.1 msgcat</H2>

<P>
<P>Uywam Linux-a i napisaem taki program:
<P>
<PRE>
   --------------------------------------------------------------------
   #include &lt;stdio.h>
   #include &lt;locale.h>
   #include &lt;features.h>
   #include &lt;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&oacute;w lokalnych nie powiodo si&ecirc;\n"));
           catclose(catd);
   }

   --------------------------------------------------------------------
   $ msg.m
   $set 1
   
   1 locale message pass\n
   --------------------------------------------------------------------
</PRE>
<P>Jeli uyj&ecirc; bezwzgl&ecirc;dnej cieki dost&ecirc;pu w "catopen", np.:
<P><CODE>catopen("/etc/locale/msg.cat", MCLoadBySet);</CODE>
<P>To jest dobrze. Ale jeli uywam poprzedniego przykadu "catopen"
zwraca mi -1 (czyli, e si&ecirc; nie powiodo)
<P>Cz&ecirc;ciowa odpowied na to pytanie jest w poprzedniej sekcji, ale
podam jeszcze troch&ecirc; dodatkowych informacji.
<P>Jest wiele "odpowiednich miejsc", gdzie moesz umieci&aelig; katalog z
komunikatami. Nawet gdyby nie ustawi zmiennej rodowiskowej
NLSPATH, to jest ona nast&ecirc;pujco zdefiniowana w libc:
<P>
<PRE>
   $ 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
</PRE>
<P>Wi&ecirc;c jeli zrobie jedno z poniszych:
<PRE>
   $ export LC_MESSAGES=en_CA
   $ export LC_ALL=en_CA
   $ export LANG=en_CA
</PRE>
<P>to funkcja <CODE>catopen("msg", MCLoadBySet);</CODE> dziaaaby, gdyby
tw&oacute;j katalog z komunikatami by jednym z:
<P>
<PRE>
   /etc/locale/en_CA/
   /usr/lib/locale/en_CA/
   /usr/lib/locale/msg/
   /usr/share/locale/en_CA/
   /usr/local/share/locale/en_CA/
</PRE>
<P>Jednak to nie zadziaa jeli nie masz zainstalowanych ustawie&ntilde;
lokalnych dla en_CA, poniewa funkcja "setlocale" nie powiedzie
si&ecirc; i w wywoaniu funkcji "catopen" w miejsce "L" zostanie
podstawiona litera "C".
<P>
<P>
<H2><A NAME="s9">9. Zako&ntilde;czenie.</A></H2>

<P>
<P>To tyle. Mam nadziej&ecirc;, e ten "podr&ecirc;cznik" pom&oacute;g ci chocia
troch&ecirc;. Jest zapewne duo miejsc, gdzie moesz szuka&aelig; dodatkowych
informacji na temat pisania program&oacute;w zgodnych z ustawieniami
lokalnymi. Zao&ecirc; si&ecirc;, e jeli poszukasz troch&ecirc; po sieci (WWW),
to znajdziesz duo informacji. 
Ulrich Drepper, kt&oacute;ry zaimplementowa wi&ecirc;kszo&aelig; kodu
umi&ecirc;dzynarodowiajcego, ma troche informacji
<A HREF="http://i44www.info.uni-karlsruhe.de/~drepper">na swojej stronie WWW</A>; moesz tam zacz&aelig;.
Jest take troch&ecirc; informacji na stronach informacyjnych i w podr&ecirc;czniku
systemowym "man" o libc.
<P>
<H2>9.1 Od tumacza.</H2>

<P>
<P>Jeli znalaze jakie race b&ecirc;dy ortograficzne, gramatyczne,
skadniowe, techniczne to pisz do mnie:
<P>
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><P>Oficjaln stron tumacze&ntilde; HOWTO jest
<A HREF="http://www.jtz.org.pl/">http://www.jtz.org.pl/</A><P>Aktualne wersje przetumaczonych dokument&oacute;w znajduj si&ecirc; na
teje stronie. Dost&ecirc;pne s take poprzez anonimowe ftp pod adresem
<CODE>ftp.jtz.org.pl/HOWTO/</CODE>
<P>Przetumaczone przeze mnie dokumenty znajduj si&ecirc; take na
<A HREF="http://www.jtz.org.pl/bartek/tlumaczenie.html">mojej stronie WWW.</A> S tam te odwoania do Polskiej Strony
Tumaczeniowej.
<P>Kontakt z nasz grup, grup tumaczy moesz uzyska&aelig; poprzez list&ecirc;
dyskusyjn jtz@ippt.gov.pl. Jeli chcesz sie na ni zapisa&aelig;, to
wylij list o treci <CODE>subscribe jtz Imi&ecirc; Nazwisko</CODE> na adres
<CODE>majordomo@ippt.gov.pl</CODE>
<P>Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnoniki
do serwer&oacute;w ftp i WWW.<BR>
W wersji v1.31 zostaa poprawiona nazwa pliku testowego z "test" na
"Test", co jak zauway jeden z czytelnik&oacute;w ma podstawowe znaczenie
poniewa program "test" ju istnieje w systemie.
</BODY>
</HTML>