Μετάβαση στο περιεχόμενο

gettext

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Gettext
Γενικά
Ημερ. Δημιουργίας1990
Είδοςβιβλιοθήκη, ελεύθερο λογισμικό
Διανομή
Έκδοση0.23 (1 Δεκέμβριος 2024)[1]
ΛειτουργικάGNU/Linux, BSD, Microsoft Windows, macOS
Ανάπτυξη
Υπευθ. ανάπτυξηςΕγχείρημα GNU
Γραμμένο σεC
Άδεια χρήσηςLGPLv1.2+
Σύνδεσμοι
Επίσημος ιστότοπος
https://www.gnu.org/software/gettext/
Αποθετήριο κώδικα
https://git.savannah.gnu.org/cgit/gettext.git

Η 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 γι'αυτή.


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

[Επεξεργασία | επεξεργασία κώδικα]
  1. «gettext-0.23 released [stable]» (στα Αγγλικά). 1 Δεκέμβριος 2024. Ανακτήθηκε στις 1 Δεκέμβριος 2024.