[{"text_idx": "#000001", "text": "Kiel programi mas\u0302inan tradukadon por nova lingvo en Esperantilo?"}, {"text_idx": "#000002", "text": "Iafoje mi ricevas leterojn de uzantoj de Esperantilo, kiu dezirus mas\u0302inan tradukadon al ilia nacia lingvo. Esperantilo nun subtenas la mas\u0302inan tradukadon al 3 lingvoj, sed mi nuntempe okupas nur pri pola lingvo. Estas g\u0302enerale konata fakto, ke programado de mas\u0302ina tradukado ne estas triviala tasko. Alikaze ni delonge havus multajn altnivelajn tradukajn programojn por multaj lingvoj. Fakte nur kelkaj profesiaj firmaoj agas en tiu kampo kaj nombro de subtenataj lingvoj estas malgranda. Esperantilo ne estas planita por subteni dekomence multajn lingvojn. Do c\u0302iu nova subtenata lingvo bezonas novan planadon kaj programadon. Mi ankau\u0306 konscie okupis nur pri unudirekta traduko el Esperanto al nacia lingvo, c\u0302ar tiu direkto s\u0302ajnas havi malpli multajn obstaklojn pro trajtoj de esperanta lingvo. Mi tamen dekomence de programado planis la izolon de partoj de programo, kiuj estas dependaj de lingvo kaj partoj, kiuj estas g\u0302eneralaj pro mas\u0302ina tradukado mem. Tial la tradukado al tiuj 3 lingvoj uzas en 80% la saman programan bazon. Nur la plej specifaj fragmentoj estas programitaj en tn. traduka modulo por koncerna lingvo. Ankau\u0306 la proceso de tradukado mem ebligas la reuzon de grandaj partoj de programo por diferencaj lingvoj."}, {"text_idx": "#000003", "text": "La proceso de programado estas"}, {"text_idx": "#000004", "text": "Gramatika transformigo kaj reordigo (Tiu parto dependas de cela lingvo)"}, {"text_idx": "#000005", "text": "Esperantilo enhavas ankau\u0306 multajn partojn, kiuj ne servas direkte en proceso de tradukado, sed tamen influas la kvaliton kaj la uzeblecon de tuta sistemo."}, {"text_idx": "#000007", "text": "Tial Esperantilo povus bone servi kiel baza sistemo por aliaj tradukaj sistemoj, c\u0302efe en direkto de Esperanta lingvo al nacia lingvo. Due oni povus reuzi la tradukan modulon de iu ekzistanta lingvo por krei tradukan modulon de similspeca lingvo. Ekzemple la traduka modulo de pola lingvo povus esti uzata kiel s\u0302ablono por c\u0302iu slava lingvo. La germana kaj angla moduloj povus esti s\u0302ablonoj por aliaj multnombraj germanaj lingvoj. Tamen mi ne kredas, ke la sintaksa analizo de esperanta lingvo en Esperantilo estus sufic\u0302a por traduko al lingvoj, kiuj tre diferencas de Esperanto. Temas precipe pri struktura (sintaksa) malsimileco."}, {"text_idx": "#000008", "text": "Antau\u0306 ol vi decidis okupi pri mas\u0302ina tradukado"}, {"text_idx": "#000009", "text": "Mas\u0302ina tradukado postulas multajn konojn kaj vastan scion. Do oni devus longe prepari por tiu tasko. Oni devus eklerni multajn novajn kampojn kaj profundigi jam konatan scion. Do tio ne estas okupo por unu semajno au\u0306 iu instrua projekto. Tamen ekzistas sufic\u0302e multaj homoj, kiuj jam havas vastajn spertojn kaj delonge okupas pri tiu temo. Esperantilo estas io, kio povus esti interesa por homoj, kiuj volas havi ion praktikan. Ankau\u0306 kiel s\u0302atokupo estas eble en longa tempo fari ion, kio funkcias kaj havas trajtojn de tn. serioza au\u0306 profesia okupo. Por mi la atributo \u201eprofesia\u201c signifas nur, ke temas pri mono, kiun oni ricevas au\u0306 devas pagi. En tiu senco la sistemo Esperantilo ne estas profesia."}, {"text_idx": "#000010", "text": "Mi povas helpi al c\u0302iu, kiu volas mem plukonstrui au\u0306 reuzi la sistemon Esperantilo, sed\nmi devas dekomence substreki, ke la plej grandan laboron oni devus fari mem. Oni devas mem studi la komputilan lingvistikon, lerni programajn lingvojn kaj gramatikon. La projekto estas tute malferma kaj libera. C\u0302iujn fontojn mi publikigas libere. Do oni ankau\u0306 povus sen mia helpo rekonstrui kaj adaptigi la sistemon por c\u0302ies kialoj. Ekzistas multaj informoj en mia blogo kaj sur la TTT-pag\u0302oj de Esperantilo. Ankau\u0306 pri aliaj teknikoj oni povas multe legi en interreto."}, {"text_idx": "#000011", "text": "Due vi devas pripensi, c\u0302u vi eblas trovi sufic\u0302e da lingvistika materialo. C\u0302u ekzistas liberaj glosaroj por koncerna lingvo? C\u0302u ekzistas bonaj priskriboj de gramatiko? C\u0302u aldonaj informoj pri fleksio ankau\u0306 estas uzeblaj? Mi ofte reuzas aliajn liberajn materialojn. La ideo \u201eProgrami tradukan sistemon tute de komenco\u201c estas tre malespera okupo."}, {"text_idx": "#000013", "text": "Por programi la programon Esperantilo mi uzas iom ne veste konatan programan medion. La baza programa lingvo estas Tcl. Eldone la programo estas skribita lau\u0306 objektema maniero helpe de XOTcl. La programa medio estas XOTclIDE. Mi kredas, ke XOTcl kaj XOTclIDE ebligas la uzon de programa lingvo TCL en grandaj projektoj. Tiuj teknikaj iloj estas malofte uzataj. Sed la ideoj devenas de aliaj medioj, kiuj normale estas veste konataj. Do Tcl similas al C, Java kaj aliaj skriptaj lingvoj. XOTcl estas simila al Java, C++, Ryby kaj Python. Fine la programa medio XOTclIDE estas programita en tradicio de medioj por programa lingvo Smalltalk, kiuj influis ankau\u0306 aliajn programajn mediojn. Do sperta programisto ne trovas en tiu medio vere ion novan."}, {"text_idx": "#000014", "text": "Mi preparis la tutan programan medion kiel EsperantiloSDK.\nVi povas facile instali g\u0302in sur vindozo kaj linukso. Sen aldonaj obstakloj vi povas uzi la programon, trarigardi g\u0302ian programfonton kaj adaptigi kaj plivastigi g\u0302in."}, {"text_idx": "#000015", "text": "Taskoj c\u0302e programado de nova traduka modulo"}, {"text_idx": "#000016", "text": "Oni povas tiujn laborojn distingi inter lingvistikaj taskoj kaj programaj taskoj."}, {"text_idx": "#000018", "text": "Fleksio de substantivoj, verboj kaj adjektivoj\nProjektado de fleksiaj grupoj kaj priskriboj en vortaro\nReguloj pri traduko de subfrazoj"}, {"text_idx": "#000019", "text": "Krado de nova traduka modulo kiel kopio de iu ekzistanta modulo\nProgramado de generatoro por fleksio\nProgramado de generatoro por numeroj\nProgramado de esceptoj kaj specialaj reguloj"}, {"text_idx": "#000020", "text": "Ellerno de sistemo. Praktikaj sugestoj"}, {"text_idx": "#000021", "text": "Jam en normala eldono de Esperantilo vi povas lerni iom pri proceso de tradukado.\nVi povas uzi tiujn funkciojn."}, {"text_idx": "#000023", "text": "La sistemo XOTclIDE enhavas multajn ilojn por inspektado de programaj strukturoj kaj proceso de tradukado.\nSe vi uzas la EsperantiloSDK, vi havas ankau\u0306 aldonajn eblojn.\nLa duopa klako en montrilo de sintakso sur iu elemento malfermigas tn. inspektan fenestron, en kiu\nvi povas inspekti la variablojn kaj metodojn de iu elemento.\nLa proceso de tradukado estas bone priskribita en artikolo \u201eKiel komputilo tradukas?\u201c.\nEkzistas ankau\u0306 multaj aliaj artikoloj pri tiu temo."}, {"text_idx": "#000024", "text": "Se vi jam scias ion pri programa lingvo Tcl, XOTcl kaj la programa medio XOTclIDE, vi povus tuj trarigardi la programfonton de programo kaj tuj adaptigi la sistemon en fenesto Component Browser. Atentu, ke XOTclIDE estas interaktiva sistemo. Tio signifas, ke vi samtempe povas kuri la programon kaj programi g\u0302in."}, {"text_idx": "#000025", "text": "Se vi lanc\u0302is EsperantiloSDK vi vidas fensetron de XOTclIDE, sed ankau\u0306 fenestro kun nomo EsperantiloCentro. De tiu lasta fenestro vi povas lanc\u0302i la konatan redaktilon de Esperantilo kaj ankau\u0306 atingi kelkajn specialajn funkciojn per programado."}, {"text_idx": "#000026", "text": "Por programado de mas\u0302ina tradukado estas gravaj subaj programaj moduloj."}, {"text_idx": "#000027", "text": "Precipe vi devas \u201enur\u201c programi vian propran Esp?Tradukilo."}, {"text_idx": "#000028", "text": "Tie vi povas vidi la priskrobjn de eroj de programo. Tamen mi sugestas trarigardi la fontprogramon kaj programan strukturon de Esperantilo tuj en EsperantiloSDK per modulomontrilo (angle: Component Browser)."}, {"text_idx": "#000029", "text": "Mi nun volas priskribi kelkajn teknikojn, kiujn vi povas uzi dum adaptado de modulo."}, {"text_idx": "#000030", "text": "En ceteraj kazoj la vortoj de cela lingvo estas enmetitaj direkte en la programa fonto. Tial vi povas vidi la fremdlingvan vorton de la baza lingvo, kiu ne venas de vortaro, en la cela teksto.\nVi povas trovi facile la lokon en programo, kiu tion kau\u0306zis per serc\u0302ado de teksto en modulomontrilo.\nUzu la menuon (Method->Search Text->In Component."}, {"text_idx": "#000031", "text": "Ofte iu metodo faras pli ol vi bezonas. Vi povas simple forigi la metodon (menuo: Method->Delete). La programo uzas en tiu kazo la pli bazan metodon kaj la programo dau\u0306re funkcias."}, {"text_idx": "#000032", "text": "Vi povas kompari metodojn de aliaj moduloj per funkcio (menuo: Method->Search Implementers."}, {"text_idx": "#000033", "text": "La baza klaso, kiu respondas pri la tradukado estas FrazTraduko en modulo EspTradukilo. Vidu la metodon traduku."}, {"text_idx": "#000034", "text": "C\u0302iuj vortoj estas objektoj, kiuj devenas de derivita klaso de la klaso TradukElemento.\nEkzemple c\u0302iu pola substantivo estas objekto de klaso ETPlSubstantivo.\nTiu klaso havas tiujn parencojn:"}, {"text_idx": "#000035", "text": "Vi povas rigardi la parencajn strukturojn per Heritage Browser, kiun vi lanc\u0302as per\nClass->Heritage Browser. Kiel vi vidas, la programo Esperantilo uzas konsekvence la objekteman programadon. La klaso \u201eETSubstantivo\u201c estas uzata en c\u0302iujn tradukajn modulojn kaj enhavas bazajn trajtojn de substantivo."}, {"text_idx": "#000036", "text": "Se vi modifis unu metodon (funkcion) kaj g\u0302i ne funkcias, vi povas senprobleme reveni al malnova eldono. Do ni ne bezonas komenti au\u0306 malkomenti partojn de programo. Uzu la menuon: (Method->Version Control->$gt;Editions) au\u0306 (Method->Version Cotrol->Previous Version)."}, {"text_idx": "#000037", "text": "En c\u0302iu metodo, vi povas enmeti tn. haltpunkton (Breakpoint). Por tiu vi skribu en aldona linio: my halt. (Vi devas aldone enlegi la novan metodon per menu Edit->Save au\u0306 klavkombino Ctrl-S)\nSe la programo denove uzas tiun metodon, vi povas inspketi la fluon de programo en sencimilo (debugger). Tiel vi ofte povus pli ekkoni pri programo ol nur legante la statikan programfonton. Vi povas pluruli la programon per butono Resume."}, {"text_idx": "#000038", "text": "La preciza priskribo de tuta programo ne estas praktika. Pli bone estas lernia la programan lingvo kaj legi la programon direkte."}, {"text_idx": "#000039", "text": "Se vi estas preta komenci vian okupon pri programado de Esperantilo, kontaktu min. Eble mi povus fari la plej malfacilajn taskojn por la komenco au\u0306 doni al vi kelkajn rimarkojn."}]