Gettext: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m UltimaVersione e SitoWeb da Wikidata
 
(4 versioni intermedie di 3 utenti non mostrate)
Riga 4:
|Screenshot =
|Didascalia =
|Sviluppatore = [[Progetto GNU]]
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = linuxmultipiattaforma
|SistemaOperativo2 = multipiattaforma
|Linguaggio =
|Genere2Genere = ideIDE
|Licenza =
|Licenza = [[LGPL]] (libreria),<br />[[GNU General Public License|GPL]] (strumenti),<br />[[GFDL]]/GPL (documentazione)
|SoftwareLibero = sì
|Lingua =
Line 24 ⟶ 23:
==Modo d'utilizzo==
===Sviluppatore===
[[File:Gettext.svg|thumb|Flusso di lavoro]]
Per prima cosa è necessario utilizzare la funzione GNU gettext all'interno del codice sorgente. Questo avviene in modo diverso a seconda del linguaggio di programmazione adottato per il proprio progetto, ma segue regole comuni per i linguaggi più comunemente adottati. Queste prevedono che il programmatore racchiuda all'interno della funzione <ttkbd>gettext</ttkbd> la stringa del messaggio da tradurre. Per motivi pratici, spesso si utilizza la forma breve <ttkbd>_</ttkbd>. In questo modo, il seguente codice in C:
<syntaxhighlight lang="C">
 
printf(gettext("My name is %s\n"), mio_nome);
</syntaxhighlight>
 
diverrebbe:
<syntaxhighlight lang="C">
 
printf(_("My name is %s\n"), mio_nome);
</syntaxhighlight>
 
In seguito, il comando <ttkbd>xgettext</ttkbd> filtrerà il codice alla ricerca della funzione <ttkbd>gettext</ttkbd> appena inserita, per creare il file modello '''.pot''', sulla base delle stringhe estratte dai sorgenti.
Un esempio di file .pot per un codice contenente le righe precedenti sarebbe:
 
<syntaxhighlight lang="gettext">
#: src/name.c:36
msgid "My name is %s\n"
msgstr ""
</syntaxhighlight>
 
===Traduttore===
Il traduttore deriverà un file '''.po''' dal file modello facendo uso del programma <ttkbd>msginit</ttkbd>. Questo genererà un file a seconda della traduzione da effettuare, che utilizzerà la lingua utilizzata dal programmatore in caso di mancata traduzione. Ad esempio, per una traduzione in francese:
 
msginit --locale=fr --input=name.pot
 
Il programma creerà il file fr.po, di contenuto simile al seguente:
<syntaxhighlight lang="gettext">
 
#: src/name.c:36
msgid "My name is %s\n"
msgstr "My name is %s\n"
</syntaxhighlight>
 
A questo punto, il traduttore non dovrà far altro che tradurre la stringa alla riga msgstr, manualmente o tramite appositi programmi quale ad esempio [[poEdit]]. Il risultato sarà simile a questo:
<syntaxhighlight lang="gettext">
 
#: src/name.c:36
msgid "My name is %s\n"
msgstr "Je m'appelle %s\n"
</syntaxhighlight>
 
Al termine, i file '''.po''' verranno compilati in file binari '''.mo''' tramite il comando <ttkbd>msgfmt</ttkbd>, dopodiché saranno pronti per la distribuzione assieme al pacchetto software dello sviluppatore.
 
===Utente===
Line 66 ⟶ 67:
 
==Collegamenti esterni==
* {{Collegamenti esterni}}
* {{cita web|http://www.gnu.org/software/gettext/|Homepage del progetto gettext|lingua=en}}
 
{{GNU}}