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