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:
jatorrizko mezuak dauzkan ereduzko fitxategia da.
euskeratutako fitxategia da, bertan bai euskeratutakoak bai jatorrizko mezuak aurki ditzakezu.
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).
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)
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.
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
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:
LANG.pox
" fitxategian mezu zaharkituak aipamen gisa
jartzen ditu. Mezu zaharkituak jadanik aurreko bertsiorako euskeratutako
eta gaur egunean programako kodeetan inoiz gahiago erabiliko ez diren
mezuak dira. Sarrera (mezu) zaharkituak oso ikustako nabariak izaten
dira, denak #
ikurrarekin hasten bait dira, msgid
edo msgstr
duten lerroak ere bai.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
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
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 dumsgstr
-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 ordukofuzzy
zotza kendu dezaioke. msgmerge programak zalantzako hitzkate mota hauen bilaketa egin ondorenmsgid
etamsgstr
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 ezarritakoc-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 erakoM-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).