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