Orb/Doxygen/doc/language.doc
changeset 0 42188c7ea2d9
child 4 468f4c8d3d5b
equal deleted inserted replaced
-1:000000000000 0:42188c7ea2d9
       
     1 /******************************************************************************
       
     2  * Do not edit this file. It was generated by the translator.py script. 
       
     3  *
       
     4  * Copyright (C) 1997-2006 by Dimitri van Heesch.
       
     5  *
       
     6  * Permission to use, copy, modify, and distribute this software and its
       
     7  * documentation under the terms of the GNU General Public License is hereby 
       
     8  * granted. No representations are made about the suitability of this software 
       
     9  * for any purpose. It is provided "as is" without express or implied warranty.
       
    10  * See the GNU General Public License for more details.
       
    11  *
       
    12  * Documents produced by Doxygen are derivative works derived from the
       
    13  * input used in their production; they are not affected by this license.
       
    14  *
       
    15  * $Id: language.doc 713 2009-12-22 16:03:24Z dimitri $
       
    16  */
       
    17 /*! \page langhowto Internationalization
       
    18 
       
    19 <h3>Support for multiple languages</h3>
       
    20 
       
    21 Doxygen has built-in support for multiple languages. This means that the
       
    22 text fragments, generated by doxygen, can be produced in languages other
       
    23 than English (the default). The output language is chosen through the
       
    24 configuration file (with default name and known as Doxyfile).
       
    25 
       
    26 Currently (version 1.6.1), 38 languages 
       
    27 are supported (sorted alphabetically):
       
    28 Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
       
    29 Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto,
       
    30 Finnish, French, German, Greek, Hungarian, Indonesian, Italian,
       
    31 Japanese (+En), Korean (+En), Lithuanian, Macedonian, Norwegian,
       
    32 Persian, Polish, Portuguese, Romanian, Russian, Serbian,
       
    33 SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian,
       
    34 and Vietnamese..
       
    35 
       
    36 The table of information related to the supported languages follows.
       
    37 It is sorted by language alphabetically.  The <b>Status</b> column
       
    38 was generated from sources and shows approximately the last version
       
    39 when the translator was updated.
       
    40 
       
    41 \htmlonly
       
    42 <table align="center" cellspacing="0" cellpadding="0" border="0">
       
    43 <tr bgcolor="#000000">
       
    44 <td>
       
    45   <table cellspacing="1" cellpadding="2" border="0">
       
    46   <tr bgcolor="#4040c0">
       
    47   <td ><b><font size="+1" color="#ffffff"> Language </font></b></td>
       
    48   <td ><b><font size="+1" color="#ffffff"> Maintainer </font></b></td>
       
    49   <td ><b><font size="+1" color="#ffffff"> Contact address </font>
       
    50           <font size="-2" color="#ffffff">(replace the at and dot)</font></b></td>
       
    51   <td ><b><font size="+1" color="#ffffff"> Status </font></b></td>
       
    52   </tr>
       
    53   <!-- table content begin -->
       
    54 
       
    55   <tr bgcolor="#ffffff">
       
    56     <td>Afrikaans</td>
       
    57     <td>Johan Prinsloo</td>
       
    58     <td>johan at zippysnoek dot com</td>
       
    59     <td>1.6.0</td>
       
    60   </tr>
       
    61   <tr bgcolor="#ffffff">
       
    62     <td>Arabic</td>
       
    63     <td>Moaz Reyad</td>
       
    64     <td>moazreyad at yahoo dot com</td>
       
    65     <td>1.4.6</td>
       
    66   </tr>
       
    67   <tr bgcolor="#ffffff">
       
    68     <td>Brazilian Portuguese</td>
       
    69     <td>Fabio "FJTC" Jun Takada Chino</td>
       
    70     <td>jun-chino at uol dot com dot br</td>
       
    71     <td>up-to-date</td>
       
    72   </tr>
       
    73   <tr bgcolor="#ffffff">
       
    74     <td>Catalan</td>
       
    75     <td>Maximiliano Pin<br/>Albert Mora</td>
       
    76     <td>max.pin at bitroit dot com<br/>amora at iua dot upf dot es</td>
       
    77     <td>1.6.0</td>
       
    78   </tr>
       
    79   <tr bgcolor="#ffffff">
       
    80     <td>Chinese</td>
       
    81     <td>Li Daobing<br/>Wei Liu</td>
       
    82     <td>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
       
    83     <td>1.6.0</td>
       
    84   </tr>
       
    85   <tr bgcolor="#ffffff">
       
    86     <td>Chinese Traditional</td>
       
    87     <td>Daniel YC Lin<br/>Gary Lee</td>
       
    88     <td>dlin.tw at gmail dot com<br/>garywlee at gmail dot com</td>
       
    89     <td>1.6.0</td>
       
    90   </tr>
       
    91   <tr bgcolor="#ffffff">
       
    92     <td>Croatian</td>
       
    93     <td>Boris Bralo</td>
       
    94     <td>boris.bralo at zg dot htnet dot hr</td>
       
    95     <td>1.6.0</td>
       
    96   </tr>
       
    97   <tr bgcolor="#ffffff">
       
    98     <td>Czech</td>
       
    99     <td>Petr P&#x0159;ikryl</td>
       
   100     <td>prikrylp at skil dot cz</td>
       
   101     <td>up-to-date</td>
       
   102   </tr>
       
   103   <tr bgcolor="#ffffff">
       
   104     <td>Danish</td>
       
   105     <td>Erik S&oslash;e S&oslash;rensen</td>
       
   106     <td>eriksoe+doxygen at daimi dot au dot dk</td>
       
   107     <td>1.5.4</td>
       
   108   </tr>
       
   109   <tr bgcolor="#ffffff">
       
   110     <td>Dutch</td>
       
   111     <td>Dimitri van Heesch</td>
       
   112     <td>dimitri at stack dot nl</td>
       
   113     <td>up-to-date</td>
       
   114   </tr>
       
   115   <tr bgcolor="#ffffff">
       
   116     <td>English</td>
       
   117     <td>Dimitri van Heesch</td>
       
   118     <td>dimitri at stack dot nl</td>
       
   119     <td>up-to-date</td>
       
   120   </tr>
       
   121   <tr bgcolor="#ffffff">
       
   122     <td>Esperanto</td>
       
   123     <td>Ander Martinez</td>
       
   124     <td>dwarfnauko at gmail dot com</td>
       
   125     <td>1.6.0</td>
       
   126   </tr>
       
   127   <tr bgcolor="#ffffff">
       
   128     <td>Finnish</td>
       
   129     <td>Antti Laine</td>
       
   130     <td>antti.a.laine at tut dot fi</td>
       
   131     <td>1.6.0</td>
       
   132   </tr>
       
   133   <tr bgcolor="#ffffff">
       
   134     <td>French</td>
       
   135     <td>Xavier Outhier</td>
       
   136     <td>xouthier at yahoo dot fr</td>
       
   137     <td>up-to-date</td>
       
   138   </tr>
       
   139   <tr bgcolor="#ffffff">
       
   140     <td>German</td>
       
   141     <td>Jens Seidel</td>
       
   142     <td>jensseidel at users dot sf dot net</td>
       
   143     <td>1.6.0</td>
       
   144   </tr>
       
   145   <tr bgcolor="#ffffff">
       
   146     <td>Greek</td>
       
   147     <td>Paul Gessos</td>
       
   148     <td>nickreserved at yahoo dot com</td>
       
   149     <td>1.5.4</td>
       
   150   </tr>
       
   151   <tr bgcolor="#ffffff">
       
   152     <td>Hungarian</td>
       
   153     <td>&Aacute;kos Kiss<br/>F&ouml;ldv&aacute;ri Gy&ouml;rgy</td>
       
   154     <td>akiss at users dot sourceforge dot net<br/>foldvari lost at cyberspace</td>
       
   155     <td>1.4.6</td>
       
   156   </tr>
       
   157   <tr bgcolor="#ffffff">
       
   158     <td>Indonesian</td>
       
   159     <td>Hendy Irawan</td>
       
   160     <td>ceefour at gauldong dot net</td>
       
   161     <td>1.4.6</td>
       
   162   </tr>
       
   163   <tr bgcolor="#ffffff">
       
   164     <td>Italian</td>
       
   165     <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
       
   166     <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
       
   167     <td>1.6.0</td>
       
   168   </tr>
       
   169   <tr bgcolor="#ffffff">
       
   170     <td>Japanese</td>
       
   171     <td>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
       
   172     <td>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/>naga at joyful dot club dot ne dot jp<br/>iwasa at cosmo-system dot jp</td>
       
   173     <td>1.6.0</td>
       
   174   </tr>
       
   175   <tr bgcolor="#ffffff">
       
   176     <td>JapaneseEn</td>
       
   177     <td>see the Japanese language</td>
       
   178     <td>&nbsp;</td>
       
   179     <td>English based</td>
       
   180   </tr>
       
   181   <tr bgcolor="#ffffff">
       
   182     <td>Korean</td>
       
   183     <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
       
   184     <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/>ryk at dspwiz dot com</td>
       
   185     <td>up-to-date</td>
       
   186   </tr>
       
   187   <tr bgcolor="#ffffff">
       
   188     <td>KoreanEn</td>
       
   189     <td>see the Korean language</td>
       
   190     <td>&nbsp;</td>
       
   191     <td>English based</td>
       
   192   </tr>
       
   193   <tr bgcolor="#ffffff">
       
   194     <td>Lithuanian</td>
       
   195     <td>Tomas Simonaitis<br/>Mindaugas Radzius<br/>Aidas Berukstis</td>
       
   196     <td>haden at homelan dot lt<br/>mindaugasradzius at takas dot lt<br/>aidasber at takas dot lt</td>
       
   197     <td>1.4.6</td>
       
   198   </tr>
       
   199   <tr bgcolor="#ffffff">
       
   200     <td>Macedonian</td>
       
   201     <td>Slave Jovanovski</td>
       
   202     <td>slavejovanovski at yahoo dot com</td>
       
   203     <td>1.6.0</td>
       
   204   </tr>
       
   205   <tr bgcolor="#ffffff">
       
   206     <td>Norwegian</td>
       
   207     <td>Lars Erik Jordet</td>
       
   208     <td>lejordet at gmail dot com</td>
       
   209     <td>1.4.6</td>
       
   210   </tr>
       
   211   <tr bgcolor="#ffffff">
       
   212     <td>Persian</td>
       
   213     <td>Ali Nadalizadeh</td>
       
   214     <td>nadalizadeh at gmail dot com</td>
       
   215     <td>1.6.0</td>
       
   216   </tr>
       
   217   <tr bgcolor="#ffffff">
       
   218     <td>Polish</td>
       
   219     <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
       
   220     <td>Piotr.Kaminski at ctm dot gdynia dot pl<br/>g_kowal at poczta dot onet dot pl<br/>krzysztof.kral at gmail dot com</td>
       
   221     <td>up-to-date</td>
       
   222   </tr>
       
   223   <tr bgcolor="#ffffff">
       
   224     <td>Portuguese</td>
       
   225     <td>Rui Godinho Lopes</td>
       
   226     <td>ruiglopes at yahoo dot com</td>
       
   227     <td>1.3.3</td>
       
   228   </tr>
       
   229   <tr bgcolor="#ffffff">
       
   230     <td>Romanian</td>
       
   231     <td>Ionut Dumitrascu<br/>Alexandru Iosup</td>
       
   232     <td>reddumy at yahoo dot com<br/>aiosup at yahoo dot com</td>
       
   233     <td>1.6.0</td>
       
   234   </tr>
       
   235   <tr bgcolor="#ffffff">
       
   236     <td>Russian</td>
       
   237     <td>Alexandr Chelpanov</td>
       
   238     <td>cav at cryptopro dot ru</td>
       
   239     <td>1.6.0</td>
       
   240   </tr>
       
   241   <tr bgcolor="#ffffff">
       
   242     <td>Serbian</td>
       
   243     <td>Dejan Milosavljevic</td>
       
   244     <td>dmilos at email dot com</td>
       
   245     <td>1.6.0</td>
       
   246   </tr>
       
   247   <tr bgcolor="#ffffff">
       
   248     <td>SerbianCyrilic</td>
       
   249     <td>Nedeljko Stefanovic</td>
       
   250     <td>stenedjo at yahoo dot com</td>
       
   251     <td>1.6.0</td>
       
   252   </tr>
       
   253   <tr bgcolor="#ffffff">
       
   254     <td>Slovak</td>
       
   255     <td>Stanislav Kudl&aacute;&#x010d;</td>
       
   256     <td>skudlac at pobox dot sk</td>
       
   257     <td>1.2.18</td>
       
   258   </tr>
       
   259   <tr bgcolor="#ffffff">
       
   260     <td>Slovene</td>
       
   261     <td>Matja&#x017e; Ostrover&#x0161;nik</td>
       
   262     <td>matjaz.ostroversnik at ostri dot org</td>
       
   263     <td>1.4.6</td>
       
   264   </tr>
       
   265   <tr bgcolor="#ffffff">
       
   266     <td>Spanish</td>
       
   267     <td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
       
   268     <td>bartomeu at loteria3cornella dot com<br/>foltra at puc dot cl<br/>david at grupoikusnet dot com</td>
       
   269     <td>1.6.0</td>
       
   270   </tr>
       
   271   <tr bgcolor="#ffffff">
       
   272     <td>Swedish</td>
       
   273     <td>Mikael Hallin</td>
       
   274     <td>mikaelhallin at yahoo dot se</td>
       
   275     <td>1.6.0</td>
       
   276   </tr>
       
   277   <tr bgcolor="#ffffff">
       
   278     <td>Turkish</td>
       
   279     <td>Emin Ilker Cetinbas</td>
       
   280     <td>niw3 at yahoo dot com</td>
       
   281     <td>1.6.0</td>
       
   282   </tr>
       
   283   <tr bgcolor="#ffffff">
       
   284     <td>Ukrainian</td>
       
   285     <td>Olexij Tkatchenko</td>
       
   286     <td>olexij.tkatchenko at parcs dot de</td>
       
   287     <td>1.4.1</td>
       
   288   </tr>
       
   289   <tr bgcolor="#ffffff">
       
   290     <td>Vietnamese</td>
       
   291     <td>Dang Minh Tuan</td>
       
   292     <td>tuanvietkey at gmail dot com</td>
       
   293     <td>1.6.0</td>
       
   294   </tr>
       
   295   <!-- table content end -->
       
   296   </table>
       
   297 </td>
       
   298 </tr>
       
   299 </table>
       
   300 \endhtmlonly
       
   301 
       
   302 
       
   303 \latexonly
       
   304 \begin{tabular}{|l|l|l|l|}
       
   305   \hline 
       
   306   {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
       
   307   \hline
       
   308 
       
   309   \hline
       
   310   Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.6.0 \\
       
   311   \hline
       
   312   Arabic & Moaz Reyad & {\tt\tiny moazreyad@yahoo.com} & 1.4.6 \\
       
   313   \hline
       
   314   Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
       
   315   \hline
       
   316   Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.6.0 \\
       
   317   ~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
       
   318   \hline
       
   319   Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.6.0 \\
       
   320   ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
       
   321   \hline
       
   322   Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin.tw@gmail.com} & 1.6.0 \\
       
   323   ~ & Gary Lee & {\tt\tiny garywlee@gmail.com} & ~ \\
       
   324   \hline
       
   325   Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.6.0 \\
       
   326   \hline
       
   327   Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
       
   328   \hline
       
   329   Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.5.4 \\
       
   330   \hline
       
   331   Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
       
   332   \hline
       
   333   English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
       
   334   \hline
       
   335   Esperanto & Ander Martinez & {\tt\tiny dwarfnauko@gmail.com} & 1.6.0 \\
       
   336   \hline
       
   337   Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & 1.6.0 \\
       
   338   \hline
       
   339   French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\
       
   340   \hline
       
   341   German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.0 \\
       
   342   \hline
       
   343   Greek & Paul Gessos & {\tt\tiny nickreserved@yahoo.com} & 1.5.4 \\
       
   344   \hline
       
   345   Hungarian & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & 1.4.6 \\
       
   346   ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & ~ \\
       
   347   \hline
       
   348   Indonesian & Hendy Irawan & {\tt\tiny ceefour@gauldong.net} & 1.4.6 \\
       
   349   \hline
       
   350   Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.6.0 \\
       
   351   ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
       
   352   \hline
       
   353   Japanese & Hiroki Iseri & {\tt\tiny goyoki@gmail.com} & 1.6.0 \\
       
   354   ~ & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & ~ \\
       
   355   ~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\
       
   356   ~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
       
   357   \hline
       
   358   JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
       
   359   \hline
       
   360   Korean & Kim Taedong & {\tt\tiny fly1004@gmail.com} & up-to-date \\
       
   361   ~ & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & ~ \\
       
   362   ~ & Richard Kim & {\tt\tiny ryk@dspwiz.com} & ~ \\
       
   363   \hline
       
   364   KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
       
   365   \hline
       
   366   Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & 1.4.6 \\
       
   367   ~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
       
   368   ~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
       
   369   \hline
       
   370   Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski@yahoo.com} & 1.6.0 \\
       
   371   \hline
       
   372   Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.4.6 \\
       
   373   \hline
       
   374   Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh@gmail.com} & 1.6.0 \\
       
   375   \hline
       
   376   Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\
       
   377   ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
       
   378   ~ & Krzysztof Kral & {\tt\tiny krzysztof.kral@gmail.com} & ~ \\
       
   379   \hline
       
   380   Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
       
   381   \hline
       
   382   Romanian & Ionut Dumitrascu & {\tt\tiny reddumy@yahoo.com} & 1.6.0 \\
       
   383   ~ & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & ~ \\
       
   384   \hline
       
   385   Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.6.0 \\
       
   386   \hline
       
   387   Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.6.0 \\
       
   388   \hline
       
   389   SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo@yahoo.com} & 1.6.0 \\
       
   390   \hline
       
   391   Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
       
   392   \hline
       
   393   Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ostri.org} & 1.4.6 \\
       
   394   \hline
       
   395   Spanish & Bartomeu & {\tt\tiny bartomeu@loteria3cornella.com} & 1.6.0 \\
       
   396   ~ & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & ~ \\
       
   397   ~ & David Vaquero & {\tt\tiny david@grupoikusnet.com} & ~ \\
       
   398   \hline
       
   399   Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.6.0 \\
       
   400   \hline
       
   401   Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3@yahoo.com} & 1.6.0 \\
       
   402   \hline
       
   403   Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.4.1 \\
       
   404   \hline
       
   405   Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey@gmail.com} & 1.6.0 \\
       
   406   \hline
       
   407 \end{tabular}
       
   408 \endlatexonly
       
   409 
       
   410 
       
   411 Most people on the list have indicated that they were also busy
       
   412 doing other things, so if you want to help to speed things up please 
       
   413 let them (or me) know.
       
   414 
       
   415 If you want to add support for a language that is not yet listed 
       
   416 please read the next section.
       
   417 
       
   418 
       
   419 <h3>Adding a new language to doxygen</h3>
       
   420 
       
   421 This short HOWTO explains how to add support for the new language to Doxygen:
       
   422 
       
   423 Just follow these steps:
       
   424 <ol>
       
   425 <li>Tell me for which language you want to add support. If no one else
       
   426     is already working on support for that language, you will be 
       
   427     assigned as the maintainer for the language. 
       
   428 <li>Create a copy of translator_en.h and name it 
       
   429     translator_\<your_2_letter_country_code\>.h
       
   430     I'll use xx in the rest of this document.
       
   431 <li>Add definition of the symbol for your language in the configure 
       
   432 at two places in the script:
       
   433   <ol>
       
   434   <li>After the <code>f_langs=</code> is statement, in lower case.
       
   435   <li>In the string that following <code>\@allowed=</code> in upper case.
       
   436   </ol>
       
   437 The rerun the configure script such that is generates src/lang_cfg.h.
       
   438 This file should now contain a \#define for your language code.
       
   439 <li>Edit language.cpp:
       
   440     Add a 
       
   441 \verbatim
       
   442 #ifdef LANG_xx
       
   443 #include<translator_xx.h>
       
   444 #endif
       
   445 \endverbatim
       
   446     Remember to use the same symbol LANG_xx that you added to \c lang_cfg.h.
       
   447     I.e., the \c xx should be capital letters that identify your language.
       
   448     On the other hand, the \c xx inside your \c translator_xx.h should use
       
   449     lower case.
       
   450     <p>Now, in <code>setTranslator()</code> add
       
   451 \verbatim
       
   452 #ifdef LANG_xx
       
   453     else if (L_EQUAL("your_language_name"))
       
   454     {
       
   455       theTranslator = new TranslatorYourLanguage;
       
   456     }
       
   457 #endif    
       
   458 \endverbatim
       
   459     after the <code>if { ... }</code>. I.e., it must be placed after the code
       
   460     for creating the English translator at the beginning, and before the 
       
   461     <code>else { ... }</code> part that creates the translator for the 
       
   462     default language (English again).
       
   463 <li>Edit libdoxygen.pro.in and add \c translator_xx.h to 
       
   464     the \c HEADERS line.
       
   465 <li>Edit <code>translator_xx.h</code>:
       
   466    <ul>
       
   467    <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> 
       
   468        twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at 
       
   469        the beginning of the file).
       
   470    <li>Rename TranslatorEnglish to TranslatorYourLanguage 
       
   471    <li>In the member <code>idLanguage()</code> change "english" into the 
       
   472      name of your language (use lower case characters only). Depending
       
   473      on the language you may also wish to change the member functions 
       
   474      latexLanguageSupportCommand(), idLanguageCharset() and others
       
   475      (you will recognize them when you start the work).
       
   476    <li>Edit all the strings that are returned by the member functions that 
       
   477      start with tr. 
       
   478      Try to match punctuation and capitals!
       
   479      To enter special characters (with accents) you can:
       
   480      <ul>
       
   481      <li>  Enter them directly if your keyboard supports that and you are 
       
   482            using a Latin-1 font. Doxygen will translate the
       
   483            characters to proper \f$\mbox{\LaTeX}\f$ and leave the
       
   484            HTML and man output for what it is (which is fine, if
       
   485            idLanguageCharset() is set correctly).
       
   486      <li>  Use html codes like \&auml; for an a with an umlaut (i.e. &auml;).
       
   487            See the HTML specification for the codes.
       
   488      </ul>
       
   489    </ul>
       
   490 <li>Run configure and make again from the root of the distribution, 
       
   491     in order to regenerated the Makefiles.
       
   492 <li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code> 
       
   493     in the config file to generate output in your language.
       
   494 <li>Send <code>translator_xx.h</code> to me so I can add it to doxygen.
       
   495     Send also your name and e-mail address to be included in the
       
   496     \c maintainers.txt list.
       
   497 </ol>
       
   498 
       
   499 
       
   500 <h3>Maintaining a language</h3>
       
   501 
       
   502 New versions of doxygen may use new translated sentences.  In such
       
   503 situation, the \c Translator class requires implementation of new
       
   504 methods -- its interface changes.  Of course, the English
       
   505 sentences need to be translated to the other languages.  At least,
       
   506 new methods have to be implemented by the language-related
       
   507 translator class; otherwise, doxygen wouldn't even compile.  Waiting
       
   508 until all language maintainers have translated the new sentences and
       
   509 sent the results would not be very practical. The following text
       
   510 describes the usage of translator adapters to solve the problem.
       
   511 
       
   512 <b>The role of Translator Adapters.</b> 
       
   513 Whenever the \c Translator class interface changes in the new
       
   514 release, the new class \c TranslatorAdapter_x_y_z is added to the \c
       
   515 translator_adapter.h file (here x, y, and z are numbers that
       
   516 correspond to the current official version of doxygen). All
       
   517 translators that previously derived from the \c Translator class now
       
   518 derive from this adapter class.
       
   519 
       
   520 The \c TranslatorAdapter_x_y_z class implements the new, required
       
   521 methods.  If the new method replaces some similar but obsolete
       
   522 method(s) (e.g. if the number of arguments changed and/or the
       
   523 functionality of the older method was changed or enriched), the \c
       
   524 TranslatorAdapter_x_y_z class may use the obsolete method to get the
       
   525 result which is as close as possible to the older result in the
       
   526 target language.  If it is not possible, the result (the default
       
   527 translation) is obtained using the English translator, which is (by
       
   528 definition) always up-to-date.  
       
   529 
       
   530 <b>For example,</b> when the new \c trFile() method with
       
   531 parameters (to determine the capitalization of the first letter and
       
   532 the singular/plural form) was introduced to replace the older method
       
   533 \c trFiles() without arguments, the following code appeared in one
       
   534 of the translator adapter classes:
       
   535 
       
   536 \verbatim
       
   537     /*! This is the default implementation of the obsolete method
       
   538      * used in the documentation of a group before the list of
       
   539      * links to documented files.  This is possibly localized.
       
   540      */
       
   541     virtual QCString trFiles()
       
   542     { return "Files"; }
       
   543 
       
   544     /*! This is the localized implementation of newer equivalent
       
   545      * using the obsolete method trFiles().
       
   546      */
       
   547     virtual QCString trFile(bool first_capital, bool singular)
       
   548     {
       
   549       if (first_capital && !singular)
       
   550         return trFiles();  // possibly localized, obsolete method
       
   551       else
       
   552         return english.trFile(first_capital, singular);
       
   553     }
       
   554 \endverbatim
       
   555 
       
   556 The \c trFiles() is not present in the \c TranslatorEnglish class,
       
   557 because it was removed as obsolete.  However, it was used until now
       
   558 and its call was replaced by 
       
   559 
       
   560 \verbatim
       
   561     trFile(true, false)
       
   562 \endverbatim
       
   563 
       
   564 in the doxygen source files.  Probably, many language translators
       
   565 implemented the obsolete method, so it perfectly makes sense to use
       
   566 the same language dependent result in those cases. The \c
       
   567 TranslatorEnglish does not implement the old method.  It derives
       
   568 from the abstract \c Translator class.  On the other hand, the old
       
   569 translator for a different language does not implement the new \c
       
   570 trFile() method.  Because of that it is derived from another base
       
   571 class -- \c TranslatorAdapter_x_y_z. The \c TranslatorAdapter_x_y_z
       
   572 class have to implement the new, required \c trFile() method.
       
   573 However, the translator adapter would not be compiled if the \c
       
   574 trFiles() method was not implemented. This is the reason for
       
   575 implementing the old method in the translator adapter class (using
       
   576 the same code, that was removed from the TranslatorEnglish).
       
   577 
       
   578 The simplest way would be to pass the arguments to the English
       
   579 translator and to return its result.  Instead, the adapter uses the
       
   580 old \c trFiles() in one special case -- when the new
       
   581 <code>trFile(true,&nbsp;false)</code> is called.  This is the
       
   582 mostly used case at the time of introducing the new method -- see
       
   583 above.  While this may look too complicated, the technique allows
       
   584 the developers of the core sources to change the Translator
       
   585 interface, while the users may not even notice the change.  Of
       
   586 course, when the new \c trFile() is used with different arguments,
       
   587 the English result is returned and it will be noticed by non English
       
   588 users.  Here the maintainer of the language translator should
       
   589 implement at least that one particular method.
       
   590 
       
   591 <b>What says the base class of a language translator?</b>
       
   592 If the language translator class inherits from any adapter class the
       
   593 maintenance is needed.  In such case, the language translator is not
       
   594 considered up-to-date.  On the other hand, if the language
       
   595 translator derives directly from the abstract class \c Translator, the
       
   596 language translator is up-to-date.
       
   597 
       
   598 The translator adapter classes are chained so that the older
       
   599 translator adapter class uses the one-step-newer translator adapter
       
   600 as the base class.  The newer adapter does less \e adapting work
       
   601 than the older one.  The oldest adapter class derives (indirectly)
       
   602 from all of the adapter classes.  The name of the adapter class is
       
   603 chosen so that its suffix is derived from the previous official
       
   604 version of doxygen that did not need the adapter.  This way, one can
       
   605 say approximately, when the language translator class was last
       
   606 updated -- see details below.
       
   607 
       
   608 The newest translator adapter derives from the abstract \c
       
   609 TranslatorAdapterBase class that derives directly from the abstract
       
   610 \c Translator class.  It adds only the private English-translator
       
   611 member for easy implementation of the default translation inside the
       
   612 adapter classes, and it also enforces implementation of one method
       
   613 for noticing the user that the language translation is not up-to-date
       
   614 (because of that some sentences in the generated files may appear in
       
   615 English).
       
   616 
       
   617 Once the oldest adapter class is not used by any of the language
       
   618 translators, it can be removed from the doxygen project.  The
       
   619 maintainers should try to reach the state with the minimal number of
       
   620 translator adapter classes.
       
   621 
       
   622 <b>To simplify the maintenance of the language translator classes</b>
       
   623 for the supported languages, the \c translator.py Python
       
   624 script was developed (located in \c doxygen/doc directory). 
       
   625 It extracts the important information about obsolete and
       
   626 new methods from the source files for each of the languages.  
       
   627 The information is stored in the <em>translator report</em> ASCII file
       
   628 (translator_report.txt). 
       
   629 
       
   630 \htmlonly If you compiled this documentation
       
   631 from sources and if you have also doxygen sources available the
       
   632 link <a href="../doc/translator_report.txt"
       
   633 ><code>doxygen/doc/translator_report.txt</code></a> should be valid.\endhtmlonly 
       
   634 
       
   635 Looking at the base class of the language translator, the script
       
   636 guesses also the status of the translator -- see the last column of
       
   637 the table with languages above.  The \c translator.py is called
       
   638 automatically when the doxygen documentation is generated.  You can
       
   639 also run the script manualy whenever you feel that it can help you.
       
   640 Of course, you are not forced to use the results of the script.  You
       
   641 can find the same information by looking at the adapter class and
       
   642 its base classes.
       
   643 
       
   644 <b>How should I update my language translator?</b> Firstly, you
       
   645 should be the language maintainer, or you should let him/her know
       
   646 about the changes.  The following text was written for the language
       
   647 maintainers as the primary audience.
       
   648 
       
   649 There are several approaches to be taken when updating your
       
   650 language.  If you are not extremely busy, you should always chose
       
   651 the most radical one.  When the update takes much more time than you
       
   652 expected, you can always decide use some suitable translator adapter to
       
   653 finish the changes later and still make your translator working.
       
   654 
       
   655 <b>The most radical way of updating the language translator</b> is
       
   656 to make your translator class derive directly 
       
   657 from the abstract class \c Translator and provide translations for the
       
   658 methods that are required to be implemented -- the compiler will
       
   659 tell you if you forgot to implement some of them.  If you are in
       
   660 doubt, have a look at the \c TranslatorEnglish class to recognize the
       
   661 purpose of the implemented method.  Looking at the previously used
       
   662 adapter class may help you sometimes, but it can also be misleading
       
   663 because the adapter classes do implement also the obsolete methods
       
   664 (see the previous \c trFiles() example).
       
   665 
       
   666 In other words, the up-to-date language translators do not need the
       
   667 \c TranslatorAdapter_x_y_z classes at all, and you do not need to
       
   668 implement anything else than the methods required by the Translator
       
   669 class (i.e. the pure virtual methods of the \c Translator -- they 
       
   670 end with <code>=0;</code>).
       
   671 
       
   672 If everything compiles fine, try to run \c translator.py, and have a
       
   673 look at the translator report (ASCII file) at the \c doxygen/doc
       
   674 directory. Even if your translator is marked as up-to-date, there
       
   675 still may be some remarks related to your souce code. Namely, the
       
   676 obsolete methods--that are not used at all--may be listed in the
       
   677 section for your language. Simply, remove their code (and run the \c
       
   678 translator.py again). Also, you will be informed when you forgot to
       
   679 change the base class of your translator class to some newer adapter
       
   680 class or directly to the Translator class.
       
   681 
       
   682 <b>If you do not have time to finish all the updates</b> you should
       
   683 still start with <em>the most radical approach</em> as described
       
   684 above.  You can always change the base class to the translator
       
   685 adapter class that implements all of the not-yet-implemented methods.
       
   686 
       
   687 <b>If you prefer to update your translator gradually</b>, have a look
       
   688 at \c TranslatorEnglish (the \c translator_en.h file). Inside, you
       
   689 will find the comments like <code>new since 1.2.4</code> that separate
       
   690 always a number of methods that were implemented in the stated
       
   691 version. Do implement the group of methods that are placed below the
       
   692 comment that uses the same version numbers as your translator adapter
       
   693 class. (For example, your translator class have to use the \c
       
   694 TranslatorAdapter_1_2_4, if it does not implement the methods below
       
   695 the comment <code>new since 1.2.4</code>. When you implement them,
       
   696 your class should use newer translator adapter.
       
   697 
       
   698 Run the \c translator.py script occasionaly and give it your \c xx
       
   699 identification (from \c translator_xx.h) to create the translator
       
   700 report shorter (also produced faster) -- it will contain only the
       
   701 information related to your translator. Once you reach the state when
       
   702 the base class should be changed to some newer adapter, you will see
       
   703 the note in the translator report.
       
   704  
       
   705 Warning: Don't forget to compile Doxygen to discover, whether it is
       
   706 compilable. The \c translator.py does not check if everything is
       
   707 correct with respect to the compiler. Because of that, it may lie
       
   708 sometimes about the necessary base class.
       
   709 
       
   710 <b>The most obsolete language translators</b> would lead to
       
   711 implementation of too complicated adapters. Because of that, doxygen
       
   712 developers may decide to derive such translators from the \c
       
   713 TranslatorEnglish class, which is by definition always up-to-date.
       
   714 
       
   715 When doing so, all the missing methods will be replaced by the
       
   716 English translation.  This means that not-implemented methods will
       
   717 always return the English result.  Such translators are marked using
       
   718 word \c obsolete.  You should read it <b>really obsolete</b>. No
       
   719 guess about the last update can be done.  
       
   720 
       
   721 Often, it is possible to construct better result from the obsolete
       
   722 methods.  Because of that, the translator adapter classes should be
       
   723 used if possible.  On the other hand, implementation of adapters for
       
   724 really obsolete translators brings too much maintenance and
       
   725 run-time overhead.
       
   726 
       
   727 */
       
   728