Cheia de acces n sare lanagigarea in pagina. Sari la inceputul continutului.

Acest document e o traducere. In caz ca apare vreo eroare sau discrepanta, ultima versiune in Engleza este cea autoritativa. Copyright-ul original apartine W3C, dupa cum e aratat mai jos.

Traducator: Costea Marian

s_gotoW3cHome Internationalizare
 

Controlere Unicode vs. marcare pentru sprijinul bidi

Cititorii vizati: Programatori XHTML/HTML (folosind editori sau scripting), dezvoltatori de scripturi (PHP, JSP, etc.), dezvoltatori de scheme (DTDs, XML Schema, RelaxNG, etc.), manageri de proiect Web si oricine se intreaba daca trebuie sa foloseasca caractere de control Unicode in marcare pentru a obtine o curgere potrivita a textului pentru scripturi de la dreapta la stanga.

Intrebare

Pentru formatul corect al textului bidi in continutul (X)HTML sau XML, ar trebui sa folosesc codurile de control sau marcajele?

Introducere

Algoritmul bidirectional Unicode determina directionalitatea textului pe baza proprietatilor directionale ale fiecarui caracter. Ocazional, algoritmul are nevoie de putin ajutor pentru a determina curgerea obiectelor in text ce combina caractere Arabice sau Hebrew cu acelea ale altor scripturi. In alte cazuri, ai dori sa treci peste efectul algoritmului bidirectional. De examplu:

Aratam exemple de text afisat folosind scripturi reale de la dreapta la stanga. Am aratat de asemenea o versiune numai ASCII, imediat dupa, care arata caractere latine cu litera mica si caractere arabe sau ebraice cu litera mare. Chiar daca textul ASCII este o traducere a originalului, ordonarea si pozitionarea caracterelor reflecta textul originalului.

Aceasta propozitie mostra arata ce poti obine daca te bazezi doar pe algoritmul bidirectional. Aceasta este incorect. Deoarece intregul citat este in Hebrew, textul "W3C" si virgula ar trebui sa apara de la stanga (ex. dupa) textului Hebrew.

Titlul spune "פעילות הבינאום, W3C" in ebraica.

Versiunea ASCII:
Titlul spune "ERAZILANOITANRETNI ED ETATIVITCA, w3c" in ebraica.

Rezultatul corect la afisare ar trebui sa arate asa:

Titlul spune "פעילות הבינאום, W3C" in ebraica.

Versiunea ASCII:
titlul spune "w3c ,ERAZILANOITANRETNI ED ETATIVITCA" in ebraica.

Unicode furnizeaza coduri de formatare speciale, invizibile pentru construirea sau trecerea peste rezultatul algoritmului bidirectional in textul simplu. Asta include urmatoarele:

Aceste caractere sunt folosite in pereche. Una dintre primele patru caractere mentionate mai sus este folosita prima si indica inceputul razei textului, raza care este terminata de ultimul caracter (PDF) in fiecare caz. Urmatorul exemplu arata cum caracterele de control pot fi folosite in textul simplu.

Urmatoarele arata ordinea caracterelor in memorie, si adauga doua caractere de control reprezentate aici ca superscripturi:: U+202B, RIGHT-TO-LEFT EMBEDDING (incorporarea dreapta-spre-stanga) (RLE), si U+202C, POP DIRECTIONAL FORMATTING (formatarea-directionala-POP) (PDF).

Titlul spune"RLEפעילות הבינאום, W3CPDF" in ebraica.

Versiunea ASCII:
titlul spune"RLEACTIVITATE DE INTERNATIONALIZARE, w3cPDF" in ebraica.

Asta produce rezultatul corect (vezi mai sus) la afisare.

Standardul HTML4 introduce markaje pentru a produce exact aceleasi efecte ca aceste caractere Unicode.

Folosind XHTML, exemplul anterior poate fi codat ca:

Titlul spune "<span dir="rtl">פעילות הבינאום, W3C</span>" in ebraica.

Versiunea ASCII:
titlul spune "<span dir="rtl">INTERNATIONALIZATION ACTIVITY, w3c</span>" in ebraica.

Pentru simplitate, exemplele de cod arata caracterele in ordinea in care sunt stocate in memorie, nu in ordinea in care sunt afisate intr-un editor.

Este recomandat de catre W3C ca limbajul de marcare bazat pe XMLsa furnizeze si directia de conducere a marcajelor recomandate. (Vezi marcajele propuse de Set-ul de Tag-uri Internationale Recomandate.)

Intrebarea este daca ar trebui sa folosesti marcaje sau condul caracterelor Unicode.

Raspuns

In (X)HTML si XML nu folosesc perechea codulului de caractere de formatare bidi Unicode acolo unde marcajul echivalent este valabil.

Reasons

Cand caracterele de control sunt folosite in continutul curgerii libere, este intotdeauna un risc de suprapunere sau raze nedeterminate - in special datorita caracterelor care nu au forma vizibila. Daca sunt folosite atribute, aceasta nu este o problema in marcajele bine formate.

Este de asemenea mai usor sa gestionezi mostenirea si efectele separatorilor de paragrafe cu marcaje. Utilizand controalere Unicode necesita o munca mult mai mare pentru obtinerea aceluiasi rezultat.

Specificatiile HTML 4 avertizeaza in special impotriva combinarii celor doua abordari din cauza riscului marit a imbinarii improprii. Recomanda se asemenea si utilizarea marcajelor deoarece "ofera garantia integritatea structurii documentului si atenueaza unele probleme la editarea textului bidirectional HTML cu un simplu editor de text". Nu prescrie utilizarea codurilor de formatare bidi Unicode.

Raportul tehnic comun Unicode #20 si W3C , Unicode in XML si alte Limbaje de Marcare merge mai departe. Recomanda in mod explicit ca numai marcajele sa fie folosite. Recomanda si ignorarea codurilor de formatare bidi Unicode daca sunt detectate intr-un context de browser si inlocuite de marcaje potrivite la primirea intr-un context editat.

Corespondente

Urmatorul tabel (adaptat din Unicode in XML si alte Limbage de Marcare) da marcajul potrivit pentru inlocuirea fiecarui alt cod.

Caracterul Codul Marcajul potrivit Commentpo
LRE U+202A dir = "ltr" atribut pe bloc sau element in linie
RLE U+202B dir = "rtl" atribut pe bloc sau element in linie
RLO U+202E <bdo dir = "rtl">  
LRO U+202D <bdo dir = "ltr">  
PDF U+202C nimic cand e folosit sa inchieie RLE sau LRE (inchiderea este furnizata de un tag de final al elementului purtator de atributie dir)
</bdo> cand e folosit sa inchieie RLO sau LRO

Cazuri problema

Poti fi locuri in fisierele HTML sau XML unde marcajele nu pot fi folosite si codul caracterelor de formatare Unicode sunt deci potrivite.

Nu este posibil sa aplici marcaje directionale unor valori atribuite, astfel ca orice text cu atribute va avea nevoie sa foloseasca caractere Unicode pentru controlul directiei. Acestea fiind spuse, W3C recomanda ca dezvoltatorii de scheme XML sa evite creearea situatiilor unde autorii de continut vor folosi text cu limbaj natural cu valori atribuite. Pot fi marcaje mostenite, totusi, ca atribute in HTML, unde nu se pot evita.

Alte situatii unde caracterele de control pot furniza singura solutie sunt elementele care permit doar continutul cu caractere sau acre omit suportul pentru atribute directionale. Un exemplu este elementul titlu in HTML. Din nou, astfel de situatii trebuiesc evitate in noile formate XML. (Limiteaza doar aplicatiile textului directional, dar si aplicatii lingvistice si alte meta informatii.)

Caractere RLM si LRM

Alte doua caractere de control directional invizibile dar ne-incorporate furnizate de Unicode nu au de obicei marcaje corespunzatoare si trebuie folosite ori in caracter ori in forma libera. Tineti minte ca sunt mai putin problematice pentru ca sunt folosite singure, nu in perechi pentru a delimita raze de text ca alte caractere de control discutate.

Apropo

Documentul Unicode in XML si alte Limbaje de Marcare furnizeaza ghidare pentru uzul unei mari raze de caractere Unicode vs. marcaje, nu doar controalerele bidi.

Pentru XML ar trebui sa-ti creezi propriul marcaj bidi in DTD sau Schema si sa aplici directionalitatea folosind CSS.

Spune-ne părerea ta (în Engleză).

Abonează-te la RSS feed.

Resurse noi

Noutăţi prima pagină

Twitter (Noutăţi prima pagină)

‎@webi18n

Alte materiale

Autor: Richard Ishida, W3C. Traducator: Costea Marian.

XHTML 1.0 Valid!
CSS Valid!
Incodat cu UTF-8!

Tradus din engleza: 2007-11-22. Ultima modificare a traducerii: 2011-07-18 19:21 GMT

Pentru a vedea toate schimbarile documentului, cauta qa-bidi-controls pe blogul i18n.