Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

Linux in limba romana


   Claudiu Costin
   22 martie 2000

Introducere

Sistemul de operare Linux este prezent de mult timp in Romania. Totusi, deoarece a fost utilizat cu precadere de administratorii de sistem care stiu foarte bine engleza, nu a existat un interes major in localizarea Linux-ului. Procesul de localizare al unui sistem de operare si a aplicatiilor lui prezinta mai multe aspecte. Cea mai la indemina activitate este traducerea aplicatiilor, a mesajelor generate de aplicatii si a documentatiilor. Un alt aspect este prezentarea informatiilor de data, timp, separatori zecimali pentru numere, moneda curenta si altele, in concordanta cu specificul tarii respective. Inainte de a atinge scopurile prezentate mai inainte si pentru a face Linux-ul imediat utilizabil pentru romani, trebuie sa putem scrie si afisa diacriticele romanesti. Acesta este si scopul articolului de fata.

Fonturi romanesti la consola

Consola Linux reprezinta interfata cu utilizatorul in modul text. Din punct de vedere al utilizatorului de Windows, ea ar reprezenta MS-DOS mode. In cele mai multe cazuri este setata la 80 coloane x 25 linii, dar exista si utilizatori care prefera configuratii mai exotice.

Exista doi pasi care trebuie indepliniti pentru a citi si scrie cu caractere romanesti la consola: afisarea de fonturi romanesti si configurarea tastaturii pentru limba romana. Toate aceste operatii sint executate cu citeva utilitare ce se gasesc in pachetul console-tools. Pentru cei interesati trebuie sa amintesc ca in acest pachet sint foarte multe programe care pot realiza orice actiuni imaginabile relativ la fonturi si tastatura: creare de fonturi, transfer de fonturi din placa video in fisier si invers, setare tastatura etc. Desi in continuare voi explica pasii necesari pentru configurarea manuala a fonturilor si tastaturii, trebuie sa amintesc ca am creat un pachet de utilitare romanian-tools care sint foarte usor de folosit de catre utilizatorii incepatori. El se gaseste la http://www.ro.kde.org/ si este in format RPM.

Trebuie sa specific ca toate placile video lucreaza implicit cu setul de caractere IBM, care contine pe linga caracterele semigrafice si acele caractere utilizate de tarile din vestul Europei. El mai este denumit si ISO-8859-1. Modificarea setului de caractere nu este posibila decit incepind de la placi EGA. Aceasta inseamna ca placile grafice foarte vechi de tipul MDA, Hercules, CGA si unele tipuri de EGA nu vor putea schimba fontul pentru modul text. Din fericire nu cred ca mai exista calculatoare care sa nu aiba macar o placa VGA. Pentru cei curiosi trebuie sa explic ca fonturile de mod text pot fi schimbate prin apeluri BIOS la placa video. Acest lucru il face si kernel-ul de Linux.

Deoarece exista o multime limbi exista si multe seturi de caractere definite de standardul ISO-8859. Pentru tarile din estul Europei este definit setul de caractere ISO-8859-2. In diferite contexte acesta mai este numit si Latin2 sau ISO-02. Acesta contine pe linga alte caractere si diacriticele romanesti.

Fisierele cu seturi de caractere reprezinta imaginea binara a datelor ce trebuie incarcate in generatorul de caractere al placii video. La un sistem RedHat Linux ele se gasesc in directorul /usr/lib/kbd/consolefonts. Din cele peste 100 de fonturi prezente aici ne intereseaza numai cele care incep cu lat2. Extensia lor este PSF si deoarece sint comprimate cu gzip ca sa ocupe mai putin spatiu, extensia efectiva este .psf.gz. Exista mai multe fisiere de fonturi Latin2, fiecare corespunzind unei anumite rezolutii in modul text. Astfel, pentru o configuratie de 80 coloane x 34 linii este nevoie de un font mai mic decit cel standard. Pentru setarea standard de 80x25 este nevoie de fontul lat2u-16.psf.gz. Incarcarea lui in generatorul de caractere al placii video se face cu comanda:

consolechars -f lat2u-16

Ei bine, daca ati primit mesajul de eroare:

set_kernel_font: Operation not permitted

atunci cu siguranta nu v-ati logat ca root sau ati executat aceasta operatie din X Windows, de la o consola virtuala . In mod normal nu trebuie sa primiti nici un mesaj dupa executia acestei comenzi. Cei mai atenti vor observa o mica modificare a setului de caractere dupa executia acestei comenzi. Schimbarea setului de caractere standard cu cel ISO-8859-2 este valabila pentru orice consola text (pe care le comutati cu combinatia de taste Alt-F1 pina la Alt-F6). De asemenea, operatia nu este permisa daca sinteti logat in sistem prin telnet.

Scrierea in romana la consola

Pina in acest moment este posibil sa vedeti caracterele romanesti din orice fisier care contine coduri ASCII corespunzatoarea diacriticelor romanesti. Daca sinteti nerabdatori sa verificati, atunci porniti Midnight Commander (executind comanda "mc") si deschideti in vizualizare un program binar (de exemplu: /bin/cp) folosind tasta F3. Defilati continutul si puteti observa pe linga alte caractere ciudate si diacriticele romanesti.

Kernel-ul nu lucreaza in mod direct cu tastatura. Exista drivere care translateaza codurile emise de tastatura in simboluri universale de taste. Astfel, folosind tastaturi care emit coduri diferite, kernel-ul va primi acelasi simbol ca cel inscris pe tastatura utilizatorului. Singurul lucru care trebuie facut este sa spunem driverului de tastatura ce mapare de tastatura sa foloseasca, adica asocierea dintre simbolul de caracter si tasta fizica apasata. In pachetul console-tools exista un numar imens de mapari de tastatura. Directorul de baza unde se afla cele corespunzatoare calculatoarelor PC (care reprezinta majoritatea la noi in tara) este /usr/lib/kbd/keymaps/i386. Majoritatea utilizatorilor romani folosesc tastaturi US (engleza americana). Aranjamentul tastelor este in stilul QWERTY, adica ordinea in care este aranjat primul rind de sus de caractere, incepind de la stinga. Exista si tastaturi specific romanesti a caror stil este QWERTZ. Aceasta mapare mai este numita neoficial si Microsoft, desi singura legatura cu aceasta firma este ca acest format este utilizat in general de utilizatorii romani de Windows. Diacriticele sint mapate astfel:

sh -> ;
tz -> '
a~ -> [
i^ -> ]
a^ -> 

Majusculele se obtin folosind tasta SHIFT. De asemenea, multe din caracterele de punctuatie au alte pozitii fata de o tastatura US. In plus, tastele Y si Z au pozitiile schimbate intre ele. Daca aveti o asemenea tastatura este destul de usor sa folositi o mapare de tastatura romaneasca standardizata de ISO si care este prezenta si in Windows 9x. Din pacate cel putin distributiile de Linux Red Hat nu au o mapare romanesca corespunzatoare cu cea din Windows. De aceea, am creat un mic program care schimba in acelasi timp si fontul de la consola si maparea de tastatura. El se gaseste in pachetul romanian-tools si nu trebuie decit sa executati kbdroms. In acest fel nu va mai fi nevoie sa va cumparati o tastatura US.

Am lasat la urma folosirea tastaturilor US deoarece este cea mai importanta. Practic, aproape toate tastaturile din Romania sint cu mapare US. Multi utilizatori care au facut tehnoredactare in Windows stiu cosmarul comutarii maparii de tastatura EN si RO cu Ctrl-Shift, de fiecare data cind trebuiau scrise diacritice sau semne de punctuatie. "Profesionistii" invatau pe de rost pozitiile si scriau pe orbeste direct cu maparea romaneasca.

Foarte putini stiu ca la maparea de tastatura romaneasca tasta ALT din dreapta se numeste AltGr. Ea este utilizata la obtinerea celui de-al treilea caracter asociat unei taste. In cazul tastaturii US vom folosi tasta ALT din dreapta pe post de AltGr. La Linux Red Hat exista doua mapari de tastatura romanesti (care de fapt sint identice). Ele se gasesc in directorul /usr/lib/kbd/keymaps/i1386/qwerty si se numesc ro.kmap.gz si ro.map.gz. Singurul lucru de obiectat este maparea caracterului "a", care corespunde accentului grav (`), la stinga tastei (1). La ora actuala cea mai utilizata mapare este urmatoarea:

sh -> AltGr + s
tz -> AltGr + t
i^ -> AltGr + i
a~ -> AltGr + a
a^ -> AltGr + q

Majusculele se obtin in combinatie cu tasta SHIFT. De exemplu: A -> Shift+AltGr+a. Aveti de ales intre trei variante: 1) sa utilizati maparea de tastatura implicita cu "a" mapat pe tasta "accent grav"; 2) sa modificati fisierul ro.map.gz; 3) sa utilizati programul kbdcro din pachetul romanian-tools aflat pe CD-ul revistei "Chip" din februarie 2000. Pentru cei care nu au obtinut revista "Chip", prezint mai jos o posibilitate de modificare a fisierului ro.map.gz.

Logati-va ca root si intrati in directorul cu mapari de tastatura:

cd /usr/lib/kbd/keymaps/i1386/qwerty
cp ro.map.gz ro.map.gz.old
cp ro.kmap.gz ro.kmap.gz.old
gunzip ro.map.gz

A doua si a treia comanda au fost pentru a realiza o copii de rezerva pentru fisierele originale, iar ultima de a decomprima fisierul de mapare comprimat cu gzip. Acum deschideti in editorul preferat fisierul ro.map si editati ultima linie care arata cam asa:

altgr keycode 41 = acircumflex

Stergeti aceasta linie si scrieti urmatoarele doua linii:

altgr keycode 16 = acircumflex
shift altgr keycode 16 = Acircumflex

Salvati fisierul, comprimati-l cu gzip si actualizati si fisierul ro.kmap:

gzip ro.map
cp -f ro.map.gz ro.kmap.gz

si treaba este gata. Acum puteti incarca maparea de tastatura romaneasca cu comanda:

loadkeys ro

Observatii:

  • In pachetul romanian-tools mai exista un program care sa comute de la maparea si fontul romanesc la situatia normala, adica setul de caractere implicit si maparea US.
  • Este posibil pentru unele placi video, in anumite situatii de comutare de la modul grafic (X Windows) la modul text (consola text) fontul romanesc se "ameteste" si caracterele diacritice si cele semigrafice vor arata ciudat. Este nevoie sa rulati kbdcro sau kbdcroms ca sa remediati situatia. Maparea de tastatura nu este afectata de aceasta eroare.
  • Inainte de a incerca diferite rezolutii text mari notati urmatoarea comanda pe care o puteti da pe orbeste in caz ca ecranul devine negru sau fonturile arata a caractere "chinezesti": consolechars --default-font

Instalarea fonturilor in X Windows

Configurarea fonturilor pentru interfata grafica X Window este mult mai eleganta. Incepind cu Red Hat 6.0, fonturile nu mai sint randate de server-ul X. In schimb este folosit un program care se numeste server de fonturi si asta si face: ofera fonturi oricarui server X care doreste. In acest fel, daca aveti mai multe calculatoare in retea, este posibil sa folositi un singur server de fonturi si/sau sa partajati fonturi cu colegii din retea. Programul care se ocupa de acest lucru se numeste xfs si este executat automat la pornirea sistemului. Fisierul lui de configurare este /etc/X11/fs/config. Continutul acestuia este text si foarte intuitiv. De asemenea, pina la lansarea XFree86-4.0 va recomand sa instalati si xfstt ca un al doilea server de fonturi. Scopul lui este de a randa fonturi TrueType, adica fonturile scalabile de Windows. Pot fi folosite cu succes o multime de fonturi, iar aspectul grafic este exceptional. Nu uitati ca in general fonturile sint licentiate. Oricum, pe Internet sint o multime de fonturi TrueType gratuite.

Exista doua tipuri de fonturi pentru sistemul X: nescalabile si scalabile. Cele nescalabile sint utilizate la afisarea textelor in meniuri, casute de mesaje etc, iar cele scalabile (sau vectoriale) sint folosite in general de aplicatii grafice. Fonturile scalabile de X sint cele Type1. Pentru instalare urmati instructiunile de mai jos.

Logati-va ca root si verificati daca nu cumva aveti deja instalate fonturile ISO-8859-2:

rpm -qa | grep "XFree86-ISO8859-2"

Daca aceasta comanda nu returneaza nici un rezultat atunci trebuie sa va instalati fonturile. Mai intii montati CD-ul cu Linux si schimbati directorul astfel incit sa va aflati in directorul pachetelor RPM. Executati urmatoarea comanda:

rpm -i XFree86-ISO8859-2-*

Aceasta comanda va instala urmatoarele pachete (exemplu pentru RedHat 6.1):

XFree86-ISO8859-2-1.0-9
XFree86-ISO8859-2-100dpi-fonts-1.0-9
XFree86-ISO8859-2-75dpi-fonts-1.0-9
XFree86-ISO8859-2-Type1-fonts-1.0-9

Primul pachet contine fonturile fixe folosite in programe ca xterm, al doilea si al treilea pachet contin fonturi cu dimensiuni standard pentru rezolutiile de 75dpi si 100dpi, iar ultimul pachet contine fonturile scalabile de care vorbeam inainte.

Specificarea numelui unui font in sistemul X Windows este foarte complexa. Cere din partea utilizatorului sa cunoasca multe amanunte. Pe de alta parte, acest lucru permite indicarea cu precizie a numerosi parametrii. Doi din acesti parametrii sint registry si encoding. Pentru limba romana ei sint ISO8859 si respectiv 2. Cind o aplicatie cere fontul Helvetica fara sa precizeze explicit registry-ul si encoding-ul, xfs va genera primul font Helvetica gasit in lista lui. Am zis primul, deoarece sint doua fonturi Helvetica, corespunzind codarilor ISO8859-1 si ISO8859-2. Din cauza modului implicit de configurare a server-ului de fonturi intotdeauna se foloseste codarea vest-europeana ISO8859-1, astfel incit diacriticele "t", "s" si "a" nu vor arata cum ne asteptam. In continuare voi prezenta modalitatea de corectare a acestei deficiente.

Server-ul de fonturi xfs pastreaza informatiile de configurare in /etc/X11/fs/config.

catalogue = /usr/share/fonts/ISO8859-2/misc,
        /usr/share/fonts/ISO8859-2/100dpi,
        /usr/share/fonts/ISO8859-2/75dpi,
        /usr/share/fonts/ISO8859-2/Type1,
        /usr/X11R6/lib/X11/fonts/75dpi,
        /usr/X11R6/lib/X11/fonts/misc:unscaled,
        /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
        /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
        /usr/X11R6/lib/X11/fonts/misc,
        /usr/X11R6/lib/X11/fonts/Type1,
        /usr/X11R6/lib/X11/fonts/Speedo,
        /usr/share/fonts/ISO8859-2/misc,
        /usr/share/fonts/ISO8859-2/100dpi,
        /usr/share/fonts/ISO8859-2/75dpi,
        /usr/share/fonts/ISO8859-2/Type1

Liniile de mai sus arata o parte a fisierului de configurare, asa cum ar trebui sa fie pentru utilizatorii romani. Logati-va ca root si editati fisierul de configurare. Daca xfs este in executie (ceea ce este aproape sigur daca nu cumva l-ati oprit intentionat) atunci executati comanda:

killall -HUP xfs

pentru a-l obliga sa-si reciteasca fisierul de configurare. Este de preferat sa aveti X Windows oprit deoarece sint situatii in care se blocheaza la reconfigurarea din mers a fonturilor.

Configurarea server-ului de fonturi TrueType xfstt este mult mai simpla. Trebuie sa modificati doar scriptul /etc/rc.d/init.d/xfstt. In partea de inceput a fisierului exista initializarea variabilei ENCODING care va trebui sa fie in cazul nostru: ENCODING=iso8859-1,iso8859-2

Pentru a lua in considerare noile setari, xfstt trebuie restartat executind comanda:

 ./etc/rc.d/init.d/xfstt restart

Tastatura romaneasca pentru X

Acest pas trebuie realizat daca nu folositi un mediu grafic integrat precum KDE. Acesta are un utilitar propriu de configurare a maparii de tastatura in X Windows. In caz ca folositi XForce, ICEWM, FVWM trebuie sa executati pasii de mai jos.

Trebuie cunoscut ca sistemul X Windows foloseste propriul mecanism de mapare a tastaturii si utilitarul care realizeaza acest lucru este xmodmap. In cazul Red Hat Linux, scriptul de initializare /etc/X11/xinit/xinitrc cauta un fisier .Xmodmap in directorul dumneavoastra personal si daca exista incarca maparea de taste specificata prin executia programului xmodmap. Desi au fost publicate numeroase mapari romanesti pentru tastatura, nici una nu a ajuns nici macar in Red Hat 6.1. In mod normal maparile de tastatura sint in directorul /usr/share/xmodmap/. Pentru cei care nu au acces la un fisier xmodmap.ro iata alaturat continutul esential al lui.

! xmodmap.ro
! Reprelucrat din xmodmap.us
! Claudiu Costin <claudiuc@geocities.com> 29 noiembrie 1999
clear Mod1
clear Mod2
keycode  24 = q Q acircumflex Acircumflex
keycode  28 = t T thorn Thorn
keycode  31 = i I icircumflex Icircumflex
keycode  37 = Control_L
keycode  38 = a A atilde Atilde
keycode  39 = s S 0xBA 0xAA
keycode  50 = Shift_L
keycode  51 = backslash bar
keycode  62 = Shift_R
keycode  64 = Alt_L Meta_L
keycode 109 = Control_R
keycode 112 = KP_Divide
keycode 116 = Mode_switch
keycode 117 = Multi_key
add Mod1 = Alt_L
add Mod2 = Mode_switch

Creati un fisier xmodmap.ro in directorul dumneavoastra personal folosind modelul dat. Maparea de tastatura poate fi modificata din mers, fara sa fie nevoie sa restartati X Windows. Deschideti o consola xterm si executati:

cd ~
xmodmap xmodmap.ro

Daca aveti acces la Internet puteti gasi o mapare romaneasca completa la http://www.lug.ro, site-ul oficial Romanian Linux User Group.

Concluzii

Linuxul ofera o mare flexibilitate si complexitate de configurare pentru tastatura si fonturi. Majoritatea distribuitorilor de Linux au creat utilitare care sa ascunda detaliile si sa ofere o paleta standard de optiuni. Pentru cei interesati in obtinerea maximului de control asupra sistemului le recomand sa citeasca paginile de manual ale utilitarelor din pachetul console-tools si documentul "The Linux keyboard and console HOWTO", aflat pe CD-ul distributiilor Linux.

Resurse