Gettext
Gettext on GNU-projektin työkalu ohjelmien kotoistamiseen.
Gettextiä käytettäessä ohjelman käännettävät merkkijonot merkitään sen lähdekoodiin, jonka jälkeen lähdekoodista luodaan alkuperäiset tekstit sisältävä .pot-tiedosto. Tähän tiedostoon kääntäjät sitten lisäävät käännökset eri kielille. Lopulta käännökset sisältävä .po-tiedosto muutetaan binäärimuotoon ja tallennetaan sopivaan hakemistoon, jonka jälkeen ohjelma korvaa ajonaikana alkuperäiset merkkijonot käännöksillä.
Käyttö
Ohjelma käyttämään Gettextiä
Luodaan esimerkiksi C-kielinen esimerkkiohjelma ja sille käännökset. Luodaat tiedosto ohjelma.c jonka sisältö on seuraava:
#include <stdio.h>
#include <stdlib.h>
/* Gettextin tarvitsemat kirjastot */
#include <libintl.h>
#include <locale.h>
/* Gettext ei ymmärrä muuta kuin gettext()-funktiolla ympäröidyt merkkijonot
Käytetään mieluummin lyhyempää _()-funktiota, jonka esikääntäjä sitten
korvaa gettext()-funktiolla */
#define _(merkkijono) gettext(merkkijono)
int main ( void )
{
/* Alustetaan Gettext */
char nimi[] = "ohjelma";
setlocale ( LC_ALL, "" ); /* Käytetään [[ympäristömuuttuja|ympäristömuuttujia]] */
bindtextdomain ( ohjelma, "./kaannos" ); /* Haetaan käännökset kaannos-alihakemistosta */
textdomain ( ohjelma ); /* Otetaan käännökset käyttöön */
/* Varsinainen ohjelma */
printf ( _("Hello Linux.fi\n") );
char url[]="http://linux.fi";
/* TRANSLATORS: Please let %s as it is */
printf( _("Visit %s") , url);
printf("\n");
return EXIT_SUCCESS;
}
Ohjelmassa tulostettavat merkkijonot on korvattu _()-funktiolla, jolle annetaan parametrina alkuperäiskielellä kirjoitettu merkkijono. Tämä ohjelma voidaan kääntää normaalisti GCC:llä:
gcc ohjelma.c -o ohjelma
Ja ajaa komennolla
./ohjelma
Ohjelman tuloste on nyt normaalisti englanniksi:
$ ./ohjelma Hello Linux.fi Visit http://linux.fi