Internaciigo de komputilaj programoj/Prilaborado de tekstoj

From Wikiversity

[1]


Prilaborado de tekstoj[edit]

Ĉiuj aspektoj diskutitaj ĝis nun koncernis la uzan plurlingvecon, tio estas la kapablo de programo, dialogi en pluraj lingvoj kun diverslingvaj uzantoj. Por programoj, kiuj prilaboras tekstojn, ekzistas ankaŭ la datena plurlingveco, la kapablo prilabori tekstojn en pluraj lingvoj. Tiaj programoj estas ekzemple:

  • tekst-redaktaj programoj;
  • tekst-redaktaj kaj tekst-aranĝaj (tipografiaj) programoj;
  • retpoŝtaj programoj;
  • ret-kroziloj.

Se tia programo devas nur vide montri (vidigi) tekstojn en pluraj lingvoj, ne estas specialaj problemoj, ĉar tion faras ankaŭ programoj kun uzula plurlingveco. Sed kelkaj programoj vere prilaboras aŭ almenaŭ analizas tekstojn, kaj tie ja estas gravaj diferencoj inter diversaj lingvoj. Tiom gravaj diferencoj, ke nepre necesas aparta traktado de la lingvoj. Ekzemploj estas ortografia kaj gramatika kontrolo de tekstoj en tekst-redaktaj programoj.

Por tiaj programoj la vorto "internaciigo" havas iom alian signifon. Ĝi signifas la trovon kaj realigon de teknikoj, kiuj estas pli-malpli lingvo-sendependaj kaj adapteblaj al pluraj, multaj aŭ eĉ ĉiuj (skribataj) lingvoj.

Rompo de linioj ("enpaĝigo")[edit]

Kiam varias la longo de mesaĝoj aŭ la disponebla spaco, necesas disigi tekstojn al linioj (eble eĉ alineoj aŭ paĝoj). La reguloj por tio estas dependaj de la lingvo. Ekzemple en kelkaj lingvoj oni rajtas ĉiam rompi linion post ligo-streko. Sed en Esperanto aŭ en la germana tio ne eblas, se la streko estas post spaceto, ĉar la streko ne estu sola fine de linio:

…ĉiuj programŝanĝoj kaj -adaptoj…
…alle Programmänderungen und -anpassungen… 

Tial bona internaciiga kadraĵo havas metodojn por dividi frazojn al vortoj. Java havas por tio la klason java.text.BreakIterator.

Ortografia kontrolo[edit]

Ortografia kontrolo en programoj kutime baziĝas sur leksikono de la koncerna lingvo. Se vorto estas en la leksikono, la programo akceptas ĝin, alie ĝi raportas (eblan) eraron.

Baza kapablo por tia algoritmo estas dividi frazojn al vortoj. En kelkaj lingvoj tio estas facila, ĉar vortoj ĉiam estas ĉirkaŭataj de spacetoj aŭ interpunkcioj. En aliaj lingvoj eblas "kunmeti" vortojn. Ankaŭ la reguloj pri interpunkcioj estas malsamaj.

Plia problemo estas, ke leksikono kutime enhavas nur la bazajn formojn de vortoj. Se aliaj (fleksiaj, deklinaciaj, konjugaciaj) formoj estas formeblaj regule, oni ne volas listigi ilin en leksikono. Tiam necesas metodo (algoritmo) por analizi tiujn formojn. Tia algoritmo kutime estas parto de la programo, do ne eblas lokecigo sen modifo de la programo.

Tie ĉi estas aparte danĝere, se programantoj eliras nur de la propra lingvo. Ekzemple la angla lingvo havas nur tri verajn finaĵojn (-s, -ed kaj -ing), kaj ili estas aplikeblaj al preskaŭ ĉiuj vortoj. La ortografia kontrolo do baziĝas preskaŭ tute sur la leksikono. En aliaj lingvoj tio povas esti tute malsama. Tie ĉi utilas la samaj kadraĵo-metodoj kiel por enpaĝigo.

Gramatika kontrolo[edit]

Ortografia kontrolo, kiu ekzamenas nur unuopajn vortojn, havas certajn limojn kaj ne povas trovi ĉiujn erarojn. Ekzemple ĝi ne povas trovi mankantan akuzativon aŭ pluralon. Por tio necesas konsideri la gramatikon de tuta frazo.

La gramatika kontrolo estas komplika afero. Se ĝi volas vere kompreni la strukturon de frazoj, ĝi eniras la kampon de artefarita inteligenteco (AI), kaj tie la rezultoj ofte ne estas klaraj kaj unikaj. Kaj la teknikoj estas tre dependaj de la lingvo. Ekzemple substantivon oni rekonas en la rumana aŭ en Esperanto ofte laŭ finaĵo, en la germane per komenca majusklo, en la angla laŭ neniu formala kriterio.

Se oni tamen trovas facile kontroleblan aferon, oni emas tuj ĝeneraligi ĝin. Ekzemple en la angla lingvo neniam la sama vorto aperas dufoje sinsekve (sen intera komo). Tajpi la saman vorton dufoje estas eraro, kiu ofte okazas, kiam oni estas interrompata dum tajpado. Tial ekzemple la angla versio de la programo Microsoft Word markas ripeton de vorto kiel eraron.

Ankaŭ la germana versio de Microsoft Word faras tion. Bedaŭrinde en la germana lingvo ja povas okazi ripetoj de vortoj, ĉar kelkaj vortoj havas plurajn funkciojn (artikoloj / rilativoj / demonstrativoj). Tial en la germana lingvo ripeto de vorto ne ĉiam estas eraro.

…der Passant, der der Frau begegnete…
…die Zeugin, die die Kollision beobachtete…
…das Kleid, das das Mädchen trug… 

Tiajn specialaĵojn programistoj malfacile povas antaŭvidi en lingvo, kiujn ili ne konas. Necesas diri, ke tiaj aferoj estas preskaŭ ne internaciigeblaj; oni devas aparte trakti ilin por ĉiu lingvo.

Tie ĉi, internaciigo povas okazi nur en tre alta nivelo: Eblas oferti en kadraĵo kompletan ortografian aŭ/kaj gramatikan kontrolon por ĉiu unuopa lingvo. Tiel pluraj programoj povas uzi la kontrolilojn. Sed la kontrol-modjuloj mem ne estas plene internaciigeblaj.

Inteligentaj citiloj[edit]

Komputila aŭ skribmaŝina klavaro, kiel azerty, ofte havas nur unu citilon, la supran, rektan, duoblan citilon ("). Oni povas uzi ĝin, sed la uzo de malfermaj kaj fermaj citiloj estas pli kongrua kun lokaĵa kutimo. Ni jam vidis, ke tiuj dependas de la lingvo.

Iuj programoj proponas "inteligentajn citilojn", kiuj aŭtomate alprenas la ĝustan formon, kiam la uzulo tajpas ". Ofte tio funkcias ankaŭ por unuoblaj (simplaj) citiloj, tajpataj kiel apostrofoj. La algoritmo por la angla lingvo estas sufiĉe simpla: Se antaŭ la citilo estas spaceto, ĝi estu malferma citilo, alie ferma. En la angla tio funkcias, ĉar la ferma unuopa citilo havas la saman formon kiel (vera) apostrofo.

En la germana lingvo la unuoblaj citiloj havas la formon de komo (malferma citilo) kaj de turnita, altigita komo (ferma citilo), sed ne de apostrofo. Tial per programo, kiu havas "inteligentajn citilojn" laŭ la anglaj reguloj, en la germana lingvo ne eblas tajpi apostrofon post litero; ĝi tuj estas transformita al ferma citilo. Tiaj aferoj indikas malĝustan elekton de la nivelo de internaciigo; evidente la traktado de citiloj devas okazi komplete en internaciiga kadraĵo.


Rezulto de citilaj tajpado per misa "inteligentajn citilojn"
Angle citiloj: ‘no ‘no' ‘no’
apostrofo: it it' it's
Germane citiloj: ‚ja ‚ja' ‚ja‘
apostrofo ("geht's"): geht geht' geht‘s

En la unuaj tri ekzemploj la uzulo ricevas, kion li deziris. En la lasta ekzemplo la uzulo volis tajpi la tekston "geht's" (kun apostrofo), sed la sistemo transformis la apostrofon al ferma citilo, kiu havas alian formon.

Specimenaj demandoj[edit]

Testu vin!

1 Kiam ekezemple necesas disigo de teksto al vortoj aŭ al linioj?

Kiam varias la longo de mesaĝo
Kiam varias la komputila memoro
Kiam varias la disponebla vidigeja spaco
Kiam varias la uzulo

2 Kial la datena plurlingveco estas pli malfacila ol uza plurlingveco.

Ĝi necesas analizi strukturon de tekstojn
Ĝi necesas enkalkuli diferencojn inter diversaj lingvoj
Ĝi necesas la trovon kaj realigon de spertaj teknikoj

3 Ĉu gramatika kontrolilo povas uzi internaciigan kadraĵon aŭ mem estu parto de tia kadraĵo?

Jes, tio estas facila kaj fakte multe kadraĵo provizas tion.
Tio estas konsiderebla, sed la programo probable necesos specialajn pritraktojn
Tute ne, oni ne povas faktori ion ajn kodon pri tio


Referencoj[edit]

  1. Parto aŭ ĉiu enhavo de tiu paĝo reprenas tiun originan verkon.