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