====== Introduzione a gettex con Vala ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//21/12/2015 - 13:42//** \\ \\
Facendo riferimento all' articolo [[programmazione:c:introduzione_a_gettex]] vedremo come internazionalizzare i nostri programmi con vala.
Link utili: [[http://www.teejeetech.in/2013/03/vala-6-localization.html?m=1|]]
===== Codice del programma =====
const string GETTEXT_PACKAGE = "helloworld"; //nome della traduzione del programma
void main()
{
Intl.setlocale(LocaleCategory.MESSAGES, "");
Intl.textdomain(GETTEXT_PACKAGE);
Intl.bind_textdomain_codeset(GETTEXT_PACKAGE, "utf-8"); //il codeset impostato a utf-8
Intl.bindtextdomain(GETTEXT_PACKAGE, "./locale"); //la cartella che contiene le traduzioni
stdout.printf(_("Hello world"));
stdout.printf("\n");
}
Compiliamo il codice con :
valac -X -DGETTEXT_PACKAGE="helloworld" helloworld.vala
Estraiamo le stringhe nel file template con :
xgettext --language=C --keyword=_ --escape --sort-output -o hello.pot hello.vala
Creiamo la cartella contenente la traduzione:
mkdir -p locale/it_IT/LC_MESSAGES
Con il seguente comando creiamo il file di traduzione italiano dal template .pot
msginit -l it_IT -o locale/it_IT/LC_MESSAGES/helloworld.po -i helloworld.pot
Modifichiamo ''helloworld.po'' in base alle nostre esigenze.
Entriamo nella cartella '' locale/it_IT/LC_MESSAGES '' e compiliamo la traduzione:
cd locale/it_IT/LC_MESSAGES
msgfmt --check --verbose -o helloworld.mo helloworld.po
A questo punto dovremmo gia' essere in grado di far funzionare tutto. Non resta altro che eseguire il programma.
./helloworld
Per fare degli esperimenti potremmo provare a cambiare la lingua della sessione del terminale per visualizzare i cambiamenti nella traduzione. Avendo soltato installata la traduzione italiana non appena cambiamo la lingua si dovrebbe visualizzare la stringa di default che nel nostro caso è “Hello world”. Per esempio :
export LANGUAGE=fr_FR.UTF-8
./hello world