~thopiekar/zypper/libzypp-manual-import

« back to all changes in this revision

Viewing changes to zypp/LanguageCode.cc

  • Committer: Thomas-Karl Pietrowski
  • Date: 2014-01-29 22:44:28 UTC
  • Revision ID: thopiekar@googlemail.com-20140129224428-gpcqnsdakby362n8
firstĀ import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*---------------------------------------------------------------------\
 
2
|                          ____ _   __ __ ___                          |
 
3
|                         |__  / \ / / . \ . \                         |
 
4
|                           / / \ V /|  _/  _/                         |
 
5
|                          / /__ | | | | | |                           |
 
6
|                         /_____||_| |_| |_|                           |
 
7
|                                                                      |
 
8
\---------------------------------------------------------------------*/
 
9
/** \file       zypp/LanguageCode.cc
 
10
 *
 
11
*/
 
12
#include <iostream>
 
13
 
 
14
#include "zypp/base/Logger.h"
 
15
#include "zypp/base/String.h"
 
16
#include "zypp/base/Gettext.h"
 
17
#include "zypp/base/Tr1hash.h"
 
18
 
 
19
#include "zypp/LanguageCode.h"
 
20
 
 
21
using std::endl;
 
22
 
 
23
///////////////////////////////////////////////////////////////////
 
24
namespace zypp
 
25
{ /////////////////////////////////////////////////////////////////
 
26
 
 
27
  ///////////////////////////////////////////////////////////////////
 
28
  namespace
 
29
  { /////////////////////////////////////////////////////////////////
 
30
 
 
31
    /** Wrap static codemap data. */
 
32
    struct CodeMaps // singleton
 
33
    {
 
34
      typedef std::tr1::unordered_map<std::string,std::string> CodeMap;
 
35
      typedef CodeMap::const_iterator Index;
 
36
 
 
37
      /** Return the CodeMap Index for \a code_r. */
 
38
      static Index getIndex( const std::string & code_r )
 
39
      {
 
40
        static CodeMaps _maps; // the singleton instance
 
41
        return _maps.lookup( code_r );
 
42
      }
 
43
 
 
44
    private:
 
45
      /** Ctor initializes the code maps.
 
46
       * http://www.loc.gov/standards/iso639-2/ISO-639-2_values_8bits.txt
 
47
      */
 
48
      CodeMaps();
 
49
 
 
50
      /** Make shure the code is in the code maps and return it's index. */
 
51
      inline Index lookup( const std::string & code_r );
 
52
 
 
53
    private:
 
54
      /** All the codes. */
 
55
      CodeMap codes;
 
56
    };
 
57
 
 
58
    inline CodeMaps::Index CodeMaps::lookup( const std::string & code_r )
 
59
    {
 
60
      Index it = codes.find( code_r );
 
61
      if ( it != codes.end() )
 
62
        return it;
 
63
 
 
64
      // not found: Remember a new code
 
65
      CodeMap::value_type nval( code_r, std::string() );
 
66
 
 
67
      if ( code_r.size() > 3 || code_r.size() < 2 )
 
68
        WAR << "Malformed LanguageCode '" << code_r << "' (expect 2 or 3-letter)" << endl;
 
69
 
 
70
      std::string lcode( str::toLower( code_r ) );
 
71
      if ( lcode != code_r )
 
72
        {
 
73
          WAR << "Malformed LanguageCode '" << code_r << "' (not lower case)" << endl;
 
74
          // but maybe we're lucky with the lower case code
 
75
          // and find a language name.
 
76
          it = codes.find( lcode );
 
77
          if ( it != codes.end() )
 
78
            nval.second = it->second;
 
79
        }
 
80
 
 
81
      MIL << "Remember LanguageCode '" << code_r << "': '" << nval.second << "'" << endl;
 
82
      return codes.insert( nval ).first;
 
83
    }
 
84
 
 
85
    /////////////////////////////////////////////////////////////////
 
86
  } // namespace
 
87
  ///////////////////////////////////////////////////////////////////
 
88
 
 
89
  ///////////////////////////////////////////////////////////////////
 
90
  //
 
91
  //    CLASS NAME : LanguageCode::Impl
 
92
  //
 
93
  /** LanguageCode implementation.
 
94
   * \note CodeMaps contain the untranslated language names.
 
95
   * Translation is done in \ref name.
 
96
  */
 
97
  struct LanguageCode::Impl
 
98
  {
 
99
    Impl()
 
100
    : _index( CodeMaps::getIndex( std::string() ) )
 
101
    {}
 
102
 
 
103
    Impl( const std::string & code_r )
 
104
    : _index( CodeMaps::getIndex( code_r ) )
 
105
    {}
 
106
 
 
107
    std::string code() const
 
108
    { return _index->first; }
 
109
 
 
110
    std::string name() const {
 
111
      if ( _index->second.empty() )
 
112
        {
 
113
          std::string ret( _("Unknown language: ") );
 
114
          ret += "'";
 
115
          ret += _index->first;
 
116
          ret += "'";
 
117
          return ret;
 
118
        }
 
119
      return _( _index->second.c_str() );
 
120
    }
 
121
 
 
122
  private:
 
123
    /** index into code map. */
 
124
    CodeMaps::Index _index;
 
125
 
 
126
  public:
 
127
    /** Offer default Impl. */
 
128
    static shared_ptr<Impl> nullimpl()
 
129
    {
 
130
      static shared_ptr<Impl> _nullimpl( new Impl );
 
131
      return _nullimpl;
 
132
    }
 
133
  };
 
134
  ///////////////////////////////////////////////////////////////////
 
135
 
 
136
  ///////////////////////////////////////////////////////////////////
 
137
  //
 
138
  //    CLASS NAME : LanguageCode
 
139
  //
 
140
  ///////////////////////////////////////////////////////////////////
 
141
 
 
142
  const LanguageCode LanguageCode::noCode;
 
143
 
 
144
  ///////////////////////////////////////////////////////////////////
 
145
  //
 
146
  //    METHOD NAME : LanguageCode::LanguageCode
 
147
  //    METHOD TYPE : Ctor
 
148
  //
 
149
  LanguageCode::LanguageCode()
 
150
  : _pimpl( Impl::nullimpl() )
 
151
  {}
 
152
 
 
153
  ///////////////////////////////////////////////////////////////////
 
154
  //
 
155
  //    METHOD NAME : LanguageCode::LanguageCode
 
156
  //    METHOD TYPE : Ctor
 
157
  //
 
158
  LanguageCode::LanguageCode( const std::string & code_r )
 
159
  : _pimpl( new Impl( code_r ) )
 
160
  {}
 
161
 
 
162
  ///////////////////////////////////////////////////////////////////
 
163
  //
 
164
  //    METHOD NAME : LanguageCode::~LanguageCode
 
165
  //    METHOD TYPE : Dtor
 
166
  //
 
167
  LanguageCode::~LanguageCode()
 
168
  {}
 
169
 
 
170
  ///////////////////////////////////////////////////////////////////
 
171
  //
 
172
  //    METHOD NAME : LanguageCode::code
 
173
  //    METHOD TYPE : std::string
 
174
  //
 
175
  std::string LanguageCode::code() const
 
176
  { return _pimpl->code(); }
 
177
 
 
178
  ///////////////////////////////////////////////////////////////////
 
179
  //
 
180
  //    METHOD NAME : LanguageCode::name
 
181
  //    METHOD TYPE : std::string
 
182
  //
 
183
  std::string LanguageCode::name() const
 
184
  { return _pimpl->name(); }
 
185
 
 
186
  ///////////////////////////////////////////////////////////////////
 
187
  namespace
 
188
  { /////////////////////////////////////////////////////////////////
 
189
 
 
190
    CodeMaps::CodeMaps()
 
191
    {
 
192
      // Defined LanguageCode constants
 
193
      codes[""]        = N_("No Code");
 
194
 
 
195
      struct LangInit
 
196
      {
 
197
          const char *iso639_2;
 
198
          const char *iso639_1;
 
199
          const char *name;
 
200
      };
 
201
 
 
202
      // some languages have more than one iso639_2 code
 
203
      // so there are items with duplicate names
 
204
      const LangInit langInit[] = {
 
205
          // language code: aar aa
 
206
          { "aar", "aa", N_( "Afar" ) },
 
207
          // language code: abk ab
 
208
          { "abk", "ab", N_( "Abkhazian" ) },
 
209
          // language code: ace
 
210
          { "ace", NULL, N_( "Achinese" ) },
 
211
          // language code: ach
 
212
          { "ach", NULL, N_( "Acoli" ) },
 
213
          // language code: ada
 
214
          { "ada", NULL, N_( "Adangme" ) },
 
215
          // language code: ady
 
216
          { "ady", NULL, N_( "Adyghe" ) },
 
217
          // language code: afa
 
218
          { "afa", NULL, N_( "Afro-Asiatic (Other)" ) },
 
219
          // language code: afh
 
220
          { "afh", NULL, N_( "Afrihili" ) },
 
221
          // language code: afr af
 
222
          { "afr", "af", N_( "Afrikaans" ) },
 
223
          // language code: ain
 
224
          { "ain", NULL, N_( "Ainu" ) },
 
225
          // language code: aka ak
 
226
          { "aka", "ak", N_( "Akan" ) },
 
227
          // language code: akk
 
228
          { "akk", NULL, N_( "Akkadian" ) },
 
229
          // language code: alb sqi sq
 
230
          { "alb", "sq", N_( "Albanian" ) },
 
231
          // language code: alb sqi sq
 
232
          { "sqi", NULL, N_( "Albanian" ) },
 
233
          // language code: ale
 
234
          { "ale", NULL, N_( "Aleut" ) },
 
235
          // language code: alg
 
236
          { "alg", NULL, N_( "Algonquian Languages" ) },
 
237
          // language code: alt
 
238
          { "alt", NULL, N_( "Southern Altai" ) },
 
239
          // language code: amh am
 
240
          { "amh", "am", N_( "Amharic" ) },
 
241
          // language code: ang
 
242
          { "ang", NULL, N_( "English, Old (ca.450-1100)" ) },
 
243
          // language code: apa
 
244
          { "apa", NULL, N_( "Apache Languages" ) },
 
245
          // language code: ara ar
 
246
          { "ara", "ar", N_( "Arabic" ) },
 
247
          // language code: arc
 
248
          { "arc", NULL, N_( "Aramaic" ) },
 
249
          // language code: arg an
 
250
          { "arg", "an", N_( "Aragonese" ) },
 
251
          // language code: arm hye hy
 
252
          { "arm", "hy", N_( "Armenian" ) },
 
253
          // language code: arm hye hy
 
254
          { "hye", NULL, N_( "Armenian" ) },
 
255
          // language code: arn
 
256
          { "arn", NULL, N_( "Araucanian" ) },
 
257
          // language code: arp
 
258
          { "arp", NULL, N_( "Arapaho" ) },
 
259
          // language code: art
 
260
          { "art", NULL, N_( "Artificial (Other)" ) },
 
261
          // language code: arw
 
262
          { "arw", NULL, N_( "Arawak" ) },
 
263
          // language code: asm as
 
264
          { "asm", "as", N_( "Assamese" ) },
 
265
          // language code: ast
 
266
          { "ast", NULL, N_( "Asturian" ) },
 
267
          // language code: ath
 
268
          { "ath", NULL, N_( "Athapascan Languages" ) },
 
269
          // language code: aus
 
270
          { "aus", NULL, N_( "Australian Languages" ) },
 
271
          // language code: ava av
 
272
          { "ava", "av", N_( "Avaric" ) },
 
273
          // language code: ave ae
 
274
          { "ave", "ae", N_( "Avestan" ) },
 
275
          // language code: awa
 
276
          { "awa", NULL, N_( "Awadhi" ) },
 
277
          // language code: aym ay
 
278
          { "aym", "ay", N_( "Aymara" ) },
 
279
          // language code: aze az
 
280
          { "aze", "az", N_( "Azerbaijani" ) },
 
281
          // language code: bad
 
282
          { "bad", NULL, N_( "Banda" ) },
 
283
          // language code: bai
 
284
          { "bai", NULL, N_( "Bamileke Languages" ) },
 
285
          // language code: bak ba
 
286
          { "bak", "ba", N_( "Bashkir" ) },
 
287
          // language code: bal
 
288
          { "bal", NULL, N_( "Baluchi" ) },
 
289
          // language code: bam bm
 
290
          { "bam", "bm", N_( "Bambara" ) },
 
291
          // language code: ban
 
292
          { "ban", NULL, N_( "Balinese" ) },
 
293
          // language code: baq eus eu
 
294
          { "baq", "eu", N_( "Basque" ) },
 
295
          // language code: baq eus eu
 
296
          { "eus", NULL, N_( "Basque" ) },
 
297
          // language code: bas
 
298
          { "bas", NULL, N_( "Basa" ) },
 
299
          // language code: bat
 
300
          { "bat", NULL, N_( "Baltic (Other)" ) },
 
301
          // language code: bej
 
302
          { "bej", NULL, N_( "Beja" ) },
 
303
          // language code: bel be
 
304
          { "bel", "be", N_( "Belarusian" ) },
 
305
          // language code: bem
 
306
          { "bem", NULL, N_( "Bemba" ) },
 
307
          // language code: ben bn
 
308
          { "ben", "bn", N_( "Bengali" ) },
 
309
          // language code: ber
 
310
          { "ber", NULL, N_( "Berber (Other)" ) },
 
311
          // language code: bho
 
312
          { "bho", NULL, N_( "Bhojpuri" ) },
 
313
          // language code: bih bh
 
314
          { "bih", "bh", N_( "Bihari" ) },
 
315
          // language code: bik
 
316
          { "bik", NULL, N_( "Bikol" ) },
 
317
          // language code: bin
 
318
          { "bin", NULL, N_( "Bini" ) },
 
319
          // language code: bis bi
 
320
          { "bis", "bi", N_( "Bislama" ) },
 
321
          // language code: bla
 
322
          { "bla", NULL, N_( "Siksika" ) },
 
323
          // language code: bnt
 
324
          { "bnt", NULL, N_( "Bantu (Other)" ) },
 
325
          // language code: bos bs
 
326
          { "bos", "bs", N_( "Bosnian" ) },
 
327
          // language code: bra
 
328
          { "bra", NULL, N_( "Braj" ) },
 
329
          // language code: bre br
 
330
          { "bre", "br", N_( "Breton" ) },
 
331
          // language code: btk
 
332
          { "btk", NULL, N_( "Batak (Indonesia)" ) },
 
333
          // language code: bua
 
334
          { "bua", NULL, N_( "Buriat" ) },
 
335
          // language code: bug
 
336
          { "bug", NULL, N_( "Buginese" ) },
 
337
          // language code: bul bg
 
338
          { "bul", "bg", N_( "Bulgarian" ) },
 
339
          // language code: bur mya my
 
340
          { "bur", "my", N_( "Burmese" ) },
 
341
          // language code: bur mya my
 
342
          { "mya", NULL, N_( "Burmese" ) },
 
343
          // language code: byn
 
344
          { "byn", NULL, N_( "Blin" ) },
 
345
          // language code: cad
 
346
          { "cad", NULL, N_( "Caddo" ) },
 
347
          // language code: cai
 
348
          { "cai", NULL, N_( "Central American Indian (Other)" ) },
 
349
          // language code: car
 
350
          { "car", NULL, N_( "Carib" ) },
 
351
          // language code: cat ca
 
352
          { "cat", "ca", N_( "Catalan" ) },
 
353
          // language code: cau
 
354
          { "cau", NULL, N_( "Caucasian (Other)" ) },
 
355
          // language code: ceb
 
356
          { "ceb", NULL, N_( "Cebuano" ) },
 
357
          // language code: cel
 
358
          { "cel", NULL, N_( "Celtic (Other)" ) },
 
359
          // language code: cha ch
 
360
          { "cha", "ch", N_( "Chamorro" ) },
 
361
          // language code: chb
 
362
          { "chb", NULL, N_( "Chibcha" ) },
 
363
          // language code: che ce
 
364
          { "che", "ce", N_( "Chechen" ) },
 
365
          // language code: chg
 
366
          { "chg", NULL, N_( "Chagatai" ) },
 
367
          // language code: chi zho zh
 
368
          { "chi", "zh", N_( "Chinese" ) },
 
369
          // language code: chi zho zh
 
370
          { "zho", NULL, N_( "Chinese" ) },
 
371
          // language code: chk
 
372
          { "chk", NULL, N_( "Chuukese" ) },
 
373
          // language code: chm
 
374
          { "chm", NULL, N_( "Mari" ) },
 
375
          // language code: chn
 
376
          { "chn", NULL, N_( "Chinook Jargon" ) },
 
377
          // language code: cho
 
378
          { "cho", NULL, N_( "Choctaw" ) },
 
379
          // language code: chp
 
380
          { "chp", NULL, N_( "Chipewyan" ) },
 
381
          // language code: chr
 
382
          { "chr", NULL, N_( "Cherokee" ) },
 
383
          // language code: chu cu
 
384
          { "chu", "cu", N_( "Church Slavic" ) },
 
385
          // language code: chv cv
 
386
          { "chv", "cv", N_( "Chuvash" ) },
 
387
          // language code: chy
 
388
          { "chy", NULL, N_( "Cheyenne" ) },
 
389
          // language code: cmc
 
390
          { "cmc", NULL, N_( "Chamic Languages" ) },
 
391
          // language code: cop
 
392
          { "cop", NULL, N_( "Coptic" ) },
 
393
          // language code: cor kw
 
394
          { "cor", "kw", N_( "Cornish" ) },
 
395
          // language code: cos co
 
396
          { "cos", "co", N_( "Corsican" ) },
 
397
          // language code: cpe
 
398
          { "cpe", NULL, N_( "Creoles and Pidgins, English-Based (Other)" ) },
 
399
          // language code: cpf
 
400
          { "cpf", NULL, N_( "Creoles and Pidgins, French-Based (Other)" ) },
 
401
          // language code: cpp
 
402
          { "cpp", NULL, N_( "Creoles and Pidgins, Portuguese-Based (Other)" ) },
 
403
          // language code: cre cr
 
404
          { "cre", "cr", N_( "Cree" ) },
 
405
          // language code: crh
 
406
          { "crh", NULL, N_( "Crimean Tatar" ) },
 
407
          // language code: crp
 
408
          { "crp", NULL, N_( "Creoles and Pidgins (Other)" ) },
 
409
          // language code: csb
 
410
          { "csb", NULL, N_( "Kashubian" ) },
 
411
          // language code: cus
 
412
          { "cus", NULL, N_( "Cushitic (Other)" ) },
 
413
          // language code: cze ces cs
 
414
          { "cze", "cs", N_( "Czech" ) },
 
415
          // language code: cze ces cs
 
416
          { "ces", NULL, N_( "Czech" ) },
 
417
          // language code: dak
 
418
          { "dak", NULL, N_( "Dakota" ) },
 
419
          // language code: dan da
 
420
          { "dan", "da", N_( "Danish" ) },
 
421
          // language code: dar
 
422
          { "dar", NULL, N_( "Dargwa" ) },
 
423
          // language code: day
 
424
          { "day", NULL, N_( "Dayak" ) },
 
425
          // language code: del
 
426
          { "del", NULL, N_( "Delaware" ) },
 
427
          // language code: den
 
428
          { "den", NULL, N_( "Slave (Athapascan)" ) },
 
429
          // language code: dgr
 
430
          { "dgr", NULL, N_( "Dogrib" ) },
 
431
          // language code: din
 
432
          { "din", NULL, N_( "Dinka" ) },
 
433
          // language code: div dv
 
434
          { "div", "dv", N_( "Divehi" ) },
 
435
          // language code: doi
 
436
          { "doi", NULL, N_( "Dogri" ) },
 
437
          // language code: dra
 
438
          { "dra", NULL, N_( "Dravidian (Other)" ) },
 
439
          // language code: dsb
 
440
          { "dsb", NULL, N_( "Lower Sorbian" ) },
 
441
          // language code: dua
 
442
          { "dua", NULL, N_( "Duala" ) },
 
443
          // language code: dum
 
444
          { "dum", NULL, N_( "Dutch, Middle (ca.1050-1350)" ) },
 
445
          // language code: dut nld nl
 
446
          { "dut", "nl", N_( "Dutch" ) },
 
447
          // language code: dut nld nl
 
448
          { "nld", NULL, N_( "Dutch" ) },
 
449
          // language code: dyu
 
450
          { "dyu", NULL, N_( "Dyula" ) },
 
451
          // language code: dzo dz
 
452
          { "dzo", "dz", N_( "Dzongkha" ) },
 
453
          // language code: efi
 
454
          { "efi", NULL, N_( "Efik" ) },
 
455
          // language code: egy
 
456
          { "egy", NULL, N_( "Egyptian (Ancient)" ) },
 
457
          // language code: eka
 
458
          { "eka", NULL, N_( "Ekajuk" ) },
 
459
          // language code: elx
 
460
          { "elx", NULL, N_( "Elamite" ) },
 
461
          // language code: eng en
 
462
          { "eng", "en", N_( "English" ) },
 
463
          // language code: enm
 
464
          { "enm", NULL, N_( "English, Middle (1100-1500)" ) },
 
465
          // language code: epo eo
 
466
          { "epo", "eo", N_( "Esperanto" ) },
 
467
          // language code: est et
 
468
          { "est", "et", N_( "Estonian" ) },
 
469
          // language code: ewe ee
 
470
          { "ewe", "ee", N_( "Ewe" ) },
 
471
          // language code: ewo
 
472
          { "ewo", NULL, N_( "Ewondo" ) },
 
473
          // language code: fan
 
474
          { "fan", NULL, N_( "Fang" ) },
 
475
          // language code: fao fo
 
476
          { "fao", "fo", N_( "Faroese" ) },
 
477
          // language code: fat
 
478
          { "fat", NULL, N_( "Fanti" ) },
 
479
          // language code: fij fj
 
480
          { "fij", "fj", N_( "Fijian" ) },
 
481
          // language code: fil
 
482
          { "fil", NULL, N_( "Filipino" ) },
 
483
          // language code: fin fi
 
484
          { "fin", "fi", N_( "Finnish" ) },
 
485
          // language code: fiu
 
486
          { "fiu", NULL, N_( "Finno-Ugrian (Other)" ) },
 
487
          // language code: fon
 
488
          { "fon", NULL, N_( "Fon" ) },
 
489
          // language code: fre fra fr
 
490
          { "fre", "fr", N_( "French" ) },
 
491
          // language code: fre fra fr
 
492
          { "fra", NULL, N_( "French" ) },
 
493
          // language code: frm
 
494
          { "frm", NULL, N_( "French, Middle (ca.1400-1600)" ) },
 
495
          // language code: fro
 
496
          { "fro", NULL, N_( "French, Old (842-ca.1400)" ) },
 
497
          // language code: fry fy
 
498
          { "fry", "fy", N_( "Frisian" ) },
 
499
          // language code: ful ff
 
500
          { "ful", "ff", N_( "Fulah" ) },
 
501
          // language code: fur
 
502
          { "fur", NULL, N_( "Friulian" ) },
 
503
          // language code: gaa
 
504
          { "gaa", NULL, N_( "Ga" ) },
 
505
          // language code: gay
 
506
          { "gay", NULL, N_( "Gayo" ) },
 
507
          // language code: gba
 
508
          { "gba", NULL, N_( "Gbaya" ) },
 
509
          // language code: gem
 
510
          { "gem", NULL, N_( "Germanic (Other)" ) },
 
511
          // language code: geo kat ka
 
512
          { "geo", "ka", N_( "Georgian" ) },
 
513
          // language code: geo kat ka
 
514
          { "kat", NULL, N_( "Georgian" ) },
 
515
          // language code: ger deu de
 
516
          { "ger", "de", N_( "German" ) },
 
517
          // language code: ger deu de
 
518
          { "deu", NULL, N_( "German" ) },
 
519
          // language code: gez
 
520
          { "gez", NULL, N_( "Geez" ) },
 
521
          // language code: gil
 
522
          { "gil", NULL, N_( "Gilbertese" ) },
 
523
          // language code: gla gd
 
524
          { "gla", "gd", N_( "Gaelic" ) },
 
525
          // language code: gle ga
 
526
          { "gle", "ga", N_( "Irish" ) },
 
527
          // language code: glg gl
 
528
          { "glg", "gl", N_( "Galician" ) },
 
529
          // language code: glv gv
 
530
          { "glv", "gv", N_( "Manx" ) },
 
531
          // language code: gmh
 
532
          { "gmh", NULL, N_( "German, Middle High (ca.1050-1500)" ) },
 
533
          // language code: goh
 
534
          { "goh", NULL, N_( "German, Old High (ca.750-1050)" ) },
 
535
          // language code: gon
 
536
          { "gon", NULL, N_( "Gondi" ) },
 
537
          // language code: gor
 
538
          { "gor", NULL, N_( "Gorontalo" ) },
 
539
          // language code: got
 
540
          { "got", NULL, N_( "Gothic" ) },
 
541
          // language code: grb
 
542
          { "grb", NULL, N_( "Grebo" ) },
 
543
          // language code: grc
 
544
          { "grc", NULL, N_( "Greek, Ancient (to 1453)" ) },
 
545
          // language code: gre ell el
 
546
          { "gre", "el", N_( "Greek, Modern (1453-)" ) },
 
547
          // language code: gre ell el
 
548
          { "ell", NULL, N_( "Greek, Modern (1453-)" ) },
 
549
          // language code: grn gn
 
550
          { "grn", "gn", N_( "Guarani" ) },
 
551
          // language code: guj gu
 
552
          { "guj", "gu", N_( "Gujarati" ) },
 
553
          // language code: gwi
 
554
          { "gwi", NULL, N_( "Gwich'in" ) },
 
555
          // language code: hai
 
556
          { "hai", NULL, N_( "Haida" ) },
 
557
          // language code: hat ht
 
558
          { "hat", "ht", N_( "Haitian" ) },
 
559
          // language code: hau ha
 
560
          { "hau", "ha", N_( "Hausa" ) },
 
561
          // language code: haw
 
562
          { "haw", NULL, N_( "Hawaiian" ) },
 
563
          // language code: heb he
 
564
          { "heb", "he", N_( "Hebrew" ) },
 
565
          // language code: her hz
 
566
          { "her", "hz", N_( "Herero" ) },
 
567
          // language code: hil
 
568
          { "hil", NULL, N_( "Hiligaynon" ) },
 
569
          // language code: him
 
570
          { "him", NULL, N_( "Himachali" ) },
 
571
          // language code: hin hi
 
572
          { "hin", "hi", N_( "Hindi" ) },
 
573
          // language code: hit
 
574
          { "hit", NULL, N_( "Hittite" ) },
 
575
          // language code: hmn
 
576
          { "hmn", NULL, N_( "Hmong" ) },
 
577
          // language code: hmo ho
 
578
          { "hmo", "ho", N_( "Hiri Motu" ) },
 
579
          // language code: hsb
 
580
          { "hsb", NULL, N_( "Upper Sorbian" ) },
 
581
          // language code: hun hu
 
582
          { "hun", "hu", N_( "Hungarian" ) },
 
583
          // language code: hup
 
584
          { "hup", NULL, N_( "Hupa" ) },
 
585
          // language code: iba
 
586
          { "iba", NULL, N_( "Iban" ) },
 
587
          // language code: ibo ig
 
588
          { "ibo", "ig", N_( "Igbo" ) },
 
589
          // language code: ice isl is
 
590
          { "ice", "is", N_( "Icelandic" ) },
 
591
          // language code: ice isl is
 
592
          { "isl", NULL, N_( "Icelandic" ) },
 
593
          // language code: ido io
 
594
          { "ido", "io", N_( "Ido" ) },
 
595
          // language code: iii ii
 
596
          { "iii", "ii", N_( "Sichuan Yi" ) },
 
597
          // language code: ijo
 
598
          { "ijo", NULL, N_( "Ijo" ) },
 
599
          // language code: iku iu
 
600
          { "iku", "iu", N_( "Inuktitut" ) },
 
601
          // language code: ile ie
 
602
          { "ile", "ie", N_( "Interlingue" ) },
 
603
          // language code: ilo
 
604
          { "ilo", NULL, N_( "Iloko" ) },
 
605
          // language code: ina ia
 
606
          { "ina", "ia", N_( "Interlingua (International Auxiliary Language Association)" ) },
 
607
          // language code: inc
 
608
          { "inc", NULL, N_( "Indic (Other)" ) },
 
609
          // language code: ind id
 
610
          { "ind", "id", N_( "Indonesian" ) },
 
611
          // language code: ine
 
612
          { "ine", NULL, N_( "Indo-European (Other)" ) },
 
613
          // language code: inh
 
614
          { "inh", NULL, N_( "Ingush" ) },
 
615
          // language code: ipk ik
 
616
          { "ipk", "ik", N_( "Inupiaq" ) },
 
617
          // language code: ira
 
618
          { "ira", NULL, N_( "Iranian (Other)" ) },
 
619
          // language code: iro
 
620
          { "iro", NULL, N_( "Iroquoian Languages" ) },
 
621
          // language code: ita it
 
622
          { "ita", "it", N_( "Italian" ) },
 
623
          // language code: jav jv
 
624
          { "jav", "jv", N_( "Javanese" ) },
 
625
          // language code: jbo
 
626
          { "jbo", NULL, N_( "Lojban" ) },
 
627
          // language code: jpn ja
 
628
          { "jpn", "ja", N_( "Japanese" ) },
 
629
          // language code: jpr
 
630
          { "jpr", NULL, N_( "Judeo-Persian" ) },
 
631
          // language code: jrb
 
632
          { "jrb", NULL, N_( "Judeo-Arabic" ) },
 
633
          // language code: kaa
 
634
          { "kaa", NULL, N_( "Kara-Kalpak" ) },
 
635
          // language code: kab
 
636
          { "kab", NULL, N_( "Kabyle" ) },
 
637
          // language code: kac
 
638
          { "kac", NULL, N_( "Kachin" ) },
 
639
          // language code: kal kl
 
640
          { "kal", "kl", N_( "Kalaallisut" ) },
 
641
          // language code: kam
 
642
          { "kam", NULL, N_( "Kamba" ) },
 
643
          // language code: kan kn
 
644
          { "kan", "kn", N_( "Kannada" ) },
 
645
          // language code: kar
 
646
          { "kar", NULL, N_( "Karen" ) },
 
647
          // language code: kas ks
 
648
          { "kas", "ks", N_( "Kashmiri" ) },
 
649
          // language code: kau kr
 
650
          { "kau", "kr", N_( "Kanuri" ) },
 
651
          // language code: kaw
 
652
          { "kaw", NULL, N_( "Kawi" ) },
 
653
          // language code: kaz kk
 
654
          { "kaz", "kk", N_( "Kazakh" ) },
 
655
          // language code: kbd
 
656
          { "kbd", NULL, N_( "Kabardian" ) },
 
657
          // language code: kha
 
658
          { "kha", NULL, N_( "Khasi" ) },
 
659
          // language code: khi
 
660
          { "khi", NULL, N_( "Khoisan (Other)" ) },
 
661
          // language code: khm km
 
662
          { "khm", "km", N_( "Khmer" ) },
 
663
          // language code: kho
 
664
          { "kho", NULL, N_( "Khotanese" ) },
 
665
          // language code: kik ki
 
666
          { "kik", "ki", N_( "Kikuyu" ) },
 
667
          // language code: kin rw
 
668
          { "kin", "rw", N_( "Kinyarwanda" ) },
 
669
          // language code: kir ky
 
670
          { "kir", "ky", N_( "Kirghiz" ) },
 
671
          // language code: kmb
 
672
          { "kmb", NULL, N_( "Kimbundu" ) },
 
673
          // language code: kok
 
674
          { "kok", NULL, N_( "Konkani" ) },
 
675
          // language code: kom kv
 
676
          { "kom", "kv", N_( "Komi" ) },
 
677
          // language code: kon kg
 
678
          { "kon", "kg", N_( "Kongo" ) },
 
679
          // language code: kor ko
 
680
          { "kor", "ko", N_( "Korean" ) },
 
681
          // language code: kos
 
682
          { "kos", NULL, N_( "Kosraean" ) },
 
683
          // language code: kpe
 
684
          { "kpe", NULL, N_( "Kpelle" ) },
 
685
          // language code: krc
 
686
          { "krc", NULL, N_( "Karachay-Balkar" ) },
 
687
          // language code: kro
 
688
          { "kro", NULL, N_( "Kru" ) },
 
689
          // language code: kru
 
690
          { "kru", NULL, N_( "Kurukh" ) },
 
691
          // language code: kua kj
 
692
          { "kua", "kj", N_( "Kuanyama" ) },
 
693
          // language code: kum
 
694
          { "kum", NULL, N_( "Kumyk" ) },
 
695
          // language code: kur ku
 
696
          { "kur", "ku", N_( "Kurdish" ) },
 
697
          // language code: kut
 
698
          { "kut", NULL, N_( "Kutenai" ) },
 
699
          // language code: lad
 
700
          { "lad", NULL, N_( "Ladino" ) },
 
701
          // language code: lah
 
702
          { "lah", NULL, N_( "Lahnda" ) },
 
703
          // language code: lam
 
704
          { "lam", NULL, N_( "Lamba" ) },
 
705
          // language code: lao lo
 
706
          { "lao", "lo", N_( "Lao" ) },
 
707
          // language code: lat la
 
708
          { "lat", "la", N_( "Latin" ) },
 
709
          // language code: lav lv
 
710
          { "lav", "lv", N_( "Latvian" ) },
 
711
          // language code: lez
 
712
          { "lez", NULL, N_( "Lezghian" ) },
 
713
          // language code: lim li
 
714
          { "lim", "li", N_( "Limburgan" ) },
 
715
          // language code: lin ln
 
716
          { "lin", "ln", N_( "Lingala" ) },
 
717
          // language code: lit lt
 
718
          { "lit", "lt", N_( "Lithuanian" ) },
 
719
          // language code: lol
 
720
          { "lol", NULL, N_( "Mongo" ) },
 
721
          // language code: loz
 
722
          { "loz", NULL, N_( "Lozi" ) },
 
723
          // language code: ltz lb
 
724
          { "ltz", "lb", N_( "Luxembourgish" ) },
 
725
          // language code: lua
 
726
          { "lua", NULL, N_( "Luba-Lulua" ) },
 
727
          // language code: lub lu
 
728
          { "lub", "lu", N_( "Luba-Katanga" ) },
 
729
          // language code: lug lg
 
730
          { "lug", "lg", N_( "Ganda" ) },
 
731
          // language code: lui
 
732
          { "lui", NULL, N_( "Luiseno" ) },
 
733
          // language code: lun
 
734
          { "lun", NULL, N_( "Lunda" ) },
 
735
          // language code: luo
 
736
          { "luo", NULL, N_( "Luo (Kenya and Tanzania)" ) },
 
737
          // language code: lus
 
738
          { "lus", NULL, N_( "Lushai" ) },
 
739
          // language code: mac mkd mk
 
740
          { "mac", "mk", N_( "Macedonian" ) },
 
741
          // language code: mac mkd mk
 
742
          { "mkd", NULL, N_( "Macedonian" ) },
 
743
          // language code: mad
 
744
          { "mad", NULL, N_( "Madurese" ) },
 
745
          // language code: mag
 
746
          { "mag", NULL, N_( "Magahi" ) },
 
747
          // language code: mah mh
 
748
          { "mah", "mh", N_( "Marshallese" ) },
 
749
          // language code: mai
 
750
          { "mai", NULL, N_( "Maithili" ) },
 
751
          // language code: mak
 
752
          { "mak", NULL, N_( "Makasar" ) },
 
753
          // language code: mal ml
 
754
          { "mal", "ml", N_( "Malayalam" ) },
 
755
          // language code: man
 
756
          { "man", NULL, N_( "Mandingo" ) },
 
757
          // language code: mao mri mi
 
758
          { "mao", "mi", N_( "Maori" ) },
 
759
          // language code: mao mri mi
 
760
          { "mri", NULL, N_( "Maori" ) },
 
761
          // language code: map
 
762
          { "map", NULL, N_( "Austronesian (Other)" ) },
 
763
          // language code: mar mr
 
764
          { "mar", "mr", N_( "Marathi" ) },
 
765
          // language code: mas
 
766
          { "mas", NULL, N_( "Masai" ) },
 
767
          // language code: may msa ms
 
768
          { "may", "ms", N_( "Malay" ) },
 
769
          // language code: may msa ms
 
770
          { "msa", NULL, N_( "Malay" ) },
 
771
          // language code: mdf
 
772
          { "mdf", NULL, N_( "Moksha" ) },
 
773
          // language code: mdr
 
774
          { "mdr", NULL, N_( "Mandar" ) },
 
775
          // language code: men
 
776
          { "men", NULL, N_( "Mende" ) },
 
777
          // language code: mga
 
778
          { "mga", NULL, N_( "Irish, Middle (900-1200)" ) },
 
779
          // language code: mic
 
780
          { "mic", NULL, N_( "Mi'kmaq" ) },
 
781
          // language code: min
 
782
          { "min", NULL, N_( "Minangkabau" ) },
 
783
          // language code: mis
 
784
          { "mis", NULL, N_( "Miscellaneous Languages" ) },
 
785
          // language code: mkh
 
786
          { "mkh", NULL, N_( "Mon-Khmer (Other)" ) },
 
787
          // language code: mlg mg
 
788
          { "mlg", "mg", N_( "Malagasy" ) },
 
789
          // language code: mlt mt
 
790
          { "mlt", "mt", N_( "Maltese" ) },
 
791
          // language code: mnc
 
792
          { "mnc", NULL, N_( "Manchu" ) },
 
793
          // language code: mni
 
794
          { "mni", NULL, N_( "Manipuri" ) },
 
795
          // language code: mno
 
796
          { "mno", NULL, N_( "Manobo Languages" ) },
 
797
          // language code: moh
 
798
          { "moh", NULL, N_( "Mohawk" ) },
 
799
          // language code: mol mo
 
800
          { "mol", "mo", N_( "Moldavian" ) },
 
801
          // language code: mon mn
 
802
          { "mon", "mn", N_( "Mongolian" ) },
 
803
          // language code: mos
 
804
          { "mos", NULL, N_( "Mossi" ) },
 
805
          // language code: mul
 
806
          { "mul", NULL, N_( "Multiple Languages" ) },
 
807
          // language code: mun
 
808
          { "mun", NULL, N_( "Munda languages" ) },
 
809
          // language code: mus
 
810
          { "mus", NULL, N_( "Creek" ) },
 
811
          // language code: mwl
 
812
          { "mwl", NULL, N_( "Mirandese" ) },
 
813
          // language code: mwr
 
814
          { "mwr", NULL, N_( "Marwari" ) },
 
815
          // language code: myn
 
816
          { "myn", NULL, N_( "Mayan Languages" ) },
 
817
          // language code: myv
 
818
          { "myv", NULL, N_( "Erzya" ) },
 
819
          // language code: nah
 
820
          { "nah", NULL, N_( "Nahuatl" ) },
 
821
          // language code: nai
 
822
          { "nai", NULL, N_( "North American Indian" ) },
 
823
          // language code: nap
 
824
          { "nap", NULL, N_( "Neapolitan" ) },
 
825
          // language code: nau na
 
826
          { "nau", "na", N_( "Nauru" ) },
 
827
          // language code: nav nv
 
828
          { "nav", "nv", N_( "Navajo" ) },
 
829
          // language code: nbl nr
 
830
          { "nbl", "nr", N_( "Ndebele, South" ) },
 
831
          // language code: nde nd
 
832
          { "nde", "nd", N_( "Ndebele, North" ) },
 
833
          // language code: ndo ng
 
834
          { "ndo", "ng", N_( "Ndonga" ) },
 
835
          // language code: nds
 
836
          { "nds", NULL, N_( "Low German" ) },
 
837
          // language code: nep ne
 
838
          { "nep", "ne", N_( "Nepali" ) },
 
839
          // language code: new
 
840
          { "new", NULL, N_( "Nepal Bhasa" ) },
 
841
          // language code: nia
 
842
          { "nia", NULL, N_( "Nias" ) },
 
843
          // language code: nic
 
844
          { "nic", NULL, N_( "Niger-Kordofanian (Other)" ) },
 
845
          // language code: niu
 
846
          { "niu", NULL, N_( "Niuean" ) },
 
847
          // language code: nno nn
 
848
          { "nno", "nn", N_( "Norwegian Nynorsk" ) },
 
849
          // language code: nob nb
 
850
          { "nob", "nb", N_( "Norwegian Bokmal" ) },
 
851
          // language code: nog
 
852
          { "nog", NULL, N_( "Nogai" ) },
 
853
          // language code: non
 
854
          { "non", NULL, N_( "Norse, Old" ) },
 
855
          // language code: nor no
 
856
          { "nor", "no", N_( "Norwegian" ) },
 
857
          // language code: nso
 
858
          { "nso", NULL, N_( "Northern Sotho" ) },
 
859
          // language code: nub
 
860
          { "nub", NULL, N_( "Nubian Languages" ) },
 
861
          // language code: nwc
 
862
          { "nwc", NULL, N_( "Classical Newari" ) },
 
863
          // language code: nya ny
 
864
          { "nya", "ny", N_( "Chichewa" ) },
 
865
          // language code: nym
 
866
          { "nym", NULL, N_( "Nyamwezi" ) },
 
867
          // language code: nyn
 
868
          { "nyn", NULL, N_( "Nyankole" ) },
 
869
          // language code: nyo
 
870
          { "nyo", NULL, N_( "Nyoro" ) },
 
871
          // language code: nzi
 
872
          { "nzi", NULL, N_( "Nzima" ) },
 
873
          // language code: oci oc
 
874
          { "oci", "oc", N_( "Occitan (post 1500)" ) },
 
875
          // language code: oji oj
 
876
          { "oji", "oj", N_( "Ojibwa" ) },
 
877
          // language code: ori or
 
878
          { "ori", "or", N_( "Oriya" ) },
 
879
          // language code: orm om
 
880
          { "orm", "om", N_( "Oromo" ) },
 
881
          // language code: osa
 
882
          { "osa", NULL, N_( "Osage" ) },
 
883
          // language code: oss os
 
884
          { "oss", "os", N_( "Ossetian" ) },
 
885
          // language code: ota
 
886
          { "ota", NULL, N_( "Turkish, Ottoman (1500-1928)" ) },
 
887
          // language code: oto
 
888
          { "oto", NULL, N_( "Otomian Languages" ) },
 
889
          // language code: paa
 
890
          { "paa", NULL, N_( "Papuan (Other)" ) },
 
891
          // language code: pag
 
892
          { "pag", NULL, N_( "Pangasinan" ) },
 
893
          // language code: pal
 
894
          { "pal", NULL, N_( "Pahlavi" ) },
 
895
          // language code: pam
 
896
          { "pam", NULL, N_( "Pampanga" ) },
 
897
          // language code: pan pa
 
898
          { "pan", "pa", N_( "Panjabi" ) },
 
899
          // language code: pap
 
900
          { "pap", NULL, N_( "Papiamento" ) },
 
901
          // language code: pau
 
902
          { "pau", NULL, N_( "Palauan" ) },
 
903
          // language code: peo
 
904
          { "peo", NULL, N_( "Persian, Old (ca.600-400 B.C.)" ) },
 
905
          // language code: per fas fa
 
906
          { "per", "fa", N_( "Persian" ) },
 
907
          // language code: per fas fa
 
908
          { "fas", NULL, N_( "Persian" ) },
 
909
          // language code: phi
 
910
          { "phi", NULL, N_( "Philippine (Other)" ) },
 
911
          // language code: phn
 
912
          { "phn", NULL, N_( "Phoenician" ) },
 
913
          // language code: pli pi
 
914
          { "pli", "pi", N_( "Pali" ) },
 
915
          // language code: pol pl
 
916
          { "pol", "pl", N_( "Polish" ) },
 
917
          // language code: pon
 
918
          { "pon", NULL, N_( "Pohnpeian" ) },
 
919
          // language code: por pt
 
920
          { "por", "pt", N_( "Portuguese" ) },
 
921
          // language code: pra
 
922
          { "pra", NULL, N_( "Prakrit Languages" ) },
 
923
          // language code: pro
 
924
          { "pro", NULL, N_( "Provencal, Old (to 1500)" ) },
 
925
          // language code: pus ps
 
926
          { "pus", "ps", N_( "Pushto" ) },
 
927
          // language code: que qu
 
928
          { "que", "qu", N_( "Quechua" ) },
 
929
          // language code: raj
 
930
          { "raj", NULL, N_( "Rajasthani" ) },
 
931
          // language code: rap
 
932
          { "rap", NULL, N_( "Rapanui" ) },
 
933
          // language code: rar
 
934
          { "rar", NULL, N_( "Rarotongan" ) },
 
935
          // language code: roa
 
936
          { "roa", NULL, N_( "Romance (Other)" ) },
 
937
          // language code: roh rm
 
938
          { "roh", "rm", N_( "Raeto-Romance" ) },
 
939
          // language code: rom
 
940
          { "rom", NULL, N_( "Romany" ) },
 
941
          // language code: rum ron ro
 
942
          { "rum", "ro", N_( "Romanian" ) },
 
943
          // language code: rum ron ro
 
944
          { "ron", NULL, N_( "Romanian" ) },
 
945
          // language code: run rn
 
946
          { "run", "rn", N_( "Rundi" ) },
 
947
          // language code: rus ru
 
948
          { "rus", "ru", N_( "Russian" ) },
 
949
          // language code: sad
 
950
          { "sad", NULL, N_( "Sandawe" ) },
 
951
          // language code: sag sg
 
952
          { "sag", "sg", N_( "Sango" ) },
 
953
          // language code: sah
 
954
          { "sah", NULL, N_( "Yakut" ) },
 
955
          // language code: sai
 
956
          { "sai", NULL, N_( "South American Indian (Other)" ) },
 
957
          // language code: sal
 
958
          { "sal", NULL, N_( "Salishan Languages" ) },
 
959
          // language code: sam
 
960
          { "sam", NULL, N_( "Samaritan Aramaic" ) },
 
961
          // language code: san sa
 
962
          { "san", "sa", N_( "Sanskrit" ) },
 
963
          // language code: sas
 
964
          { "sas", NULL, N_( "Sasak" ) },
 
965
          // language code: sat
 
966
          { "sat", NULL, N_( "Santali" ) },
 
967
          // language code: scc srp sr
 
968
          { "scc", "sr", N_( "Serbian" ) },
 
969
          // language code: scc srp sr
 
970
          { "srp", NULL, N_( "Serbian" ) },
 
971
          // language code: scn
 
972
          { "scn", NULL, N_( "Sicilian" ) },
 
973
          // language code: sco
 
974
          { "sco", NULL, N_( "Scots" ) },
 
975
          // language code: scr hrv hr
 
976
          { "scr", "hr", N_( "Croatian" ) },
 
977
          // language code: scr hrv hr
 
978
          { "hrv", NULL, N_( "Croatian" ) },
 
979
          // language code: sel
 
980
          { "sel", NULL, N_( "Selkup" ) },
 
981
          // language code: sem
 
982
          { "sem", NULL, N_( "Semitic (Other)" ) },
 
983
          // language code: sga
 
984
          { "sga", NULL, N_( "Irish, Old (to 900)" ) },
 
985
          // language code: sgn
 
986
          { "sgn", NULL, N_( "Sign Languages" ) },
 
987
          // language code: shn
 
988
          { "shn", NULL, N_( "Shan" ) },
 
989
          // language code: sid
 
990
          { "sid", NULL, N_( "Sidamo" ) },
 
991
          // language code: sin si
 
992
          { "sin", "si", N_( "Sinhala" ) },
 
993
          // language code: sio
 
994
          { "sio", NULL, N_( "Siouan Languages" ) },
 
995
          // language code: sit
 
996
          { "sit", NULL, N_( "Sino-Tibetan (Other)" ) },
 
997
          // language code: sla
 
998
          { "sla", NULL, N_( "Slavic (Other)" ) },
 
999
          // language code: slo slk sk
 
1000
          { "slo", "sk", N_( "Slovak" ) },
 
1001
          // language code: slo slk sk
 
1002
          { "slk", NULL, N_( "Slovak" ) },
 
1003
          // language code: slv sl
 
1004
          { "slv", "sl", N_( "Slovenian" ) },
 
1005
          // language code: sma
 
1006
          { "sma", NULL, N_( "Southern Sami" ) },
 
1007
          // language code: sme se
 
1008
          { "sme", "se", N_( "Northern Sami" ) },
 
1009
          // language code: smi
 
1010
          { "smi", NULL, N_( "Sami Languages (Other)" ) },
 
1011
          // language code: smj
 
1012
          { "smj", NULL, N_( "Lule Sami" ) },
 
1013
          // language code: smn
 
1014
          { "smn", NULL, N_( "Inari Sami" ) },
 
1015
          // language code: smo sm
 
1016
          { "smo", "sm", N_( "Samoan" ) },
 
1017
          // language code: sms
 
1018
          { "sms", NULL, N_( "Skolt Sami" ) },
 
1019
          // language code: sna sn
 
1020
          { "sna", "sn", N_( "Shona" ) },
 
1021
          // language code: snd sd
 
1022
          { "snd", "sd", N_( "Sindhi" ) },
 
1023
          // language code: snk
 
1024
          { "snk", NULL, N_( "Soninke" ) },
 
1025
          // language code: sog
 
1026
          { "sog", NULL, N_( "Sogdian" ) },
 
1027
          // language code: som so
 
1028
          { "som", "so", N_( "Somali" ) },
 
1029
          // language code: son
 
1030
          { "son", NULL, N_( "Songhai" ) },
 
1031
          // language code: sot st
 
1032
          { "sot", "st", N_( "Sotho, Southern" ) },
 
1033
          // language code: spa es
 
1034
          { "spa", "es", N_( "Spanish" ) },
 
1035
          // language code: srd sc
 
1036
          { "srd", "sc", N_( "Sardinian" ) },
 
1037
          // language code: srr
 
1038
          { "srr", NULL, N_( "Serer" ) },
 
1039
          // language code: ssa
 
1040
          { "ssa", NULL, N_( "Nilo-Saharan (Other)" ) },
 
1041
          // language code: ssw ss
 
1042
          { "ssw", "ss", N_( "Swati" ) },
 
1043
          // language code: suk
 
1044
          { "suk", NULL, N_( "Sukuma" ) },
 
1045
          // language code: sun su
 
1046
          { "sun", "su", N_( "Sundanese" ) },
 
1047
          // language code: sus
 
1048
          { "sus", NULL, N_( "Susu" ) },
 
1049
          // language code: sux
 
1050
          { "sux", NULL, N_( "Sumerian" ) },
 
1051
          // language code: swa sw
 
1052
          { "swa", "sw", N_( "Swahili" ) },
 
1053
          // language code: swe sv
 
1054
          { "swe", "sv", N_( "Swedish" ) },
 
1055
          // language code: syr
 
1056
          { "syr", NULL, N_( "Syriac" ) },
 
1057
          // language code: tah ty
 
1058
          { "tah", "ty", N_( "Tahitian" ) },
 
1059
          // language code: tai
 
1060
          { "tai", NULL, N_( "Tai (Other)" ) },
 
1061
          // language code: tam ta
 
1062
          { "tam", "ta", N_( "Tamil" ) },
 
1063
          // language code: tat tt
 
1064
          { "tat", "tt", N_( "Tatar" ) },
 
1065
          // language code: tel te
 
1066
          { "tel", "te", N_( "Telugu" ) },
 
1067
          // language code: tem
 
1068
          { "tem", NULL, N_( "Timne" ) },
 
1069
          // language code: ter
 
1070
          { "ter", NULL, N_( "Tereno" ) },
 
1071
          // language code: tet
 
1072
          { "tet", NULL, N_( "Tetum" ) },
 
1073
          // language code: tgk tg
 
1074
          { "tgk", "tg", N_( "Tajik" ) },
 
1075
          // language code: tgl tl
 
1076
          { "tgl", "tl", N_( "Tagalog" ) },
 
1077
          // language code: tha th
 
1078
          { "tha", "th", N_( "Thai" ) },
 
1079
          // language code: tib bod bo
 
1080
          { "tib", "bo", N_( "Tibetan" ) },
 
1081
          // language code: tib bod bo
 
1082
          { "bod", NULL, N_( "Tibetan" ) },
 
1083
          // language code: tig
 
1084
          { "tig", NULL, N_( "Tigre" ) },
 
1085
          // language code: tir ti
 
1086
          { "tir", "ti", N_( "Tigrinya" ) },
 
1087
          // language code: tiv
 
1088
          { "tiv", NULL, N_( "Tiv" ) },
 
1089
          // language code: tkl
 
1090
          { "tkl", NULL, N_( "Tokelau" ) },
 
1091
          // language code: tlh
 
1092
          { "tlh", NULL, N_( "Klingon" ) },
 
1093
          // language code: tli
 
1094
          { "tli", NULL, N_( "Tlingit" ) },
 
1095
          // language code: tmh
 
1096
          { "tmh", NULL, N_( "Tamashek" ) },
 
1097
          // language code: tog
 
1098
          { "tog", NULL, N_( "Tonga (Nyasa)" ) },
 
1099
          // language code: ton to
 
1100
          { "ton", "to", N_( "Tonga (Tonga Islands)" ) },
 
1101
          // language code: tpi
 
1102
          { "tpi", NULL, N_( "Tok Pisin" ) },
 
1103
          // language code: tsi
 
1104
          { "tsi", NULL, N_( "Tsimshian" ) },
 
1105
          // language code: tsn tn
 
1106
          { "tsn", "tn", N_( "Tswana" ) },
 
1107
          // language code: tso ts
 
1108
          { "tso", "ts", N_( "Tsonga" ) },
 
1109
          // language code: tuk tk
 
1110
          { "tuk", "tk", N_( "Turkmen" ) },
 
1111
          // language code: tum
 
1112
          { "tum", NULL, N_( "Tumbuka" ) },
 
1113
          // language code: tup
 
1114
          { "tup", NULL, N_( "Tupi Languages" ) },
 
1115
          // language code: tur tr
 
1116
          { "tur", "tr", N_( "Turkish" ) },
 
1117
          // language code: tut
 
1118
          { "tut", NULL, N_( "Altaic (Other)" ) },
 
1119
          // language code: tvl
 
1120
          { "tvl", NULL, N_( "Tuvalu" ) },
 
1121
          // language code: twi tw
 
1122
          { "twi", "tw", N_( "Twi" ) },
 
1123
          // language code: tyv
 
1124
          { "tyv", NULL, N_( "Tuvinian" ) },
 
1125
          // language code: udm
 
1126
          { "udm", NULL, N_( "Udmurt" ) },
 
1127
          // language code: uga
 
1128
          { "uga", NULL, N_( "Ugaritic" ) },
 
1129
          // language code: uig ug
 
1130
          { "uig", "ug", N_( "Uighur" ) },
 
1131
          // language code: ukr uk
 
1132
          { "ukr", "uk", N_( "Ukrainian" ) },
 
1133
          // language code: umb
 
1134
          { "umb", NULL, N_( "Umbundu" ) },
 
1135
          // language code: und
 
1136
          { "und", NULL, N_( "Undetermined" ) },
 
1137
          // language code: urd ur
 
1138
          { "urd", "ur", N_( "Urdu" ) },
 
1139
          // language code: uzb uz
 
1140
          { "uzb", "uz", N_( "Uzbek" ) },
 
1141
          // language code: vai
 
1142
          { "vai", NULL, N_( "Vai" ) },
 
1143
          // language code: ven ve
 
1144
          { "ven", "ve", N_( "Venda" ) },
 
1145
          // language code: vie vi
 
1146
          { "vie", "vi", N_( "Vietnamese" ) },
 
1147
          // language code: vol vo
 
1148
          { "vol", "vo", N_( "Volapuk" ) },
 
1149
          // language code: vot
 
1150
          { "vot", NULL, N_( "Votic" ) },
 
1151
          // language code: wak
 
1152
          { "wak", NULL, N_( "Wakashan Languages" ) },
 
1153
          // language code: wal
 
1154
          { "wal", NULL, N_( "Walamo" ) },
 
1155
          // language code: war
 
1156
          { "war", NULL, N_( "Waray" ) },
 
1157
          // language code: was
 
1158
          { "was", NULL, N_( "Washo" ) },
 
1159
          // language code: wel cym cy
 
1160
          { "wel", "cy", N_( "Welsh" ) },
 
1161
          // language code: wel cym cy
 
1162
          { "cym", NULL, N_( "Welsh" ) },
 
1163
          // language code: wen
 
1164
          { "wen", NULL, N_( "Sorbian Languages" ) },
 
1165
          // language code: wln wa
 
1166
          { "wln", "wa", N_( "Walloon" ) },
 
1167
          // language code: wol wo
 
1168
          { "wol", "wo", N_( "Wolof" ) },
 
1169
          // language code: xal
 
1170
          { "xal", NULL, N_( "Kalmyk" ) },
 
1171
          // language code: xho xh
 
1172
          { "xho", "xh", N_( "Xhosa" ) },
 
1173
          // language code: yao
 
1174
          { "yao", NULL, N_( "Yao" ) },
 
1175
          // language code: yap
 
1176
          { "yap", NULL, N_( "Yapese" ) },
 
1177
          // language code: yid yi
 
1178
          { "yid", "yi", N_( "Yiddish" ) },
 
1179
          // language code: yor yo
 
1180
          { "yor", "yo", N_( "Yoruba" ) },
 
1181
          // language code: ypk
 
1182
          { "ypk", NULL, N_( "Yupik Languages" ) },
 
1183
          // language code: zap
 
1184
          { "zap", NULL, N_( "Zapotec" ) },
 
1185
          // language code: zen
 
1186
          { "zen", NULL, N_( "Zenaga" ) },
 
1187
          // language code: zha za
 
1188
          { "zha", "za", N_( "Zhuang" ) },
 
1189
          // language code: znd
 
1190
          { "znd", NULL, N_( "Zande" ) },
 
1191
          // language code: zul zu
 
1192
          { "zul", "zu", N_( "Zulu" ) },
 
1193
          // language code: zun
 
1194
          { "zun", NULL, N_( "Zuni" ) },
 
1195
 
 
1196
          { NULL, NULL, NULL }
 
1197
      };
 
1198
 
 
1199
      for (const LangInit * i = langInit; i->iso639_2 != NULL; ++i)
 
1200
      {
 
1201
          std::string name( i->name );
 
1202
          codes[i->iso639_2] = name;
 
1203
          if (i->iso639_1 != NULL)
 
1204
              codes[i->iso639_1] = name;
 
1205
      }
 
1206
    }
 
1207
 
 
1208
    /////////////////////////////////////////////////////////////////
 
1209
  } // namespace
 
1210
  ///////////////////////////////////////////////////////////////////
 
1211
 
 
1212
  /////////////////////////////////////////////////////////////////
 
1213
} // namespace zypp
 
1214
///////////////////////////////////////////////////////////////////