language.cpp 8.08 KB
Newer Older
Dimitri van Heesch's avatar
Dimitri van Heesch committed
1 2
/******************************************************************************
 *
3
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
4
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
5
 * Copyright (C) 1997-2013 by Dimitri van Heesch.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
6 7
 *
 * Permission to use, copy, modify, and distribute this software and its
8 9
 * documentation under the terms of the GNU General Public License is hereby
 * granted. No representations are made about the suitability of this software
Dimitri van Heesch's avatar
Dimitri van Heesch committed
10 11 12
 * 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
13 14
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
15 16 17
 *
 */

Dimitri van Heesch's avatar
Dimitri van Heesch committed
18
#include "message.h"
19 20
#include "config.h"
#include "util.h"
Dimitri van Heesch's avatar
Dimitri van Heesch committed
21
#include "language.h"
22
#include "lang_cfg.h"
23
#include "translator.h"
Dimitri van Heesch's avatar
Dimitri van Heesch committed
24
#include "translator_en.h"
25
#if !defined(ENGLISH_ONLY)
26
#include "translator_adapter.h"
27
#ifdef LANG_NL
Dimitri van Heesch's avatar
Dimitri van Heesch committed
28
#include "translator_nl.h"
29
#endif
30 31 32
#ifdef LANG_AM
#include "translator_am.h"
#endif
33 34
#ifdef LANG_SV
#include "translator_sv.h"
35 36
#endif
#ifdef LANG_CZ
Dimitri van Heesch's avatar
Dimitri van Heesch committed
37
#include "translator_cz.h"
38 39
#endif
#ifdef LANG_FR
Dimitri van Heesch's avatar
Dimitri van Heesch committed
40
#include "translator_fr.h"
41
#endif
42 43 44
#ifdef LANG_ID
#include "translator_id.h"
#endif
45
#ifdef LANG_IT
Dimitri van Heesch's avatar
Dimitri van Heesch committed
46
#include "translator_it.h"
47 48
#endif
#ifdef LANG_DE
49
#include "translator_de.h"
50 51
#endif
#ifdef LANG_JP
52
#include "translator_jp.h"
53
#endif
54 55 56
#ifdef LANG_JE
#include "translator_je.h"
#endif
57
#ifdef LANG_ES
58
#include "translator_es.h"
59
#endif
60 61 62
#ifdef LANG_EO
#include "translator_eo.h"
#endif
63
#ifdef LANG_FI
64
#include "translator_fi.h"
65 66
#endif
#ifdef LANG_RU
67
#include "translator_ru.h"
68 69
#endif
#ifdef LANG_HR
70
#include "translator_hr.h"
71 72
#endif
#ifdef LANG_PL
73
#include "translator_pl.h"
74 75
#endif
#ifdef LANG_PT
Dimitri van Heesch's avatar
Dimitri van Heesch committed
76
#include "translator_pt.h"
77 78
#endif
#ifdef LANG_HU
79
#include "translator_hu.h"
80
#endif
81 82 83
#ifdef LANG_KE
#include "translator_ke.h"
#endif
84
#ifdef LANG_KR
Dimitri van Heesch's avatar
Dimitri van Heesch committed
85
#include "translator_kr.h"
86 87
#endif
#ifdef LANG_RO
Dimitri van Heesch's avatar
Dimitri van Heesch committed
88
#include "translator_ro.h"
89 90
#endif
#ifdef LANG_SI
91
#include "translator_si.h"
92 93
#endif
#ifdef LANG_CN
94
#include "translator_cn.h"
95
#endif
96 97 98
#ifdef LANG_TW
#include "translator_tw.h"
#endif
99
#ifdef LANG_NO
Dimitri van Heesch's avatar
Dimitri van Heesch committed
100
#include "translator_no.h"
101 102
#endif
#ifdef LANG_BR
103
#include "translator_br.h"
104 105
#endif
#ifdef LANG_DK
Dimitri van Heesch's avatar
Dimitri van Heesch committed
106
#include "translator_dk.h"
107 108
#endif
#ifdef LANG_SK
Dimitri van Heesch's avatar
Dimitri van Heesch committed
109
#include "translator_sk.h"
110 111
#endif
#ifdef LANG_UA
112
#include "translator_ua.h"
113
#endif
Dimitri van Heesch's avatar
Dimitri van Heesch committed
114 115 116
#ifdef LANG_GR
#include "translator_gr.h"
#endif
117 118 119
#ifdef LANG_SR
#include "translator_sr.h"
#endif
120 121 122
#ifdef LANG_CA
#include "translator_ca.h"
#endif
Dimitri van Heesch's avatar
Dimitri van Heesch committed
123 124 125
//#ifdef LANG_JS
//#include "translator_js.h"
//#endif
126 127 128
#ifdef LANG_LT
#include "translator_lt.h"
#endif
129 130 131
#ifdef LANG_LV
#include "translator_lv.h"
#endif
132 133 134
#ifdef LANG_ZA
#include "translator_za.h"
#endif
135 136
#ifdef LANG_AR
#include "translator_ar.h"
137
#endif
138 139 140
#ifdef LANG_FA
#include "translator_fa.h"
#endif
141 142 143
#ifdef LANG_MK
#include "translator_mk.h"
#endif
144 145 146
#ifdef LANG_SC
#include "translator_sc.h"
#endif
147 148 149
#ifdef LANG_VI
#include "translator_vi.h"
#endif
150 151 152
#ifdef LANG_TR
#include "translator_tr.h"
#endif
153
#endif // !ENGLISH_ONLY
Dimitri van Heesch's avatar
Dimitri van Heesch committed
154

Dimitri van Heesch's avatar
Dimitri van Heesch committed
155
#define L_EQUAL(a) !qstricmp(langName,a)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
156 157 158

Translator *theTranslator=0;

159 160 161 162 163 164 165 166 167 168
static const char obsoleteMsg[] =
        "---------\n"
        "ERROR: The selected language is no longer supported!\n"
        "If you want doxygen to produce output in this language \n"
        "you are kindly requested to help bringing the documentation \n"
        "up to date. Please read the development section of the manual \n"
        "for more information or contact Petr Prikryl (Prikryl@skil.cz).\n"
        "Thanks in advance!\n"
        "---------\n";

Dimitri van Heesch's avatar
Dimitri van Heesch committed
169 170 171 172
bool setTranslator(const char *langName)
{
  if (L_EQUAL("english"))
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
173
    theTranslator=new TranslatorEnglish;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
174
  }
175
#if !defined(ENGLISH_ONLY)
176
#ifdef LANG_NL
Dimitri van Heesch's avatar
Dimitri van Heesch committed
177 178 179 180
  else if (L_EQUAL("dutch"))
  {
    theTranslator=new TranslatorDutch;
  }
181
#endif
182
#ifdef LANG_AM
183
  else if (L_EQUAL("armenian"))
184 185 186 187
  {
    theTranslator=new TranslatorArmenian;
  }
#endif
188
#ifdef LANG_SV
Dimitri van Heesch's avatar
Dimitri van Heesch committed
189 190
  else if (L_EQUAL("swedish"))
  {
191
    theTranslator=new TranslatorSwedish;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
192
  }
193 194
#endif
#ifdef LANG_CZ
Dimitri van Heesch's avatar
Dimitri van Heesch committed
195 196
  else if (L_EQUAL("czech"))
  {
197
    theTranslator=new TranslatorCzech;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
198
  }
199
#endif
200
#ifdef LANG_FR
Dimitri van Heesch's avatar
Dimitri van Heesch committed
201 202
  else if (L_EQUAL("french"))
  {
203
    theTranslator=new TranslatorFrench;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
204
  }
205
#endif
206
#ifdef LANG_ID
207 208
  else if (L_EQUAL("indonesian"))
  {
209
    theTranslator=new TranslatorIndonesian;
210 211
  }
#endif
212
#ifdef LANG_IT
Dimitri van Heesch's avatar
Dimitri van Heesch committed
213 214
  else if (L_EQUAL("italian"))
  {
215
    theTranslator=new TranslatorItalian;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
216
  }
217 218
#endif
#ifdef LANG_DE
219 220
  else if (L_EQUAL("german"))
  {
221
    theTranslator=new TranslatorGerman;
222
  }
223 224
#endif
#ifdef LANG_JP
225 226
  else if (L_EQUAL("japanese"))
  {
227
    theTranslator=new TranslatorJapanese;
228
  }
229 230
#endif
#ifdef LANG_JE
231 232
  else if (L_EQUAL("japanese-en"))
  {
233
    theTranslator=new TranslatorJapaneseEn;
234
  }
235 236
#endif
#ifdef LANG_ES
237 238
  else if (L_EQUAL("spanish"))
  {
239
    theTranslator=new TranslatorSpanish;
240
  }
241 242
#endif
#ifdef LANG_FI
243 244
  else if (L_EQUAL("finnish"))
  {
245
    theTranslator=new TranslatorFinnish;
246
  }
247 248
#endif
#ifdef LANG_RU
249 250
  else if (L_EQUAL("russian"))
  {
251
    theTranslator=new TranslatorRussian;
252
  }
253 254
#endif
#ifdef LANG_HR
255 256
  else if (L_EQUAL("croatian"))
  {
257
    theTranslator=new TranslatorCroatian;
258
  }
259 260
#endif
#ifdef LANG_PL
261 262
  else if (L_EQUAL("polish"))
  {
263
    theTranslator=new TranslatorPolish;
264
  }
265 266
#endif
#ifdef LANG_PT
Dimitri van Heesch's avatar
Dimitri van Heesch committed
267 268
  else if (L_EQUAL("portuguese"))
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
269
    theTranslator=new TranslatorPortuguese;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
270
  }
271 272
#endif
#ifdef LANG_HU
273 274
  else if (L_EQUAL("hungarian"))
  {
275
    theTranslator=new TranslatorHungarian;
276
  }
277 278
#endif
#ifdef LANG_KR
Dimitri van Heesch's avatar
Dimitri van Heesch committed
279 280
  else if (L_EQUAL("korean"))
  {
281
    theTranslator=new TranslatorKorean;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
282
  }
283 284
#endif
#ifdef LANG_KE
285 286
  else if (L_EQUAL("korean-en"))
  {
287
    theTranslator=new TranslatorKoreanEn;
288
  }
289 290
#endif
#ifdef LANG_RO
Dimitri van Heesch's avatar
Dimitri van Heesch committed
291 292
  else if (L_EQUAL("romanian"))
  {
293
    theTranslator=new TranslatorRomanian;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
294
  }
295 296
#endif
#ifdef LANG_SI
297 298
  else if (L_EQUAL("slovene"))
  {
299
    theTranslator=new TranslatorSlovene;
300
  }
301 302
#endif
#ifdef LANG_CN
303 304
  else if (L_EQUAL("chinese"))
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
305
    theTranslator=new TranslatorChinese;
306
  }
307
#endif
308 309 310
#ifdef LANG_TW
  else if (L_EQUAL("chinese-traditional"))
  {
311
    theTranslator=new TranslatorChinesetraditional;
312 313
  }
#endif
314
#ifdef LANG_NO
315 316
  else if (L_EQUAL("norwegian"))
  {
317
    theTranslator=new TranslatorNorwegian;
318
  }
319 320
#endif
#ifdef LANG_BR
321 322
  else if (L_EQUAL("brazilian"))
  {
323
    theTranslator=new TranslatorBrazilian;
324
  }
325 326
#endif
#ifdef LANG_DK
Dimitri van Heesch's avatar
Dimitri van Heesch committed
327 328
  else if (L_EQUAL("danish"))
  {
329
    theTranslator=new TranslatorDanish;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
330
  }
331 332
#endif
#ifdef LANG_SK
Dimitri van Heesch's avatar
Dimitri van Heesch committed
333 334
  else if (L_EQUAL("slovak"))
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
335
    theTranslator=new TranslatorSlovak;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
336
  }
337 338
#endif
#ifdef LANG_UA
339 340
  else if (L_EQUAL("ukrainian"))
  {
341
    theTranslator=new TranslatorUkrainian;
342
  }
343
#endif
Dimitri van Heesch's avatar
Dimitri van Heesch committed
344 345 346
#ifdef LANG_GR
  else if (L_EQUAL("greek"))
  {
347
    theTranslator=new TranslatorGreek;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
348 349
  }
#endif
350 351 352
#ifdef LANG_SR
  else if (L_EQUAL("serbian"))
  {
353
    theTranslator=new TranslatorSerbian;
354
  }
355 356
#endif
#ifdef LANG_SC
357
  else if (L_EQUAL("serbian-cyrillic") || L_EQUAL("serbiancyr")) /* serbiancyr for consistency with older versions */
358
  {
359
    theTranslator=new TranslatorSerbianCyrillic;
360
  }
361
#endif
Dimitri van Heesch's avatar
Dimitri van Heesch committed
362 363 364
#ifdef LANG_CA
  else if (L_EQUAL("catalan"))
  {
365
    theTranslator=new TranslatorCatalan;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
366 367
  }
#endif
368 369 370
#ifdef LANG_LT
  else if (L_EQUAL("lithuanian"))
  {
371
    theTranslator=new TranslatorLithuanian;
372 373
  }
#endif
374 375 376
#ifdef LANG_LV
  else if (L_EQUAL("latvian"))
  {
377
    theTranslator=new TranslatorLatvian;
378 379
  }
#endif
380 381 382
#ifdef LANG_ZA
  else if (L_EQUAL("afrikaans"))
  {
383
    theTranslator=new TranslatorAfrikaans;
384 385
  }
#endif
386 387 388
#ifdef LANG_AR
  else if (L_EQUAL("arabic"))
  {
389
    theTranslator=new TranslatorArabic;
390 391 392
  }
#endif
#ifdef LANG_FA
Dimitri van Heesch's avatar
Dimitri van Heesch committed
393
  else if (L_EQUAL("persian") || L_EQUAL("farsi"))
394
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
395
    theTranslator=new TranslatorPersian;
396 397
  }
#endif
398 399 400 401 402 403
#ifdef LANG_MK
  else if (L_EQUAL("macedonian"))
  {
    theTranslator=new TranslatorMacedonian;
  }
#endif
404 405 406 407 408 409
#ifdef LANG_VI
  else if (L_EQUAL("vietnamese"))
  {
    theTranslator=new TranslatorVietnamese;
  }
#endif
410 411 412 413 414 415
#ifdef LANG_TR
  else if (L_EQUAL("turkish"))
  {
    theTranslator=new TranslatorTurkish;
  }
#endif
416 417 418 419 420 421
#ifdef LANG_EO
  else if (L_EQUAL("esperanto"))
  {
    theTranslator=new TranslatorEsperanto;
  }
#endif
422
#endif // ENGLISH_ONLY
Dimitri van Heesch's avatar
Dimitri van Heesch committed
423 424
  else // use the default language (i.e. english)
  {
Dimitri van Heesch's avatar
Dimitri van Heesch committed
425
    theTranslator=new TranslatorEnglish;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
426 427
    return FALSE;
  }
428

Dimitri van Heesch's avatar
Dimitri van Heesch committed
429
  QCString msg = theTranslator->updateNeededMessage();
430
  if (!msg.isEmpty()) warn_uncond(msg);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
431 432
  return TRUE;
}