Gettext

Η gettext είναι μια βιβλιοθήκη διεθνοποίησης (i18n-internationalization) του εγχειρήματος GNU. Χρησιμοποιείται κυρίως για τη δημιουργία πολυγλωσσικών προγραμμάτων. Η τελευταία της έκδοση είναι η  0.21.

Ροή εργασίας

Προγραμματιστής
Πρώτα τροποποιείται ο πηγαίος κώδικας ώστε να γίνει δυνατή η κλήση συναρτήσεων της βιβλιοθήκης gettext.
Αυτό στις περισσότερες γλώσσες προγραμματισμού επιτυγχάνεται εσωκλείωντας αλφαριθμητικά, που θα δει ο χρήστης,
στην συνάρτηση gettext . Για οικονομία χρόνου όμως κατά την πληκτρολόγηση, συνήθως αντί του ονόματος αυτής
χρησιμοποιείται το ψευδώνυμο της  _, έτσι ο κώδικας στην C 
 printf("My name is %s.\n", my_name);
θα γινόταν
 printf(_("My name is %s.\n"), my_name);

Εκτός από την  C, η  GNU gettext έχει και τις ακόλουθες υλοποιήσεις : C++, Objective-C, σενάρια κελύφους, σενάρια bash, Python, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, wxWidgets (μέσω της κλάσης wxLocale), YCP (η γλώσσα YaST2), Tcl, Perl, PHP, Pike, και R. Στις περισσότερες από αυτές η χρήση είναι όπως στη C.

Τρέχοντας το πρόγραμμα xgettext με είσοδο τον πηγαίο κώδικα παράγεται ένα αρχείο .pot, ή πρότυπο (φόρμα), που περιέχει μια λίστα όλων των μεταφράσιμων αλφαριθμητικών που έχουν εξαχθεί από τον πηγαίο κώδικα. Από το παραπάνω παράδειγμα θα προέκυπτε η εξής καταχώριση στο αρχείο .pot:

 #: src/name.c:36
 msgid "My name is %s.\n"
 msgstr ""

Μεταφραστής

Ο μεταφραστής παράγει ένα αρχείο  .po  από την φόρμα που προαναφέραμε χρησιμοποιώντας το πρόγραμμα msginit, και κατόπιν συμπληρώνει της μεταφράσεις. Το msginit 
αρχικοποιεί τις μεταφράσεις ώστε αν για παράδειγμα θέλαμε να δημιουργήσουμε μια μετάφραση στα Γαλλικά θα
τρέχαμε την εντολή
 msginit --locale=fr --input=name.pot

Αυτή θα δημιουργήσει ένα αρχείο fr.po. Μια καταχώρηση σε αυτό θα ήταν π.χ.:

 #: src/name.c:36
 msgid "My name is %s.\n"
 msgstr "My name is %s.\n"

Ο μεταφραστής θα έπρεπα να την διορθώσει είτε με το χέρι είτε με ένα μεταφραστικό εργαλείο όπως το 
poEdit. Οπότε μόλις τελειώσει η καταχώρηση θα έχει τη μορφή:

 #: src/name.c:36
 msgid "My name is %s.\n"
 msgstr "Je m'appelle %s.\n"

Τέλος τα αρχεία  .po files μετατρέπονται σε δυαδικά αρχεία .mo με το πρόγραμμα msgfmt. 
Αυτά είναι τώρα έτοιμα για διανομή μαζί με το πακέτο λογισμικού.

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

Δείτε επίσης
Εγχείρημα GNU

Εξωτερικοί σύνδεσμοι

κεντρικός ιστότοπος Gettext
Εδώ μπορείτε να βρείτε πακέτο της gettext για windows

Ελεύθερο λογισμικό
Προγραμματισμός