Linux – Friheden til at programmere: Version 2.5.20050330 – 2020-12-31
forrige Kapitel 5. Programmørens værktøjskasse næste

5.8. Gettext

Gettext er et værktøj du bør bruge til at gøre det enkelt for andre

at oversætte menutekster m.m. i dine programmer til andre sprog.
Princippet i Gettext er at man skriver sit program med alle
teksterne til brugergrænsefladen på ét sprog (typisk amerikansk),
men indkapsler dem i et funktionskald til Gettext-biblioteket der
slår oversættelsen af teksten op i en database for det sprog
brugeren har valgt.

Eksempel 5-12. Eksempel på brug af Gettext fra et POSIX Shell-program

Selv i et POSIX Shell-program kan vi bruge Gettext til at håndtere

 oversættelsen af de tekster brugeren skal se.  Vi bruger et
 program, ` **hej** `, der bare skriver "Hej Verden."
 som eksempel:<code>#! /bin/sh

echo “Hej Verden.”</code>

Det er gængs praksis at bruge amerikansk engelsk som det

 grundlæggende sprog i programmer der skal kunne oversættes til alle
 mulige sprog, så nu bruger vi i stedet for teksten "Hello World."
 samtidig med at vi erstatter ` **echo** ` med
 ` **gettext --domain eksempel -s** `, hvor "eksempel"
 er navnet på en samling oversættelser og "-s" får
 ` **gettext** ` til at efterligne
 ` **echo** `:<code>#! /bin/sh

gettext –domain eksempel -s “Hello World.”</code>

Hvis man bare uden videre kører dette program, skulle det gerne

 skrive "Hello World.", da ` **gettext** ` når den ikke
 kan finde filen med oversættelserne (her
 "/usr/share/locale/da/LC_MESSAGES/eksempel.mo")
 eller ikke kan finde teksten der skal oversættes (her "Hello
 World.") i filen med oversættelserne, bare udskriver teksten på
 originalsproget (som den står i programmet).

Nu laver vi så en oversættelse af programmet til dansk.

 Kildeteksten er fileneksempel.da.po:<code>msgid "Hello World."

msgstr “Hej Verden.”</code>

Den kan vi oversætte til Gettexts interne format

 (".mo") med programmet
 ` **msgfmt** `:<code>hven%msgfmt --output-file=eksempel.da.mo eksempel.da.po</code>

For at vi kan bruge den skal den helst flyttes til systemets

 standardkatalog for danske oversættelser,/usr/share/locale/da/LC_MESSAGES/:<code>hven%su -c 'cp eksempel.da.mo /usr/share/locale/da/LC_MESSAGES/eksempel.mo'Password:</code>

Hvis du nu stiller om til at dine programmer skal være på dansk

 (kun i den aktive kommandofortolker) vil programmet skrive "Hej
 Verden." i stedet for "Hello World.":<code>hven%./hejHello World.hven%export LANG=da_DK.ISO8859-1hven%./hejHej Verden.</code>

Vi kan selvfølgelig også stille sproget om til færøsk, men da vi

 ikke har oversat programmet endnu, vil vi bare få teksten ud på
 originalsproget:<code>hven%export LANG=fo_FO.ISO8859-1hven%./hejHello World.</code>

Eksempel 5-13. Eksempel på brug af Gettext fra et Ada-program

(kommer senere)

Eksempel 5-14. Eksempel på brug af Gettext fra et C-program

(kommer senere)

Når et program er forberedt til oversættelse med “gettext”, er det

næste skridt at oversætte det. Til det formål er KBabel ([http://www.klid.dk/dansk/kbabel.html|http://www.klid.dk/dansk/kbabel.html])
nok det bedste værktøj.

forrige hjem næste
Glade op Electric Fence