Commit | Line | Data |
---|---|---|
86530b38 AT |
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 |