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