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 class Text_LanguageDetect_ISO639
31 * Maps all language names from the language database to the
32 * ISO 639-1 2-letter language code.
34 * NULL indicates that there is no 2-letter code.
38 public static $nameToCode2 = array(
94 * Maps all language names from the language database to the
95 * ISO 639-2 3-letter language code.
99 public static $nameToCode3 = array(
104 'bulgarian' => 'bul',
119 'hungarian' => 'hun',
120 'icelandic' => 'isl',
121 'indonesian' => 'ind',
127 'lithuanian' => 'lit',
128 'macedonian' => 'mkd',
129 'mongolian' => 'mon',
131 'norwegian' => 'nor',
135 'portuguese' => 'por',
147 'ukrainian' => 'ukr',
150 'vietnamese' => 'vie',
155 * Maps ISO 639-1 2-letter language codes to the language names
156 * in the language database
158 * Not all languages have a 2 letter code, so some are missing
162 public static $code2ToName = array(
181 'id' => 'indonesian',
187 'lt' => 'lithuanian',
189 'mk' => 'macedonian',
196 'pt' => 'portuguese',
211 'vi' => 'vietnamese',
215 * Maps ISO 639-2 3-letter language codes to the language names
216 * in the language database.
220 public static $code3ToName = array(
224 'bul' => 'bulgarian',
240 'hun' => 'hungarian',
241 'ind' => 'indonesian',
242 'isl' => 'icelandic',
248 'lit' => 'lithuanian',
249 'mkd' => 'macedonian',
250 'mon' => 'mongolian',
253 'nor' => 'norwegian',
255 'por' => 'portuguese',
269 'ukr' => 'ukrainian',
272 'vie' => 'vietnamese',
276 * Returns the 2-letter ISO 639-1 code for the given language name.
278 * @param string $lang English language name like "swedish"
280 * @return string Two-letter language code (e.g. "sv") or NULL if not found
282 public static function nameToCode2($lang)
284 $lang = strtolower($lang);
285 if (!isset(self::$nameToCode2[$lang])) {
288 return self::$nameToCode2[$lang];
292 * Returns the 3-letter ISO 639-2 code for the given language name.
294 * @param string $lang English language name like "swedish"
296 * @return string Three-letter language code (e.g. "swe") or NULL if not found
298 public static function nameToCode3($lang)
300 $lang = strtolower($lang);
301 if (!isset(self::$nameToCode3[$lang])) {
304 return self::$nameToCode3[$lang];
308 * Returns the language name for the given 2-letter ISO 639-1 code.
310 * @param string $code Two-letter language code (e.g. "sv")
312 * @return string English language name like "swedish"
314 public static function code2ToName($code)
316 $lang = strtolower($code);
317 if (!isset(self::$code2ToName[$code])) {
320 return self::$code2ToName[$code];
324 * Returns the language name for the given 3-letter ISO 639-2 code.
326 * @param string $code Three-letter language code (e.g. "swe")
328 * @return string English language name like "swedish"
330 public static function code3ToName($code)
332 $lang = strtolower($code);
333 if (!isset(self::$code3ToName[$code])) {
336 return self::$code3ToName[$code];