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