Next Previous Contents

5. gettext-en tresnak

5.1 PO fitxategiak eta PO-ren oinarrizko erak

GNU gettext-eko tresnek programatzaile eta itzultzaileei (euskeratzaileei) euskeraketarako fitxategiak sortu, eguneratu eta erabiltzerakoan asko laguntzen dute, batizpat textu motan argitatu daitekeen PO fitxategiekin. Atal honek PO fitxategien egiturei buruz hitzegiten du. PO erako oinarrizko gauzak azalduko dira.

Hiru fitxategi mota daude:

POT

jatorrizko mezuak dauzkan ereduzko fitxategia da.

PO

euskeratutako fitxategia da, bertan bai euskeratutakoak bai jatorrizko mezuak aurki ditzakezu.

MO

euskeratu eta pillatutako (konpilatutako) fitxategia da, programak benetan hauxe erabiltzen du buruketako garaian. Fitxategi hau PO fitxategitik lortzen da.

Beraz, euskeraketa bat egiteko eman behar den lehen urratsa POT fitxategia lortzean datza. Hortik aurrera, hasi gintezke lanean (euskeratzen).

5.2 GNU gettext-en ezarketa egiten

GNU gettext lortu, sorta zabaldu eta pillatu (konpilatu) ostean, "make install" aginduak xgettext, msgfmt, gettext eta msgmerge programak (beraien mezu multzo fitxategiekin batera) dagokien lekuan jartzen ditu. Ezarketa eroso batekin amaitzeko, GNU Emacs-eko erabiltzaileentzat PO era erabilgarri jartzea nahi izan dezakezu. PO eraren ezarketa garaian ".emacs" fitxategia apur bat aldatu beharko zenuke, ondorengo lerro gutxi horiek idatziz:


(setq auto-mode-alist
      (cons '("\\.po[tx]?\\'\\|\\.po\\." . po-mode) auto-mode-alist))
(auytoload 'po-mode "po-mode")

Gero, ".po", ".po" edo ".pox"c fitxategia argitatzean, edo beste ".po" hitzkatea bere izenean daukan beste edozein fitxategi, berdan bezala, GNU Emacs-ek 'po-mode.elc' (edo 'po-mode.el') bereganatzen du, eta bere kasa memoriako "buffer"-arentzat PO erako aginduak pizten ditu. PO era piztuta egoterakoan PO hitzkatea edozein "buffer"-en lerro eran agertzen da. GNU Emacs-ean PO fitxategi bat baino gehiago batera argitatu daiteke.

GNU Emac-en 20 edo garatuagoa erabiltzen ari ba zara, eta sisteman hizkijoko (gazteleraz "fuentes de letra" deritzaiona) internazionalak ezarrita egon ezkero, behar den heinean, hizkijoko horiek erabil ditzakezu bere kasa GNU Emacs-ek bereganatu ditzan eta euskeraketetan (gogoratu beste edozein hizkuntzetara itzultzeko ere balio duela) pantailan agertu daitezen. Hau gerta dadin, ondoko beste lerro hauek ".emacs" fitxategian idatzi:


(autoload 'po-find-file-coding-system "po-mode")
(modify-coding-system-alist 'file "\\.po[tx]?\\'\\|\\.po\\."
                            'po-find-file-coding-system)

5.3 Ibilbidea

GNU gettext-ek nola lana egiten duen garbiago ikusteko asmoz, irudi honen ibilbidea jarraitu:


C Jatorrizko Kodeak --> PO era --> Zotza jarritako C Jatorrizkoak ------------.
                                                                              | 
                ,--------<--- GNU gettext Liburutegia                         |
,----- make <---+                                                             |
|               `-------<--------------------+--------------------------------'
|                                            |
|   ,----<---- SORTA.pot <--- xgettext <-----'
|   |
|   `---.
|       +----> msgmerge ------> LANG.pox ---> --------> PO era ----------. 
|   ,---'                                                                |
|   |                                                                    |
|   `----------- <----------------.                                      |
|                                 +--- LANG.po <--- LANG.pox  Berria <---'
|   ,--- LANG.gmo <--- msgfmt <---'
|   |
|   `--- install ---> /.../LANG/SORTA.mo ---------.
|                                                 +---> "Kaixo gautxori!"
`------- install ---> /.../bin/NERE_PROGRAMA -----'

gettext eskuliburuko jatorrizko irudia eta hemen aurkezten duguna piskat ezberdinak dira. Ibildearen oinarria errazago ulertzearren egin da.

5.4 xgettext programa

xgettext programa euskeragarriak diren hitzkate guztiak aurkitu eta kanporatzeko erabiltzen da, eta beroiekin PO egituradun hasierako fitxategi bat sortzen du, irudian "SORTA.pot".


C Jatorrizko Kodeak --> PO era --> Zotza jarritako C Jatorrizkoak ------------.
                                                                              |
                            SORTA.pot <--- xgettext <-------------------------'

Jatorrizko programaren hitzkate guztiak biltzen ditu "SORTA.pot" fitxategiak. Mezu bakoitza zein C jatorrizko fitxategietan erabiltzen den norantzan gezi talde bat dauka. Euskeraketako lerro guztiak hutsik daude, ez daukate ezer ere ez. ".pot" fitxategiko "t" hizkiak PO fitxategiaren eredua dela dio (Inglesez "Template PO file"), inongo hizkuntz zehatzik aldarrikatu gabe.

Programaren beste aukerak ikusteko asmoz, agindu hau idatzi:


xgettext --help

5.5 msgmerge programa

msgmerge programak aurrez sortutako "LANG.po" fitxategian ".pot" ereduko fitxategiarekin parekatuz mezuak berridazten ditu. ".pot" fitxategia C jatorrizko kode garatuenetik, xgettext tresnaren bitartez, lortzen dela gogoratu.


   .-----<--- SORTA.pot <--- xgettext
   |
   |
   `---.
       +----> msgmerge ------> LANG.pox --->------------> PO era ----.
   .---'                                                             |
   |                                                                 |
   `-------------<----------------- LANG.po <--- LANG.pox  berria<---'

Lehendabizi hau egitean, "LANG.po" fitxategirik ez dago, hori dela eta msgmerge-ko urratsa baztertu dezakezu. Honela, "PAQUETE.pot"-ren kopia zuzen bat "LANG.pox"-engan egin dezakezu, non lang-ek hizkuntzaren zotza (edo ikurra) esanahi duen, adibidez, eu=Euskera.

Behin hau egindakoan mezuen haserako euskeraketarekin has zaitezke. PO egiturako "LANG.pox" fitxategia euskeratzen ari zaren bitartean, GNU Emacs eskuragarri ez badaukazu, egiten ari zaren lan ikaragarri horrek PO fitxategiaren egituraren arauak, eta komila arteko ohiturak ere baieztatzen dituenaren ardura zure eskuetan geldituko da ( PO fitcategien Egitura atala ikusi).

"LANG.pox" fitxategiaren euskeraketarekin amaitu ostean, "LANG.po"-rengain kopia zuzen bat egin. Horrela, programaren beste garatuagoa den bertsio bat agertzean (beraren jatorrizko kode eta guzti) kpoiatua izan den PO motako "LANG.po" fitxategia erabiliko da. msgmerge programak "LANG.pox" berria sortzeko asmoz "LANG.po" fitxategiarekin batera bertsio garatuagotik lortu izan den "SORTA.pot" berria ere erabiliko du.

"LANG.pox"-ren bertsio berria sortzeko, msgmerge tresnak honela egiten du lana:

Berdin dio zein ibilbide jarraitzen duen, helburua eguneratutako "LANG.pox" fitxategia lortzea bait da, hitzkate guztien euskeraketak eskeiniz. Hitzkate guztiak euskeratuak izan ondoren, "LANG.pox" fitxategiak aurreko "LANG.po" fitxategi ofizialaren lekua har dezake.

Tresnaren aukerak ezberdinak ikusteko:


msgmerge --help

5.6 msgfmt programa

msgfmt tresnak irakurtzen dakien edozein izakirentzat zuzendutako PO fitxategia ordenagailuak ulertzen duen hizkuntzara bihurtzen du, MO egiturako fitxategi bat sortuz. Irudi honetan MO egiturako fitxategiaren izena "LANG.gmo" da. Batzuetan, msgfmt-ek ez du zuzenean "LANG.gmo" fitxategia sortuko baizik eta "messages" izeneko bat, beraz gauzak ongi joan ezkero, hau "LANG.gmo" fitxategian zuzenean kopiatzearekin nahikoa izango da.


   ---- LANG.gmo <--- msgfmt <------ LANG.po <--- LANG.pox Berria <----

Programa sorten euskeraketen erabilkera programaren buruketaren garaian (erabiltzaileak programa abiarazten duenean) honek denbora aurrezte handi bat ekarri beharko luke.

Aukera ezberdinak ikusteko:


msgfmt --help

5.7 PO fitxategien egitura

PO fitxategi bat hainbat sarreraz osatua egoten da. Sarrera haueteriko bakoitzak jatorrizko (euskeratugabekoa) mezuarekin eta dagokion euskeratutakoarekin zerikusia du. Oroar, PO fitxategiko sarrera guztiak proiektu baten barnekoak izan ohi dira, eta itzulketa guztiak (euskeraketa) hizkuntz bakar batean aurkezten dira. PO fitxategi batek honoko egitura hau dauka:


hutsunea
# euskeratzailearen-aipamentak
#. bere-kasa-gettext-en-aipamenak
#: erreferentziak...
#, zotza (edo "flag"-a)...
msgid euskeratu-gabeko-hitzkatea
msgstr euskeratutako-hitzkatea

Euskeratzaile batek (itzultzaileak) PO fitxategiaren egitura ongi baino hobekiago ulertu eta ezugutu beharra dauka. PO era erabiltzerakoan egituraren zehaztesunak ezagutu behar dira, PO era horretan bait datza.

Sarrerak aukerazko lerro huts batekin hasten dira. Orokorrean, GNU gettext-ko tresnak erabiltzerakoan, sarreren artean lerro huts bakar bat egoten da. Lerro hutsaren ondoren aipamenezko lerroak agertzen dira, eta aipamen lerro guztiak (guztiak azpimarratzea nahiko genuke) # ikurrarekin hasten dira. Bi aipamen mota daude: # ikurraren atzean hutsune bat daukatenak, non berauen aipamenak euskeratzaileak (gizakiak, alegia) sortu eta eguneratzen ditu, eta # ikurraren atzetik hutsunerik ez daukatenak, non aipamenak GNU gettext-eko tresnek sortu eta beraien kasa eguneratzen dituztenak. Aipamen guztiak, berdin dio nork edo zerk sortu dituen, aukerazkoak dira.

Hutsa eta aipameneko lerroen azpian sarrerek bi hitzkate aurkezten dute, hauetariko lehenak jatorrizko kodean agertzen diren berdin berdin diren euskeratu gabeko mezuak , eta ondoren, euskeratutakoak. Jatorrizko hitzkatea msgid giltzarekin (klabea edo "key") hasten da. Euskeratutakoa berriz msgstr giltzarekin. PO fitxategian bi hitzkateak, jatorrizkoa eta euskeratutakoa, era ezberdinetan komila artean agertzen dira, " mugatzailearekin eta \ ihes (gazteleraz "escape" deritzaiona) ikurrakin, baina euskeratzaileak ez dio honi garrantzi handiegirik eman behar, PO era honetaz arduratuko bait da.

msgid hitzakatea, bere kasa sortutako aipamen baten gisa, GNU gettext-ko beste tresna batek sortu eta eguneratzen du (berataz arduratuz), eta PO era ez da euskeratzaile berak hau aldatzeko egina izan. Euskeratzaileak egin dezakeen gehiena ezabatzea da, eta sarrera osoa ezabatzen duenean bakarrik. Bestalde, msgstr hitzkatea, euskeratzailearen aipamenaren gisa, euskeratzailearentzako egina dago, eta PO erak euskeratzaileak behar dituen trikimailu osoa eskeintzen dio.

Aipamen lerroak #-rekin hasten dira, eta bereziak dira, zeren eta programek ez bait dituzte erabat baztertzen, nahi eta aipamen hutsak izan. Zotz (flag) eran agertzen den koma (,) ikurra msgfmt-ek erabiltzen du erabiltzaileari (euskeratzaileari) mezuen azterketaren ondorioak zehaztasun handiagoz azaltzeko. Gaur egun zehaztutako bi zotz mota daude:

fuzzy izeneko zotza

Zotz hau msgmerge programak sortuta edo euskeratzaile berak sartutakoa izan daiteke. Honek esan ohi du msgstr-ko euskeraketz (itzulketa) ez dela zuzena, edo egokia. Euskeraketa horrek aldaketaren bat behar ote duen, edo dagoen modura ongi al dagoen euskeratzaileak bakarrik jakin lezake. Euskeratutako hitzkatea ongi egon orduko fuzzy zotza kendu dezaioke. msgmerge programak zalantzako hitzkate mota hauen bilaketa egin ondoren msgid eta msgstr sarreren nahasketa egitean sartzen du. Fuzzy Entries atala ikusi ( GNU gettext Tools bibliografian).

c-format

no-c-format

Zotz hauek gizaki batek ez ditu sartu. Hori xgettext programak bakarrik egin dezake. Hitzkate batentzako ezarritako c-format zotzaren egoeran, msgfmt-ek euskeraketaren egiaztaketarako ziurtaketa gehiago egiten ditu. Invoking the msgfmt Program atala ikusi ( GNU gettext Tools ). Beroien esanahiari buruz berriz, c-format zotzak hitzkateak C programaketa hizkuntzako egitura bat duela dio. Adibidez, "Gaur %s hilabeteko %d-garren eguna da" hitzkateak %s eta % d agerbideak (argumentuak) agertzen diren lekuetan programak, buruketa garaian, hitzkate (esaldi) eta dezimal baten balioak ezarriko dizkie. Hau da, "Gaur Abendua hilabeteko 10-garren eguna da". Gainera hitzkate horren egitura aldatu daiteke, era honetara edukiz, "Gaur %d-garren eguna da, %s hilabetekoa, alegia"c. Azken hitzkate honen emaitza hau izango litzateke: "Gaur 10-garren eguna da, Abendua hilabetekoa, alegia" no-c-format zotzarena berriz, nahiz eta hasera batean C hizkuntzako egitura eduki, ez da egitazkoa eta beraz bere egitura halaxe eduki behar da, ikutu gabe (egitura ez da aldatzen, hitzakatea ordea euskeratu daiteke). Gertatzen da, noizbehinka, PO fitxategi baten azken sarreraren atzetik beste lerro hutsak edo aipamen lerroak agertzea. Lerro hauek ez dira inongo sarreraren zati, eta PO erak ezin ditu inolaz ere beraiengain inolako eraginik egin. PO erako M-x po-normalize funtzioarekin euskeratzaileak lerro zikinj hauetaz ardura daiteke. Normalizing String in Entries atala ikusi ( GNU gettext Tools bibliografian)

PO era erabiltzen dutenek atal honetako oroigarri atala bazter dezakete, nahiz eta PO fitxategien egituraren zehaztasunak argiago dakizkin edonorentzako onuragarria gerta dakioken. Bestalde, GNU Emacs ez daukaten guztientzat arretaz irakurtzen jarraitzea eskatzen da (atsedenaldi bat nahi duzunean eska dezakezu).


Next Previous Contents