/****************************************************************************** * * * * Copyright (C) 1997-2012 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * * * Description : Doxygen Persian (Farsi) Translator * Author : Ali Nadalizadeh < nadalizadeh at gmail dot com > * * ChangeLog : * Thu 06 Jul 2006 11:54:09 PM IRDT * >> First version of persian language support has been completed. * * Mon 04 Feb 2008 11:52:09 AM IRDT * >> Obsolete methods removed. Translated more string(s) to persian. Upgraded to 1_5_4 adapter. * * Fri 04 Jun 2010 04:05:24 PM IRDT * >> Implement missing new methods since 1.6.0. * >> Add English to Persian digit convertor. (for date/time digits) * * Translation feedbacks are really appreciated. */ #ifndef TRANSLATOR_FA_H #define TRANSLATOR_FA_H #define HtmlRightToLeft QCString("
") #define HtmlLeftToRight QCString("
") #define HtmlDivEnd QCString("
") class TranslatorPersian : public TranslatorAdapter_1_7_5 { private: /** Converts english digits of an input string to persian equivalents. */ QCString convertDigitsToFarsi(QCString str) { QCString output; const char * PersianDigits[] = { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; for(unsigned i=0; i= '0' && str.at(i) <= '9') output += PersianDigits[ str.at(i) - '0' ]; else output += str.at(i); } return output; } public: // --- Language control methods ------------------- /*! Used for identification of the language. The identification * should not be translated. It should be replaced by the name * of the language in Persian using lower-case characters only * (e.g. "czech", "japanese", "russian", etc.). It should be equal to * the identification used in language.cpp. */ virtual QCString idLanguage() { return "persian"; } /*! Used to get the LaTeX command(s) for the language support. * This method should return string with commands that switch * LaTeX to the desired language. For example *
"\\usepackage[german]{babel}\n"
     *  
* or *
"\\usepackage{polski}\n"
     *  "\\usepackage[latin2]{inputenc}\n"
     *  "\\usepackage[T1]{fontenc}\n"
     *  
* * The Persian LaTeX does not use such commands. Because of this * the empty string is returned in this implementation. */ virtual QCString latexLanguageSupportCommand() { return ""; } /*! return the language charset. This will be used for the HTML output */ virtual QCString idLanguageCharset() { return "utf-8"; } // --- Language translation methods ------------------- /*! used in the compound documentation before a list of related functions. */ virtual QCString trRelatedFunctions() { return "توابع مربوط"; } /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() { return "(لازم به ذکر است که اينها توابع عضو نيستند)"; } /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() { return "توضيحات جزئی"; } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() { return "مستندات تعریف گونه ها"; } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() { return "های عضو Enumeration مستندات"; } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() { return "توضيحات توابع عضو"; } /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "Field مستندات"; } else { return "مستندات متغيير های عضو"; } } /*! this is the text of a link put after brief descriptions. */ virtual QCString trMore() { return "بيشتر..."; } /*! put in the class documentation */ virtual QCString trListOfAllMembers() { return "ليست تمام اعضاء ."; } /*! used as the title of the "list of all members" page of a class */ virtual QCString trMemberList() { return "ليست اعضاء"; } /*! this is the first part of a sentence that is followed by a class name */ virtual QCString trThisIsTheListOfAllMembers() { return "اين ليستی کامل از همه اعضای "; } /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() { return "شامل همه ی اعضای به ارث برده شده می باشد."; } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. */ virtual QCString trGeneratedAutomatically(const char *s) { QCString result="تولید شده توسط نرم افزار دی اکسیژن "; if (s) result+=(QCString)" برای "+s; result+=" از کد برنامه "; return result; } /*! put after an enum name in the list of all members */ virtual QCString trEnumName() { return "enum نام"; } /*! put after an enum value in the list of all members */ virtual QCString trEnumValue() { return "enum مقدار"; } /*! put after an undocumented member in the list of all members */ virtual QCString trDefinedIn() { return "تعریف شده در"; } // quick reference sections /*! This is put above each page as a link to the list of all groups of * compounds or files (see the \\group command). */ virtual QCString trModules() { return "Modules"; } /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() { return "سلسله مراتب کلاس ها"; } /*! This is put above each page as a link to the list of annotated classes */ virtual QCString trCompoundList() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "ساختار های داده "; } else { return "ليست کلاس ها "; } } /*! This is put above each page as a link to the list of documented files */ virtual QCString trFileList() { return "ليست فايل ها"; } /*! This is put above each page as a link to all members of compounds. */ virtual QCString trCompoundMembers() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "فضاهای داده ها"; } else { return "اعضاء کلاس ها"; } } /*! This is put above each page as a link to all members of files. */ virtual QCString trFileMembers() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "Globals"; } else { return "اعضاء پرونده"; } } /*! This is put above each page as a link to all related pages. */ virtual QCString trRelatedPages() { return "صفحات مربوط"; } /*! This is put above each page as a link to all examples. */ virtual QCString trExamples() { return "مثال ها"; } /*! This is put above each page as a link to the search engine. */ virtual QCString trSearch() { return "جستجو"; } /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() { return "ليست و سلسله مراتب درختی کلاس ها به صورت مرتب شده :"; } /*! This is an introduction to the list with all files. */ virtual QCString trFileListDescription(bool extractAll) { QCString result="ليست همه ي پرونده های "; if (!extractAll) result+="(مستند شده) "; result+=" :"; return result; } /*! This is an introduction to the annotated compound list. */ virtual QCString trCompoundListDescription() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "ليست ساختارهای داده به همراه توضيحی کوتاه :"; } else { return "ليست کلاس ها ، ساختارهای داده و ... به همراه توضيحات مختصر راجع به آنها :"; } } /*! This is an introduction to the page with all class members. */ virtual QCString trCompoundMembersDescription(bool extractAll) { QCString result=" در ذيل ليست "; if (!extractAll) { result+="آن اعضايي که مستند شده اند "; } else { result+="همه ی اعضاء "; } result+=" به همراه ارتباطشان با "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { result+="ساختارهای داده "; } else { result+="كلاس ها "; } if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { result+="و مستندات ساختار داده برای هر عضو "; } else { result+="و مستندات کلاس برای هر عضو "; } result+="را مشاهده ميکنيد :"; return result; } /*! This is an introduction to the page with all file members. */ virtual QCString trFileMembersDescription(bool extractAll) { QCString result="ليست همه ی توابع ، متغيير ها، تعاريف و ... "; if (!extractAll) result+="(مستند شده) "; result+=" به همراه ارتباط آنها "; result+="با پرونده هايی که به آن مربوط اند :"; return result; } /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() { return "ليست همه ی مثال ها :"; } /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() { return "لیست تمام صفحات و مستندات مربوطه :"; } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() { return "لیست تمام ماژول ها:"; } // index titles (the project name is prepended for these) /*! This is used in HTML as the title of index.html. */ virtual QCString trDocumentation() { return "مستندات"; } /*! This is used in LaTeX as the title of the chapter with the * index of all groups. */ virtual QCString trModuleIndex() { return "فهرست ماژول ها"; } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ virtual QCString trHierarchicalIndex() { return "فهرست سلسله مراتب"; } /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. */ virtual QCString trCompoundIndex() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "فهرست ساختار داده ها"; } else { return "فهرست کلاس های"; } } /*! This is used in LaTeX as the title of the chapter with the * list of all files. */ virtual QCString trFileIndex() { return "فهرست پرونده ها"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all groups. */ virtual QCString trModuleDocumentation() { return "مستندات ماژول"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all classes, structs and unions. */ virtual QCString trClassDocumentation() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "مستندات ساختار داده ها"; } else { return "مستندات کلاس ها"; } } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all files. */ virtual QCString trFileDocumentation() { return "مستندات فایل"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. */ virtual QCString trExampleDocumentation() { return "مستندات مثال"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all related pages. */ virtual QCString trPageDocumentation() { return "مستندات صفحه"; } /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() { return "راهنمای مرجع"; } /*! This is used in the documentation of a file as a header before the * list of defines */ virtual QCString trDefines() { return "تعاريف"; } /*! This is used in the documentation of a file as a header before the * list of function prototypes */ virtual QCString trFuncProtos() { return "پیش تعریف های توابع"; } /*! This is used in the documentation of a file as a header before the * list of typedefs */ virtual QCString trTypedefs() { return "تعریف گونه ها"; } /*! This is used in the documentation of a file as a header before the * list of enumerations */ virtual QCString trEnumerations() { return "تعاريف"; } /*! This is used in the documentation of a file as a header before the * list of (global) functions */ virtual QCString trFunctions() { return "توابع"; } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trVariables() { return "متغيير ها"; } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trEnumerationValues() { return "معرف ها"; } /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ virtual QCString trDefineDocumentation() { return "Define Documentation"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes */ virtual QCString trFunctionPrototypeDocumentation() { return "مستندات تعاریف اولیه توابع"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() { return "Typedef"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() { return "مستندات تعريف"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() { return "مستندات معرف"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() { return "توضيح تابع"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for variables */ virtual QCString trVariableDocumentation() { return "توضيح متغير"; } /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds */ virtual QCString trCompounds() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "ساختارهای داده"; } else { return "کلاس ها"; } } /*! This is used in the standard footer of each page and indicates when * the page was generated */ virtual QCString trGeneratedAt(const char *date,const char *projName) { QCString result = HtmlDivEnd + HtmlRightToLeft + QCString("توليد شده در ") +date ; if (projName) result+=(QCString)" برای "+projName; result+=(QCString)" توسط"; return result; } /*! This is part of the sentence used in the standard footer of each page. */ virtual QCString trWrittenBy() { return "نوشته شده توسط"; } /*! this text is put before a class diagram */ virtual QCString trClassDiagram(const char *clName) { return (QCString)""+clName+" نمودار وراثت برای :"; } /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() { return ".فقط برای استعمال داخلی"; } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() { return "اخطار"; } /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() { return "نسخه"; } /*! this text is generated when the \\date command is used. */ virtual QCString trDate() { return "تاريخ"; } /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() { return "خروجی"; } /*! this text is generated when the \\sa command is used. */ virtual QCString trSeeAlso() { return "See also"; } /*! this text is generated when the \\param command is used. */ virtual QCString trParameters() { return "پارامترها"; } /*! this text is generated when the \\exception command is used. */ virtual QCString trExceptions() { return "استثناء ها"; } /*! this text is used in the title page of a LaTeX document. */ virtual QCString trGeneratedBy() { return "توليد شده توسط"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 ////////////////////////////////////////////////////////////////////////// /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() { return "ليست فضاهای نام"; } /*! used as an introduction to the namespace list */ virtual QCString trNamespaceListDescription(bool extractAll) { QCString result="در ذيل ليستی از همه ی فضاهای نام "; if (!extractAll) result+="(مستند سازی شده) "; result+="به همراه توضيح کوتاه آنها مشاهده می کنيد :"; return result; } /*! used in the class documentation as a header before the list of all * friends of a class */ virtual QCString trFriends() { return "کلاس های دوست"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// /*! used in the class documentation as a header before the list of all * related classes */ virtual QCString trRelatedFunctionDocumentation() { return "مستندات توابع مربوط و دوست"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 ////////////////////////////////////////////////////////////////////////// /*! used as the title of the HTML page of a class/struct/union */ virtual QCString trCompoundReference(const char *clName, ClassDef::CompoundType compType, bool isTemplate) { QCString result; switch(compType) { case ClassDef::Class: result=" کلاس"; break; case ClassDef::Struct: result=" ساختار داده"; break; case ClassDef::Union: result=" Union"; break; case ClassDef::Interface: result=" Interface"; break; case ClassDef::Protocol: result=" Protocol"; break; case ClassDef::Category: result=" Category"; break; case ClassDef::Exception: result=" استثناء"; break; } if (isTemplate) result+=" قالب"; result=QCString(clName) + " مرجع" +result ; return result; } /*! used as the title of the HTML page of a file */ virtual QCString trFileReference(const char *fileName) { QCString result=fileName; result+=" مرجع پرونده"; return result; } /*! used as the title of the HTML page of a namespace */ virtual QCString trNamespaceReference(const char *namespaceName) { QCString result=namespaceName; result+=" مرجع فضای نام"; return result; } virtual QCString trPublicMembers() { return "توابع عمومی عضو کلاس"; } virtual QCString trPublicSlots() { return "های عمومی Slot"; } virtual QCString trSignals() { return "سيگنال ها"; } virtual QCString trStaticPublicMembers() { return "توابع ثابت عمومی عضو کلاس"; } virtual QCString trProtectedMembers() { return "توابع خصوصی عضو کلاس"; } virtual QCString trProtectedSlots() { return "های محافظت شده Slot"; } virtual QCString trStaticProtectedMembers() { return "توابع ثابت محافظت شده عضو کلاس"; } virtual QCString trPrivateMembers() { return "توابع خصوصی عضو کلاس"; } virtual QCString trPrivateSlots() { return "های خصوصی Slot"; } virtual QCString trStaticPrivateMembers() { return "توابع خصوصی ثابت عضو کلاس"; } /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. */ virtual QCString trWriteList(int numEntries) { QCString result; int i; // the inherits list contain `numEntries' classes for (i=0;i