Gettext

Tämän artikkelin tai sen osan muoto tai tyyli kaipaa korjausta.
Voit auttaa Wikipediaa parantamalla artikkelia. Lisää tietoa saattaa olla keskustelusivulla.

gettext on kirjasto ohjelmien lokalisointiin.

Sun Microsystems toteutti kirjaston ensimmäisen kerran vuonna 1993 Solaris-käyttöjärjestelmässä. 1980-luvun lopulla lokalisointiin oli kaksi kilpailevaa toteutusta, X/Openin catgets ja Sunin gettext. Sun yritti standardoida gettextiä Uniforum-ryhmässä.[1] GNU-projekti katsoi gettextin olevan yksinkertaisempi ja ohjelmoijalle helppo ja toteutti sen myös. Laajalti käytetty toteutus on GNU-projektin vuonna 1995 julkaisema GNU Gettext.[2][3]

Käyttö

gettextia käytettäessä ohjelma muutetaan suoran tulostuksen sijaan käyttämään gettext-kirjaston kutsuja. C-kieltä käytettäessä tämä tehdään yleisimmin käyttämällä funktiota nimeltä "_".

Tulostuskutsusta:

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

tulisi:

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

gettext käyttää ohjelmassa olevia merkkijonoja avaimina käännöksiä etsittäessä, ja palauttaa alkuperäisen merkkijonon sijaan tiedostosta ladatun, tai alkuperäisen, jos halutulle kielelle ei ole käännöstä.

Ohjelman kääntäminen tapahtuu ajamalla lähdekoodille xgettext-ohjelma, joka poimii käännettävät kohdat .pot-päätteiseen tekstitiedostoon. Tästä luodaan .po-päätteinen käännöstiedosto halutulle kielelle:

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

Edellä mainitulle ohjelmalle fi.po olisi:

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

Ohjelman kääntäjä kirjoittaa käännöksen msgstr-riville lainausmerkkien väliin jättäen C:n tulostuksenohjauskoodit kuten "%s" ja "\n" paikoilleen.

.po-tiedostosta käännetään .mo-tiedosto msgfmt-ohjelmalla ja se sijoitetaan esimerkiksi /usr/share/locale/fi/LC_MESSAGES-hakemistoon.

Lähteet

  1. Message Translation (The GNU C Library) www.gnu.org. Viitattu 4.5.2023.
  2. History of GNU gettext gnu.org. Viitattu 14.10.2007. (englanniksi)
  3. Olexiy Ye Tykhomyrov: Introduction to Internationalization Programming 1.11.2002. Linux Journal. Viitattu 4.2.2020. (englanniksi)

Aiheesta muualla

  • GNU `gettext' utilities