1# 2# Locale::Language - ISO two letter codes for language identification (ISO 639) 3# 4# $Id: Language.pm,v 2.2 2002/07/10 16:33:27 neilb Exp $ 5# 6 7package Locale::Language; 8use strict; 9require 5.002; 10 11require Exporter; 12 13#----------------------------------------------------------------------- 14# Public Global Variables 15#----------------------------------------------------------------------- 16use vars qw($VERSION @ISA @EXPORT); 17$VERSION = sprintf("%d.%02d", q$Revision: 2.21 $ =~ /(\d+)\.(\d+)/); 18@ISA = qw(Exporter); 19@EXPORT = qw(&code2language &language2code 20 &all_language_codes &all_language_names ); 21 22#----------------------------------------------------------------------- 23# Private Global Variables 24#----------------------------------------------------------------------- 25my %CODES = (); 26my %LANGUAGES = (); 27 28 29#======================================================================= 30# 31# code2language ( CODE ) 32# 33#======================================================================= 34sub code2language 35{ 36 my $code = shift; 37 38 39 return undef unless defined $code; 40 $code = lc($code); 41 if (exists $CODES{$code}) 42 { 43 return $CODES{$code}; 44 } 45 else 46 { 47 #--------------------------------------------------------------- 48 # no such language code! 49 #--------------------------------------------------------------- 50 return undef; 51 } 52} 53 54 55#======================================================================= 56# 57# language2code ( LANGUAGE ) 58# 59#======================================================================= 60sub language2code 61{ 62 my $lang = shift; 63 64 65 return undef unless defined $lang; 66 $lang = lc($lang); 67 if (exists $LANGUAGES{$lang}) 68 { 69 return $LANGUAGES{$lang}; 70 } 71 else 72 { 73 #--------------------------------------------------------------- 74 # no such language! 75 #--------------------------------------------------------------- 76 return undef; 77 } 78} 79 80 81#======================================================================= 82# 83# all_language_codes() 84# 85#======================================================================= 86sub all_language_codes 87{ 88 return keys %CODES; 89} 90 91 92#======================================================================= 93# 94# all_language_names() 95# 96#======================================================================= 97sub all_language_names 98{ 99 return values %CODES; 100} 101 102 103#======================================================================= 104# initialisation code - stuff the DATA into the CODES hash 105#======================================================================= 106{ 107 my $code; 108 my $language; 109 110 local $_; 111 112 while (<DATA>) 113 { 114 next unless /\S/; 115 chop; 116 ($code, $language) = split(/:/, $_, 2); 117 $CODES{$code} = $language; 118 $LANGUAGES{"\L$language"} = $code; 119 } 120 121 close(DATA); 122} 123 1241; 125 126__DATA__ 127aa:Afar 128ab:Abkhazian 129ae:Avestan 130af:Afrikaans 131am:Amharic 132ar:Arabic 133as:Assamese 134ay:Aymara 135az:Azerbaijani 136 137ba:Bashkir 138be:Belarusian 139bg:Bulgarian 140bh:Bihari 141bi:Bislama 142bn:Bengali 143bo:Tibetan 144br:Breton 145bs:Bosnian 146 147ca:Catalan 148ce:Chechen 149ch:Chamorro 150co:Corsican 151cs:Czech 152cu:Church Slavic 153cv:Chuvash 154cy:Welsh 155 156da:Danish 157de:German 158dz:Dzongkha 159 160el:Greek 161en:English 162eo:Esperanto 163es:Spanish 164et:Estonian 165eu:Basque 166 167fa:Persian 168fi:Finnish 169fj:Fijian 170fo:Faeroese 171fr:French 172fy:Frisian 173 174ga:Irish 175gd:Gaelic (Scots) 176gl:Gallegan 177gn:Guarani 178gu:Gujarati 179gv:Manx 180 181ha:Hausa 182he:Hebrew 183hi:Hindi 184ho:Hiri Motu 185hr:Croatian 186hu:Hungarian 187hy:Armenian 188hz:Herero 189 190ia:Interlingua 191id:Indonesian 192ie:Interlingue 193ik:Inupiaq 194is:Icelandic 195it:Italian 196iu:Inuktitut 197 198ja:Japanese 199jw:Javanese 200 201ka:Georgian 202ki:Kikuyu 203kj:Kuanyama 204kk:Kazakh 205kl:Kalaallisut 206km:Khmer 207kn:Kannada 208ko:Korean 209ks:Kashmiri 210ku:Kurdish 211kv:Komi 212kw:Cornish 213ky:Kirghiz 214 215la:Latin 216lb:Letzeburgesch 217ln:Lingala 218lo:Lao 219lt:Lithuanian 220lv:Latvian 221 222mg:Malagasy 223mh:Marshall 224mi:Maori 225mk:Macedonian 226ml:Malayalam 227mn:Mongolian 228mo:Moldavian 229mr:Marathi 230ms:Malay 231mt:Maltese 232my:Burmese 233 234na:Nauru 235nb:Norwegian Bokmal 236nd:Ndebele, North 237ne:Nepali 238ng:Ndonga 239nl:Dutch 240nn:Norwegian Nynorsk 241no:Norwegian 242nr:Ndebele, South 243nv:Navajo 244ny:Chichewa; Nyanja 245 246oc:Occitan (post 1500) 247om:Oromo 248or:Oriya 249os:Ossetian; Ossetic 250 251pa:Panjabi 252pi:Pali 253pl:Polish 254ps:Pushto 255pt:Portuguese 256 257qu:Quechua 258 259rm:Rhaeto-Romance 260rn:Rundi 261ro:Romanian 262ru:Russian 263rw:Kinyarwanda 264 265sa:Sanskrit 266sc:Sardinian 267sd:Sindhi 268se:Sami 269sg:Sango 270si:Sinhalese 271sk:Slovak 272sl:Slovenian 273sm:Samoan 274sn:Shona 275so:Somali 276sq:Albanian 277sr:Serbian 278ss:Swati 279st:Sotho 280su:Sundanese 281sv:Swedish 282sw:Swahili 283 284ta:Tamil 285te:Telugu 286tg:Tajik 287th:Thai 288ti:Tigrinya 289tk:Turkmen 290tl:Tagalog 291tn:Tswana 292to:Tonga 293tr:Turkish 294ts:Tsonga 295tt:Tatar 296tw:Twi 297 298ug:Uighur 299uk:Ukrainian 300ur:Urdu 301uz:Uzbek 302 303vi:Vietnamese 304vo:Volapuk 305 306wo:Wolof 307 308xh:Xhosa 309 310yi:Yiddish 311yo:Yoruba 312 313za:Zhuang 314zh:Chinese 315zu:Zulu 316