Il Bar dell'Ingegneria

LOCAL-LACOL

A passeggio tra le lingue

« Older   Newer »
 
  Share  
.
  1. zax2013
        +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,942
    Reputation
    +187

    Status
    Offline
    Questo benedetto gettext sembra chissà che.......

    Si tratta di una libreria di funzioni dedicate proprio agli aspetti di localizzazione distribuita dal progetto GNU.
    Quindi è liberamente scaricabile, ecc. E' compatibile con parecchi linguaggi di programmazione tra cui gli immancabili C, C++, Pascal, Phyton, Java, ecc.

    In sintesi ogni volta che il programma 'dichiara' il contenuto di una stringa, sia essa la didascalia di una label, una voce di menù, un testo da scrivere liberamente su una canvas, ecc. esso va 'incorniciato' tramite la funzione gettext()

    Quindi al posto di scrivere:

    CODICE
    printf("Hello world!");


    si dovrà scrivere:

    CODICE
    printf(gettext("Hello world!"));


    A questo punto si darà il listato del programma, così impostato, in pasto al programma xgettext, il quale non farà altro che generare un file di testo, in cui inserirà tutte le stringhe che ha riscontrato 'incorniciate' dentro gettext.

    Questo file è un 'template', con estensione .pot
    Ogni singola parte del file dovrebbe avere questo aspetto:

    CODICE
    #: src/name.c:36
    msgid "Hello world!"
    msgstr ""


    (copiato da Wikipedia)
    Quindi una volta generato il file 'modello', si potranno generare tutti i 'file di linguaggio' che si vogliono.
    Basta utilizzare un altro programma: msginit, che creerà tanti file con estensione .po, quante le lingue in cui si desidera l'interfaccia del programma.

    Per ogni lingua il file .po, avrà inizialmente questo aspetto:

    CODICE
    #: src/name.c:36
    msgid "Hello world!"
    msgstr "Hello world!"


    Ovvero questo 'fantastico' programma non ha fatto altro che inserire nella 'chiave' msgstr lo stesso contenuto della chiave msgid.
    E' a questo punto che entra in gioco la parte manuale della questione. Ovvero la traduzione di tutte le stringhe msgstr nella lingua desiderata.
    Ci si potrà avvalere di traduttori qualificati, oppure dei vari servizi in linea dedicati alle traduzioni.
    Nella libreria gettext a quanto pare esiste il programma poedit che si occuperebbe di questa fase.

    Quindi il file a questo punto diventerebbe (in una ipotesi di traduzione italiana):

    CODICE
    #: src/name.c:36
    msgid "Hello world!"
    msgstr "Ciao mondo!"


    In tutto questo il nostro codice non è affatto cambiato, abbiamo la nostra stringa 'incapsulata' dentro la funzione gettext, che non abbisogna di alcuna modifica.

    Trovo scritto su Wikipedia, che il file di testo così ricavato dovrà essere ripassato, per la sua compilazione, tramite il programma msgfmt, generando un file con estensione .mo.

    Il programma a questo punto dovrà solamente essere eseguito, e la scritta, 'filtrata' dalla funzione gettext, utilizzerà la traduzione del file .mo corrispondente al valore della variabile d'ambiente LANGUAGE, comunemente preimpostata in tutte le distribuzioni di software libero.

    (La parte in corsivo l'ho ripresa dalla pagina wikipedia. http://it.wikipedia.org/wiki/Gettext)
     
    Top
    .
17 replies since 26/1/2015, 22:03   350 views
  Share  
.