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