17
17
* Provides a mapping between the languages from lang.dat and the
18
18
* ISO 639-1 and ISO-639-2 codes.
19
19
*
20
+ * Note that this class contains only languages that exist in lang.dat.
21
+ *
20
22
* @category Text
21
23
* @package Text_LanguageDetect
22
24
* @author Christian Weiske <[email protected] >
23
25
* @copyright 2011 Christian Weiske <[email protected] >
24
26
* @license http://www.debian.org/misc/bsd.license BSD
25
- * @link http://pear.php.net/package/Text_LanguageDetect/
27
+ * @link http://www.loc.gov/standards/iso639-2/php/code_list.php
26
28
*/
27
29
class Text_LanguageDetect_ISO639
28
30
{
@@ -34,7 +36,7 @@ class Text_LanguageDetect_ISO639
34
36
*
35
37
* @var array
36
38
*/
37
- public static $ name2code2 = array (
39
+ public static $ nameToCode2 = array (
38
40
'albanian ' => 'sq ' ,
39
41
'arabic ' => 'ar ' ,
40
42
'azeri ' => 'az ' ,
@@ -95,7 +97,7 @@ class Text_LanguageDetect_ISO639
95
97
*
96
98
* @var array
97
99
*/
98
- public static $ name2code3 = array (
100
+ public static $ nameToCode3 = array (
99
101
'albanian ' => 'sqi ' ,
100
102
'arabic ' => 'ara ' ,
101
103
'azeri ' => 'aze ' ,
@@ -150,6 +152,190 @@ class Text_LanguageDetect_ISO639
150
152
'welsh ' => 'cym ' ,
151
153
);
152
154
155
+ /**
156
+ * Maps ISO 639-1 2-letter language codes to the language names
157
+ * in the language database
158
+ *
159
+ * Not all languages have a 2 letter code, so some are missing
160
+ *
161
+ * @var array
162
+ */
163
+ public static $ code2ToName = array (
164
+ 'ar ' => 'arabic ' ,
165
+ 'az ' => 'azeri ' ,
166
+ 'bg ' => 'bulgarian ' ,
167
+ 'bn ' => 'bengali ' ,
168
+ 'cs ' => 'czech ' ,
169
+ 'cy ' => 'welsh ' ,
170
+ 'da ' => 'danish ' ,
171
+ 'de ' => 'german ' ,
172
+ 'en ' => 'english ' ,
173
+ 'es ' => 'spanish ' ,
174
+ 'et ' => 'estonian ' ,
175
+ 'fa ' => 'farsi ' ,
176
+ 'fi ' => 'finnish ' ,
177
+ 'fr ' => 'french ' ,
178
+ 'ha ' => 'hausa ' ,
179
+ 'hi ' => 'hindi ' ,
180
+ 'hr ' => 'croatian ' ,
181
+ 'hu ' => 'hungarian ' ,
182
+ 'id ' => 'indonesian ' ,
183
+ 'is ' => 'icelandic ' ,
184
+ 'it ' => 'italian ' ,
185
+ 'kk ' => 'kazakh ' ,
186
+ 'ky ' => 'kyrgyz ' ,
187
+ 'la ' => 'latin ' ,
188
+ 'lt ' => 'lithuanian ' ,
189
+ 'lv ' => 'latvian ' ,
190
+ 'mk ' => 'macedonian ' ,
191
+ 'mn ' => 'mongolian ' ,
192
+ 'ne ' => 'nepali ' ,
193
+ 'nl ' => 'dutch ' ,
194
+ 'no ' => 'norwegian ' ,
195
+ 'pl ' => 'polish ' ,
196
+ 'ps ' => 'pashto ' ,
197
+ 'pt ' => 'portuguese ' ,
198
+ 'ro ' => 'romanian ' ,
199
+ 'ru ' => 'russian ' ,
200
+ 'sk ' => 'slovak ' ,
201
+ 'sl ' => 'slovene ' ,
202
+ 'so ' => 'somali ' ,
203
+ 'sq ' => 'albanian ' ,
204
+ 'sr ' => 'serbian ' ,
205
+ 'sv ' => 'swedish ' ,
206
+ 'sw ' => 'swahili ' ,
207
+ 'tl ' => 'tagalog ' ,
208
+ 'tr ' => 'turkish ' ,
209
+ 'uk ' => 'ukrainian ' ,
210
+ 'ur ' => 'urdu ' ,
211
+ 'uz ' => 'uzbek ' ,
212
+ 'vi ' => 'vietnamese ' ,
213
+ );
214
+
215
+ /**
216
+ * Maps ISO 639-2 3-letter language codes to the language names
217
+ * in the language database.
218
+ *
219
+ * @var array
220
+ */
221
+ public static $ code3ToName = array (
222
+ 'ara ' => 'arabic ' ,
223
+ 'aze ' => 'azeri ' ,
224
+ 'ben ' => 'bengali ' ,
225
+ 'bul ' => 'bulgarian ' ,
226
+ 'ceb ' => 'cebuano ' ,
227
+ 'ces ' => 'czech ' ,
228
+ 'crp ' => 'pidgin ' ,
229
+ 'cym ' => 'welsh ' ,
230
+ 'dan ' => 'danish ' ,
231
+ 'deu ' => 'german ' ,
232
+ 'eng ' => 'english ' ,
233
+ 'est ' => 'estonian ' ,
234
+ 'fas ' => 'farsi ' ,
235
+ 'fin ' => 'finnish ' ,
236
+ 'fra ' => 'french ' ,
237
+ 'hau ' => 'hausa ' ,
238
+ 'haw ' => 'hawaiian ' ,
239
+ 'hin ' => 'hindi ' ,
240
+ 'hrv ' => 'croatian ' ,
241
+ 'hun ' => 'hungarian ' ,
242
+ 'ind ' => 'indonesian ' ,
243
+ 'isl ' => 'icelandic ' ,
244
+ 'ita ' => 'italian ' ,
245
+ 'kaz ' => 'kazakh ' ,
246
+ 'kir ' => 'kyrgyz ' ,
247
+ 'lat ' => 'latin ' ,
248
+ 'lav ' => 'latvian ' ,
249
+ 'lit ' => 'lithuanian ' ,
250
+ 'mkd ' => 'macedonian ' ,
251
+ 'mon ' => 'mongolian ' ,
252
+ 'nep ' => 'nepali ' ,
253
+ 'nld ' => 'dutch ' ,
254
+ 'nor ' => 'norwegian ' ,
255
+ 'pol ' => 'polish ' ,
256
+ 'por ' => 'portuguese ' ,
257
+ 'pus ' => 'pashto ' ,
258
+ 'ron ' => 'romanian ' ,
259
+ 'rus ' => 'russian ' ,
260
+ 'slk ' => 'slovak ' ,
261
+ 'slv ' => 'slovene ' ,
262
+ 'som ' => 'somali ' ,
263
+ 'spa ' => 'spanish ' ,
264
+ 'sqi ' => 'albanian ' ,
265
+ 'srp ' => 'serbian ' ,
266
+ 'swa ' => 'swahili ' ,
267
+ 'swe ' => 'swedish ' ,
268
+ 'tgl ' => 'tagalog ' ,
269
+ 'tur ' => 'turkish ' ,
270
+ 'ukr ' => 'ukrainian ' ,
271
+ 'urd ' => 'urdu ' ,
272
+ 'uzb ' => 'uzbek ' ,
273
+ 'vie ' => 'vietnamese ' ,
274
+ );
275
+
276
+ /**
277
+ * Returns the 2-letter ISO 639-1 code for the given language name.
278
+ *
279
+ * @param string $lang English language name like "swedish"
280
+ *
281
+ * @return string Two-letter language code (e.g. "sv") or NULL if not found
282
+ */
283
+ public static function nameToCode2 ($ lang )
284
+ {
285
+ $ lang = strtolower ($ lang );
286
+ if (!isset (self ::$ nameToCode2 [$ lang ])) {
287
+ return null ;
288
+ }
289
+ return self ::$ nameToCode2 [$ lang ];
290
+ }
291
+
292
+ /**
293
+ * Returns the 3-letter ISO 639-2 code for the given language name.
294
+ *
295
+ * @param string $lang English language name like "swedish"
296
+ *
297
+ * @return string Three-letter language code (e.g. "swe") or NULL if not found
298
+ */
299
+ public static function nameToCode3 ($ lang )
300
+ {
301
+ $ lang = strtolower ($ lang );
302
+ if (!isset (self ::$ nameToCode2 [$ lang ])) {
303
+ return null ;
304
+ }
305
+ return self ::$ nameToCode2 [$ lang ];
306
+ }
307
+
308
+ /**
309
+ * Returns the language name for the given 2-letter ISO 639-1 code.
310
+ *
311
+ * @param string $code Two-letter language code (e.g. "sv")
312
+ *
313
+ * @return string English language name like "swedish"
314
+ */
315
+ public static function code2ToName ($ code )
316
+ {
317
+ $ lang = strtolower ($ lang );
318
+ if (!isset (self ::$ code2ToName [$ lang ])) {
319
+ return null ;
320
+ }
321
+ return self ::$ code2ToName [$ lang ];
322
+ }
323
+
324
+ /**
325
+ * Returns the language name for the given 3-letter ISO 639-2 code.
326
+ *
327
+ * @param string $code Three-letter language code (e.g. "swe")
328
+ *
329
+ * @return string English language name like "swedish"
330
+ */
331
+ public static function code3ToName ($ code )
332
+ {
333
+ $ lang = strtolower ($ lang );
334
+ if (!isset (self ::$ code3ToName [$ lang ])) {
335
+ return null ;
336
+ }
337
+ return self ::$ code3ToName [$ lang ];
338
+ }
153
339
}
154
340
155
341
?>
0 commit comments