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