Barra laterale

programmazione:vala:introduzione_a_gettex

Introduzione a gettex con Vala

Autore: Fabio Di Matteo
Ultima revisione: 21/12/2015 - 13:42

Facendo riferimento all' articolo Introduzione a Gettex in C 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

programmazione/vala/introduzione_a_gettex.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)