28 July, 2009

Cu sau fără diacritice - mediul

Foarte multe aplicații de consolă (si emulatoarele de terminal) se bazează pe variabilele de mediu (environment variables) atunci când trebuie să afișeze caractere speciale. Pentru a avea suport corect de limba română este necesar să aveți variabila $LANG configurată pe UTF-8. În Debian acest lucru se obține cel mai ușor cu
dpkg-reconfigure locales
Astfel veți putea alege ce locale doriți să fie generate pe sistemul dumneavoastră (în cazul în care aveți nevoie de mai multe) și să stabiliți care este cea implicită. Pentru suport complet de limba română vă rugăm să alegeți ro_RO.UTF-8. Astfel sistemul va încerca să afișeze tot în limba română. Veți avea ocazia să vedeți ce programe au interfața tradusă și eventual să raportați greșeli (sau termeni inadecvați). Dacă nu doriți să faceți această configurație la nivel de sistem va fi suficient să modificați variabila $LANG pentru utilizatorul în cauză. Pentru interpretorul de comenzi (shell) bash puneți
export LANG=ro_RO.UTF-8
undeva în fișierul .bashrc Unii dintre dumneavoastră nu vor dori ca programele să afișeze traducerile în română, dar totuși să păstreze toate celelalte setări (și corectorul ortografic ține cont de $LANG dacă programul folosit nu are configurații explicite în acest sens). În acest caz puteți să setați variabila $LANGUAGE (ex. export LANGUAGE=english) Pentru configurații mai specifice încercați să modificați unele din variabilele afișate de comanda „locale”.

Cu sau fără diacritice - consola

Pentru cei care folosesc sisteme GNU/Linux fără X (sau preferă consola) va fi necesar să facă câteva configurări pentru a suporta caracterele speciale românești. În Debian cel mai simplu se face cu
dpkg-reconfigure console-setup
Notă: în 5.0 (Lenny) acest pachet nu este instalat implicit. Comanda de mai sus vă permite să alegeți tastatura, aranjamentul de tastatură, codificarea folosită în consolă, ce set de caractere să suporte fontul ales și ce font să folosiți. Pentru aranjamentul de tastatură recomand cel denumit „ro” (în variante mai vechi ar putea apărea ca varianta „comma”, cunoscut și ca aranjamentul „Programmers”. La prima vedere acest aranjament este identic cu cel „us”, dar se poate folosi tasta AltGr (sau Alt-dreapta) pentru a genera diverse caractere speciale. ă, î, ș și ț se generează cu AltGr+litera de bază iar â cu AltGr+q (deasupra de A pe o tastatură QWERTY). În afară de acestea se mai pot genera și alte caractere cum ar fi € (AltGr+e), © (AltGr+c), ghilimelele românești „” (AltGr+[ respectiv ]) și o mulțime de caractere cu accente utile pentru texte în limba maghiară sau cu umlaut pentru limba germană (Scharfes S ß este AltGr+w) dacă folosiți tastele moarte (dead keys). Limba română mai are și alte aranjamente, cum ar fi cel standard (aranjamentul implicit pentru limba română din Windows Vista). Acesta este util în cazul în care posedați una din rarele tastaturi românești. În cazul în care nu găsiți anumite caractere de pe tastatura „us” încercați AltGr :-) Aranjamentele cu sedilă vă rog să le evitați pentru a nu înmulți textele cu ș și ț greșite. Dacă aveți nevoie de aranjamentul creat de Microsoft (cel care este implicit în Windows XP sau versiunile mai vechi de Windows) acesta se numește „winkeys”. Dacă vi se pare că denumirile de aranjamente și variante sunt aceleași cu cele din X, să știți că așa este :-) console-setup folosește aceleași definiții. În ce privește celelalte setări, codificarea trebuie să fie UTF-8 (cele tip ISO-8859 sunt de evitat) iar fontul trebuie să suporte minim setul de caractere Latin2 (central Europe and Romanian). Mai departe veți putea alege între fontul implicit (VGA) și cel Terminus (un font recomandat dacă stați foarte mult în fața ecranului). Puteți alege și dimensiunea fontului (în pixeli). E posibil ca aceste instrucțiuni să funcționeze și pe distribuțiile derivate din Debian (ex. Ubuntu).

27 July, 2009

Cu sau fără diacritice - aplicații în mod text

În prima parte am testat ce emulatoare de terminal au suport corect pentru UTF-8 (consola linux nu are probleme dacă totul e configurat corect). Totuși nu e suficient, și aplicațiile au nevoie de suport. Aplicații testate de mine:
  • clienți e-mail:
    • mutt (1.5.20): da
  • clienți IRC:
    • irssi (0.8.13): da
  • browsere:
    • lynx (2.8.7rel.1): nu (nu afișează ș și ț, celelate caractere speciale sunt afișate fără diacritice)
    • links (2.2): nu (afișează * în loc de ș și ț, celelate caractere speciale sunt afișate fără diacritice)
    • links2 (2.2): da, doar în modul grafic (-g) alfel e la fel cu links
    • w3m (0.5.2): da
  • manageri de fișiere:
    • mc (4.6.2): da
  • editoare de text:
    • vim (7.2.148): da
    • mcedit (mc 4.6.2): da
    • nano (2.0.9): da
  • pagere:
    • less (429): da
    • more (util-linux 2.15.1~rc1): da
    • most (5.0.0a): da
Dacă mai știți și alte aplicații în mod text (cu sau fără suport corect) vă rog să scrieți un comentariu.

Cu sau fără diacritice - terminale

În urma unei „flame” pe lista RLUG am primit o sugestie de la Petru Rațiu, și anume să documentez cum trebuie configurat un sistem Linux pentru a avea suport corect pentru limba română. În consecință am instalat din nou toate terminalele din Debian și le-am testat pe rând cu mutt (1.5.20) și mc (4.6.2). Am folosit mc nu atât pentru suportul de diacritice ci pentru că am observat fenomene „ciudate” când variabila LANG este setată pe ceva UTF-8. Testele au fost făcute cu configurația implicită, cu excepția lui pterm care la primul test a fost foarte aproape de suportul fără probleme. Știu că versiunile programelor sunt relativ noi (doar folosesc Debian unstable), dar nu mă aștept la surprize mari nici cu variante mai vechi. În general avem două categorii mari:
  1. Fără probleme:
    • evilvte (0.4.4.1)
    • gnome-terminal (2.22.3)
    • konsole (4.2.4)
    • lxterminal (0.1.6)
    • mlterm (2.9.4)
    • roxterm (1.15.2)
    • urxvt/rxvt-unicode (9.06)
    • xfce4-terminal (0.4.0)
    • xterm (243)
  2. Fără suport (în mc și mutt apăreau caractere ciudate în locul caracterelor cu diacritice dar și în locul caracterelor de linii):
    • aterm (1.0.1)
    • eterm (0.9.5)
    • mrxvt (0.5.4)
    • multi-aterm (0.2.1)
    • rxvt (2.6.4)
    • wterm (6.2.9)
    • xvt (6.2.9)
Excepții: kterm (6.2.0): - mc: nu are linii și pe alocuri afișează caractere asiatice - mutt: unele caractere nu apar de loc, altele (exemplu „î”) sunt înlocuite cu caractere asiatice powershell (0.9): la prima vedere pară să „înghită” anumite diacritice (nu le afișează de loc, în special „ș”) și afișează niște linii orizontale ciudate. Prima impresie e că suportul UTF-8 e cam prost (inexistent?). Probabil că nu e de mirare ținând cont că folosește gtk 1.2 ... pterm (0.60): - mc: ok - mutt: ok, dar diacriticele erau înlocuite cu un punct până când l-am pornit cu „-fn Terminus-20” Concluzie: din păcate aproape toată gama de terminale „ușoare” au probleme dacă locala este UTF-8. Deocamdată nu am găsit decât patru emulatoare de terminal clasice care să suporte UTF-8: xterm, urxvt/rxvt-unicode, mlterm și pterm. pterm e posibil să aibă un mic defect (bug) deoarece n-a detectat că fontul implicit suportă UTF-8 (și automat n-a comutat modul UTF-8). După cum era de așteptat toate terminalele pe bază de GTK/GNOME și QT/KDE au suport corect. Singurul cu probleme, powershell, ar trebui evitat oricum deoarece încă mai folosește vechea bibliotecă gtk 1.2 Dacă mai știți și alte emulatoare de terminal (cu sau fără suport UTF-8) vă rog să scrieți un comentariu.