3 * Part of Text_LanguageDetect
8 * @package Text_LanguageDetect
9 * @author Christian Weiske <cweiske@php.net>
10 * @copyright 2011 Christian Weiske <cweiske@php.net>
11 * @license http://www.debian.org/misc/bsd.license BSD
12 * @link http://pear.php.net/package/Text_LanguageDetect/
16 * Provides a mapping between the languages from lang.dat and the
17 * ISO 639-1 and ISO-639-2 codes.
19 * Note that this class contains only languages that exist in lang.dat.
22 * @package Text_LanguageDetect
23 * @author Christian Weiske <cweiske@php.net>
24 * @copyright 2011 Christian Weiske <cweiske@php.net>
25 * @license BSD http://www.opensource.org/licenses/bsd-license.php
26 * @link http://www.loc.gov/standards/iso639-2/php/code_list.php
28 * @SuppressWarnings(PHPMD)
30 class Text_LanguageDetect_ISO639
33 * Maps all language names from the language database to the
34 * ISO 639-1 2-letter language code.
36 * NULL indicates that there is no 2-letter code.
40 public static $nameToCode2 = array(
96 * Maps all language names from the language database to the
97 * ISO 639-2 3-letter language code.
101 public static $nameToCode3 = array(
106 'bulgarian' => 'bul',
121 'hungarian' => 'hun',
122 'icelandic' => 'isl',
123 'indonesian' => 'ind',
129 'lithuanian' => 'lit',
130 'macedonian' => 'mkd',
131 'mongolian' => 'mon',
133 'norwegian' => 'nor',
137 'portuguese' => 'por',
149 'ukrainian' => 'ukr',
152 'vietnamese' => 'vie',
157 * Maps ISO 639-1 2-letter language codes to the language names
158 * in the language database
160 * Not all languages have a 2 letter code, so some are missing
164 public static $code2ToName = array(
183 'id' => 'indonesian',
189 'lt' => 'lithuanian',
191 'mk' => 'macedonian',
198 'pt' => 'portuguese',
213 'vi' => 'vietnamese',
217 * Maps ISO 639-2 3-letter language codes to the language names
218 * in the language database.
222 public static $code3ToName = array(
226 'bul' => 'bulgarian',
242 'hun' => 'hungarian',
243 'ind' => 'indonesian',
244 'isl' => 'icelandic',
250 'lit' => 'lithuanian',
251 'mkd' => 'macedonian',
252 'mon' => 'mongolian',
255 'nor' => 'norwegian',
257 'por' => 'portuguese',
271 'ukr' => 'ukrainian',
274 'vie' => 'vietnamese',
278 * Returns the 2-letter ISO 639-1 code for the given language name.
280 * @param string $lang English language name like "swedish"
282 * @return string Two-letter language code (e.g. "sv") or NULL if not found
284 public static function nameToCode2($lang)
286 $lang = strtolower($lang);
287 if (!isset(self
::$nameToCode2[$lang])) {
290 return self
::$nameToCode2[$lang];
294 * Returns the 3-letter ISO 639-2 code for the given language name.
296 * @param string $lang English language name like "swedish"
298 * @return string Three-letter language code (e.g. "swe") or NULL if not found
300 public static function nameToCode3($lang)
302 $lang = strtolower($lang);
303 if (!isset(self
::$nameToCode3[$lang])) {
306 return self
::$nameToCode3[$lang];
310 * Returns the language name for the given 2-letter ISO 639-1 code.
312 * @param string $code Two-letter language code (e.g. "sv")
314 * @return string English language name like "swedish"
316 public static function code2ToName($code)
318 $lang = strtolower($code);
319 if (!isset(self
::$code2ToName[$code])) {
322 return self
::$code2ToName[$code];
326 * Returns the language name for the given 3-letter ISO 639-2 code.
328 * @param string $code Three-letter language code (e.g. "swe")
330 * @return string English language name like "swedish"
332 public static function code3ToName($code)
334 $lang = strtolower($code);
335 if (!isset(self
::$code3ToName[$code])) {
338 return self
::$code3ToName[$code];