Fix for UBSan build
[platform/upstream/doxygen.git] / src / translator_vi.h
1 /******************************************************************************
2  *
3  * 
4  *
5  * Copyright (C) 1997-2012 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby 
9  * granted. No representations are made about the suitability of this software 
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17
18 #ifndef TRANSLATOR_VI_H
19 #define TRANSLATOR_VI_H
20
21 /*
22  * 17 Oct 2008 : Translation to Vietnamese by
23  *               Đặng Minh Tuấn <tuanvietkey@gmail.com>
24  *
25  */
26
27
28 /*! 
29  When defining a translator class for the new language, follow
30  the description in the documentation.  One of the steps says
31  that you should copy the translator_en.h (this) file to your
32  translator_xx.h new file.  Your new language should use the
33  Translator class as the base class.  This means that you need to
34  implement exactly the same (pure virtual) methods as the
35  TranslatorEnglish does.  Because of this, it is a good idea to
36  start with the copy of TranslatorEnglish and replace the strings
37  one by one.
38
39  It is not necessary to include "translator.h" or
40  "translator_adapter.h" here.  The files are included in the
41  language.cpp correctly.  Not including any of the mentioned
42  files frees the maintainer from thinking about whether the
43  first, the second, or both files should be included or not, and
44  why.  This holds namely for localized translators because their
45  base class is changed occasionaly to adapter classes when the
46  Translator class changes the interface, or back to the
47  Translator class (by the local maintainer) when the localized
48  translator is made up-to-date again.
49 */
50 class TranslatorVietnamese : public TranslatorAdapter_1_6_0
51 {
52   public:
53
54     // --- Language control methods -------------------
55     
56     /*! Used for identification of the language. The identification 
57      * should not be translated. It should be replaced by the name 
58      * of the language in English using lower-case characters only
59      * (e.g. "czech", "japanese", "russian", etc.). It should be equal to 
60      * the identification used in language.cpp.
61      */
62     virtual QCString idLanguage()
63     { return "vietnamese"; }
64     
65     /*! Used to get the LaTeX command(s) for the language support. 
66      *  This method should return string with commands that switch
67      *  LaTeX to the desired language.  For example 
68      *  <pre>"\\usepackage[german]{babel}\n"
69      *  </pre>
70      *  or
71      *  <pre>"\\usepackage{polski}\n"
72      *  "\\usepackage[latin2]{inputenc}\n"
73      *  "\\usepackage[T1]{fontenc}\n"
74      *  </pre>
75      * 
76      * The English LaTeX does not use such commands.  Because of this
77      * the empty string is returned in this implementation.
78      */
79     virtual QCString latexLanguageSupportCommand()
80     {
81       return "";
82     }
83
84     /*! return the language charset. This will be used for the HTML output */
85     virtual QCString idLanguageCharset()
86     {
87       return "utf-8";
88     }
89
90     // --- Language translation methods -------------------
91
92     /*! used in the compound documentation before a list of related functions. */
93     virtual QCString trRelatedFunctions()
94     { return "Những hàm liên quan"; }
95
96     /*! subscript for the related functions. */
97     virtual QCString trRelatedSubscript()
98     { return "(Chú ý những hàm này không phải là hàm thành viên.)"; }
99
100     /*! header that is put before the detailed description of files, classes and namespaces. */
101     virtual QCString trDetailedDescription()
102     { return "Mô tả chi tiết"; }
103
104     /*! header that is put before the list of typedefs. */
105     virtual QCString trMemberTypedefDocumentation()
106     { return "Thông tin về Member Typedef"; }
107     
108     /*! header that is put before the list of enumerations. */
109     virtual QCString trMemberEnumerationDocumentation()
110     { return "Thông tin về Member Enumeration"; }
111     
112     /*! header that is put before the list of member functions. */
113     virtual QCString trMemberFunctionDocumentation()
114     { return "Thông tin về hàm thành viên"; }
115     
116     /*! header that is put before the list of member attributes. */
117     virtual QCString trMemberDataDocumentation()
118     { 
119       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
120       {
121         return "Thông tin về trường"; 
122       }
123       else
124       {
125         return "Thông tin về Member Data"; 
126       }
127     }
128
129     /*! this is the text of a link put after brief descriptions. */
130     virtual QCString trMore() 
131     { return "Tiếp..."; }
132
133     /*! put in the class documentation */
134     virtual QCString trListOfAllMembers()
135     { return "Liệt kê tất cả các thành viên"; }
136
137     /*! used as the title of the "list of all members" page of a class */
138     virtual QCString trMemberList()
139     { return "Danh sách thành viên"; }
140
141     /*! this is the first part of a sentence that is followed by a class name */
142     virtual QCString trThisIsTheListOfAllMembers()
143     { return "Danh sách các thành viên đầy đủ cho "; }
144
145     /*! this is the remainder of the sentence after the class name */
146     virtual QCString trIncludingInheritedMembers()
147     { return ", cùng với tất cả các thành viên kế thừa."; }
148     
149     /*! this is put at the author sections at the bottom of man pages.
150      *  parameter s is name of the project name.
151      */
152     virtual QCString trGeneratedAutomatically(const char *s)
153     { QCString result="Được tạo ra bởi Doxygen";
154       if (s) result+=(QCString)" cho "+s;
155       result+=" từ mã nguồn."; 
156       return result;
157     }
158
159     /*! put after an enum name in the list of all members */
160     virtual QCString trEnumName()
161     { return "tên enum"; }
162     
163     /*! put after an enum value in the list of all members */
164     virtual QCString trEnumValue()
165     { return "giá trị enum"; }
166     
167     /*! put after an undocumented member in the list of all members */
168     virtual QCString trDefinedIn()
169     { return "được định nghĩa trong"; }
170
171     // quick reference sections
172
173     /*! This is put above each page as a link to the list of all groups of 
174      *  compounds or files (see the \\group command).
175      */
176     virtual QCString trModules()
177     { return "Các Modules"; }
178     
179     /*! This is put above each page as a link to the class hierarchy */
180     virtual QCString trClassHierarchy()
181     { return "Kiến trúc Class"; }
182     
183     /*! This is put above each page as a link to the list of annotated classes */
184     virtual QCString trCompoundList()
185     { 
186       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
187       {
188         return "Cấu trúc cơ sở dữ liệu (Data Structures)";
189       }
190       else
191       {
192         return "Danh mục các Class"; 
193       }
194     }
195     
196     /*! This is put above each page as a link to the list of documented files */
197     virtual QCString trFileList()
198     { return "Danh mục File"; }
199
200     /*! This is put above each page as a link to all members of compounds. */
201     virtual QCString trCompoundMembers()
202     { 
203       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
204       {
205         return "Các trường dữ liệu"; 
206       }
207       else
208       {
209         return "Các thành viên của Class"; 
210       }
211     }
212
213     /*! This is put above each page as a link to all members of files. */
214     virtual QCString trFileMembers()
215     { 
216       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
217       {
218         return "Toàn cục"; 
219       }
220       else
221       {
222         return "File thành viên"; 
223       }
224     }
225
226     /*! This is put above each page as a link to all related pages. */
227     virtual QCString trRelatedPages()
228     { return "Các trang liên quan"; }
229
230     /*! This is put above each page as a link to all examples. */
231     virtual QCString trExamples()
232     { return "Các ví dụ"; }
233
234     /*! This is put above each page as a link to the search engine. */
235     virtual QCString trSearch()
236     { return "Tìm kiếm"; }
237
238     /*! This is an introduction to the class hierarchy. */
239     virtual QCString trClassHierarchyDescription()
240     { return "Danh sách kế thừa đã được sắp xếp theo ABC, "
241              "nhưng chưa đầy đủ:";
242     }
243
244     /*! This is an introduction to the list with all files. */
245     virtual QCString trFileListDescription(bool extractAll)
246     {
247       QCString result="Danh mục đầy đủ tất cả các ";
248       if (!extractAll) result+="(đã được biên soạn) ";
249       result+="files cùng với các mô tả tóm tắt:";
250       return result;
251     }
252
253     /*! This is an introduction to the annotated compound list. */
254     virtual QCString trCompoundListDescription()
255     { 
256       
257       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
258       {
259         return "Đây là cấu trúc cơ sở dữ liệu với mô tả tóm tắt:"; 
260       }
261       else
262       {
263         return "Đây là các classes, structs, "
264                "unions và interfaces với các mô tả tóm tắt:"; 
265       }
266     }
267
268     /*! This is an introduction to the page with all class members. */
269     virtual QCString trCompoundMembersDescription(bool extractAll)
270     {
271       QCString result="Danh mục tất cả các ";
272       if (!extractAll)
273       {
274         result+="(đã được mô tả) ";
275       }
276       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
277       {
278         result+="struct và union fields";
279       }
280       else
281       {
282         result+="class members";
283       }
284       result+=" cùng với các các liên kết đến ";
285       if (!extractAll) 
286       {
287         if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
288         {
289           result+="Thông tin về struct/union cho từng trường:";
290         }
291         else
292         {
293           result+="Thông tin về class cho từng thành viên:";
294         }
295       }
296       else 
297       {
298         if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
299         {
300           result+="các structures/unions thuộc:";
301         }
302         else
303         {
304           result+="các lớp thuộc:";
305         }
306       }
307       return result;
308     }
309
310     /*! This is an introduction to the page with all file members. */
311     virtual QCString trFileMembersDescription(bool extractAll)
312     {
313       QCString result="Danh sách tất cả các ";
314       if (!extractAll) result+="(đã được mô tat) ";
315       
316       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
317       {
318         result+="functions, variables, defines, enums, và typedefs";
319       }
320       else
321       {
322         result+="các file thành viên";
323       }
324       result+=" cùng với links tới ";
325       if (extractAll) 
326         result+="các files thuộc:";
327       else 
328         result+="tài liệu:";
329       return result;
330     }
331
332     /*! This is an introduction to the page with the list of all examples */
333     virtual QCString trExamplesDescription()
334     { return "Danh sách tất cả các ví dụ:"; }
335
336     /*! This is an introduction to the page with the list of related pages */
337     virtual QCString trRelatedPagesDescription()
338     { return "Danh sách tất cả các trang Thông tin có liên quan:"; }
339
340     /*! This is an introduction to the page with the list of class/file groups */
341     virtual QCString trModulesDescription()
342     { return "Danh sách tất cả các thành viên:"; }
343
344     // index titles (the project name is prepended for these) 
345
346     /*! This is used in HTML as the title of index.html. */
347     virtual QCString trDocumentation()
348     { return "Thông tin"; }
349
350     /*! This is used in LaTeX as the title of the chapter with the 
351      * index of all groups.
352      */
353     virtual QCString trModuleIndex()
354     { return "Chỉ mục (Index) Module"; }
355
356     /*! This is used in LaTeX as the title of the chapter with the 
357      * class hierarchy.
358      */
359     virtual QCString trHierarchicalIndex()
360     { return "Hierarchical Index"; }
361
362     /*! This is used in LaTeX as the title of the chapter with the 
363      * annotated compound index.
364      */
365     virtual QCString trCompoundIndex()
366     {
367       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
368       { 
369         return "Index cấu trúc cơ sở dữ liệu";
370       }
371       else
372       {
373         return "Class Index"; 
374       }
375     }
376
377     /*! This is used in LaTeX as the title of the chapter with the
378      * list of all files.
379      */
380     virtual QCString trFileIndex() 
381     { return "File Index"; }
382
383     /*! This is used in LaTeX as the title of the chapter containing
384      *  the documentation of all groups.
385      */
386     virtual QCString trModuleDocumentation()
387     { return "Thông tin về các Module"; }
388
389     /*! This is used in LaTeX as the title of the chapter containing
390      *  the documentation of all classes, structs and unions.
391      */
392     virtual QCString trClassDocumentation()
393     { 
394       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
395       {
396         return "Thông tin về cấu trúc cơ sở dữ liệu"; 
397       }
398       else
399       {
400         return "Thông tin về Class"; 
401       }
402     }
403
404     /*! This is used in LaTeX as the title of the chapter containing
405      *  the documentation of all files.
406      */
407     virtual QCString trFileDocumentation()
408     { return "Thông tin về File"; }
409
410     /*! This is used in LaTeX as the title of the chapter containing
411      *  the documentation of all examples.
412      */
413     virtual QCString trExampleDocumentation()
414     { return "Thông tin về các ví dụ"; }
415
416     /*! This is used in LaTeX as the title of the chapter containing
417      *  the documentation of all related pages.
418      */
419     virtual QCString trPageDocumentation()
420     { return "Trang Thông tin"; }
421
422     /*! This is used in LaTeX as the title of the document */
423     virtual QCString trReferenceManual()
424     { return "Thông tin tham chiếu"; }
425     
426     /*! This is used in the documentation of a file as a header before the 
427      *  list of defines
428      */
429     virtual QCString trDefines()
430     { return "Định nghĩa"; }
431
432     /*! This is used in the documentation of a file as a header before the 
433      *  list of function prototypes
434      */
435     virtual QCString trFuncProtos()
436     { return "Function Prototypes"; }
437
438     /*! This is used in the documentation of a file as a header before the 
439      *  list of typedefs
440      */
441     virtual QCString trTypedefs()
442     { return "Typedefs"; }
443
444     /*! This is used in the documentation of a file as a header before the 
445      *  list of enumerations
446      */
447     virtual QCString trEnumerations()
448     { return "Enumerations"; }
449
450     /*! This is used in the documentation of a file as a header before the 
451      *  list of (global) functions
452      */
453     virtual QCString trFunctions()
454     { return "Các hàm"; }
455
456     /*! This is used in the documentation of a file as a header before the 
457      *  list of (global) variables
458      */
459     virtual QCString trVariables()
460     { return "Các biến"; }
461
462     /*! This is used in the documentation of a file as a header before the 
463      *  list of (global) variables
464      */
465     virtual QCString trEnumerationValues()
466     { return "Enumerator"; }
467     
468     /*! This is used in the documentation of a file before the list of
469      *  documentation blocks for defines
470      */
471     virtual QCString trDefineDocumentation()
472     { return "Thông tin về định nghĩa"; }
473
474     /*! This is used in the documentation of a file/namespace before the list 
475      *  of documentation blocks for function prototypes
476      */
477     virtual QCString trFunctionPrototypeDocumentation()
478     { return "Thông tin về Function Prototype"; }
479
480     /*! This is used in the documentation of a file/namespace before the list 
481      *  of documentation blocks for typedefs
482      */
483     virtual QCString trTypedefDocumentation()
484     { return "Thông tin về Typedef"; }
485
486     /*! This is used in the documentation of a file/namespace before the list 
487      *  of documentation blocks for enumeration types
488      */
489     virtual QCString trEnumerationTypeDocumentation()
490     { return "Thông tin về Enumeration Type"; }
491
492     /*! This is used in the documentation of a file/namespace before the list 
493      *  of documentation blocks for functions
494      */
495     virtual QCString trFunctionDocumentation()
496     { return "Thông tin về hàm"; }
497
498     /*! This is used in the documentation of a file/namespace before the list 
499      *  of documentation blocks for variables
500      */
501     virtual QCString trVariableDocumentation()
502     { return "Thông tin về các biến"; }
503
504     /*! This is used in the documentation of a file/namespace/group before 
505      *  the list of links to documented compounds
506      */
507     virtual QCString trCompounds()
508     { 
509       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
510       {
511         return "Cấu trúc cơ sở dữ liệu"; 
512       }
513       else
514       {
515         return "Classes"; 
516       }
517     }
518
519     /*! This is used in the standard footer of each page and indicates when 
520      *  the page was generated 
521      */
522     virtual QCString trGeneratedAt(const char *date,const char *projName)
523     { 
524       QCString result=(QCString)"Được biên soạn vào "+date;
525       if (projName) result+=(QCString)" cho mã nguồn dự án "+projName;
526       result+=(QCString)" bởi";
527       return result;
528     }
529     /*! This is part of the sentence used in the standard footer of each page.
530      */
531     virtual QCString trWrittenBy()
532     {
533       return "được viết bởi";
534     }
535
536     /*! this text is put before a class diagram */
537     virtual QCString trClassDiagram(const char *clName)
538     {
539       return (QCString)"Sơ đồ kế thừa cho "+clName+":";
540     }
541     
542     /*! this text is generated when the \\internal command is used. */
543     virtual QCString trForInternalUseOnly()
544     { return "Chỉ cho sử dụng nội bộ."; }
545
546     /*! this text is generated when the \\warning command is used. */
547     virtual QCString trWarning()
548     { return "Lưu ý"; }
549
550     /*! this text is generated when the \\version command is used. */
551     virtual QCString trVersion()
552     { return "Phiên bản"; }
553
554     /*! this text is generated when the \\date command is used. */
555     virtual QCString trDate()
556     { return "Ngày"; }
557
558     /*! this text is generated when the \\return command is used. */
559     virtual QCString trReturns()
560     { return "Giá trị trả về"; }
561
562     /*! this text is generated when the \\sa command is used. */
563     virtual QCString trSeeAlso()
564     { return "Xem thêm"; }
565
566     /*! this text is generated when the \\param command is used. */
567     virtual QCString trParameters()
568     { return "Các tham số"; }
569
570     /*! this text is generated when the \\exception command is used. */
571     virtual QCString trExceptions()
572     { return "Exceptions"; }
573     
574     /*! this text is used in the title page of a LaTeX document. */
575     virtual QCString trGeneratedBy()
576     { return "Được biên soạn bởi"; }
577
578 //////////////////////////////////////////////////////////////////////////
579 // new since 0.49-990307
580 //////////////////////////////////////////////////////////////////////////
581     
582     /*! used as the title of page containing all the index of all namespaces. */
583     virtual QCString trNamespaceList()
584     { return "Danh sách Namespace"; }
585
586     /*! used as an introduction to the namespace list */
587     virtual QCString trNamespaceListDescription(bool extractAll)
588     {
589       QCString result="Danh sách tất cả các ";
590       if (!extractAll) result+="(đã được biên tập) ";
591       result+="namespaces với mô tả tóm tắt:";
592       return result;
593     }
594
595     /*! used in the class documentation as a header before the list of all
596      *  friends of a class
597      */
598     virtual QCString trFriends()
599     { return "Friends"; }
600     
601 //////////////////////////////////////////////////////////////////////////
602 // new since 0.49-990405
603 //////////////////////////////////////////////////////////////////////////
604     
605     /*! used in the class documentation as a header before the list of all
606      * related classes 
607      */
608     virtual QCString trRelatedFunctionDocumentation()
609     { return "Thông tin về Friends và các hàm liên quan"; }
610     
611 //////////////////////////////////////////////////////////////////////////
612 // new since 0.49-990425
613 //////////////////////////////////////////////////////////////////////////
614
615     /*! used as the title of the HTML page of a class/struct/union */
616     virtual QCString trCompoundReference(const char *clName,
617                                     ClassDef::CompoundType compType,
618                                     bool isTemplate)
619     {
620       QCString result=(QCString)clName;
621       switch(compType)
622       {
623         case ClassDef::Class:      result+=" Class"; break;
624         case ClassDef::Struct:     result+=" Struct"; break;
625         case ClassDef::Union:      result+=" Union"; break;
626         case ClassDef::Interface:  result+=" Interface"; break;
627         case ClassDef::Protocol:   result+=" Protocol"; break;
628         case ClassDef::Category:   result+=" Category"; break;
629         case ClassDef::Exception:  result+=" Exception"; break;
630       }
631       if (isTemplate) result+=" Template";
632       result+=" Tham chiếu";
633       return result;
634     }
635
636     /*! used as the title of the HTML page of a file */
637     virtual QCString trFileReference(const char *fileName)
638     {
639       QCString result=fileName;
640       result+=" File Tham chiếu"; 
641       return result;
642     }
643
644     /*! used as the title of the HTML page of a namespace */
645     virtual QCString trNamespaceReference(const char *namespaceName)
646     {
647       QCString result=namespaceName;
648       result+=" Namespace Tham chiếu";
649       return result;
650     }
651     
652     virtual QCString trPublicMembers()
653     { return "Các hàm thành viên Public"; }
654     virtual QCString trPublicSlots()
655     { return "Public Slots"; }
656     virtual QCString trSignals()
657     { return "Signals"; }
658     virtual QCString trStaticPublicMembers()
659     { return "Các hàm Static Public"; }
660     virtual QCString trProtectedMembers()
661     { return "Các hàm thành viên Protected"; }
662     virtual QCString trProtectedSlots()
663     { return "Protected Slots"; }
664     virtual QCString trStaticProtectedMembers()
665     { return "Các hàm thành viên Static Protected"; }
666     virtual QCString trPrivateMembers()
667     { return "Các hàm thành viên Private"; }
668     virtual QCString trPrivateSlots()
669     { return "Private Slots"; }
670     virtual QCString trStaticPrivateMembers()
671     { return "Các hàm thành viên Static Private"; }
672     
673     /*! this function is used to produce a comma-separated list of items.
674      *  use generateMarker(i) to indicate where item i should be put.
675      */
676     virtual QCString trWriteList(int numEntries)
677     {
678       QCString result;
679       int i;
680       // the inherits list contain `numEntries' classes
681       for (i=0;i<numEntries;i++) 
682       {
683         // use generateMarker to generate placeholders for the class links!
684         result+=generateMarker(i); // generate marker for entry i in the list 
685                                    // (order is left to right)
686         
687         if (i!=numEntries-1)  // not the last entry, so we need a separator
688         {
689           if (i<numEntries-2) // not the fore last entry 
690             result+=", ";
691           else                // the fore last entry
692             result+=", và ";
693         }
694       }
695       return result; 
696     }
697     
698     /*! used in class documentation to produce a list of base classes,
699      *  if class diagrams are disabled.
700      */
701     virtual QCString trInheritsList(int numEntries)
702     {
703       return "Kế thừa "+trWriteList(numEntries)+".";
704     }
705
706     /*! used in class documentation to produce a list of super classes,
707      *  if class diagrams are disabled.
708      */
709     virtual QCString trInheritedByList(int numEntries)
710     {
711       return "Được kế thừa bởi "+trWriteList(numEntries)+".";
712     }
713
714     /*! used in member documentation blocks to produce a list of 
715      *  members that are hidden by this one.
716      */
717     virtual QCString trReimplementedFromList(int numEntries)
718     {
719       return "Được thực thi lại từ "+trWriteList(numEntries)+".";
720     }
721
722     /*! used in member documentation blocks to produce a list of
723      *  all member that overwrite the implementation of this member.
724      */
725     virtual QCString trReimplementedInList(int numEntries)
726     {
727       return "Được thực thi lại trong "+trWriteList(numEntries)+".";
728     }
729
730     /*! This is put above each page as a link to all members of namespaces. */
731     virtual QCString trNamespaceMembers()
732     { return "Thành viên Namespace"; }
733
734     /*! This is an introduction to the page with all namespace members */
735     virtual QCString trNamespaceMemberDescription(bool extractAll)
736     { 
737       QCString result="Danh sách tất cả các ";
738       if (!extractAll) result+="(đã được biên soạn) ";
739       result+="các thành viên namespace cùng với link tới ";
740       if (extractAll) 
741         result+="Thông tin namespace cho từng thành viên:";
742       else 
743         result+=" namespaces mà phụ thuộc bởi:";
744       return result;
745     }
746     /*! This is used in LaTeX as the title of the chapter with the 
747      *  index of all namespaces.
748      */
749     virtual QCString trNamespaceIndex()
750     { return "Namespace Index"; }
751
752     /*! This is used in LaTeX as the title of the chapter containing
753      *  the documentation of all namespaces.
754      */
755     virtual QCString trNamespaceDocumentation()
756     { return "Thông tin về Namespace"; }
757
758 //////////////////////////////////////////////////////////////////////////
759 // new since 0.49-990522
760 //////////////////////////////////////////////////////////////////////////
761
762     /*! This is used in the documentation before the list of all
763      *  namespaces in a file.
764      */
765     virtual QCString trNamespaces()
766     { return "Namespaces"; }
767
768 //////////////////////////////////////////////////////////////////////////
769 // new since 0.49-990728
770 //////////////////////////////////////////////////////////////////////////
771
772     /*! This is put at the bottom of a class documentation page and is
773      *  followed by a list of files that were used to generate the page.
774      */
775     virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
776         bool single)
777     { // here s is one of " Class", " Struct" or " Union"
778       // single is true implies a single file
779       QCString result=(QCString)"Thông tin cho ";
780       switch(compType)
781       {
782         case ClassDef::Class:      result+="class"; break;
783         case ClassDef::Struct:     result+="struct"; break;
784         case ClassDef::Union:      result+="union"; break;
785         case ClassDef::Interface:  result+="interface"; break;
786         case ClassDef::Protocol:   result+="protocol"; break;
787         case ClassDef::Category:   result+="category"; break;
788         case ClassDef::Exception:  result+="exception"; break;
789       }
790       result+=" được biên soạn từ các file sau đây";
791       if (single) result+=":"; else result+=":";
792       return result;
793     }
794
795     /*! This is in the (quick) index as a link to the alphabetical compound
796      * list.
797      */
798     virtual QCString trAlphabeticalList()
799     { return "Danh sách theo ABC"; }
800
801 //////////////////////////////////////////////////////////////////////////
802 // new since 0.49-990901
803 //////////////////////////////////////////////////////////////////////////
804
805     /*! This is used as the heading text for the retval command. */
806     virtual QCString trReturnValues()
807     { return "Các giá trị trả về"; }
808
809     /*! This is in the (quick) index as a link to the main page (index.html)
810      */
811     virtual QCString trMainPage()
812     { return "Tranh chính"; }
813
814     /*! This is used in references to page that are put in the LaTeX 
815      *  documentation. It should be an abbreviation of the word page.
816      */
817     virtual QCString trPageAbbreviation()
818     { return "tr."; }
819
820 //////////////////////////////////////////////////////////////////////////
821 // new since 0.49-991003
822 //////////////////////////////////////////////////////////////////////////
823
824     virtual QCString trDefinedAtLineInSourceFile()
825     {
826       return "Định nghĩa tại dòng @0 trong file @1.";
827     }
828     virtual QCString trDefinedInSourceFile()
829     {
830       return "Định nghĩa trong file @0.";
831     }
832
833 //////////////////////////////////////////////////////////////////////////
834 // new since 0.49-991205
835 //////////////////////////////////////////////////////////////////////////
836
837     virtual QCString trDeprecated()
838     {
839       return "Không tán thành";
840     }
841
842 //////////////////////////////////////////////////////////////////////////
843 // new since 1.0.0
844 //////////////////////////////////////////////////////////////////////////
845
846     /*! this text is put before a collaboration diagram */
847     virtual QCString trCollaborationDiagram(const char *clName)
848     {
849       return (QCString)"Sơ đồ liên kết cho "+clName+":";
850     }
851     /*! this text is put before an include dependency graph */
852     virtual QCString trInclDepGraph(const char *fName)
853     {
854       return (QCString)"Kèm theo graph phụ thuộc cho "+fName+":";
855     }
856     /*! header that is put before the list of constructor/destructors. */
857     virtual QCString trConstructorDocumentation()
858     {
859       return "Thông tin về Constructor và Destructor"; 
860     }
861     /*! Used in the file documentation to point to the corresponding sources. */
862     virtual QCString trGotoSourceCode()
863     {
864       return "Tới mã nguồn của file này.";
865     }
866     /*! Used in the file sources to point to the corresponding documentation. */
867     virtual QCString trGotoDocumentation()
868     {
869       return "Tới Thông tin của file này.";
870     }
871     /*! Text for the \\pre command */
872     virtual QCString trPrecondition()
873     {
874       return "Điều kiện trước";
875     }
876     /*! Text for the \\post command */
877     virtual QCString trPostcondition()
878     {
879       return "Điều kiện sau";
880     }
881     /*! Text for the \\invariant command */
882     virtual QCString trInvariant()
883     {
884       return "Bất biến";
885     }
886     /*! Text shown before a multi-line variable/enum initialization */
887     virtual QCString trInitialValue()
888     {
889       return "Giá trị khởi tạo:";
890     }
891     /*! Text used the source code in the file index */
892     virtual QCString trCode()
893     {
894       return "mã nguồn";
895     }
896     virtual QCString trGraphicalHierarchy()
897     {
898       return "Kiến trúc đồ họa của Class";
899     }
900     virtual QCString trGotoGraphicalHierarchy()
901     {
902       return "Tới kiến trúc đồ họa của Class";
903     }
904     virtual QCString trGotoTextualHierarchy()
905     {
906       return "Tới kiến trúc text của Class";
907     }
908     virtual QCString trPageIndex()
909     {
910       return "Chỉ mục trang";
911     }
912
913 //////////////////////////////////////////////////////////////////////////
914 // new since 1.1.0
915 //////////////////////////////////////////////////////////////////////////
916     
917     virtual QCString trNote()
918     {
919       return "Ghi chú";
920     }
921     virtual QCString trPublicTypes()
922     {
923       return "Public Types";
924     }
925     virtual QCString trPublicAttribs()
926     {
927       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
928       {
929         return "các trường đữ liệu";
930       }
931       else
932       {
933         return "Các thuộc tính Public";
934       }
935     }
936     virtual QCString trStaticPublicAttribs()
937     {
938       return "Các thuộc tính Static Public";
939     }
940     virtual QCString trProtectedTypes()
941     {
942       return "Các kiểu Protected";
943     }
944     virtual QCString trProtectedAttribs()
945     {
946       return "các thuộc tính Protected";
947     }
948     virtual QCString trStaticProtectedAttribs()
949     {
950       return "Các thuộc tính Static Protected";
951     }
952     virtual QCString trPrivateTypes()
953     {
954       return "Các kiểu Private";
955     }
956     virtual QCString trPrivateAttribs()
957     {
958       return "Các thuộc tính Private";
959     }
960     virtual QCString trStaticPrivateAttribs()
961     {
962       return "Các thuộc tính Static Private";
963     }
964
965 //////////////////////////////////////////////////////////////////////////
966 // new since 1.1.3
967 //////////////////////////////////////////////////////////////////////////
968
969     /*! Used as a marker that is put before a \\todo item */
970     virtual QCString trTodo()
971     {
972       return "Mục tiêu";
973     }
974     /*! Used as the header of the todo list */
975     virtual QCString trTodoList()
976     {
977       return "Danh sách hàng mục cần thực hiện";
978     }
979
980 //////////////////////////////////////////////////////////////////////////
981 // new since 1.1.4
982 //////////////////////////////////////////////////////////////////////////
983
984     virtual QCString trReferencedBy()
985     {
986       return "Tham chiếu bởi";
987     }
988     virtual QCString trRemarks()
989     {
990       return "Ghi chú";
991     }
992     virtual QCString trAttention()
993     {
994       return "Chú ý";
995     }
996     virtual QCString trInclByDepGraph()
997     {
998       return "Đồ thị này biểu thị những file nào trực tiếp hoặc"
999              "không trực tiếp bao gồm file này:";
1000     }
1001     virtual QCString trSince()
1002     {
1003       return "Từ";
1004     }
1005     
1006 //////////////////////////////////////////////////////////////////////////
1007 // new since 1.1.5
1008 //////////////////////////////////////////////////////////////////////////
1009
1010     /*! title of the graph legend page */
1011     virtual QCString trLegendTitle()
1012     {
1013       return "Chú giải Graph";
1014     }
1015     /*! page explaining how the dot graph's should be interpreted 
1016      *  The %A in the text below are to prevent link to classes called "A".
1017      */
1018     virtual QCString trLegendDocs()
1019     {
1020       return 
1021         "Trang này giải nghĩa các biểu đồ được biên soạn bởi "
1022         " doxygen.<p>\n"
1023         "Hãy xem xét các ví dụ sau:\n"
1024         "\\code\n"
1025         "/*! Các lướp không thấy được bởi sự cắt ngắn */\n"
1026         "Lớp không nhìn thấy class { };\n\n"
1027         "/*! class bị cắt, quan hệ kế thừa bị ẩn */\n"
1028         "class bị cắt : bị ẩn toàn cục { };\n\n"
1029         "/* Class không được mô tả với các chú giải doxygen */\n"
1030         "class không được mô tả { };\n\n"
1031         "/*! Class được kế thừa sử dụng các kế thừa public */\n"
1032         "class PublicBase : public Truncated { };\n\n"
1033         "/*!  template class */\n"
1034         "template<class T> class Templ { };\n\n"
1035         "/*! Class được kế thừa sử dụng kế thừa protected */\n"
1036         "class ProtectedBase { };\n\n"
1037         "/*! Class được kế thừa sử dụng kế thừa protected private */\n"
1038         "class PrivateBase { };\n\n"
1039         "/*! Class được sử dụng bởi các class kế thừa */\n"
1040         "class được sử dụng { };\n\n"
1041         "/*! Super class kế thừa một số các class khác */\n"
1042         "class được kế thừa : public PublicBase,\n"
1043         "                  protected ProtectedBase,\n"
1044         "                  private PrivateBase,\n"
1045         "                  public Undocumented,\n"
1046         "                  public Templ<int>\n"
1047         "{\n"
1048         "  private:\n"
1049         "    Used *m_usedClass;\n"
1050         "};\n"
1051         "\\endcode\n"
1052         "Kết quả trong biểu đồ sau đây:"
1053         "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
1054         "<p>\n"
1055         "Các hộp trong biểu đồ trên có ý nghĩa như sau:\n"
1056         "<ul>\n"
1057         "<li>%Hộp màu xám biểu thị cấu trúc clas cho "
1058         "biểu đồ được thể hiện.\n"
1059         "<li>%Hộp có khung mầu đen biểu thị struct hoặc class được mô tả.\n"
1060         "<li>%Hộp có khung mầu xám biểu thị struct hoặc class chưa được mô tả.\n"
1061         "<li>%Hộp có khung mầu đỏ biểu thị struct hoặc class được mổ tả "
1062         "khi mà không phải tất cả các quan hệ kế thừa/containment được biển diễn.. %Biểu đồ bị "
1063         "cắt nếu nó không nằm trọn trong các biên được cho trước..\n"
1064         "</ul>\n"
1065         "Các mũi tên có ý nghĩa như sau::\n"
1066         "<ul>\n"
1067         "<li>%Mũi tên mầu xanh đậm biểu thị các quan hệ kế thừa công khai "
1068         "giữa 2 class.\n"
1069         "<li>%Mũi tên màu xanh lá cây đậm biểu thị kế thừa được bảo về (protected).\n"
1070         "<li>%Mũi tên đỏ đậm biểu thị kế thừa dạng private.\n"
1071         "<li>%Mũi tên màu hồng đứt quảng biểu thị class được sử dụng "
1072         "bởi class khác. Mũi tên được gán nhãn với các giá trị "
1073         "mà các calsss hoặc struct được truy cập tới.\n"
1074         "<li>%Mũi tên vàng đắt quãng được thị quan hệ giữa template instance và "
1075         "template class được dẫn xuất từ đó. Mũi tên được gán nhãn với "
1076         "tham số của template.\n"
1077         "</ul>\n";
1078     }
1079     /*! text for the link to the legend page */
1080     virtual QCString trLegend()
1081     {
1082       return "Chú giải";
1083     }
1084     
1085 //////////////////////////////////////////////////////////////////////////
1086 // new since 1.2.0
1087 //////////////////////////////////////////////////////////////////////////
1088     
1089     /*! Used as a marker that is put before a test item */
1090     virtual QCString trTest()
1091     {
1092       return "Test";
1093     }
1094     /*! Used as the header of the test list */
1095     virtual QCString trTestList()
1096     {
1097       return "Danh sách Test";
1098     }
1099
1100 //////////////////////////////////////////////////////////////////////////
1101 // new since 1.2.1
1102 //////////////////////////////////////////////////////////////////////////
1103
1104     /*! Used as a section header for KDE-2 IDL methods */
1105     virtual QCString trDCOPMethods()
1106     {
1107       return "Các hàm thành viên DCOP";
1108     }
1109
1110 //////////////////////////////////////////////////////////////////////////
1111 // new since 1.2.2
1112 //////////////////////////////////////////////////////////////////////////
1113
1114     /*! Used as a section header for IDL properties */
1115     virtual QCString trProperties()
1116     {
1117       return "Thuộc tính";
1118     }
1119     /*! Used as a section header for IDL property documentation */
1120     virtual QCString trPropertyDocumentation()
1121     {
1122       return "Thông tin thuộc tính (Property)";
1123     }
1124
1125 //////////////////////////////////////////////////////////////////////////
1126 // new since 1.2.4
1127 //////////////////////////////////////////////////////////////////////////
1128
1129     /*! Used for Java classes in the summary section of Java packages */
1130     virtual QCString trClasses()
1131     {
1132       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
1133       {
1134         return "Cấu trúc dữ liệu";
1135       }
1136       else
1137       {
1138         return "Classes";
1139       }
1140     }
1141     /*! Used as the title of a Java package */
1142     virtual QCString trPackage(const char *name)
1143     {
1144       return (QCString)"Gói "+name;
1145     }
1146     /*! Title of the package index page */
1147     virtual QCString trPackageList()
1148     {
1149       return "Danh sách gói";
1150     }
1151     /*! The description of the package index page */
1152     virtual QCString trPackageListDescription()
1153     {
1154       return "Danh sách các gói cùng với mô tả tóm tắt (khi có thể có):";
1155     }
1156     /*! The link name in the Quick links header for each page */
1157     virtual QCString trPackages()
1158     {
1159       return "Các gói";
1160     }
1161     /*! Text shown before a multi-line define */
1162     virtual QCString trDefineValue()
1163     {
1164       return "Giá trị:";
1165     }
1166     
1167 //////////////////////////////////////////////////////////////////////////
1168 // new since 1.2.5
1169 //////////////////////////////////////////////////////////////////////////
1170     
1171     /*! Used as a marker that is put before a \\bug item */
1172     virtual QCString trBug()
1173     {
1174       return "Lỗi";
1175     }
1176     /*! Used as the header of the bug list */
1177     virtual QCString trBugList()
1178     {
1179       return "Danh sách lỗi";
1180     }
1181
1182 //////////////////////////////////////////////////////////////////////////
1183 // new since 1.2.6
1184 //////////////////////////////////////////////////////////////////////////
1185
1186     /*! Used as ansicpg for RTF file 
1187      * 
1188      * The following table shows the correlation of Charset name, Charset Value and 
1189      * <pre>
1190      * Codepage number:
1191      * Charset Name       Charset Value(hex)  Codepage number
1192      * ------------------------------------------------------
1193      * DEFAULT_CHARSET           1 (x01)
1194      * SYMBOL_CHARSET            2 (x02)
1195      * OEM_CHARSET             255 (xFF)
1196      * ANSI_CHARSET              0 (x00)            1252
1197      * RUSSIAN_CHARSET         204 (xCC)            1251
1198      * EE_CHARSET              238 (xEE)            1250
1199      * GREEK_CHARSET           161 (xA1)            1253
1200      * TURKISH_CHARSET         162 (xA2)            1254
1201      * BALTIC_CHARSET          186 (xBA)            1257
1202      * HEBREW_CHARSET          177 (xB1)            1255
1203      * ARABIC _CHARSET         178 (xB2)            1256
1204      * SHIFTJIS_CHARSET        128 (x80)             932
1205      * HANGEUL_CHARSET         129 (x81)             949
1206      * GB2313_CHARSET          134 (x86)             936
1207      * CHINESEBIG5_CHARSET     136 (x88)             950
1208      * </pre>
1209      * 
1210      */
1211     virtual QCString trRTFansicp()
1212     {
1213       return "1252";
1214     }
1215     
1216
1217     /*! Used as ansicpg for RTF fcharset 
1218      *  \see trRTFansicp() for a table of possible values.
1219      */
1220     virtual QCString trRTFCharSet()
1221     {
1222       return "0";
1223     }
1224
1225     /*! Used as header RTF general index */
1226     virtual QCString trRTFGeneralIndex()
1227     {
1228       return "Chỉ số";
1229     }
1230    
1231     /*! This is used for translation of the word that will possibly
1232      *  be followed by a single name or by a list of names 
1233      *  of the category.
1234      */
1235     virtual QCString trClass(bool first_capital, bool singular)
1236     { 
1237       QCString result((first_capital ? "Class" : "class"));
1238       if (!singular)  result+="es";
1239       return result; 
1240     }
1241
1242     /*! This is used for translation of the word that will possibly
1243      *  be followed by a single name or by a list of names 
1244      *  of the category.
1245      */
1246     virtual QCString trFile(bool first_capital, bool singular)
1247     { 
1248       QCString result((first_capital ? "File" : "file"));
1249       if (!singular)  result+="s";
1250       return result; 
1251     }
1252
1253     /*! This is used for translation of the word that will possibly
1254      *  be followed by a single name or by a list of names 
1255      *  of the category.
1256      */
1257     virtual QCString trNamespace(bool first_capital, bool singular)
1258     { 
1259       QCString result((first_capital ? "Namespace" : "namespace"));
1260       if (!singular)  result+="s";
1261       return result; 
1262     }
1263
1264     /*! This is used for translation of the word that will possibly
1265      *  be followed by a single name or by a list of names 
1266      *  of the category.
1267      */
1268     virtual QCString trGroup(bool first_capital, bool singular)
1269     { 
1270       QCString result((first_capital ? "Group" : "group"));
1271       if (!singular)  result+="s";
1272       return result; 
1273     }
1274
1275     /*! This is used for translation of the word that will possibly
1276      *  be followed by a single name or by a list of names 
1277      *  of the category.
1278      */
1279     virtual QCString trPage(bool first_capital, bool singular)
1280     { 
1281       QCString result((first_capital ? "Trang" : "trang"));
1282       if (!singular)  result+="";
1283       return result; 
1284     }
1285
1286     /*! This is used for translation of the word that will possibly
1287      *  be followed by a single name or by a list of names 
1288      *  of the category.
1289      */
1290     virtual QCString trMember(bool first_capital, bool singular)
1291     { 
1292       QCString result((first_capital ? "Member" : "member"));
1293       if (!singular)  result+="s";
1294       return result; 
1295     }
1296    
1297     /*! This is used for translation of the word that will possibly
1298      *  be followed by a single name or by a list of names 
1299      *  of the category.
1300      */
1301     virtual QCString trGlobal(bool first_capital, bool singular)
1302     { 
1303       QCString result((first_capital ? "Global" : "global"));
1304       if (!singular)  result+="s";
1305       return result; 
1306     }
1307
1308 //////////////////////////////////////////////////////////////////////////
1309 // new since 1.2.7
1310 //////////////////////////////////////////////////////////////////////////
1311
1312     /*! This text is generated when the \\author command is used and
1313      *  for the author section in man pages. */
1314     virtual QCString trAuthor(bool first_capital, bool singular)
1315     {                                                                         
1316       QCString result((first_capital ? "Tác giả" : "tác giả"));
1317       if (!singular)  result+="";
1318       return result; 
1319     }
1320
1321 //////////////////////////////////////////////////////////////////////////
1322 // new since 1.2.11
1323 //////////////////////////////////////////////////////////////////////////
1324
1325     /*! This text is put before the list of members referenced by a member
1326      */
1327     virtual QCString trReferences()
1328     {
1329       return "Tham chiếu";
1330     }
1331
1332 //////////////////////////////////////////////////////////////////////////
1333 // new since 1.2.13
1334 //////////////////////////////////////////////////////////////////////////
1335
1336     /*! used in member documentation blocks to produce a list of 
1337      *  members that are implemented by this one.
1338      */
1339     virtual QCString trImplementedFromList(int numEntries)
1340     {
1341       return "Thực hiện "+trWriteList(numEntries)+".";
1342     }
1343
1344     /*! used in member documentation blocks to produce a list of
1345      *  all members that implement this abstract member.
1346      */
1347     virtual QCString trImplementedInList(int numEntries)
1348     {
1349       return "Được thực hiện trong "+trWriteList(numEntries)+".";
1350     }
1351
1352 //////////////////////////////////////////////////////////////////////////
1353 // new since 1.2.16
1354 //////////////////////////////////////////////////////////////////////////
1355
1356     /*! used in RTF documentation as a heading for the Table
1357      *  of Contents.
1358      */
1359     virtual QCString trRTFTableOfContents()
1360     {
1361       return "Mục lục";
1362     }
1363
1364 //////////////////////////////////////////////////////////////////////////
1365 // new since 1.2.17
1366 //////////////////////////////////////////////////////////////////////////
1367
1368     /*! Used as the header of the list of item that have been 
1369      *  flagged deprecated 
1370      */
1371     virtual QCString trDeprecatedList()
1372     {
1373       return "Danh sách Deprecated";
1374     }
1375
1376 //////////////////////////////////////////////////////////////////////////
1377 // new since 1.2.18
1378 //////////////////////////////////////////////////////////////////////////
1379
1380     /*! Used as a header for declaration section of the events found in 
1381      * a C# program
1382      */
1383     virtual QCString trEvents()
1384     {
1385       return "Sự kiện";
1386     }
1387     /*! Header used for the documentation section of a class' events. */
1388     virtual QCString trEventDocumentation()
1389     {
1390       return "Thông tin về sự kiện";
1391     }
1392
1393 //////////////////////////////////////////////////////////////////////////
1394 // new since 1.3
1395 //////////////////////////////////////////////////////////////////////////
1396
1397     /*! Used as a heading for a list of Java class types with package scope.
1398      */
1399     virtual QCString trPackageTypes()
1400     { 
1401       return "Kiểu gói";
1402     }
1403     /*! Used as a heading for a list of Java class functions with package 
1404      * scope. 
1405      */
1406     virtual QCString trPackageMembers()
1407     { 
1408       return "Các hàm Package";
1409     }
1410     /*! Used as a heading for a list of static Java class functions with 
1411      *  package scope.
1412      */
1413     virtual QCString trStaticPackageMembers()
1414     { 
1415       return "Các hàm Static Package";
1416     }
1417     /*! Used as a heading for a list of Java class variables with package 
1418      * scope.
1419      */
1420     virtual QCString trPackageAttribs()
1421     { 
1422       return "Các thuộc tính Package";
1423     }
1424     /*! Used as a heading for a list of static Java class variables with 
1425      * package scope.
1426      */
1427     virtual QCString trStaticPackageAttribs()
1428     { 
1429       return "Các thuộc tính Static Package";
1430     }
1431     
1432 //////////////////////////////////////////////////////////////////////////
1433 // new since 1.3.1
1434 //////////////////////////////////////////////////////////////////////////
1435
1436     /*! Used in the quick index of a class/file/namespace member list page 
1437      *  to link to the unfiltered list of all members.
1438      */
1439     virtual QCString trAll()
1440     {
1441       return "Tất cả";
1442     }
1443     /*! Put in front of the call graph for a function. */
1444     virtual QCString trCallGraph()
1445     {
1446       return "Biểu đồ các lời gọi cho hàm này:";
1447     }
1448
1449 //////////////////////////////////////////////////////////////////////////
1450 // new since 1.3.3
1451 //////////////////////////////////////////////////////////////////////////
1452
1453     /*! When the search engine is enabled this text is put in the header 
1454      *  of each page before the field where one can enter the text to search 
1455      *  for. 
1456      */
1457     virtual QCString trSearchForIndex()
1458     {
1459       return "Tìm kiếm cho";
1460     }
1461     /*! This string is used as the title for the page listing the search
1462      *  results.
1463      */
1464     virtual QCString trSearchResultsTitle()
1465     {
1466       return "Kết quả tìm kiếm";
1467     }
1468     /*! This string is put just before listing the search results. The
1469      *  text can be different depending on the number of documents found.
1470      *  Inside the text you can put the special marker $num to insert
1471      *  the number representing the actual number of search results.
1472      *  The @a numDocuments parameter can be either 0, 1 or 2, where the 
1473      *  value 2 represents 2 or more matches. HTML markup is allowed inside
1474      *  the returned string.
1475      */
1476     virtual QCString trSearchResults(int numDocuments)
1477     {
1478       if (numDocuments==0)
1479       {
1480         return "Không có tài liệu nào thỏa mãn các truy vấn của bạn.";
1481       }
1482       else if (numDocuments==1)
1483       {
1484         return "Tìm thấy <b>1</b> tài liệu thỏa mã truy vấn của bạn.";
1485       }
1486       else 
1487       {
1488         return "Tìm thấy tất cả <b>$num</b> tài liệu thỏa mã truy vấn của bạn. "
1489                "Hiển thị những thỏa mãn tốt nhất trước.";
1490       }
1491     }
1492     /*! This string is put before the list of matched words, for each search 
1493      *  result. What follows is the list of words that matched the query.
1494      */
1495     virtual QCString trSearchMatches()
1496     {
1497       return "Các kết quả thỏa mãn đk:";
1498     }
1499
1500 //////////////////////////////////////////////////////////////////////////
1501 // new since 1.3.8
1502 //////////////////////////////////////////////////////////////////////////
1503
1504     /*! This is used in HTML as the title of page with source code for file filename
1505      */
1506     virtual QCString trSourceFile(QCString& filename)
1507     {
1508       return filename + " File nguồn";
1509     }
1510
1511 //////////////////////////////////////////////////////////////////////////
1512 // new since 1.3.9
1513 //////////////////////////////////////////////////////////////////////////
1514
1515     /*! This is used as the name of the chapter containing the directory
1516      *  hierarchy.
1517      */
1518     virtual QCString trDirIndex()
1519     { return "Cấu trúc thư mục"; }
1520
1521     /*! This is used as the name of the chapter containing the documentation
1522      *  of the directories.
1523      */
1524     virtual QCString trDirDocumentation()
1525     { return "Thông tin về thư mục"; }
1526
1527     /*! This is used as the title of the directory index and also in the
1528      *  Quick links of an HTML page, to link to the directory hierarchy.
1529      */
1530     virtual QCString trDirectories()
1531     { return "Các thư mục"; }
1532
1533     /*! This returns a sentences that introduces the directory hierarchy. 
1534      *  and the fact that it is sorted alphabetically per level
1535      */
1536     virtual QCString trDirDescription()
1537     { return "Thư mục đã được sắp xếp theo al-pha-bê, "
1538              "nhưng chưa đầy đủ:";
1539     }
1540
1541     /*! This returns the title of a directory page. The name of the
1542      *  directory is passed via \a dirName.
1543      */
1544     virtual QCString trDirReference(const char *dirName)
1545     { QCString result=dirName; result+=" Tham chiếu thư mục"; return result; }
1546
1547     /*! This returns the word directory with or without starting capital
1548      *  (\a first_capital) and in sigular or plural form (\a singular).
1549      */
1550     virtual QCString trDir(bool first_capital, bool singular)
1551     { 
1552       QCString result((first_capital ? "Thư mục" : "thư mục"));
1553       if (singular) result+=""; else result+="";
1554       return result; 
1555     }
1556
1557 //////////////////////////////////////////////////////////////////////////
1558 // new since 1.4.1
1559 //////////////////////////////////////////////////////////////////////////
1560
1561     /*! This text is added to the documentation when the \\overload command
1562      *  is used for a overloaded function.
1563      */
1564     virtual QCString trOverloadText()
1565     {
1566        return "Hàm thành viên dạng overloaded, "
1567               "được chỉ ra cho việc tra cứu dễ dàng. Nó khác với hàm ở trên"
1568               "chỉ ở chỗ những tham số nào nó chấp nhận.";
1569     }
1570
1571 //////////////////////////////////////////////////////////////////////////
1572 // new since 1.4.6
1573 //////////////////////////////////////////////////////////////////////////
1574
1575     /*! This is used to introduce a caller (or called-by) graph */
1576     virtual QCString trCallerGraph()
1577     {
1578       return "Biểu đồ các lời gọi cho hàm này:";
1579     }
1580
1581     /*! This is used in the documentation of a file/namespace before the list 
1582      *  of documentation blocks for enumeration values
1583      */
1584     virtual QCString trEnumerationValueDocumentation()
1585     { return "Thông tin Enumerator"; }
1586
1587 //////////////////////////////////////////////////////////////////////////
1588 // new since 1.5.4 (mainly for Fortran)
1589 //////////////////////////////////////////////////////////////////////////
1590     
1591     /*! header that is put before the list of member subprograms (Fortran). */
1592     virtual QCString trMemberFunctionDocumentationFortran()
1593     { return "Thông tin về các hàm và các thủ tục thành viên"; }
1594
1595     /*! This is put above each page as a link to the list of annotated data types (Fortran). */    
1596     virtual QCString trCompoundListFortran()
1597     { return "Danh sách kiêu dữ liệu"; }
1598
1599     /*! This is put above each page as a link to all members of compounds (Fortran). */
1600     virtual QCString trCompoundMembersFortran()
1601     { return "Trường dữ liệu"; }
1602
1603     /*! This is an introduction to the annotated compound list (Fortran). */
1604     virtual QCString trCompoundListDescriptionFortran()
1605     { return "Kiểu dữ liệu với các mô tả tóm tắt:"; }
1606
1607     /*! This is an introduction to the page with all data types (Fortran). */
1608     virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
1609     {
1610       QCString result="Danh sách tất cả ";
1611       if (!extractAll)
1612       {
1613         result+="(đã được mô tả) ";
1614       }
1615       result+="các kiểu dữ liệu thành viên";
1616       result+=" cùng với liên kết với ";
1617       if (!extractAll) 
1618       {
1619          result+="Thông tin cấu trúc dữ liệu cho từng thành viên";
1620       }
1621       else 
1622       {
1623          result+=" các kiểu dữ liệu thuộc:";
1624       }
1625       return result;
1626     }
1627
1628     /*! This is used in LaTeX as the title of the chapter with the 
1629      * annotated compound index (Fortran).
1630      */
1631     virtual QCString trCompoundIndexFortran()
1632     { return "Chỉ mục kiểu dữ liệu"; }
1633
1634     /*! This is used in LaTeX as the title of the chapter containing
1635      *  the documentation of all data types (Fortran).
1636      */
1637     virtual QCString trTypeDocumentation()
1638     { return "Thông tin về kiểu dữ liệu"; }
1639
1640     /*! This is used in the documentation of a file as a header before the 
1641      *  list of (global) subprograms (Fortran).
1642      */
1643     virtual QCString trSubprograms()
1644     { return "Functions/Subroutines"; }
1645
1646     /*! This is used in the documentation of a file/namespace before the list 
1647      *  of documentation blocks for subprograms (Fortran)
1648      */
1649     virtual QCString trSubprogramDocumentation()
1650     { return "Thông tin về Function/Subroutine"; }
1651
1652     /*! This is used in the documentation of a file/namespace/group before 
1653      *  the list of links to documented compounds (Fortran)
1654      */
1655      virtual QCString trDataTypes()
1656     { return "Kiểu dữ liệu"; }
1657     
1658     /*! used as the title of page containing all the index of all modules (Fortran). */
1659     virtual QCString trModulesList()
1660     { return "Danh sách Modules"; }
1661
1662     /*! used as an introduction to the modules list (Fortran) */
1663     virtual QCString trModulesListDescription(bool extractAll)
1664     {
1665       QCString result="Danh sách tất cả ";
1666       if (!extractAll) result+="(đã được mô tả) ";
1667       result+="các module với mô tả tóm tắt:";
1668       return result;
1669     }
1670
1671     /*! used as the title of the HTML page of a module/type (Fortran) */
1672     virtual QCString trCompoundReferenceFortran(const char *clName,
1673                                     ClassDef::CompoundType compType,
1674                                     bool isTemplate)
1675     {
1676       QCString result=(QCString)clName;
1677       switch(compType)
1678       {
1679         case ClassDef::Class:      result+=" Module"; break;
1680         case ClassDef::Struct:     result+=" Type"; break;
1681         case ClassDef::Union:      result+=" Union"; break;
1682         case ClassDef::Interface:  result+=" Interface"; break;
1683         case ClassDef::Protocol:   result+=" Protocol"; break;
1684         case ClassDef::Category:   result+=" Category"; break;
1685         case ClassDef::Exception:  result+=" Exception"; break;
1686       }
1687       if (isTemplate) result+=" Template";
1688       result+=" Tham chiếu";
1689       return result;
1690     }
1691     /*! used as the title of the HTML page of a module (Fortran) */
1692     virtual QCString trModuleReference(const char *namespaceName)
1693     {
1694       QCString result=namespaceName;
1695       result+=" Tham chiếu Module";        
1696       return result;
1697     }
1698     
1699     /*! This is put above each page as a link to all members of modules. (Fortran) */
1700     virtual QCString trModulesMembers()
1701     { return "Thành viên Module"; }
1702
1703     /*! This is an introduction to the page with all modules members (Fortran) */
1704     virtual QCString trModulesMemberDescription(bool extractAll)
1705     { 
1706       QCString result="Danh sách tất cả ";
1707       if (!extractAll) result+="(đã được mô tả) ";
1708       result+="các module thành viên cùng với liên kết tới ";
1709       if (extractAll) 
1710       {
1711         result+="Thông tin module cho từng thành viên:";
1712       }
1713       else 
1714       {
1715         result+="các module thuộc:";
1716       }
1717       return result;
1718     }
1719
1720     /*! This is used in LaTeX as the title of the chapter with the 
1721      *  index of all modules (Fortran).
1722      */
1723     virtual QCString trModulesIndex()
1724     { return "Chỉ mục các Module"; }
1725     
1726     /*! This is used for translation of the word that will possibly
1727      *  be followed by a single name or by a list of names 
1728      *  of the category.
1729      */
1730     virtual QCString trModule(bool first_capital, bool singular)
1731     {       
1732       QCString result((first_capital ? "Module" : "module"));
1733       if (!singular)  result+="";
1734       return result; 
1735     }
1736     /*! This is put at the bottom of a module documentation page and is
1737      *  followed by a list of files that were used to generate the page.
1738      */
1739     virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
1740         bool single)
1741     { // here s is one of " Module", " Struct" or " Union"
1742       // single is true implies a single file
1743       QCString result=(QCString)"Thông tin cho ";
1744       switch(compType)
1745       {
1746         case ClassDef::Class:      result+="module"; break;
1747         case ClassDef::Struct:     result+="type"; break;
1748         case ClassDef::Union:      result+="union"; break;
1749         case ClassDef::Interface:  result+="interface"; break;
1750         case ClassDef::Protocol:   result+="protocol"; break;
1751         case ClassDef::Category:   result+="category"; break;
1752         case ClassDef::Exception:  result+="exception"; break;
1753       }
1754       result+=" được biên soạn từ các file sau đây";
1755       if (single) result+=":"; else result+="s:";
1756       return result;
1757     }
1758     /*! This is used for translation of the word that will possibly
1759      *  be followed by a single name or by a list of names 
1760      *  of the category.
1761      */
1762     virtual QCString trType(bool first_capital, bool singular)
1763     { 
1764       QCString result((first_capital ? "Kiểu" : "kiểu"));
1765       if (!singular)  result+="";
1766       return result; 
1767     }
1768     /*! This is used for translation of the word that will possibly
1769      *  be followed by a single name or by a list of names 
1770      *  of the category.
1771      */
1772     virtual QCString trSubprogram(bool first_capital, bool singular)
1773     { 
1774       QCString result((first_capital ? "Chương trình con" : "chương trình con"));
1775       if (!singular)  result+="";
1776       return result; 
1777     }
1778
1779     /*! C# Type Constraint list */
1780     virtual QCString trTypeConstraints()
1781     {
1782       return "Ràng buộc của kiểu (Type)";
1783     }
1784
1785 };
1786
1787 #endif