Τελευταία άρθρα
Τελευταία άρθρα της κατηγορίας




Πως να μεταφράσετε Gettext strings


Το Guru CMS χρησιμοποιεί ένα module της PHP που ονομάζεται Gettext για την παροχή πολυγλωσσικού περιεχομένου.

Αρχεία τύπου GetText Portable Object(PO) είναι το βιομηχανικό πρότυπο για πολυγλωσσικές ιστοσελίδες στην PHP βασισμένες στην παραπάνω αρχιτεκτονική.
Σε αυτό το άρθρο θα μιλήσουμε για το πώς να μεταφράσετε τα αρχεία PO και να διατηρήσετε τις μεταφράσεις ενημερωμένες ανεξαρτήτου εκδόσεως του Guru CMS.

Αρχικά, ας εξηγήσουμε τι είναι τα αρχεία.

* PO - Portable Object. Αυτό είναι το αρχείο που λαμβάνετε πίσω από τους μεταφραστές. Είναι ένα αρχείο κειμένου που περιλαμβάνει τα πρωτότυπα κείμενα και τις μεταφράσεις.
* MO - Machine Object. Το αρχείο MO περιλαμβάνει ακριβώς το ίδιο περιεχόμενο όπως το αρχείο PO. Τα δύο αρχεία διαφέρουν ως προς τη μορφή τους. Ενώ ένα αρχείο PO είναι ένα αρχείο κειμένου και είναι εύκολο για τους ανθρώπους να το διαβάσουν, τα MO αρχεία, που είναι μεταγλωτισμένα (compiled) για να είναι εύκολο για τους υπολογιστές να τα διαβάσουν. Ο web server σας θα χρησιμοποιήσει το αρχείο MO για να εμφανίσει τις μεταφράσεις. Δεν χρειάζεται να επεξεργαστείτε το αρχείο MO.

Δεδομένου ότι τα αρχεία PO είναι τόσο δημοφιλή, υπάρχουν πολλά εξαιρετικά εργαλεία για να τα μεταφράσετε.
Το πιο γνωστό εργαλείο είναι ένα πρόγραμμα που ονομάζεται Poedit. Το Poedit είναι ένα εργαλείο για τους μεταφραστές και δεν απαιτείτε εμπειρία σε προγραμματισμό για τη χρήση του. Επιτρέπει τη συγχώνευση μεταξύ των νέων κειμένων σε ένα αρχείο POT (σε σύγκριση με την τρέχουσα μετάφραση στο αρχείο PO) και παράγει τόσο PO όσο και MO ως έξοδο.

Το Poedit είναι διαθέσιμο για όλα τα μεγάλα λειτουργικά συστήματα όπως το Linux, Windows και Mac OSX. Μπορείτε, ωστόσο, να κάνετε άμεση λήψη του πηγαίου κώδικα (source files) και να το εγκαταστήσετε στην αρχιτεκτονική σας ανεξαρτήτου λειτουργικού συστήματος.

Σελίδα για την λήψη του Poedit
http://www.poedit.net/download.php
Εναλλακτικά προγράμματα που μπορείτε να χρησιμοποιήσετε για μετάφραση.

Εναλλακτικά μπορείτε να χρησιμοποιήσετε (χωρίς συγκεκριμένη σειρά):

  • XEmacs (με po-mode): τρέχει σε Unices με X
  • GNU Emacs (με po-mode):τρέχει σε Unices και Windows
  • KBabel: τρέχει σε KDE
  • Lokalize: η αντικατάσταση του KBabel in KDE4. Επισήμως γνωστό ως KAider
  • OmegaT είναι ένα άλλο εργαλείο που μπορεί να μεταφράσει PO αρχεία. Είναι γραμμένο σε Java άρα είναι διαθέσιμο για πολλαπλές πλατφόρμες (συμπεριλαμβάνοντας GNU/Linux και Windows). Κατεβάστε το απο SourceForge.
  • Για Mac OS X υπάρχει το AquaEmacs και port of GNU Emacs available using carbon for OS X. Επίσης δείτε το Emacs wiki για περισσότερη βοήθεια και συμβουλές. Το po-mode δεν συμπεριλαμβάνεται, αλλά είναι εύκολο να προστεθεί.
  • GNU Gettext (Linux/Unix) χρησιμοποιείται για το GNU Translation Project. Το Gettext επίσης παρέχει msgmerge που καθιστά εύκολη τη συγχώνευση των μεταφράσεων.
  • Vim (Linux/Unix και Windows versions διαθέσιμες) με PO ftplugin για ευκολότερη επεξεργασία των GNU gettext PO αρχείων.
  • LocFactory Editor (OS X).
  • gted είναι ένα eclipse plugin το οποίο μετατρέπει το eclipse σε ένα gettext editor. Το Eclipse είναι γραμμένο in Java, έτσι και αυτό το λογισμικό δουλεύει ανεξάρτητος πλατφόρμας.
  • gtranslator δουλεύει καλά στο GNU/Linux: http://gtranslator.sourceforge.net
  • Virtaal: Linux και Windows
    Εγγενής υποστήριξη για Gettext PO μεταφράσεις καθώς XLIFF καθώς και άλλες μορφές.

Βεβαιωθείτε ότι έχετε κάνει download την πιο πρόσφατη έκδοση από οποιοδήποτε πρόγραμμα από τα παραπάνω προς αποφυγή bugs.

Πως να συγχωνεύσετε τις μεταφράσεις

Ας πούμε οτ έχετε ενα  fr.po, μια μετάφραση ενος module. Tο module ενημερώνεται και κάποια strings αλλάζουν. Τώρα έχετε ένα ενημερωμένο module.pot το οποίο είναι κενό. Τώρα χρειάζεται να συγχωνεύσετε τις αλλαγές στη μετάφραση, χωρίς να χάσετε τα strings που είχαν μεταφραστεί προηγουμένως.

Πρώτα, ελένξτε με το κλασσικόl PO editor εαν διαθέτει λειτουργία συγχώνευσης.

Αλλιώς, μπορείτε να δοκιμάσετε το UNIX CLI εργαλείο msgmerge, το οποίο πάει μαζί με το GNU gettext.

Ακόμα καλύτερα, μπορείτε να χρησιμοποιήσετε το merge.sh,  μια bash msgmerge wrapper function από την ομάδα του KDE. Κατεβάστε το αρχείο, και τοποθετήστε το στο /bin folder (κάπου στο $PATH). Θα χρειαστεί να έχετε το GNU gettext εκδόση 0.16 ή νεότερη εγκατεστημένη στο σύστημα σας. Μετά προσθέστε την ακόλουθη εντολή: merge.sh fr.po module.pot
όπου fr.po είναι η παλιά σας μετάφραση και module.pot, το ενημερωμένο pot για το module. Μετά απ'αυτό, ανοίξτε το fr.po με τον κλασσικό PO editor.

Μερικά κόλπα για τους διαχειριστές μετάφρασης

Μεγάλα .po αρχεία

Για να επιταχυνθεί το έργο σας με τα τεράστια .po αρχεία (μεγαλύτερα απο μερικά MB) μπορείτε πάντα να κάνετε κάποια βελτιστοποίηση με την εκκαθάριση αμετάφραστων μηνυμάτων ως εξής:
msgattrib -s --no-location --translated huge.po > clean_file_for_import.po

Κατάργηση διπλότυπων

Μπορείτε να αφαιρέσετε τα διπλότυπα ως εξής :msguniq -u --no-location --strict with_duplicates.po > clean_file_for_import.po

Δημοσιεύτηκε στις: 16/02/2011