====== Πολύγλωσσα προγράμματα ====== ===== Αλλαγή locale ===== Προσθέτουμε τα κατάλληλα locales με την εντολή dpkg-reconfigure locales Βλέπουμε την τρέχουσα γλώσσα με locale Αλλάγή γλώσσας του περιβάλλοντος π.χ. σε γαλλικά export LANG=fr_FR ===== bash ===== ==== Αρχική μετάφραση ==== Έστω ότι δημιουργούμε το παρακάτω απλό πρόγραμμα σε bash #!/bin/bash # localized.sh . /usr/bin/gettext.sh export TEXTDOMAINDIR=/usr/share/locale export TEXTDOMAIN=localized.sh read -p "`gettext \"Enter the value: \"`" $value echo "`eval_gettext \"You have entered : \\\$value\" === Γαλλικά === Στην συνέχεια εκτελούμε xgettext -n localized.sh msginit --locale=fr --input=messages.po Τροποποιούμε το αρχείο fr.po που παράχθηκε αλλάζοντας τις παρακάτω γραμμές #: localized.sh:24 msgid "Enter the value: " msgstr "Entrez la valeur" #: localized.sh:26 #, sh-format msgid "You have entered : $value" msgstr "Vous avez entrez : $value" Εκτελούμε τέλος την παρακάτω εντολή για να δημιουργήσουμε το αρχειο mo msgfmt -o localized.sh.mo fr.po Ως root αντιγράφουμε το αρχείο αυτό στον φάκελο /usr/share/locale/fr_FR/LC_MESSAGES/ cp localized.sh.mo /usr/share/locale/fr_FR/LC_MESSAGES/ Αλλάγή γλώσσας του περιβάλλοντος σε γαλλικά export LANG=fr_FR και εκτελούμε ./localized.sh === Ελληνικά === Προσοχή να αλλάξουμε την γραμμή "Content-Type: text/plain; charset=ASCII\n" π.χ. σε UTF-8 και να είμαστε σίγουροι ότι αποθηκεύουμε και σε utf-8 "Content-Type: text/plain; charset=UTF-8\n" Αποθηκεύουμε σε cp localized.sh.mo /usr/share/locale/el/LC_MESSAGES/ ==== Τροποποίηση ==== Μετονομάζουμε το παλιό αρχείο po για να μην χαθεί mv fr.po fr.po.old Δημιουργούμε ξανά το αρχείο messages.po και fr.po με τις εντολές xgettext -n localized.sh msginit --locale=fr --input=messages.po Συγχωνεύουμε τα αρχεία msgmerge fr.po.old fr.po --output-file=fr.po.new Τροποποιούμε το νέο αρχείο fr.po.new vi fr.po.new και τέλος δημιουργούμε το mo αρχείο και το αποθηκεύουμε εκεί που πρέπει msgfmt -o localized.sh.mo fr.po.new ==== Περιπτώσεις strings ==== # simple echo "Hello World" echo "`gettext \"Hello World\"`" # the same read -p "Enter the value: " value read -p "`gettext \"Enter the value: \"`" value # now a variable echo "You have entered : $value" echo "`eval_gettext \"You have entered : \\\$value\"`" # Escape characters: # e.g. tab echo -e "Hello\tworld" echo -e "`gettext \"Hello\\tworld\"`" # Escape characters: # e.g. -h (to avoid gettext seeing it as an option) echo "-h display help and exit" echo -e "`gettext \"\\0-h display help and exit\"`" ===== ΕΦαρμογές ===== * poedit * gtranslator * lokalize ===== Πηγές ===== * gettext : * general : http://doc.mpv.ru/gettext/gettext_13.html * bash : http://tldp.org/LDP/abs/html/localization.html * wikipedia : http://el.wikipedia.org/wiki/Gettext * oreily : http://www.oreillynet.com/pub/a/php/2002/06/13/php.html?page=2