Instruktioner til oversættere
Fra GLFPD Wiki, den frie encyklopædi
Versionen fra 3. jan 2009 kl. 02:57 KennethNielsen (Diskussion | bidrag) � Gå til forrige forskel |
Versionen fra 3. jan 2009 kl. 09:35 KennethNielsen (Diskussion | bidrag) poabc Gå til næste forskel → |
||
Linje 286: | Linje 286: | ||
Her har poabc taget fejl, fordi den fordi den forventer at strengen starter med et tegn, men i den danske streng er variablen rykket over til sidst og derfor starter den danske streng med et bogstav. Man kan også bede poabc om at tjekke om filens syntaks er korrekt (mere om hvordan man gør det manuelt længere nede). Dette gøre med tilvalgt m efter kommandoen | Her har poabc taget fejl, fordi den fordi den forventer at strengen starter med et tegn, men i den danske streng er variablen rykket over til sidst og derfor starter den danske streng med et bogstav. Man kan også bede poabc om at tjekke om filens syntaks er korrekt (mere om hvordan man gør det manuelt længere nede). Dette gøre med tilvalgt m efter kommandoen | ||
- | poabc gedit.po | + | poabc m gedit.po |
== podiff == | == podiff == |
Versionen fra 3. jan 2009 kl. 09:35
Denne guide er beregnet til nye oversættere og forklarer, skridt for skridt, hvordan man laver en opdaterings af en eksisterende oversættelse eller starter en ny. Oversættelser opbevares og vedligeholdes i po-filer, så guiden vil starte med en forklaring af formatet af po-filer.
Indholdsfortegnelse |
po-filer (Gettext)
Internationalisering og lokalisering håndteres indenfor fri software hovedsageligt ved hjælp af et program som hedder Gettext. Måden det fungerer på er, at alle de tekststrenge som skal bruges i et program skrives på en bestemt måde, som gør det muligt at samle dem alle sammen i en po-fil. Denne fil kan så oversættes og oversættelserne kan begefter hives tilbage og bruges i programmet. Det betyder derfor, at alle de tekststrenge, som skal oversættes, er samlet i en enkelt fil (en po-fil) og for en oversætter er det derfor kun nødvendigt at lære hvordan denne fil ser ud, og ikke (sådan som nogle frygter) at skulle lære det programmeringssprog programmet er skrevet i.
En po-filsektion
En po-fil består af mange små sektioner af tekst (adskilt af en blank linje). Hver bid svarer til en tekststreng fra programmet. En sådan sektion har den følgende struktur:
blank linje # oversætterkommentarer #. kommentarer trukket ud af kildekoden #: reference... #, mærker... #| msgid "tidligere uoversatte streng" msgid "uoversatte streng" msgstr "oversatte streng"
Linjen som begynder med msgid
er den uoversatte streng, altså den
streng i programmet som programmøren har markeret til
oversættelse. Linjen som begynder med msgstr
er den dertil hørenden
oversættelse og altså den linje som man som oversætter skal
udfylde. Alle linjerne som starter med #
er
kommentarer. Der er forskellige typer af kommentarer, som tjener
forskellige formål. De kan kendes fra hinanden alt efter hvilket tegn
som følger umiddelbart efter #
.
#
er en oversætterkommentar. Her kan oversætterne lave kommentarer om deres oversættelse, enten til sig selv eller til den næste oversætter af projektet. Disse er virkelig praktiske, hvis man har været nødt til at lave research til oversættelsen af en bestemt streng, for at sikre at den viden og det arbejde ikke går tabt.#.
er en programmørkommentar til oversætterne. Enhver kommentar som programmøren skriver umiddelbart før en streng som er markeret til oversættelse, vil blive trukket ud og tilføjet po-filen sådan så programmørerne har muligheden for at forklare meningen med en bestemt streng.#:
er kildekodereferencer. Her vil stå filnavne og linjenumre på de steder i kildekoden hvor den pågældende streng står.#,
er mærker som er tildelt den pågældende streng. Disse er som regel mærker, der beskriver hvilket programmeringssprog strengene kommer fra. Derudover kan strengene også tildeles mærketfuzzy
. Dette mærke bruges enten, hvis der i forvejen var en oversættelse, men originalstrengen eller positionen af denne ændrer sig i kildekoden, i det tilfælde vil mærket være sat automatisk af programmet som trækker oversættelser ud af kildekoden. Men mærket kan også bruges af oversætterne selv til at indikerer at arbejdet med denne streng ikke er færdigt. Streng med mærkerfuzzy
vil ikke blive brugt.#|
er en ny form for kommentar som bruges til at vise den gamle originalstreng hvis den er ændret i kildekoden. Dette er ment som en service overfor oversætteren, således at når man komme til enfuzzy
streng, så behøver man ikke at gætte på hvordan den har ændret sig, men kan med det samme se det, og derved lettere finde ud af hvordan man skal ændre sin oversættelse.
po-filhovedet
Den første streng i en po-fil, som har en msgid
som er
tom(""), er speciel. Dennne bliver brugt som en filhoved og bruges til
at indeholde forskellig information. Et filhoved bør se ud som dette
her fra gedit:
# Danish translations of gedit. # Copyright (C) 1999-2007 Free Software Foundation, Inc. # This file is distributed under the same license as the gedit package. # # Birger Langkjer <birger.langkjer@image.dk>, 1999. # Kenneth Christiansen <kenneth@gnome.org>, 1999, 2000. # Keld Simonsen <keld@dkuug.dk>, 2000, 01. # Ole Laursen <olau@hardworking.dk>, 2002, 03, 04, 05, 06. # Marie Lund <marielund@post.cybercity.dk>, 2004. # Martin Willemoes Hansen <mwh@sysrq.dk>, 2004. # Kenneth Nielsen <k.nielsen81@gmail.com>, 2006, 2007. # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007. # M.P. Rommedahl <lhademmor@gmail.com>, 2008 # # Husk at tilføje dig i credit-listen (besked id "translator_credits") # # Konventioner: # # plugin -> udvidelsesmodul # snippet -> tekststump # msgid "" msgstr "" "Project-Id-Version: gedit.gnome-2-16\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=gedit&component=general\n" "POT-Creation-Date: 2009-01-01 19:23+0000\n" "PO-Revision-Date: 2008-10-04 11:20+0200\n" "Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
I kommentaren til denne specielstreng findes først noget
ophavsretsinformation, her skal man som oversætter huske at opdatere
årstallet således at det stadig inkluderer man er i. Derefter følger
en liste af navne og e-mail-adresser for alle de oversættere som har
arbejdet på filen, her skal man selvfølgelig også skrive sig selv
på. Dette er også et godt sted at kigge hvis man af forskellige
årsager vil kontakte sidste oversætter. Her er så også en kommentar om
at man skal huske at skrive sig selv på "credit"-listen, mere om det
senere. Derefter følger en liste af konventioner som de forskellig
oversættere har lavet for denne oversættelse, husk at bruge og
opdatere denne. Efter kommentaren komme selve strengen som indeholder
forskellige former for specielinformation. Der er kun 3 af linjerne
som man behøver at bekymre sig om som oversætter. Man skal opdatere
linjen Last-Translator
med sit eget navn og e-mail, samt
sikre sig at linjen Language-Team
indeholder
informationen Danish <dansk@dansk-gruppen.dk>
, hvis den
ikke gøre det i forvejen. Derudover er der linjen
Plural-Forms
som beskriver hvilke man flertalsformer man
har på det på sprog som filen oversættes til, mere om det senere.
Flertalsformer
Når man skriver tekststrenge i et program, har man muligheden for at skrive en variabel ind i strengen, som vil blive erstattet af noget andet, f.eks. et tal eller noget andet tekst. Hvis det der bliver sat ind er et tal vil det være nødvendigt for at strengen at ændre sig alt efter hvad dette tal er. Det forklares måske nemmest med at eksempel, igen fra edit
#: ../gedit/gedit-commands-file.c:266 #, c-format msgid "Loading %d file..." msgid_plural "Loading %d files..." msgstr[0] "Indlæser %d fil..." msgstr[1] "Indlæser %d filer..."
I denne type af strenge er der nu 2 msgid
'er, en for hver
af de forskellige former der er på engelsk. Herefter skal der så være
en msgstr
for hver af de forskellige flertalsformer der
findes på dansk. Efter msgstr[0]
skal stå den danske
streng, som svarer til at der er nøjagtig 1 og
efter msgstr[1]
skal stå den streng som svarer til at der
er 0 eller mere end 1. Grunden til at man har lavet det på denne måde,
i stedet for bare at lave det som 2 streng, er at andre sprog har
væsentligt mere indviklede regler for flertalsformer og i flere end 2
former.
VIGTIGT: Eftersom det kan variere fra sprog til sprog hvordan man
laver flertalsformer er man nødt til at definere dette i filen hvis
der findes sådan nogle plural
-streng som denne her. Dette
gøres med den linke i filhovedet som starter
med Plural-Forms:
og den skal for danske oversættelser
have værdien nplurals=2; plural=(n != 1);
. Hvis man
støder på en uoversat flertalsstreng, skal man derfor sikre sig at
denne linje er i filhovedet, eller får man en fejl senere når man
kontrollerer filen for fejl.
Specielle entiteter i strenge
De fleste strenge indeholder blot almindelig tekst, men der er også indtil flere specielle ting som man kan støde på og som det som ny oversætter kan være svært at vide hvad man skal gøre ved. Disse er beskrevet i de følgende undersektioner.
Variable
Som tidligere nævnt kan man bruge variable i programstrenge og bruge
disse til at få sat et eller andet ind i strengen. Det kan være alt
lige fra tal, fil-navne eller -stier eller blot noget andet tekst. Der
vil så stå en variabel, det sted i strengen hvor dette skal sættes
ind. Hvordan disse variable ser ud, vil afhænge af hvilket
programmeringssprog programmet er skrevet på. Det kan f.eks. være
sådan nogle som %s
, %d
og %i
. Der er for mange muligheder inden for de
forskellige sprog til at skrive dem alle sammen her, så hvis man som
oversætter er i tvivl om noget er en variabel må man endelig
spørge. Det vigtig ved disse strenge er at man bevarer dem. Når
man er færdig med strengen, skal der altid stå de samme variable som
der gør i originalstrengen. Nogle gange vil det være nødvendigt at
bytte rundt på rækkefølgen af disse variable og her skal man være
forsigtig. Måden at gøre dette på vil varierer fra sprog til sprog og
hvis man støder på problemet, er det derfor nemmere at spørge og så
finder vi en løsning.
Genvejstegn
Strenge som skal have et bogstav associeret med sig, således at disse bogstaver kan komme til at fungere som genvejstegn (kendetegnet i programmer ved at der er en streg under bogstavet), håndteres i oversættelser ved at sætte et tegn foran det bogstav som skal være genvejstegn. Hvilket tegn der bliver brugt til at markere dette kan variere fra projekt til projekt, men i næsten alle GNOME-relaterede projekter bruger bundstregen "_". Et eksempel på sådan en streng kunne være "Save" i filmenuen, vist hernedenunder
msgid "_Save" msgstr "_Gem"
På engelsk er der valgt "s" som genvejstegn og i den danske version har man valgt "g". Det er vigtigt at sørge for, at man får defineret sådan et genvejstegn, når der er et i originalstrengen. Det er også vigtigt at man tænker lidt over hvilke tegn man bruger, sådan at genvejtegnene bliver så konsistente som muligt på tværs af programmerne og at man ikke bruger det samme tegn til flere strenge i f.eks. den samme menu.
Opmærkning
I visse sammenhænge bliver de tekststrenge som skal oversættes
formatteret ved hjælp af opmærkning i stil med måden man skriver
hjemmesider på. Så hvis man f.eks. vil have noget tekste med fed
skrifttype så skriver man <bold>fed
tekst</bold>
. Det sidste, som har en skråstreg i sig, er det
afsluttende eller lukkende mærke. Man kan indlejre sådanne mærker,
således at hvis man i en streng som er fed vil have noget til både at
være med fed og på skrå kan man skrive <bold>både fed
<italic>'og på skrå'</italic></bold>
. Det er vigtigt
at lukke indlejrede mærker på samme måde som i originalen.
Lodret stregtegn "|" (en. pipecharacter)
Hvis den samme tekstreng optræder mere end en gang i et program, vil
Gettext samle det til en sektion i po-filen, som vil have flere
kildekodereferencer. Selv om dette er rigtigt smart og hjælper
ufatteligt meget i langt størstedelen af tilfældende er der visse
tilfælde hvor det ikke duer. Det kan være hvis det samme ord kan
betyder mere end en ting og bruges forskellig flere steder i
programmet. Det kunne (som et tænkt eksempel) være et program hvor man
måler ydelse af et eller andet og samtidig kan gemme og indlæse
profiler for hvordan det bliver vist. I sådan et program kunne man
forestille sig at strengen "Load" bliver brugt, både i betydningen
"Belastning" og i betydningen "Indlæs". Hvis strengene bliver samlet
til en er det selvfølgelig ikke muligt at oversætte det til to
forskellige ting. I et lang stykke tid er det blevet ordnet ved at man
har hæftet et stykke kontekst på før strengen adskilt fra selv
strengen med en "|" og man har så i en kommentar bedt oversætterne om
kun at oversætte det efter "|". Dette ville så betyde at der nu i
stedet vil være to strengen f.eks. "Noun|Load" og "Verb|Load" som skal
oversættes forskelligt. Det er meget vigtigt at være opmærksom på at
gøre dette rigtigt og kun oversætte det efter "|". Denne metode er
umidlertid meget sårbar for fejl og man er lige nu (December 2008) i gang med at
implementere en erstatning for dette system. Løst forklaret vil
dette nye system betyde, at der vil komme et ekstra felt ligesom
msgstr
og msgid
som hedder
msgctxt
hvor strengens kontekst vil komme til at stå, i stedet
for i selve strengen. Dette vil blive forklaret nærmere når
implementeringen er nået længere.
"translator-credits"-strengen
I nogle programmer findes en speciel streng med msgid
"translator-credits". Denne bruges sådan, at det den bliver oversat
til, indsættes i en boks med folk som har bidraget til
oversættelse. Det betyder at i stedet for at oversætte den ordret skal
man i stedet for indsætte en liste over folk som har bidraget til
oversættelsen, samt hold- og kontakt-information. Indenfor
GNOME-oversættelser bruges altid an standard måde at udforme denne på
som ser ud som nedenfor:
#: ../gedit/gedit-commands-help.c:106 msgid "translator-credits" msgstr "" "Birger Langkjer\n" "Keld Simonsen\n" "Kenneth Christiansen\n" "Marie Lund\n" "Martin Willemoes Hansen\n" "Ole Laursen\n" "Kenneth Nielsen\n" "M.P. Rommedahl\n" "\n" "Dansk-gruppen <dansk@dansk-gruppen.dk>\n" "Mere info: http://www.dansk-gruppen.dk"
Som det kan ses, er det altså først en liste af navne på bidragsyderne, herefter en blank linje og til sidst to linjer med navn og kontaktinformation for holdet.
Hjælpeprogrammer (poabc og podiff)
Ud over det program man bruger til at redigere po-filen med, er der to små kommandolinjeprogrammer som bruges i løbet af et oversættelsesforløb, poabc og podiff.
poabc
poabc (ABC står for Automatic Blunder Corrector) er et program, som man kan bruge til at lede efter typiske fejl i en oversættelse, efter at man er færdig med den. Blandt de fejl som poabc kigger efter er om man har glemt strengens afsluttende punktum eller mellemrum, at man ikke har korrekt stort eller lille bogstav i starten og om man har husket genvejsbogstavstegnet hvis der er sådan et i originalen. poabc køres fra terminalen, med filen der skal tjekkes som argument
poabc gedit.po
og vil give uddata som det nedenunder.
=== Line 1127 : Hotkey assignment inconsistency === msgid "Simulation of (S)VCD burning" msgstr "_Simulering af (s)vcd-brænding" === Line 1664 : Leading character type or case mismatch === msgid "Session Import Error" msgstr "sessionsimport-fejl" === Line 1694 : Trailing characters or punctuation mismatch === msgid "Please, delete some files from the project." msgstr "Slet nogle filer fra projektet"
Uddata ovenfor viser de mest typiske former for fejl som poabc vil rapportere i sin uddata. Desværre vil de kriterier som poabc er sat til at registrer som fejl, også nogle gange give falske positive, altså advarsler hvor der ikke er noget i vejen. Det er dog hurtigt at gennemgå uddata fra poabc og sortere de falske advarsler fra og bruge de rigtige, og brugen af poabc vil ofte fange en del fejl, selv for rutinerede oversættere. Et eksempel på en falsk fejlbesked kan se nedenfor.
=== Line 708 : Leading character type or case mismatch === msgid "%s only" msgstr "kun %s"
Her har poabc taget fejl, fordi den fordi den forventer at strengen starter med et tegn, men i den danske streng er variablen rykket over til sidst og derfor starter den danske streng med et bogstav. Man kan også bede poabc om at tjekke om filens syntaks er korrekt (mere om hvordan man gør det manuelt længere nede). Dette gøre med tilvalgt m efter kommandoen
poabc m gedit.po
podiff
podiff bruges til at dokumentere de ændringer, man har lavet i en po-fil under en opdatering, på en sådan måde at det er nemt at læse korrektur på ændringer. Dansk-gruppen læser korrektur på alle oversættelser før de integreres, men for at man ikke skal læse hele oversættelsen igennem, hver gang der bliver foretaget en opdatering, gennemlæses kun de dele af filen som er blevet opdateret.