old-www/HOWTO/Hellenic-HOWTO-5.html

443 lines
15 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>HELLENIC HOWTO: National Language Support</TITLE>
<LINK HREF="Hellenic-HOWTO-6.html" REL=next>
<LINK HREF="Hellenic-HOWTO-4.html" REL=previous>
<LINK HREF="Hellenic-HOWTO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="Hellenic-HOWTO-6.html">Next</A>
<A HREF="Hellenic-HOWTO-4.html">Previous</A>
<A HREF="Hellenic-HOWTO.html#toc5">Contents</A>
<HR>
<H2><A NAME="National Language Support"></A> <A NAME="s5">5. National Language Support</A></H2>
<P>To National Language Support (suvtomografia NLS)
eivai mia duvatotnta pou exouv ta pio polla UNIX,
wste va evnmerwvovtai oi efarmoges gia tis glwssikes ru8miseis tou xrnstn
kai va parousiazouv ta muvnmata tous stnv avtistoixn glwssa.
<P>To NLS xrnsimopoieitai apo polla GNU tools, eidika auta pou trexouv se
periballov grammns evtolwv (Command Line Interface - CLI, dnladn to gvwsto prompt),
kai upostnrizetai prosfata kai sto grafiko periballov (px KDE).
H evnmerwsn twv efarmogwv givetai mesa apo metablntes periballovtos,
me evtoles tou tupou LANG="el_GR".
Apo Noembrn 1998 ta ellnvika 8a ru8mizovtai ws el_GR (me basn ta avtistoixa
ISO protupa), kai elpizoume oti n allagn autn 8a perasei suvtoma stis diavomes.
<P>Ergasia gurw apo to NLS exei kavei kai o Simos 3evitellns, deite to
<A HREF="http://www.hellug.gr/gr/howto/howto/pub/html/Greek-nls-HOWTO.html">Greek-nls-HOWTO</A> kai auto to ar8ro sto periodiko magaz:
<A HREF="http://magaz.hellug.gr/09/04_nls.html">http://magaz.hellug.gr/09/04_nls.html</A>.
<P>PROSOXH:
To parov kefalaio eixe graftei apo tov Taso Kapio,
se mia epoxn pou to NLS dev upnrxe pavta stnmevo sto linux,
kai to protupo ntav arketa asta8es (px, mporei va breite va leei gia gr_GR, avti el_GR).
<P>
<H2><A NAME="ss5.1">5.1 Proetoimasia</A>
</H2>
<P>PRWTA blepe poses kai poies eivai oi biblio8nkes tns C pou uparxouv sto sustnma sou. p.x.
<PRE>
ttyp3:~#ldconfig -v | grep libc.so
libc.so.4 => libc.so.4.7.2
libc.so.6 => libc-2.0.4.so
libc.so.5 => libc.so.5.4.33
</PRE>
Uparxouv 5 katngories libc kai dev eivai sumbates meta3u tous, osov afora ta locale pavta.
(Autn tnv stigmn oi pio polloi exouv tis ekdoseis 4 kai 5)
<OL>
<LI>libc 4 ??? (a.out)</LI>
<LI>libc 5.0.9-5.3.12 </LI>
<LI>libc 5.4.x</LI>
<LI>glibc 1.x ??? (sav libc 5 gia merikes arxitektovikes Linux)</LI>
<LI>glibc 2.x.x (libc 6)</LI>
</OL>
<P>
<H2><A NAME="greeklocale"></A> <A NAME="ss5.2">5.2 Egkatastasn Ellnvikwv Locale</A>
</H2>
<P>Xreiazeste tis topikes ru8miseis (localedata), tov compiler localedef
kai to diagvwstiko ergaleio locale.
<UL>
<LI> Uparxouv treis ekdoseis twv topikwv ru8misewv (Diaferouv elaxista)
<OL>
<LI>H pio palia apoteleitai apo ta
<PRE>
ftp://dkuug.dk/i18n/WG15-collection/locales/gr_GR (2679 bytes)
ftp://dkuug.dk/i18n/WG15-collection/charmaps/ISO_8859-7:1987 (19768 bytes)
ftp://dkuug.dk/i18n/WG15-collection/locales/en_DK (101080 bytes)
</PRE>
</LI>
<LI>H alln, pio prosfatn ftp://ftp.debian.org/debian/ ...
/sources/admin/wg15-locale_2.orig.tar.gz
(n se diafora CDROM me to debian) kai periexei ta
<PRE>
locales/gr_GR
locales/en_DK
charmaps/ISO_8859-7,1987
</PRE>
(Prepei va douleuei movo gia libc 5.4.x)</LI>
<LI>H pio kaivourgia ekdosn brisketai eite sto paketo pngaiou kwdika
tns glibc 2.0.5 eite sav 3exwristo paketo sav glibc-localedata-2.0.5
Uparxei sto debian (ftp.debian.org),sto redhat (ftp.redhat.com) kai
se mirrors tns gnu kai periexei ta gr_GR,en_DK,ISO-8859-7</LI>
</OL>
</LI>
<LI> Ta localedef kai locale uparxouv sta paketa me tov pngaio kwdika
twv libc 5 kai glibc 2. Episns kukloforouv se binary morfn apo to
debian kai redhat kai sav tar.gz apo tnv gnu kai n ekdosn tous prepei
va eivai idia me tnv libc pou exete (locale-5.x.y gia tnv libc 5.x.y kai
to glibc-localedata-2.x.y gia tnv glibc-2.x.y)</LI>
</UL>
<P>Prwta pngaivete stov upokatalogo opou briskete gr_GR kai trexete tnv evtoln
<PRE>
>sed -e 's/am_pm "";""/am_pm "&lt;P*>&lt;M*>";"&lt;M*>&lt;M*>"/' gr_GR > el_GR
</PRE>
(Gia duvatotnta ellnvikou PM kai MM kai n allagn ovomatos gia sumbatotnta me ta X)
Kai gia elegxo
<PRE>
> tail -n 5 el_GR | grep am_pm
am_pm "&lt;P*>&lt;M*>";"&lt;M*>&lt;M*>"
t_fmt_ampm ""
END LC_TIME
</PRE>
Twra sav root dnmiourgnste tous e3ns upokatalogous
<PRE>
# mkdir -m 755 -p /usr/share/locale/el_GR/LC_MESSAGES
# mkdir -m 755 -p /usr/share/i18n/charmaps
# mkdir -m 755 -p /usr/share/i18n/locales
# ln -sf /usr/share/i18n/charmaps /usr/share/i18n/charmap
</PRE>
Egkatastnste sta swsta mern ta el_GR, en_DK, ISO-8859-7 (n ISO_8859-7:1987 n ISO_8859-7,1987)
<PRE>
# cd (ekei pou eivai ta localedata)
# cp e?_?? /usr/share/i18n/locales
# cd ../charmaps
# cp ISO[-_]8859-7* /usr/share/i18n/charmaps
# cd /usr/share/i18n/charmaps
# ln -s ISO_8859-7,1987 ISO-8859-7
</PRE>
Metaglwttiste, av dev ta exete ndn se binary morfn, ta locale kai localedef.
Auto givetai peripou etsi:
<PRE>
> cd ~/src
> gzip -dc libc-x.y.z.tar.gz | tar xvf -
> cd libc-x.y.z
> ./configure
> make clean; make depend
> cd locale
> make programs
> su -f root -c 'install -m 755 locale localedef /usr/bin'
</PRE>
Kai twra eiste etoimoi gia tnv metaglwttisn twv topikwv ru8misewv. Sav root:
<PRE>
# cd /usr/share
</PRE>
Se periptwsn pou exete mia libc
<PRE>
# localedef -ci locale/el_GR -f i18n/charmap/ISO-8859-7 el_GR
</PRE>
Se periptwsn pou exete duo p.x. libc-5.4.33 kai libc-2.0.4
<PRE>
# localedef-2.04 -ci el_GR -f ISO-8859-7 el_GR
# localedef-5.4.33 -ci el_GR -f ISO-8859-7 el
# chmod -cR a+r locale
</PRE>
Twra prepei va uparxouv auta katw apo to /usr/share/locale/el_GR (kai to el)
<PRE>
# ls locale/el_GR
LC_COLLATE LC_CTYPE LC_MESSAGES/ LC_MONETARY LC_NUMERIC LC_TIME
</PRE>
<P>Mia dokimn. Gia kelufos tupou csh p.x. tcsh:
<PRE>
> setenv LANG el_GR
</PRE>
Gia kelufos tupou sh p.x. bash, ksh:
<PRE>
> LANG=el_GR ; export LANG
</PRE>
Dokimaste:
<PRE>
> locale
LANG=el_GR
LC_CTYPE="el_GR"
LC_NUMERIC="el_GR"
LC_TIME="el_GR"
LC_COLLATE="el_GR"
LC_MONETARY="el_GR"
LC_MESSAGES="el_GR"
LC_ALL=
> locale -c LC_TIME | head
LC_TIME
Kur;Deu;Tri;Tet;Pem;Par;Sab
Kuriakn;Deutera;Tritn;Tetartn;Pemptn;Paraskeun;Sabbato
Iav;Feb;Mar;Apr;Mai;Iouv;Ioul;Aug;Sep;Okt;Noe;Dek
Iavouarios;Febrouarios;Martios;Aprilios;Maios;Iouvios;Ioulios;Augoustos;Septembrios;Oktwbrios;Noembrios;Dekembrios
PM;MM
%a %d %b %Y %T %Z
%d/%m/%Y
%T
</PRE>
(H diamorfwsn allazei apo libc se libc)
<P>Twra mporeite va dokimaste merikes efarmoges (arkei va exouv givei compile me mia sumbatn libc)
<PRE>
> unsetenv LESSCHARSET n unset LESSCHARSET
> less kapoio-keimevo-me-ellnvika
> cal
Augoustos 1997
Ku De Tr Te Pe Pa Sa
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
</PRE>
Kai sto Netscape 4 (me libc 5.4.x x > 4 ) avoi3te to Mail &amp; Discussions kai
8a deite sto Date tous mnves stnv mesn px 31/08/1997 kai tis nmeres sta ellnvika.
Telos :-)
<P>
<H3><A NAME="greekappmessages"></A> Egkatastasn Ellnvikwv mnvumatwv diaforwv efarmogwv</H3>
<P>
<P>Edw uparxouv duo ave3artnta paketa to gencat kai to gettext
<P>a)To <B>gencat</B> erxetai mazi me tov pngaio kwdika tns ka8e libc (katw apo to nls/) n se binary
p.x. gencat-x.y.z kai eivai e3artnmevo apo autnv opws kai to localedef.
Metaglwttizei arxeia tupou International language text (.m) se katalogous.
<P>b)To <B>gettext</B>, eivai ave3artnto apo tnv libc, kai uparxei suvn8ws se mirrors tns gnu
p.x.ftp.kernel.org/pub/mirrors/gnu/gettext-0.10.tar.gz kai sta debian,redhat.
(Gia va breite mia prosfatn ekdosn pate sto http://las.ml.org ya3te gia gettext)
To xrnsimopoiouv sxedov ola ta paketa tns GNU {file,sh,text,net}-utils kai polla
alla paketa p.x. (WindowMaker).
Gia plnrofories deite to ftp.kernel.org/pub/mirrors/gnu/ABOUT-NLS, steilte mnvuma
stnv ellnvikn omada sto el@li.org n gia va bon8nste mpeite stnv lista el-request@li.org
me tnv le3n "subscribe" sto swma tou mnvumatos.
<P>Autn tnv stigmn, apo o,ti gvwrizw, plnrws ellnvika mnvumata exei movo to tcsh 6.07.02
(me patches tou debian) kai xrnsimopoiei, dustuxws, to gencat.
<P>
<H2><A NAME="setup-tcsh"></A> <A NAME="ss5.3">5.3 Egkatastasn tou tcsh</A>
</H2>
<P>
<P>Katebaste to <B>tcsh >= 6.07.02</B>.
Breite to gencat (pngaios kwdikas libc,se binary apo redhat,debian)
Protou metaglwttiste to tcsh. n
<UL>
<LI> Epe3ergasteite to config_f.h kai alla3te to #undef NLS_CATALOGS se #define NLS_CATALOGS
Alla3te apo ola ta ellnvika arxeia nls/greek/* ta \",\',\v se ",',\n avtistoixa.
Alla3te sto nls/Makefile to
GENCAT=gencat se GENCAT=gencat -new -lang ANSIC n</LI>
<LI> Katebaste to patch gia tnv ekdosn 6.07.02 apo to debian
(ftp.debian.org/debian/hamm/hamm/source/shells/ )</LI>
</UL>
<P>Metaglwttiste, egkatastnste, dokimaste to tcsh
<PRE>
>make
>make catalogs
>su -f root -c 'make install'
>su -f root -c 'install -m 644 tcsh.greek.cat /usr/share/locale/el_GR/tcsh'
>/bin/tcsh
>setenv LANG el_GR
>unsetenv NOREBIND (gia va afnvei grafete sta ellnvika)
>fkjg
fkjg: H evtoln de bre8nke.
</PRE>
Av dev sas bgalei ellnviko mnvuma tote
<UL>
<LI> Eleg3te to /usr/share/locale/el_GR/tcsh kai to /bin/tcsh
<PRE>
>ls -l /usr/share/locale/el_GR/tcsh
-rw-r--r-- 1 root root 47443 Iouv 12 21:27 /usr/share/locale/el_GR/tcsh
>file /usr/share/locale/el_GR/tcsh
/usr/share/locale/el_GR/tcsh: data
>ls -l /bin/tcsh
-rwxr-xr-x 1 root root 270476 Sab Aug 10:23 /bin/tcsh
>date
Sab Aug 9 10:38 EET DST 1997
</PRE>
</LI>
<LI> Bebaiw8eite oti to gencat erxetai apo mia sumbatn libc
<PRE>
> gencat -V
localedef (GNU libc) 2.0.4
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Ulrich Drepper.
> ldd /bin/tcsh
libnsl.so.1 => /lib/libnsl.so.1 (0x40003000)
libncurses.so.4 => /usr/lib/libncurses.so.4 (0x4000a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004a000)
libc.so.6 => /lib/libc.so.6 (0x40078000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
</PRE>
</LI>
</UL>
<P>Av to mnvuma eivai kapws etsi
<PRE>
fkjg: ^H ^e^v^t^o^l^n ^d^e ^b^r^e^8^n^k^e.
</PRE>
<OL>
<LI> Eleg3te ta permissions stnv /usr/share/locale/el_GR
<PRE>
> ls -l /usr/share/locale/el_GR
total 96
drwxr-xr-x 3 root root 1024 Iouv 25 20:40 ./
drwxr-xr-x 68 root root 2048 Aug 6 10:41 ../
-rw-r--r-- 1 root root 29156 Iouv 25 20:36 LC_COLLATE
-rw-r--r-- 1 root root 10428 Iouv 25 20:36 LC_CTYPE
drwxr-xr-x 2 root root 1024 Iouv 25 20:34 LC_MESSAGES/
-rw-r--r-- 1 root root 95 Iouv 25 20:36 LC_MONETARY
-rw-r--r-- 1 root root 27 Iouv 25 20:36 LC_NUMERIC
-rw-r--r-- 1 root root 536 Iouv 25 20:36 LC_TIME
-rw-r--r-- 1 root root 47443 Iouv 12 21:27 tcsh
</PRE>
</LI>
<LI> 3avakavete compile tis topikes ru8miseis me to localedef</LI>
<LI> Eleg3te tnv ekdosn tou localedef kai tns libc wste va eivai idies
<PRE>
> localedef -V
localedef (GNU libc) 2.0.4
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Ulrich Drepper.
> ldd /bin/tcsh
libnsl.so.1 => /lib/libnsl.so.1 (0x40003000)
libncurses.so.4 => /usr/lib/libncurses.so.4 (0x4000a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004a000)
libc.so.6 => /lib/libc.so.6 (0x40078000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
</PRE>
</LI>
<LI> Katebaste mia pio prosfatn ekdosn twv topikwv ru8misewv</LI>
<LI> Avaba8miste tnv libc</LI>
</OL>
<P>
<H2><A NAME="confapps"></A> <A NAME="ss5.4">5.4 Ru8miseis diaforwv efarmogwv</A>
</H2>
<P>Oi pio polles efarmoges to movo pou xreiazovtai eivai to LANG se el_GR.
<UL>
<LI> X gevika:
a)Pros8este sto /usr/X11R6/lib/X11/locale/locale.alias to
el_GR.ISO-8859-7 el_GR.ISO8859-7
b) Gia ellnvikous titlous kai ovomata eikovidiwv
*titleEncoding: ISO8859-7
*iconNameEncoding: ISO8859-7
</LI>
<LI> LESS: MHN DHLWNETE TO LESSCHARSET.
Me swsta locale, tnv swstn libc, kai to LANG se el_GR deixvei ta ellnvika kavovika.
Efarmoges me mnvumata gettext (/usr/share/locale/el_GR/LC_MESSAGES/*.mo):
To LANGUAGE se el_GR.
</LI>
<LI> TCL/TK:
Gia va sas afnvei va grafete ellnvika alla3te sto /usr/X11R6/lib/X11/locale/compose.dir
apo
iso8859-1/Compose C
se
#iso8859-1/Compose C</LI>
<LI> XTERM: Parte tnv ekdosn tou xterm apo tnv Xfree86 3.3
(diaferei apo tnv ekdosn twv X11R6.3) kai metaglwttiste me -DI18N.</LI>
<LI> SH-UTILS,FILE-UTILS,TEXT-UTILS: Merika programmata tous 8elouv glibc 2
gia dei3ouv ellnvikes nmeromnvies.</LI>
<LI> SYSLOGD:???????</LI>
<LI> Dikes sas efarmoges: Gia va mporeite va bazete mexri kai ellnvikes parametrous.
<PRE>
#include &lt;locale.h>
.....
setlocale(LC_ALL,"");
.....
>dokimn --ola
</PRE>
Alles efarmoges kaveis;</LI>
</UL>
<P>
<H2><A NAME="problems"></A> <A NAME="ss5.5">5.5 Problnmata</A>
</H2>
<P>Polla ;-).
<H3><A NAME="libc-problems"></A> Problnmata me tnv C Library (libc)</H3>
<P>H METAGLWTTISMENH MORFH APO TA LOCALEDEF KAI GENCAT
SUNH8WS ALLAZEI APO LIBC SE LIBC KAI ENA PROGRAMMA
METAGLWTTISMENO ME TOUS HEADERS MIAS LIBC MPOREI
NA MHN MPOREI NA DIABASEI THS TOPIKES RU8MISEIS
FTIAGMENES APO ALLH BIBLIO8HKH.
<P>
<H3><A NAME="x-problems"></A> Problnmata me ta X</H3>
<P>
<P>Locale not supported from X library.(n kati paromoio)
Eleg3te ta dikaiwmata stous upokatalogous
<PRE>
# chmod -cR a+r /usr/share/locale /usr/X11R6/lib/locale
</PRE>
Eleg3te ta Xresources kai ya3te gia tipota upopto
<PRE>
>xrdb -query
</PRE>
Blepe problnmata me tnv biblio8nkn tns C.
<P>
<H3><A NAME="strange-problems"></A> Problnmata pou dnmiourgouvtai otav ola eivai swsta ;-)</H3>
<P>O daimovas syslogd apo8nkeuei ta dedomeva sta 7-bit kai
polles efarmoges 8a tou stelvouv tis nmeromnvies sta
ellnvika p.x.to PAM me apotelesma merikes fores va
mnv mporeis deis tov mnva.
<P>Merika programmata 8a perimevouv gia apavtnsn se erwtnsn
"yes/no" avti gia "y" n "n"ta "v" kai "o" avtistoixa.
<P>Stnv kovsola kalo eivai va exete mia grammatoseira iso-8859-7(ELOT-928).
Eidika me ellnviko tcsh.
<P>
<H2><A NAME="extra-info"></A> <A NAME="ss5.6">5.6 Epipleov plnrofories</A>
</H2>
<P>
<UL>
<LI>Linux Locales Mini HOWTO:
<A HREF="ftp://metalab.unc.edu/pub/Linux/doc/HOWTO/mini/locales">ftp://metalab.unc.edu/pub/Linux/doc/HOWTO/mini/locales</A></LI>
<LI>NLS repository:
<A HREF="http://www.iro.umontreal.ca/contrib/po/">http://www.iro.umontreal.ca/contrib/po/</A> </LI>
<LI>NLS utilities for Linux:
<A HREF="ftp://metalab.unc.edu/pub/Linux/utils/nls">ftp://metalab.unc.edu/pub/Linux/utils/nls</A> </LI>
<LI>Public domain locale and charmap sources:
<A HREF="ftp://dkuug.dk/i18n">ftp://dkuug.dk/i18n</A> </LI>
</UL>
Uparxouv ta man pages: locale.5 locale.7 setlocale.2
<P>
<P>
<P>
<HR>
<A HREF="Hellenic-HOWTO-6.html">Next</A>
<A HREF="Hellenic-HOWTO-4.html">Previous</A>
<A HREF="Hellenic-HOWTO.html#toc5">Contents</A>
</BODY>
</HTML>