Fix for UBSan build
[platform/upstream/doxygen.git] / src / translator_dk.h
1 /*-*- c-basic-offset: 2; tab-width: 8 -*-*/
2 /******************************************************************************
3  *
4  *
5  *
6  * Copyright (C) 1997-2012 by Dimitri van Heesch.
7  *
8  * Permission to use, copy, modify, and distribute this software and its
9  * documentation under the terms of the GNU General Public License is hereby
10  * granted. No representations are made about the suitability of this software
11  * for any purpose. It is provided "as is" without express or implied warranty.
12  * See the GNU General Public License for more details.
13  *
14  * Documents produced by Doxygen are derivative works derived from the
15  * input used in their production; they are not affected by this license.
16  *
17  */
18  /*! @file
19   * @brief ´Danish translation
20   */
21
22 /*
23  * Danish translation by
24  * Erik Søe Sørensen <eriksoe@daimi.au.dk>
25  *
26  * First version (not complete) for Doxygen 1.2.7
27  * Extended and revised for Doxygen 1.3
28  * Extended and revised for Doxygen 1.3.4
29  * Extended and revised for Doxygen 1.3.8
30  */
31
32 /*  Translator's notes:
33
34         Oversættelseskonventioner:
35         (Konventioner for konventioner:
36           '?'    angiver oversættelser, jeg har været i tvivl om
37           '??'   angiver tvivlsomme oversættelser
38           '..?'  angiver ord, der endnu ikke er fundet en oversættelse til
39           '(do.)' angiver ord, der med vilje ikke er oversat, idet jeg selv
40              overvejende bruger det engelske udtryk
41           '(-> _)' angiver ord, der er fundet en oversættelse til, men som jeg
42                 vægrer mig ved at oversætte.
43           'KLID:_' angiver ord, hvor jeg med overlæg har rettet mig efter
44                 KLID.dk's oversættelsesguide (enig eller ej).
45         )
46         bug -> 'kendt fejl'
47         class -> klasse
48         compound -> 'sammensat type'
49         constructor -> konstruktør ?
50         destructor -> destruktør ?
51         directory -> KLID:katalog (kunne også være 'bibliotek','mappe','folder')
52         event -> begivenhed ?
53         exception (-> undtagelse ?)
54         friend ..?
55         interface -> grænseflade ?
56         member -> medlem (TODO)
57         namespace -> (do.)
58         overloaded -> KLID:overdefineret
59         private -> privat
60         property -> egenskab?
61         protected -> beskyttet ??
62         public -> offentlig
63         reference(vb) -> "indeholde referencer til" (?)
64         slot ..?
65         source code -> kildekode
66         struct -> datastruktur
67         template (-> skabelon ?)
68         typedef -> typedefinition (?)
69         todo -> (do.)
70         union ..?
71
72         Specielle forbindelser:
73         'Inheritance diagram' -> Stamtræ  (selvom Nedarvningsdiagram også gik an)
74         
75
76         -----
77
78         (Konstruktivt) input modtages med glæde!
79         -- Erik Søe Sørensen <eriksoe@daimi.au.dk>
80
81
82         links -> (links.)
83         -- Poul-Erik Hansen
84
85  */
86
87 #ifndef TRANSLATOR_DK_H
88 #define TRANSLATOR_DK_H
89
90 class TranslatorDanish : public TranslatorAdapter_1_8_0
91 {
92   public:
93
94     // --- Language control methods -------------------
95
96     /*! Used for identification of the language. The identification
97      * should not be translated. It should be replaced by the name
98      * of the language in English using lower-case characters only
99      * (e.g. "czech", "japanese", "russian", etc.). It should be equal to
100      * the identification used in language.cpp.
101      */
102     virtual QCString idLanguage()
103     { return "danish"; }
104
105     /*! Used to get the LaTeX command(s) for the language support.
106      *  This method should return string with commands that switch
107      *  LaTeX to the desired language.  For example
108      *  <pre>"\\usepackage[german]{babel}\n"
109      *  </pre>
110      *  or
111      *  <pre>"\\usepackage{polski}\n"
112      *  "\\usepackage[latin2]{inputenc}\n"
113      *  "\\usepackage[T1]{fontenc}\n"
114      *  </pre>
115      */
116     virtual QCString latexLanguageSupportCommand()
117     {
118       return
119         "\\usepackage[danish]{babel}\n"
120         "\\usepackage[T1]{fontenc}\n";
121     }
122
123     /*! return the language charset. This will be used for the HTML output */
124     virtual QCString idLanguageCharset()
125     {
126       return "iso-8859-1";
127     }
128
129     // --- Language translation methods -------------------
130
131     /*! used in the compound documentation before a list of related functions. */
132     virtual QCString trRelatedFunctions()
133     { return "Relaterede funktioner"; }
134
135     /*! subscript for the related functions. */
136     virtual QCString trRelatedSubscript()
137     { return "(Bemærk at disse ikke er medlems-funktioner.)"; }
138
139     /*! header that is put before the detailed description of files,
140          * classes and namespaces. */
141     virtual QCString trDetailedDescription()
142     { return "Detaljeret beskrivelse"; }
143
144     /*! header that is put before the list of typedefs. */
145     virtual QCString trMemberTypedefDocumentation()
146     { return "Dokumentation af medlems-typedefinitioner"; }
147
148     /*! header that is put before the list of enumerations. */
149     virtual QCString trMemberEnumerationDocumentation()
150     { return "Dokumentation af medlems-enumerationer"; }
151         // medlems-enumerationer -> 'indeholdte enumerationer'
152
153     /*! header that is put before the list of member functions. */
154     virtual QCString trMemberFunctionDocumentation()
155     { return "Dokumentation af medlemsfunktioner"; }
156
157     /*! header that is put before the list of member attributes. */
158     virtual QCString trMemberDataDocumentation()
159     {
160       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
161         return "Felt-dokumentation";
162       } else {
163         return "Dokumentation af feltvariable";
164       }
165     }
166
167     /*! this is the text of a link put after brief descriptions. */
168     virtual QCString trMore()
169     { return "Mere..."; }
170
171     /*! put in the class documentation */
172     virtual QCString trListOfAllMembers()
173     { return "Liste over alle medlemmer"; }
174
175     /*! used as the title of the "list of all members" page of a class */
176     virtual QCString trMemberList()
177     { return "Liste over medlemmer"; }
178
179     /*! this is the first part of a sentence that is followed by a class name */
180     virtual QCString trThisIsTheListOfAllMembers()
181     { return "Dette er den komplette liste over medlemmer i "; }
182
183     /*! this is the remainder of the sentence after the class name */
184     virtual QCString trIncludingInheritedMembers()
185     { return ", inklusive alle nedarvede medlemmer."; }
186
187     /*! this is put at the author sections at the bottom of man pages.
188      *  parameter s is name of the project name.
189      */
190     virtual QCString trGeneratedAutomatically(const char *s)
191     { QCString result="Automatisk genereret af Doxygen";
192       if (s) result+=(QCString)" for "+s;
193       result+=" ud fra kildekoden.";
194       return result;
195     }
196
197     /*! put after an enum name in the list of all members */
198     virtual QCString trEnumName()
199     { return "enumerationsnavn"; }
200
201     /*! put after an enum value in the list of all members */
202     virtual QCString trEnumValue()
203     { return "enumerationsværdi"; }
204
205     /*! put after an undocumented member in the list of all members */
206     virtual QCString trDefinedIn()
207     { return "defineret i"; }
208
209     // quick reference sections
210
211     /*! This is put above each page as a link to the list of all groups of
212      *  compounds or files (see the \\group command).
213      */
214     virtual QCString trModules()
215     { return "Moduler"; }
216
217     /*! This is put above each page as a link to the class hierarchy */
218     virtual QCString trClassHierarchy()
219     { return "Klassehierarki"; }
220
221     /*! This is put above each page as a link to the list of annotated classes */
222     virtual QCString trCompoundList()
223     {
224       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
225         return "Datastrukturer";
226       } else {
227         return "Oversigt over sammensatte typer";
228       }
229     }
230
231     /*! This is put above each page as a link to the list of documented files */
232     virtual QCString trFileList()
233     { return "Filoversigt"; }
234
235     /*! This is put above each page as a link to all members of compounds. */
236     virtual QCString trCompoundMembers()
237     {
238       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
239         return "Data-felter";
240       } else {
241         return "Felter i sammensatte typer";
242       }
243     }
244
245     /*! This is put above each page as a link to all members of files. */
246     virtual QCString trFileMembers()
247     {
248       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
249         return "Globale symboler";
250       } else {
251         return "Placering i filer"; // Fil-medlemmer"; //TODO
252         //"Globale definitioner" ?
253       }
254     }
255
256     /*! This is put above each page as a link to all related pages. */
257     virtual QCString trRelatedPages()
258     { return "Relaterede sider"; }
259
260     /*! This is put above each page as a link to all examples. */
261     virtual QCString trExamples()
262     { return "Eksempler"; }
263
264     /*! This is put above each page as a link to the search engine. */
265     virtual QCString trSearch()
266     { return "Søg"; }
267
268     /*! This is an introduction to the class hierarchy. */
269     virtual QCString trClassHierarchyDescription()
270     { return "Denne nedarvningsliste er sorteret næsten - "
271              "men ikke nødvendigvis helt - alfabetisk:";
272     }
273
274     /*! This is an introduction to the list with all files. */
275     virtual QCString trFileListDescription(bool extractAll)
276     {
277       QCString result="Her er en liste over alle ";
278       if (!extractAll) result+="dokumenterede ";
279       result+="filer med korte beskrivelser:";
280       return result;
281     }
282
283     /*! This is an introduction to the annotated compound list. */
284     virtual QCString trCompoundListDescription()
285     {
286
287       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
288         return "Her er datastrukturerne med korte beskrivelser:";
289       } else {
290         return "Her er klasserne, datastrukturerne, "
291                "unionerne og grænsefladerne med korte beskrivelser:";
292       }
293     }
294
295     /*! This is an introduction to the page with all class members. */
296     virtual QCString trCompoundMembersDescription(bool extractAll)
297     {
298       QCString result="Her er en liste over alle ";
299       if (!extractAll) {
300         result+="dokumenterede ";
301       }
302       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
303         result+="felter i datastrukturer og unioner";
304       } else {
305         result+="klassemedlemmer";
306       }
307       result+=" med links til ";
308       if (!extractAll) {
309         if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
310           result+="datastruktur/unions-dokumentationen for hvert felt:";
311         } else {
312           result+="klassedokumentationen for hvert medlem:";
313         }
314       } else {
315         if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
316           result+="de datastrukturer/unioner, de hører til:";
317         } else {
318           result+="de klasser, de hører til:";
319         }
320       }
321       return result;
322     }
323
324     /*! This is an introduction to the page with all file members. */
325     virtual QCString trFileMembersDescription(bool extractAll)
326     {
327       QCString result="Her er en liste over alle ";
328       if (!extractAll) result+="dokumenterede ";
329
330       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
331         result+="funktioner, variable, #defines, enumerationer "
332             "og typedefinitioner";
333       } else {
334         result+="fil-medlemmer";
335       }
336       result+=", med links til ";
337       if (extractAll)
338         result+="de filer, de tilhører:";
339       else
340         result+="deres dokumentation:";
341       return result;
342     }
343
344     /*! This is an introduction to the page with the list of all examples */
345     virtual QCString trExamplesDescription()
346     { return "Her er en liste over alle eksempler:"; }
347
348     /*! This is an introduction to the page with the list of related pages */
349     virtual QCString trRelatedPagesDescription()
350     { return "Her er en liste over alle relaterede dokumentationssider:"; }
351
352     /*! This is an introduction to the page with the list of class/file groups */
353     virtual QCString trModulesDescription()
354     { return "Her er en liste over alle moduler:"; }
355
356     /*! This is used in HTML as the title of index.html. */
357     virtual QCString trDocumentation()
358     { return "Dokumentation"; }
359
360     /*! This is used in LaTeX as the title of the chapter with the
361      * index of all groups.
362      */
363     virtual QCString trModuleIndex()
364     { return "Modul-indeks"; }
365
366     /*! This is used in LaTeX as the title of the chapter with the
367      * class hierarchy.
368      */
369     virtual QCString trHierarchicalIndex()
370     { return "Hierarkisk indeks"; }
371
372     /*! This is used in LaTeX as the title of the chapter with the
373      * annotated compound index.
374      */
375     virtual QCString trCompoundIndex()
376     {
377       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
378         return "Indeks over datastrukturer";
379       } else {
380         return "Indeks over sammensatte typer";
381       }
382     }
383
384     /*! This is used in LaTeX as the title of the chapter with the
385      * list of all files.
386      */
387     virtual QCString trFileIndex()
388     { return "Fil-indeks"; }
389
390     /*! This is used in LaTeX as the title of the chapter containing
391      *  the documentation of all groups.
392      */
393     virtual QCString trModuleDocumentation()
394     { return "Modul-dokumentation"; }
395
396     /*! This is used in LaTeX as the title of the chapter containing
397      *  the documentation of all classes, structs and unions.
398      */
399     virtual QCString trClassDocumentation()
400     {
401       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
402         return "Datastruktur-documentation";
403       } else {
404         return "Klasse-dokumentation";
405       }
406     }
407
408     /*! This is used in LaTeX as the title of the chapter containing
409      *  the documentation of all files.
410      */
411     virtual QCString trFileDocumentation()
412     { return "Fil-dokumentation"; }
413
414     /*! This is used in LaTeX as the title of the chapter containing
415      *  the documentation of all examples.
416      */
417     virtual QCString trExampleDocumentation()
418     { return "Eksempel-dokumentation"; }
419
420     /*! This is used in LaTeX as the title of the chapter containing
421      *  the documentation of all related pages.
422      */
423     virtual QCString trPageDocumentation()
424     { return "Side-dokumentation"; }
425
426     /*! This is used in LaTeX as the title of the document */
427     virtual QCString trReferenceManual()
428     { return "Referencemanual"; }
429
430     /*! This is used in the documentation of a file as a header before the
431      *  list of defines
432      */
433     virtual QCString trDefines()
434     { return "#Defines"; }
435
436     /*! This is used in the documentation of a file as a header before the
437      *  list of function prototypes
438      */
439     virtual QCString trFuncProtos()
440     { return "Funktionsprototyper"; }
441
442     /*! This is used in the documentation of a file as a header before the
443      *  list of typedefs
444      */
445     virtual QCString trTypedefs()
446     { return "Typedefinitioner"; }
447
448     /*! This is used in the documentation of a file as a header before the
449      *  list of enumerations
450      */
451     virtual QCString trEnumerations()
452     { return "Enumerationer"; }
453
454     /*! This is used in the documentation of a file as a header before the
455      *  list of (global) functions
456      */
457     virtual QCString trFunctions()
458     { return "Funktioner"; }
459
460     /*! This is used in the documentation of a file as a header before the
461      *  list of (global) variables
462      */
463     virtual QCString trVariables()
464     { return "Variable"; }
465
466     /*! This is used in the documentation of a file as a header before the
467      *  list of (global) variables
468      */
469     virtual QCString trEnumerationValues()
470     { return "Enumerationsværdier"; }
471
472     /*! This is used in the documentation of a file before the list of
473      *  documentation blocks for defines
474      */
475     virtual QCString trDefineDocumentation()
476     { return "#Define-dokumentation"; }
477
478     /*! This is used in the documentation of a file/namespace before the list
479      *  of documentation blocks for function prototypes
480      */
481     virtual QCString trFunctionPrototypeDocumentation()
482     { return "Dokumentation af funktionsprototyper"; }
483
484     /*! This is used in the documentation of a file/namespace before the list
485      *  of documentation blocks for typedefs
486      */
487     virtual QCString trTypedefDocumentation()
488     { return "Dokumentation af typedefinitioner"; }
489
490     /*! This is used in the documentation of a file/namespace before the list
491      *  of documentation blocks for enumeration types
492      */
493     virtual QCString trEnumerationTypeDocumentation()
494     { return "Dokumentation af enumerations-typer"; }
495
496     /*! This is used in the documentation of a file/namespace before the list
497      *  of documentation blocks for enumeration values
498      */
499     virtual QCString trEnumerationValueDocumentation()
500     { return "Dokumentation af enumerations-værdier"; }
501
502     /*! This is used in the documentation of a file/namespace before the list
503      *  of documentation blocks for functions
504      */
505     virtual QCString trFunctionDocumentation()
506     { return "Funktions-dokumentation"; }
507
508     /*! This is used in the documentation of a file/namespace before the list
509      *  of documentation blocks for variables
510      */
511     virtual QCString trVariableDocumentation()
512     { return "Variabel-dokumentation"; }
513
514     /*! This is used in the documentation of a file/namespace/group before
515      *  the list of links to documented compounds
516      */
517     virtual QCString trCompounds()
518     {
519       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
520         return "Datastrukturer";
521       } else {
522         return "Sammensatte typer";
523       }
524     }
525
526     /*! This is used in the standard footer of each page and indicates when
527      *  the page was generated
528      */
529     virtual QCString trGeneratedAt(const char *date,const char *projName)
530     {
531       QCString result=(QCString)"Genereret "+date;
532       if (projName) result+=(QCString)" for "+projName;
533       result+=(QCString)" af";
534       return result;
535     }
536     /*! This is part of the sentence used in the standard footer of each page.
537      */
538     virtual QCString trWrittenBy()
539     { return "skrevet af"; }
540
541     /*! this text is put before a class diagram */
542     virtual QCString trClassDiagram(const char *clName)
543     {
544       return (QCString)"Stamtræ for "+clName+":";
545     }
546
547     /*! this text is generated when the \\internal command is used. */
548     virtual QCString trForInternalUseOnly()
549     { return "Kun til intern brug."; }
550
551     /*! this text is generated when the \\warning command is used. */
552     virtual QCString trWarning()
553     { return "Advarsel"; }
554
555     /*! this text is generated when the \\version command is used. */
556     virtual QCString trVersion()
557     { return "Version"; }
558
559     /*! this text is generated when the \\date command is used. */
560     virtual QCString trDate()
561     { return "Dato"; }
562
563     /*! this text is generated when the \\return command is used. */
564     virtual QCString trReturns()
565     { return "Returnerer"; }
566
567     /*! this text is generated when the \\sa command is used. */
568     virtual QCString trSeeAlso()
569     { return "Se også"; }
570
571     /*! this text is generated when the \\param command is used. */
572     virtual QCString trParameters()
573     { return "Parametre"; }
574
575     /*! this text is generated when the \\exception command is used. */
576     virtual QCString trExceptions()
577     { return "Undtagelser"; }    // "Exceptions"
578
579     /*! this text is used in the title page of a LaTeX document. */
580     virtual QCString trGeneratedBy()
581     { return "Genereret af"; }
582
583 //////////////////////////////////////////////////////////////////////////
584 // new since 0.49-990307
585 //////////////////////////////////////////////////////////////////////////
586
587     /*! used as the title of page containing all the index of all namespaces. */
588     virtual QCString trNamespaceList()
589     { return "Oversigt over namespaces"; }
590
591     /*! used as an introduction to the namespace list */
592     virtual QCString trNamespaceListDescription(bool extractAll)
593     {
594       QCString result="Her er en liste over alle ";
595       if (!extractAll) result+="dokumenterede ";
596       result+="namespaces med korte beskrivelser:";
597       return result;
598     }
599
600     /*! used in the class documentation as a header before the list of all
601      *  friends of a class
602      */
603     virtual QCString trFriends()
604     { return "Friends"; }
605
606 //////////////////////////////////////////////////////////////////////////
607 // new since 0.49-990405
608 //////////////////////////////////////////////////////////////////////////
609
610     /*! used in the class documentation as a header before the list of all
611      * related classes
612      */
613     virtual QCString trRelatedFunctionDocumentation()
614     { return "Dokumentation af friends og af relaterede funktioner"; }
615
616 //////////////////////////////////////////////////////////////////////////
617 // new since 0.49-990425
618 //////////////////////////////////////////////////////////////////////////
619
620     /*! used as the title of the HTML page of a class/struct/union */
621     virtual QCString trCompoundReference(const char *clName,
622                                     ClassDef::CompoundType compType,
623                                     bool isTemplate)
624     {
625       QCString result=(QCString)clName+" ";
626       switch(compType)
627       {
628         case ClassDef::Class:      result+=" Klasse-"; break;
629         case ClassDef::Struct:     result+=" Datastruktur-"; break;
630         case ClassDef::Union:      result+=" Union-"; break;
631         case ClassDef::Interface:  result+=" Grænseflade-"; break;
632         case ClassDef::Protocol:   result+=" Protokol-"; break;
633         case ClassDef::Category:   result+=" Kategori-"; break; // " Category-"
634         case ClassDef::Exception:  result+=" Undtagelse-"; break;   //  " Exception"
635       }
636       if (isTemplate) result+="skabelon-";  // "template-"
637       result+="reference";
638       return result;
639     }
640
641     /*! used as the title of the HTML page of a file */
642     virtual QCString trFileReference(const char *fileName)
643     {
644       QCString result=fileName;
645       result+=" filreference";
646       return result;
647     }
648
649     /*! used as the title of the HTML page of a namespace */
650     virtual QCString trNamespaceReference(const char *namespaceName)
651     {
652       QCString result=namespaceName;
653       result+=" namespace-reference";
654       return result;
655     }
656
657     virtual QCString trPublicMembers()
658     { return "Offentlige metoder"; }
659     virtual QCString trPublicSlots()
660     { return "Offentlige slots"; }
661     virtual QCString trSignals()
662     { return "Signaler"; }
663     virtual QCString trStaticPublicMembers()
664     { return "Statiske, offentlige metoder"; }
665     virtual QCString trProtectedMembers()
666     { return "Beskyttede metoder"; }
667     virtual QCString trProtectedSlots()
668     { return "Beskyttede slots"; }
669     virtual QCString trStaticProtectedMembers()
670     { return "Statiske, beskyttede metoder"; }
671     virtual QCString trPrivateMembers()
672     { return "Private metoder"; }
673     virtual QCString trPrivateSlots()
674     { return "Private slots"; }
675     virtual QCString trStaticPrivateMembers()
676     { return "Statiske, private metoder"; }
677
678     /*! this function is used to produce a comma-separated list of items.
679      *  use generateMarker(i) to indicate where item i should be put.
680      */
681     virtual QCString trWriteList(int numEntries)
682     {
683       QCString result;
684       int i;
685       // the inherits list contain `numEntries' classes
686       for (i=0;i<numEntries;i++) {
687         // use generateMarker to generate placeholders for the class links!
688         result+=generateMarker(i); // generate marker for entry i in the list
689                                    // (order is left to right)
690
691         if (i!=numEntries-1) { // not the last entry, so we need a separator
692           if (i<numEntries-2) // not the fore last entry
693             result+=", ";
694           else                // the fore last entry
695             result+=" og ";
696         }
697       }
698       return result;
699     }
700
701     /*! used in class documentation to produce a list of base classes,
702      *  if class diagrams are disabled.
703      */
704     virtual QCString trInheritsList(int numEntries)
705     {
706       return "Nedarver "+trWriteList(numEntries)+".";
707     }
708
709     /*! used in class documentation to produce a list of super classes,
710      *  if class diagrams are disabled.
711      */
712     virtual QCString trInheritedByList(int numEntries)
713     {
714       return "Nedarvet af "+trWriteList(numEntries)+".";
715     }
716
717     /*! used in member documentation blocks to produce a list of
718      *  members that are hidden by this one.
719      */
720     virtual QCString trReimplementedFromList(int numEntries)
721     {
722       return "Overskriver metode fra "+trWriteList(numEntries)+".";
723     }
724
725     /*! used in member documentation blocks to produce a list of
726      *  all member that overwrite the implementation of this member.
727      */
728     virtual QCString trReimplementedInList(int numEntries)
729     {
730       return "Reimplementeret i "+trWriteList(numEntries)+".";
731     }
732
733     /*! This is put above each page as a link to all members of namespaces. */
734     virtual QCString trNamespaceMembers()
735     { return "Namespace-medlemmer"; }
736
737     /*! This is an introduction to the page with all namespace members */
738     virtual QCString trNamespaceMemberDescription(bool extractAll)
739     {
740       QCString result="Her er en liste over alle ";
741       if (!extractAll) result+="dokumenterede ";
742       result+="namespace-medlemmer med links til ";
743       if (extractAll)
744         result+="namespace-dokumentationen for hvert medlem:";
745       else
746         result+="det namespace, de hører til:";
747       return result;
748     }
749     /*! This is used in LaTeX as the title of the chapter with the
750      *  index of all namespaces.
751      */
752     virtual QCString trNamespaceIndex()
753     { return "Namespace-indeks"; }
754
755     /*! This is used in LaTeX as the title of the chapter containing
756      *  the documentation of all namespaces.
757      */
758     virtual QCString trNamespaceDocumentation()
759     { return "Namespace-dokumentation"; }
760
761 //////////////////////////////////////////////////////////////////////////
762 // new since 0.49-990522
763 //////////////////////////////////////////////////////////////////////////
764
765     /*! This is used in the documentation before the list of all
766      *  namespaces in a file.
767      */
768     virtual QCString trNamespaces()
769     { return "Namespaces"; }
770
771 //////////////////////////////////////////////////////////////////////////
772 // new since 0.49-990728
773 //////////////////////////////////////////////////////////////////////////
774
775     /*! This is put at the bottom of a class documentation page and is
776      *  followed by a list of files that were used to generate the page.
777      */
778     virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
779         bool single)
780     { // here s is one of " Class", " Struct" or " Union"
781       // single is true implies a single file
782       QCString result=(QCString)"Dokumentationen for denne ";
783       switch(compType)
784       {
785         case ClassDef::Class:      result+="klasse"; break;
786         case ClassDef::Struct:     result+="datastruktur"; break;
787         case ClassDef::Union:      result+="union"; break;
788         case ClassDef::Interface:  result+="grænseflade"; break;
789         case ClassDef::Protocol:   result+="protokol"; break; // "protocol"
790         case ClassDef::Category:   result+="kategori"; break; // "category"
791         case ClassDef::Exception:  result+="undtagelse"; break;  // "exception"
792       }
793       result+=" blev genereret ud fra fil";
794       if (single) result+="en:"; else result+="erne:";
795       return result;
796     }
797
798     /*! This is in the (quick) index as a link to the alphabetical compound
799      * list.
800      */
801     virtual QCString trAlphabeticalList()
802     { return "Alfabetisk oversigt"; }
803
804 //////////////////////////////////////////////////////////////////////////
805 // new since 0.49-990901
806 //////////////////////////////////////////////////////////////////////////
807
808     /*! This is used as the heading text for the retval command. */
809     virtual QCString trReturnValues()
810     { return "Returværdier"; }
811
812     /*! This is in the (quick) index as a link to the main page (index.html)
813      */
814     virtual QCString trMainPage()
815     { return "Hovedside"; }
816
817     /*! This is used in references to page that are put in the LaTeX
818      *  documentation. It should be an abbreviation of the word page.
819      */
820     virtual QCString trPageAbbreviation()
821     { return "s."; }
822
823 //////////////////////////////////////////////////////////////////////////
824 // new since 0.49-991003
825 //////////////////////////////////////////////////////////////////////////
826
827     virtual QCString trDefinedAtLineInSourceFile()
828     {
829       return "Defineret på linje @0 i filen @1.";
830     }
831
832     virtual QCString trDefinedInSourceFile()
833     {
834       return "Defineret i filen @0.";
835     }
836
837 //////////////////////////////////////////////////////////////////////////
838 // new since 0.49-991205
839 //////////////////////////////////////////////////////////////////////////
840
841     virtual QCString trDeprecated()
842     {
843       return "Frarådes - fortidslevn"; // ?? - What is the context?
844           // "Ugleset" :)
845     }
846
847 //////////////////////////////////////////////////////////////////////////
848 // new since 1.0.0
849 //////////////////////////////////////////////////////////////////////////
850
851     /*! this text is put before a collaboration diagram */
852     virtual QCString trCollaborationDiagram(const char *clName)
853     {
854       return (QCString)"Samarbejdsdiagram for "+clName+":";
855     }
856     /*! this text is put before an include dependency graph */
857     virtual QCString trInclDepGraph(const char *fName)
858     {
859       return (QCString)"Inklusions-afhængighedsgraf for "+fName+":";
860     }
861     /*! header that is put before the list of constructor/destructors. */
862     virtual QCString trConstructorDocumentation()
863     {
864       return "Dokumentation af konstruktører og destruktører";
865       // "Constructor & Destructor dokumentation";
866     }
867
868     /*! Used in the file documentation to point to the corresponding sources. */
869     virtual QCString trGotoSourceCode()
870     { return "Hop til denne fils kildekode."; }
871     /*! Used in the file sources to point to the corresponding documentation. */
872     virtual QCString trGotoDocumentation()
873     { return "Hop til denne fils dokumentation."; }
874
875     /*! Text for the \\pre command */
876     virtual QCString trPrecondition()
877     { return "Forudsætninger (precondition)"; }
878     /*! Text for the \\post command */
879     virtual QCString trPostcondition()
880     { return "Resultat (postcondition)"; }
881     /*! Text for the \\invariant command */
882     virtual QCString trInvariant()
883     { return "Invariant"; }
884
885     /*! Text shown before a multi-line variable/enum initialization */
886     virtual QCString trInitialValue()
887     { return "Startværdi:"; }
888
889     /*! Text used the source code in the file index */
890     virtual QCString trCode()
891     { return "kildekode"; }
892     virtual QCString trGraphicalHierarchy()
893     { return "Grafisk klassehierarki"; }
894     virtual QCString trGotoGraphicalHierarchy()
895     { return "Hop til det grafiske klassehierarki"; }
896     virtual QCString trGotoTextualHierarchy()
897     { return "Hop til det tekstuelle klassehierarki"; }
898     virtual QCString trPageIndex()
899     { return "Sideindeks"; }
900
901 //////////////////////////////////////////////////////////////////////////
902 // new since 1.1.0
903 //////////////////////////////////////////////////////////////////////////
904
905     virtual QCString trNote()
906     { return "Note"; }
907     virtual QCString trPublicTypes()
908     { return "Offentlige typer"; }
909
910     virtual QCString trPublicAttribs()
911     {
912       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
913         return "Datafelter";
914       } else {
915         return "Offentlige attributter";
916       }
917     }
918
919     virtual QCString trStaticPublicAttribs()
920     { return "Statiske, offentlige attributter"; }
921     virtual QCString trProtectedTypes()
922     { return "Beskyttede typer"; }
923     virtual QCString trProtectedAttribs()
924     { return "Beskyttede attributter"; }
925     virtual QCString trStaticProtectedAttribs()
926     { return "Statiske, beskyttede attributter"; }
927     virtual QCString trPrivateTypes()
928     { return "Private typer"; }
929     virtual QCString trPrivateAttribs()
930     { return "Private attributter"; }
931     virtual QCString trStaticPrivateAttribs()
932     { return "Statiske, private attributter"; }
933
934 //////////////////////////////////////////////////////////////////////////
935 // new since 1.1.3
936 //////////////////////////////////////////////////////////////////////////
937
938     /*! Used as a marker that is put before a \\todo item */
939     virtual QCString trTodo()
940     {
941       return "Todo";
942     }
943     /*! Used as the header of the todo list */
944     virtual QCString trTodoList()
945     {
946       return "Todo-liste";
947     }
948
949 //////////////////////////////////////////////////////////////////////////
950 // new since 1.1.4
951 //////////////////////////////////////////////////////////////////////////
952
953     virtual QCString trReferencedBy()
954     {
955       return "Refereret til af";
956     }
957     virtual QCString trRemarks()
958     {
959       return "Bemærkninger";
960     }
961     virtual QCString trAttention()
962     {
963       return "OBS";
964     }
965     virtual QCString trInclByDepGraph()
966     {
967       return
968         "Denne graf viser, hvilke filer der direkte eller "
969         "indirekte inkluderer denne fil:";
970     }
971     virtual QCString trSince()
972     {
973       return "Siden";
974     }
975
976 //////////////////////////////////////////////////////////////////////////
977 // new since 1.1.5
978 //////////////////////////////////////////////////////////////////////////
979
980     /*! title of the graph legend page */
981     virtual QCString trLegendTitle()
982     {
983       return "Graf-forklaring";
984     }
985     /*! page explaining how the dot graph's should be interpreted */
986     virtual QCString trLegendDocs() //TODO
987     {
988       return
989                 "Denne side forklarer, hvordan man skal fortolke de grafer, "
990                 "der genereres af doxygen.<p>\n"
991         "Tag følgende eksempel:\n"
992         "\\code\n"
993         "/*! Klasse der er usynlig pg.a. beskæring */\n"
994         "class Invisible { };\n\n"
995         "/*! Beskåret klasse: nedarvningsrelation er skjult */\n"
996         "class Truncated : public Invisible { };\n\n"
997         "/* Klasse der ikke er dokumenteret med doxygen-kommentarer */\n"
998         "class Undocumented { };\n\n"
999         "/*! Klasse der nedarves fra offentligt */\n"
1000         "class PublicBase : public Truncated { };\n\n"
1001         "/*! En template-klasse */\n"
1002         "template<class T> class Templ { };\n\n"
1003         "/*! Klasse der nedarves fra beskyttet */\n"
1004         "class ProtectedBase { };\n\n"
1005         "/*! Klasse der nedarves fra privat */\n"
1006         "class PrivateBase { };\n\n"
1007         "/*! Klasse der bruges af Inherited-klassen */\n"
1008         "class Used { };\n\n"
1009         "/*! Klasse der nedarver en masse andre klasser */\n"
1010         "class Inherited : public PublicBase,\n"
1011         "                  protected ProtectedBase,\n"
1012         "                  private PrivateBase,\n"
1013         "                  public Undocumented,\n"
1014         "                  public Templ<int>\n"
1015         "{\n"
1016         "  private:\n"
1017         "    Used *m_usedClass;\n"
1018         "};\n"
1019         "\\endcode\n"
1020         "Hvis \\c MAX_DOT_GRAPH_HEIGHT i konfigurationsfilen "
1021         "er sat til 240, vil dette resultere i følgende graf:"
1022         "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
1023         "<p>\n"
1024         "De forskellige slags kasser i ovenstående graf har følgende "
1025                 "betydninger:\n"
1026         "<ul>\n"
1027         "<li>%En udfyldt sort kasse repræsenterer den datastruktur eller "
1028                 "klasse, grafen er genereret for.\n"
1029         "<li>%En kasse med sort kant betegner en dokumenteret datastruktur "
1030                 " eller klasse.\n"
1031         "<li>%En kasse med grå kant betegner en udokumenteret datastruktur "
1032                 " eller klasse.\n"
1033         "<li>%En kasse med rød kant betegner en dokumenteret datastruktur "
1034                 " eller klasse, for hvilken ikke alle "
1035                 "nedarvnings- og indeholdelses-relationer er vist. "
1036         "%Grafer beskæres, hvis de fylder mere end de specificerede dimensioner.\n "
1037         "</ul>\n"
1038         "Pilene har følgende betydninger:\n"
1039         "<ul>\n"
1040         "<li>%En mørkeblå pil viser en offentlig nedarvningsrelation "
1041                 "mellem to klasser.\n"
1042         "<li>%En mørkegrøn pil viser en beskyttet nedarvningsrelation.\n"
1043         "<li>%En mørkerød pil viser en privat nedarvningsrelation.\n"
1044         "<li>%En lilla, stiplet pil bruges, når en klasse er indeholdt i "
1045                 "eller benyttes af en anden klasse. "
1046         "Ved pilen står navnet på den eller de variable, gennem hvilke(n) "
1047                 "den klasse, pilen peger på, er tilgængelig.\n"
1048         "<li>%En gul, stiplet pil viser forholdet mellem en template-instans "
1049                 "og den template-klasse, den er instantieret fra."
1050         "Ved pilen står template-parametrene brugt ved instantieringen.\n"
1051         "</ul>\n";
1052     }
1053     /*! text for the link to the legend page */
1054     virtual QCString trLegend()
1055     {
1056       return "forklaring til graf";
1057     }
1058
1059 //////////////////////////////////////////////////////////////////////////
1060 // new since 1.2.0
1061 //////////////////////////////////////////////////////////////////////////
1062
1063     /*! Used as a marker that is put before a test item */
1064     virtual QCString trTest()
1065     {
1066       return "Test";
1067     }
1068     /*! Used as the header of the test list */
1069     virtual QCString trTestList()
1070     {
1071       return "Testliste";
1072     }
1073
1074 //////////////////////////////////////////////////////////////////////////
1075 // new since 1.2.1
1076 //////////////////////////////////////////////////////////////////////////
1077
1078     /*! Used as a section header for KDE-2 IDL methods */
1079     virtual QCString trDCOPMethods()
1080     {
1081       return "DCOP-metoder";
1082     }
1083
1084 //////////////////////////////////////////////////////////////////////////
1085 // new since 1.2.2
1086 //////////////////////////////////////////////////////////////////////////
1087
1088     /*! Used as a section header for IDL properties */
1089     virtual QCString trProperties()
1090     {
1091       return "Egenskaber";
1092     }
1093     /*! Used as a section header for IDL property documentation */
1094     virtual QCString trPropertyDocumentation()
1095     {
1096       return "Egenskabsdokumentation";
1097     }
1098
1099 //////////////////////////////////////////////////////////////////////////
1100 // new since 1.2.4
1101 //////////////////////////////////////////////////////////////////////////
1102
1103     /*! Used for Java classes in the summary section of Java packages */
1104     virtual QCString trClasses()
1105     {
1106       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
1107         return "Datastrukturer";
1108       } else {
1109         return "Klasser";
1110       }
1111     }
1112     /*! Used as the title of a Java package */
1113     virtual QCString trPackage(const char *name)
1114     {
1115       return (QCString)"Pakke "+name;
1116     }
1117     /*! Title of the package index page */
1118     virtual QCString trPackageList()
1119     {
1120       return "Pakkeoversigt";
1121     }
1122     /*! The description of the package index page */
1123     virtual QCString trPackageListDescription()
1124     {
1125       return
1126         "Her er en liste over pakkerne, med korte beskrivelser "
1127         "(hvor en sådan findes):";
1128     }
1129     /*! The link name in the Quick links header for each page */
1130     virtual QCString trPackages()
1131     {
1132       return "Pakker";
1133     }
1134     /*! Text shown before a multi-line define */
1135     virtual QCString trDefineValue()
1136     {
1137       return "Værdi:";
1138     }
1139
1140 //////////////////////////////////////////////////////////////////////////
1141 // new since 1.2.5
1142 //////////////////////////////////////////////////////////////////////////
1143
1144     /*! Used as a marker that is put before a \\bug item */
1145     virtual QCString trBug()
1146     {
1147       return "Kendte fejl";
1148     }
1149     /*! Used as the header of the bug list */
1150     virtual QCString trBugList()
1151     {
1152       return "Liste over kendte fejl";
1153     }
1154
1155 //////////////////////////////////////////////////////////////////////////
1156 // new since 1.2.6
1157 //////////////////////////////////////////////////////////////////////////
1158
1159     /*! Used as ansicpg for RTF file
1160          * (used table extract:)
1161          * <pre>
1162      * Charset Name       Charset Value(hex)  Codepage number
1163      * ------------------------------------------------------
1164      * ANSI_CHARSET              0 (x00)            1252
1165          * </pre>
1166          */
1167     virtual QCString trRTFansicp()
1168     {
1169       return "1252";
1170     }
1171
1172     /*! Used as ansicpg for RTF fcharset */
1173     virtual QCString trRTFCharSet()
1174     {
1175       return "0";
1176     }
1177
1178     /*! Used as header RTF general index */
1179     virtual QCString trRTFGeneralIndex()
1180     {
1181       return "Indeks";
1182     }
1183
1184     /*! This is used for translation of the word that will possibly
1185      *  be followed by a single name or by a list of names
1186      *  of the category.
1187      */
1188     virtual QCString trClass(bool first_capital, bool singular)
1189     {
1190       return createNoun(first_capital, singular, "klasse", "r");
1191     }
1192
1193     /*! This is used for translation of the word that will possibly
1194      *  be followed by a single name or by a list of names
1195      *  of the category.
1196      */
1197     virtual QCString trFile(bool first_capital, bool singular)
1198     {
1199       return createNoun(first_capital, singular, "fil", "er");
1200     }
1201
1202     /*! This is used for translation of the word that will possibly
1203      *  be followed by a single name or by a list of names
1204      *  of the category.
1205      */
1206     virtual QCString trNamespace(bool first_capital, bool singular)
1207     {
1208       return createNoun(first_capital, singular, "namespace", "s");
1209     }
1210
1211     /*! This is used for translation of the word that will possibly
1212      *  be followed by a single name or by a list of names
1213      *  of the category.
1214      */
1215     virtual QCString trGroup(bool first_capital, bool singular)
1216     {
1217       return createNoun(first_capital, singular, "gruppe", "r");
1218     }
1219
1220     /*! This is used for translation of the word that will possibly
1221      *  be followed by a single name or by a list of names
1222      *  of the category.
1223      */
1224     virtual QCString trPage(bool first_capital, bool singular)
1225     {
1226       return createNoun(first_capital, singular, "side", "r");
1227     }
1228
1229     /*! This is used for translation of the word that will possibly
1230      *  be followed by a single name or by a list of names
1231      *  of the category.
1232      */
1233     virtual QCString trMember(bool first_capital, bool singular)
1234     {
1235       return createNoun(first_capital, singular, "medlem", "mer");
1236     }
1237
1238     /*! This is used for translation of the word that will possibly
1239      *  be followed by a single name or by a list of names
1240      *  of the category.
1241      */
1242     virtual QCString trGlobal(bool first_capital, bool singular)
1243     {
1244       return createNoun(first_capital, singular, "global", "e");
1245     }
1246
1247 //////////////////////////////////////////////////////////////////////////
1248 // new since 1.2.7
1249 //////////////////////////////////////////////////////////////////////////
1250
1251     /*! This text is generated when the \\author command is used and
1252      *  for the author section in man pages. */
1253     virtual QCString trAuthor(bool first_capital, bool singular)
1254     {
1255       return createNoun(first_capital, singular, "forfatter", "e");
1256     }
1257
1258 //////////////////////////////////////////////////////////////////////////
1259 // new since 1.2.11
1260 //////////////////////////////////////////////////////////////////////////
1261
1262     /*! This text is put before the list of members referenced by a member
1263      */
1264     virtual QCString trReferences()
1265     {
1266       return "Indeholder referencer til";
1267     }
1268
1269 //////////////////////////////////////////////////////////////////////////
1270 // new since 1.2.13
1271 //////////////////////////////////////////////////////////////////////////
1272
1273     /*! used in member documentation blocks to produce a list of
1274      *  members that are implemented by this one.
1275      */
1276     virtual QCString trImplementedFromList(int numEntries)
1277     {
1278       return "Implementerer "+trWriteList(numEntries)+".";
1279     }
1280
1281     /*! used in member documentation blocks to produce a list of
1282      *  all members that implement this abstract member.
1283      */
1284     virtual QCString trImplementedInList(int numEntries)
1285     {
1286       return "Implementeret i "+trWriteList(numEntries)+".";
1287     }
1288
1289 //////////////////////////////////////////////////////////////////////////
1290 // new since 1.2.16
1291 //////////////////////////////////////////////////////////////////////////
1292
1293     /*! used in RTF documentation as a heading for the Table
1294      *  of Contents.
1295      */
1296     virtual QCString trRTFTableOfContents()
1297     {
1298       return "Indholdsfortegnelse";
1299     }
1300
1301 //////////////////////////////////////////////////////////////////////////
1302 // new since 1.2.17
1303 //////////////////////////////////////////////////////////////////////////
1304
1305     /*! Used as the header of the list of item that have been
1306      *  flagged deprecated
1307      */
1308     virtual QCString trDeprecatedList()
1309     {
1310       return "Liste over fortidslevn, hvis brug frarådes";
1311     }
1312
1313 //////////////////////////////////////////////////////////////////////////
1314 // new since 1.2.18
1315 //////////////////////////////////////////////////////////////////////////
1316
1317     /*! Used as a header for declaration section of the events found in
1318      * a C# program
1319      */
1320     virtual QCString trEvents()
1321     {
1322       return "Begivenheder";
1323     }
1324     /*! Header used for the documentation section of a class' events. */
1325     virtual QCString trEventDocumentation()
1326     {
1327       return "Begivenhedsdokumentation";
1328     }
1329
1330 //////////////////////////////////////////////////////////////////////////
1331 // new since 1.3
1332 //////////////////////////////////////////////////////////////////////////
1333
1334     /* Java: Entities with package scope... */
1335     virtual QCString trPackageTypes()
1336     { return "Typer med pakke-scope"; }
1337     virtual QCString trPackageMembers()
1338     { return "Metoder med pakke-scope"; }
1339     virtual QCString trStaticPackageMembers()
1340     { return "Statiske metoder med pakke-scope"; }
1341     virtual QCString trPackageAttribs()
1342     { return "Attributter med pakke-scope"; }
1343     virtual QCString trStaticPackageAttribs()
1344     { return "Statiske attributter med pakke-scope"; }
1345
1346 //////////////////////////////////////////////////////////////////////////
1347 // new since 1.3.1
1348 //////////////////////////////////////////////////////////////////////////
1349
1350     /*! Used in the quick index of a class/file/namespace member list page
1351      *  to link to the unfiltered list of all members.
1352      */
1353     virtual QCString trAll()
1354     {
1355       return "Alle";
1356     }
1357
1358     /*! Put in front of the call graph for a function. */
1359     virtual QCString trCallGraph()
1360     {
1361       return "Her er kald-grafen for denne funktion:";
1362     }
1363
1364 //////////////////////////////////////////////////////////////////////////
1365 // new since 1.3.3
1366 //////////////////////////////////////////////////////////////////////////
1367
1368     /*! When the search engine is enabled this text is put in the header
1369      *  of each page before the field where one can enter the text to search
1370      *  for.
1371      */
1372     virtual QCString trSearchForIndex()
1373     {
1374       return "Søg efter";
1375     }
1376
1377     /*! This string is used as the title for the page listing the search
1378      *  results.
1379      */
1380     virtual QCString trSearchResultsTitle()
1381     {
1382       return "Søgeresultater";
1383     }
1384
1385     /*! This string is put just before listing the search results. The
1386      *  text can be different depending on the number of documents found.
1387      *  Inside the text you can put the special marker $num to insert
1388      *  the number representing the actual number of search results.
1389      *  The @a numDocuments parameter can be either 0, 1 or 2, where the
1390      *  value 2 represents 2 or more matches. HTML markup is allowed inside
1391      *  the returned string.
1392      */
1393     virtual QCString trSearchResults(int numDocuments)
1394     {
1395       if (numDocuments==0) {
1396         return "Beklager - ingen dokumenter passede til din forespørgsel.";
1397       } else if (numDocuments==1) {
1398         return "Fandt <b>1</b> dokument, der passer til din forespørgsel.";
1399       } else {
1400         return
1401           "Fandt <b>$num</b> dokumenter, der passer til din forespørgsel. "
1402           "De, der passer bedst, vises først.";
1403       }
1404     }
1405
1406     /*! This string is put before the list of matched words, for each search
1407      *  result. What follows is the list of words that matched the query.
1408      */
1409     virtual QCString trSearchMatches()
1410     {
1411       return "Fundne ord:"; //translation?
1412     }
1413
1414 //////////////////////////////////////////////////////////////////////////
1415 // new since 1.3.8
1416 //////////////////////////////////////////////////////////////////////////
1417
1418     /*! This is used in HTML as the title of page with source code for
1419      *  file filename
1420      */
1421     virtual QCString trSourceFile(QCString& filename)
1422     {
1423       return "Kildefilen " + filename;
1424     }
1425
1426
1427 //////////////////////////////////////////////////////////////////////////
1428 // new since 1.3.9
1429 //////////////////////////////////////////////////////////////////////////
1430
1431     /*! This is used as the name of the chapter containing the directory
1432      *  hierarchy.
1433      */
1434     virtual QCString trDirIndex()
1435     { return "Katalogstruktur"; }
1436
1437     /*! This is used as the name of the chapter containing the documentation
1438      *  of the directories.
1439      */
1440     virtual QCString trDirDocumentation()
1441     { return "Katalog-dokumentation"; }
1442
1443     /*! This is used as the title of the directory index and also in the
1444      *  Quick links of an HTML page, to link to the directory hierarchy.
1445      */
1446     virtual QCString trDirectories()
1447     { return "Kataloger"; }
1448
1449     /*! This returns a sentences that introduces the directory hierarchy. 
1450      *  and the fact that it is sorted alphabetically per level
1451      */
1452     virtual QCString trDirDescription()
1453     { return "Denne katalogstruktur er sorteret næsten - "
1454              "men ikke nødvendigvis helt - alfabetisk:";
1455     }
1456
1457     /*! This returns the title of a directory page. The name of the
1458      *  directory is passed via \a dirName.
1459      */
1460     virtual QCString trDirReference(const char *dirName)
1461       { QCString result="Indhold af kataloget "; result+=dirName; return result;}
1462
1463     /*! This returns the word directory with or without starting capital
1464      *  (\a first_capital) and in sigular or plural form (\a singular).
1465      */
1466     virtual QCString trDir(bool first_capital, bool singular)
1467     { 
1468       return createNoun(first_capital, singular, "katalog", "er");
1469     }
1470
1471 //////////////////////////////////////////////////////////////////////////
1472 // new since 1.4.1
1473 //////////////////////////////////////////////////////////////////////////
1474
1475     /*! This text is added to the documentation when the \\overload command
1476      *  is used for a overloaded function.
1477      */
1478     virtual QCString trOverloadText()
1479     {
1480        return "Dette er en overdefineret medlemsfunktion, "
1481               "defineret af bekvemmelighedshensyn. "
1482               "Den adskiller sig kun fra den ovenstående funktion i, "
1483               "hvilke argumenter den tager.";
1484     }
1485
1486 //////////////////////////////////////////////////////////////////////////
1487 // new since 1.4.6
1488 //////////////////////////////////////////////////////////////////////////
1489
1490     /*! This is used to introduce a caller (or called-by) graph */
1491     virtual QCString trCallerGraph()
1492     {
1493       return "Her er kalder-grafen for denne funktion:";
1494     }
1495
1496     // None translated yet PEH 2010-11-27
1497     // Subroutine
1498
1499     /*! header that is put before the list of member subprograms (Fortran). */
1500     virtual QCString trMemberFunctionDocumentationFortran()
1501     { return "Medlem Funktion/Subroutine Dokumentation"; }  // "Member Function/Subroutine Documentation"
1502
1503     /*! This is used in the documentation of a file/namespace before the list 
1504      *  of documentation blocks for enumeration values
1505      */
1506     /*
1507     virtual QCString trEnumerationValueDocumentation()
1508       { return "Enumerator-dokumentation"; } //TODO?
1509 */
1510
1511
1512 //////////////////////////////////////////////////////////////////////////
1513 // new since 1.5.4 (mainly for Fortran)
1514 //////////////////////////////////////////////////////////////////////////
1515
1516     /*! This is put above each page as a link to the list of annotated data types (Fortran). */
1517     virtual QCString trCompoundListFortran()
1518     { return "Data Type Liste"; }       // "Data Types List"
1519
1520     /*! This is put above each page as a link to all members of compounds (Fortran). */
1521     virtual QCString trCompoundMembersFortran()
1522     { return "Data felter"; }   // "Data Fields"
1523
1524     /*! This is an introduction to the annotated compound list (Fortran). */
1525     virtual QCString trCompoundListDescriptionFortran()
1526     { return "Her er de datatyper med kort beskrivelse:"; }  // "Here are the data types with brief descriptions:"
1527
1528     /*! This is an introduction to the page with all data types (Fortran). */
1529     virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
1530     {
1531       QCString result="Her er en liste af alle "; // "Here is a list of all "
1532       if (!extractAll)
1533       {
1534         result+="dokumenteret ";  // "documented "
1535       }
1536       result+="datatype medlemmer"; //  "data types members"
1537       result+=" med links til ";    // " with links to "
1538       if (!extractAll)
1539       {
1540          result+="data strukturer dokumenteret for hver medlem";    // "the data structure documentation for each member"
1541       }
1542       else
1543       {
1544          result+="de datatyper som de tilhører:";  // "the data types they belong to:"
1545       }
1546       return result;
1547     }
1548
1549     /*! This is used in LaTeX as the title of the chapter with the
1550      * annotated compound index (Fortran).
1551      */
1552     virtual QCString trCompoundIndexFortran()
1553     { return "Datatype indeks"; }   // "Data Type Index"
1554
1555     /*! This is used in LaTeX as the title of the chapter containing
1556      *  the documentation of all data types (Fortran).
1557      */
1558     virtual QCString trTypeDocumentation()
1559     { return "Datatype dokumentation"; }   // "Data Type Documentation"
1560
1561     /*! This is used in the documentation of a file as a header before the
1562      *  list of (global) subprograms (Fortran).
1563      */
1564     virtual QCString trSubprograms()
1565     { return "Funktioner/Subroutiner"; } // "Functions/Subroutines"
1566
1567     /*! This is used in the documentation of a file/namespace before the list
1568      *  of documentation blocks for subprograms (Fortran)
1569      */
1570     virtual QCString trSubprogramDocumentation()
1571     { return "Funktion/Subroutine dokumentation"; } // "Function/Subroutine Documentation"
1572
1573     /*! This is used in the documentation of a file/namespace/group before
1574      *  the list of links to documented compounds (Fortran)
1575      */
1576      virtual QCString trDataTypes()
1577     { return "Datatyper"; }    // "Data Types"
1578
1579     /*! used as the title of page containing all the index of all modules (Fortran). */
1580     virtual QCString trModulesList()
1581     { return "Modulliste"; }  // "Modules List"
1582
1583     /*! used as an introduction to the modules list (Fortran) */
1584     virtual QCString trModulesListDescription(bool extractAll)
1585     {
1586       QCString result="Her er en liste over alle ";     // "Here is a list of all "
1587       if (!extractAll) result+="dokumenteret ";       // "documented "
1588       result+="moduler med kort beskrivelse:";   // "modules with brief descriptions:"
1589       return result;
1590     }
1591
1592     /*! used as the title of the HTML page of a module/type (Fortran) */
1593     virtual QCString trCompoundReferenceFortran(const char *clName,
1594                                     ClassDef::CompoundType compType,
1595                                     bool isTemplate)
1596     {
1597       QCString result=(QCString)clName;
1598       switch(compType)
1599       {
1600         case ClassDef::Class:      result+=" Modul"; break;     // " Module"
1601         case ClassDef::Struct:     result+=" Type"; break;      // " Type"
1602         case ClassDef::Union:      result+=" Union"; break;     // " Union"
1603         case ClassDef::Interface:  result+=" Grænseflade"; break; // " Interface"
1604         case ClassDef::Protocol:   result+=" Protocol"; break;      // " Protocol"
1605         case ClassDef::Category:   result+=" Kategori"; break;      // " Category"
1606         case ClassDef::Exception:  result+=" Undtagelse"; break; // " Exception"
1607       }
1608       if (isTemplate) result+=" Template";
1609       result+=" Reference";
1610       return result;
1611     }
1612
1613     /*! used as the title of the HTML page of a module (Fortran) */
1614     virtual QCString trModuleReference(const char *namespaceName)
1615     {
1616       QCString result=namespaceName;
1617       result+=" Modulreference";  // " Module Reference"
1618       return result;
1619     }
1620
1621     /*! This is put above each page as a link to all members of modules. (Fortran) */
1622     virtual QCString trModulesMembers()
1623     { return "Modulmedlemmer"; }    // "Module Members"
1624
1625     /*! This is an introduction to the page with all modules members (Fortran) */
1626     virtual QCString trModulesMemberDescription(bool extractAll)
1627     {
1628       QCString result="Her er en list over alle ";     // "Here is a list of all "
1629       if (!extractAll) result+="Dokumentet ";       // "documented "
1630       result+="modulmemlemmer med link til ";      // "module members with links to "
1631       if (extractAll)
1632       {
1633         result+="dokumentation for hvert model medlem:";    // "the module documentation for each member:"
1634       }
1635       else
1636       {
1637         result+="moduler de tilhøre:";  // "the modules they belong to:"
1638       }
1639       return result;
1640     }
1641
1642     /*! This is used in LaTeX as the title of the chapter with the
1643      *  index of all modules (Fortran).
1644      */
1645     virtual QCString trModulesIndex()
1646     { return "Modulindekser"; }     // "Modules Index"
1647
1648     /*! This is used for translation of the word that will possibly
1649      *  be followed by a single name or by a list of names
1650      *  of the category.
1651      */
1652     virtual QCString trModule(bool first_capital, bool singular)
1653     {
1654       QCString result((first_capital ? "Modul" : "modul"));   // "Module" : "module"));
1655       if (!singular)  result+="er";  // "s";
1656       return result;
1657     }
1658
1659     /*! This is put at the bottom of a module documentation page and is
1660      *  followed by a list of files that were used to generate the page.
1661      */
1662     virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
1663         bool single)
1664     {
1665       // single is true implies a single file
1666       QCString result=(QCString)"The documentation for this ";
1667       switch(compType)
1668       {
1669         case ClassDef::Class:      result+="modul"; break;        // "module"
1670         case ClassDef::Struct:     result+="type"; break;         // "type"
1671         case ClassDef::Union:      result+="union"; break;        // "union"
1672         case ClassDef::Interface:  result+="grænseflade"; break;  // "interface"
1673         case ClassDef::Protocol:   result+="protokol"; break;     // "protocol"
1674         case ClassDef::Category:   result+="kategori"; break;     // "category"
1675         case ClassDef::Exception:  result+="undtagelse"; break;   // "exception"
1676       }
1677       result+=" var lavet udfra følgende file";                   // " was generated from the following file"
1678       if (single) result+=":"; else result+="r:";                 // ":" / "s:"
1679       return result;
1680     }
1681
1682     /*! This is used for translation of the word that will possibly
1683      *  be followed by a single name or by a list of names
1684      *  of the category.
1685      */
1686     virtual QCString trType(bool first_capital, bool singular)
1687     {
1688       QCString result((first_capital ? "Type" : "type"));   // "Type" : "type"
1689       if (!singular)  result+="r";                          // "s"
1690       return result;
1691     }
1692
1693     /*! This is used for translation of the word that will possibly
1694      *  be followed by a single name or by a list of names
1695      *  of the category.
1696      */
1697     virtual QCString trSubprogram(bool first_capital, bool singular)
1698     {
1699       QCString result((first_capital ? "Subprogram" : "subprogram"));   // "Subprogram" : "subprogram"
1700       if (!singular)  result+="er";                                     // "s"
1701       return result;
1702     }
1703
1704     /*! C# Type Constraint list */
1705     virtual QCString trTypeConstraints()
1706     {
1707       return "typebegrænsninger";        // "Type Constraints"
1708     }
1709
1710 //////////////////////////////////////////////////////////////////////////
1711 // new since 1.6.0 (mainly for the new search engine)
1712 //////////////////////////////////////////////////////////////////////////
1713
1714     /*! directory relation for \a name */
1715     virtual QCString trDirRelation(const char *name)
1716     {
1717       return QCString(name)+" Relation";        // " Relation"
1718     }
1719
1720     /*! Loading message shown when loading search results */
1721     virtual QCString trLoading()
1722     {
1723       return "Indlæser...";          // "Loading..."
1724     }
1725
1726     /*! Label used for search results in the global namespace */
1727     virtual QCString trGlobalNamespace()
1728     {
1729       return "Globalt Namespace";    // "Global Namespace"
1730     }
1731
1732     /*! Message shown while searching */
1733     virtual QCString trSearching()
1734     {
1735       return "Søger...";    // "Searching..."
1736     }
1737
1738     /*! Text shown when no search results are found */
1739     virtual QCString trNoMatches()
1740     {
1741       return "Ingen fund";      // "No Matches"
1742     }
1743
1744 //////////////////////////////////////////////////////////////////////////
1745 // new since 1.6.3 (missing items for the directory pages)
1746 //////////////////////////////////////////////////////////////////////////
1747
1748     /*! introduction text for the directory dependency graph */
1749     virtual QCString trDirDependency(const char *name)
1750     {
1751       return (QCString)"Afhængighedsgraf for "+name;  // "Directory dependency graph for "
1752     }
1753
1754     /*! when clicking a directory dependency label, a page with a
1755      *  table is shown. The heading for the first column mentions the
1756      *  source file that has a relation to another file.
1757      */
1758     virtual QCString trFileIn(const char *name)
1759     {
1760       return (QCString)"File i "+name;     // "File in "
1761     }
1762
1763     /*! when clicking a directory dependency label, a page with a
1764      *  table is shown. The heading for the second column mentions the
1765      *  destination file that is included.
1766      */
1767     virtual QCString trIncludesFileIn(const char *name)
1768     {
1769       return (QCString)"Inkluderer file i "+name;    // "Includes file in "
1770     }
1771
1772     /** Compiles a date string.
1773      *  @param year Year in 4 digits
1774      *  @param month Month of the year: 1=January
1775      *  @param day Day of the Month: 1..31
1776      *  @param dayOfWeek Day of the week: 1=Monday..7=Sunday
1777      *  @param hour Hour of the day: 0..23
1778      *  @param minutes Minutes in the hour: 0..59
1779      *  @param seconds Seconds within the minute: 0..59
1780      *  @param includeTime Include time in the result string?
1781      */
1782     virtual QCString trDateTime(int year,int month,int day,int dayOfWeek,
1783                                 int hour,int minutes,int seconds,
1784                                 bool includeTime)
1785     {
1786       static const char *days[]   = { "Man","Tir","Ons","Tor","Fre","Lør","Søn" }; // { "Mon","Tue","Wed","Thu","Fri","Sat","Sun" };
1787       static const char *months[] = { "Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec" };    //  { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" };
1788       QCString sdate;
1789       sdate.sprintf("%s %s %d %d",days[dayOfWeek-1],months[month-1],day,year);
1790       if (includeTime)
1791       {
1792         QCString stime;
1793         stime.sprintf(" %.2d:%.2d:%.2d",hour,minutes,seconds);
1794         sdate+=stime;
1795       }
1796       return sdate;
1797     }
1798
1799 //////////////////////////////////////////////////////////////////////////
1800 // new since 1.7.5
1801 //////////////////////////////////////////////////////////////////////////
1802
1803     virtual QCString trCiteReferences()
1804     {
1805       return "Bibliografiske referencer"; 
1806     }
1807
1808     virtual QCString trCopyright()
1809     {
1810       return "Copyright";
1811     }
1812
1813     virtual QCString trDirDepGraph(const char *name)
1814     {
1815       return QCString("Afhængighedsgraf for katalog ")+name+":"; 
1816     }
1817
1818
1819 /*---------- For internal use: ----------------------------------------*/
1820   protected:
1821         /*! For easy flexible-noun implementation.
1822          *  \internal
1823          */
1824     QCString createNoun(bool first_capital, bool singular,
1825                         const char* base, const char* plurSuffix)
1826     {
1827       QCString result(base);
1828       if (first_capital) result.at(0) = toupper(result.at(0));
1829       if (!singular)  result+=plurSuffix;
1830       return result;
1831     }
1832 };
1833
1834 #endif