User Tools

Site Tools


linuxbog:program:vaerktoej-gettext
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
linuxbog/program/vaerktoej-gettext.txt · Last modified: by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.