Oversættelse med kbabel

Erik K. Pedersen <epedersen@stny.rr.com>har lavet følgende beskrivelse brug af kbabel til oversættelse af KDE programmer og dokumentation til dansk. Kbabel er et KDE program til oversættelse af programtekster, dokumentation mv., der bla. kan trække på oversættelser fra andre programmer, og lave dansk stavekontrol. Her er et skærmdump:

Kbabel logo

og endnu et der viser hvordan kbabel skal indstilles

Kbabel billede2

Det er svært at vedligeholde en netside med denne slags oplysninger da udviklingen går utroligt hurtig. Jeg vil give et øjebliksbillede set fra kde perspektiv. I øvrigt findes den danske udgave af kbabel-håndbogen nu på Gnu Skolens server

Opsætning og hentning

Jeg antager du har et program f. eks. et kde-program, men udenfor standard distribution, enten som en tar-fil eller en rpm. I pakken er der forhåbentlig en program.pot fil og en index.docbook fil. Den første indeholder strengene til menuerne og den anden brugervejledningen, og du vil gerne have dette på dansk, og du vil bruge kbabel. Jeg vil antage du har kbabel fra en ny udgave af kdesdk. Hvis du skal oversætte kde-tekster, skal du indstille kbabel til at gemme i utf8-tegnsættet, ellers er det ofte iso-8859-1, der bruges. For at forberede anonym cvs laver du en fil i din hjemmemappe der hedder .cvsrc og som indeholder følgende tekst

cvs -z4 -q
diff -u3 -p
update -dP
checkout -P

Nu skal vi have de gamle po- og pot-filer hentet hjem. På en kommandolinje skriver du, i bash:

CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde

export CVSROOT

eller i csh:

setenv CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde

derefter cvs login, og return når du bliver bedt om passwd.

Nu skriver du

cvs co kde-i18n/da/messages

hvilket henter alle po-filerne fra kde hjem. Der oprettes en mappe, kde-i18n/da/messages med undermapper med alle po-filerne. Derpå skriver du

cvs co kde-i18n/templates

hvilket henter alle pot-filerne fra kde hjem. Når du så indstiller kbabel til at pege på din mappe med po-filer respektive potfiler vil du kunne se hvad der mangler at blive oversat ved hjælp af kataloghåndteringen.

Kbabel billede3

Du kunne også hente alle filerne med danske kde-oversættelser hjem fra http://i18n.kde.org/translation_archive/kde-i18n-da.tar.bz2

Det er nu klogt at oprette en database af oversættelser. I kbabel vælger du Opsætning -> Indstil ordbog -> Oversættelsesdatabase. Du vælger fanebladet Database -> Skan mappe og undermapper -> og peger på mappen ../kde-i18n/da/messages . Derefter indlæses en database med alle oversættelser der er lavet hidtil i kde. Det tager et stykke tid, men det skal kun gøres én gang.

Kbabel billede4

Når du har lavet nogle oversættelser eller hentet oversættelser fra andre kilder end KDE kan du gentage dette og pege på de mapper de andre oversættelser ligger i.

Det er vigtigt at beholde fluebenet i "Autotilføj indgang til database". Så sørger Kbabel nemlig selv for at de oversættelser du laver eller henter og gemmer i de mapper den kigger i bliver tilføjet databasen.

Oversættelse

Hvis der allerede er en delvis oversættelse af programmet i form af en program.po fil, gør du først følgende på en kommandolinje:

msgmerge -o x.po program.po program.pot
mv x.po program.po

Derved overskrives program.po med en fil der har de gamle strenge og også de nye uoversatte. Nu åbner du filen program.pot, (program.pot hvis du ikke har en program.po) og starter med at lave en grov oversættelse (Vælg dette fra en af menuerne). Derefter tjekker du dem alle, får fuzzyerne fjernet og oversætter resten. Stavekontrol virker på dansk i kbabel, hvis du har installeret dansk stavekontrol, og det virker i andre programmer. Min .aspell.conf indeholder:

lang danish:
master danish:

Jeg tror det er nok.

Når du har kontrolleret stavningen, gemmer du resultatet i filen program.po .

På kommandolinjen hvor du har gemt program.po skriver du nu:

msgfmt -v program.po -o program.mo

Dette skulle gerne resultere i en fil der hedder program.mo . Nu bliver du root og flytter program.mo til (på et redhat 7 system) /usr/share/locale/da/LC_MESSAGES/program.mo . På andre systemer kan du finde hvor mo-filerne er ved at skrive for eksempel locate kbabel.mo.

En del af ovenstående skridt undgåes hvis man blot deltager i oversættelsen af kde's standardprogrammer. Så skal du blot vælge en uoversat pot-fil i kbabels kataloghåndtering, oversætte den, og sendte den po-fil der er blevet produceret til mig, der så vil lægge den ind på cvs.

Kørsel

Næste gang du starter programmet program skulle menuerne gerne være danske. Der mangler måske nogle fordi programmøren har glemt at putte i18n omkring nogle af strengene. Du bør nu egentlig sende po-filen til forfatteren af programmet, så andre ikke skal alt dette igennem.

Ny diff-funktion

Der er en helt ny funktion i kbabel, der er ekstremt nyttig, en diff funktion. Forestil dig at du har oversat en lang streng, og forfatteren til pot-filen retter en lille stavefejl. Under msgmerge processen beskrevet ovenfor kommer dette frem som en "fuzzy" (upræcis) oversættelse,. Det er meget vanskeligt at finde ud af hvad, der er ændret. Hvis du sørger for at have både den gamle og den nye program.po fil (og altså ikke overskriver den gamle program.po fil som jeg beskrev ovenfor, men husker at gemme en kopi et andet sted hen før msgmerge processen), så kan du vælge den gamle fil til diff, og ved at trykke på F5 vil et farvemønster vise dig, hvad der er slettet og hvad der er tilføjet. Hvis det kun er en lille stavefejl der er rettet, så har du formodentlig ikke lavet en tilsvarende på dansk, og du skal blot fjerne den fuzzy der er ved strengen. Nu efter kde2.2 kan diff også udføres mod databasen, så man behøver ikke at have to udgaver for at kunne diffe. Hvis man ikke har noget at diffe imod kan man checke en gammel udgave ud ved for eksempel

cvs co -D "1 month ago" kde-i18n/da/messages/....po,

og så stille kbabel til at sammenligne med filen ....po.

Søge-funktion

Der er tre måder man kan søge på i kbabel. Den første er imod databasen som er nævnt ovenfor. Den anden er mod et andet lignende sprog for eksempel svensk. Man kan tage de svenske oversættelser ud som beskrevet ovenfor, og så kan man finde den svenske oversættelse og sammenligne med den. Den tredje er ret ny. Jeg har lavet en fil da.compendium, der ligger i cvs. Den kan man hente hjem og stille kompendium til at pege på den. Når man så dobbeltklikker på et ord i msgid, vil ordet blive markeret, og Ctrl 3 vil forsøge at finde ordet i da.compendium. Filen da.compendium er baseret på klid's ordliste med de modifkationer vi er blevet enige om blandt kde-oversætterne. De tre søgemetoder nås ved henholdsvis Ctrl 1, Ctrl 2 og Ctrl 3.

Manualer

Hvad angår manualen gør du følgende:

Først skriver du:

xml2pot index.docbook >programdoc.pot

Dette skridt er allerede foretaget på de filer der ligger i mappen kde-i18n/da/messages/docs.

Dernæst åbner du programdoc.pot med kbabel og oversætter den. Den er lidt træls at oversætte da der ingen linjebrud er i pot-filen. Dem kan du lave ved

msgmerge -i programdoc.pot programdoc.pot >x.pot

efterfulgt af

mv x.pot programdoc.pot

Det giver en mere manerlig programdoc.pot-fil.

Når du har oversat denne fil gemmes den som programdoc.po. Før du går videre skal du lige kopiere den oprindelige index.docbook til den mappe du har gemt programdoc.po i og så skriver du:

po2xml index.docbook programdoc.po >program.docbook. Inde i programdoc.docbook skal du typisk ændre den første gang der står English til Danish. program.docbook indeholder nu informationerne til en dansk manual for programmet program. program.docbook er skrevet i det ret strenge xml-format (sgml, men med strengere regler, f. eks. skal alle tags afsluttes). Efter kde2.2 kan konqueror læse denne index.docbook direkte. Man kan også kompilere program.docbook med programmet meinproc, ved at udføre kommandoen

meinproc program.docbook

Dette producerer HTML-filer som også vil kunne læses af for eksempel Netscape. Endnu bedre er det at køre

meinproc --check program.docbook

fordi du så vil få fejlmeddelelser hvis der skulle være nogen fejl. Tidligere skulle man blot omdøbe program.docbook skal til index.docbook og placere den i /usr/share/doc/HTML/da/program/ (på et redhat system, på andre systemer skal /usr/share erstattes af værdien af $KDEDIR, ofte /opt/kde eller /opt/kde2). Dette skal gøres som root. Efter kde2.2 skal man køre

meinproc --check --cache index.cache.bz2 program.docbook

og putte både index.cache.bz2 og program.docbook omdøbt til index.docbook i /usr/share/doc/HTML/da/program/

Filen index.cache.bz2 er ikke strengt nødvendig, men den får konqueror til at fremvise håndbogen langt hurtigere. Næste gang du kører programmet program og åbner håndbogen til programmet vil denne være på dansk. Dette virker nu da kde 2.2 er udkommet.

po-oversættelserne i kde er nogenlunde gjort hvad angår hoveddistributionen, men hvis man vil hjælpe med manualerne kan man hente pot-filerne hjem som beskrevet ovenfor eller fra en af undermapperne i kde-i18n/templates/docs i Mappe med pot-filer for KDE-dokumentation, og sende den til mig når den er oversat. Jeg vil så putte den ind på CVS. Man skal selvfølgelig se efter at filen ikke allerede er oversat ved at kigge i den tilsvarende undermappe i Mappe med oversatte filer for KDE-dokumentation.

Jeg er stadig meget interesseret i feedback. Hvis man synes en af strengene i en af menuerne ser mærkelig ud for eksempel i kmines, kan man finde hvad den engelske streng var ved på kommandolinjen at starte kmines som

KDE_LANG=en_US kmines

Så vil sproget være engelsk, så man kan finde ud af hvor dårlige oversættelserne er :-).

Sidst opdateret: 2002-04-08 erik@binghamton.edu