====== 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