Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

Internationalizarea
Index
KDE
LyX
SuSE
Manuale Linux
R.I.F (F.A.Q.)

Manual pentru traducerea fisierelor PO

Informatii complete despre traducerea fisierelor PO in KDE gasiti in sectiunea Traducerea interfetei grafice a documentului Cum sa traducem KDE. O introducere in traducerea fisierelor PO in general puteti citi mai jos.

Fisierele PO au urmatorul format:

# UN TILU DESCRIPTIV PENTRU APLICATIE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# PRIMUL AUTOR <EMAIL@ADDRESS>, ANUL.
#

#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: VERSIUNE PACHET\n"
"POT-Creation-Date: 1998-01-02 15:01+0100\n"
"PO-Revision-Date: ANUL-LU-ZI HR:MI+ZONA\n"
"Last-Translator: NUMELE INTREG <EMAIL@ADDRESS>\n"
"Language-Team: LIMBA <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=SET DE CARACTERE\n"
"Content-Transfer-Encoding: CODARE\n"

#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr ""

#: kdecore/kapp.cpp:412
msgid "About "
msgstr ""

#: kdecore/kapp.cpp:416 kdecore/kapp.cpp:437
msgid "About KDE"
msgstr ""

Antetul este important numai in cazul in care este nevoie sa fie contactat traducatorul. In trecut traducatorii aveau voie sa-l elimine, dar fara el era dificil sa-si aminteasca cineva cine ce a tradus si ce anume. De exemplu, la ora actuala se utilizeaza urmatoarea formatare de antet:

msgid ""
msgstr ""
"Project-Id-Version: kdelibs\n"
"POT-Creation-Date: 1998-01-02 21:12+0100\n"
"PO-Revision-Date: 1997-12-28 19:46+01\n"
"Last-Translator: Stephan Kulow <coolo@kde.org>\n"

Puteti adauga mai multi traducatori, daca aveti o versiune actualizata. Veti gasi de asemenea rinduri ce incep cu un "#" urmat de un nume de fisier si numere ale liniilor de program. Ele sint utilizate pentru a indica unde sint inserate mesajele in aplicatie. De exemplu, daca doriti sa traduceti un fisier veti adauga traducerea cuvintului "Help" dupa msgstr:

#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr "Ajutor"

Uneori veti gasi mesaje mai lungi care arata ca cel de mai jos:

#: kdecore/kapp.cpp:439
msgid ""
"The KDE Desktop Environment was written by the KDE team.\n"
"\n"
"Please send bug reports to kde-bugs@kde.org.\n"
"\n"
"\n"
"KDE was developed with Qt, a cross-platform GUI library.\n"
"\n"
"Qt is a product of Troll Tech (http://www.troll.no, info@troll.no).\n"
"Qt may be used freely to develop free software on the X Window
System.\n"
msgstr ""
"Mediul Grafic K a fost scris de Echipa KDE.\n"
"\n"
"Trimiteti raportari de erori la kde-bugs@kde.org.\n"
"\n"
"\n"
"KDE a fost dezvoltat cu Qt, o biblioteca "
"grafica pentru multiple platforme.\n"
"\n"
"Qt este un produs Troll Tech AS (http://www.troll.no, info@troll.no). Qt "
"poate fi folosit liber pentru dezvoltarea de software liber pentru X Window System.\n"

Gasiti din nou identificatorii msgid si msgstr, dar de data aceasta urmati de texte lungi. Nu este obligatoriu sa pastrati aceiasi aranjare a textului atit timp cit utilizatorul citeste aceiasi informatie. De cele mai multe ori textele lungi sint utilizate pentru casute de dialog sau texte de ajutor. In ambele cazuri nu este necesar sa se pastreze aceiasi impartire pe linii ca in textul original. Daca sint necesare mai multe linii pentru traducerea dumneavoastra, nici o problema. Daca este nevoie de mai putine, tot nu conteaza. Pozitia importanta este ultima linie. Programul msgfmt verifica daca ambele versiuni se termina cu sau fara un caracter linefeed, deoarece este important in cazul in care urmeaza text dupa sirul tradus.

Alt caz pe care il veti intilni in fisierele PO sint acceleratorii:

#: po/texts.cpp:48
msgid "View"
msgstr ""

#: po/texts.cpp:49
msgid "&View"
msgstr ""

Primul sir este "View" fara accelerator, iar al doilea este "View" cu accelerator. Ambele apar in fereastra principala ca "View", dar al doilea cu un "V" subliniat pentru a fi utilizat cu combinatia de taste ALT+V. Deci, intrebarea este, unde sa puneti caraterul "&" in traducerea cuvintului. Raspunsul nu este usor. Este important ca numai o singura litera sa fie marcata intr-un meniu. Aceasta observatie este valabila pentru meniul principal si orice meniu popup. Daca puteti utiliza aceiasi litera ca in versiunea engleza, va fi o asociere sigura aproape peste tot, daca este utilizata numai o singura data. Oricum, nu este obligatoriu sa faceti acest lucru. De exemplu, traducerea germana pentru "View" este "Ansicht" (nu contine "V"), iar traducerea suedeza este "Utseende" (nici ea nu contine "V"). In astfel de cazuri (in meniul principal) se utilizeaza adeseori prima litera. Acest lucru nu creeaza probleme deoarece in mod curent nu sint mai mult de 5 sau 6 itemi de meniu.

Iata acum alte cazuri: sirurile formatate C:

#: app.cpp:416
#, c-format
msgid "Your time: %02d:%02d:%02d"
msgstr ""

Speram ca fiecare sa aiba ceva experienta cu functia printf() din limbajul C. Acesta va va ajuta sa intelegeti ce se intimpla in cazul sirului dat ca exemplu mai sus. Mesajele sint traduse si valoarea reala a timpului (pentru aplicatia respectiva) umple spatiile date de %02d. Este foarte important sa pastrati structura acestui mesaj. Bineinteles ca este corect sa fie tradus in genul: "%02d:%02d:%02d a fost timpul tau" sau "ai zis in %02d ore, %02d minute si %02d secunde". Ceea ce nu puteti face este sa traduceti "file %s not found, tried %d times" in sirul "Am incercat de %d ori sa gasesc fisierul %s". Traducerea dumeavoastra va produce prabusirea programului, deoarece printf() va incerca sa puna un sir text in locul unui numar. Mesajele singulare ce contin numai un singur sir de formatare printf() nu pun astfel de probleme.

Uneori veti gasi inregistrari fuzzy ca in exemplul de mai jos:

#: kfmprops.cpp:697
#, fuzzy
msgid "Run normally"
msgstr "Ruleaza in terminal"

Trebuie sa actualizati sirul text tradus si sa eliminati comentariul ce contine fuzzy, deoarece programul msgfmt va ignora inregistrarile ce sint marcate ca fuzzy. Alta situatie pe care o veti intilni sint traducerile nefolosite, ca in exemplul de mai jos:

#~ msgid "Do you really want to quit?"
#~ msgstr "Doriti intr-adevar sa inchid?"

#~ msgid "&How can I ..."
#~ msgstr "&Cum as ...?"

Aceste traduceri au fost odata folosite, dar la momentul actual nu mai fac parte din aplicatie sau (mult mai probabil) au fost schimbate. Se poate sa nu mai existe inregistrarea "Do you really want to quit?" sau ceva de genul acesta si astfel programul msgmerge nu mai gaseste legatura intre aceste mesaje si aplicatie, luind deciza sa le faca comentarii. Puteti sterge aceste mesaje daca ati actualizat restul fisierului. Ele nu sint decit simple comentarii.