1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
<!-- <?xml version="1.0" ?>
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> -->
<!-- Uncomment the previous two lines to validate this document -->
<!-- standalone. Be sure to recomment them before attempting to -->
<!-- process index.docbook -->
<chapter id="using-kbabel">
<chapterinfo>
<!-- Fill in this section if this document has a different author -->
<authorgroup>
<author>
<personname><firstname></firstname><surname></surname></personname>
</author>
</authorgroup>
&erik.kjaer.pedersen.role;
</chapterinfo>
<title>Brug af &kbabel;</title>
<sect1 id="using-introduction">
<title>Indledning</title>
<para>Sædvanligvis skrives programbeskeder og dokumentation på engelsk. Ved brug af et sæt omgivelser lavet af værktøjer og biblioteker er det imidlertid muligt at få dine foretrukne programmer, at tale dit indfødte ikke-engelske sprog. Denne tilpasningsprocessen til et bestemt sprog kaldes lokalisering. Lokaliseringsprocessen inkluderer at oversætte programmets brugerflade og dokumentation til de forskellige sprog, som brugerne har brug for og, i visse lande og områder at få inddata og uddata til at tilpasse sig til bestemte konventioner. &kbabel; er et værktøj, der hjælper dig i lokaliseringsprocessen med at få et programs brugerflade til at tale mange sprog.</para>
<para>Hvert program der er forberedt til internationalisering, gør en eller flere besked-katalog-filer tilgængelige for oversættelse. Endelsen for disse filer er <literal role="extension">.pot</literal>. <acronym>POT</acronym> er en forkortelse for <quote>Portable Object Template</quote> (overførbar objekt skabelon).</para>
<para>Hver oversætter tager en kopi af en af disse <acronym>POT</acronym>-skabeloner og giver sig til at udfylde de blanke felter: hver besked bliver oversat til det ønskede sprog. Filen der indeholder den oversatte tekst refereres til som en <acronym>PO</acronym>-fil (Portable Object). </para>
<para>Når alle meddelelser er blevet oversat så kompileres <acronym>PO</acronym>-filen til et maskindlæsbart binært format, som er kendt som en <acronym>MO</acronym>-fil (Machine Object, maskinobjekt). Disse filer, som opbevares med filendelsen <literal role="extension">.mo</literal>, fungerer som en database for at minimere tiden det tager for programmet at slå hver oversat meddelelse op. </para>
<para>Et spørgsmål trænger sig på: behøver jeg at vide hvad der findes inde i en <acronym>PO</acronym>-fil selvom jeg har &kbabel;? Svaret er, uden tvivl, ja. Der findes situationer hvor en meddelelsemappe kan være fejlagtig, og skal rettes i hånden. De fleste af disse problemer er de hadede <acronym>CVS</acronym>- eller <acronym>SVN</acronym>-konflikter som opstår når en oversættelsesproces koordineres med et versionshåndteringssystem såsom <acronym>CVS</acronym> eller Subversion (<acronym>SVN</acronym>). &kbabel; kan ikke hjælpe dig særlig meget hvis et sådant problem opstår, så en teksteditor og en vis kundskab om <acronym>PO</acronym>-filer behøves. Lad os se hvordan en <acronym>PO</acronym>-fil er opbygget.</para>
<para><acronym>PO</acronym>-filer består af par af beskeder—en <emphasis>msgid</emphasis> og en <emphasis>msgstr</emphasis>. msgid er tekst på engelsk og msgstr er teksten oversat til det aktuelle sprog. Teksten der følger med hver msgid og msgstr er indelukket i C-lignende dobbelt-citationstegn Et eksempel taget fra en <acronym>PO</acronym>-fil for &noatun;, er <literal>msgid "Open a Playlist"</literal> </para>
<!-- ### TODO: we would need an example of an entry -->
<para>Tomme linjer og linjer der begynder med <literal>#</literal> bliver ignorerede. Linjer der starter med et # repræsenterer kommentarer og er en nyttig måde at give en bemærkning med detaljer om filen som denne besked skal bruges i og, i tilfælde af programmørerne, til at sørge for ekstra kommentarer der kan hjælpe med oversættelsen. &kbabel; viser disse kommentarlinjer for hver besked.</para>
<para>I mange tilfælde er det første msgid-msgstr par i <acronym>PO</acronym>-filen en falsk indgang (der optræder som <acronym>PO</acronym>-fil overskrift) der indeholder forskellige oplysninger om de oversatte <acronym>PO</acronym>-fil, såsom programmets navn, oversættelsesdato, oversætternavn og så videre.</para>
<para>En nyttig funktion kaldes <emphasis>flertalsformer</emphasis>. Engelsk bruger kun en entals- og en flertalsform af substantiver, f.eks. <quote>1 file</quote> og <quote>10 files</quote>. Det gør at mange udviklere tror at verden er så enkel, og at de kan bruge meddelelser såsom <quote>Do you want to delete %1 file(s)?</quote>, hvor <literal>%1</literal> angiver antal filer som skal fjernes. Men dette er i grunden fejlagtigt. For oversættelse til slovakisk behøves tre forskellige former for meddelelsen. Dette antal er forskelligt for forskellige sprog og selvom det er det samme, som f.eks. for tjekkisk hvor tre former også bruges, så kan reglerne for at vælge formen som skal bruges være meget forskellige. Flertalsformer i <acronym>PO</acronym>-filer er til for at hjælpe til med det. </para>
<note><para>&kde;-udviklerne har valgt en anden implementering af flertalsformer end <application>&GNU; gettext</application>, og introducerede sit eget format for at håndtere dem. Det planlægges at bruge &GNU;-gettext flertalsformer i &kde; version 4. </para></note>
</sect1>
<sect1 id="using-editor">
<title>Editor</title>
<para>Her er et skærmaftryk af &kbabel;</para>
<screenshot>
<screeninfo>Skærmbillede af &kbabel;</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="snap1.png" format="PNG"/>
</imageobject>
<textobject><phrase>Skærmbillede af &kbabel;</phrase></textobject>
</mediaobject>
</screenshot>
<para>Af behagelighedsgrunde har &kbabel; væktøjslinjer der gør mange operationer hurtigere og, for brugere der har travlt, er der mange tastaturgenvej. Hovedvinduet er opdelt i fire dele. </para>
<para><emphasis>Oppe til venstre</emphasis> er der et redigeringsfelt der kun er læsbar og indeholder det aktuelle msgid-felt fra den åbnede PO-fil og dens engelske tekst.</para>
<para><emphasis>Nede til venstre</emphasis> er der et redigeringsfelt der indeholder msgstr-feltet relateret til den viste msgid. Her kan du redigere den oversatte tekst.</para>
<para><emphasis>Oppe til højre</emphasis> er den del af vinduet der er et kommentar-panel hvor du kan se kommentarerne der er tilføjet til den indgang der bliver redigeret for øjeblikket.</para>
<para>Den kan bruges til:</para>
<itemizedlist>
<listitem><para>at finde ud af hvordan den aktuelle besked behandles af programmet (c-formateret eller simpel) </para></listitem>
<listitem><para>i nogle tilfælde at læse hjælpsomme kommentarer tilføjet af programmets udvikler for at hjælpe oversætterne med deres arbejde—for eksempel, kan der være tekniske vink (brugt meget fint i <application>LyX</application>-projektet) </para></listitem>
<listitem><para>når du har brug for at vide fra hvilken fil den aktuelle besked kommer, fordi du ønsker at rapportere en stavefejl i den originale engelske streng. </para></listitem>
</itemizedlist>
<para>Editor-vinduet (i nederste højre hjørne) er den mest sofistikerede del af &kbabel;'s hoved-vindue. Dens størrelse kan justeres ved at flytte opdelingslinjerne mellem den og kommentarruden. (panelet for oven til højre). Editor-vinduet har to fanebladspaneler—et til at gemme søge-information, det andet til sammenhængs-information. Sammenhængsinformationen indeholder en rullevisning med de 4 tidligere og de 4 næste indgange relativt til den aktuelle indgang—i virkeligheden en slags lille 'øjebliksbillede' af PO-filen. Når der oversættes er det meget almindeligt for strengene at de er relaterede til efterfølgende og tidligere beskeder, så sammenhængspanelet er nyttigt for at kigge på de nære beskeder for at få en indikation om, hvordan den aktuelle besked bedst kan oversættes. Dialog-grænseflade-oversættelse er et godt eksempel eller kontroller med deres tilknyttede tekst og "hvad er dette"-beskeder. </para>
<sect2 id="more-kbabel-features">
<title>Flere &kbabel;-egenskaber</title>
<para>Hvert msgid kan være i en af tre tilstande: </para>
<variablelist>
<varlistentry>
<term>uoversat</term>
<listitem>
<para>der er ingen nogen oversæt tekst tilknyttet denne msgstr </para>
</listitem>
</varlistentry>
<varlistentry>
<term>fuzzy</term>
<listitem>
<para><command>msgmerge</command> har forsøgt at matche en oversat streng ved at kigge i resten af PO-fil-indgangene. Dette virker ikke perfekt og man skal redigere den oversatte tekst så den passer til den aktuelle engelske tekst. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>oversat</term>
<listitem>
<para>msgid er den fuldstændigt oversatte udgave af msgstr </para>
</listitem>
</varlistentry>
</variablelist>
<para>Den aktuelle indgangs tilstand indikeres af to <acronym>LED</acronym>'er. Afhængig af dine indstillinger kan disse være i statuslinjen eller over det <guilabel>oversatte strengs</guilabel> redigeringsfelt. Farverne på begge kan tilrettes (for at reflektere dine visuelle krav og din smag). Læs venligst <link linkend="preferences">Indstillinger</link> sektionen for at se hvordan man kan justere dette.</para>
</sect2>
</sect1>
<sect1 id="kbabel-features">
<title>Avanceret oversættelse</title>
<para>Nu har du en idé om hvordan man oversætter en PO-fil. I dette afsnit vil vil følge standard-måden at oversætte en ny PO-fil, vedbrug af &kbabel;'s avancerede egenskaber. Vi antager du allerede har åbnet en skabelon POT-fil og gemt den som PO-fil. </para>
<sect2 id="kbabel-navigation">
<title>Navigation i PO-fil</title>
<para>&kbabel; lader dig navigere nemt gennem filen følgende tilstanden af de forskellige oversættelser. Den uoversatte/fuzzy-status blev allerede introduceret. En besked kan være markeret som forkert som et resultat af <link linkend="kbabel-validation">efterprøvningstjek</link> eller efterprøvning gjort af <command>msgfmt</command>. Og &kbabel; understøtter naturligvis historikken af besøgte beskeder med <guilabel>Fremad</guilabel>/<guilabel> Tilbage</guilabel> ligesom &konqueror;.</para>
<para>Alle kommandoer til navigation er i <menuchoice><guimenu>Kør</guimenu></menuchoice>-menuen. </para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry><para><keycombo action="simul"><keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Gå til tidligere besked </para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Gå til næste besked</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Gå til forrige fuzzy besked.</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Gå til næste fuzzy besked</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Alt;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Gå til forrige uoversatte besked.</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Alt;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Gå til næste uoversatte besked.</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Shift;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Gå til forrige besked med fejl</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Shift;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Gå til næste besked med fejl</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;&Shift;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Gå til forrige fuzzy eller ikke oversatte besked</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;&Shift;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Gå til næste fuzzy eller ikke oversatte besked</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2 id="kbabel-cleveredit">
<title>Smart redigering</title>
<para><emphasis>Smart redigering</emphasis> betyder at editoren vil hjælpe dig med nemt at rediger oversættelsen, mens den tager hensyn til det specielle ved PO-formatet. Den vil <quote>escape</quote> rigtigt når det er nødvendigt.</para>
<para>Den understøtter også mere end en tilstand for indsætning af linjeslut. Dette er meget nyttigt på grund af den måde gettext håndterer linjeslut. Den ignorerer dem simpelthen. (Du kan tænke på det som om al teksten i <acronym>msgstr</acronym> er en enkelt linje.) Hvis du ønsker at indsætte en <quote>rigtig</quote> linjeslut, skal du indsætte <userinput>\n</userinput>. Men de fleste iversættere er ikke klar over, at en nu linje i <acronym>msgstr</acronym> ikke tilføjer et mellemrum mellem linjerne. Dette kan nemt løses ved at tilføje et mellemrum ved slutningen af hver linje. Men det er også nemt at glemme, så smart redigering gør dette automatisk for dig. </para>
<para>Tabellen nedenfor opsummerer egenskaberne for smart redigering. </para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry><para><keycombo action="simul"><keycap>Tab</keycap></keycombo></para></entry>
<entry><para>Indsæt <emphasis>\t</emphasis></para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>"</keycap></keycombo></para></entry>
<entry><para>Indsæt <emphasis>\"</emphasis></para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>Enter</keycap></keycombo></para></entry>
<entry><para>Hvis det sidste tegn før markøren ikke er et mellemrum, indsættes et mellemrum. Derpå startes en ny linje.</para></entry>
</row><row>
<entry><para><keycombo action="simul">&Ctrl;<keycap>Enter</keycap></keycombo></para></entry>
<entry><para>Start en ny linje uden yderligere overvejelser</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Shift;<keycap>Enter</keycap></keycombo></para></entry>
<entry><para>Indsæt <emphasis>\n</emphasis> og start en ny linje</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<para>Hvis du ønsker at se hvor der er mellemrum, kan du slå <guibutton>Fremhæv baggrund</guibutton> til og/eller <guibutton>Markér hvidt med punkter</guibutton> i indstillingsdialogen i fanebladet <guilabel>Redigér</guilabel> <guilabel>Udseende</guilabel>. </para>
</note>
</sect2>
<sect2 id="kbabel-roughtranslation">
<title>Automatisk oversættelse</title>
<para>Som et første trin i at starte en ny oversættelse, tilbyder &kbabel; en funktion for automatisk at udfylde beskeder med oversættelser af ældre oversættelser. Vælg <menuchoice><guimenu>Værktøjer</guimenu><guimenuitem>Grov oversættelse</guimenuitem> </menuchoice> og så vil &kbabel; præsentere følgende dialog: </para>
<para>
<screenshot>
<screeninfo>Dialog for grov oversættelse</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="roughtranslation.png" format="PNG"/>
</imageobject>
</mediaobject>
</screenshot>
</para>
<para>I dialogen, skal du angive hvad der skal oversættes og vælge kilderne for de gamle oversættelser. </para>
<para>Foroven i <guilabel>Hvad der skal oversættes</guilabel>-rammen er tre afkrydsningsfelter (<guilabel>Ikke oversatte indgange</guilabel>, <guilabel>Fuzzy indgange </guilabel>, <guilabel>Oversatte indgange</guilabel>) til at angive hvilken slags beskeder du ønsker at oversætte. Ikke oversatte og fuzzy indgange er naturlige valg for automatisk oversættelse, men du kan også ændre allerede oversatte beskeder. </para>
<para>Den nøjagtige matchning for <acronym>msgid</acronym>'er vil altid blive brugt til grov oversættelse. Du kan imidlertid tilføje flere strategier, &ie; <guilabel>Tillad fuzzy oversættelse (langsomt)</guilabel> og <guilabel>Tillad enkeltords-oversættelse</guilabel>. Begge disse yderligere strategier skal være understøttet af de kilder der bruges (se nedenfor). Der er ingen specifikation af hvad <quote>fuzzy oversættelse</quote> betyder, men formålet er ret klart. <quote>Enkelt-ords-oversættelse</quote> er kun passende for nogle sprog. &kbabel; vil forsøge at oversætte hvert ord i <acronym>msgid</acronym> separat og så putte de oversatte ord (eller udtryk) i samme rækkefølge i <acronym>msgstr </acronym>. </para>
<para>Som kilde for grov oversættelse, kan en vilkårlig ordbogsmodul der er tilstede bruges. Der er en liste af <guilabel>Brug ikke</guilabel>-moduler og <guilabel>Brug</guilabel>-moduler. Modulerne bruges i den rækkefølge de er i <guilabel>Brug</guilabel>-listen. Første modul bliver spurgt om en oversættelse. Hvis den ikke findes, spørges næste modul i listen og så videre. Du kan bruge knapperne med pile til at flytte moduler mellem listerne. Glem ikke at ændre rækkefølgen til at passe til dine behov ved <guibutton>Flyt op </guibutton> og <guibutton>Flyt ned</guibutton>-knapperne. </para>
<para>Normalt vil &kbabel; markere hver groft oversat besked som fuzzy, fordi den antager at enhver automatisk oversættelse skal gennemses af en oversætter. Hvis du er 100% sikker på at den automatiske oversættelse vil være korrekt, eller du alligevel vil gennemse oversættelsen, tillader<guilabel>Markér ændrede indgange som </guilabel> dig at slå denne automatiske fuzzy-markering fra, men du vil skulle bekræfte dette. </para>
<para>Når du har sat alle valgmuligheder til at passe dine behov, trykker du på <guibutton>Start </guibutton> for automatisk at oversætte beskeder. Du kan følge fremskridtslinjen, og hvis det skal være, kan du bruge <guibutton>Stop</guibutton>-knappen. </para>
</sect2>
<sect2 id="kbabel-validation">
<title>Efterprøv din oversættelse</title>
<para>Alle laver fejl en gang imellem. Så &kbabel; understøtter et antal tjek for typiske problemer i oversættelser. Disse tjek (ikke syntaks-tjek) kan basalt set udføres på to måder.</para>
<para>Tjek kan udføres ved hver ændring af den oversatte tekst. Disse kaldes <emphasis>automatiske</emphasis> tjek og de kan slås til i <link linkend="preferences-editor">&kbabel;'s indstillingsdialog</link>. Automatisk tjekning af syntaks er mulig hver gang filen gemmes. </para>
<para>De automatiske tjek kan gøre &kbabel; langsom. Hvis du har en langsommere computer, kan du slå de automatiske tjek far og kun bruge den anden mulighed. Du kan starte alle slags tjek fra <menuchoice><guimenu>Værktøjer</guimenu><guisubmenu> Validering</guisubmenu></menuchoice>. Så udføres tjek på alle beskeder i filen og de forkerte markeres som fejl. </para>
<variablelist>
<varlistentry>
<term><guimenuitem>Tjek syntaks</guimenuitem></term>
<listitem>
<para>Dette kalder på <command>msgfmt</command> for at tjekke gyldigheden af PO-filen som set af &GNU;'s gettext-pakken. Den vil vise resultatet af kommandoen og markere forkerte <acronym>msgstr</acronym>'er. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek argumenter</guimenuitem></term>
<listitem>
<para>Ukorrekte oversættelser kan få programmer til at bryde sammen. De farligste dele af oversættelserne er argumenterne, ⪚ til printf-lignende funktioner. Dette tjek sammenligner antal og typer af argumenterne i <acronym>msgid</acronym> og <acronym>msgstr</acronym>. De skal matche. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek genvejstaster</guimenuitem></term>
<listitem>
<para>&GUI;-tekst indeholder almindeligvis acceleratorer, &ie; bogstaver der kan bruges til hurtig adgang til &GUI;-elementer fra tastaturet. Disse angives ved specielle tegn, ⪚ & i &kde;. Typiske krav til oversættelsen er at oversat tekst også skal indeholde acceleratorer. Dette tjek vil bemærke dette problem for dig. Accelerator-tegnet kan angives i <guilabel>Indstillinger</guilabel> på <guilabel>Diverse</guilabel>-fanebladet. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Kig efter oversat sammenhængsinfo</guimenuitem></term>
<listitem>
<para>Du vil formodentlig kun behøve dette for &kde;-oversættelse. Noget af teksten er for almindelig og skal oversættes forskelligt i forskellige sammenhænge. I &kde; er sammenhæng beskrevet i begyndelsen af <acronym>msgid</acronym> efter den specielle sekvens <userinput>:_</userinput>. Men hvis en oversætter ikke er klar over denne konvention og forsøger også at oversætte sammenhængsinformationen, så vil dette tjek prøve at finde disse. Hvis det finder oversat sammenhængsinformation, bør du fjerne den. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek flertalsformer</guimenuitem></term>
<listitem>
<para>Hvis <acronym>msgid</acronym> er angivet som en <quote>flertalsform</quote>, skal oversættelsen indeholde det rigtige antal oversættelser adskilt af <userinput>\n</userinput>. Det rigtige antal afhænger af sproget der oversættes til og er angivet under <guilabel>Identitet</guilabel>-fanebladet i <guilabel> Indstillinger</guilabel>-dialogen. Dette er kun implementeret for &kde; for øjeblikket. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek ligninger</guimenuitem></term>
<listitem>
<para>Ligninger er et specielt format i <acronym>msgid</acronym> typisk brugt i <filename>.desktop</filename>-filer. Og fordi dine oversættelser vil blive flettet tilbage til disse filer, skal <acronym>msgstr</acronym> også bruge dette specielle format. Det betyder at oversættelsen skal starte (indtil den første forekomst af <literal>=</literal> med en samme tekst som den oprindelige besked, ⪚ <userinput>Name=</userinput>. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="kbabel-spellcheck">
<title>Stavekontrol af oversættelsen</title>
<para>Som altid er det meget vigtigt at stavekontrol af oversættelsen udføres inden resultatet bruges. På den måde kan man finde stavefejl og andre problemer med oversættelsen. &kbabel; bruger &kde;'s standardbibliotek for stavekontrol, og standardindstillingen findes i <link linkend="preferences-project-spellcheck">indstillingsdialogen for projektet</link>. Stavekontrollen selv findes i undermenuen <menuchoice><guimenu>Værktøjer</guimenu><guisubmenu>Stavning</guisubmenu></menuchoice>. Du kan bruge et antal forskellige varianter af stavekontrol: </para>
<variablelist>
<varlistentry>
<term><guimenuitem>Stavekontrol...</guimenuitem></term>
<listitem>
<para>Dette er et generisk kald af en dialog, hvor du kan vælge stavekontrollens tilstand og sætte en standardtilstand. Dette startes med <keycombo action="simul">&Ctrl;<keycap>I</keycap> </keycombo>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek alt...</guimenuitem></term>
<listitem>
<para>Stavekontrol af alle beskeder i filen. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek fra markørens position...</guimenuitem></term>
<listitem>
<para>Start stavekontrol ved positionen i den aktuelle besked og gå fremad mod enden af filen. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek denne...</guimenuitem></term>
<listitem>
<para>Stavekontrol kun af denne besked. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><guimenuitem>Tjek markeret tekst...</guimenuitem></term>
<listitem>
<para>Hvis der er en markeret tekst i <acronym>msgstr</acronym>-editoren, er denne valgmulighed tilstede og den vil kun udføre stavekontrol på denne tekst. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="kbabel-tags">
<title>Oversættelse af &XML;, <acronym>HTML</acronym>, ...</title>
<para>Opmarkeringssprog bruges stadig mere i &GUI;. &kde;-projektet bruger også <acronym>PO</acronym>-filer til at oversætte DocBook dokumentationsfiler (som også er et opmarkeringssprog). &kbabel; indeholder en hel del funktionalitet til at understøtte denne tendens. </para>
<note>
<para>Her vil vi kun beskrive funktioner relateret til mærker brugt til selve opmarkeringen. Det andet problem introduceret bed brugen af opmarkeringssprog er oversættelse af længere tekster. Dette problem behandles ved <emphasis>diff</emphasis>-egenskaben beskrevet i <link linkend="kbabel-diff">det følgende afsnit</link>. </para>
</note>
<para>Den aktuelle udgave af &kbabel; er i stand til at finde ud af hvilke mærker der bruges i <acronym>msgid</acronym> og give nem adgang til dem ved brug af følgende handlinger fra <guimenu>Redigér</guimenu>: </para>
<variablelist>
<varlistentry>
<term>
<guimenuitem>Indsæt næste mærke</guimenuitem>
</term>
<listitem>
<para>
<action>Dette indsættet næste mærke fundet i msgid i oversættelsen. &kbabel; finder mærket der skal indsættes ved at tælle antallet af mærker fra begyndelsen af oversættelsen. </action>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<menuchoice><guimenu>Redigér</guimenu> <guisubmenu>Indsæt mærke</guisubmenu> </menuchoice>
</term>
<listitem>
<para>
<action>Denne undermenu indeholder alle de forskellige opmarkeringsmærker fundet i den originale engelske streng. Ved at vælge en af dem kan du indsætte den ved den aktuelle position i den oversatte tekst. </action>
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="kbabel-diff">
<title>Vis forskellen</title>
<para>Som vi allerede har sagt indeholder nye programmer, i forsøget på at være brugervenlige, en masse længere beskrivende tekster, inkluderende opmarkeringer. Hvis en udvikler ændrer en del af tekst, vil &GNU; gettext-system i de bedste tilfælde, beholde den gamle oversættelse og markere den som fuzzy. (I de værste tilfælde vil du miste oversættelsen fuldstændigt, afhængig af hvor meget tekst der er ændret). Dette virker o.k., hvis en <acronym>msgid</acronym> er kort, fordi du så hurtigt kan finde ændringerne. Men hvis teksten er lang nok, vil du skulle kæmpe for at finde ud af hvad der er blevet ændret (For eksempel, kan det være en meget lille ændring lavet af korrekturlæserne.) </para>
<para>For at hjælpe, kan &kbabel; blive bedt om at slå op i den oprindelige <acronym>msgid</acronym> og vise forskellen. Ændringerne vises grafisk i vinduet for den <guilabel>Originale streng</guilabel>. Den nøjagtige metode kan sættes i <link linkend="preferences-editor-appearance">&kbabel;'s indstillingsdialog</link>. <menuchoice><guimenu>Værktøjer</guimenu> <guisubmenu>Diff</guisubmenu> <guimenuitem>Vis Diff</guimenuitem> </menuchoice> vil vise de forskelle der er fundet. For at se den aktuelle tekst uden at være blandet med den tidligere bruges <menuchoice><guimenu>Værktøjer</guimenu> <guisubmenu>Diff</guisubmenu> <guimenuitem>Vis original tekst</guimenuitem> </menuchoice>. </para>
<para>Du kan slå automatisk opslag af forskelle til og fra ved at vælge <menuchoice><guimenu>Værktøjer</guimenu> <guisubmenu>Diff</guisubmenu> <guimenuitem>Diff-tilstand</guimenuitem> </menuchoice>. Når diff-tilstanden er til, starter forskelssøgningen når du går til en ny besked. </para>
<para>Som altid kan du bruge forskellige kilder til at finde den gamle version af teksten, der alle sættes i <link linkend="preferences-diffmode">&kbabel;'s indstillingsdialog</link>: </para>
<variablelist>
<varlistentry>
<term>Oversættelsesdatabase</term>
<listitem>
<para>Du kan bruge oversættelsesdatabasen til opslag af forskelle. Vi anbefaler stærkt at automatisk gemning af nyligt oversatte beskeder i oversættelsesdatabasen er slået til i <link linkend="database-fill"> Oversættelsesdatabasens indstillingsdialog</link>. Denne tilstand kan slås til ved <guilabel>Brug beskeder fra oversættelsesdatabase</guilabel>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>Træ af de gamle filer</term>
<listitem>
<para>Dette vil kun blive brugt hvis søgning i oversættelsesdatabasen er slået fra. Ved at sætte <guilabel>Basismappe for diff-filer</guilabel> kan du navigere &kbabel; til den fil der skal bruges til forskellen. Den tager den relative sti af den åbnede fil og bruger denne relative sti i mappen der er angivet her. Hvis der er en tilsvarende fil, vil den blive brugt. For at bruge denne metode, må du lave en kopi af gamle filer før hver opdatering. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>Manuelt valgt fil</term>
<listitem>
<para>Hvis foregående mulighed ikke virker rigtigt, kan du altid sæt forskelsfilen manuelt ved at vælge <menuchoice> <guimenu>Værktøjer</guimenu><guisubmenu>Diff</guisubmenu> <guimenuitem>Åbn fil for Diff</guimenuitem></menuchoice>. </para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para>Forskelsopslag er ikke altid akkurate, fordi <acronym>PO</acronym>-filen ikke indeholder nogen reference til den originale besked. </para>
</note>
</sect2>
</sect1>
<sect1 id="kbabel-pluralforms">
<title>Flertalsformer</title>
<para>Idet flertalsformer er et ret kompliceret problem, bruger vi et helt afsnit til deres understøttelse i &kbabel;. </para>
<note><para>Dette afsnittet handler om &kde;'s flertalsformer (for at være præcis, i &kde; version 3). Fra &kbabel; version 1.11 (KDE 3.5) og fremad, skal &kbabel; også kunne læse, redigere og gemme &GNU;-gettext pluralformer. </para></note>
<para>Hvert sprog, som &kde; bliver oversat til, må have et rigtigt antal flertalsformer sat. Dette gøres ved at oversætte en specifik indgang i <filename>tdelibs.po</filename>. Antallet sættes ved at vælge navnet på et sprog, som bruger det samme antal <emphasis>regelsæt</emphasis> for at finde den rigtige flertalsform. Den opdaterede liste af mulige værdier kan findes i tdelibs kildekode, i filen <filename>tdecore/tdelocale.cpp</filename>. </para>
<note><para>&GNU;-gettext tillader at antal og type af flertalsformer defineres med en formel, og at indstille formlen uafhængigt for hver PO-fil. &kde; kan kun definere antallet og typen af flertalsformer en gang i tdelibs. </para></note>
<para>&kde;'s flertalsformer er angivet som kommentar <userinput>_n:</userinput> (inklusive efterfølgende mellemrum) der indeholder <literal>%n</literal>-argumentet. Dette argument bruges så i beskeden selv og det kontrollerer hvilken flertalsform i dit sprog der skal bruges afhængig af reglerne for dit sprog. </para>
<para>oversættelsen af en flertalsform-meddelelse skal have et særligt format. Den skal indeholde det rette antal oversættelser (en for hver flertalsform) adskilt af et nylinje-tegn <literal>\n</literal>, <emphasis>uden</emphasis> noget <userinput>_n:</userinput> (også uden mellemrum). For eksempel, skal <quote>_n: Selected 1 file\nSelected %n files</quote> oversat til slovakisk være: </para>
<programlisting>Vybraný %n súbor\n
Vybrané %n súbory\n
Vybraných %n súborov
</programlisting>
<para>For at tjekke om din oversættelse indeholder det rigtige antal flertalsformer, bruges <menuchoice><guimenu>Værktøjer</guimenu> <guisubmenu>Validering </guisubmenu> <guimenuitem>Tjek flertalsformer (kun KDE)</guimenuitem> </menuchoice>-menuen. </para>
</sect1>
</chapter>
<!--
Local Variables:
mode: xml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:
vim:tabstop=2:shiftwidth=2:expandtab
-->
|