File Coverage

blib/lib/MetaTrans/Languages.pm
Criterion Covered Total %
statement 12 20 60.0
branch n/a
condition n/a
subroutine 4 9 44.4
pod 5 5 100.0
total 21 34 61.7


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             MetaTrans::Languages - Simple "database" of most of the known languages.
4             Extracted from I,
5             L.
6              
7             =head1 SYNOPSIS
8              
9             use MetaTrans::Languages qw(get_lang_by_code get_code_by_lang);
10              
11             print get_lang_by_code('afr'); # prints 'Afrikaans'
12             print get_code_by_lang('Afrikaans'); # prints 'afr'
13              
14             =cut
15              
16             package MetaTrans::Languages;
17              
18 1     1   6 use strict;
  1         2  
  1         30  
19 1     1   6 use warnings;
  1         1  
  1         28  
20 1     1   7 use vars qw($VERSION @ISA @EXPORT_OK);
  1         1  
  1         75  
21 1     1   5 use Exporter;
  1         3  
  1         1918  
22              
23             $VERSION = do { my @r = (q$Revision: 1.1.1.1 $ =~ /\d+/g); sprintf "%d."."%02d", @r };
24             @ISA = qw(Exporter);
25             @EXPORT_OK = qw(is_known_lang get_lang_by_code get_code_by_lang
26             get_langs_hash get_langs_hash_rev);
27              
28             my %Languages; # code => language
29             my %RevLanguages; # language => code
30              
31             =head1 FUNCTIONS
32              
33             =over 4
34              
35             =cut
36              
37             =item get_lang_by_code($code)
38              
39             Returns the name of the language with C<$code> or C if no
40             language with such a C<$code> is known.
41              
42             =cut
43              
44             sub get_lang_by_code
45             {
46 0     0 1   my $code = shift;
47 0           return $Languages{$code};
48             }
49              
50             =item get_code_by_lang($language)
51              
52             Returns the code of the C<$language> or C if the language
53             is unknown.
54              
55             =cut
56              
57             sub get_code_by_lang
58             {
59 0     0 1   my $code = shift;
60 0           return $RevLanguages{$code};
61             }
62              
63             =item is_known_lang($code)
64              
65             Returns C if the language with C<$code> exists in the "database",
66             C otherwise.
67              
68             =cut
69              
70             sub is_known_lang
71             {
72 0     0 1   my $code = shift;
73 0           return exists $Languages{$code};
74             }
75              
76             =item get_langs_hash
77              
78             Returns the C<< {code_1 => language_1, code_2 => language_2, ...} >>
79             hash containing all known languages and their codes.
80              
81             =cut
82              
83             sub get_langs_hash
84             {
85 0     0 1   return %Languages;
86             }
87              
88             =item get_langs_hash_rev
89              
90             Returns the C<< {language_1 => code_1, language_2 => code_2, ...} >>
91             hash containing all known languages and their codes.
92              
93             =cut
94              
95             sub get_langs_hash_rev
96             {
97 0     0 1   return %RevLanguages;
98             }
99              
100             =back
101              
102             =cut
103              
104             %Languages = (
105             afr => "Afrikaans",
106             alb => "Albanian",
107             arm => "Armenian",
108             aze => "Azerbaijani",
109             baq => "Basque",
110             bel => "Belarusian",
111             bos => "Bosnian",
112             bul => "Bulgarian",
113             cat => "Catalan",
114             chi => "Chinese",
115             chs => "Chinese (simplified)", # added (not a MARC code)
116             scr => "Croatian",
117             cze => "Czech",
118             dan => "Danish",
119             dut => "Dutch",
120             egy => "Egyptian",
121             eng => "English",
122             epo => "Esperanto",
123             est => "Estonian",
124             gez => "Ethiopic",
125             fin => "Finnish",
126             fre => "French",
127             ger => "German",
128             gre => "Greek",
129             heb => "Hebrew",
130             hun => "Hungarian",
131             ice => "Icelandic",
132             inc => "Indic",
133             ind => "Indonesian",
134             ira => "Iranian",
135             gle => "Irish",
136             ita => "Italian",
137             jpn => "Japanese",
138             kor => "Korean",
139             kur => "Kurdish",
140             lat => "Latin",
141             lav => "Latvian",
142             lit => "Lithuanian",
143             mol => "Moldavian",
144             nav => "Navajo",
145             nor => "Norwegian",
146             phi => "Philippine",
147             pol => "Polish",
148             por => "Portuguese",
149             rum => "Romanian",
150             rus => "Russian",
151             srd => "Sardinian",
152             scc => "Serbian",
153             slo => "Slovak",
154             slv => "Slovenian",
155             som => "Somali",
156             spa => "Spanish",
157             swa => "Swahili",
158             swe => "Swedish",
159             syr => "Syriac",
160             tah => "Tahitian",
161             tat => "Tatar",
162             tha => "Thai",
163             tib => "Tibetan",
164             tur => "Turkish",
165             ukr => "Ukrainian",
166             uzb => "Uzbek",
167             vie => "Vietnamese",
168             wel => "Welsh",
169             yid => "Yiddish",
170              
171             abk => "Abkhaz",
172             ace => "Achinese",
173             ach => "Acoli",
174             ada => "Adangme",
175             ady => "Adygei",
176             aar => "Afar",
177             afh => "Afrihili",
178             aka => "Akan",
179             akk => "Akkadian",
180             ale => "Aleut",
181             alg => "Algonquian",
182             tut => "Altaic",
183             amh => "Amharic",
184             ara => "Arabic",
185             arg => "Aragonese Spanish",
186             arc => "Aramaic",
187             arp => "Arapaho",
188             arw => "Arawak",
189             asm => "Assamese",
190             ath => "Athapascan",
191             map => "Austronesian",
192             ava => "Avaric",
193             ave => "Avestan",
194             awa => "Awadhi",
195             aym => "Aymara",
196             ast => "Bable",
197             ban => "Balinese",
198             bat => "Baltic",
199             bal => "Baluchi",
200             bam => "Bambara",
201             bad => "Banda",
202             bnt => "Bantu",
203             bas => "Basa",
204             bak => "Bashkir",
205             btk => "Batak",
206             bej => "Beja",
207             bem => "Bemba",
208             ben => "Bengali",
209             ber => "Berber",
210             bho => "Bhojpuri",
211             bih => "Bihari",
212             bik => "Bikol",
213             bis => "Bislama",
214             bra => "Braj",
215             bre => "Breton",
216             bug => "Bugis",
217             bua => "Buriat",
218             bur => "Burmese",
219             cad => "Caddo",
220             car => "Carib",
221             cau => "Caucasian",
222             ceb => "Cebuano",
223             cel => "Celtic",
224             cai => "Central American Indian",
225             chg => "Chagatai",
226             cha => "Chamorro",
227             che => "Chechen",
228             chr => "Cherokee",
229             chy => "Cheyenne",
230             chb => "Chibcha",
231             chn => "Chinook jargon",
232             chp => "Chipewyan",
233             cho => "Choctaw",
234             chu => "Church Slavic",
235             chv => "Chuvash",
236             cop => "Coptic",
237             cor => "Cornish",
238             cos => "Corsican",
239             cre => "Cree",
240             mus => "Creek",
241             crp => "Creoles and Pidgins",
242             cpe => "Creoles and Pidgins, English-based",
243             cpf => "Creoles and Pidgins, French-based",
244             cpp => "Creoles and Pidgins, Portuguese-based",
245             crh => "Crimean Tatar",
246             cus => "Cushitic",
247             dak => "Dakota",
248             dar => "Dargwa",
249             day => "Dayak",
250             del => "Delaware",
251             din => "Dinka",
252             div => "Divehi",
253             doi => "Dogri",
254             dgr => "Dogrib",
255             dra => "Dravidian",
256             dua => "Duala",
257             dum => "Dutch, Middle",
258             dyu => "Dyula",
259             dzo => "Dzongkha",
260             bin => "Edo",
261             efi => "Efik",
262             eka => "Ekajuk",
263             elx => "Elamite",
264             enm => "English, Middle",
265             ang => "English, Old",
266             ewe => "Ewe",
267             ewo => "Ewondo",
268             fan => "Fang",
269             fat => "Fanti",
270             fao => "Faroese",
271             fij => "Fijian",
272             fiu => "Finno-Ugrian",
273             fon => "Fon",
274             frm => "French, Middle",
275             fro => "French, Old",
276             fry => "Frisian",
277             fur => "Friulian",
278             ful => "Fula",
279             glg => "Galician",
280             lug => "Ganda",
281             gay => "Gayo",
282             gba => "Gbaya",
283             geo => "Georgian",
284             gmh => "German, Middle High",
285             goh => "German, Old High",
286             gem => "Germanic",
287             gil => "Gilbertese",
288             gon => "Gondi",
289             gor => "Gorontalo",
290             got => "Gothic",
291             grb => "Grebo",
292             grc => "Greek, Ancient",
293             grn => "Guarani",
294             guj => "Gujarati",
295             hai => "Haida",
296             hat => "Haitian French Creole",
297             hau => "Hausa",
298             haw => "Hawaiian",
299             her => "Herero",
300             hil => "Hiligaynon",
301             him => "Himachali",
302             hin => "Hindi",
303             hmo => "Hiri Motu",
304             hit => "Hittite",
305             hmn => "Hmong",
306             hup => "Hupa",
307             iba => "Iban",
308             ido => "Ido",
309             ibo => "Igbo",
310             ijo => "Ijo",
311             ilo => "Iloko",
312             smn => "Inari Sami",
313             ine => "Indo-European",
314             inh => "Ingush",
315             ina => "Interlingua",
316             ile => "Interlingue",
317             iku => "Inuktitut",
318             ipk => "Inupiaq",
319             mga => "Irish, Middle",
320             sga => "Irish, Old",
321             iro => "Iroquoian",
322             jav => "Javanese",
323             jrb => "Judeo-Arabic",
324             jpr => "Judeo-Persian",
325             kab => "Kabyle",
326             kac => "Kachin",
327             xal => "Kalmyk",
328             kam => "Kamba",
329             kan => "Kannada",
330             kau => "Kanuri",
331             kaa => "Kara-Kalpak",
332             kar => "Karen",
333             kas => "Kashmiri",
334             kaw => "Kawi",
335             kaz => "Kazakh",
336             kha => "Khasi",
337             khm => "Khmer",
338             khi => "Khoisan",
339             kho => "Khotanese",
340             kik => "Kikuyu",
341             kmb => "Kimbundu",
342             kin => "Kinyarwanda",
343             kom => "Komi",
344             kon => "Kongo",
345             kok => "Konkani",
346             kpe => "Kpelle",
347             kro => "Kru",
348             kua => "Kuanyama",
349             kum => "Kumyk",
350             kru => "Kurukh",
351             kos => "Kusaie",
352             kut => "Kutenai",
353             kir => "Kyrgyz",
354             lad => "Ladino",
355             lah => "Lahnda",
356             lam => "Lamba",
357             lao => "Lao",
358             ltz => "Letzeburgesch",
359             lez => "Lezgian",
360             lim => "Limburgish",
361             lin => "Lingala",
362             nds => "Low German",
363             loz => "Lozi",
364             lub => "Luba-Katanga",
365             lua => "Luba-Lulua",
366             smj => "Lule Sami",
367             lun => "Lunda",
368             luo => "Luo",
369             lus => "Lushai",
370             mac => "Macedonian",
371             mad => "Madurese",
372             mag => "Magahi",
373             mai => "Maithili",
374             mak => "Makasar",
375             mlg => "Malagasy",
376             may => "Malay",
377             mal => "Malayalam",
378             mlt => "Maltese",
379             mnc => "Manchu",
380             mdr => "Mandar",
381             man => "Mandingo",
382             mni => "Manipuri",
383             glv => "Manx",
384             mao => "Maori",
385             arn => "Mapuche",
386             mar => "Marathi",
387             chm => "Mari",
388             mah => "Marshallese",
389             mwr => "Marwari",
390             mas => "Masai",
391             men => "Mende",
392             mic => "Micmac",
393             min => "Minangkabau",
394             moh => "Mohawk",
395             mkh => "Mon-Khmer",
396             lol => "Mongo-Nkundu",
397             mon => "Mongolian",
398             mun => "Munda",
399             nah => "Nahuatl",
400             nau => "Nauru",
401             nbl => "Ndebele",
402             nde => "Ndebele",
403             ndo => "Ndonga",
404             nap => "Neapolitan Italian",
405             nep => "Nepali",
406             new => "Newari",
407             nia => "Nias",
408             nic => "Niger-Kordofanian",
409             ssa => "Nilo-Saharan",
410             niu => "Niuean",
411             nog => "Nogai",
412             nai => "North American Indian",
413             sme => "Northern Sami",
414             nso => "Northern Sotho",
415             nym => "Nyamwezi",
416             nya => "Nyanja",
417             nyn => "Nyankole",
418             nyo => "Nyoro",
419             nzi => "Nzima",
420             oci => "Occitan",
421             oji => "Ojibwa",
422             non => "Old Norse",
423             peo => "Old Persian",
424             ori => "Oriya",
425             orm => "Oromo",
426             osa => "Osage",
427             oss => "Ossetic",
428             pal => "Pahlavi",
429             pau => "Palauan",
430             pli => "Pali",
431             pam => "Pampanga",
432             pag => "Pangasinan",
433             pan => "Panjabi",
434             pap => "Papiamento",
435             paa => "Papuan",
436             per => "Persian",
437             phn => "Phoenician",
438             pon => "Ponape",
439             pus => "Pushto",
440             que => "Quechua",
441             roh => "Raeto-Romance",
442             raj => "Rajasthani",
443             rap => "Rapanui",
444             rar => "Rarotongan",
445             roa => "Romance",
446             rom => "Romani",
447             run => "Rundi",
448             sam => "Samaritan Aramaic",
449             smi => "Sami",
450             smo => "Samoan",
451             sad => "Sandawe",
452             sag => "Sango",
453             san => "Sanskrit",
454             sat => "Santali",
455             sas => "Sasak",
456             sco => "Scots",
457             gla => "Scottish Gaelic",
458             sel => "Selkup",
459             sem => "Semitic",
460             srr => "Serer",
461             shn => "Shan",
462             sna => "Shona",
463             iii => "Sichuan Yi",
464             sid => "Sidamo",
465             bla => "Siksika",
466             snd => "Sindhi",
467             sin => "Sinhalese",
468             sit => "Sino-Tibetan",
469             sio => "Siouan",
470             sms => "Skolt Sami",
471             den => "Slave",
472             sla => "Slavic",
473             sog => "Sogdian",
474             son => "Songhai",
475             snk => "Soninke",
476             sot => "Sotho",
477             sai => "South American Indian",
478             sma => "Southern Sami",
479             suk => "Sukuma",
480             sux => "Sumerian",
481             sun => "Sundanese",
482             sus => "Susu",
483             ssw => "Swazi",
484             tgl => "Tagalog",
485             tai => "Tai",
486             tgk => "Tajik",
487             tmh => "Tamashek",
488             tam => "Tamil",
489             tel => "Telugu",
490             tem => "Temne",
491             ter => "Terena",
492             tet => "Tetum",
493             tir => "Tigrinya",
494             tiv => "Tiv",
495             tli => "Tlingit",
496             tpi => "Tok Pisin",
497             tkl => "Tokelauan",
498             tog => "Tonga",
499             ton => "Tongan",
500             chk => "Truk",
501             tsi => "Tsimshian",
502             tso => "Tsonga",
503             tsn => "Tswana",
504             tum => "Tumbuka",
505             ota => "Turkish, Ottoman",
506             tuk => "Turkmen",
507             tvl => "Tuvaluan",
508             tyv => "Tuvinian",
509             twi => "Twi",
510             udm => "Udmurt",
511             uga => "Ugaritic",
512             uig => "Uighur",
513             umb => "Umbundu",
514             und => "Undetermined",
515             urd => "Urdu",
516             vai => "Vai",
517             ven => "Venda",
518             vot => "Votic",
519             wal => "Walamo",
520             wln => "Walloon",
521             war => "Waray",
522             was => "Washo",
523             wol => "Wolof",
524             xho => "Xhosa",
525             sah => "Yakut",
526             yao => "Yao",
527             yap => "Yapese",
528             yor => "Yoruba",
529             znd => "Zande",
530             zap => "Zapotec",
531             zen => "Zenaga",
532             zha => "Zhuang",
533             zul => "Zulu",
534             zun => "Zuni",
535             );
536              
537             foreach my $code (keys %Languages)
538             {
539             $RevLanguages{$Languages{$code}} = $code;
540             }
541              
542             1;
543              
544             __END__