Skip to content

Commit b1f2782

Browse files
committed
part of #19221: Return ISO 639 mapping class completed
git-svn-id: http://svn.php.net/repository/pear/packages/Text_LanguageDetect/trunk@322186 c90b9560-bf6c-de11-be94-00142212c4b1
1 parent 2dec71b commit b1f2782

File tree

1 file changed

+189
-3
lines changed

1 file changed

+189
-3
lines changed

Text/LanguageDetect/ISO639.php

Lines changed: 189 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
* Provides a mapping between the languages from lang.dat and the
1818
* ISO 639-1 and ISO-639-2 codes.
1919
*
20+
* Note that this class contains only languages that exist in lang.dat.
21+
*
2022
* @category Text
2123
* @package Text_LanguageDetect
2224
* @author Christian Weiske <[email protected]>
2325
* @copyright 2011 Christian Weiske <[email protected]>
2426
* @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
2628
*/
2729
class Text_LanguageDetect_ISO639
2830
{
@@ -34,7 +36,7 @@ class Text_LanguageDetect_ISO639
3436
*
3537
* @var array
3638
*/
37-
public static $name2code2 = array(
39+
public static $nameToCode2 = array(
3840
'albanian' => 'sq',
3941
'arabic' => 'ar',
4042
'azeri' => 'az',
@@ -95,7 +97,7 @@ class Text_LanguageDetect_ISO639
9597
*
9698
* @var array
9799
*/
98-
public static $name2code3 = array(
100+
public static $nameToCode3 = array(
99101
'albanian' => 'sqi',
100102
'arabic' => 'ara',
101103
'azeri' => 'aze',
@@ -150,6 +152,190 @@ class Text_LanguageDetect_ISO639
150152
'welsh' => 'cym',
151153
);
152154

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+
}
153339
}
154340

155341
?>

0 commit comments

Comments
 (0)