language.doc 31.4 KB
Newer Older
1
/******************************************************************************
2
 * Do not edit this file. It was generated by the translator.py script. 
3
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
4
 * Copyright (C) 1997-2013 by Dimitri van Heesch.
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 van Heesch's avatar
Dimitri van Heesch 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.
14 15 16 17 18 19
 *
 */
/*! \page langhowto Internationalization

<h3>Support for multiple languages</h3>

20 21 22 23
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).
24

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

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

40
\htmlonly
41
<table align="center" cellspacing="0" cellpadding="0" border="0">
42 43
<tr bgcolor="#000000">
<td>
44
  <table cellspacing="1" cellpadding="2" border="0">
45
  <tr bgcolor="#4040c0">
46 47 48 49 50
  <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>
51 52 53
  </tr>
  <!-- table content begin -->

54 55 56
  <tr bgcolor="#ffffff">
    <td>Afrikaans</td>
    <td>Johan Prinsloo</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
57
    <td>johan at zippysnoek dot com</td>
58
    <td>1.6.0</td>
59
  </tr>
60 61
  <tr bgcolor="#ffffff">
    <td>Arabic</td>
62 63
    <td>Moaz Reyad<br/>Muhammad Bashir Al-Noimi</td>
    <td><span style="color: brown">[resigned]</span><br/>mbnoimi at gmail dot com</td>
64 65
    <td>1.4.6</td>
  </tr>
66 67 68 69
  <tr bgcolor="#ffffff">
    <td>Armenian</td>
    <td>Armen Tangamyan</td>
    <td>armen dot tangamyan at anu dot edu dot au</td>
70
    <td>1.8.0</td>
71
  </tr>
72 73 74
  <tr bgcolor="#ffffff">
    <td>Brazilian Portuguese</td>
    <td>Fabio "FJTC" Jun Takada Chino</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
75
    <td>jun-chino at uol dot com dot br</td>
76
    <td>1.8.0</td>
77 78 79
  </tr>
  <tr bgcolor="#ffffff">
    <td>Catalan</td>
80
    <td>Maximiliano Pin<br/>Albert Mora</td>
81
    <td>max dot pin at bitroit dot com<br/><span style="color: brown">[unreachable]</span></td>
82
    <td>1.8.0</td>
83 84 85
  </tr>
  <tr bgcolor="#ffffff">
    <td>Chinese</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
86
    <td>Lian Yang<br/>Li Daobing<br/>Wei Liu</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
87
    <td>lian dot yang dot cn at gmail dot com<br/>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
88
    <td>1.8.2</td>
89 90 91
  </tr>
  <tr bgcolor="#ffffff">
    <td>Chinese Traditional</td>
92
    <td>Daniel YC Lin<br/>Gary Lee</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
93
    <td>dlin dot tw at gmail dot com<br/>garywlee at gmail dot com</td>
94
    <td>up-to-date</td>
95 96 97 98
  </tr>
  <tr bgcolor="#ffffff">
    <td>Croatian</td>
    <td>Boris Bralo</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
99
    <td>boris dot bralo at gmail dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
100
    <td>1.8.2</td>
101 102 103
  </tr>
  <tr bgcolor="#ffffff">
    <td>Czech</td>
104
    <td>Petr Přikryl</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
105
    <td>prikryl at atlas dot cz</td>
106
    <td>up-to-date</td>
107 108 109
  </tr>
  <tr bgcolor="#ffffff">
    <td>Danish</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
110 111
    <td>Poul-Erik Hansen<br/>Erik Søe Sørensen</td>
    <td>pouhan at gnotometrics dot dk<br/>eriksoe+doxygen at daimi dot au dot dk</td>
112
    <td>1.8.0</td>
113 114 115 116
  </tr>
  <tr bgcolor="#ffffff">
    <td>Dutch</td>
    <td>Dimitri van Heesch</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
117
    <td>dimitri at stack dot nl</td>
118
    <td>up-to-date</td>
119 120 121 122
  </tr>
  <tr bgcolor="#ffffff">
    <td>English</td>
    <td>Dimitri van Heesch</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
123
    <td>dimitri at stack dot nl</td>
124 125
    <td>up-to-date</td>
  </tr>
126 127
  <tr bgcolor="#ffffff">
    <td>Esperanto</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
128 129
    <td>Ander Martínez</td>
    <td>ander dot basaundi at gmail dot com</td>
130
    <td>1.8.4</td>
131
  </tr>
132 133
  <tr bgcolor="#ffffff">
    <td>Finnish</td>
134
    <td>Antti Laine</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
135
    <td>antti dot a dot laine at tut dot fi</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
136
    <td>1.6.0</td>
137 138 139
  </tr>
  <tr bgcolor="#ffffff">
    <td>French</td>
140 141 142
    <td>David Martinet<br/>Xavier Outhier<br/>Benoît BROSSE</td>
    <td>contact at e-concept-applications dot fr<br/>xouthier at yahoo dot fr<br/>Benoit dot BROSSE at ingenico dot com</td>
    <td>up-to-date</td>
143 144 145
  </tr>
  <tr bgcolor="#ffffff">
    <td>German</td>
146 147
    <td>Peter Grotrian<br/>Jens Seidel</td>
    <td>Peter dot Grotrian at pdv-FS dot de<br/>jensseidel at users dot sf dot net</td>
148
    <td>1.8.4</td>
149 150 151
  </tr>
  <tr bgcolor="#ffffff">
    <td>Greek</td>
152
    <td>Paul Gessos</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
153
    <td>gessos dot paul at yahoo dot gr</td>
154
    <td>1.8.4</td>
155 156 157
  </tr>
  <tr bgcolor="#ffffff">
    <td>Hungarian</td>
158
    <td>Ákos Kiss<br/>Földvári György</td>
159
    <td>akiss at users dot sourceforge dot net<br/><span style="color: brown">[unreachable]</span></td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
160
    <td>1.4.6</td>
161
  </tr>
162 163 164 165
  <tr bgcolor="#ffffff">
    <td>Indonesian</td>
    <td>Hendy Irawan</td>
    <td>ceefour at gauldong dot net</td>
166
    <td>1.8.0</td>
167
  </tr>
168 169
  <tr bgcolor="#ffffff">
    <td>Italian</td>
170 171
    <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
    <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
172
    <td>1.8.2</td>
173 174 175
  </tr>
  <tr bgcolor="#ffffff">
    <td>Japanese</td>
176
    <td>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
177
    <td>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/>naga at joyful dot club dot ne dot jp<br/><span style="color: brown">[unreachable]</span></td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
178
    <td>1.6.0</td>
179 180 181 182 183 184 185 186 187
  </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>
188
    <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
189
    <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/><span style="color: brown">[unreachable]</span></td>
190
    <td>up-to-date</td>
191 192 193 194 195 196 197
  </tr>
  <tr bgcolor="#ffffff">
    <td>KoreanEn</td>
    <td>see the Korean language</td>
    <td>&nbsp;</td>
    <td>English based</td>
  </tr>
198 199 200 201 202 203
  <tr bgcolor="#ffffff">
    <td>Latvian</td>
    <td>Lauris</td>
    <td>lauris at nix.lv</td>
    <td>up-to-date</td>
  </tr>
204 205
  <tr bgcolor="#ffffff">
    <td>Lithuanian</td>
206 207
    <td>Tomas Simonaitis<br/>Mindaugas Radzius<br/>Aidas Berukstis<br/><span style="color: red; background-color: yellow">-- searching for the maintainer --</span></td>
    <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[Please, try to help to find someone.]</span></td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
208
    <td>1.4.6</td>
209
  </tr>
210 211 212 213
  <tr bgcolor="#ffffff">
    <td>Macedonian</td>
    <td>Slave Jovanovski</td>
    <td>slavejovanovski at yahoo dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
214
    <td>1.6.0</td>
215
  </tr>
216 217 218
  <tr bgcolor="#ffffff">
    <td>Norwegian</td>
    <td>Lars Erik Jordet</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
219
    <td>lejordet at gmail dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
220
    <td>1.4.6</td>
221
  </tr>
222 223 224
  <tr bgcolor="#ffffff">
    <td>Persian</td>
    <td>Ali Nadalizadeh</td>
225
    <td>nadalizadeh at gmail dot com</td>
226
    <td>1.7.5</td>
227
  </tr>
228 229
  <tr bgcolor="#ffffff">
    <td>Polish</td>
230
    <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
231
    <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/>krzysztof dot kral at gmail dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
232
    <td>1.8.2</td>
233 234 235
  </tr>
  <tr bgcolor="#ffffff">
    <td>Portuguese</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
236 237
    <td>Rui Godinho Lopes<br/>Fabio "FJTC" Jun Takada Chino</td>
    <td><span style="color: brown">[resigned]</span><br/>jun-chino at uol dot com dot br</td>
238
    <td>1.8.0</td>
239 240 241
  </tr>
  <tr bgcolor="#ffffff">
    <td>Romanian</td>
242 243
    <td>Ionut Dumitrascu<br/>Alexandru Iosup</td>
    <td>reddumy at yahoo dot com<br/>aiosup at yahoo dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
244
    <td>up-to-date</td>
245 246 247 248
  </tr>
  <tr bgcolor="#ffffff">
    <td>Russian</td>
    <td>Alexandr Chelpanov</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
249
    <td>cav at cryptopro dot ru</td>
250
    <td>1.7.5</td>
251 252 253 254
  </tr>
  <tr bgcolor="#ffffff">
    <td>Serbian</td>
    <td>Dejan Milosavljevic</td>
255
    <td><span style="color: brown">[unreachable]</span></td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
256
    <td>1.6.0</td>
257
  </tr>
258 259 260 261
  <tr bgcolor="#ffffff">
    <td>SerbianCyrilic</td>
    <td>Nedeljko Stefanovic</td>
    <td>stenedjo at yahoo dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
262
    <td>1.6.0</td>
263
  </tr>
264 265
  <tr bgcolor="#ffffff">
    <td>Slovak</td>
266
    <td>Kali+Laco Švec<br/>Petr Přikryl</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
267
    <td><span style="color: brown">[the Slovak language advisors]</span><br/>prikryl at atlas dot cz</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
268
    <td>up-to-date</td>
269 270 271
  </tr>
  <tr bgcolor="#ffffff">
    <td>Slovene</td>
272
    <td>Matjaž Ostroveršnik</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
273
    <td>matjaz dot ostroversnik at ostri dot org</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
274
    <td>1.4.6</td>
275 276 277
  </tr>
  <tr bgcolor="#ffffff">
    <td>Spanish</td>
278
    <td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
279
    <td>bartomeu at loteria3cornella dot com<br/><span style="color: brown">[unreachable]</span><br/>david at grupoikusnet dot com</td>
280
    <td>up-to-date</td>
281 282 283 284
  </tr>
  <tr bgcolor="#ffffff">
    <td>Swedish</td>
    <td>Mikael Hallin</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
285
    <td>mikaelhallin at yahoo dot se</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
286
    <td>1.6.0</td>
287
  </tr>
288 289 290 291
  <tr bgcolor="#ffffff">
    <td>Turkish</td>
    <td>Emin Ilker Cetinbas</td>
    <td>niw3 at yahoo dot com</td>
292
    <td>1.7.5</td>
293
  </tr>
294 295
  <tr bgcolor="#ffffff">
    <td>Ukrainian</td>
296 297
    <td>Olexij Tkatchenko<br/>Petro  Yermolenko</td>
    <td><span style="color: brown">[resigned]</span><br/>python at i dot ua</td>
298
    <td>1.8.4</td>
299
  </tr>
300 301 302 303
  <tr bgcolor="#ffffff">
    <td>Vietnamese</td>
    <td>Dang Minh Tuan</td>
    <td>tuanvietkey at gmail dot com</td>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
304
    <td>1.6.0</td>
305
  </tr>
306 307 308 309 310
  <!-- table content end -->
  </table>
</td>
</tr>
</table>
311
\endhtmlonly
312 313


314
\latexonly
Dimitri van Heesch's avatar
Dimitri van Heesch committed
315 316
\footnotesize
\begin{longtable}{|l|l|l|l|}
317
  \hline
318 319
  {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
  \hline
320

321
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
322
  Afrikaans & Johan Prinsloo & {\tt\tiny johan at zippysnoek dot com} & 1.6.0 \\
323
  \hline
324
  Arabic & Moaz Reyad & {\tt\tiny [resigned] moazreyad at yahoo dot com} & 1.4.6 \\
325
  ~ & Muhammad Bashir Al-Noimi & {\tt\tiny mbnoimi at gmail dot com} & ~ \\
326
  \hline
327
  Armenian & Armen Tangamyan & {\tt\tiny armen dot tangamyan at anu dot edu dot au} & 1.8.0 \\
328
  \hline
329
  Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & 1.8.0 \\
330
  \hline
331
  Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.8.0 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
332
  ~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\
333
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
334
  Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & 1.8.2 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
335
  ~ & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & ~ \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
336
  ~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\
337
  \hline
338
  Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
339
  ~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\
340
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
341
  Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & 1.8.2 \\
342
  \hline
343
  Czech & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & up-to-date \\
344
  \hline
345
  Danish & Poul-Erik Hansen & {\tt\tiny pouhan at gnotometrics dot dk} & 1.8.0 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
346
  ~ & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & ~ \\
347
  \hline
348
  Dutch & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
349
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
350
  English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
351
  \hline
352
  Esperanto & Ander Martínez & {\tt\tiny ander dot basaundi at gmail dot com} & 1.8.4 \\
353
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
354
  Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\
355
  \hline
356
  French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
357
  ~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\
358
  ~ & Benoît BROSSE & {\tt\tiny Benoit dot BROSSE at ingenico dot com} & ~ \\
359
  \hline
360
  German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.4 \\
361
  ~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\
362
  \hline
363
  Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & 1.8.4 \\
364
  \hline
365 366
  Hungarian & Ákos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\
  ~ & Földvári György & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\
367
  \hline
368
  Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.8.0 \\
369
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
370
  Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.8.2 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
371
  ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\
372
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
373
  Japanese & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & 1.6.0 \\
374
  ~ & Ryunosuke Satoh & {\tt\tiny sun594 at hotmail dot com} & ~ \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
375 376
  ~ & Kenji Nagamatsu & {\tt\tiny naga at joyful dot club dot ne dot jp} & ~ \\
  ~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa at cosmo-system dot jp} & ~ \\
377
  \hline
378
  JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
379
  \hline
380
  Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
381 382
  ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\
  ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\
383
  \hline
384
  KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
385
  \hline
386 387
  Latvian & Lauris & {\tt\tiny lauris at nix.lv} & up-to-date \\
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
388 389 390
  Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden at homelan dot lt} & 1.4.6 \\
  ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius at takas dot lt} & ~ \\
  ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber at takas dot lt} & ~ \\
391
  ~ & -- searching for the maintainer -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\
392
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
393
  Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski at yahoo dot com} & 1.6.0 \\
394
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
395
  Norwegian & Lars Erik Jordet & {\tt\tiny lejordet at gmail dot com} & 1.4.6 \\
396
  \hline
397
  Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & 1.7.5 \\
398
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
399
  Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.8.2 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
400
  ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
401
  ~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\
402
  \hline
403
  Portuguese & Rui Godinho Lopes & {\tt\tiny [resigned] rgl at ruilopes dot com} & 1.8.0 \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
404
  ~ & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & ~ \\
405
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
406
  Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
407
  ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\
408
  \hline
409
  Russian & Alexandr Chelpanov & {\tt\tiny cav at cryptopro dot ru} & 1.7.5 \\
410
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
411
  Serbian & Dejan Milosavljevic & {\tt\tiny [unreachable] dmilos at email dot com} & 1.6.0 \\
412
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
413
  SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\
414
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
415
  Slovak & Kali+Laco Švec & {\tt\tiny [the Slovak language advisors]} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
416
  ~ & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & ~ \\
417
  \hline
418
  Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\
419
  \hline
420
  Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\
Dimitri van Heesch's avatar
Dimitri van Heesch committed
421 422
  ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\
  ~ & David Vaquero & {\tt\tiny david at grupoikusnet dot com} & ~ \\
423
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
424
  Swedish & Mikael Hallin & {\tt\tiny mikaelhallin at yahoo dot se} & 1.6.0 \\
425
  \hline
426
  Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & 1.7.5 \\
427
  \hline
428
  Ukrainian & Olexij Tkatchenko & {\tt\tiny [resigned] olexij at tkatchenko dot com} & 1.8.4 \\
429
  ~ & Petro  Yermolenko & {\tt\tiny python at i dot ua} & ~ \\
430
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
431
  Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey at gmail dot com} & 1.6.0 \\
432
  \hline
Dimitri van Heesch's avatar
Dimitri van Heesch committed
433 434
\end{longtable}
\normalsize
435 436
\endlatexonly

437 438 439 440 441 442

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 
443 444
please read the next section.

445

Dimitri van Heesch's avatar
Dimitri van Heesch committed
446
<h3>Adding a new language to doxygen</h3>
447

448
This short HOWTO explains how to add support for the new language to Doxygen:
449 450 451 452 453 454

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 van Heesch's avatar
Dimitri van Heesch committed
455
<li>Create a copy of translator_en.h and name it 
456
    translator_\<your_2_letter_country_code\>.h
457
    I'll use xx in the rest of this document.
458 459 460 461
<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.
462
  <li>In the string that following <code>\@allowed=</code> in upper case.
463 464
  </ol>
The rerun the configure script such that is generates src/lang_cfg.h.
465
This file should now contain a \#define for your language code.
466 467 468
<li>Edit language.cpp:
    Add a 
\verbatim
469
#ifdef LANG_xx
470
#include<translator_xx.h>
471
#endif
472
\endverbatim
473 474
    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.
475
    On the other hand, the \c xx inside your \c translator_xx.h should use
476 477
    lower case.
    <p>Now, in <code>setTranslator()</code> add
478
\verbatim
479
#ifdef LANG_xx
480 481 482 483
    else if (L_EQUAL("your_language_name"))
    {
      theTranslator = new TranslatorYourLanguage;
    }
484
#endif    
485
\endverbatim
486 487 488 489
    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 van Heesch's avatar
Dimitri van Heesch committed
490
<li>Edit libdoxygen.pro.in and add \c translator_xx.h to 
Dimitri van Heesch's avatar
Dimitri van Heesch committed
491
    the \c HEADERS line.
492 493
<li>Edit <code>translator_xx.h</code>:
   <ul>
494
   <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> 
495
       twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at 
496
       the beginning of the file).
Dimitri van Heesch's avatar
Dimitri van Heesch committed
497 498
   <li>Rename TranslatorEnglish to TranslatorYourLanguage 
   <li>In the member <code>idLanguage()</code> change "english" into the 
Dimitri van Heesch's avatar
Dimitri van Heesch committed
499
     name of your language (use lower case characters only). Depending
Dimitri van Heesch's avatar
Dimitri van Heesch committed
500
     on the language you may also wish to change the member functions 
501 502
     latexLanguageSupportCommand(), idLanguageCharset() and others
     (you will recognize them when you start the work).
Dimitri van Heesch's avatar
Dimitri van Heesch committed
503 504
   <li>Edit all the strings that are returned by the member functions that 
     start with tr. 
505 506 507 508
     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 
509 510 511
           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 van Heesch's avatar
Dimitri van Heesch committed
512
           idLanguageCharset() is set correctly).
513 514 515 516
     <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 van Heesch's avatar
Dimitri van Heesch committed
517 518
<li>Run configure and make again from the root of the distribution, 
    in order to regenerated the Makefiles.
519 520
<li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code> 
    in the config file to generate output in your language.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
521
<li>Send <code>translator_xx.h</code> to me so I can add it to doxygen.
522 523
    Send also your name and e-mail address to be included in the
    \c maintainers.txt list.
524
</ol>
Dimitri van Heesch's avatar
Dimitri van Heesch committed
525

526

Dimitri van Heesch's avatar
Dimitri van Heesch committed
527 528
<h3>Maintaining a language</h3>

529 530 531 532 533 534 535 536 537
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.
538 539 540 541 542

<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
543 544 545
correspond to the current official version of doxygen). All
translators that previously derived from the \c Translator class now
derive from this adapter class.
546 547 548 549 550 551 552 553 554

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
555
definition) always up-to-date.  
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 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628

<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)
629 630 631 632 633 634 635 636 637 638 639 640 641 642
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).
643 644

Once the oldest adapter class is not used by any of the language
645 646 647
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.
648 649

<b>To simplify the maintenance of the language translator classes</b>
650
for the supported languages, the \c translator.py Python
651
script was developed (located in \c doxygen/doc directory). 
652 653
It extracts the important information about obsolete and
new methods from the source files for each of the languages.  
654 655
The information is stored in the translator report ASCII file
(\c translator_report.txt). 
656 657

\htmlonly If you compiled this documentation
658
from sources and if you have also doxygen sources available the
659 660
link <a href="../doc/translator_report.txt"
><code>doxygen/doc/translator_report.txt</code></a> should be valid.\endhtmlonly 
661 662 663

Looking at the base class of the language translator, the script
guesses also the status of the translator -- see the last column of
664
the table with languages above.  The \c translator.py is called
665
automatically when the doxygen documentation is generated.  You can
666
also run the script manually whenever you feel that it can help you.
667 668 669 670
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.

671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691
<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 van Heesch's avatar
Dimitri van Heesch committed
692

693 694 695 696 697
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 van Heesch's avatar
Dimitri van Heesch committed
698

699
If everything compiles fine, try to run \c translator.py, and have a
700
look at the translator report (ASCII file) at the \c doxygen/doc
701
directory. Even if your translator is marked as up-to-date, there
702
still may be some remarks related to your source code. Namely, the
703
obsolete methods--that are not used at all--may be listed in the
704 705 706 707
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 van Heesch's avatar
Dimitri van Heesch committed
708

709 710 711 712
<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 van Heesch's avatar
Dimitri van Heesch committed
713

714 715 716 717 718 719 720 721 722 723 724
<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.

725
Run the \c translator.py script occasionally and give it your \c xx
726 727 728 729 730 731 732 733 734 735 736 737 738 739 740
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 van Heesch's avatar
Dimitri van Heesch committed
741 742 743 744 745 746 747 748 749 750 751 752 753

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.

754 755 756 757 758
\htmlonly
Go to the <a href="perlmod.html">next</a> section or return to the
 <a href="index.html">index</a>.
\endhtmlonly

759 760
*/