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
13 * @link http://pear.php.net/package/Text_LanguageDetect/
17 * Provides a mapping between the languages from lang.dat and the
18 * ISO 639-1 and ISO-639-2 codes.
20 * Note that this class contains only languages that exist in lang.dat.
23 * @package Text_LanguageDetect
24 * @author Christian Weiske <cweiske@php.net>
25 * @copyright 2011 Christian Weiske <cweiske@php.net>
26 * @license http://www.debian.org/misc/bsd.license BSD
27 * @link http://www.loc.gov/standards/iso639-2/php/code_list.php
29 * @SuppressWarnings(PHPMD)
31 class Text_LanguageDetect_ISO639
34 * Maps all language names from the language database to the
35 * ISO 639-1 2-letter language code.
37 * NULL indicates that there is no 2-letter code.
41 public static $nameToCode2 = array(
97 * Maps all language names from the language database to the
98 * ISO 639-2 3-letter language code.
102 public static $nameToCode3 = array(
107 'bulgarian' => 'bul',
122 'hungarian' => 'hun',
123 'icelandic' => 'isl',
124 'indonesian' => 'ind',
130 'lithuanian' => 'lit',
131 'macedonian' => 'mkd',
132 'mongolian' => 'mon',
134 'norwegian' => 'nor',
138 'portuguese' => 'por',
150 'ukrainian' => 'ukr',
153 'vietnamese' => 'vie',
158 * Maps ISO 639-1 2-letter language codes to the language names
159 * in the language database
161 * Not all languages have a 2 letter code, so some are missing
165 public static $code2ToName = array(
184 'id' => 'indonesian',
190 'lt' => 'lithuanian',
192 'mk' => 'macedonian',
199 'pt' => 'portuguese',
214 'vi' => 'vietnamese',
218 * Maps ISO 639-2 3-letter language codes to the language names
219 * in the language database.
223 public static $code3ToName = array(
227 'bul' => 'bulgarian',
243 'hun' => 'hungarian',
244 'ind' => 'indonesian',
245 'isl' => 'icelandic',
251 'lit' => 'lithuanian',
252 'mkd' => 'macedonian',
253 'mon' => 'mongolian',
256 'nor' => 'norwegian',
258 'por' => 'portuguese',
272 'ukr' => 'ukrainian',
275 'vie' => 'vietnamese',
279 * Returns the 2-letter ISO 639-1 code for the given language name.
281 * @param string $lang English language name like "swedish"
283 * @return string Two-letter language code (e.g. "sv") or NULL if not found
285 public static function nameToCode2($lang)
287 $lang = strtolower($lang);
288 if (!isset(self
::$nameToCode2[$lang])) {
291 return self
::$nameToCode2[$lang];
295 * Returns the 3-letter ISO 639-2 code for the given language name.
297 * @param string $lang English language name like "swedish"
299 * @return string Three-letter language code (e.g. "swe") or NULL if not found
301 public static function nameToCode3($lang)
303 $lang = strtolower($lang);
304 if (!isset(self
::$nameToCode3[$lang])) {
307 return self
::$nameToCode3[$lang];
311 * Returns the language name for the given 2-letter ISO 639-1 code.
313 * @param string $code Two-letter language code (e.g. "sv")
315 * @return string English language name like "swedish"
317 public static function code2ToName($code)
319 $lang = strtolower($code);
320 if (!isset(self
::$code2ToName[$code])) {
323 return self
::$code2ToName[$code];
327 * Returns the language name for the given 3-letter ISO 639-2 code.
329 * @param string $code Three-letter language code (e.g. "swe")
331 * @return string English language name like "swedish"
333 public static function code3ToName($code)
335 $lang = strtolower($code);
336 if (!isset(self
::$code3ToName[$code])) {
339 return self
::$code3ToName[$code];