Pas cu pas: Traducerea fişierelor POT şi PO

Informaţii generale despre acest subiect găsiţi īn paginile Info ale pachetului "gettext". Pentru a īnţelege mai bine la ce se aşteaptă KDE de la traducerea dumneavoastră să vedem cum se traducea īnainte să apară programe specializate cum este KBabel:

La ora actuală mulţi din aceşti paşi sīnt făcuţi automat de programe specializate precum KBabel -- de la alegerea fişierelor POT şi salvarea lor ca PO-uri, pīnă la actualizarea antetului, eliminarea īnregistrărilor "fuzzy" şi verificărilor de sintaxă.

Un model de antet ar putea să arate astfel pentru limba romānă:

msgid ""
msgstr ""
"POT-Creation-Date: 2004-02-17 00:58+0100\n"
"PO-Revision-Date: 2004-02-17 08:43+0200\n"
"Last-Translator: Claudiu Costin <claudiuc@kde.org>\n"
"Language-Team: Romanian <ro-kde@yahoogroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3\n"

Dacă lucraţi cu un editor ASCII nu ştergeţi īnregistrarea "msgid / msgstr" iniţială. Altfel compilarea se va termina cu eroare de sintaxă. Pe de altă parte, trebuie să ştergeţi tagul "fuzzy" care iniţial este acolo. Altfel veţi rămīne mirat de numărul mare de īnregistrări netraduse din lista "Traduceri Parţiale" a "Statisticilor interfeţei grafice", deşi traducerea este īn regulă.

Īnregistrările pentru Content-Type şi Transfer-Encoding nu sīnt relevante la ora actuală. Dar setul de caractere trebuie să fie corect (UTF-8 īn acest caz, adică Unicode Transfer Format pe 8 biţi). Despre tranziţia la Unicode citiţi īn secţiunea introductivă.

Īn continuare veţi vedea cum se traduce. Linia originală:

#: kedit.cpp:90 kedit.cpp:1071
msgid "Show &Status Bar" 
msgstr ""

...ar putea fi tradusă ca:

#: kedit.cpp:90 kedit.cpp:1071
msgid "Show &Status Bar" 
msgstr "Afişează bara de &stare"

Şi din traducerea incorectă:

#: ReniceDlg.cpp:31
#, fuzzy 
msgid "Renice Process" 
msgstr "Omoară procesul"

...s-ar putea produce traducerea corectă:

#: ReniceDlg.cpp:31
msgid "Renice Process" 
msgstr "Prioritate nouă"

Există o eroare subtilă care apare adesea la tranziţia de la KDE 1.x la KDE "generaţia următoare":

#: kpackage.cpp:613
#, fuzzy, c-format
msgid "Unknown package type: %1"
msgstr "Tip de pachet necunoscut: %s"

Traducerea este corectă, dar şirul variabilei are un format vechi. El trebuie schimbat astfel:

#: kpackage.cpp:613
#, c-format
msgid "Unknown package type: %1"
msgstr "Tip de pachet necunoscut: %1" 

A propos: Cu variabile de tip corect ("%1", "%2" şi aşa mai departe) nu contează ordinea īn care apar īn traducerea dumneavoastră. Pe de altă partea īn stilul vechi variabilele ("%d", "%s" şi cele similare) trebuie să fie exact īn aceeaşi ordine ca īn original. Puteţi raporta ca eroare dacă īntīlniţi variabile de tip vechi īn fişierele dumneavoastră PO.

După corecţii trebuie să ştergeţi tagul "fuzzy". Altfel īnregistrarea corectată va fi ignorată la compilare.

S-ar putea să īntīlniţi la sfīrşitul fişierului linii care īncep cu "#~":

#~ msgid "Where do you want to go tomorrow?" 
#~ msgstr "Where do you want to go tomorrow?" 
#~ msgid "No comment available" 
#~ msgstr "Nici un comentariu" 

Aceste linii au fost comentate deoarece nu mai sīnt utilizate de program şi ar trebui ştese din cīnd īn cīnd pentru a salva spaţiul de disc şi a micşora resursele de reţea consumate. KBabel face automat acest lucru.

Pentru orice alte īntrebări asupra acestui subiect, vă recomand să aruncaţi o privire īn paginile Info ale pachetului GNU gettext (vedeţi documentaţia de ajutor KDE).