Gettext

Linux.fista
Versio hetkellä 13. lokakuuta 2007 kello 19.31 – tehnyt Heikki (keskustelu | muokkaukset) (välitallennus)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

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