Commit | Line | Data |
6b14ceb7 |
1 | # |
2 | # Locale::Language - ISO two letter codes for language identification (ISO 639) |
3 | # |
356373a2 |
4 | # $Id: Language.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $ |
6b14ceb7 |
5 | # |
47a334e9 |
6 | |
7 | package Locale::Language; |
8 | use strict; |
9 | require 5.002; |
10 | |
47a334e9 |
11 | require Exporter; |
12 | |
13 | #----------------------------------------------------------------------- |
14 | # Public Global Variables |
15 | #----------------------------------------------------------------------- |
16 | use vars qw($VERSION @ISA @EXPORT); |
356373a2 |
17 | $VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\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 | #----------------------------------------------------------------------- |
25 | my %CODES = (); |
26 | my %LANGUAGES = (); |
27 | |
28 | |
29 | #======================================================================= |
6b14ceb7 |
30 | # |
31 | # code2language ( CODE ) |
32 | # |
47a334e9 |
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 | |
6b14ceb7 |
54 | |
55 | #======================================================================= |
56 | # |
57 | # language2code ( LANGUAGE ) |
58 | # |
59 | #======================================================================= |
47a334e9 |
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 | |
47a334e9 |
80 | |
81 | #======================================================================= |
6b14ceb7 |
82 | # |
83 | # all_language_codes() |
84 | # |
85 | #======================================================================= |
47a334e9 |
86 | sub all_language_codes |
87 | { |
88 | return keys %CODES; |
89 | } |
90 | |
6b14ceb7 |
91 | |
92 | #======================================================================= |
93 | # |
94 | # all_language_names() |
95 | # |
96 | #======================================================================= |
47a334e9 |
97 | sub 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 | { |
356373a2 |
107 | my $code; |
108 | my $language; |
77b047e7 |
109 | local $_; |
3dca81fb |
110 | |
356373a2 |
111 | |
47a334e9 |
112 | while (<DATA>) |
113 | { |
6b6e008c |
114 | next unless /\S/; |
47a334e9 |
115 | chop; |
116 | ($code, $language) = split(/:/, $_, 2); |
117 | $CODES{$code} = $language; |
118 | $LANGUAGES{"\L$language"} = $code; |
119 | } |
3a6b268d |
120 | |
121 | close(DATA); |
47a334e9 |
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 |
a7235d91 |
235 | nb:Norwegian Bokmal |
47a334e9 |
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 |
a7235d91 |
304 | vo:Volapuk |
47a334e9 |
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 |