{"id":94,"date":"2007-10-14T10:48:37","date_gmt":"2007-10-14T09:48:37","guid":{"rendered":"http:\/\/blog.esperantilo.org\/?p=94"},"modified":"2007-12-16T10:30:04","modified_gmt":"2007-12-16T09:30:04","slug":"kiel-programi-masinan-tradukadon-por-nova-lingvo-en-esperantilo","status":"publish","type":"post","link":"http:\/\/blog.esperantilo.org\/?p=94","title":{"rendered":"Kiel programi ma\u015dinan tradukadon por nova lingvo en Esperantilo?"},"content":{"rendered":"<p>Iafoje mi ricevas leterojn de uzantoj de Esperantilo, kiu dezirus ma\u015dinan tradukadon al ilia nacia lingvo. Esperantilo nun subtenas la ma\u015dinan tradukadon al 3 lingvoj, sed mi nuntempe okupas nur pri pola lingvo. Estas \u011denerale konata fakto, ke programado de ma\u015dina 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 \u0109iu nova subtenata lingvo bezonas novan planadon kaj programadon. Mi anka\u016d konscie okupis nur pri unudirekta traduko el Esperanto al nacia lingvo, \u0109ar tiu direkto \u015dajnas 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 \u011deneralaj pro ma\u015dina 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. Anka\u016d la proceso de tradukado mem ebligas la reuzon de grandaj partoj de programo por diferencaj lingvoj.<\/p>\n<p>La proceso de programado estas<\/p>\n<ol>\n<li>Analizo de fonta teksto<\/li>\n<li>Kreado de tradukaj strukturoj<\/li>\n<li>Trovo de vortoj<\/li>\n<li>Gramatika transformigo kaj reordigo (Tiu parto dependas de cela lingvo)<\/li>\n<li>Kreado de rezulta teksto<\/li>\n<\/ol>\n<p>Esperantilo enhavas anka\u016d multajn partojn, kiuj ne servas direkte en proceso de tradukado, sed tamen influas la kvaliton kaj la uzeblecon de tuta sistemo.<br \/>\nTiuj partoj estas:<\/p>\n<ul>\n<li>Pritrakto de diferencaj tekstaj formatoj (XML, HTML, OpenOfficem, Word)<\/li>\n<li>Interaktiva tradukado<\/li>\n<li>Traduka memoro<\/li>\n<li>Administracio de vortaroj<\/li>\n<li>Esperanta Vortfarado<\/li>\n<li>Prilaboro de esperantaj tekstoj<\/li>\n<\/ul>\n<p>Tial Esperantilo povus bone servi kiel baza sistemo por aliaj tradukaj sistemoj, \u0109efe 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 \u015dablono por \u0109iu slava lingvo. La germana kaj angla moduloj povus esti \u015dablonoj por aliaj multnombraj germanaj lingvoj. Tamen mi ne kredas, ke la sintaksa analizo de esperanta lingvo en Esperantilo estus sufi\u0109a por traduko al lingvoj, kiuj tre diferencas de Esperanto. Temas precipe pri struktura (sintaksa) malsimileco.<\/p>\n<h3>Anta\u016d ol vi decidis okupi pri ma\u015dina tradukado<\/h3>\n<p>Ma\u015dina 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 a\u016d iu instrua projekto. Tamen ekzistas sufi\u0109e 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. Anka\u016d kiel \u015datokupo estas eble en longa tempo fari ion, kio funkcias kaj havas trajtojn de tn. serioza a\u016d profesia okupo. Por mi la atributo &#8222;profesia&#8220; signifas nur, ke temas pri mono, kiun oni ricevas a\u016d devas pagi. En tiu senco la sistemo Esperantilo ne estas profesia.<\/p>\n<p>Mi povas helpi al \u0109iu, kiu volas mem plukonstrui a\u016d reuzi la sistemon Esperantilo, sed<br \/>\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. \u0108iujn fontojn mi publikigas libere. Do oni anka\u016d povus sen mia helpo rekonstrui kaj adaptigi la sistemon por \u0109ies kialoj. Ekzistas multaj informoj en mia blogo kaj sur la TTT-pa\u011doj de Esperantilo. Anka\u016d pri aliaj teknikoj oni povas multe legi en interreto.<\/p>\n<p>Due vi devas pripensi, \u0109u vi eblas trovi sufi\u0109e da lingvistika materialo. \u0108u ekzistas liberaj glosaroj por koncerna lingvo? \u0108u ekzistas bonaj priskriboj de gramatiko? \u0108u aldonaj informoj pri fleksio anka\u016d estas uzeblaj? Mi ofte reuzas aliajn liberajn materialojn. La ideo &#8222;Programi tradukan sistemon tute de komenco&#8220; estas tre malespera okupo.<\/p>\n<h3>EsperantiloSDK &#8211; Programa medio de programo Esperantilo<\/h3>\n<p>Por programi la programon Esperantilo mi uzas iom ne veste konatan programan medion. La baza programa lingvo estas <a href=\"http:\/\/www.tcl.tk\">Tcl<\/a>. Eldone la programo estas skribita la\u016d objektema maniero helpe de <a href=\"http:\/\/www.xotcl.org\">XOTcl<\/a>. La programa medio estas <a href=\"http:\/\/www.xdobry.de\/xotclide\">XOTclIDE<\/a>. 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 anka\u016d aliajn programajn mediojn. Do sperta programisto ne trovas en tiu medio vere ion novan.<\/p>\n<p>Mi preparis la tutan programan medion kiel <a href=\"http:\/\/www.esperantilo.org\/programado\/index.html\">EsperantiloSDK<\/a>.<br \/>\nVi povas facile instali \u011din sur vindozo kaj linukso. Sen aldonaj obstakloj vi povas uzi la programon, trarigardi \u011dian programfonton kaj adaptigi kaj plivastigi \u011din.<\/p>\n<h3>Taskoj \u0109e programado de nova traduka modulo<\/h3>\n<p>Oni povas tiujn laborojn distingi inter lingvistikaj taskoj kaj programaj taskoj.<\/p>\n<h4>Lingvistikaj taskoj<\/h4>\n<ul>\n<li>Kolektado de informoj pri gramatiko de cela lingvo.\n<ul>\n<li>Fleksio de substantivoj, verboj kaj adjektivoj<\/li>\n<li>Fleksio de pronomoj<\/li>\n<li>Projektado de fleksiaj grupoj kaj priskriboj en vortaro<\/li>\n<li>Reguloj pri vortordo<\/li>\n<li>Reguloj pri traduko de subfrazoj<\/li>\n<li>Reguloj pri vortfarado<\/li>\n<li>Korelativoj<\/li>\n<\/ul>\n<\/li>\n<li>Mana preparo de ekzemplaj tradukoj<\/li>\n<li>Preparo de vortaro (vortlistoj kaj priskriboj)<\/li>\n<li>Preparo de esceptoj en fleksio (ekzemple anglaj fortaj verboj: <cite>take, took, token<\/cite>)<\/li>\n<li>Testado de sistemo<\/li>\n<\/ul>\n<h4>Programaj taskoj<\/h4>\n<ul>\n<li>Krado de nova traduka modulo kiel kopio de iu ekzistanta modulo<\/li>\n<li>Programado de generatoro por fleksio<\/li>\n<li>Programado de generatoro por numeroj<\/li>\n<li>Programado de esceptoj kaj specialaj reguloj<\/li>\n<\/ul>\n<h3>Ellerno de sistemo. Praktikaj sugestoj<\/h3>\n<p>Jam en normala eldono de Esperantilo vi povas lerni iom pri proceso de tradukado.<br \/>\nVi povas uzi tiujn funkciojn.<\/p>\n<ul>\n<li>Menuo &#8211; Redaktu-&gt;Montru Sintakso &#8211; Analizo de fonta teksto<\/li>\n<li>Menuo &#8211; Redaktu-&gt;Inspektu tradukon de frazo &#8211; Analizo de tradukado<\/li>\n<\/ul>\n<p><!-- sintakso-inspect.png --><\/p>\n<p><a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/sintakso-inspect.png' title='sintakso-inspect'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/sintakso-inspect.png' alt='sintakso-inspect' \/><\/a><br \/>\n<!-- traduko-inspect.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/traduko-inspect.png' title='traduko-inspect'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/traduko-inspect.png' alt='traduko-inspect' \/><\/a><br \/>\nLa sistemo XOTclIDE enhavas multajn ilojn por inspektado de programaj strukturoj kaj proceso de tradukado.<br \/>\nSe vi uzas la <a href=\"http:\/\/www.esperantilo.org\/programado\">EsperantiloSDK<\/a>, vi havas anka\u016d aldonajn eblojn.<br \/>\nLa duopa klako en montrilo de sintakso sur iu elemento malfermigas tn. inspektan fenestron, en kiu<br \/>\nvi povas inspekti la variablojn kaj metodojn de iu elemento.<br \/>\nLa proceso de tradukado estas bone priskribita en artikolo <a href\"http:\/\/blog.esperantilo.org\/?p=25\">&#8222;Kiel komputilo tradukas?&#8220;<\/a>.<br \/>\nEkzistas anka\u016d multaj aliaj <a href=\"http:\/\/blog.esperantilo.org\/?cat=3\">artikoloj<\/a> pri tiu temo.<\/p>\n<p><!-- object-inspect.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/object-inspect.png' title='objektoinspektilo'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/object-inspect.png' alt='objektoinspektilo' \/><\/a><br \/>\nSe vi jam scias ion pri programa lingvo <a href=\"http:\/\/www.tcl.tk\">Tcl<\/a>, <a href=\"http:\/\/www.xotcl.org\">XOTcl<\/a> kaj la programa medio <a href=\"http:\/\/www.xdobry.de\/xotclide\">XOTclIDE<\/a>, vi povus tuj trarigardi la programfonton de programo kaj tuj adaptigi la sistemon en fenesto <cite>Component Browser<\/cite>. Atentu, ke XOTclIDE estas interaktiva sistemo. Tio signifas, ke vi samtempe povas kuri la programon kaj programi \u011din.<\/p>\n<h3>Konkretaj informoj pri programado<\/h3>\n<p>Se vi lan\u0109is EsperantiloSDK vi vidas fensetron de XOTclIDE, sed anka\u016d fenestro kun nomo EsperantiloCentro. De tiu lasta fenestro vi povas lan\u0109i la konatan redaktilon de Esperantilo kaj anka\u016d atingi kelkajn specialajn funkciojn per programado.<\/p>\n<p><!-- esperantilcentrol.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/esperantilcentro.png' title='esperantilcentro'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/esperantilcentro.png' alt='esperantilcentro' \/><\/a><br \/>\nPor programado de ma\u015dina tradukado estas gravaj subaj programaj moduloj.<\/p>\n<table>\n<tr>\n<th>Modulo<\/th>\n<th>Priskribo<\/th>\n<\/tr>\n<tr>\n<td>EspSintaksaAnalizo<\/td>\n<td>Anazizo de esperanta teksto<\/td>\n<\/tr>\n<tr>\n<td>EspTradukilo<\/td>\n<td>Bazaj funkcioj por tradukado<\/td>\n<\/tr>\n<tr>\n<td>EspPlTradukilo<\/td>\n<td>traduka modulo por pola lingvo<\/td>\n<\/tr>\n<tr>\n<td>EspDeTradukilo<\/td>\n<td>traduka modulo por germana lingvo<\/td>\n<\/tr>\n<tr>\n<td>EspEnTradukilo<\/td>\n<td>traduka modulo por angla lingvo<\/td>\n<\/tr>\n<\/table>\n<p>Precipe vi devas &#8222;nur&#8220; programi vian propran <cite>Esp??Tradukilo<\/cite>.<\/p>\n<p><a href=\"http:\/\/www.esperantilo.org\/programado\/api.html\">Tie<\/a> 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: <cite>Component Browser<\/cite>). <\/p>\n<p>Mi nun volas priskribi kelkajn teknikojn, kiujn vi povas uzi dum adaptado de modulo. <\/p>\n<p>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.<br \/>\nVi povas trovi facile la lokon en programo, kiu tion ka\u016dzis per ser\u0109ado de teksto en modulomontrilo.<br \/>\nUzu la menuon (<cite>Method-&gt;Search Text-&gt;In Component<\/cite>.<\/p>\n<p><!-- method-serach-which.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/method-search-which.png' title='method-search-which'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/method-search-which.png' alt='method-search-which' \/><\/a><br \/>\nOfte iu metodo faras pli ol vi bezonas. Vi povas simple forigi la metodon (menuo: <cite>Method-&gt;Delete<\/cite>). La programo uzas en tiu kazo la pli bazan metodon kaj la programo da\u016dre funkcias.<\/p>\n<p>Vi povas kompari metodojn de aliaj moduloj per funkcio (menuo: <cite>Method-&gt;Search Implementers<\/cite>.<\/p>\n<p>La baza klaso, kiu respondas pri la tradukado estas <code>FrazTraduko<\/code> en modulo <code>EspTradukilo<\/code>. Vidu la metodon <code>traduku<\/code>.<\/p>\n<p><a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/comp-browser.png' title='Modulomontrilo'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/comp-browser.png' alt='Modulomontrilo' \/><\/a><\/p>\n<p>\u0108iuj vortoj estas objektoj, kiuj devenas de derivita klaso de la klaso <code>TradukElemento<\/code>.<br \/>\nEkzemple \u0109iu pola substantivo estas objekto de klaso <code>ETPlSubstantivo<\/code>.<br \/>\nTiu klaso havas tiujn parencojn:<\/p>\n<pre>\r\nETPlSubstantivo\r\n  ETPlTradukElemento\r\n  ETSubstantivo\r\n    ElemTraduko\r\n       ArboFolio\r\n          ArboElemento\r\n<\/pre>\n<p>Vi povas rigardi la parencajn strukturojn per <code>Heritage Browser<\/code>, kiun vi lan\u0109as per<br \/>\n<code>Class-&gt;Heritage Browser<\/code>. Kiel vi vidas, la programo Esperantilo uzas konsekvence la objekteman programadon. La klaso &#8222;ETSubstantivo&#8220; estas uzata en \u0109iujn tradukajn modulojn kaj enhavas bazajn trajtojn de substantivo.<\/p>\n<p><!-- heritage-browser.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/heritage-browser.png' title='heritagebrowser'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/heritage-browser.png' alt='heritagebrowser' \/><\/a><br \/>\nSe vi modifis unu metodon (funkcion) kaj \u011di ne funkcias, vi povas senprobleme reveni al malnova eldono. Do ni ne bezonas komenti a\u016d malkomenti partojn de programo. Uzu la menuon: (<cite>Method-&gt;Version Control->$gt;Editions<\/cite>) a\u016d (<cite>Method-&gt;Version Cotrol-&gt;Previous Version<\/cite>).<\/p>\n<p>En \u0109iu metodo, vi povas enmeti tn. haltpunkton (<cite>Breakpoint<\/cite>). Por tiu vi skribu en aldona linio: <cite>my halt<\/cite>. (Vi devas aldone enlegi la novan metodon per menu <cite>Edit-&gt;Save<\/cite> a\u016d klavkombino <cite>Ctrl-S<\/cite>)<br \/>\nSe la programo denove uzas tiun metodon, vi povas inspketi la fluon de programo en sencimilo (<cite>debugger<\/cite>). Tiel vi ofte povus pli ekkoni pri programo ol nur legante la statikan programfonton. Vi povas pluruli la programon per butono <cite>Resume<\/cite>.<\/p>\n<p><!-- debugger.png --><br \/>\n<a href='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/debugger.png' title='sencimilo'><img src='http:\/\/blog.esperantilo.org\/wp-content\/uploads\/2007\/10\/debugger.png' alt='sencimilo' \/><\/a><\/p>\n<p>La preciza priskribo de tuta programo ne estas praktika. Pli bone estas lernia la programan lingvo kaj legi la programon direkte.<\/p>\n<h3>Kiel komenci?<\/h3>\n<p>Se vi estas preta komenci vian okupon pri programado de Esperantilo, kontaktu min. Eble mi povus fari la plej malfacilajn taskojn por la komenco a\u016d doni al vi kelkajn rimarkojn.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iafoje mi ricevas leterojn de uzantoj de Esperantilo, kiu dezirus ma\u015dinan tradukadon al ilia nacia lingvo. Esperantilo nun subtenas la ma\u015dinan tradukadon al 3 lingvoj, sed mi nuntempe okupas nur pri pola lingvo. Estas \u011denerale konata fakto, ke programado de ma\u015dina tradukado ne estas triviala tasko. Alikaze ni delonge havus multajn altnivelajn tradukajn programojn por [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2],"tags":[],"class_list":["post-94","post","type-post","status-publish","format-standard","hentry","category-masxina-tradukado","category-programado"],"_links":{"self":[{"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=\/wp\/v2\/posts\/94","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=94"}],"version-history":[{"count":0,"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=\/wp\/v2\/posts\/94\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.esperantilo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}