Gettext

De Viquipèdia
Salta a la navegació Salta a la cerca
Infotaula de programariGettext
Official gnu.svg Modifica el valor a Wikidata

Desenvolupador(s)Projecte GNU Modifica el valor a Wikidata
Versió estable0.21 (27 juliol 2020) Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Sistema operatiumultiplataforma Modifica el valor a Wikidata
Tipusbiblioteca informàtica Modifica el valor a Wikidata
LlicènciaGNU GPL v3 Modifica el valor a Wikidata
Més informació
Lloc webWeb oficial Modifica el valor a Wikidata
Free Software DirectoryGettext Modifica el valor a Wikidata

gettext és la biblioteca GNU d'internacionalització (i18n). Sovint s'empra per a escriure programes amb interfície en múltiples idiomes. La darrera versió és la 0.18.

Flux de treball[modifica]

Programador[modifica]

Primer cal modificar el codi font per poder usar les crides de gettext de GNU. Aquesta modificació consisteix a usar, com a paràmetre de la funció gettext, les cadenes de text que veurà l'usuari. Per estalviar temps d'escriptura i espai, aquesta funció és usualment assignada a _, de manera que en el codi C

 printf("My name is %s.\n", el_meu_mom);

Es converteix en:

 printf(_("My name is %s.\n"), el_meu_nom);

A més de C, gettext de GNU té, entre d'altres, les següents implementacions: C++, Objective-C, script sh, script Bash, Python, CLisp GNU, Lisp d'Emacs, Smalltalk GNU, Java, awk GNU, Pascal, wxWidgets (a través de la classe WxLocale), YCP (el llenguatge YaST), Tcl, Perl, PHP, Pike, Ruby i R. L'ús és similar al de C per a molts d'aquests llenguatges.

xgettext s'executa sobre el codi font per produir un arxiu de plantilla .pot, que conté una llista de totes les cadenes de text traduïbles extreta del codi font. Una entrada de l'arxiu .pot ser una cosa com:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

Traductor[modifica]

El traductor genera un arxiu .po des de la plantilla amb el programa msginit, i comença a traduir-lo. msginit inicialitza el fitxer amb les traduccions. Per tant, per crear una traducció al català, executaríem el següent:

msginit --locale=ca --input=name.pot

Això generaria el fitxer ca.po. Una entrada senzilla es veuria així:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "My name is %s.\n"

El traductor ha d'editar les entrades, a mà o amb una eina de traducció com poEdit. Quan això estigui fet, l'entrada es veurà així:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "El meu nom és %s.\n"

Finalment, els fitxers .po són compilats en un fitxer binari .mo amb msgfmt. Així, queden enllestits per ser distribuïts amb el paquet de programari.

Usuari[modifica]

L'usuari, sobre sistemes tipus Unix, estableix la variable d'entorn LANGUAGE, i el programa mostrarà les cadenes en l'idioma seleccionat, si hi ha un arxiu .mo adequat.

Vegeu també[modifica]

Enllaços externs[modifica]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Gettext