Προσθέτουμε τα κατάλληλα locales με την εντολή
dpkg-reconfigure locales
Βλέπουμε την τρέχουσα γλώσσα με
locale
Αλλάγή γλώσσας του περιβάλλοντος π.χ. σε γαλλικά
export LANG=fr_FR
Έστω ότι δημιουργούμε το παρακάτω απλό πρόγραμμα σε 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
# 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\"`"