language.doc 28.5 KB
Newer Older
mueller's avatar
mueller committed
1
/******************************************************************************
dimitri's avatar
dimitri committed
2
 * Do not edit this file. It was generated by the translator.py script. 
mueller's avatar
mueller committed
3
 *
dimitri's avatar
dimitri committed
4
 * Copyright (C) 1997-2006 by Dimitri van Heesch.
mueller's avatar
mueller committed
5 6 7 8 9 10 11
 *
 * 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.
 *
dimitri's avatar
dimitri committed
12 13
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
mueller's avatar
mueller committed
14
 *
dimitri's avatar
dimitri committed
15
 * $Id$
mueller's avatar
mueller committed
16 17 18 19 20
 */
/*! \page langhowto Internationalization

<h3>Support for multiple languages</h3>

dimitri's avatar
dimitri committed
21 22 23 24
Doxygen has built-in support for multiple languages. This means that the
text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
dimitri's avatar
dimitri committed
25

dimitri's avatar
dimitri committed
26
Currently (version 1.6.2), 38 languages 
dimitri's avatar
dimitri committed
27
are supported (sorted alphabetically):
dimitri's avatar
dimitri committed
28
Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
dimitri's avatar
dimitri committed
29 30 31 32 33 34
Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto,
Finnish, French, German, Greek, Hungarian, Indonesian, Italian,
Japanese (+En), Korean (+En), Lithuanian, Macedonian, Norwegian,
Persian, Polish, Portuguese, Romanian, Russian, Serbian,
SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian,
and Vietnamese..
dimitri's avatar
dimitri committed
35

dimitri's avatar
dimitri committed
36
The table of information related to the supported languages follows.
dimitri's avatar
dimitri committed
37
It is sorted by language alphabetically.  The <b>Status</b> column
dimitri's avatar
dimitri committed
38 39
was generated from sources and shows approximately the last version
when the translator was updated.
mueller's avatar
mueller committed
40

dimitri's avatar
dimitri committed
41
\htmlonly
dimitri's avatar
dimitri committed
42
<table align="center" cellspacing="0" cellpadding="0" border="0">
dimitri's avatar
dimitri committed
43 44
<tr bgcolor="#000000">
<td>
dimitri's avatar
dimitri committed
45
  <table cellspacing="1" cellpadding="2" border="0">
dimitri's avatar
dimitri committed
46
  <tr bgcolor="#4040c0">
dimitri's avatar
dimitri committed
47 48 49 50 51
  <td ><b><font size="+1" color="#ffffff"> Language </font></b></td>
  <td ><b><font size="+1" color="#ffffff"> Maintainer </font></b></td>
  <td ><b><font size="+1" color="#ffffff"> Contact address </font>
          <font size="-2" color="#ffffff">(replace the at and dot)</font></b></td>
  <td ><b><font size="+1" color="#ffffff"> Status </font></b></td>
dimitri's avatar
dimitri committed
52 53 54
  </tr>
  <!-- table content begin -->

dimitri's avatar
dimitri committed
55 56 57
  <tr bgcolor="#ffffff">
    <td>Afrikaans</td>
    <td>Johan Prinsloo</td>
dimitri's avatar
dimitri committed
58
    <td>johan at zippysnoek dot com</td>
dimitri's avatar
dimitri committed
59
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
60
  </tr>
dimitri's avatar
dimitri committed
61 62 63
  <tr bgcolor="#ffffff">
    <td>Arabic</td>
    <td>Moaz Reyad</td>
dimitri's avatar
dimitri committed
64
    <td>moazreyad at yahoo dot com</td>
dimitri's avatar
dimitri committed
65 66
    <td>1.4.6</td>
  </tr>
dimitri's avatar
dimitri committed
67 68 69
  <tr bgcolor="#ffffff">
    <td>Brazilian Portuguese</td>
    <td>Fabio "FJTC" Jun Takada Chino</td>
dimitri's avatar
dimitri committed
70
    <td>jun-chino at uol dot com dot br</td>
dimitri's avatar
dimitri committed
71
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
72 73 74
  </tr>
  <tr bgcolor="#ffffff">
    <td>Catalan</td>
dimitri's avatar
dimitri committed
75 76
    <td>Maximiliano Pin<br/>Albert Mora</td>
    <td>max.pin at bitroit dot com<br/>amora at iua dot upf dot es</td>
dimitri's avatar
dimitri committed
77
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
78 79 80
  </tr>
  <tr bgcolor="#ffffff">
    <td>Chinese</td>
dimitri's avatar
dimitri committed
81 82
    <td>Li Daobing<br/>Wei Liu</td>
    <td>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
dimitri's avatar
dimitri committed
83
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
84 85 86
  </tr>
  <tr bgcolor="#ffffff">
    <td>Chinese Traditional</td>
dimitri's avatar
dimitri committed
87 88
    <td>Daniel YC Lin<br/>Gary Lee</td>
    <td>dlin.tw at gmail dot com<br/>garywlee at gmail dot com</td>
dimitri's avatar
dimitri committed
89
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
90 91 92 93
  </tr>
  <tr bgcolor="#ffffff">
    <td>Croatian</td>
    <td>Boris Bralo</td>
dimitri's avatar
dimitri committed
94
    <td>boris.bralo at zg dot htnet dot hr</td>
dimitri's avatar
dimitri committed
95
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
96 97 98 99
  </tr>
  <tr bgcolor="#ffffff">
    <td>Czech</td>
    <td>Petr P&#x0159;ikryl</td>
dimitri's avatar
dimitri committed
100
    <td>prikrylp at skil dot cz</td>
dimitri's avatar
dimitri committed
101
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
102 103 104 105
  </tr>
  <tr bgcolor="#ffffff">
    <td>Danish</td>
    <td>Erik S&oslash;e S&oslash;rensen</td>
dimitri's avatar
dimitri committed
106
    <td>eriksoe+doxygen at daimi dot au dot dk</td>
dimitri's avatar
dimitri committed
107
    <td>1.5.4</td>
dimitri's avatar
dimitri committed
108 109 110 111
  </tr>
  <tr bgcolor="#ffffff">
    <td>Dutch</td>
    <td>Dimitri van Heesch</td>
dimitri's avatar
dimitri committed
112
    <td>dimitri at stack dot nl</td>
dimitri's avatar
dimitri committed
113
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
114 115 116 117
  </tr>
  <tr bgcolor="#ffffff">
    <td>English</td>
    <td>Dimitri van Heesch</td>
dimitri's avatar
dimitri committed
118
    <td>dimitri at stack dot nl</td>
dimitri's avatar
dimitri committed
119 120
    <td>up-to-date</td>
  </tr>
dimitri's avatar
dimitri committed
121 122 123 124
  <tr bgcolor="#ffffff">
    <td>Esperanto</td>
    <td>Ander Martinez</td>
    <td>dwarfnauko at gmail dot com</td>
dimitri's avatar
dimitri committed
125
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
126
  </tr>
dimitri's avatar
dimitri committed
127 128
  <tr bgcolor="#ffffff">
    <td>Finnish</td>
dimitri's avatar
dimitri committed
129 130
    <td>Antti Laine</td>
    <td>antti.a.laine at tut dot fi</td>
dimitri's avatar
dimitri committed
131
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
132 133 134 135
  </tr>
  <tr bgcolor="#ffffff">
    <td>French</td>
    <td>Xavier Outhier</td>
dimitri's avatar
dimitri committed
136
    <td>xouthier at yahoo dot fr</td>
dimitri's avatar
dimitri committed
137
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
138 139 140 141
  </tr>
  <tr bgcolor="#ffffff">
    <td>German</td>
    <td>Jens Seidel</td>
dimitri's avatar
dimitri committed
142
    <td>jensseidel at users dot sf dot net</td>
dimitri's avatar
dimitri committed
143
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
144 145 146
  </tr>
  <tr bgcolor="#ffffff">
    <td>Greek</td>
dimitri's avatar
dimitri committed
147 148
    <td>Paul Gessos</td>
    <td>nickreserved at yahoo dot com</td>
dimitri's avatar
dimitri committed
149
    <td>1.5.4</td>
dimitri's avatar
dimitri committed
150 151 152
  </tr>
  <tr bgcolor="#ffffff">
    <td>Hungarian</td>
dimitri's avatar
dimitri committed
153 154
    <td>&Aacute;kos Kiss<br/>F&ouml;ldv&aacute;ri Gy&ouml;rgy</td>
    <td>akiss at users dot sourceforge dot net<br/>foldvari lost at cyberspace</td>
dimitri's avatar
dimitri committed
155
    <td>1.4.6</td>
dimitri's avatar
dimitri committed
156
  </tr>
dimitri's avatar
dimitri committed
157 158 159 160
  <tr bgcolor="#ffffff">
    <td>Indonesian</td>
    <td>Hendy Irawan</td>
    <td>ceefour at gauldong dot net</td>
dimitri's avatar
dimitri committed
161
    <td>1.4.6</td>
dimitri's avatar
dimitri committed
162
  </tr>
dimitri's avatar
dimitri committed
163 164
  <tr bgcolor="#ffffff">
    <td>Italian</td>
dimitri's avatar
dimitri committed
165 166
    <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
    <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
dimitri's avatar
dimitri committed
167
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
168 169 170
  </tr>
  <tr bgcolor="#ffffff">
    <td>Japanese</td>
dimitri's avatar
dimitri committed
171 172
    <td>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
    <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>
dimitri's avatar
dimitri committed
173
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
174 175 176 177 178 179 180 181 182
  </tr>
  <tr bgcolor="#ffffff">
    <td>JapaneseEn</td>
    <td>see the Japanese language</td>
    <td>&nbsp;</td>
    <td>English based</td>
  </tr>
  <tr bgcolor="#ffffff">
    <td>Korean</td>
dimitri's avatar
dimitri committed
183 184
    <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
    <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/>ryk at dspwiz dot com</td>
dimitri's avatar
dimitri committed
185
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
186 187 188 189 190 191 192
  </tr>
  <tr bgcolor="#ffffff">
    <td>KoreanEn</td>
    <td>see the Korean language</td>
    <td>&nbsp;</td>
    <td>English based</td>
  </tr>
dimitri's avatar
dimitri committed
193 194
  <tr bgcolor="#ffffff">
    <td>Lithuanian</td>
dimitri's avatar
dimitri committed
195 196
    <td>Tomas Simonaitis<br/>Mindaugas Radzius<br/>Aidas Berukstis</td>
    <td>haden at homelan dot lt<br/>mindaugasradzius at takas dot lt<br/>aidasber at takas dot lt</td>
dimitri's avatar
dimitri committed
197
    <td>1.4.6</td>
dimitri's avatar
dimitri committed
198
  </tr>
dimitri's avatar
dimitri committed
199 200 201 202
  <tr bgcolor="#ffffff">
    <td>Macedonian</td>
    <td>Slave Jovanovski</td>
    <td>slavejovanovski at yahoo dot com</td>
dimitri's avatar
dimitri committed
203
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
204
  </tr>
dimitri's avatar
dimitri committed
205 206 207
  <tr bgcolor="#ffffff">
    <td>Norwegian</td>
    <td>Lars Erik Jordet</td>
dimitri's avatar
dimitri committed
208
    <td>lejordet at gmail dot com</td>
dimitri's avatar
dimitri committed
209
    <td>1.4.6</td>
dimitri's avatar
dimitri committed
210
  </tr>
dimitri's avatar
dimitri committed
211 212 213
  <tr bgcolor="#ffffff">
    <td>Persian</td>
    <td>Ali Nadalizadeh</td>
dimitri's avatar
dimitri committed
214
    <td>nadalizadeh at gmail dot com</td>
dimitri's avatar
dimitri committed
215
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
216
  </tr>
dimitri's avatar
dimitri committed
217 218
  <tr bgcolor="#ffffff">
    <td>Polish</td>
dimitri's avatar
dimitri committed
219 220
    <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
    <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>
dimitri's avatar
dimitri committed
221
    <td>up-to-date</td>
dimitri's avatar
dimitri committed
222 223 224 225
  </tr>
  <tr bgcolor="#ffffff">
    <td>Portuguese</td>
    <td>Rui Godinho Lopes</td>
dimitri's avatar
dimitri committed
226
    <td>ruiglopes at yahoo dot com</td>
dimitri's avatar
dimitri committed
227 228 229 230
    <td>1.3.3</td>
  </tr>
  <tr bgcolor="#ffffff">
    <td>Romanian</td>
dimitri's avatar
dimitri committed
231 232
    <td>Ionut Dumitrascu<br/>Alexandru Iosup</td>
    <td>reddumy at yahoo dot com<br/>aiosup at yahoo dot com</td>
dimitri's avatar
dimitri committed
233
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
234 235 236 237
  </tr>
  <tr bgcolor="#ffffff">
    <td>Russian</td>
    <td>Alexandr Chelpanov</td>
dimitri's avatar
dimitri committed
238
    <td>cav at cryptopro dot ru</td>
dimitri's avatar
dimitri committed
239
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
240 241 242 243
  </tr>
  <tr bgcolor="#ffffff">
    <td>Serbian</td>
    <td>Dejan Milosavljevic</td>
dimitri's avatar
dimitri committed
244
    <td>dmilos at email dot com</td>
dimitri's avatar
dimitri committed
245
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
246
  </tr>
dimitri's avatar
dimitri committed
247 248 249 250
  <tr bgcolor="#ffffff">
    <td>SerbianCyrilic</td>
    <td>Nedeljko Stefanovic</td>
    <td>stenedjo at yahoo dot com</td>
dimitri's avatar
dimitri committed
251
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
252
  </tr>
dimitri's avatar
dimitri committed
253 254 255
  <tr bgcolor="#ffffff">
    <td>Slovak</td>
    <td>Stanislav Kudl&aacute;&#x010d;</td>
dimitri's avatar
dimitri committed
256
    <td>skudlac at pobox dot sk</td>
dimitri's avatar
dimitri committed
257 258 259 260
    <td>1.2.18</td>
  </tr>
  <tr bgcolor="#ffffff">
    <td>Slovene</td>
dimitri's avatar
dimitri committed
261
    <td>Matja&#x017e; Ostrover&#x0161;nik</td>
dimitri's avatar
dimitri committed
262
    <td>matjaz.ostroversnik at ostri dot org</td>
dimitri's avatar
dimitri committed
263
    <td>1.4.6</td>
dimitri's avatar
dimitri committed
264 265 266
  </tr>
  <tr bgcolor="#ffffff">
    <td>Spanish</td>
dimitri's avatar
dimitri committed
267 268
    <td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
    <td>bartomeu at loteria3cornella dot com<br/>foltra at puc dot cl<br/>david at grupoikusnet dot com</td>
dimitri's avatar
dimitri committed
269
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
270 271 272 273
  </tr>
  <tr bgcolor="#ffffff">
    <td>Swedish</td>
    <td>Mikael Hallin</td>
dimitri's avatar
dimitri committed
274
    <td>mikaelhallin at yahoo dot se</td>
dimitri's avatar
dimitri committed
275
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
276
  </tr>
dimitri's avatar
dimitri committed
277 278 279 280
  <tr bgcolor="#ffffff">
    <td>Turkish</td>
    <td>Emin Ilker Cetinbas</td>
    <td>niw3 at yahoo dot com</td>
dimitri's avatar
dimitri committed
281
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
282
  </tr>
dimitri's avatar
dimitri committed
283 284 285
  <tr bgcolor="#ffffff">
    <td>Ukrainian</td>
    <td>Olexij Tkatchenko</td>
dimitri's avatar
dimitri committed
286
    <td>olexij.tkatchenko at parcs dot de</td>
dimitri's avatar
dimitri committed
287
    <td>1.4.1</td>
dimitri's avatar
dimitri committed
288
  </tr>
dimitri's avatar
dimitri committed
289 290 291 292
  <tr bgcolor="#ffffff">
    <td>Vietnamese</td>
    <td>Dang Minh Tuan</td>
    <td>tuanvietkey at gmail dot com</td>
dimitri's avatar
dimitri committed
293
    <td>1.6.0</td>
dimitri's avatar
dimitri committed
294
  </tr>
dimitri's avatar
dimitri committed
295 296 297 298 299
  <!-- table content end -->
  </table>
</td>
</tr>
</table>
dimitri's avatar
dimitri committed
300
\endhtmlonly
dimitri's avatar
dimitri committed
301 302


dimitri's avatar
dimitri committed
303 304 305 306 307
\latexonly
\begin{tabular}{|l|l|l|l|}
  \hline 
  {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
  \hline
dimitri's avatar
dimitri committed
308

dimitri's avatar
dimitri committed
309
  \hline
dimitri's avatar
dimitri committed
310
  Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
311
  \hline
dimitri's avatar
dimitri committed
312
  Arabic & Moaz Reyad & {\tt\tiny moazreyad@yahoo.com} & 1.4.6 \\
dimitri's avatar
dimitri committed
313
  \hline
dimitri's avatar
dimitri committed
314
  Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
dimitri's avatar
dimitri committed
315
  \hline
dimitri's avatar
dimitri committed
316
  Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
317
  ~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
dimitri's avatar
dimitri committed
318
  \hline
dimitri's avatar
dimitri committed
319
  Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
320
  ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
dimitri's avatar
dimitri committed
321
  \hline
dimitri's avatar
dimitri committed
322
  Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin.tw@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
323
  ~ & Gary Lee & {\tt\tiny garywlee@gmail.com} & ~ \\
dimitri's avatar
dimitri committed
324
  \hline
dimitri's avatar
dimitri committed
325
  Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.6.0 \\
dimitri's avatar
dimitri committed
326
  \hline
dimitri's avatar
dimitri committed
327
  Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
dimitri's avatar
dimitri committed
328
  \hline
dimitri's avatar
dimitri committed
329
  Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.5.4 \\
dimitri's avatar
dimitri committed
330
  \hline
dimitri's avatar
dimitri committed
331
  Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
dimitri's avatar
dimitri committed
332
  \hline
dimitri's avatar
dimitri committed
333
  English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
dimitri's avatar
dimitri committed
334
  \hline
dimitri's avatar
dimitri committed
335
  Esperanto & Ander Martinez & {\tt\tiny dwarfnauko@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
336
  \hline
dimitri's avatar
dimitri committed
337
  Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & 1.6.0 \\
dimitri's avatar
dimitri committed
338
  \hline
dimitri's avatar
dimitri committed
339
  French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\
dimitri's avatar
dimitri committed
340
  \hline
dimitri's avatar
dimitri committed
341
  German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.0 \\
dimitri's avatar
dimitri committed
342
  \hline
dimitri's avatar
dimitri committed
343
  Greek & Paul Gessos & {\tt\tiny nickreserved@yahoo.com} & 1.5.4 \\
dimitri's avatar
dimitri committed
344
  \hline
dimitri's avatar
dimitri committed
345
  Hungarian & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & 1.4.6 \\
dimitri's avatar
dimitri committed
346
  ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & ~ \\
dimitri's avatar
dimitri committed
347
  \hline
dimitri's avatar
dimitri committed
348
  Indonesian & Hendy Irawan & {\tt\tiny ceefour@gauldong.net} & 1.4.6 \\
dimitri's avatar
dimitri committed
349
  \hline
dimitri's avatar
dimitri committed
350
  Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.6.0 \\
dimitri's avatar
dimitri committed
351
  ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
dimitri's avatar
dimitri committed
352
  \hline
dimitri's avatar
dimitri committed
353
  Japanese & Hiroki Iseri & {\tt\tiny goyoki@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
354
  ~ & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & ~ \\
dimitri's avatar
dimitri committed
355
  ~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\
dimitri's avatar
dimitri committed
356
  ~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
dimitri's avatar
dimitri committed
357
  \hline
dimitri's avatar
dimitri committed
358
  JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
dimitri's avatar
dimitri committed
359
  \hline
dimitri's avatar
dimitri committed
360 361
  Korean & Kim Taedong & {\tt\tiny fly1004@gmail.com} & up-to-date \\
  ~ & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & ~ \\
dimitri's avatar
dimitri committed
362
  ~ & Richard Kim & {\tt\tiny ryk@dspwiz.com} & ~ \\
dimitri's avatar
dimitri committed
363
  \hline
dimitri's avatar
dimitri committed
364
  KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
dimitri's avatar
dimitri committed
365
  \hline
dimitri's avatar
dimitri committed
366
  Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & 1.4.6 \\
dimitri's avatar
dimitri committed
367 368 369
  ~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
  ~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
  \hline
dimitri's avatar
dimitri committed
370
  Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski@yahoo.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
371
  \hline
dimitri's avatar
dimitri committed
372
  Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.4.6 \\
dimitri's avatar
dimitri committed
373
  \hline
dimitri's avatar
dimitri committed
374
  Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
375
  \hline
dimitri's avatar
dimitri committed
376
  Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\
dimitri's avatar
dimitri committed
377
  ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
dimitri's avatar
dimitri committed
378
  ~ & Krzysztof Kral & {\tt\tiny krzysztof.kral@gmail.com} & ~ \\
dimitri's avatar
dimitri committed
379
  \hline
dimitri's avatar
dimitri committed
380
  Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
dimitri's avatar
dimitri committed
381
  \hline
dimitri's avatar
dimitri committed
382
  Romanian & Ionut Dumitrascu & {\tt\tiny reddumy@yahoo.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
383
  ~ & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & ~ \\
dimitri's avatar
dimitri committed
384
  \hline
dimitri's avatar
dimitri committed
385
  Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.6.0 \\
dimitri's avatar
dimitri committed
386
  \hline
dimitri's avatar
dimitri committed
387
  Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
388
  \hline
dimitri's avatar
dimitri committed
389
  SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo@yahoo.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
390
  \hline
dimitri's avatar
dimitri committed
391
  Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
dimitri's avatar
dimitri committed
392
  \hline
dimitri's avatar
dimitri committed
393
  Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ostri.org} & 1.4.6 \\
dimitri's avatar
dimitri committed
394
  \hline
dimitri's avatar
dimitri committed
395
  Spanish & Bartomeu & {\tt\tiny bartomeu@loteria3cornella.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
396
  ~ & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & ~ \\
dimitri's avatar
dimitri committed
397
  ~ & David Vaquero & {\tt\tiny david@grupoikusnet.com} & ~ \\
dimitri's avatar
dimitri committed
398
  \hline
dimitri's avatar
dimitri committed
399
  Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.6.0 \\
dimitri's avatar
dimitri committed
400
  \hline
dimitri's avatar
dimitri committed
401
  Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3@yahoo.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
402
  \hline
dimitri's avatar
dimitri committed
403
  Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.4.1 \\
dimitri's avatar
dimitri committed
404
  \hline
dimitri's avatar
dimitri committed
405
  Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey@gmail.com} & 1.6.0 \\
dimitri's avatar
dimitri committed
406
  \hline
dimitri's avatar
dimitri committed
407 408 409
\end{tabular}
\endlatexonly

mueller's avatar
mueller committed
410 411 412 413 414 415

Most people on the list have indicated that they were also busy
doing other things, so if you want to help to speed things up please 
let them (or me) know.

If you want to add support for a language that is not yet listed 
dimitri's avatar
dimitri committed
416 417
please read the next section.

mueller's avatar
mueller committed
418

dimitri's avatar
dimitri committed
419
<h3>Adding a new language to doxygen</h3>
mueller's avatar
mueller committed
420

dimitri's avatar
dimitri committed
421
This short HOWTO explains how to add support for the new language to Doxygen:
mueller's avatar
mueller committed
422 423 424 425 426 427

Just follow these steps:
<ol>
<li>Tell me for which language you want to add support. If no one else
    is already working on support for that language, you will be 
    assigned as the maintainer for the language. 
dimitri's avatar
dimitri committed
428
<li>Create a copy of translator_en.h and name it 
dimitri's avatar
dimitri committed
429
    translator_\<your_2_letter_country_code\>.h
mueller's avatar
mueller committed
430
    I'll use xx in the rest of this document.
dimitri's avatar
dimitri committed
431 432 433 434
<li>Add definition of the symbol for your language in the configure 
at two places in the script:
  <ol>
  <li>After the <code>f_langs=</code> is statement, in lower case.
dimitri's avatar
dimitri committed
435
  <li>In the string that following <code>\@allowed=</code> in upper case.
dimitri's avatar
dimitri committed
436 437
  </ol>
The rerun the configure script such that is generates src/lang_cfg.h.
dimitri's avatar
dimitri committed
438
This file should now contain a \#define for your language code.
mueller's avatar
mueller committed
439 440 441
<li>Edit language.cpp:
    Add a 
\verbatim
dimitri's avatar
dimitri committed
442
#ifdef LANG_xx
mueller's avatar
mueller committed
443
#include<translator_xx.h>
dimitri's avatar
dimitri committed
444
#endif
mueller's avatar
mueller committed
445
\endverbatim
dimitri's avatar
dimitri committed
446 447
    Remember to use the same symbol LANG_xx that you added to \c lang_cfg.h.
    I.e., the \c xx should be capital letters that identify your language.
dimitri's avatar
dimitri committed
448
    On the other hand, the \c xx inside your \c translator_xx.h should use
dimitri's avatar
dimitri committed
449 450
    lower case.
    <p>Now, in <code>setTranslator()</code> add
mueller's avatar
mueller committed
451
\verbatim
dimitri's avatar
dimitri committed
452
#ifdef LANG_xx
mueller's avatar
mueller committed
453 454 455 456
    else if (L_EQUAL("your_language_name"))
    {
      theTranslator = new TranslatorYourLanguage;
    }
dimitri's avatar
dimitri committed
457
#endif    
mueller's avatar
mueller committed
458
\endverbatim
dimitri's avatar
dimitri committed
459 460 461 462
    after the <code>if { ... }</code>. I.e., it must be placed after the code
    for creating the English translator at the beginning, and before the 
    <code>else { ... }</code> part that creates the translator for the 
    default language (English again).
dimitri's avatar
dimitri committed
463
<li>Edit libdoxygen.pro.in and add \c translator_xx.h to 
dimitri's avatar
dimitri committed
464
    the \c HEADERS line.
mueller's avatar
mueller committed
465 466
<li>Edit <code>translator_xx.h</code>:
   <ul>
dimitri's avatar
dimitri committed
467
   <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> 
dimitri's avatar
dimitri committed
468
       twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at 
dimitri's avatar
dimitri committed
469
       the beginning of the file).
dimitri's avatar
dimitri committed
470 471
   <li>Rename TranslatorEnglish to TranslatorYourLanguage 
   <li>In the member <code>idLanguage()</code> change "english" into the 
dimitri's avatar
dimitri committed
472
     name of your language (use lower case characters only). Depending
dimitri's avatar
dimitri committed
473
     on the language you may also wish to change the member functions 
dimitri's avatar
dimitri committed
474 475
     latexLanguageSupportCommand(), idLanguageCharset() and others
     (you will recognize them when you start the work).
dimitri's avatar
dimitri committed
476 477
   <li>Edit all the strings that are returned by the member functions that 
     start with tr. 
mueller's avatar
mueller committed
478 479 480 481
     Try to match punctuation and capitals!
     To enter special characters (with accents) you can:
     <ul>
     <li>  Enter them directly if your keyboard supports that and you are 
dimitri's avatar
dimitri committed
482 483 484
           using a Latin-1 font. Doxygen will translate the
           characters to proper \f$\mbox{\LaTeX}\f$ and leave the
           HTML and man output for what it is (which is fine, if
dimitri's avatar
dimitri committed
485
           idLanguageCharset() is set correctly).
mueller's avatar
mueller committed
486 487 488 489
     <li>  Use html codes like \&auml; for an a with an umlaut (i.e. &auml;).
           See the HTML specification for the codes.
     </ul>
   </ul>
dimitri's avatar
dimitri committed
490 491
<li>Run configure and make again from the root of the distribution, 
    in order to regenerated the Makefiles.
mueller's avatar
mueller committed
492 493
<li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code> 
    in the config file to generate output in your language.
dimitri's avatar
dimitri committed
494
<li>Send <code>translator_xx.h</code> to me so I can add it to doxygen.
dimitri's avatar
dimitri committed
495 496
    Send also your name and e-mail address to be included in the
    \c maintainers.txt list.
mueller's avatar
mueller committed
497
</ol>
dimitri's avatar
dimitri committed
498

dimitri's avatar
dimitri committed
499

dimitri's avatar
dimitri committed
500 501
<h3>Maintaining a language</h3>

dimitri's avatar
dimitri committed
502 503 504 505 506 507 508 509 510
New versions of doxygen may use new translated sentences.  In such
situation, the \c Translator class requires implementation of new
methods -- its interface changes.  Of course, the English
sentences need to be translated to the other languages.  At least,
new methods have to be implemented by the language-related
translator class; otherwise, doxygen wouldn't even compile.  Waiting
until all language maintainers have translated the new sentences and
sent the results would not be very practical. The following text
describes the usage of translator adapters to solve the problem.
dimitri's avatar
dimitri committed
511 512 513 514 515

<b>The role of Translator Adapters.</b> 
Whenever the \c Translator class interface changes in the new
release, the new class \c TranslatorAdapter_x_y_z is added to the \c
translator_adapter.h file (here x, y, and z are numbers that
dimitri's avatar
dimitri committed
516 517 518
correspond to the current official version of doxygen). All
translators that previously derived from the \c Translator class now
derive from this adapter class.
dimitri's avatar
dimitri committed
519 520 521 522 523 524 525 526 527

The \c TranslatorAdapter_x_y_z class implements the new, required
methods.  If the new method replaces some similar but obsolete
method(s) (e.g. if the number of arguments changed and/or the
functionality of the older method was changed or enriched), the \c
TranslatorAdapter_x_y_z class may use the obsolete method to get the
result which is as close as possible to the older result in the
target language.  If it is not possible, the result (the default
translation) is obtained using the English translator, which is (by
dimitri's avatar
dimitri committed
528
definition) always up-to-date.  
dimitri's avatar
dimitri committed
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601

<b>For example,</b> when the new \c trFile() method with
parameters (to determine the capitalization of the first letter and
the singular/plural form) was introduced to replace the older method
\c trFiles() without arguments, the following code appeared in one
of the translator adapter classes:

\verbatim
    /*! This is the default implementation of the obsolete method
     * used in the documentation of a group before the list of
     * links to documented files.  This is possibly localized.
     */
    virtual QCString trFiles()
    { return "Files"; }

    /*! This is the localized implementation of newer equivalent
     * using the obsolete method trFiles().
     */
    virtual QCString trFile(bool first_capital, bool singular)
    {
      if (first_capital && !singular)
        return trFiles();  // possibly localized, obsolete method
      else
        return english.trFile(first_capital, singular);
    }
\endverbatim

The \c trFiles() is not present in the \c TranslatorEnglish class,
because it was removed as obsolete.  However, it was used until now
and its call was replaced by 

\verbatim
    trFile(true, false)
\endverbatim

in the doxygen source files.  Probably, many language translators
implemented the obsolete method, so it perfectly makes sense to use
the same language dependent result in those cases. The \c
TranslatorEnglish does not implement the old method.  It derives
from the abstract \c Translator class.  On the other hand, the old
translator for a different language does not implement the new \c
trFile() method.  Because of that it is derived from another base
class -- \c TranslatorAdapter_x_y_z. The \c TranslatorAdapter_x_y_z
class have to implement the new, required \c trFile() method.
However, the translator adapter would not be compiled if the \c
trFiles() method was not implemented. This is the reason for
implementing the old method in the translator adapter class (using
the same code, that was removed from the TranslatorEnglish).

The simplest way would be to pass the arguments to the English
translator and to return its result.  Instead, the adapter uses the
old \c trFiles() in one special case -- when the new
<code>trFile(true,&nbsp;false)</code> is called.  This is the
mostly used case at the time of introducing the new method -- see
above.  While this may look too complicated, the technique allows
the developers of the core sources to change the Translator
interface, while the users may not even notice the change.  Of
course, when the new \c trFile() is used with different arguments,
the English result is returned and it will be noticed by non English
users.  Here the maintainer of the language translator should
implement at least that one particular method.

<b>What says the base class of a language translator?</b>
If the language translator class inherits from any adapter class the
maintenance is needed.  In such case, the language translator is not
considered up-to-date.  On the other hand, if the language
translator derives directly from the abstract class \c Translator, the
language translator is up-to-date.

The translator adapter classes are chained so that the older
translator adapter class uses the one-step-newer translator adapter
as the base class.  The newer adapter does less \e adapting work
than the older one.  The oldest adapter class derives (indirectly)
dimitri's avatar
dimitri committed
602 603 604 605 606 607 608 609 610 611 612 613 614 615
from all of the adapter classes.  The name of the adapter class is
chosen so that its suffix is derived from the previous official
version of doxygen that did not need the adapter.  This way, one can
say approximately, when the language translator class was last
updated -- see details below.

The newest translator adapter derives from the abstract \c
TranslatorAdapterBase class that derives directly from the abstract
\c Translator class.  It adds only the private English-translator
member for easy implementation of the default translation inside the
adapter classes, and it also enforces implementation of one method
for noticing the user that the language translation is not up-to-date
(because of that some sentences in the generated files may appear in
English).
dimitri's avatar
dimitri committed
616 617

Once the oldest adapter class is not used by any of the language
dimitri's avatar
dimitri committed
618 619 620
translators, it can be removed from the doxygen project.  The
maintainers should try to reach the state with the minimal number of
translator adapter classes.
dimitri's avatar
dimitri committed
621 622

<b>To simplify the maintenance of the language translator classes</b>
dimitri's avatar
dimitri committed
623
for the supported languages, the \c translator.py Python
dimitri's avatar
dimitri committed
624
script was developed (located in \c doxygen/doc directory). 
dimitri's avatar
dimitri committed
625 626 627
It extracts the important information about obsolete and
new methods from the source files for each of the languages.  
The information is stored in the <em>translator report</em> ASCII file
dimitri's avatar
dimitri committed
628 629 630
(translator_report.txt). 

\htmlonly If you compiled this documentation
dimitri's avatar
dimitri committed
631
from sources and if you have also doxygen sources available the
dimitri's avatar
dimitri committed
632 633
link <a href="../doc/translator_report.txt"
><code>doxygen/doc/translator_report.txt</code></a> should be valid.\endhtmlonly 
dimitri's avatar
dimitri committed
634 635 636

Looking at the base class of the language translator, the script
guesses also the status of the translator -- see the last column of
dimitri's avatar
dimitri committed
637
the table with languages above.  The \c translator.py is called
dimitri's avatar
dimitri committed
638 639 640 641 642 643
automatically when the doxygen documentation is generated.  You can
also run the script manualy whenever you feel that it can help you.
Of course, you are not forced to use the results of the script.  You
can find the same information by looking at the adapter class and
its base classes.

dimitri's avatar
dimitri committed
644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
<b>How should I update my language translator?</b> Firstly, you
should be the language maintainer, or you should let him/her know
about the changes.  The following text was written for the language
maintainers as the primary audience.

There are several approaches to be taken when updating your
language.  If you are not extremely busy, you should always chose
the most radical one.  When the update takes much more time than you
expected, you can always decide use some suitable translator adapter to
finish the changes later and still make your translator working.

<b>The most radical way of updating the language translator</b> is
to make your translator class derive directly 
from the abstract class \c Translator and provide translations for the
methods that are required to be implemented -- the compiler will
tell you if you forgot to implement some of them.  If you are in
doubt, have a look at the \c TranslatorEnglish class to recognize the
purpose of the implemented method.  Looking at the previously used
adapter class may help you sometimes, but it can also be misleading
because the adapter classes do implement also the obsolete methods
(see the previous \c trFiles() example).
dimitri's avatar
dimitri committed
665

dimitri's avatar
dimitri committed
666 667 668 669 670
In other words, the up-to-date language translators do not need the
\c TranslatorAdapter_x_y_z classes at all, and you do not need to
implement anything else than the methods required by the Translator
class (i.e. the pure virtual methods of the \c Translator -- they 
end with <code>=0;</code>).
dimitri's avatar
dimitri committed
671

dimitri's avatar
dimitri committed
672
If everything compiles fine, try to run \c translator.py, and have a
dimitri's avatar
dimitri committed
673
look at the translator report (ASCII file) at the \c doxygen/doc
dimitri's avatar
dimitri committed
674 675
directory. Even if your translator is marked as up-to-date, there
still may be some remarks related to your souce code. Namely, the
dimitri's avatar
dimitri committed
676
obsolete methods--that are not used at all--may be listed in the
dimitri's avatar
dimitri committed
677 678 679 680
section for your language. Simply, remove their code (and run the \c
translator.py again). Also, you will be informed when you forgot to
change the base class of your translator class to some newer adapter
class or directly to the Translator class.
dimitri's avatar
dimitri committed
681

dimitri's avatar
dimitri committed
682 683 684 685
<b>If you do not have time to finish all the updates</b> you should
still start with <em>the most radical approach</em> as described
above.  You can always change the base class to the translator
adapter class that implements all of the not-yet-implemented methods.
dimitri's avatar
dimitri committed
686

dimitri's avatar
dimitri committed
687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713
<b>If you prefer to update your translator gradually</b>, have a look
at \c TranslatorEnglish (the \c translator_en.h file). Inside, you
will find the comments like <code>new since 1.2.4</code> that separate
always a number of methods that were implemented in the stated
version. Do implement the group of methods that are placed below the
comment that uses the same version numbers as your translator adapter
class. (For example, your translator class have to use the \c
TranslatorAdapter_1_2_4, if it does not implement the methods below
the comment <code>new since 1.2.4</code>. When you implement them,
your class should use newer translator adapter.

Run the \c translator.py script occasionaly and give it your \c xx
identification (from \c translator_xx.h) to create the translator
report shorter (also produced faster) -- it will contain only the
information related to your translator. Once you reach the state when
the base class should be changed to some newer adapter, you will see
the note in the translator report.
 
Warning: Don't forget to compile Doxygen to discover, whether it is
compilable. The \c translator.py does not check if everything is
correct with respect to the compiler. Because of that, it may lie
sometimes about the necessary base class.

<b>The most obsolete language translators</b> would lead to
implementation of too complicated adapters. Because of that, doxygen
developers may decide to derive such translators from the \c
TranslatorEnglish class, which is by definition always up-to-date.
dimitri's avatar
dimitri committed
714 715 716 717 718 719 720 721 722 723 724 725 726

When doing so, all the missing methods will be replaced by the
English translation.  This means that not-implemented methods will
always return the English result.  Such translators are marked using
word \c obsolete.  You should read it <b>really obsolete</b>. No
guess about the last update can be done.  

Often, it is possible to construct better result from the obsolete
methods.  Because of that, the translator adapter classes should be
used if possible.  On the other hand, implementation of adapters for
really obsolete translators brings too much maintenance and
run-time overhead.

mueller's avatar
mueller committed
727 728
*/