Αρχεία .po

Οι μεταφράσεις της διεπαφής χρήστη (μενού κτλ) αλλά και της βοήθειας της εφαρμογής γίνονται με την επεξεργασία αρχείων απλού κειμένου με κατάληξη .po. Ένα αρχείο .po περιέχει μια λίστα από τα μηνύματα του προγράμματος, και κενά διαστήματα για να τοποθετήσουμε τη μετάφραση μας. Εδώ θα αναλύσουμε με λεπτομέριες τη δομή αυτών των αρχείων. Στην πράξη, οι μεταφραστές χρησιμοποποιουν βοηθητικά προγράμματα για τη μετάφραση και έτσι έρχονται ελάχιστα σε επαφή με τη μορφή αυτών των αρχείων.

Επικεφαλίδα αρχείου

Στην κορυφή κάθε τέτοιου αρχείου υπάρχει μια επικεφαλίδα.

Παράδειγμα:

msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2007-07-22 04:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

Αυτή η επικεφαλίδα θα έχει ήδη τιμές στα διαφορα πεδία της αν κάποιος πριν από εμάς έχει ασχοληθεί με την μετάφραση του πακέτου. Αν είμαστε οι πρώτοι που θα επεξεργαστούμε το αρχείο, τότε πρέπει να βάλουμε μερικές τιμές στα πεδία της

(!) Μερικά ειδικά προγράμματα επεξεργασίας αρχείων μετάφρασης όπως το KBABEL συμπληρώνουν αυτόματα τα απαραίτητα πεδια

Αν χρησιμοποιούμε ένα απλό επεξεργαστή κειμένου τότε αλλάζουμε τα παρακάτω:

 "Project-Id-Version:el\n"
   "Last-Translator: ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΜΑΣ <ηλ.διεύθυνση μας>\n"
   "Language-Team: Greek <team@gnome.gr>\n"
   "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
  • Στο project-Id-Version δίνουμε την ονομασία el (οποιοδήποτε όνομα είναι εντάξει)
  • Στο Last-Translator δίνουμε το όνομα μας και την ηλ.διεύθυνση μας
  • Στο Language-Team δίνουμε το όνομα της γλώσσας μας και την διεύθυνση της ομάδας μας
  • Προσθέτουμε και την γραμμή "Plural-Forms: nplurals=2; plural=(n != 1);\n" η οποία είναι απαραίτητη όταν το πρόγραμμα χρησιμοποιεί μηνύματα με φόρμες ενικού/πληθυντικού.

Τα υπολοιπα πεδία τα αφήνουμε όπως έχουν.

/!\ Σε αρχεία μεταφραστικής μνήμης θα υπάρχουν πολλές κεφαλίδες στην κορυφή του αρχείου , με ένα επεξεργαστή κειμένου πρέπει να τις αφαιρέσουμε και να κρατήσουμε μόνο μια.

Μηνύματα

Απλό μήνυμα

Παράδειγμα μεταφρασμένου μηνύματος:

msgid "Description"
msgstr "Περιγραφή"

Το ίδιο μήνυμα πριν μεταφραστεί:

msgid "Description"
msgstr ""

Μήνυμα c-format

#, c-format
msgid "GConf error: %s"
msgstr "Σφάλμα GConf: %s"

Αυτού του τύπου τα μηνύματα περιέχουν κείμενο που θα το συμπληρώσει μόνο του το πρόγραμμα όταν θα τρέξει (σε αυτή την περίπτωση είναι το %s που δεν πρέπει να τροποποιεί ή να αφαιρεί ο μεταφραστής)

Μήνυμα fuzzy

#, fuzzy
msgid "Process"
msgstr "Διεργασίες"

Τα μηνύματα με την ένδειξη "fuzzy" δηλώνουν ότι χρειάζονται διόρθωση γιατί είτε έχουν τοποθετηθεί εκεί αυτόματα από κάποια μεταφραστική μνήμη χωρις να τα ελέγξει ανθρώπινο μάτι, είτε γιατί ο προηγούμενος μεταφραστής δεν ήταν σίγουρος για την καταλληλότητα της μετάφρασης και άφησε μια μετάφραση ως πρόταση ή για περαιτέρω διόρθωση.

Μήνυμα με πληθυντικό (plural form)

#, c-format
msgid "Delete this profile?\n"
msgid_plural "Delete these %d profiles?\n"
msgstr[0] "Διαγραφή αυτού του προφίλ;\n"
msgstr[1] "Διαγραφή αυτών των %d προφίλ;\n"

Αυτό το μήνυμα περιέχει δυο προτάσεις για μετάφραση. Η μια είναι για τον ενικό και η άλλη για τον πληθυντικό.

Μήνυμα με underscore (σύμβολο_)

msgid "_Help"
msgstr "_Βοήθεια"

Ο χαρακτήρας underscore χρησιμοποιείται για να καθορίσει τις συντομεύσεις πληκτρολογίου που θα χρησιμοποιηθούν με το πρόγραμμα. Για παράδειγμα για το μενού "_Βοήθεια", κάποιος χρήστης της εφαρμογής αντί να χρησιμοποιήσει το ποντίκι, μπορεί να πάει στο μενού με το πληκτρολόγιο πατώντας ALT - Β. Αν ήταν "Β_οήθεια" θα πατούσε ALT - O.

Στην ελληνική μετάφραση ενός μηνύματος που περιέχει underscrore δεν το διατηρούμε αναγκαστικά στην ίδια θέση με το αντίστοιχο αγγλικό μήνυμα αλλά στην βέλτιστη τοποθεσία για εμάς. Προσπαθούμε να βάλουμε το underscrore στο ελληνικό γράμμα που βρίσκετε στην ίδιο πλήκτρο με το αντίστοιχο αγγλικό γράμμα. Παράδειγμα: "_Paste" -> "Ε_πικόλληση". Δε βάζουμε ποτέ underscore μπροστά από τονισμένο χαρακτήρα. Αν δεν υπάρχει αντιστοιχία ανάμεσα σε ελληνικό και αγγλικό χαρακτήρα, βάζουμε το underscore εκεί που νομίζουμε πως είναι καλύτερα. Αν αλλάξουμε το πλήκτρο που χρησιμοποιείται από το αγγλικό μήνυμα, ελέγχουμε πως δεν υπάρχει άλλο στοιχείο μενού στο ίδιο μενού της εφαρμογής που να χρησιμοποιεί το ίδιο πλήκτρο συντόμευσης.

Μήνυμα με context

Σε ορισμένα μηνύματα υπάρχει μια σύντομη επεξήγηση που περιγράφει πως πρόκειται να χρησιμοποιηθεί το μήνυμα από την εφαρμογή έτσι ώστε να μεταφραστεί κατάλληλα. Η περιγραφή αυτή υπάρχει στο msgctxt:

#: gtk/gtkprintoperation.c:1509
msgctxt "print operation status"
msgid "Printing"
msgstr "Γίνεται εκτύπωση"

Γραμμές σχολίων

Το αρχείο po μπορεί να περιέχει γραμμές που ξεκινούν με το χαρακτήρα **#**. Αυτές οι γραμμές συνήθως περιέχουν οδηγίες από τους προγραμματιστές για το πώς πρέπει να μεταφραστούν κάποια ειδικά μηνύματα ή σχόλια μεταφραστών.

Παράδειγματα:

#. To translators: Here, "It" is either like "Work Week View: July
#. 10th - July 14th, 2006." or "Day View: Thursday July 13th, 2006."

# translation of el.po to Greek
# Greek translation of evolution.
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
# 19Jan2003. kostas updated translation, translated 1525 messages, remaining 1327 and 610 fuzzy

Ακόμα τα σχόλια χρησιμοποιούνται από τους προγραμματιστές για να δείξουν από πιο σημείο του κώδικα προέρχεται το μήνυμα:

#: ../a11y/addressbook/ea-addressbook-view.c:94
#: ../a11y/addressbook/ea-addressbook-view.c:103
#: ../a11y/addressbook/ea-minicard-view.c:179
msgid "evolution addressbook"
msgstr "βιβλίο διευθύνσεων evolution"

Εδώ βλέπουμε ότι αυτό το μήνυμα υπάρχει σε 3 αρχεία κώδικα και τις αντίστοιχες γραμμές σε κάθε αρχείο.

Ξεπερασμένα μηνύματα (#~)

Τα μηνύματα που έχουν μπροστά τους χαρακτήρες #~ δείχνουν μηνύματα που χρησιμοποιούσε μια παλαιότερη έκδοση του προγράμματος και τώρα έχουν ξεπεραστεί. Αυτά τα μηνύματα δεν μεταφράζονται και μπορούμε να τα σβήσουμε αν θέλουμε. Γενικά δεν επηρεάζουν σε τίποτα την μετάφραση.

(!) Τα ξεπερασμένα μηνύματα δεν εμφανίζονται στα ειδικά προγράμματα μεταφράσεων όπως το Poedit και το KBABE.

Παράδειγμα:

#~ msgid "Error adding `%s' to environment, continuing."
#~ msgstr "Σφάλμα προσθήκης `%s' στο περιβάλλον, συνέχεια."

Ακεραιότητα αρχείου

Για να ελέγξουμε την ακεραιότητα του αρχείου εκτελούμε την παρακάτω εντολή σε τερματικό (πρέπει να έχουμε εγκαταστήσει τα εργαλεία gettext στο σύστημα μας)

msgfmt -cv -o /dev/null el.po

Αν το αρχείο είναι εντάξει θα εμφανιστεί ένα μήνυμα που θα μας πληροφορεί πόσα μηνύματα είναι μεταφρασμένα:

1142 translated messages, 2 fuzzy translations, 10 untranslated messages.

Αν δεν είναι εντάξει τότε θα μας πληροφορεί για το σφάλμα και σε ποιά γραμμή του αρχείου βρίσκεται:

el.po:72: τέρμα-γραμμής (eol) στο αλφαριθμητικό
msgfmt: found 1 fatal error</code>
αυτό το λάθος έγινε γιατί αφαιρέθηκε (κατά λάθος) ένα εισαγωγικό από το μήνυμα:
<code>#: ../data/browser.xml.h:3
msgid "Black
msgstr "Μαύρο"

Λήψη αρχείων po

Μετάβαση στη σελίδα http://l10n.gnome.org/languages/el

Επιλέγουμε την τελευταία έκδοση του GNOME που αναπτύσσεται (development) ή κάποια άλλη ομάδα περιφεριακών εφαρμογών όπως το fifth-toe και extras.

(!) Οι παλαιότερες εκδόσεις του GNOME σταματάνε να μεταφράζονται μετά την επίσημη κυκλοφορία κάθε έκδοσης. Μεταφραστικά μας ενδιαφέρει μόνο η διόρθωση σημαντικών σφαλμάτων σε αυτές τις κυκλοφορίες.

Η σελίδα με τα στατιστικά χωρίζεται σε 2 στήλες. Η μια έχει τα αρχεία τεκμηρίωσης (δεξιά) και η άλλη τα αρχεία της διεπαφής (αριστερά). Επιλέγουμε το πρόγραμμα για το οποίο θέλουμε να κατεβάσουμε το αρχείο μετάφρασης po και αριστερά από το ονομα του υπάρχει το εικονίδιο http://l10n.gnome.org/data/download.png. Κάνουμε κλικ πάνω στο εικονίδιο και εμφανίζεται μέσα στον περιηγητή ιστοσελίδων το αρχείο. Από το μενού του Firefox (File-Αρχείο) επιλέγουμε "αποθήκευση ως" και το αποθηκεύμε στον υπολογιστή μας.

(!) Το αρχείο .po που κατεβάσαμε θα έχει κατάληξει //ονομα_πακετου.**el.po**// αν κάποιος άλλος έχει ασχοληθεί παλαιότερα με την μετάφραση του και κατάληξη //ονομα_πακετου**.pot**// αν είμαστε οι πρώτοι που θα το επεξεργαστούμε. Στη δεύτερη περίπτωση καλό είναι να το μετονομάσουμε σε //ονομα_πακετου.el.po// πριν ξεκινήσουμε τη μετάφραση του.

el/Translation/Files (last edited 2015-03-20 12:34:58 by TomTryfonidis)