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