====== Πολύγλωσσα προγράμματα ======
===== Αλλαγή 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