From 78df4e3549a57ae5359df45853d00696e688ae74 Mon Sep 17 00:00:00 2001 From: phpnut Date: Thu, 21 Dec 2006 09:17:32 +0000 Subject: [PATCH] Cleaning up I10n and I18n classes git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@4116 3807eeeb-6ff5-0310-8944-8be069107fe0 --- cake/libs/i18n.php | 845 +++++++++++---------------- cake/libs/l10n.php | 1374 +++++++++++++++++++++----------------------- 2 files changed, 1008 insertions(+), 1211 deletions(-) diff --git a/cake/libs/i18n.php b/cake/libs/i18n.php index 852c5616a..40187ec9a 100644 --- a/cake/libs/i18n.php +++ b/cake/libs/i18n.php @@ -1,6 +1,5 @@ - * Copyright (c) 2005, Cake Software Foundation, Inc. - * 1785 E. Sahara Avenue, Suite 490-204 - * Las Vegas, Nevada 89104 + * Copyright (c) 2006, Cake Software Foundation, Inc. + * 1785 E. Sahara Avenue, Suite 490-204 + * Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource - * @copyright Copyright (c) 2005, Cake Software Foundation, Inc. - * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project - * @package cake - * @subpackage cake.cake.libs - * @since CakePHP v 0.10.3.1465 - * @version $Revision$ - * @modifiedby $LastChangedBy$ - * @lastmodified $Date$ - * @license http://www.opensource.org/licenses/mit-license.php The MIT License + * @copyright Copyright (c) 2006, Cake Software Foundation, Inc. + * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project + * @package cake + * @subpackage cake.cake.libs + * @since CakePHP v 1.2.0.4114 + * @version $Revision$ + * @modifiedby $LastChangedBy$ + * @lastmodified $Date$ + * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ - /** * Included libraries. */ uses('l10n'); - /** * Short description for file. * * Long description for file * - * @package cake - * @subpackage cake.cake.libs - * @since CakePHP v 0.10.3.1465 + * @package cake + * @subpackage cake.cake.libs */ -class I18n extends Object -{ +class I18n extends Object { /** * Enter description here... * * @var unknown_type * @access private */ - var $_l10n = null; - + var $__l10n = null; /** * Enter description here... * * @var unknown_type + * @access public */ - var $locale = null; - + var $locale = null; /** * Enter description here... * * @var unknown_type * @access private */ - var $_domains = array(); - + var $__domains = array(); /** * Enter description here... * * @var unknown_type * @access private */ - var $_noLocal = null; - + var $__noLocal = null; /** * Enter description here... * * @return unknown */ - function &getInstance() - { - static $instance = array(); - if (!$instance) - { - $instance[0] =& new I18n(); - $instance[0]->_l10n =& new L10n(); - } - return $instance[0]; - } - + function &getInstance() { + static $instance = array(); + if (!$instance) { + $instance[0] =& new I18n(); + $instance[0]->__l10n =& new L10n(); + } + return $instance[0]; + } /** * Enter description here... * @@ -102,94 +91,66 @@ class I18n extends Object * @param unknown_type $directory * @return unknown */ - function translate($message, $message2 = NULL, $domain = NULL, $category = NULL, $count = NULL, $directory) - { - $_this =& I18n::getInstance(); + function translate($message, $message2 = null, $domain = null, $category = null, $count = null, $directory) { + $_this =& I18n::getInstance(); - if(!empty($_SESSION['Config']['locale'])) - { - $_this->locale = $_SESSION['Config']['locale']; - } - else - { - $_this->locale = $_this->_l10n->locale; - } + if(!empty($_SESSION['Config']['locale'])) { + $_this->locale = $_SESSION['Config']['locale']; + } else { + $_this->locale = $_this->__l10n->locale; + } - if(is_null($domain)) - { - if (preg_match('/views{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) - { - $domain = $regs[1]; - } - elseif (preg_match('/controllers{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) - { - $domain = ($regs[1]); - } - if(isset($domain) && $domain == 'templates') - { - if (preg_match('/templates{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) - { - $domain = ($regs[1]); - } - } - } + if(is_null($domain)) { + if (preg_match('/views{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) { + $domain = $regs[1]; + } elseif (preg_match('/controllers{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) { + $domain = ($regs[1]); + } - if(!isset($_this->_domains[$domain])) - { - $_this->_bindTextDomain($domain); - } + if(isset($domain) && $domain == 'templates') { + if (preg_match('/templates{0,1}\\'.DS.'([^\/]*)/', $directory, $regs)) { + $domain = ($regs[1]); + } + } + } - if (!isset($count)) - { - $pli = 0; - } - elseif (!empty($_this->_domains[$domain]["%plural-c"]) && is_null($_this->_noLocal)) - { - $ph = $_this->_domains[$domain]["%plural-c"]; - $pli = $_this->_pluralGuess($ph, $count); - } - else - { - if ($count != 1) - { - $pli = 1; - } - else - { - $pli = 0; - } - } + if(!isset($_this->__domains[$domain])) { + $_this->__bindTextDomain($domain); + } - if(!empty($_this->_domains[$domain][$message])) - { - if (($trans = $_this->_domains[$domain][$message]) || ($pli) && ($trans = $_this->_domains[$domain][$message2])) - { - if (is_array($trans)) - { - if (!isset($trans[$pli])) - { - $pli = 0; + if (!isset($count)) { + $pli = 0; + } elseif (!empty($_this->__domains[$domain]["%plural-c"]) && is_null($_this->__noLocal)) { + $ph = $_this->__domains[$domain]["%plural-c"]; + $pli = $_this->__pluralGuess($ph, $count); + } else { + if ($count != 1) { + $pli = 1; + } else { + $pli = 0; + } + } - } - $trans = $trans[$pli]; - } - if (strlen($trans)) - { - $message = $trans; - return $message; - } - } - } - if(!empty($pli)) - { - return($message2); - } - else - { - return($message); - } + if(!empty($_this->__domains[$domain][$message])) { + if (($trans = $_this->__domains[$domain][$message]) || ($pli) && ($trans = $_this->__domains[$domain][$message2])) { + if (is_array($trans)) { + if (!isset($trans[$pli])) { + $pli = 0; + } + $trans = $trans[$pli]; + } + if (strlen($trans)) { + $message = $trans; + return $message; + } + } + } + + if(!empty($pli)) { + return($message2); + } + return($message); } - /** * Enter description here... * @@ -198,206 +159,125 @@ class I18n extends Object * @return unknown * @access private */ - function _pluralGuess(&$type, $n) - { - if (is_string($type)) - { - if (($type == "nplurals=1;plural=0;") || !strlen($type)) - { - $type = -1; - } - elseif ($type == "nplurals=2;plural=n!=1;") - { - $type = 1; - } - elseif ($type == "nplurals=2;plural=n>1;") - { - $type = 2; - } - elseif (strpos($type, "n%100!=11")) - { - if (strpos($type, "n!=0")) - { - $type == 21; - } - if (strpos($type, "n%10<=4")) - { - $type = 22; - } - if (strpos($type, "n%10>=2")) - { - $type = 23; - } - } - elseif (strpos($type, "n<=4")) - { - $type = 25; - } - elseif (strpos($type, "n==2")) - { - $type = 31; - } - elseif (strpos($type, "n%10>=2")) - { - $type = 26; - } - elseif (strpos($type, "n%100==3")) - { - $type = 28; - } - elseif (strpos($type, ";plural=n;")) - { - $type = 7; - } - else - { - $type = 0; - } - } + function __pluralGuess(&$type, $n) { + if (is_string($type)) { + if (($type == "nplurals=1;plural=0;") || !strlen($type)) { + $type = -1; + } elseif ($type == "nplurals=2;plural=n!=1;") { + $type = 1; + } elseif ($type == "nplurals=2;plural=n>1;") { + $type = 2; + } elseif (strpos($type, "n%100!=11")) { - switch ($type) - { - case -1: - return (0); + if (strpos($type, "n!=0")) { + $type = 21; + } - case 1: - if ($n != 1) - { - return (1); - } - else - { - return (0); - } - case 2: - if ($n > 1) - { - return (1); - } - else - { - return (0); - } - case 7: - return ($n); - case 21: - if (($n % 10 == 1) && ($n % 100 != 11)) - { - return (0); - } - else - { - if ($n != 0 ) - { - return (1); - } - else - { - return (2); - } - } - case 22: - if (($n % 10 == 1) && ($n % 100 != 11)) - { - return (0); - } - else - { - if (($n % 10 >= 2) && ($n % 10 <= 4) && ($n % 100 < 10 || $n % 100 >= 20)) - { - return (1); - } - else - { - return (2); - } - } - case 23: - if (($n % 10 == 1) && ($n % 100 != 11)) - { - return (0); - } - else - { - if (($n %10 >= 2) && ($n % 100 < 10 || $n % 100 >= 20)) - { - return (1); - } - else - { - return (2); - } - } - case 25: - if ($n==1) - { - return (0); - } - else - { - if ($n >= 2 && $n <= 4) - { - return (1); - } - else - { - return (2); - } - } - case 26: - if ($n==1) - { - return (0); - } - else - { - if ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20)) - { - return (1); - } - else - { - return (2); - } - } - case 28: - if ($n % 100 == 1) - { - return (0); - } - else - { - if ($n % 100 == 2 || $n % 100 == 3 || $n % 100 == 4) - { - return (2); - } - else - { - return (3); - } - } - case 31: - if ($n == 1) - { - return (0); - } - else - { - if ($n == 2) - { - return (1); - } - else - { - return (2); - } - } - default: - $type = -1; - } - return(0); - } + if (strpos($type, "n%10<=4")) { + $type = 22; + } + if (strpos($type, "n%10>=2")) { + $type = 23; + } + } elseif (strpos($type, "n<=4")) { + $type = 25; + } elseif (strpos($type, "n==2")) { + $type = 31; + } elseif (strpos($type, "n%10>=2")) { + $type = 26; + } elseif (strpos($type, "n%100==3")) { + $type = 28; + } elseif (strpos($type, ";plural=n;")) { + $type = 7; + } else { + $type = 0; + } + } + + switch ($type) { + case -1: + return (0); + case 1: + if ($n != 1) { + return (1); + } + return (0); + case 2: + if ($n > 1) { + return (1); + } + return (0); + case 7: + return ($n); + case 21: + if (($n % 10 == 1) && ($n % 100 != 11)) { + return (0); + } + + if ($n != 0 ) { + return (1); + } + return (2); + case 22: + if (($n % 10 == 1) && ($n % 100 != 11)) { + return (0); + } + + if (($n % 10 >= 2) && ($n % 10 <= 4) && ($n % 100 < 10 || $n % 100 >= 20)) { + return (1); + } + return (2); + case 23: + if (($n % 10 == 1) && ($n % 100 != 11)) { + return (0); + } + + if (($n %10 >= 2) && ($n % 100 < 10 || $n % 100 >= 20)) { + return (1); + } + return (2); + case 25: + if ($n==1) { + return (0); + } + + if ($n >= 2 && $n <= 4) { + return (1); + } + return (2); + case 26: + if ($n==1) { + return (0); + } + + if ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20)) { + return (1); + } + return (2); + case 28: + if ($n % 100 == 1) { + return (0); + } + + if ($n % 100 == 2 || $n % 100 == 3 || $n % 100 == 4) { + return (2); + } + return (3); + case 31: + if ($n == 1) { + return (0); + } + + if ($n == 2) { + return (1); + } + return (2); + default: + $type = -1; + } + return(0); + } /** * Enter description here... * @@ -405,68 +285,60 @@ class I18n extends Object * @return unknown * @access private */ - function _bindTextDomain($domain) - { - $_this =& I18n::getInstance(); - $_this->_noLocal = true; + function __bindTextDomain($domain) { + $_this =& I18n::getInstance(); + $_this->__noLocal = true; - $searchPath[] = VIEWS.$domain.DS."locale"; - $searchPath[] = CAKE."locale"; + $searchPath[] = VIEWS . $domain . DS . 'locale'; + $searchPath[] = CAKE . 'locale'; - foreach (explode(",",$_this->locale) as $d) - { - $d = trim($d); - $d = strtok($d, "@.-+=%:; "); - if (strlen($d)) - { - $dir[] = $d; - } - if (strpos($d, "_")) - { - $dir[] = strtok($d, "_"); - } - } - foreach ($searchPath as $directory) - { - foreach ($dir as $lang) - { - $file = "$directory".DS."$lang".DS."LC_MESSAGES".DS."$domain"; - if (file_exists($fn = "$file.mo") && ($f = fopen($fn, "rb"))) - { - $_this->_loadMo($f, $domain); - $_this->_noLocal = null; - break 2; - } - elseif (file_exists($fn = "$file.po") && ($f = fopen($fn, "r"))) - { - $_this->_loadPo($f, $domain); - $_this->_noLocal = null; - break 2; - } - } - } - if(empty($_this->_domains[$domain])) - { - return($domain); - } + foreach (explode(",",$_this->locale) as $d) { + $d = trim($d); + $d = strtok($d, "@.-+=%:; "); - if ($head = $_this->_domains[$domain][""]) - { - foreach (explode("\n", $head) as $line) - { - $header = strtok($line,":"); - $line = trim(strtok("\n")); - $_this->_domains[$domain]["%po-header"][strtolower($header)] = $line; - } - if(isset($_this->_domains[$domain]["%po-header"]["plural-forms"])) - { - $switch = preg_replace("/[(){}\\[\\]^\\s*\\]]+/", "", $_this->_domains[$domain]["%po-header"]["plural-forms"]); - $_this->_domains[$domain]["%plural-c"] = $switch; - } - } - return($domain); - } + if (strlen($d)) { + $dir[] = $d; + } + if (strpos($d, "_")) { + $dir[] = strtok($d, "_"); + } + } + + foreach ($searchPath as $directory) { + foreach ($dir as $lang) { + $file = $directory . DS . $lang . DS . 'LC_MESSAGES' . DS . $domain; + + if (file_exists($fn = "$file.mo") && ($f = fopen($fn, "rb"))) { + $_this->__loadMo($f, $domain); + $_this->__noLocal = null; + break 2; + } elseif (file_exists($fn = "$file.po") && ($f = fopen($fn, "r"))) { + $_this->__loadPo($f, $domain); + $_this->__noLocal = null; + break 2; + } + } + } + + if(empty($_this->__domains[$domain])) { + return($domain); + } + + if ($head = $_this->__domains[$domain][""]) { + foreach (explode("\n", $head) as $line) { + $header = strtok($line,":"); + $line = trim(strtok("\n")); + $_this->__domains[$domain]["%po-header"][strtolower($header)] = $line; + } + + if(isset($_this->__domains[$domain]["%po-header"]["plural-forms"])) { + $switch = preg_replace("/[(){}\\[\\]^\\s*\\]]+/", "", $_this->__domains[$domain]["%po-header"]["plural-forms"]); + $_this->__domains[$domain]["%plural-c"] = $switch; + } + } + return($domain); + } /** * Enter description here... * @@ -474,44 +346,40 @@ class I18n extends Object * @param unknown_type $domain * @access private */ - function _loadMo($file, $domain) - { - $_this =& I18n::getInstance(); - $data = fread($file, 1<<20); - fclose($file); + function __loadMo($file, $domain) { + $_this =& I18n::getInstance(); + $data = fread($file, 1<<20); + fclose($file); - if ($data) - { - $header = substr($data, 0, 20); - $header = unpack("L1magic/L1version/L1count/L1o_msg/L1o_trn", $header); - extract($header); - if ((dechex($magic) == "950412de") && ($version == 0)) - { - for ($n=0; $n<$count; $n++) - { - $r = unpack("L1len/L1offs", substr($data, $o_msg + $n * 8, 8)); - $msgid = substr($data, $r["offs"], $r["len"]); - unset($msgid_plural); - if (strpos($msgid, "\000")) - { - list($msgid, $msgid_plural) = explode("\000", $msgid); - } - $r = unpack("L1len/L1offs", substr($data, $o_trn + $n * 8, 8)); - $msgstr = substr($data, $r["offs"], $r["len"]); - if (strpos($msgstr, "\000")) - { - $msgstr = explode("\000", $msgstr); - } - $_this->_domains[$domain][$msgid] = $msgstr; - if (isset($msgid_plural)) - { - $_this->_domains[$domain][$msgid_plural] = &$_this->_domains[$domain][$msgid]; - } - } - } - } - } + if ($data) { + $header = substr($data, 0, 20); + $header = unpack("L1magic/L1version/L1count/L1o_msg/L1o_trn", $header); + extract($header); + if ((dechex($magic) == "950412de") && ($version == 0)) { + for ($n = 0; $n < $count; $n++) { + $r = unpack("L1len/L1offs", substr($data, $o_msg + $n * 8, 8)); + $msgid = substr($data, $r["offs"], $r["len"]); + unset($msgid_plural); + + if (strpos($msgid, "\000")) { + list($msgid, $msgid_plural) = explode("\000", $msgid); + } + $r = unpack("L1len/L1offs", substr($data, $o_trn + $n * 8, 8)); + $msgstr = substr($data, $r["offs"], $r["len"]); + + if (strpos($msgstr, "\000")) { + $msgstr = explode("\000", $msgstr); + } + $_this->__domains[$domain][$msgid] = $msgstr; + + if (isset($msgid_plural)) { + $_this->__domains[$domain][$msgid_plural] = &$_this->__domains[$domain][$msgid]; + } + } + } + } + } /** * Enter description here... * @@ -520,96 +388,70 @@ class I18n extends Object * @return unknown * @access private */ - function _loadPo($file, $domain) - { - $_this =& I18n::getInstance(); - $type = 0; - $translations = array(); - $translationKey = ""; - $plural = 0; - $header = ""; + function __loadPo($file, $domain) { + $_this =& I18n::getInstance(); + $type = 0; + $translations = array(); + $translationKey = ""; + $plural = 0; + $header = ""; - do - { - $line = trim(fgets($file,1024)); - if ($line == "" || $line[0] == "#") - { - continue; - } - if (preg_match("/msgid[[:space:]]+\"(.+)\"$/i", $line, $regs)) - { - $type = 1; - $translationKey = stripcslashes($regs[1]); - } - elseif (preg_match("/msgid[[:space:]]+\"\"$/i", $line, $regs)) - { - $type = 2; - $translationKey = ""; - } - elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && ($type == 1 || $type == 2 || $type == 3)) - { - $type = 3; - $translationKey .= stripcslashes($regs[1]); - } - elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) - { - $translations[$translationKey] = stripcslashes($regs[1]); - $type = 4; - } elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) - { - $type = 4; - $translations[$translationKey] = ""; - } elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 4 && $translationKey) - { - $translations[$translationKey] .= stripcslashes($regs[1]); - } elseif (preg_match("/msgid_plural[[:space:]]+\".*\"$/i", $line, $regs)) - { - $type = 6; - } - elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"(.+)\"$/i", $line, $regs) && ($type == 6) && $translationKey) - { - $plural = $regs[1]; - $translations[$translationKey][$plural] = stripcslashes($regs[2]); - $type = 6; - } - elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"\"$/i", $line, $regs) && ($type == 6) && $translationKey) - { - $plural = $regs[1]; - $translations[$translationKey][$plural] = ""; - $type = 6; - } - elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 6 && $translationKey) - { - $translations[$translationKey][$plural] .= stripcslashes($regs[1]); - } - elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $regs) && $type == 2 && !$translationKey) - { - $header = stripcslashes($regs[1]); - $type = 5; - } - elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $regs) && !$translationKey) - { - $header = ""; - $type = 5; - } - elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 5) - { - $header .= stripcslashes($regs[1]); - } - else - { - unset($translations[$translationKey]); - $type = 0; - $translationKey = ""; - $plural = 0; - } - } while(!feof($file)); + do { + $line = trim(fgets($file, 1024)); - fclose($file); - $merge[""] = $header; - return $_this->_domains[$domain] = array_merge($merge ,$translations); - } + if ($line == "" || $line[0] == "#") { + continue; + } + if (preg_match("/msgid[[:space:]]+\"(.+)\"$/i", $line, $regs)) { + $type = 1; + $translationKey = stripcslashes($regs[1]); + } elseif (preg_match("/msgid[[:space:]]+\"\"$/i", $line, $regs)) { + $type = 2; + $translationKey = ""; + } elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && ($type == 1 || $type == 2 || $type == 3)) { + $type = 3; + $translationKey .= stripcslashes($regs[1]); + } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) { + $translations[$translationKey] = stripcslashes($regs[1]); + $type = 4; + } elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) { + $type = 4; + $translations[$translationKey] = ""; + } elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 4 && $translationKey) { + $translations[$translationKey] .= stripcslashes($regs[1]); + } elseif (preg_match("/msgid_plural[[:space:]]+\".*\"$/i", $line, $regs)) { + $type = 6; + } elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"(.+)\"$/i", $line, $regs) && ($type == 6) && $translationKey) { + $plural = $regs[1]; + $translations[$translationKey][$plural] = stripcslashes($regs[2]); + $type = 6; + } elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"\"$/i", $line, $regs) && ($type == 6) && $translationKey) { + $plural = $regs[1]; + $translations[$translationKey][$plural] = ""; + $type = 6; + } elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 6 && $translationKey) { + $translations[$translationKey][$plural] .= stripcslashes($regs[1]); + } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $regs) && $type == 2 && !$translationKey) { + $header = stripcslashes($regs[1]); + $type = 5; + } elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $regs) && !$translationKey) { + $header = ""; + $type = 5; + } elseif (preg_match("/^\"(.*)\"$/i", $line, $regs) && $type == 5) { + $header .= stripcslashes($regs[1]); + } else { + unset($translations[$translationKey]); + $type = 0; + $translationKey = ""; + $plural = 0; + } + } while (!feof($file)); + + fclose($file); + $merge[""] = $header; + return $_this->__domains[$domain] = array_merge($merge ,$translations); + } /** * Enter description here... * @@ -619,9 +461,8 @@ class I18n extends Object * @access private * @todo Not implemented */ - function _bindTextDomainCodeset($domain, $codeset) - { - return($domain); - } + function __bindTextDomainCodeset($domain, $codeset) { + return($domain); + } } ?> \ No newline at end of file diff --git a/cake/libs/l10n.php b/cake/libs/l10n.php index edec36874..06618e131 100644 --- a/cake/libs/l10n.php +++ b/cake/libs/l10n.php @@ -1,6 +1,5 @@ - * Copyright (c) 2005, Cake Software Foundation, Inc. - * 1785 E. Sahara Avenue, Suite 490-204 - * Las Vegas, Nevada 89104 + * Copyright (c) 2006, Cake Software Foundation, Inc. + * 1785 E. Sahara Avenue, Suite 490-204 + * Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource - * @copyright Copyright (c) 2005, Cake Software Foundation, Inc. - * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project - * @package cake - * @subpackage cake.cake.libs - * @since CakePHP v 0.10.3.1423 - * @version $Revision$ - * @modifiedby $LastChangedBy$ - * @lastmodified $Date$ - * @license http://www.opensource.org/licenses/mit-license.php The MIT License + * @copyright Copyright (c) 2006, Cake Software Foundation, Inc. + * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project + * @package cake + * @subpackage cake.cake.libs + * @since CakePHP v 1.2.0.4114 + * @version $Revision$ + * @modifiedby $LastChangedBy$ + * @lastmodified $Date$ + * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ - /** * Short description for file. * * Long description for file * - * @package cake - * @subpackage cake.cake.libs - * @since CakePHP v 0.10.3.1423 + * @package cake + * @subpackage cake.cake.libs */ - -class L10n extends Object -{ - var $language = 'English (United States)'; - var $languagePath = 'eng'; - var $lang = 'en-us'; - var $locale = 'en_US'; - var $winLocale = 'eng'; - - var $_l10nMap = array( +class L10n extends Object { + var $language = 'English (United States)'; + var $languagePath = 'eng'; + var $lang = 'en-us'; + var $locale = 'en_US'; + var $winLocale = 'eng'; + var $_l10nMap = array( /*Afar*/ 'aar' => 'aa', /*Abkhazian*/ 'abk' => 'ab', /*Achinese*/ 'ace' => 'ace', @@ -55,7 +49,7 @@ class L10n extends Object /*Adyghe; Adygei*/ 'ady' => 'ady', /*Afro-Asiatic (Other)*/ 'afa' => 'afa', /*Afrihili*/ 'afh' => 'afh', -/*Amharic*/ 'afr' => 'af', +/*Afrikaans*/ 'afr' => 'af', /*Ainu*/ 'ain' => 'ain', /*Akan*/ 'aka' => 'ak', /*Akkadian*/ 'akk' => 'akk', @@ -85,19 +79,19 @@ class L10n extends Object /*Banda*/ 'bad' => 'bad', /*Bamileke languages*/ 'bai' => 'bai', /*Bashkir*/ 'bak' => 'ba', -/*Bashkir*/ 'bal' => 'bal', -/*Bambara*/ 'bam' => 'bam', +/*Baluchi*/ 'bal' => 'bal', +/*Bambara*/ 'bam' => 'bm', /*Balinese*/ 'ban' => 'ban', /*Basque*/ 'baq' => 'eu', /*Basa*/ 'bas' => 'bas', /*Baltic (Other)*/ 'bat' => 'bat', /*Beja*/ 'bej' => 'bej', -/*Belarusian*/ 'bel' => 'bel', +/*Belarusian*/ 'bel' => 'be', /*Bemba*/ 'bem' => 'bem', /*Bengali*/ 'ben' => 'ben', /*Berber (Other)*/ 'ber' => 'ber', /*Bhojpuri*/ 'bho' => 'bho', -/*Bihari*/ 'bih' => 'bih', +/*Bihari*/ 'bih' => 'bh', /*Bikol*/ 'bik' => 'bik', /*Bini*/ 'bin' => 'bin', /*Bislama*/ 'bis' => 'bis', @@ -182,7 +176,7 @@ class L10n extends Object /*Fang*/ 'fan' => 'fan', /*Faroese*/ 'fao' => 'fo', /*Fanti*/ 'fat' => 'fat', -/*Fijian*/ 'fij' => 'fij', +/*Fijian*/ 'fij' => 'fj', /*Filipino; Pilipino*/ 'fil' => 'fil', /*Finnish*/ 'fin' => 'fi', /*Finno-Ugrian (Other)*/ 'fiu' => 'fiu', @@ -213,7 +207,7 @@ class L10n extends Object /*Gothic*/ 'got' => 'got', /*Grebo*/ 'grb' => 'grb', /*Greek, Ancient*/ 'grc' => 'grc', -/*Greek, Modern*/ 'gre' => 'gre', +/*Greek, Modern*/ 'gre' => 'el', /*Guarani*/ 'grn' => 'gn', /*Gujarati*/ 'guj' => 'gu', /*Gwich´in*/ 'gwi' => 'gwi', @@ -233,23 +227,22 @@ class L10n extends Object /*Hungarian*/ 'hun' => 'hu', /*Hupa*/ 'hup' => 'hup', /*Iban*/ 'iba' => 'iba', -/*Igbo*/ 'ibo' => 'ibo', +/*Igbo*/ 'ibo' => 'ig', /*Icelandic*/ 'ice' => 'is', /*Ido*/ 'ido' => 'io', /*Sichuan Yi*/ 'iii' => 'ii', /*Ijo*/ 'ijo' => 'ijo', /*Inuktitut*/ 'iku' => 'iku', -/*Interlingue*/ 'ile' => 'ile', +/*Interlingue*/ 'ile' => 'ie', /*Iloko*/ 'ilo' => 'ilo', -/*Interlingua*/ 'ina' => 'ia', /*Indic (Other)*/ 'inc' => 'inc', -/*Indonesian*/ 'ind' => 'ind', +/*Indonesian*/ 'ind' => 'id', /*Indo-European (Other)*/ 'ine' => 'ine', /*Ingush*/ 'inh' => 'inh', -/*Inupiaq*/ 'ipk' => 'ipk', +/*Inupiaq*/ 'ipk' => 'ik', /*Iranian (Other)*/ 'ira' => 'ira', /*Iroquoian languages*/ 'iro' => 'iro', -/*Italian*/ 'ita' => 'ita', +/*Italian*/ 'ita' => 'it', /*Javanese*/ 'jav' => 'jav', /*Lojban*/ 'jbo' => 'jbo', /*Japanese*/ 'jpn' => 'jpn', @@ -258,20 +251,20 @@ class L10n extends Object /*Kara-Kalpak*/ 'kaa' => 'kaa', /*Kabyle*/ 'kab' => 'kab', /*Kachin*/ 'kac' => 'kac', -/*Kalaallisut; Greenlandic*/'kal' => 'kal', +/*Kalaallisut; Greenlandic*/'kal' => 'kl', /*Kamba*/ 'kam' => 'kam', /*Kannada*/ 'kan' => 'kan', /*Karen*/ 'kar' => 'kar', /*Kashmiri*/ 'kas' => 'kas', /*Kanuri*/ 'kau' => 'kau', /*Kawi*/ 'kaw' => 'kaw', -/*Kazakh*/ 'kaz' => 'kaz', +/*Kazakh*/ 'kaz' => 'kk', /*Kabardian*/ 'kbd' => 'kbd', /*Khasi*/ 'kha' => 'kha', /*Khoisan (Other)*/ 'khi' => 'khi', /*Khmer*/ 'khm' => 'khm', /*Khotanese*/ 'kho' => 'kho', -/*Kikuyu; Gikuyu*/ 'kik' => 'kik', +/*Kikuyu; Gikuyu*/ 'kik' => 'ki', /*Kinyarwanda*/ 'kin' => 'kin', /*Kirghiz*/ 'kir' => 'kir', /*Kimbundu*/ 'kmb' => 'kmb', @@ -426,7 +419,7 @@ class L10n extends Object /*Serbian*/ 'scc' => 'sr', /*Sicilian*/ 'scn' => 'scn', /*Scots*/ 'sco' => 'sco', -/*Croatian*/ 'scr' => 'scr', +/*Croatian*/ 'scr' => 'hr', /*Selkup*/ 'sel' => 'sel', /*Semitic (Other)*/ 'sem' => 'sem', /*Irish, Old*/ 'sga' => 'sga', @@ -532,671 +525,634 @@ class L10n extends Object /*Zuni*/ 'zun' => 'zun'); var $_l10nCatalog = array( - 'aa' => array('language' => 'Afar', '3iso639' => 'aar', '2iso639' => 'aa', 'locale' => 'aa', 'localeFallback' => 'aa'), - 'ab' => array('language' => 'Abkhazian', '3iso639' => 'abk', '2iso639' => 'ab', 'locale' => 'ab', 'localeFallback' => 'ab'), - 'ace' => array('language' => 'Achinese', '3iso639' => 'ace', '2iso639' => null, 'locale' => 'ace', 'localeFallback' => 'ace'), - 'ach' => array('language' => 'Acoli', '3iso639' => 'ach', '2iso639' => null, 'locale' => 'ach', 'localeFallback' => 'ach'), - 'ada' => array('language' => 'Adangme', '3iso639' => 'ada', '2iso639' => null, 'locale' => 'ada', 'localeFallback' => 'ada'), - 'ady' => array('language' => 'Adyghe; Adygei', '3iso639' => 'ady', '2iso639' => null, 'locale' => 'ady', 'localeFallback' => 'ady'), - 'ae' => array('language' => 'Avestan', '3iso639' => 'ave', '2iso639' => 'ae', 'locale' => 'ae', 'localeFallback' => 'ae'), - 'af' => array('language' => 'Afrikaans', '3iso639' => 'afr', '2iso639' => 'af', 'locale' => 'af', 'localeFallback' => 'af'), - 'afa' => array('language' => 'Afro-Asiatic (Other)', '3iso639' => 'afa', '2iso639' => null, 'locale' => 'afa', 'localeFallback' => 'afa'), - 'afh' => array('language' => 'Afrihili', '3iso639' => 'afh', '2iso639' => null, 'locale' => 'afh', 'localeFallback' => 'afh'), - 'ain' => array('language' => 'Ainu', '3iso639' => 'ain', '2iso639' => null, 'locale' => 'ain', 'localeFallback' => 'ain'), - 'ak' => array('language' => 'Akan', '3iso639' => 'aka', '2iso639' => 'ak', 'locale' => 'ak', 'localeFallback' => 'ak'), - 'akk' => array('language' => 'Akkadian', '3iso639' => 'akk', '2iso639' => null, 'locale' => 'akk', 'localeFallback' => 'akk'), - 'ale' => array('language' => 'Aleut', '3iso639' => 'ale', '2iso639' => null, 'locale' => 'ale', 'localeFallback' => 'ale'), - 'alg' => array('language' => 'Algonquian Languages', '3iso639' => 'alg', '2iso639' => null, 'locale' => 'alg', 'localeFallback' => 'alg'), - 'alt' => array('language' => 'Southern Altai', '3iso639' => 'alt', '2iso639' => null, 'locale' => 'alt', 'localeFallback' => 'alt'), - 'am' => array('language' => 'Amharic', '3iso639' => 'amh', '2iso639' => 'am', 'locale' => 'am', 'localeFallback' => 'am'), - 'an' => array('language' => 'Aragonese', '3iso639' => 'arg', '2iso639' => 'an', 'locale' => 'an', 'localeFallback' => 'an'), - 'ang' => array('language' => 'English, Old', '3iso639' => 'ang', '2iso639' => null, 'locale' => 'ang', 'localeFallback' => 'ang'), - 'apa' => array('language' => 'Apache languages', '3iso639' => 'apa', '2iso639' => null, 'locale' => 'apa', 'localeFallback' => 'apa'), - 'ar' => array('language' => 'Arabic', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar', 'localeFallback' => 'ar'), - 'ar-ae' => array('language' => 'Arabic (U.A.E.)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_AE', 'localeFallback' => 'ar'), - 'ar-bh' => array('language' => 'Arabic (Bahrain)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_BH', 'localeFallback' => 'ar'), - 'ar-dz' => array('language' => 'Arabic (Algeria)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_DZ', 'localeFallback' => 'ar'), - 'ar-eg' => array('language' => 'Arabic (Egypt)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_EG', 'localeFallback' => 'ar'), - 'ar-iq' => array('language' => 'Arabic (Iraq)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_IQ', 'localeFallback' => 'ar'), - 'ar-jo' => array('language' => 'Arabic (Jordan)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_JO', 'localeFallback' => 'ar'), - 'ar-kw' => array('language' => 'Arabic (Kuwait)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_KW', 'localeFallback' => 'ar'), - 'ar-lb' => array('language' => 'Arabic (Lebanon)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_LB', 'localeFallback' => 'ar'), - 'ar-ly' => array('language' => 'Arabic (Libya)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_LY', 'localeFallback' => 'ar'), - 'ar-ma' => array('language' => 'Arabic (Morocco)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_MA', 'localeFallback' => 'ar'), - 'ar-om' => array('language' => 'Arabic (Oman)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_OM', 'localeFallback' => 'ar'), - 'ar-qa' => array('language' => 'Arabic (Qatar)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_QA', 'localeFallback' => 'ar'), - 'ar-sa' => array('language' => 'Arabic (Saudi Arabia)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_SA', 'localeFallback' => 'ar'), - 'ar-sy' => array('language' => 'Arabic (Syria)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_SY', 'localeFallback' => 'ar'), - 'ar-tn' => array('language' => 'Arabic (Tunisia)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_TN', 'localeFallback' => 'ar'), - 'ar-ye' => array('language' => 'Arabic (Yemen)', '3iso639' => 'ara', '2iso639' => 'ar', 'locale' => 'ar_YE', 'localeFallback' => 'ar'), - 'arc' => array('language' => 'Aramaic', '3iso639' => 'arc', '2iso639' => null, 'locale' => 'arc', 'localeFallback' => 'arc'), - 'arn' => array('language' => 'Araucanian', '3iso639' => 'arn', '2iso639' => null, 'locale' => 'arn', 'localeFallback' => 'arn'), - 'arp' => array('language' => 'Arapaho', '3iso639' => 'arp', '2iso639' => null, 'locale' => 'arp', 'localeFallback' => 'arp'), - 'arw' => array('language' => 'Arawak', '3iso639' => 'arw', '2iso639' => null, 'locale' => 'arw', 'localeFallback' => 'arw'), - 'as' => array('language' => 'Assamese', '3iso639' => 'asm', '2iso639' => 'as', 'locale' => 'as', 'localeFallback' => 'as'), - 'ast' => array('language' => 'Asturian', '3iso639' => 'ast', '2iso639' => null, 'locale' => 'ast', 'localeFallback' => 'ast'), - 'ath' => array('language' => 'Athapascan languages', '3iso639' => 'ath', '2iso639' => null, 'locale' => 'ath', 'localeFallback' => 'ath'), - 'aus' => array('language' => 'Australian languages', '3iso639' => 'aus', '2iso639' => null, 'locale' => 'aus', 'localeFallback' => 'aus'), - 'av' => array('language' => 'Avaric', '3iso639' => 'ava', '2iso639' => 'av', 'locale' => 'av', 'localeFallback' => 'av'), - 'awa' => array('language' => 'Awadhi', '3iso639' => 'awa', '2iso639' => null, 'locale' => 'awa', 'localeFallback' => 'awa'), - 'ay' => array('language' => 'Aymara', '3iso639' => 'aym', '2iso639' => null, 'locale' => 'ay', 'localeFallback' => 'ay'), - 'az' => array('language' => 'Azerbaijani', '3iso639' => 'aze', '2iso639' => 'az', 'locale' => 'az', 'localeFallback' => 'az'), - 'ba' => array('language' => 'Bashkir', '3iso639' => 'bak', '2iso639' => 'ba', 'locale' => 'ba', 'localeFallback' => 'ba'), - 'bad' => array('language' => 'Banda', '3iso639' => 'bad', '2iso639' => null, 'locale' => 'bad', 'localeFallback' => 'bad'), - 'bai' => array('language' => 'Bamileke languages', '3iso639' => 'bai', '2iso639' => null, 'locale' => 'bai', 'localeFallback' => 'bai'), - 'bal' => array('language' => 'Baluchi', '3iso639' => 'bal', '2iso639' => null, 'locale' => 'bal', 'localeFallback' => 'bal'), - 'bam' => array('language' => 'Bambara', '3iso639' => 'bam', '2iso639' => null, 'locale' => 'bam', 'localeFallback' => 'bam'), - 'ban' => array('language' => 'Balinese', '3iso639' => 'ban', '2iso639' => null, 'locale' => 'ban', 'localeFallback' => 'ban'), - 'bas' => array('language' => 'Basa', '3iso639' => 'bas', '2iso639' => null, 'locale' => 'bas', 'localeFallback' => 'bas'), - 'bat' => array('language' => 'Baltic (Other)', '3iso639' => 'bat', '2iso639' => null, 'locale' => 'bat', 'localeFallback' => 'bat'), - 'be' => array('language' => 'Belarusian', '3iso639' => 'bel', '2iso639' => 'be', 'locale' => 'be', 'localeFallback' => 'be'), - 'bej' => array('language' => 'Beja', '3iso639' => 'bej', '2iso639' => null, 'locale' => 'bej', 'localeFallback' => 'bej'), - 'bel' => array('language' => 'Belarusian', '3iso639' => 'bel', '2iso639' => null, 'locale' => 'bel', 'localeFallback' => 'bel'), - 'bem' => array('language' => 'Bemba', '3iso639' => 'bem', '2iso639' => null, 'locale' => 'bem', 'localeFallback' => 'bem'), - 'ben' => array('language' => 'Bengali', '3iso639' => 'ben', '2iso639' => null, 'locale' => 'ben', 'localeFallback' => 'ben'), - 'ber' => array('language' => 'Berber (Other)', '3iso639' => 'ber', '2iso639' => null, 'locale' => 'ber', 'localeFallback' => 'ber'), - 'bg' => array('language' => 'Bulgarian', '3iso639' => 'bul', '2iso639' => 'bg', 'locale' => 'bg', 'localeFallback' => 'bg'), - 'bh' => array('language' => 'Bihari', '3iso639' => 'bih', '2iso639' => 'bh', 'locale' => 'bh', 'localeFallback' => 'bh'), - 'bho' => array('language' => 'Bhojpuri', '3iso639' => 'bho', '2iso639' => null, 'locale' => 'bho', 'localeFallback' => 'bho'), - 'bi' => array('language' => 'Bislama', '3iso639' => 'bis', '2iso639' => 'bi', 'locale' => 'bi', 'localeFallback' => 'bi'), - 'bih' => array('language' => 'Bihari', '3iso639' => 'bih', '2iso639' => null, 'locale' => 'bih', 'localeFallback' => 'bih'), - 'bik' => array('language' => 'Bikol', '3iso639' => 'bik', '2iso639' => null, 'locale' => 'bik', 'localeFallback' => 'bik'), - 'bin' => array('language' => 'Bini', '3iso639' => 'bin', '2iso639' => null, 'locale' => 'bin', 'localeFallback' => 'bin'), - 'bis' => array('language' => 'Bislama', '3iso639' => 'bis', '2iso639' => null, 'locale' => 'bis', 'localeFallback' => 'bis'), - 'bla' => array('language' => 'Siksika', '3iso639' => 'bla', '2iso639' => null, 'locale' => 'bla', 'localeFallback' => 'bla'), - 'bm' => array('language' => 'Bambara', '3iso639' => 'bam', '2iso639' => 'bm', 'locale' => 'bm', 'localeFallback' => 'bm'), - 'bn' => array('language' => 'Bengali', '3iso639' => 'ben', '2iso639' => 'bn', 'locale' => 'bn', 'localeFallback' => 'bn'), - 'bnt' => array('language' => 'Bantu (Other)', '3iso639' => 'bnt', '2iso639' => null, 'locale' => 'bnt', 'localeFallback' => 'bnt'), - 'bo' => array('language' => 'Tibetan', '3iso639' => 'tib', '2iso639' => 'bo', 'locale' => 'bo', 'localeFallback' => 'bo'), - 'br' => array('language' => 'Breton', '3iso639' => 'bre', '2iso639' => 'br', 'locale' => 'br', 'localeFallback' => 'br'), - 'bra' => array('language' => 'Braj', '3iso639' => 'bra', '2iso639' => null, 'locale' => 'bra', 'localeFallback' => 'bra'), - 'bs' => array('language' => 'Bosnian', '3iso639' => 'bos', '2iso639' => 'bs', 'locale' => 'bs', 'localeFallback' => 'bs'), - 'btk' => array('language' => 'Batak (Indonesia)', '3iso639' => 'btk', '2iso639' => null, 'locale' => 'btk', 'localeFallback' => 'btk'), - 'bua' => array('language' => 'Buriat', '3iso639' => 'bua', '2iso639' => null, 'locale' => 'bua', 'localeFallback' => 'bua'), - 'bug' => array('language' => 'Buginese', '3iso639' => 'bug', '2iso639' => null, 'locale' => 'bug', 'localeFallback' => 'bug'), - 'byn' => array('language' => 'Blin; Bilin', '3iso639' => 'byn', '2iso639' => null, 'locale' => 'byn', 'localeFallback' => 'byn'), - 'ca' => array('language' => 'Catalan', '3iso639' => 'cat', '2iso639' => 'ca', 'locale' => 'es_CA', 'localeFallback' => 'es_CA'), - 'cad' => array('language' => 'Caddo', '3iso639' => 'cad', '2iso639' => null, 'locale' => 'cad', 'localeFallback' => 'cad'), - 'cai' => array('language' => 'Central American Indian (Other)', '3iso639' => 'cai', '2iso639' => null, 'locale' => 'cai', 'localeFallback' => 'cai'), - 'car' => array('language' => 'Carib', '3iso639' => 'car', '2iso639' => null, 'locale' => 'car', 'localeFallback' => 'car'), - 'cau' => array('language' => 'Caucasian (Other)', '3iso639' => 'cau', '2iso639' => null, 'locale' => 'cau', 'localeFallback' => 'cau'), - 'ce' => array('language' => 'Chechen', '3iso639' => 'che', '2iso639' => 'ce', 'locale' => 'ce', 'localeFallback' => 'ce'), - 'ceb' => array('language' => 'Cebuano', '3iso639' => 'ceb', '2iso639' => null, 'locale' => 'ceb', 'localeFallback' => 'ceb'), - 'cel' => array('language' => 'Celtic (Other)', '3iso639' => 'cel', '2iso639' => null, 'locale' => 'cel', 'localeFallback' => 'cel'), - 'ch' => array('language' => 'Chamorro', '3iso639' => 'cha', '2iso639' => 'ch', 'locale' => 'ch', 'localeFallback' => 'ch'), - 'cha' => array('language' => 'Chamorro', '3iso639' => 'cha', '2iso639' => null, 'locale' => 'cha', 'localeFallback' => 'cha'), - 'chb' => array('language' => 'Chibcha', '3iso639' => 'chb', '2iso639' => null, 'locale' => 'chb', 'localeFallback' => 'chb'), - 'chg' => array('language' => 'Chagatai', '3iso639' => 'chg', '2iso639' => null, 'locale' => 'chg', 'localeFallback' => 'chg'), - 'chk' => array('language' => 'Chuukese', '3iso639' => 'chk', '2iso639' => null, 'locale' => 'chk', 'localeFallback' => 'chk'), - 'chm' => array('language' => 'Mari', '3iso639' => 'chm', '2iso639' => null, 'locale' => 'chm', 'localeFallback' => 'chm'), - 'chn' => array('language' => 'Chinook jargon', '3iso639' => 'chn', '2iso639' => null, 'locale' => 'chn', 'localeFallback' => 'chn'), - 'cho' => array('language' => 'Choctaw', '3iso639' => 'cho', '2iso639' => null, 'locale' => 'cho', 'localeFallback' => 'cho'), - 'chp' => array('language' => 'Chipewyan', '3iso639' => 'chp', '2iso639' => null, 'locale' => 'chp', 'localeFallback' => 'chp'), - 'chr' => array('language' => 'Cherokee', '3iso639' => 'chr', '2iso639' => null, 'locale' => 'chr', 'localeFallback' => 'chr'), - 'chy' => array('language' => 'Cheyenne', '3iso639' => 'chy', '2iso639' => null, 'locale' => 'chy', 'localeFallback' => 'chy'), - 'cmc' => array('language' => 'Chamic languages', '3iso639' => 'cmc', '2iso639' => null, 'locale' => 'cmc', 'localeFallback' => 'cmc'), - 'co' => array('language' => 'Corsican', '3iso639' => 'cos', '2iso639' => 'co', 'locale' => 'co', 'localeFallback' => 'co'), - 'cop' => array('language' => 'Coptic', '3iso639' => 'cop', '2iso639' => null, 'locale' => 'cop', 'localeFallback' => 'cop'), - 'cpe' => array('language' => 'Creoles and pidgins, English based (Other)', '3iso639' => 'cpe', '2iso639' => null, 'locale' => 'cpe', 'localeFallback' => 'cpe'), - 'cpf' => array('language' => 'Creoles and pidgins, French-based (Other)', '3iso639' => 'cpf', '2iso639' => null, 'locale' => 'cpf', 'localeFallback' => 'cpf'), - 'cpp' => array('language' => 'Creoles and pidgins', '3iso639' => 'cpp', '2iso639' => null, 'locale' => 'cpp', 'localeFallback' => 'cpp'), - 'cr' => array('language' => 'Cree', '3iso639' => 'cre', '2iso639' => 'cr', 'locale' => 'cr', 'localeFallback' => 'cr'), - 'crh' => array('language' => 'Crimean Tatar; Crimean Turkish', '3iso639' => 'crh', '2iso639' => null, 'locale' => 'crh', 'localeFallback' => 'crh'), - 'crp' => array('language' => 'Creoles and pidgins (Other)', '3iso639' => 'crp', '2iso639' => null, 'locale' => 'crp', 'localeFallback' => 'crp'), - 'cs' => array('language' => 'Czech', '3iso639' => 'cze', '2iso639' => 'cs', 'locale' => 'cs', 'localeFallback' => 'cs'), - 'csb' => array('language' => 'Kashubian', '3iso639' => 'csb', '2iso639' => null, 'locale' => 'csb', 'localeFallback' => 'csb'), - 'cu' => array('language' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', '3iso639' => 'chu', '2iso639' => 'cu', 'locale' => 'cu', 'localeFallback' => 'cu'), - 'cus' => array('language' => 'Cushitic (Other)', '3iso639' => 'cus', '2iso639' => null, 'locale' => 'cus', 'localeFallback' => 'cus'), - 'cv' => array('language' => 'Chuvash', '3iso639' => 'chv', '2iso639' => 'cv', 'locale' => 'cv', 'localeFallback' => 'cv'), - 'cy' => array('language' => 'Welsh', '3iso639' => 'wel', '2iso639' => 'cy', 'locale' => 'cy', 'localeFallback' => 'cy'), - 'da' => array('language' => 'Danish', '3iso639' => 'dan', '2iso639' => 'da', 'locale' => 'da', 'localeFallback' => 'da'), - 'dak' => array('language' => 'Dakota', '3iso639' => 'dak', '2iso639' => null, 'locale' => 'dak', 'localeFallback' => 'dak'), - 'dar' => array('language' => 'Dargwa', '3iso639' => 'dar', '2iso639' => null, 'locale' => 'dar', 'localeFallback' => 'dar'), - 'day' => array('language' => 'Dayak', '3iso639' => 'day', '2iso639' => null, 'locale' => 'day', 'localeFallback' => 'day'), - 'de' => array('language' => 'German (Germany)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_DE', 'localeFallback' => 'de_DE'), - 'de-at' => array('language' => 'German (Austria)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_AT', 'localeFallback' => 'de_DE'), - 'de-ch' => array('language' => 'German (Switzerland)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_CH', 'localeFallback' => 'de_DE'), - 'de-de' => array('language' => 'German (Germany)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_DE', 'localeFallback' => 'de_DE'), - 'de-li' => array('language' => 'German (Liechtenstein)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_LI', 'localeFallback' => 'de_DE'), - 'de-lu' => array('language' => 'German (luxembourg)', '3iso639' => 'ger', '2iso639' => 'de', 'locale' => 'de_LU', 'localeFallback' => 'de_DE'), - 'del' => array('language' => 'Delaware', '3iso639' => 'del', '2iso639' => null, 'locale' => 'del', 'localeFallback' => 'del'), - 'den' => array('language' => 'Slave (Athapascan)', '3iso639' => 'den', '2iso639' => null, 'locale' => 'den', 'localeFallback' => 'den'), - 'dgr' => array('language' => 'Dogrib', '3iso639' => 'dgr', '2iso639' => null, 'locale' => 'dgr', 'localeFallback' => 'dgr'), - 'din' => array('language' => 'Dinka', '3iso639' => 'din', '2iso639' => null, 'locale' => 'din', 'localeFallback' => 'din'), - 'doi' => array('language' => 'Dogri', '3iso639' => 'doi', '2iso639' => null, 'locale' => 'doi', 'localeFallback' => 'doi'), - 'dra' => array('language' => 'Dravidian (Other)', '3iso639' => 'dra', '2iso639' => null, 'locale' => 'dra', 'localeFallback' => 'dra'), - 'dsb' => array('language' => 'Lower Sorbian', '3iso639' => 'dsb', '2iso639' => null, 'locale' => 'dsb', 'localeFallback' => 'dsb'), - 'dua' => array('language' => 'Duala', '3iso639' => 'dua', '2iso639' => null, 'locale' => 'dua', 'localeFallback' => 'dua'), - 'dum' => array('language' => 'Dutch, Middle', '3iso639' => 'dum', '2iso639' => null, 'locale' => 'dum', 'localeFallback' => 'dum'), - 'dv' => array('language' => 'Divehi', '3iso639' => 'div', '2iso639' => 'dv', 'locale' => 'dv', 'localeFallback' => 'dv'), - 'dyu' => array('language' => 'Dyula', '3iso639' => 'dyu', '2iso639' => null, 'locale' => 'dyu', 'localeFallback' => 'dyu'), - 'dz' => array('language' => 'Dzongkha', '3iso639' => 'dzo', '2iso639' => 'dz', 'locale' => 'dz', 'localeFallback' => 'dz'), - 'dzo' => array('language' => 'Dzongkha', '3iso639' => 'dzo', '2iso639' => null, 'locale' => 'dzo', 'localeFallback' => 'dzo'), - 'ee' => array('language' => 'Ewe', '3iso639' => 'ewe', '2iso639' => 'ee', 'locale' => 'ee', 'localeFallback' => 'ee'), - 'efi' => array('language' => 'Efik', '3iso639' => 'efi', '2iso639' => null, 'locale' => 'efi', 'localeFallback' => 'efi'), - 'egy' => array('language' => 'Egyptian (Ancient)', '3iso639' => 'egy', '2iso639' => null, 'locale' => 'egy', 'localeFallback' => 'egy'), - 'eka' => array('language' => 'Ekajuk', '3iso639' => 'eka', '2iso639' => null, 'locale' => 'eka', 'localeFallback' => 'eka'), - 'el' => array('language' => 'Greek', '3iso639' => 'gre', '2iso639' => 'el', 'locale' => 'el', 'localeFallback' => 'div'), - 'elx' => array('language' => 'Elamite', '3iso639' => 'elx', '2iso639' => null, 'locale' => 'elx', 'localeFallback' => 'elx'), - 'en' => array('language' => 'English', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_US', 'localeFallback' => 'en_US'), - 'en-au' => array('language' => 'English (Australia)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_AU', 'localeFallback' => 'en_US'), - 'en-bz' => array('language' => 'English (Belize)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_BZ', 'localeFallback' => 'en_US'), - 'en-ca' => array('language' => 'English (Canada)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_CA', 'localeFallback' => 'en_US'), - 'en-gb' => array('language' => 'English (United Kingdom)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_GB', 'localeFallback' => 'en_US'), - 'en-ie' => array('language' => 'English (Ireland)','3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_IE', 'localeFallback' => 'en_US'), - 'en-jm' => array('language' => 'English (Jamaica)','3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_JM', 'localeFallback' => 'en_US'), - 'en-nz' => array('language' => 'English (New Zealand)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_NZ', 'localeFallback' => 'en_US'), - 'en-ph' => array('language' => 'English (Philippines)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_PH', 'localeFallback' => 'en_US'), - 'en-tt' => array('language' => 'English (Trinidad)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_TT', 'localeFallback' => 'en_US'), - 'en-us' => array('language' => 'English (United States)','3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_US', 'localeFallback' => 'en_US'), - 'en-za' => array('language' => 'English (South Africa)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_ZA', 'localeFallback' => 'en_US'), - 'en-zw' => array('language' => 'English (Zimbabwe)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_ZW', 'localeFallback' => 'en_US'), - 'enm' => array('language' => 'English, Middle', '3iso639' => 'enm', '2iso639' => null, 'locale' => 'enm', 'localeFallback' => 'enm'), - 'eo' => array('language' => 'Esperanto', '3iso639' => 'epo', '2iso639' => 'eo', 'locale' => 'eo', 'localeFallback' => 'eo'), - 'es' => array('language' => 'Spanish (Spain)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es', 'localeFallback' => 'es'), - 'es-ar' => array('language' => 'Spanish (Argentina)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_AR', 'localeFallback' => 'es'), - 'es-bo' => array('language' => 'Spanish (Bolivia)','3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_BO', 'localeFallback' => 'es'), - 'es-cl' => array('language' => 'Spanish (Chile)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_CL', 'localeFallback' => 'es'), - 'es-co' => array('language' => 'Spanish (Colombia)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_CO', 'localeFallback' => 'es'), - 'es-cr' => array('language' => 'Spanish (Costa Rica)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_CR', 'localeFallback' => 'es'), - 'es-do' => array('language' => 'Spanish (Dominican Republic)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_DO', 'localeFallback' => 'es'), - 'es-ec' => array('language' => 'Spanish (Ecuador)','3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_EC', 'localeFallback' => 'es'), - 'es-gt' => array('language' => 'Spanish (Guatemala)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_GT', 'localeFallback' => 'es'), - 'es-hn' => array('language' => 'Spanish (Honduras)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_HN', 'localeFallback' => 'es'), - 'es-mx' => array('language' => 'Spanish (Mexico)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_MX', 'localeFallback' => 'es'), - 'es-ni' => array('language' => 'Spanish (Nicaragua)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_NI', 'localeFallback' => 'es'), - 'es-pa' => array('language' => 'Spanish (Panama)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_PA', 'localeFallback' => 'es'), - 'es-pe' => array('language' => 'Spanish (Peru)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_PE', 'localeFallback' => 'es'), - 'es-pr' => array('language' => 'Spanish (Puerto Rico)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_PR', 'localeFallback' => 'es'), - 'es-py' => array('language' => 'Spanish (Paraguay)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_PY', 'localeFallback' => 'es'), - 'es-sv' => array('language' => 'Spanish (El Salvador)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_SV', 'localeFallback' => 'es'), - 'es-us' => array('language' => 'Spanish (United States)','3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_US', 'localeFallback' => 'es'), - 'es-uy' => array('language' => 'Spanish (Uruguay)','3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_UY', 'localeFallback' => 'es'), - 'es-ve' => array('language' => 'Spanish (Venezuela)', '3iso639' => 'spa', '2iso639' => 'es', 'locale' => 'es_VE', 'localeFallback' => 'es'), - 'et' => array('language' => 'Estonian', '3iso639' => 'est', '2iso639' => 'et', 'locale' => 'et', 'localeFallback' => 'et'), - 'eu' => array('language' => 'Basque', '3iso639' => 'baq', '2iso639' => 'eu', 'locale' => 'eu', 'localeFallback' => 'eu'), - 'ewo' => array('language' => 'Ewondo', '3iso639' => 'ewo', '2iso639' => null, 'locale' => 'ewo', 'localeFallback' => 'ewo'), - 'fa' => array('language' => 'Persian', '3iso639' => 'per', '2iso639' => 'fa', 'locale' => 'fa', 'localeFallback' => 'fa'), - 'fan' => array('language' => 'Fang', '3iso639' => 'fan', '2iso639' => null, 'locale' => 'fan', 'localeFallback' => 'fan'), - 'fat' => array('language' => 'Fanti', '3iso639' => 'fat', '2iso639' => null, 'locale' => 'fat', 'localeFallback' => 'fat'), - 'ff' => array('language' => 'Fulah', '3iso639' => 'ful', '2iso639' => 'ff', 'locale' => 'ff', 'localeFallback' => 'ff'), - 'fi' => array('language' => 'Finnish', '3iso639' => 'fin', '2iso639' => 'fi', 'locale' => 'fi', 'localeFallback' => 'fi'), - 'fil' => array('language' => 'Filipino; Pilipino', '3iso639' => 'fil', '2iso639' => null, 'locale' => 'fil', 'localeFallback' => 'fil'), - 'fiu' => array('language' => 'Finno-Ugrian (Other)', '3iso639' => 'fiu', '2iso639' => null, 'locale' => 'fiu', 'localeFallback' => 'fiu'), - 'fj' => array('language' => 'Fijian', '3iso639' => 'fij', '2iso639' => 'fj', 'locale' => 'fj', 'localeFallback' => 'fj'), - 'fo' => array('language' => 'Faeroese', '3iso639' => 'fao', '2iso639' => 'fo', 'locale' => 'fo', 'localeFallback' => 'fo'), - 'fon' => array('language' => 'Fon', '3iso639' => 'fon', '2iso639' => null, 'locale' => 'fon', 'localeFallback' => 'fon'), - 'fr' => array('language' => 'French (France)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr', 'localeFallback' => 'fr'), - 'fr-be' => array('language' => 'French (Belgium)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr_BE', 'localeFallback' => 'fr'), - 'fr-ca' => array('language' => 'French (Canada)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr_CA', 'localeFallback' => 'fr'), - 'fr-ch' => array('language' => 'French (Switzerland)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr_CH', 'localeFallback' => 'fr'), - 'fr-lu' => array('language' => 'French (Luxembourg)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr_LU', 'localeFallback' => 'fr'), - 'fr-mc' => array('language' => 'French (Monaco)', '3iso639' => 'fre', '2iso639' => 'fr', 'locale' => 'fr_MC', 'localeFallback' => 'fr'), - 'frm' => array('language' => 'French, Middle', '3iso639' => 'frm', '2iso639' => null, 'locale' => 'frm', 'localeFallback' => 'frm'), - 'fro' => array('language' => 'French, Old', '3iso639' => 'fro', '2iso639' => null, 'locale' => 'fro', 'localeFallback' => 'fro'), - 'fur' => array('language' => 'Friulian', '3iso639' => 'fur', '2iso639' => null, 'locale' => 'fur', 'localeFallback' => 'fur'), - 'fy' => array('language' => 'Frisian', '3iso639' => 'fry', '2iso639' => 'fy', 'locale' => 'fy', 'localeFallback' => 'fy'), - 'ga' => array('language' => 'Irish', '3iso639' => 'gle', '2iso639' => 'ga', 'locale' => 'ga', 'localeFallback' => 'ga'), - 'gaa' => array('language' => 'Ga', '3iso639' => 'gaa', '2iso639' => null, 'locale' => 'gaa', 'localeFallback' => 'gaa'), - 'gay' => array('language' => 'Gayo', '3iso639' => 'gay', '2iso639' => null, 'locale' => 'gay', 'localeFallback' => 'gay'), - 'gba' => array('language' => 'Gbaya', '3iso639' => 'gba', '2iso639' => null, 'locale' => 'gba', 'localeFallback' => 'gba'), - 'gd' => array('language' => 'Gaelic, Hiberno-Scottish', '3iso639' => 'ghc', '2iso639' => 'gd', 'locale' => 'gd', 'localeFallback' => 'gd'), - 'gem' => array('language' => 'Germanic (Other)', '3iso639' => 'gem', '2iso639' => null, 'locale' => 'gem', 'localeFallback' => 'gem'), - 'gez' => array('language' => 'Geez', '3iso639' => 'gez', '2iso639' => null, 'locale' => 'gez', 'localeFallback' => 'gez'), - 'gil' => array('language' => 'Gilbertese', '3iso639' => 'gil', '2iso639' => null, 'locale' => 'gil', 'localeFallback' => 'gil'), - 'gl' => array('language' => 'Galician', '3iso639' => 'glg', '2iso639' => 'gl', 'locale' => 'gl', 'localeFallback' => 'gl'), - 'gmh' => array('language' => 'German, Middle High', '3iso639' => 'gmh', '2iso639' => null, 'locale' => 'gmh', 'localeFallback' => 'gmh'), - 'gn' => array('language' => 'Guarani', '3iso639' => 'grn', '2iso639' => 'gn', 'locale' => 'gn', 'localeFallback' => 'gn'), - 'goh' => array('language' => 'German, Old High', '3iso639' => 'goh', '2iso639' => null, 'locale' => 'goh', 'localeFallback' => 'goh'), - 'gon' => array('language' => 'Gondi', '3iso639' => 'gon', '2iso639' => null, 'locale' => 'gon', 'localeFallback' => 'gon'), - 'gor' => array('language' => 'Gorontalo', '3iso639' => 'gor', '2iso639' => null, 'locale' => 'gor', 'localeFallback' => 'gor'), - 'got' => array('language' => 'Gothic', '3iso639' => 'got', '2iso639' => null, 'locale' => 'got', 'localeFallback' => 'got'), - 'grb' => array('language' => 'Grebo', '3iso639' => 'grb', '2iso639' => null, 'locale' => 'grb', 'localeFallback' => 'grb'), - 'grc' => array('language' => 'Greek, Ancient', '3iso639' => 'grc', '2iso639' => null, 'locale' => 'grc', 'localeFallback' => 'grc'), - 'gre' => array('language' => 'Greek, Modern', '3iso639' => 'gre', '2iso639' => null, 'locale' => 'gre', 'localeFallback' => 'gre'), - 'gu' => array('language' => 'Gujarati', '3iso639' => 'guj', '2iso639' => 'gu', 'locale' => 'gu', 'localeFallback' => 'gu'), - 'gv' => array('language' => 'Manx', '3iso639' => 'glv', '2iso639' => 'gv', 'locale' => 'gv', 'localeFallback' => 'gv'), - 'gwi' => array('language' => 'Gwich´in', '3iso639' => 'gwi', '2iso639' => null, 'locale' => 'gwi', 'localeFallback' => 'gwi'), - 'ha' => array('language' => 'Hausa', '3iso639' => 'hau', '2iso639' => 'ha', 'locale' => 'ha', 'localeFallback' => 'ha'), - 'hai' => array('language' => 'Haida', '3iso639' => 'hai', '2iso639' => null, 'locale' => 'hai', 'localeFallback' => 'hai'), - 'haw' => array('language' => 'Hawaiian', '3iso639' => 'haw', '2iso639' => null, 'locale' => 'haw', 'localeFallback' => 'haw'), - 'he' => array('language' => 'Hebrew', '3iso639' => 'heb', '2iso639' => 'he', 'locale' => 'he', 'localeFallback' => 'he'), - 'hi' => array('language' => 'Hindi', '3iso639' => 'hin', '2iso639' => 'hi', 'locale' => 'hi', 'localeFallback' => 'hi'), - 'hil' => array('language' => 'Hiligaynon', '3iso639' => 'hil', '2iso639' => null, 'locale' => 'hil', 'localeFallback' => 'hil'), - 'him' => array('language' => 'Himachali', '3iso639' => 'him', '2iso639' => null, 'locale' => 'him', 'localeFallback' => 'him'), - 'hmn' => array('language' => 'Hmong', '3iso639' => 'hmn', '2iso639' => null, 'locale' => 'hmn', 'localeFallback' => 'hmn'), - 'ho' => array('language' => 'Hiri Motu', '3iso639' => 'hmo', '2iso639' => 'ho', 'locale' => 'ho', 'localeFallback' => 'ho'), - 'hr' => array('language' => 'Croatian', '3iso639' => 'scr', '2iso639' => 'hr', 'locale' => 'hr', 'localeFallback' => 'hr'), - 'hsb' => array('language' => 'Upper Sorbian', '3iso639' => 'hsb', '2iso639' => null, 'locale' => 'hsb', 'localeFallback' => 'hsb'), - 'ht' => array('language' => 'Haitian; Haitian Creole', '3iso639' => 'hat', '2iso639' => 'ht', 'locale' => 'ht', 'localeFallback' => 'ht'), - 'hu' => array('language' => 'Hungarian', '3iso639' => 'hun', '2iso639' => 'hu', 'locale' => 'hu', 'localeFallback' => 'hu'), - 'hup' => array('language' => 'Hupa', '3iso639' => 'hup', '2iso639' => null, 'locale' => 'hup', 'localeFallback' => 'hup'), - 'hy' => array('language' => 'Armenian', '3iso639' => 'arm', '2iso639' => 'hy', 'locale' => 'hy', 'localeFallback' => 'hy'), - 'hz' => array('language' => 'Herero', '3iso639' => 'her', '2iso639' => 'hz', 'locale' => 'hz', 'localeFallback' => 'hz'), - 'ia' => array('language' => 'Interlingua (International Auxiliary Language Association)', '3iso639' => 'ina', '2iso639' => 'ia', 'locale' => 'ia', 'localeFallback' => 'ia'), - 'iba' => array('language' => 'Iban', '3iso639' => 'iba', '2iso639' => null, 'locale' => 'iba', 'localeFallback' => 'iba'), - 'ibo' => array('language' => 'Igbo', '3iso639' => 'ibo', '2iso639' => null, 'locale' => 'ibo', 'localeFallback' => 'ibo'), - 'id' => array('language' => 'Indonesian', '3iso639' => 'ind', '2iso639' => 'id', 'locale' => 'id', 'localeFallback' => 'id'), - 'ie' => array('language' => 'Interlingue', '3iso639' => 'ile', '2iso639' => 'ie', 'locale' => 'ie', 'localeFallback' => 'ie'), - 'ig' => array('language' => 'Igbo', '3iso639' => 'ibo', '2iso639' => 'ig', 'locale' => 'ig', 'localeFallback' => 'ig'), - 'ii' => array('language' => 'Sichuan Yi', '3iso639' => 'iii', '2iso639' => 'ii', 'locale' => 'ii', 'localeFallback' => 'ii'), - 'ijo' => array('language' => 'Ijo', '3iso639' => 'ijo', '2iso639' => null, 'locale' => 'ijo', 'localeFallback' => 'ijo'), - 'ik' => array('language' => 'Inupiaq', '3iso639' => 'ipk', '2iso639' => 'ik', 'locale' => 'ik', 'localeFallback' => 'ik'), - 'iku' => array('language' => 'Inuktitut', '3iso639' => 'iku', '2iso639' => null, 'locale' => 'iku', 'localeFallback' => 'iku'), - 'ile' => array('language' => 'Interlingue', '3iso639' => 'ile', '2iso639' => null, 'locale' => 'ile', 'localeFallback' => 'ile'), - 'ilo' => array('language' => 'Iloko', '3iso639' => 'ilo', '2iso639' => null, 'locale' => 'ilo', 'localeFallback' => 'ilo'), - 'inc' => array('language' => 'Indic (Other)', '3iso639' => 'inc', '2iso639' => null, 'locale' => 'inc', 'localeFallback' => 'inc'), - 'ind' => array('language' => 'Indonesian', '3iso639' => 'ind', '2iso639' => null, 'locale' => 'ind', 'localeFallback' => 'ind'), - 'ine' => array('language' => 'Indo-European (Other)', '3iso639' => 'ine', '2iso639' => null, 'locale' => 'ine', 'localeFallback' => 'ine'), - 'inh' => array('language' => 'Ingush', '3iso639' => 'inh', '2iso639' => null, 'locale' => 'inh', 'localeFallback' => 'inh'), - 'io' => array('language' => 'Ido', '3iso639' => 'ido', '2iso639' => 'io', 'locale' => 'io', 'localeFallback' => 'io'), - 'ipk' => array('language' => 'Inupiaq', '3iso639' => 'ipk', '2iso639' => null, 'locale' => 'ipk', 'localeFallback' => 'ipk'), - 'ira' => array('language' => 'Iranian (Other)', '3iso639' => 'ira', '2iso639' => null, 'locale' => 'ira', 'localeFallback' => 'ira'), - 'iro' => array('language' => 'Iroquoian languages', '3iso639' => 'iro', '2iso639' => null, 'locale' => 'iro', 'localeFallback' => 'iro'), - 'is' => array('language' => 'Icelandic', '3iso639' => 'ice', '2iso639' => 'is', 'locale' => 'is', 'localeFallback' => 'is'), - 'it' => array('language' => 'Italian (Italy)', '3iso639' => 'ita', '2iso639' => 'it', 'locale' => 'it', 'localeFallback' => 'it'), - 'it-ch' => array('language' => 'Italian (Switzerland)', '3iso639' => 'ita', '2iso639' => 'it', 'locale' => 'it_CH', 'localeFallback' => 'it'), - 'ita' => array('language' => 'Italian', '3iso639' => 'ita', '2iso639' => null, 'locale' => 'ita', 'localeFallback' => 'ita'), - 'iu' => array('language' => 'Inuktitut', '3iso639' => 'iku', '2iso639' => 'iu', 'locale' => 'iu', 'localeFallback' => 'iu'), - 'ja' => array('language' => 'Japanese', '3iso639' => 'jpn', '2iso639' => 'ja', 'locale' => 'ja', 'localeFallback' => 'ja'), - 'jav' => array('language' => 'Javanese', '3iso639' => 'jav', '2iso639' => null, 'locale' => 'jav', 'localeFallback' => 'jav'), - 'jbo' => array('language' => 'Lojban', '3iso639' => 'jbo', '2iso639' => null, 'locale' => 'jbo', 'localeFallback' => 'jbo'), - 'jpn' => array('language' => 'Japanese', '3iso639' => 'jpn', '2iso639' => null, 'locale' => 'jpn', 'localeFallback' => 'jpn'), - 'jrb' => array('language' => 'Judeo-Arabic', '3iso639' => 'jrb', '2iso639' => null, 'locale' => 'jrb', 'localeFallback' => 'jrb'), - 'jv' => array('language' => 'Javanese', '3iso639' => 'jav', '2iso639' => 'jv', 'locale' => 'jv', 'localeFallback' => 'jv'), - 'ka' => array('language' => 'Georgian', '3iso639' => 'geo', '2iso639' => 'ka', 'locale' => 'ka', 'localeFallback' => 'ka'), - 'kaa' => array('language' => 'Kara-Kalpak', '3iso639' => 'kaa', '2iso639' => null, 'locale' => 'kaa', 'localeFallback' => 'kaa'), - 'kab' => array('language' => 'Kabyle', '3iso639' => 'kab', '2iso639' => null, 'locale' => 'kab', 'localeFallback' => 'kab'), - 'kac' => array('language' => 'Kachin', '3iso639' => 'kac', '2iso639' => null, 'locale' => 'kac', 'localeFallback' => 'kac'), - 'kal' => array('language' => 'Kalaallisut; Greenlandic', '3iso639' => 'kal', '2iso639' => null, 'locale' => 'kal', 'localeFallback' => 'kal'), - 'kam' => array('language' => 'Kamba', '3iso639' => 'kam', '2iso639' => null, 'locale' => 'kam', 'localeFallback' => 'kam'), - 'kan' => array('language' => 'Kannada', '3iso639' => 'kan', '2iso639' => null, 'locale' => 'kan', 'localeFallback' => 'kan'), - 'kar' => array('language' => 'Karen', '3iso639' => 'kar', '2iso639' => null, 'locale' => 'kar', 'localeFallback' => 'kar'), - 'kas' => array('language' => 'Kashmiri', '3iso639' => 'kas', '2iso639' => null, 'locale' => 'kas', 'localeFallback' => 'kas'), - 'kau' => array('language' => 'Kanuri', '3iso639' => 'kau', '2iso639' => null, 'locale' => 'kau', 'localeFallback' => 'kau'), - 'kaw' => array('language' => 'Kawi', '3iso639' => 'kaw', '2iso639' => null, 'locale' => 'kaw', 'localeFallback' => 'kaw'), - 'kaz' => array('language' => 'Kazakh', '3iso639' => 'kaz', '2iso639' => null, 'locale' => 'kaz', 'localeFallback' => 'kaz'), - 'kbd' => array('language' => 'Kabardian', '3iso639' => 'kbd', '2iso639' => null, 'locale' => 'kbd', 'localeFallback' => 'kbd'), - 'kg' => array('language' => 'Kongo', '3iso639' => 'kon', '2iso639' => 'kg', 'locale' => 'kg', 'localeFallback' => 'kg'), - 'kha' => array('language' => 'Khasi', '3iso639' => 'kha', '2iso639' => null, 'locale' => 'kha', 'localeFallback' => 'kha'), - 'khi' => array('language' => 'Khoisan (Other)', '3iso639' => 'khi', '2iso639' => null, 'locale' => 'khi', 'localeFallback' => 'khi'), - 'khm' => array('language' => 'Khmer', '3iso639' => 'khm', '2iso639' => null, 'locale' => 'khm', 'localeFallback' => 'khm'), - 'kho' => array('language' => 'Khotanese', '3iso639' => 'kho', '2iso639' => null, 'locale' => 'kho', 'localeFallback' => 'kho'), - 'ki' => array('language' => 'Kikuyu; Gikuyu', '3iso639' => 'kik', '2iso639' => 'ki', 'locale' => 'ki', 'localeFallback' => 'ki'), - 'kik' => array('language' => 'Kikuyu; Gikuyu', '3iso639' => 'kik', '2iso639' => null, 'locale' => 'kik', 'localeFallback' => 'kik'), - 'kin' => array('language' => 'Kinyarwanda', '3iso639' => 'kin', '2iso639' => null, 'locale' => 'kin', 'localeFallback' => 'kin'), - 'kir' => array('language' => 'Kirghiz', '3iso639' => 'kir', '2iso639' => null, 'locale' => 'kir', 'localeFallback' => 'kir'), - 'kk' => array('language' => 'Kazakh', '3iso639' => 'kaz', '2iso639' => 'kk', 'locale' => 'kk', 'localeFallback' => 'kk'), - 'kl' => array('language' => 'Kalaallisut; Greenlandic', '3iso639' => 'kal', '2iso639' => 'kl', 'locale' => 'kl', 'localeFallback' => 'kl'), - 'km' => array('language' => 'Khmer', '3iso639' => 'khm', '2iso639' => 'km', 'locale' => 'km', 'localeFallback' => 'km'), - 'kmb' => array('language' => 'Kimbundu', '3iso639' => 'kmb', '2iso639' => null, 'locale' => 'kmb', 'localeFallback' => 'kmb'), - 'kn' => array('language' => 'Kannada', '3iso639' => 'kan', '2iso639' => 'kn', 'locale' => 'kn', 'localeFallback' => 'kn'), - 'ko' => array('language' => 'Korean', '3iso639' => 'kor', '2iso639' => 'ko', 'locale' => 'ko', 'localeFallback' => 'ko'), - 'ko-kp' => array('language' => 'Korea (North), Dem. Rep', '3iso639' => 'kor', '2iso639' => 'ko', 'locale' => 'ko_KP', 'localeFallback' => 'ko'), - 'ko-kr' => array('language' => 'Korea (South)', '3iso639' => 'kor', '2iso639' => 'ko', 'locale' => 'ko_KR', 'localeFallback' => 'ko'), - 'koi8-r' => array('language' => 'Russian', '3iso639' => 'rus', '2iso639' => 'ru', 'locale' => 'koi8-r', 'localeFallback' => 'koi8-r'), - 'kok' => array('language' => 'Konkani', '3iso639' => 'kok', '2iso639' => null, 'locale' => 'kok', 'localeFallback' => 'kok'), - 'kom' => array('language' => 'Komi', '3iso639' => 'kom', '2iso639' => null, 'locale' => 'kom', 'localeFallback' => 'kom'), - 'kon' => array('language' => 'Kongo', '3iso639' => 'kon', '2iso639' => null, 'locale' => 'kon', 'localeFallback' => 'kon'), - 'kos' => array('language' => 'Kosraean', '3iso639' => 'kos', '2iso639' => null, 'locale' => 'kos', 'localeFallback' => 'kos'), - 'kpe' => array('language' => 'Kpelle', '3iso639' => 'kpe', '2iso639' => null, 'locale' => 'kpe', 'localeFallback' => 'kpe'), - 'kr' => array('language' => 'Kanuri', '3iso639' => 'kau', '2iso639' => 'kr', 'locale' => 'kr', 'localeFallback' => 'kr'), - 'krc' => array('language' => 'Karachay-Balkar', '3iso639' => 'krc', '2iso639' => null, 'locale' => 'krc', 'localeFallback' => 'krc'), - 'kro' => array('language' => 'Kru', '3iso639' => 'kro', '2iso639' => null, 'locale' => 'kro', 'localeFallback' => 'kro'), - 'kru' => array('language' => 'Kurukh', '3iso639' => 'kru', '2iso639' => null, 'locale' => 'kru', 'localeFallback' => 'kru'), - 'ks' => array('language' => 'Kashmiri', '3iso639' => 'kas', '2iso639' => 'ks', 'locale' => 'ks', 'localeFallback' => 'ks'), - 'ku' => array('language' => 'Kurdish', '3iso639' => 'kur', '2iso639' => 'ku', 'locale' => 'ku', 'localeFallback' => 'ku'), - 'kua' => array('language' => 'Kuanyama; Kwanyama', '3iso639' => 'kua', '2iso639' => null, 'locale' => 'kua', 'localeFallback' => 'kua'), - 'kum' => array('language' => 'Kumyk', '3iso639' => 'kum', '2iso639' => null, 'locale' => 'kum', 'localeFallback' => 'kum'), - 'kut' => array('language' => 'Kutenai', '3iso639' => 'kut', '2iso639' => null, 'locale' => 'kut', 'localeFallback' => 'kut'), - 'kv' => array('language' => 'Komi', '3iso639' => 'kom', '2iso639' => 'kv', 'locale' => 'kv', 'localeFallback' => 'kv'), - 'kw' => array('language' => 'Cornish', '3iso639' => 'cor', '2iso639' => 'kw', 'locale' => 'kw', 'localeFallback' => 'kw'), - 'ky' => array('language' => 'Kirghiz', '3iso639' => 'kir', '2iso639' => 'ky', 'locale' => 'ky', 'localeFallback' => 'ky'), - 'la' => array('language' => 'Latin', '3iso639' => 'lat', '2iso639' => 'la', 'locale' => 'la', 'localeFallback' => 'la'), - 'lad' => array('language' => 'Ladino', '3iso639' => 'lad', '2iso639' => null, 'locale' => 'lad', 'localeFallback' => 'lad'), - 'lah' => array('language' => 'Lahnda', '3iso639' => 'lah', '2iso639' => null, 'locale' => 'lah', 'localeFallback' => 'lah'), - 'lam' => array('language' => 'Lamba', '3iso639' => 'lam', '2iso639' => null, 'locale' => 'lam', 'localeFallback' => 'lam'), - 'lat' => array('language' => 'Latin', '3iso639' => 'lat', '2iso639' => null, 'locale' => 'lat', 'localeFallback' => 'lat'), - 'lav' => array('language' => 'Latvian', '3iso639' => 'lav', '2iso639' => null, 'locale' => 'lav', 'localeFallback' => 'lav'), - 'lb' => array('language' => 'Luxembourgish; Letzeburgesch', '3iso639' => 'ltz', '2iso639' => 'lb', 'locale' => 'lb', 'localeFallback' => 'lb'), - 'lez' => array('language' => 'Lezghian', '3iso639' => 'lez', '2iso639' => null, 'locale' => 'lez', 'localeFallback' => 'lez'), - 'lg' => array('language' => 'Ganda', '3iso639' => 'lug', '2iso639' => 'lg', 'locale' => 'lg', 'localeFallback' => 'lg'), - 'li' => array('language' => 'Limburgan; Limburger; Limburgish', '3iso639' => 'lim', '2iso639' => 'li', 'locale' => 'li', 'localeFallback' => 'li'), - 'lim' => array('language' => 'Limburgan; Limburger; Limburgish', '3iso639' => 'lim', '2iso639' => null, 'locale' => 'lim', 'localeFallback' => 'lim'), - 'lin' => array('language' => 'Lingala', '3iso639' => 'lin', '2iso639' => null, 'locale' => 'lin', 'localeFallback' => 'lin'), - 'ln' => array('language' => 'Lingala', '3iso639' => 'lin', '2iso639' => 'ln', 'locale' => 'ln', 'localeFallback' => 'ln'), - 'lo' => array('language' => 'Lao', '3iso639' => 'lao', '2iso639' => 'lo', 'locale' => 'lo', 'localeFallback' => 'lo'), - 'lol' => array('language' => 'Mongo', '3iso639' => 'lol', '2iso639' => null, 'locale' => 'lol', 'localeFallback' => 'lol'), - 'loz' => array('language' => 'Lozi', '3iso639' => 'loz', '2iso639' => null, 'locale' => 'loz', 'localeFallback' => 'loz'), - 'lt' => array('language' => 'Lithuanian', '3iso639' => 'lit', '2iso639' => 'lt', 'locale' => 'lt', 'localeFallback' => 'lt'), - 'ltz' => array('language' => 'Luxembourgish; Letzeburgesch', '3iso639' => 'ltz', '2iso639' => null, 'locale' => 'ltz', 'localeFallback' => 'ltz'), - 'lu' => array('language' => 'Luba-Katanga', '3iso639' => 'lub', '2iso639' => 'lu', 'locale' => 'lu', 'localeFallback' => 'lu'), - 'lua' => array('language' => 'Luba-Lulua', '3iso639' => 'lua', '2iso639' => null, 'locale' => 'lua', 'localeFallback' => 'lua'), - 'lub' => array('language' => 'Luba-Katanga', '3iso639' => 'lub', '2iso639' => null, 'locale' => 'lub', 'localeFallback' => 'lub'), - 'lug' => array('language' => 'Ganda', '3iso639' => 'lug', '2iso639' => null, 'locale' => 'lug', 'localeFallback' => 'lug'), - 'lui' => array('language' => 'Luiseno', '3iso639' => 'lui', '2iso639' => null, 'locale' => 'lui', 'localeFallback' => 'lui'), - 'lun' => array('language' => 'Lunda', '3iso639' => 'lun', '2iso639' => null, 'locale' => 'lun', 'localeFallback' => 'lun'), - 'luo' => array('language' => 'Luo (Kenya and Tanzania)', '3iso639' => 'luo', '2iso639' => null, 'locale' => 'luo', 'localeFallback' => 'luo'), - 'lus' => array('language' => 'Lushai', '3iso639' => 'lus', '2iso639' => null, 'locale' => 'lus', 'localeFallback' => 'lus'), - 'lv' => array('language' => 'Latvian', '3iso639' => 'lav', '2iso639' => 'lv', 'locale' => 'lv', 'localeFallback' => 'lv'), - 'mad' => array('language' => 'Madurese', '3iso639' => 'mad', '2iso639' => null, 'locale' => 'mad', 'localeFallback' => 'mad'), - 'mag' => array('language' => 'Magahi', '3iso639' => 'mag', '2iso639' => null, 'locale' => 'mag', 'localeFallback' => 'mag'), - 'mah' => array('language' => 'Marshallese', '3iso639' => 'mah', '2iso639' => null, 'locale' => 'mah', 'localeFallback' => 'mah'), - 'mai' => array('language' => 'Maithili', '3iso639' => 'mai', '2iso639' => null, 'locale' => 'mai', 'localeFallback' => 'mai'), - 'mak' => array('language' => 'Makasar', '3iso639' => 'mak', '2iso639' => null, 'locale' => 'mak', 'localeFallback' => 'mak'), - 'mal' => array('language' => 'Malayalam', '3iso639' => 'mal', '2iso639' => null, 'locale' => 'mal', 'localeFallback' => 'mal'), - 'man' => array('language' => 'Mandingo', '3iso639' => 'man', '2iso639' => null, 'locale' => 'man', 'localeFallback' => 'man'), - 'map' => array('language' => 'Austronesian (Other)', '3iso639' => 'map', '2iso639' => null, 'locale' => 'map', 'localeFallback' => 'map'), - 'mar' => array('language' => 'Marathi', '3iso639' => 'mar', '2iso639' => null, 'locale' => 'mar', 'localeFallback' => 'mar'), - 'mas' => array('language' => 'Masai', '3iso639' => 'mas', '2iso639' => null, 'locale' => 'mas', 'localeFallback' => 'mas'), - 'mdf' => array('language' => 'Moksha', '3iso639' => 'mdf', '2iso639' => null, 'locale' => 'mdf', 'localeFallback' => 'mdf'), - 'mdr' => array('language' => 'Mandar', '3iso639' => 'mdr', '2iso639' => null, 'locale' => 'mdr', 'localeFallback' => 'mdr'), - 'men' => array('language' => 'Mende', '3iso639' => 'men', '2iso639' => null, 'locale' => 'men', 'localeFallback' => 'men'), - 'mg' => array('language' => 'Malagasy', '3iso639' => 'mlg', '2iso639' => 'mg', 'locale' => 'mg', 'localeFallback' => 'mg'), - 'mga' => array('language' => 'Irish, Middle', '3iso639' => 'mga', '2iso639' => null, 'locale' => 'mga', 'localeFallback' => 'mga'), - 'mh' => array('language' => 'Marshallese', '3iso639' => 'mah', '2iso639' => 'mh', 'locale' => 'mh', 'localeFallback' => 'mh'), - 'mi' => array('language' => 'Maori', '3iso639' => 'mao', '2iso639' => 'mi', 'locale' => 'mi', 'localeFallback' => 'mi'), - 'mic' => array('language' => 'Micmac', '3iso639' => 'mic', '2iso639' => null, 'locale' => 'mic', 'localeFallback' => 'mic'), - 'min' => array('language' => 'Minangkabau', '3iso639' => 'min', '2iso639' => null, 'locale' => 'min', 'localeFallback' => 'min'), - 'mk' => array('language' => 'FYRO Macedonian', '3iso639' => 'mac', '2iso639' => 'mk', 'locale' => 'mk', 'localeFallback' => 'mk'), - 'mk-mk' => array('language' => 'Macedonian', '3iso639' => 'mac', '2iso639' => 'mk', 'locale' => 'mk_MK', 'localeFallback' => 'mk'), - 'mkh' => array('language' => 'Mon-Khmer (Other)', '3iso639' => 'mkh', '2iso639' => null, 'locale' => 'mkh', 'localeFallback' => 'mkh'), - 'ml' => array('language' => 'Malayalam', '3iso639' => 'mal', '2iso639' => 'ml', 'locale' => 'ml', 'localeFallback' => 'ml'), - 'mlg' => array('language' => 'Malagasy', '3iso639' => 'mlg', '2iso639' => null, 'locale' => 'mlg', 'localeFallback' => 'mlg'), - 'mlt' => array('language' => 'Maltese', '3iso639' => 'mlt', '2iso639' => null, 'locale' => 'mlt', 'localeFallback' => 'mlt'), - 'mn' => array('language' => 'Mongolian', '3iso639' => 'mon', '2iso639' => 'mn', 'locale' => 'mn', 'localeFallback' => 'mn'), - 'mnc' => array('language' => 'Manchu', '3iso639' => 'haw', '2iso639' => null, 'locale' => 'haw', 'localeFallback' => 'haw'), - 'mni' => array('language' => 'Manipuri', '3iso639' => 'mni', '2iso639' => null, 'locale' => 'mni', 'localeFallback' => 'mni'), - 'mno' => array('language' => 'Manobo languages', '3iso639' => 'mno', '2iso639' => null, 'locale' => 'mno', 'localeFallback' => 'mno'), - 'mo' => array('language' => 'Moldavian', '3iso639' => 'mol', '2iso639' => 'mo', 'locale' => 'mo', 'localeFallback' => 'mo'), - 'moh' => array('language' => 'Mohawk', '3iso639' => 'moh', '2iso639' => null, 'locale' => 'moh', 'localeFallback' => 'moh'), - 'mol' => array('language' => 'Moldavian', '3iso639' => 'mol', '2iso639' => null, 'locale' => 'mol', 'localeFallback' => 'mol'), - 'mon' => array('language' => 'Mongolian', '3iso639' => 'mon', '2iso639' => null, 'locale' => 'mon', 'localeFallback' => 'mon'), - 'mos' => array('language' => 'Mossi', '3iso639' => 'mos', '2iso639' => null, 'locale' => 'mos', 'localeFallback' => 'mos'), - 'mr' => array('language' => 'Marathi', '3iso639' => 'mar', '2iso639' => 'mr', 'locale' => 'mr', 'localeFallback' => 'mr'), - 'ms' => array('language' => 'Malay', '3iso639' => 'may', '2iso639' => 'ms', 'locale' => 'ms', 'localeFallback' => 'ms'), - 'mt' => array('language' => 'Maltese', '3iso639' => 'mlt', '2iso639' => 'mt', 'locale' => 'mt', 'localeFallback' => 'mt'), - 'mun' => array('language' => 'Munda languages', '3iso639' => 'mun', '2iso639' => null, 'locale' => 'mun', 'localeFallback' => 'mun'), - 'mus' => array('language' => 'Creek', '3iso639' => 'mus', '2iso639' => null, 'locale' => 'mus', 'localeFallback' => 'mus'), - 'mwl' => array('language' => 'Mirandese', '3iso639' => 'mwl', '2iso639' => null, 'locale' => 'mwl', 'localeFallback' => 'mwl'), - 'mwr' => array('language' => 'Marwari', '3iso639' => 'mwr', '2iso639' => null, 'locale' => 'mwr', 'localeFallback' => 'mwr'), - 'my' => array('language' => 'Burmese', '3iso639' => 'bur', '2iso639' => 'my', 'locale' => 'my', 'localeFallback' => 'my'), - 'myn' => array('language' => 'Mayan languages', '3iso639' => 'myn', '2iso639' => null, 'locale' => 'myn', 'localeFallback' => 'myn'), - 'myv' => array('language' => 'Erzya', '3iso639' => 'myv', '2iso639' => null, 'locale' => 'myv', 'localeFallback' => 'myv'), - 'na' => array('language' => 'Nauru', '3iso639' => 'nau', '2iso639' => 'na', 'locale' => 'na', 'localeFallback' => 'na'), - 'nah' => array('language' => 'Nahuatl', '3iso639' => 'nah', '2iso639' => null, 'locale' => 'nah', 'localeFallback' => 'nah'), - 'nai' => array('language' => 'North American Indian', '3iso639' => 'nai', '2iso639' => null, 'locale' => 'nai', 'localeFallback' => 'nai'), - 'nap' => array('language' => 'Neapolitan', '3iso639' => 'nap', '2iso639' => null, 'locale' => 'nap', 'localeFallback' => 'nap'), - 'nau' => array('language' => 'Nauru', '3iso639' => 'nau', '2iso639' => null, 'locale' => 'nau', 'localeFallback' => 'nau'), - 'nav' => array('language' => 'Navajo; Navaho', '3iso639' => 'nav', '2iso639' => null, 'locale' => 'nav', 'localeFallback' => 'nav'), - 'nb' => array('language' => 'Norwegian (Bokmal)', '3iso639' => 'nob', '2iso639' => 'nb', 'locale' => 'nb', 'localeFallback' => 'nb'), - 'nbl' => array('language' => 'Ndebele, South; South Ndebele', '3iso639' => 'nbl', '2iso639' => null, 'locale' => 'nbl', 'localeFallback' => 'nbl'), - 'nd' => array('language' => 'North Ndebele', '3iso639' => 'nde', '2iso639' => 'nd', 'locale' => 'nd', 'localeFallback' => 'nd'), - 'nde' => array('language' => 'Ndebele, North; North Ndebele', '3iso639' => 'nde', '2iso639' => null, 'locale' => 'nde', 'localeFallback' => 'nde'), - 'ndo' => array('language' => 'Ndonga', '3iso639' => 'ndo', '2iso639' => null, 'locale' => 'ndo', 'localeFallback' => 'ndo'), - 'nds' => array('language' => 'Low German; Low Saxon;', '3iso639' => 'nds', '2iso639' => null, 'locale' => 'nds', 'localeFallback' => 'nds'), - 'ne' => array('language' => 'Nepali (India)', '3iso639' => 'hrv', '2iso639' => 'hr', 'locale' => 'hr', 'localeFallback' => 'hr'), - 'nep' => array('language' => 'Nepali', '3iso639' => 'nep', '2iso639' => null, 'locale' => 'nep', 'localeFallback' => 'nep'), - 'new' => array('language' => 'Newari; Nepal Bhasa', '3iso639' => 'new', '2iso639' => null, 'locale' => 'new', 'localeFallback' => 'new'), - 'ng' => array('language' => 'Ndonga', '3iso639' => 'ndo', '2iso639' => 'ng', 'locale' => 'ng', 'localeFallback' => 'ng'), - 'nia' => array('language' => 'Nias', '3iso639' => 'nia', '2iso639' => null, 'locale' => 'nia', 'localeFallback' => 'nia'), - 'nic' => array('language' => 'Niger-Kordofanian (Other)', '3iso639' => 'nic', '2iso639' => null, 'locale' => 'nic', 'localeFallback' => 'nic'), - 'niu' => array('language' => 'Niuean', '3iso639' => 'niu', '2iso639' => null, 'locale' => 'niu', 'localeFallback' => 'niu'), - 'nl' => array('language' => 'Dutch (Netherlands)', '3iso639' => 'dut', '2iso639' => 'nl', 'locale' => 'nl', 'localeFallback' => 'nl'), - 'nl-be' => array('language' => 'Dutch (Belgium)', '3iso639' => 'dut', '2iso639' => 'nl', 'locale' => 'nl_BE', 'localeFallback' => 'nl'), - 'nn' => array('language' => 'Norwegian (Nynorsk)', '3iso639' => 'nno', '2iso639' => 'nn', 'locale' => 'nn', 'localeFallback' => 'nn'), - 'nno' => array('language' => 'Norwegian Nynorsk; Nynorsk, Norwegian', '3iso639' => 'nno', '2iso639' => null, 'locale' => 'nno', 'localeFallback' => 'nno'), - 'no' => array('language' => 'Norwegian Bokmċl', '3iso639' => 'nob', '2iso639' => 'no', 'locale' => 'no', 'localeFallback' => 'no'), - 'nob' => array('language' => 'Norwegian Bokmċl; Bokmċl, Norwegian', '3iso639' => 'nob', '2iso639' => null, 'locale' => 'nob', 'localeFallback' => 'nob'), - 'nog' => array('language' => 'Nogai', '3iso639' => 'nog', '2iso639' => null, 'locale' => 'nog', 'localeFallback' => 'nog'), - 'non' => array('language' => 'Norse, Old', '3iso639' => 'non', '2iso639' => null, 'locale' => 'non', 'localeFallback' => 'non'), - 'nor' => array('language' => 'Norwegian', '3iso639' => 'nor', '2iso639' => null, 'locale' => 'nor', 'localeFallback' => 'nor'), - 'nr' => array('language' => 'South Ndebele', '3iso639' => 'nbl', '2iso639' => 'nr', 'locale' => 'nr', 'localeFallback' => 'nr'), - 'nso' => array('language' => 'Northern Sotho; Pedi; Sepedi', '3iso639' => 'nso', '2iso639' => null, 'locale' => 'nso', 'localeFallback' => 'nso'), - 'nub' => array('language' => 'Nubian languages', '3iso639' => 'nub', '2iso639' => null, 'locale' => 'nub', 'localeFallback' => 'nub'), - 'nv' => array('language' => 'Navajo; Navaho', '3iso639' => 'nav', '2iso639' => 'nv', 'locale' => 'nv', 'localeFallback' => 'nv'), - 'nwc' => array('language' => 'Classical Newari; Old Newari; Classical Nepal Bhasa', '3iso639' => 'nwc', '2iso639' => null, 'locale' => 'nwc', 'localeFallback' => 'nwc'), - 'ny' => array('language' => 'Chichewa; Chewa; Nyanja', '3iso639' => 'nya', '2iso639' => 'ny', 'locale' => 'ny', 'localeFallback' => 'ny'), - 'nya' => array('language' => 'Chichewa; Chewa; Nyanja', '3iso639' => 'nya', '2iso639' => null, 'locale' => 'nya', 'localeFallback' => 'nya'), - 'nym' => array('language' => 'Nyamwezi', '3iso639' => 'nym', '2iso639' => null, 'locale' => 'nym', 'localeFallback' => 'nym'), - 'nyn' => array('language' => 'Nyankole', '3iso639' => 'nyn', '2iso639' => null, 'locale' => 'nyn', 'localeFallback' => 'nyn'), - 'nyo' => array('language' => 'Nyoro', '3iso639' => 'nyo', '2iso639' => null, 'locale' => 'nyo', 'localeFallback' => 'nyo'), - 'nzi' => array('language' => 'Nzima', '3iso639' => 'nzi', '2iso639' => null, 'locale' => 'nzi', 'localeFallback' => 'nzi'), - 'oc' => array('language' => 'Occitan (post 1500); Provençal', '3iso639' => 'oci', '2iso639' => 'oc', 'locale' => 'oc', 'localeFallback' => 'oc'), - 'oci' => array('language' => 'Occitan; Provençal', '3iso639' => 'oci', '2iso639' => null, 'locale' => 'oci', 'localeFallback' => 'oci'), - 'oj' => array('language' => 'Ojibwa', '3iso639' => 'oji', '2iso639' => 'oj', 'locale' => 'oj', 'localeFallback' => 'oj'), - 'oji' => array('language' => 'Ojibwa', '3iso639' => 'oji', '2iso639' => null, 'locale' => 'oji', 'localeFallback' => 'oji'), - 'om' => array('language' => 'Oromo', '3iso639' => 'orm', '2iso639' => 'om', 'locale' => 'om', 'localeFallback' => 'om'), - 'or' => array('language' => 'Oriya', '3iso639' => 'ori', '2iso639' => 'or', 'locale' => 'or', 'localeFallback' => 'or'), - 'ori' => array('language' => 'Oriya', '3iso639' => 'ori', '2iso639' => null, 'locale' => 'ori', 'localeFallback' => 'ori'), - 'orm' => array('language' => 'Oromo', '3iso639' => 'orm', '2iso639' => null, 'locale' => 'orm', 'localeFallback' => 'orm'), - 'os' => array('language' => 'Ossetian; Ossetic', '3iso639' => 'oss', '2iso639' => 'os', 'locale' => 'os', 'localeFallback' => 'os'), - 'osa' => array('language' => 'Osage', '3iso639' => 'osa', '2iso639' => null, 'locale' => 'osa', 'localeFallback' => 'osa'), - 'oss' => array('language' => 'Ossetian; Ossetic', '3iso639' => 'oss', '2iso639' => null, 'locale' => 'oss', 'localeFallback' => 'oss'), - 'ota' => array('language' => 'Turkish, Ottoman', '3iso639' => 'ota', '2iso639' => null, 'locale' => 'ota', 'localeFallback' => 'ota'), - 'oto' => array('language' => 'Otomian languages', '3iso639' => 'oto', '2iso639' => null, 'locale' => 'oto', 'localeFallback' => 'oto'), - 'pa' => array('language' => 'Panjabi; Punjabi', '3iso639' => 'pan', '2iso639' => 'pa', 'locale' => 'pa', 'localeFallback' => 'pa'), - 'pa-in' => array('language' => 'Punjabi (India)', '3iso639' => 'pan', '2iso639' => 'pa', 'locale' => 'pa_IN', 'localeFallback' => 'pa'), - 'pa-pk' => array('language' => 'Punjabi (Pakistan)', '3iso639' => 'pan', '2iso639' => 'pa', 'locale' => 'pa_PK', 'localeFallback' => 'pa'), - 'paa' => array('language' => 'Papuan (Other)', '3iso639' => 'paa', '2iso639' => null, 'locale' => 'paa', 'localeFallback' => 'paa'), - 'pag' => array('language' => 'Pangasinan', '3iso639' => 'pag', '2iso639' => null, 'locale' => 'pag', 'localeFallback' => 'pag'), - 'pal' => array('language' => 'Pahlavi', '3iso639' => 'pal', '2iso639' => null, 'locale' => 'pal', 'localeFallback' => 'pal'), - 'pam' => array('language' => 'Pampanga', '3iso639' => 'pam', '2iso639' => null, 'locale' => 'pam', 'localeFallback' => 'pam'), - 'pan' => array('language' => 'Panjabi; Punjabi', '3iso639' => 'pan', '2iso639' => null, 'locale' => 'pan', 'localeFallback' => 'pan'), - 'pap' => array('language' => 'Papiamento', '3iso639' => 'pap', '2iso639' => null, 'locale' => 'pap', 'localeFallback' => 'pap'), - 'pau' => array('language' => 'Palauan', '3iso639' => 'pau', '2iso639' => null, 'locale' => 'pau', 'localeFallback' => 'pau'), - 'peo' => array('language' => 'Persian, Old', '3iso639' => 'peo', '2iso639' => null, 'locale' => 'peo', 'localeFallback' => 'peo'), - 'phi' => array('language' => 'Philippine (Other)', '3iso639' => 'phi', '2iso639' => null, 'locale' => 'phi', 'localeFallback' => 'phi'), - 'phn' => array('language' => 'Phoenician', '3iso639' => 'phn', '2iso639' => null, 'locale' => 'phn', 'localeFallback' => 'phn'), - 'pi' => array('language' => 'Pali', '3iso639' => 'pli', '2iso639' => 'pi', 'locale' => 'pi', 'localeFallback' => 'pi'), - 'pl' => array('language' => 'Polish', '3iso639' => 'pol', '2iso639' => 'pl', 'locale' => 'pl', 'localeFallback' => 'pl'), - 'pli' => array('language' => 'Pali', '3iso639' => 'pli', '2iso639' => null, 'locale' => 'pli', 'localeFallback' => 'pli'), - 'pol' => array('language' => 'Polish', '3iso639' => 'pol', '2iso639' => null, 'locale' => 'pol', 'localeFallback' => 'pol'), - 'pon' => array('language' => 'Pohnpeian', '3iso639' => 'pon', '2iso639' => null, 'locale' => 'pon', 'localeFallback' => 'pon'), - 'por' => array('language' => 'Portuguese', '3iso639' => 'por', '2iso639' => null, 'locale' => 'por', 'localeFallback' => 'por'), - 'pra' => array('language' => 'Prakrit languages', '3iso639' => 'pra', '2iso639' => null, 'locale' => 'pra', 'localeFallback' => 'pra'), - 'pro' => array('language' => 'Provençal, Old', '3iso639' => 'pro', '2iso639' => null, 'locale' => 'pro', 'localeFallback' => 'pro'), - 'ps' => array('language' => 'Pushto', '3iso639' => 'pus', '2iso639' => 'ps', 'locale' => 'ps', 'localeFallback' => 'ps'), - 'pt' => array('language' => 'Portuguese (Portugal)', '3iso639' => 'por', '2iso639' => 'pt', 'locale' => 'pt', 'localeFallback' => 'pt'), - 'pt-br' => array('language' => 'Portuguese (Brazil)', '3iso639' => 'por', '2iso639' => 'pt', 'locale' => 'pt_BR', 'localeFallback' => 'pt'), - 'pus' => array('language' => 'Pushto', '3iso639' => 'pus', '2iso639' => null, 'locale' => 'pus', 'localeFallback' => 'pus'), - 'qu' => array('language' => 'Quechua', '3iso639' => 'que', '2iso639' => 'qu', 'locale' => 'qu', 'localeFallback' => 'qu'), - 'que' => array('language' => 'Quechua', '3iso639' => 'que', '2iso639' => null, 'locale' => 'que', 'localeFallback' => 'que'), - 'raj' => array('language' => 'Rajasthani', '3iso639' => 'raj', '2iso639' => null, 'locale' => 'raj', 'localeFallback' => 'raj'), - 'rap' => array('language' => 'Rapanui', '3iso639' => 'rap', '2iso639' => null, 'locale' => 'rap', 'localeFallback' => 'rap'), - 'rar' => array('language' => 'Rarotongan', '3iso639' => 'rar', '2iso639' => null, 'locale' => 'rar', 'localeFallback' => 'rar'), - 'rm' => array('language' => 'Raeto-Romance', '3iso639' => 'roh', '2iso639' => 'rm', 'locale' => 'rm', 'localeFallback' => 'rm'), - 'rn' => array('language' => 'Rundi', '3iso639' => 'run', '2iso639' => 'rn', 'locale' => 'rn', 'localeFallback' => 'rn'), - 'ro' => array('language' => 'Romanian', '3iso639' => 'rum', '2iso639' => 'ro', 'locale' => 'ro', 'localeFallback' => 'ro'), - 'ro-md' => array('language' => 'Romanian (Moldova)', '3iso639' => 'rum', '2iso639' => 'ro', 'locale' => 'ro_MD', 'localeFallback' => 'ro'), - 'roa' => array('language' => 'Romance (Other)', '3iso639' => 'roa', '2iso639' => null, 'locale' => 'roa', 'localeFallback' => 'roa'), - 'roh' => array('language' => 'Raeto-Romance', '3iso639' => 'roh', '2iso639' => null, 'locale' => 'roh', 'localeFallback' => 'roh'), - 'rom' => array('language' => 'Romany', '3iso639' => 'rom', '2iso639' => null, 'locale' => 'rom', 'localeFallback' => 'rom'), - 'ru' => array('language' => 'Russian', '3iso639' => 'rus', '2iso639' => 'ru', 'locale' => 'ru', 'localeFallback' => 'ru'), - 'ru-md' => array('language' => 'Russian (Moldova)', '3iso639' => 'rus', '2iso639' => 'ru', 'locale' => 'ru_MD', 'localeFallback' => 'ru'), - 'rup' => array('language' => 'Aromanian', '3iso639' => 'rup', '2iso639' => null, 'locale' => 'rup', 'localeFallback' => 'rup'), - 'sa' => array('language' => 'Sanskrit', '3iso639' => 'san', '2iso639' => 'sa', 'locale' => 'sa', 'localeFallback' => 'sa'), - 'sad' => array('language' => 'Sandawe', '3iso639' => 'sad', '2iso639' => null, 'locale' => 'sad', 'localeFallback' => 'sad'), - 'sah' => array('language' => 'Yakut', '3iso639' => 'sah', '2iso639' => null, 'locale' => 'sah', 'localeFallback' => 'sah'), - 'sai' => array('language' => 'South American Indian (Other)', '3iso639' => 'sai', '2iso639' => null, 'locale' => 'sai', 'localeFallback' => 'sai'), - 'sal' => array('language' => 'Salishan languages', '3iso639' => 'sal', '2iso639' => null, 'locale' => 'sal', 'localeFallback' => 'sal'), - 'sam' => array('language' => 'Samaritan Aramaic', '3iso639' => 'sam', '2iso639' => null, 'locale' => 'sam', 'localeFallback' => 'sam'), - 'sas' => array('language' => 'Sasak', '3iso639' => 'sas', '2iso639' => null, 'locale' => 'sas', 'localeFallback' => 'sas'), - 'sat' => array('language' => 'Santali', '3iso639' => 'sat', '2iso639' => null, 'locale' => 'sat', 'localeFallback' => 'sat'), - 'sc' => array('language' => 'Sardinian', '3iso639' => 'srd', '2iso639' => 'sc', 'locale' => 'sc', 'localeFallback' => 'sc'), - 'scn' => array('language' => 'Sicilian', '3iso639' => 'scn', '2iso639' => null, 'locale' => 'scn', 'localeFallback' => 'scn'), - 'sco' => array('language' => 'Scots', '3iso639' => 'sco', '2iso639' => null, 'locale' => 'sco', 'localeFallback' => 'sco'), - 'sd' => array('language' => 'Sindhi', '3iso639' => 'snd', '2iso639' => 'sd', 'locale' => 'sd', 'localeFallback' => 'sd'), - 'se' => array('language' => 'Northern Sami', '3iso639' => 'sme', '2iso639' => 'se', 'locale' => 'se', 'localeFallback' => 'se'), - 'sel' => array('language' => 'Selkup', '3iso639' => 'sel', '2iso639' => null, 'locale' => 'sel', 'localeFallback' => 'sel'), - 'sem' => array('language' => 'Semitic (Other)', '3iso639' => 'sem', '2iso639' => null, 'locale' => 'sem', 'localeFallback' => 'sem'), - 'sg' => array('language' => 'Sango', '3iso639' => 'sag', '2iso639' => 'sg', 'locale' => 'sg', 'localeFallback' => 'sg'), - 'sga' => array('language' => 'Irish, Old', '3iso639' => 'sga', '2iso639' => null, 'locale' => 'sga', 'localeFallback' => 'sga'), - 'shn' => array('language' => 'Shan', '3iso639' => 'shn', '2iso639' => null, 'locale' => 'shn', 'localeFallback' => 'shn'), - 'si' => array('language' => 'Sinhala; Sinhalese', '3iso639' => 'sin', '2iso639' => 'si', 'locale' => 'si', 'localeFallback' => 'si'), - 'sid' => array('language' => 'Sidamo', '3iso639' => 'sid', '2iso639' => null, 'locale' => 'sid', 'localeFallback' => 'sid'), - 'sio' => array('language' => 'Siouan languages', '3iso639' => 'sio', '2iso639' => null, 'locale' => 'sio', 'localeFallback' => 'sio'), - 'sit' => array('language' => 'Sino-Tibetan (Other)', '3iso639' => 'sit', '2iso639' => null, 'locale' => 'sit', 'localeFallback' => 'sit'), - 'sk' => array('language' => 'Slovak', '3iso639' => 'slo', '2iso639' => 'sk', 'locale' => 'sk', 'localeFallback' => 'sk'), - 'sl' => array('language' => 'Slovenian', '3iso639' => 'slv', '2iso639' => 'sl', 'locale' => 'sl', 'localeFallback' => 'sl'), - 'sla' => array('language' => 'Slavic (Other)', '3iso639' => 'sla', '2iso639' => null, 'locale' => 'sla', 'localeFallback' => 'sla'), - 'sm' => array('language' => 'Samoan', '3iso639' => 'smo', '2iso639' => 'sm', 'locale' => 'sm', 'localeFallback' => 'sm'), - 'sma' => array('language' => 'Southern Sami', '3iso639' => 'sma', '2iso639' => null, 'locale' => 'sma', 'localeFallback' => 'sma'), - 'smi' => array('language' => 'Sami languages (Other)', '3iso639' => 'smi', '2iso639' => null, 'locale' => 'smi', 'localeFallback' => 'smi'), - 'smj' => array('language' => 'Lule Sami', '3iso639' => 'smj', '2iso639' => null, 'locale' => 'smj', 'localeFallback' => 'smj'), - 'smn' => array('language' => 'Inari Sami', '3iso639' => 'smn', '2iso639' => null, 'locale' => 'smn', 'localeFallback' => 'smn'), - 'sms' => array('language' => 'Skolt Sami', '3iso639' => 'sms', '2iso639' => null, 'locale' => 'sms', 'localeFallback' => 'sms'), - 'sn' => array('language' => 'Shona', '3iso639' => 'sna', '2iso639' => 'sn', 'locale' => 'sn', 'localeFallback' => 'sn'), - 'snk' => array('language' => 'Soninke', '3iso639' => 'snk', '2iso639' => null, 'locale' => 'snk', 'localeFallback' => 'snk'), - 'so' => array('language' => 'Somali', '3iso639' => 'som', '2iso639' => 'so', 'locale' => 'so', 'localeFallback' => 'so'), - 'sog' => array('language' => 'Sogdian', '3iso639' => 'sog', '2iso639' => null, 'locale' => 'sog', 'localeFallback' => 'sog'), - 'son' => array('language' => 'Songhai', '3iso639' => 'son', '2iso639' => null, 'locale' => 'son', 'localeFallback' => 'son'), - 'sq' => array('language' => 'Albanian', '3iso639' => 'alb', '2iso639' => 'sq', 'locale' => 'sq', 'localeFallback' => 'sq'), - 'sr' => array('language' => 'Serbian', '3iso639' => 'scc', '2iso639' => 'sr', 'locale' => 'sr', 'localeFallback' => 'sr'), - 'srr' => array('language' => 'Serer', '3iso639' => 'srr', '2iso639' => null, 'locale' => 'srr', 'localeFallback' => 'srr'), - 'ss' => array('language' => 'Swati', '3iso639' => 'ssw', '2iso639' => 'ss', 'locale' => 'ss', 'localeFallback' => 'ss'), - 'ssa' => array('language' => 'Nilo-Saharan (Other)', '3iso639' => 'ssa', '2iso639' => null, 'locale' => 'ssa', 'localeFallback' => 'ssa'), - 'st' => array('language' => 'Southern Sotho', '3iso639' => 'sot', '2iso639' => 'st', 'locale' => 'st', 'localeFallback' => 'st'), - 'su' => array('language' => 'Sundanese', '3iso639' => 'sun', '2iso639' => 'su', 'locale' => 'su', 'localeFallback' => 'su'), - 'suk' => array('language' => 'Sukuma', '3iso639' => 'suk', '2iso639' => null, 'locale' => 'suk', 'localeFallback' => 'suk'), - 'sus' => array('language' => 'Susu', '3iso639' => 'sus', '2iso639' => null, 'locale' => 'sus', 'localeFallback' => 'sus'), - 'sux' => array('language' => 'Sumerian', '3iso639' => 'sux', '2iso639' => null, 'locale' => 'sux', 'localeFallback' => 'sux'), - 'sv' => array('language' => 'Swedish', '3iso639' => 'swe', '2iso639' => 'sv', 'locale' => 'sv', 'localeFallback' => 'sv'), - 'sv-fi' => array('language' => 'Swedish (Finland)', '3iso639' => 'swe', '2iso639' => 'sv', 'locale' => 'sv_FI', 'localeFallback' => 'sv'), - 'sw' => array('language' => 'Swahili', '3iso639' => 'swa', '2iso639' => 'sw', 'locale' => 'sw', 'localeFallback' => 'sw'), - 'swa' => array('language' => 'Swahili', '3iso639' => 'swa', '2iso639' => null, 'locale' => 'swa', 'localeFallback' => 'swa'), - 'swe' => array('language' => 'Swedish', '3iso639' => 'swe', '2iso639' => null, 'locale' => 'swe', 'localeFallback' => 'swe'), - 'syr' => array('language' => 'Syriac', '3iso639' => 'syr', '2iso639' => null, 'locale' => 'syr', 'localeFallback' => 'syr'), - 'ta' => array('language' => 'Tamil', '3iso639' => 'tam', '2iso639' => 'ta', 'locale' => 'ta', 'localeFallback' => 'ta'), - 'tai' => array('language' => 'Tai (Other)', '3iso639' => 'tai', '2iso639' => null, 'locale' => 'tai', 'localeFallback' => 'tai'), - 'te' => array('language' => 'Telugu', '3iso639' => 'tel', '2iso639' => 'te', 'locale' => 'te', 'localeFallback' => 'te'), - 'tem' => array('language' => 'Timne', '3iso639' => 'tem', '2iso639' => null, 'locale' => 'tem', 'localeFallback' => 'tem'), - 'ter' => array('language' => 'Tereno', '3iso639' => 'ter', '2iso639' => null, 'locale' => 'ter', 'localeFallback' => 'ter'), - 'tet' => array('language' => 'Tetum', '3iso639' => 'tet', '2iso639' => null, 'locale' => 'tet', 'localeFallback' => 'tet'), - 'tg' => array('language' => 'Tajik', '3iso639' => 'tgk', '2iso639' => 'tg', 'locale' => 'tg', 'localeFallback' => 'tg'), - 'th' => array('language' => 'Thai', '3iso639' => 'tha', '2iso639' => 'th', 'locale' => 'th', 'localeFallback' => 'th'), - 'tig' => array('language' => 'Tigre', '3iso639' => 'tig', '2iso639' => null, 'locale' => 'tig', 'localeFallback' => 'tig'), - 'tir' => array('language' => 'Tigrinya|', '3iso639' => 'tir', '2iso639' => 'ti', 'locale' => 'ti', 'localeFallback' => 'ti'), - 'tiv' => array('language' => 'Tiv', '3iso639' => 'tiv', '2iso639' => null, 'locale' => 'tiv', 'localeFallback' => 'tiv'), - 'tk' => array('language' => 'Turkmen', '3iso639' => 'tuk', '2iso639' => 'tk', 'locale' => 'tk', 'localeFallback' => 'tk'), - 'tkl' => array('language' => 'Tokelau', '3iso639' => 'tkl', '2iso639' => null, 'locale' => 'tkl', 'localeFallback' => 'tkl'), - 'tl' => array('language' => 'Tagalog', '3iso639' => 'tgl', '2iso639' => 'tl', 'locale' => 'tl', 'localeFallback' => 'tl'), - 'tlh' => array('language' => 'Klingon; tlhIngan-Hol', '3iso639' => 'tlh', '2iso639' => null, 'locale' => 'tlh', 'localeFallback' => 'tlh'), - 'tli' => array('language' => 'Tlingit', '3iso639' => 'tli', '2iso639' => null, 'locale' => 'tli', 'localeFallback' => 'tli'), - 'tmh' => array('language' => 'Tamashek', '3iso639' => 'tmh', '2iso639' => null, 'locale' => 'tmh', 'localeFallback' => 'tmh'), - 'tn' => array('language' => 'Tswana', '3iso639' => 'tsn', '2iso639' => 'tn', 'locale' => 'tn', 'localeFallback' => 'tn'), - 'to' => array('language' => 'Tonga (Tonga Islands)', '3iso639' => 'ton', '2iso639' => 'to', 'locale' => 'to', 'localeFallback' => 'to'), - 'tog' => array('language' => 'Tonga (Nyasa)', '3iso639' => 'tog', '2iso639' => null, 'locale' => 'tog', 'localeFallback' => 'tog'), - 'tpi' => array('language' => 'Tok Pisin', '3iso639' => 'tpi', '2iso639' => null, 'locale' => 'tpi', 'localeFallback' => 'tpi'), - 'tr' => array('language' => 'Turkish', '3iso639' => 'tur', '2iso639' => 'tr', 'locale' => 'tr', 'localeFallback' => 'tr'), - 'ts' => array('language' => 'Tsonga', '3iso639' => 'tso', '2iso639' => 'ts', 'locale' => 'ts', 'localeFallback' => 'ts'), - 'tsi' => array('language' => 'Tsimshian', '3iso639' => 'tsi', '2iso639' => null, 'locale' => 'tsi', 'localeFallback' => 'tsi'), - 'tt' => array('language' => 'Tatar', '3iso639' => 'tat', '2iso639' => 'tt', 'locale' => 'tt', 'localeFallback' => 'tt'), - 'tum' => array('language' => 'Tumbuka', '3iso639' => 'tum', '2iso639' => null, 'locale' => 'tum', 'localeFallback' => 'tum'), - 'tup' => array('language' => 'Tupi languages', '3iso639' => 'tup', '2iso639' => null, 'locale' => 'tup', 'localeFallback' => 'tup'), - 'tut' => array('language' => 'Altaic (Other)', '3iso639' => 'tut', '2iso639' => null, 'locale' => 'tut', 'localeFallback' => 'tut'), - 'tvl' => array('language' => 'Tuvalu', '3iso639' => 'tvl', '2iso639' => null, 'locale' => 'tvl', 'localeFallback' => 'tvl'), - 'tw' => array('language' => 'Twi', '3iso639' => 'twi', '2iso639' => 'tw', 'locale' => 'tw', 'localeFallback' => 'tw'), - 'ty' => array('language' => 'Tahitian', '3iso639' => 'tah', '2iso639' => 'ty', 'locale' => 'ty', 'localeFallback' => 'ty'), - 'tyv' => array('language' => 'Tuvinian', '3iso639' => 'tyv', '2iso639' => null, 'locale' => 'tyv', 'localeFallback' => 'tyv'), - 'udm' => array('language' => 'Udmurt', '3iso639' => 'udm', '2iso639' => null, 'locale' => 'udm', 'localeFallback' => 'udm'), - 'ug' => array('language' => 'Uighur; Uyghur', '3iso639' => 'uig', '2iso639' => 'ug', 'locale' => 'ug', 'localeFallback' => 'ug'), - 'uga' => array('language' => 'Ugaritic', '3iso639' => 'uga', '2iso639' => null, 'locale' => 'uga', 'localeFallback' => 'uga'), - 'uk' => array('language' => 'Ukrainian', '3iso639' => 'ukr', '2iso639' => 'uk', 'locale' => 'uk', 'localeFallback' => 'uk'), - 'umb' => array('language' => 'Umbundu', '3iso639' => 'umb', '2iso639' => null, 'locale' => 'umb', 'localeFallback' => 'umb'), - 'ur' => array('language' => 'Urdu', '3iso639' => 'urd', '2iso639' => 'ur', 'locale' => 'ur', 'localeFallback' => 'ur'), - 'us' => array('language' => 'English (United States)', '3iso639' => 'eng', '2iso639' => 'en', 'locale' => 'en_US', 'localeFallback' => 'en_US'), - 'uz' => array('language' => 'Uzbek', '3iso639' => 'uzb', '2iso639' => 'uz', 'locale' => 'uz', 'localeFallback' => 'uz'), - 'vai' => array('language' => 'Vai', '3iso639' => 'vai', '2iso639' => null, 'locale' => 'vai', 'localeFallback' => 'vai'), - 've' => array('language' => 'Venda', '3iso639' => 'ven', '2iso639' => 've', 'locale' => 've', 'localeFallback' => 've'), - 'vi' => array('language' => 'Vietnamese', '3iso639' => 'vie', '2iso639' => 'vi', 'locale' => 'vi', 'localeFallback' => 'vi'), - 'vo' => array('language' => 'Volapük', '3iso639' => 'vol', '2iso639' => 'vo', 'locale' => 'vo', 'localeFallback' => 'vo'), - 'vot' => array('language' => 'Votic', '3iso639' => 'vot', '2iso639' => null, 'locale' => 'vot', 'localeFallback' => 'vot'), - 'wa' => array('language' => 'Walloon', '3iso639' => 'wln', '2iso639' => 'wa', 'locale' => 'wa', 'localeFallback' => 'wa'), - 'wak' => array('language' => 'Wakashan languages', '3iso639' => 'wak', '2iso639' => null, 'locale' => 'wak', 'localeFallback' => 'wak'), - 'wal' => array('language' => 'Walamo', '3iso639' => 'wal', '2iso639' => null, 'locale' => 'wal', 'localeFallback' => 'wal'), - 'war' => array('language' => 'Waray', '3iso639' => 'war', '2iso639' => null, 'locale' => 'war', 'localeFallback' => 'war'), - 'was' => array('language' => 'Washo', '3iso639' => 'was', '2iso639' => null, 'locale' => 'was', 'localeFallback' => 'was'), - 'wen' => array('language' => 'Sorbian languages', '3iso639' => 'wen', '2iso639' => null, 'locale' => 'wen', 'localeFallback' => 'wen'), - 'wo' => array('language' => 'Wolof', '3iso639' => 'wol', '2iso639' => 'wo', 'locale' => 'wo', 'localeFallback' => 'wo'), - 'xal' => array('language' => 'Kalmyk', '3iso639' => 'xal', '2iso639' => null, 'locale' => 'xal', 'localeFallback' => 'xal'), - 'xh' => array('language' => 'Xhosa', '3iso639' => 'xho', '2iso639' => 'xh', 'locale' => 'xh', 'localeFallback' => 'xh'), - 'yao' => array('language' => 'Yao', '3iso639' => 'yao', '2iso639' => null, 'locale' => 'yao', 'localeFallback' => 'yao'), - 'yap' => array('language' => 'Yapese', '3iso639' => 'yap', '2iso639' => null, 'locale' => 'yap', 'localeFallback' => 'yap'), - 'yi' => array('language' => 'Yiddish', '3iso639' => 'yid', '2iso639' => 'yi', 'locale' => 'yi', 'localeFallback' => 'yi'), - 'yo' => array('language' => 'Yoruba', '3iso639' => 'yor', '2iso639' => 'yo', 'locale' => 'yo', 'localeFallback' => 'yo'), - 'ypk' => array('language' => 'Yupik languages', '3iso639' => 'ypk', '2iso639' => null, 'locale' => 'ypk', 'localeFallback' => 'ypk'), - 'za' => array('language' => 'Zhuang; Chuang', '3iso639' => 'zha', '2iso639' => 'za', 'locale' => 'za', 'localeFallback' => 'za'), - 'zap' => array('language' => 'Zapotec', '3iso639' => 'zap', '2iso639' => null, 'locale' => 'zap', 'localeFallback' => 'zap'), - 'zen' => array('language' => 'Zenaga', '3iso639' => 'zen', '2iso639' => null, 'locale' => 'zen', 'localeFallback' => 'zen'), - 'zh' => array('language' => 'Chinese', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh', 'localeFallback' => 'zh'), - 'zh-cn' => array('language' => 'Chinese (China)', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh_CN', 'localeFallback' => 'zh'), - 'zh-hk' => array('language' => 'Chinese (Hong Kong SAR)', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh_HK', 'localeFallback' => 'zh'), - 'zh-mo' => array('language' => 'Chinese (Macau SAR)', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh_MO', 'localeFallback' => 'zh'), - 'zh-sg' => array('language' => 'Chinese (Singapore)', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh_SG', 'localeFallback' => 'zh'), - 'zh-tw' => array('language' => 'Chinese (Taiwan)', '3iso639' => 'chi', '2iso639' => 'zh', 'locale' => 'zh_TW', 'localeFallback' => 'zh'), - 'znd' => array('language' => 'Zande', '3iso639' => 'znd', '2iso639' => null, 'locale' => 'znd', 'localeFallback' => 'znd'), - 'zu' => array('language' => 'Zulu', '3iso639' => 'zul', '2iso639' => 'zu', 'locale' => 'zu', 'localeFallback' => 'zu'), - 'zun' => array('language' => 'Zuni', '3iso639' => 'zun', '2iso639' => null, 'locale' => 'zun', 'localeFallback' => 'zun')); + 'aa' => array('language' => 'Afar', 'locale' => 'aar', 'localeFallback' => 'aar'), + 'ab' => array('language' => 'Abkhazian', 'locale' => 'abk', 'localeFallback' => 'abk'), + 'ace' => array('language' => 'Achinese', 'locale' => 'ace', 'localeFallback' => 'ace'), + 'ach' => array('language' => 'Acoli', 'locale' => 'ach', 'localeFallback' => 'ach'), + 'ada' => array('language' => 'Adangme', 'locale' => 'ada', 'localeFallback' => 'ada'), + 'ady' => array('language' => 'Adyghe; Adygei', 'locale' => 'ady', 'localeFallback' => 'ady'), + 'ae' => array('language' => 'Avestan', 'locale' => 'ave', 'localeFallback' => 'ave'), + 'af' => array('language' => 'Afrikaans', 'locale' => 'afr', 'localeFallback' => 'afr'), + 'afa' => array('language' => 'Afro-Asiatic (Other)', 'locale' => 'afa', 'localeFallback' => 'afa'), + 'afh' => array('language' => 'Afrihili', 'locale' => 'afh', 'localeFallback' => 'afh'), + 'ain' => array('language' => 'Ainu', 'locale' => 'ain', 'localeFallback' => 'ain'), + 'ak' => array('language' => 'Akan', 'locale' => 'aka', 'localeFallback' => 'aka'), + 'akk' => array('language' => 'Akkadian', 'locale' => 'akk', 'localeFallback' => 'akk'), + 'ale' => array('language' => 'Aleut', 'locale' => 'ale', 'localeFallback' => 'ale'), + 'alg' => array('language' => 'Algonquian Languages', 'locale' => 'alg', 'localeFallback' => 'alg'), + 'alt' => array('language' => 'Southern Altai', 'locale' => 'alt', 'localeFallback' => 'alt'), + 'am' => array('language' => 'Amharic', 'locale' => 'amh', 'localeFallback' => 'amh'), + 'an' => array('language' => 'Aragonese', 'locale' => 'arg', 'localeFallback' => 'arg'), + 'ang' => array('language' => 'English, Old', 'locale' => 'ang', 'localeFallback' => 'ang'), + 'apa' => array('language' => 'Apache languages', 'locale' => 'apa', 'localeFallback' => 'apa'), + 'ar' => array('language' => 'Arabic', 'locale' => 'ara', 'localeFallback' => 'ara'), + 'ar-ae' => array('language' => 'Arabic (U.A.E.)', 'locale' => 'ar_ae', 'localeFallback' => 'ara'), + 'ar-bh' => array('language' => 'Arabic (Bahrain)', 'locale' => 'ar_bh', 'localeFallback' => 'ara'), + 'ar-dz' => array('language' => 'Arabic (Algeria)', 'locale' => 'ar_dz', 'localeFallback' => 'ara'), + 'ar-eg' => array('language' => 'Arabic (Egypt)', 'locale' => 'ar_eg', 'localeFallback' => 'ara'), + 'ar-iq' => array('language' => 'Arabic (Iraq)', 'locale' => 'ar_ig', 'localeFallback' => 'ara'), + 'ar-jo' => array('language' => 'Arabic (Jordan)', 'locale' => 'ar_jo', 'localeFallback' => 'ara'), + 'ar-kw' => array('language' => 'Arabic (Kuwait)', 'locale' => 'ar_kw', 'localeFallback' => 'ara'), + 'ar-lb' => array('language' => 'Arabic (Lebanon)', 'locale' => 'ar_lb', 'localeFallback' => 'ara'), + 'ar-ly' => array('language' => 'Arabic (Libya)', 'locale' => 'ar_ly', 'localeFallback' => 'ara'), + 'ar-ma' => array('language' => 'Arabic (Morocco)', 'locale' => 'ar_ma', 'localeFallback' => 'ara'), + 'ar-om' => array('language' => 'Arabic (Oman)', 'locale' => 'ar_om', 'localeFallback' => 'ara'), + 'ar-qa' => array('language' => 'Arabic (Qatar)', 'locale' => 'ar_qa', 'localeFallback' => 'ara'), + 'ar-sa' => array('language' => 'Arabic (Saudi Arabia)', 'locale' => 'ar_sa', 'localeFallback' => 'ara'), + 'ar-sy' => array('language' => 'Arabic (Syria)', 'locale' => 'ar_sy', 'localeFallback' => 'ara'), + 'ar-tn' => array('language' => 'Arabic (Tunisia)', 'locale' => 'ar_tn', 'localeFallback' => 'ara'), + 'ar-ye' => array('language' => 'Arabic (Yemen)', 'locale' => 'ar_ye', 'localeFallback' => 'ara'), + 'arc' => array('language' => 'Aramaic', 'locale' => 'arc', 'localeFallback' => 'arc'), + 'arn' => array('language' => 'Araucanian', 'locale' => 'arn', 'localeFallback' => 'arn'), + 'arp' => array('language' => 'Arapaho', 'locale' => 'arp', 'localeFallback' => 'arp'), + 'arw' => array('language' => 'Arawak', 'locale' => 'arw', 'localeFallback' => 'arw'), + 'as' => array('language' => 'Assamese', 'locale' => 'asm', 'localeFallback' => 'asm'), + 'ast' => array('language' => 'Asturian', 'locale' => 'ast', 'localeFallback' => 'ast'), + 'ath' => array('language' => 'Athapascan languages', 'locale' => 'ath', 'localeFallback' => 'ath'), + 'aus' => array('language' => 'Australian languages', 'locale' => 'aus', 'localeFallback' => 'aus'), + 'av' => array('language' => 'Avaric', 'locale' => 'ava', 'localeFallback' => 'ava'), + 'awa' => array('language' => 'Awadhi', 'locale' => 'awa', 'localeFallback' => 'awa'), + 'ay' => array('language' => 'Aymara', 'locale' => 'aym', 'localeFallback' => 'aym'), + 'az' => array('language' => 'Azerbaijani', 'locale' => 'aze', 'localeFallback' => 'aze'), + 'ba' => array('language' => 'Bashkir', 'locale' => 'bak', 'localeFallback' => 'bak'), + 'bad' => array('language' => 'Banda', 'locale' => 'bad', 'localeFallback' => 'bad'), + 'bai' => array('language' => 'Bamileke languages', 'locale' => 'bai', 'localeFallback' => 'bai'), + 'bal' => array('language' => 'Baluchi', 'locale' => 'bal', 'localeFallback' => 'bal'), + 'ban' => array('language' => 'Balinese', 'locale' => 'ban', 'localeFallback' => 'ban'), + 'bas' => array('language' => 'Basa', 'locale' => 'bas', 'localeFallback' => 'bas'), + 'bat' => array('language' => 'Baltic (Other)', 'locale' => 'bat', 'localeFallback' => 'bat'), + 'be' => array('language' => 'Belarusian', 'locale' => 'bel', 'localeFallback' => 'bel'), + 'bej' => array('language' => 'Beja', 'locale' => 'bej', 'localeFallback' => 'bej'), + 'bem' => array('language' => 'Bemba', 'locale' => 'bem', 'localeFallback' => 'bem'), + 'ber' => array('language' => 'Berber (Other)', 'locale' => 'ber', 'localeFallback' => 'ber'), + 'bg' => array('language' => 'Bulgarian', 'locale' => 'bul', 'localeFallback' => 'bul'), + 'bh' => array('language' => 'Bihari', 'locale' => 'bih', 'localeFallback' => 'bih'), + 'bho' => array('language' => 'Bhojpuri', 'locale' => 'bho', 'localeFallback' => 'bho'), + 'bi' => array('language' => 'Bislama', 'locale' => 'bis', 'localeFallback' => 'bis'), + 'bik' => array('language' => 'Bikol', 'locale' => 'bik', 'localeFallback' => 'bik'), + 'bin' => array('language' => 'Bini', 'locale' => 'bin', 'localeFallback' => 'bin'), + 'bla' => array('language' => 'Siksika', 'locale' => 'bla', 'localeFallback' => 'bla'), + 'bm' => array('language' => 'Bambara', 'locale' => 'bam', 'localeFallback' => 'bam'), + 'bn' => array('language' => 'Bengali', 'locale' => 'ben', 'localeFallback' => 'ben'), + 'bnt' => array('language' => 'Bantu (Other)', 'locale' => 'bnt', 'localeFallback' => 'bnt'), + 'bo' => array('language' => 'Tibetan', 'locale' => 'tib', 'localeFallback' => 'tib'), + 'br' => array('language' => 'Breton', 'locale' => 'bre', 'localeFallback' => 'bre'), + 'bra' => array('language' => 'Braj', 'locale' => 'bra', 'localeFallback' => 'bra'), + 'bs' => array('language' => 'Bosnian', 'locale' => 'bos', 'localeFallback' => 'bos'), + 'btk' => array('language' => 'Batak (Indonesia)', 'locale' => 'btk', 'localeFallback' => 'btk'), + 'bua' => array('language' => 'Buriat', 'locale' => 'bua', 'localeFallback' => 'bua'), + 'bug' => array('language' => 'Buginese', 'locale' => 'bug', 'localeFallback' => 'bug'), + 'byn' => array('language' => 'Blin; Bilin', 'locale' => 'byn', 'localeFallback' => 'byn'), + 'ca' => array('language' => 'Catalan', 'locale' => 'es_ca', 'localeFallback' => 'cat'), + 'cad' => array('language' => 'Caddo', 'locale' => 'cad', 'localeFallback' => 'cad'), + 'cai' => array('language' => 'Central American Indian (Other)', 'locale' => 'cai', 'localeFallback' => 'cai'), + 'car' => array('language' => 'Carib', 'locale' => 'car', 'localeFallback' => 'car'), + 'cau' => array('language' => 'Caucasian (Other)', 'locale' => 'cau', 'localeFallback' => 'cau'), + 'ce' => array('language' => 'Chechen', 'locale' => 'che', 'localeFallback' => 'che'), + 'ceb' => array('language' => 'Cebuano', 'locale' => 'ceb', 'localeFallback' => 'ceb'), + 'cel' => array('language' => 'Celtic (Other)', 'locale' => 'cel', 'localeFallback' => 'cel'), + 'ch' => array('language' => 'Chamorro', 'locale' => 'cha', 'localeFallback' => 'cha'), + 'chb' => array('language' => 'Chibcha', 'locale' => 'chb', 'localeFallback' => 'chb'), + 'chg' => array('language' => 'Chagatai', 'locale' => 'chg', 'localeFallback' => 'chg'), + 'chk' => array('language' => 'Chuukese', 'locale' => 'chk', 'localeFallback' => 'chk'), + 'chm' => array('language' => 'Mari', 'locale' => 'chm', 'localeFallback' => 'chm'), + 'chn' => array('language' => 'Chinook jargon', 'locale' => 'chn', 'localeFallback' => 'chn'), + 'cho' => array('language' => 'Choctaw', 'locale' => 'cho', 'localeFallback' => 'cho'), + 'chp' => array('language' => 'Chipewyan', 'locale' => 'chp', 'localeFallback' => 'chp'), + 'chr' => array('language' => 'Cherokee', 'locale' => 'chr', 'localeFallback' => 'chr'), + 'chy' => array('language' => 'Cheyenne', 'locale' => 'chy', 'localeFallback' => 'chy'), + 'cmc' => array('language' => 'Chamic languages', 'locale' => 'cmc', 'localeFallback' => 'cmc'), + 'co' => array('language' => 'Corsican', 'locale' => 'cos', 'localeFallback' => 'cos'), + 'cop' => array('language' => 'Coptic', 'locale' => 'cop', 'localeFallback' => 'cop'), + 'cpe' => array('language' => 'Creoles and pidgins, English based (Other)', 'locale' => 'cpe', 'localeFallback' => 'cpe'), + 'cpf' => array('language' => 'Creoles and pidgins, French-based (Other)', 'locale' => 'cpf', 'localeFallback' => 'cpf'), + 'cpp' => array('language' => 'Creoles and pidgins', 'locale' => 'cpp', 'localeFallback' => 'cpp'), + 'cr' => array('language' => 'Cree', 'locale' => 'cre', 'localeFallback' => 'cre'), + 'crh' => array('language' => 'Crimean Tatar; Crimean Turkish', 'locale' => 'crh', 'localeFallback' => 'crh'), + 'crp' => array('language' => 'Creoles and pidgins (Other)', 'locale' => 'crp', 'localeFallback' => 'crp'), + 'cs' => array('language' => 'Czech', 'locale' => 'cze', 'localeFallback' => 'cze'), + 'csb' => array('language' => 'Kashubian', 'locale' => 'csb', 'localeFallback' => 'csb'), + 'cu' => array('language' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', 'locale' => 'cu', 'localeFallback' => 'cu'), + 'cus' => array('language' => 'Cushitic (Other)', 'locale' => 'cus', 'localeFallback' => 'cus'), + 'cv' => array('language' => 'Chuvash', 'locale' => 'chv', 'localeFallback' => 'chv'), + 'cy' => array('language' => 'Welsh', 'locale' => 'wel', 'localeFallback' => 'wel'), + 'da' => array('language' => 'Danish', 'locale' => 'dan', 'localeFallback' => 'dan'), + 'dak' => array('language' => 'Dakota', 'locale' => 'dak', 'localeFallback' => 'dak'), + 'dar' => array('language' => 'Dargwa', 'locale' => 'dar', 'localeFallback' => 'dar'), + 'day' => array('language' => 'Dayak', 'locale' => 'day', 'localeFallback' => 'day'), + 'de' => array('language' => 'German (Germany)', 'locale' => 'de_de', 'localeFallback' => 'ger'), + 'de-at' => array('language' => 'German (Austria)', 'locale' => 'de_at', 'localeFallback' => 'ger'), + 'de-ch' => array('language' => 'German (Switzerland)', 'locale' => 'de_ch', 'localeFallback' => 'ger'), + 'de-de' => array('language' => 'German (Germany)', 'locale' => 'de_de', 'localeFallback' => 'ger'), + 'de-li' => array('language' => 'German (Liechtenstein)', 'locale' => 'de_li', 'localeFallback' => 'ger'), + 'de-lu' => array('language' => 'German (luxembourg)', 'locale' => 'de_lu', 'localeFallback' => 'ger'), + 'del' => array('language' => 'Delaware', 'locale' => 'del', 'localeFallback' => 'del'), + 'den' => array('language' => 'Slave (Athapascan)', 'locale' => 'den', 'localeFallback' => 'den'), + 'dgr' => array('language' => 'Dogrib', 'locale' => 'dgr', 'localeFallback' => 'dgr'), + 'din' => array('language' => 'Dinka', 'locale' => 'din', 'localeFallback' => 'din'), + 'doi' => array('language' => 'Dogri', 'locale' => 'doi', 'localeFallback' => 'doi'), + 'dra' => array('language' => 'Dravidian (Other)', 'locale' => 'dra', 'localeFallback' => 'dra'), + 'dsb' => array('language' => 'Lower Sorbian', 'locale' => 'dsb', 'localeFallback' => 'dsb'), + 'dua' => array('language' => 'Duala', 'locale' => 'dua', 'localeFallback' => 'dua'), + 'dum' => array('language' => 'Dutch, Middle', 'locale' => 'dum', 'localeFallback' => 'dum'), + 'dv' => array('language' => 'Divehi', 'locale' => 'dv', 'localeFallback' => 'dv'), + 'dyu' => array('language' => 'Dyula', 'locale' => 'dyu', 'localeFallback' => 'dyu'), + 'dz' => array('language' => 'Dzongkha', 'locale' => 'dzo', 'localeFallback' => 'dzo'), + 'ee' => array('language' => 'Ewe', 'locale' => 'ewe', 'localeFallback' => 'ewe'), + 'efi' => array('language' => 'Efik', 'locale' => 'efi', 'localeFallback' => 'efi'), + 'egy' => array('language' => 'Egyptian (Ancient)', 'locale' => 'egy', 'localeFallback' => 'egy'), + 'eka' => array('language' => 'Ekajuk', 'locale' => 'eka', 'localeFallback' => 'eka'), + 'el' => array('language' => 'Greek', 'locale' => 'gre', 'localeFallback' => 'gre'), + 'elx' => array('language' => 'Elamite', 'locale' => 'elx', 'localeFallback' => 'elx'), + 'en' => array('language' => 'English', 'locale' => 'en_us', 'localeFallback' => 'eng'), + 'en-au' => array('language' => 'English (Australia)', 'locale' => 'en_au', 'localeFallback' => 'eng'), + 'en-bz' => array('language' => 'English (Belize)', 'locale' => 'en_bz', 'localeFallback' => 'eng'), + 'en-ca' => array('language' => 'English (Canada)', 'locale' => 'en_ca', 'localeFallback' => 'eng'), + 'en-gb' => array('language' => 'English (United Kingdom)', 'locale' => 'en_gb', 'localeFallback' => 'eng'), + 'en-ie' => array('language' => 'English (Ireland)', 'locale' => 'en_ie', 'localeFallback' => 'eng'), + 'en-jm' => array('language' => 'English (Jamaica)', 'locale' => 'en_jm', 'localeFallback' => 'eng'), + 'en-nz' => array('language' => 'English (New Zealand)', 'locale' => 'en_nz', 'localeFallback' => 'eng'), + 'en-ph' => array('language' => 'English (Philippines)', 'locale' => 'en_ph', 'localeFallback' => 'eng'), + 'en-tt' => array('language' => 'English (Trinidad)', 'locale' => 'en_tt', 'localeFallback' => 'eng'), + 'en-us' => array('language' => 'English (United States)', 'locale' => 'en_us', 'localeFallback' => 'eng'), + 'en-za' => array('language' => 'English (South Africa)', 'locale' => 'en_za', 'localeFallback' => 'eng'), + 'en-zw' => array('language' => 'English (Zimbabwe)', 'locale' => 'en_zw', 'localeFallback' => 'eng'), + 'enm' => array('language' => 'English, Middle', 'locale' => 'enm', 'localeFallback' => 'enm'), + 'eo' => array('language' => 'Esperanto', 'locale' => 'epo', 'localeFallback' => 'epo'), + 'es' => array('language' => 'Spanish (Spain)', 'locale' => 'spa', 'localeFallback' => 'spa'), + 'es-ar' => array('language' => 'Spanish (Argentina)', 'locale' => 'es_ar', 'localeFallback' => 'spa'), + 'es-bo' => array('language' => 'Spanish (Bolivia)', 'locale' => 'es_bo', 'localeFallback' => 'spa'), + 'es-cl' => array('language' => 'Spanish (Chile)', 'locale' => 'es_cl', 'localeFallback' => 'spa'), + 'es-co' => array('language' => 'Spanish (Colombia)', 'locale' => 'es_co', 'localeFallback' => 'spa'), + 'es-cr' => array('language' => 'Spanish (Costa Rica)', 'locale' => 'es_cr', 'localeFallback' => 'spa'), + 'es-do' => array('language' => 'Spanish (Dominican Republic)', 'locale' => 'es_do', 'localeFallback' => 'spa'), + 'es-ec' => array('language' => 'Spanish (Ecuador)', 'locale' => 'es_ec', 'localeFallback' => 'spa'), + 'es-gt' => array('language' => 'Spanish (Guatemala)', 'locale' => 'es_gt', 'localeFallback' => 'spa'), + 'es-hn' => array('language' => 'Spanish (Honduras)', 'locale' => 'es_hn', 'localeFallback' => 'spa'), + 'es-mx' => array('language' => 'Spanish (Mexico)', 'locale' => 'es_mx', 'localeFallback' => 'spa'), + 'es-ni' => array('language' => 'Spanish (Nicaragua)', 'locale' => 'es_ni', 'localeFallback' => 'spa'), + 'es-pa' => array('language' => 'Spanish (Panama)', 'locale' => 'es_pa', 'localeFallback' => 'spa'), + 'es-pe' => array('language' => 'Spanish (Peru)', 'locale' => 'es_pe', 'localeFallback' => 'spa'), + 'es-pr' => array('language' => 'Spanish (Puerto Rico)', 'locale' => 'es_pr', 'localeFallback' => 'spa'), + 'es-py' => array('language' => 'Spanish (Paraguay)', 'locale' => 'es_py', 'localeFallback' => 'spa'), + 'es-sv' => array('language' => 'Spanish (El Salvador)', 'locale' => 'es_sv', 'localeFallback' => 'spa'), + 'es-us' => array('language' => 'Spanish (United States)', 'locale' => 'es_us', 'localeFallback' => 'spa'), + 'es-uy' => array('language' => 'Spanish (Uruguay)', 'locale' => 'es_uy', 'localeFallback' => 'spa'), + 'es-ve' => array('language' => 'Spanish (Venezuela)', 'locale' => 'es_ve', 'localeFallback' => 'spa'), + 'et' => array('language' => 'Estonian', 'locale' => 'est', 'localeFallback' => 'est'), + 'eu' => array('language' => 'Basque', 'locale' => 'baq', 'localeFallback' => 'baq'), + 'ewo' => array('language' => 'Ewondo', 'locale' => 'ewo', 'localeFallback' => 'ewo'), + 'fa' => array('language' => 'Persian', 'locale' => 'per', 'localeFallback' => 'per'), + 'fan' => array('language' => 'Fang', 'locale' => 'fan', 'localeFallback' => 'fan'), + 'fat' => array('language' => 'Fanti', 'locale' => 'fat', 'localeFallback' => 'fat'), + 'ff' => array('language' => 'Fulah', 'locale' => 'ful', 'localeFallback' => 'ful'), + 'fi' => array('language' => 'Finnish', 'locale' => 'fin', 'localeFallback' => 'fin'), + 'fil' => array('language' => 'Filipino; Pilipino', 'locale' => 'fil', 'localeFallback' => 'fil'), + 'fiu' => array('language' => 'Finno-Ugrian (Other)', 'locale' => 'fiu', 'localeFallback' => 'fiu'), + 'fj' => array('language' => 'Fijian', 'locale' => 'fij', 'localeFallback' => 'fij'), + 'fo' => array('language' => 'Faroese', 'locale' => 'fao', 'localeFallback' => 'fao'), + 'fon' => array('language' => 'Fon', 'locale' => 'fon', 'localeFallback' => 'fon'), + 'fr' => array('language' => 'French (France)', 'locale' => 'fre', 'localeFallback' => 'fre'), + 'fr-be' => array('language' => 'French (Belgium)', 'locale' => 'fr_be', 'localeFallback' => 'fre'), + 'fr-ca' => array('language' => 'French (Canada)', 'locale' => 'fr_ca', 'localeFallback' => 'fre'), + 'fr-ch' => array('language' => 'French (Switzerland)', 'locale' => 'fr_ch', 'localeFallback' => 'fre'), + 'fr-lu' => array('language' => 'French (Luxembourg)', 'locale' => 'fr_lu', 'localeFallback' => 'fre'), + 'fr-mc' => array('language' => 'French (Monaco)', 'locale' => 'fr_mc', 'localeFallback' => 'fre'), + 'frm' => array('language' => 'French, Middle', 'locale' => 'frm', 'localeFallback' => 'frm'), + 'fro' => array('language' => 'French, Old', 'locale' => 'fro', 'localeFallback' => 'fro'), + 'fur' => array('language' => 'Friulian', 'locale' => 'fur', 'localeFallback' => 'fur'), + 'fy' => array('language' => 'Frisian', 'locale' => 'fry', 'localeFallback' => 'fry'), + 'ga' => array('language' => 'Irish', 'locale' => 'gle', 'localeFallback' => 'gle'), + 'gaa' => array('language' => 'Ga', 'locale' => 'gaa', 'localeFallback' => 'gaa'), + 'gay' => array('language' => 'Gayo', 'locale' => 'gay', 'localeFallback' => 'gay'), + 'gba' => array('language' => 'Gbaya', 'locale' => 'gba', 'localeFallback' => 'gba'), + 'gd' => array('language' => 'Gaelic, Hiberno-Scottish', 'locale' => 'gla', 'localeFallback' => 'gla'), + 'gem' => array('language' => 'Germanic (Other)', 'locale' => 'gem', 'localeFallback' => 'gem'), + 'gez' => array('language' => 'Geez', 'locale' => 'gez', 'localeFallback' => 'gez'), + 'gil' => array('language' => 'Gilbertese', 'locale' => 'gil', 'localeFallback' => 'gil'), + 'gl' => array('language' => 'Galician', 'locale' => 'glg', 'localeFallback' => 'glg'), + 'gmh' => array('language' => 'German, Middle High', 'locale' => 'gmh', 'localeFallback' => 'gmh'), + 'gn' => array('language' => 'Guarani', 'locale' => 'grn', 'localeFallback' => 'grn'), + 'goh' => array('language' => 'German, Old High', 'locale' => 'goh', 'localeFallback' => 'goh'), + 'gon' => array('language' => 'Gondi', 'locale' => 'gon', 'localeFallback' => 'gon'), + 'gor' => array('language' => 'Gorontalo', 'locale' => 'gor', 'localeFallback' => 'gor'), + 'got' => array('language' => 'Gothic', 'locale' => 'got', 'localeFallback' => 'got'), + 'grb' => array('language' => 'Grebo', 'locale' => 'grb', 'localeFallback' => 'grb'), + 'grc' => array('language' => 'Greek, Ancient', 'locale' => 'grc', 'localeFallback' => 'gre'), + 'gu' => array('language' => 'Gujarati', 'locale' => 'guj', 'localeFallback' => 'guj'), + 'gv' => array('language' => 'Manx', 'locale' => 'glv', 'localeFallback' => 'glv'), + 'gwi' => array('language' => 'Gwich´in', 'locale' => 'gwi', 'localeFallback' => 'gwi'), + 'ha' => array('language' => 'Hausa', 'locale' => 'hau', 'localeFallback' => 'hau'), + 'hai' => array('language' => 'Haida', 'locale' => 'hai', 'localeFallback' => 'hai'), + 'haw' => array('language' => 'Hawaiian', 'locale' => 'haw', 'localeFallback' => 'haw'), + 'he' => array('language' => 'Hebrew', 'locale' => 'heb', 'localeFallback' => 'heb'), + 'hi' => array('language' => 'Hindi', 'locale' => 'hin', 'localeFallback' => 'hin'), + 'hil' => array('language' => 'Hiligaynon', 'locale' => 'hil', 'localeFallback' => 'hil'), + 'him' => array('language' => 'Himachali', 'locale' => 'him', 'localeFallback' => 'him'), + 'hmn' => array('language' => 'Hmong', 'locale' => 'hmn', 'localeFallback' => 'hmn'), + 'ho' => array('language' => 'Hiri Motu', 'locale' => 'hmo', 'localeFallback' => 'hmo'), + 'hr' => array('language' => 'Croatian', 'locale' => 'scr', 'localeFallback' => 'scr'), + 'hsb' => array('language' => 'Upper Sorbian', 'locale' => 'hsb', 'localeFallback' => 'hsb'), + 'ht' => array('language' => 'Haitian; Haitian Creole', 'locale' => 'ht', 'localeFallback' => 'ht'), + 'hu' => array('language' => 'Hungarian', 'locale' => 'hun', 'localeFallback' => 'hun'), + 'hup' => array('language' => 'Hupa', 'locale' => 'hup', 'localeFallback' => 'hup'), + 'hy' => array('language' => 'Armenian', 'locale' => 'arm', 'localeFallback' => 'arm'), + 'hz' => array('language' => 'Herero', 'locale' => 'her', 'localeFallback' => 'her'), + 'iba' => array('language' => 'Iban', 'locale' => 'iba', 'localeFallback' => 'iba'), + 'ig' => array('language' => 'Igbo', 'locale' => 'ibo', 'localeFallback' => 'ibo'), + 'id' => array('language' => 'Indonesian', 'locale' => 'ind', 'localeFallback' => 'ind'), + 'ie' => array('language' => 'Interlingue', 'locale' => 'ile', 'localeFallback' => 'ile'), + 'ii' => array('language' => 'Sichuan Yi', 'locale' => 'iii', 'localeFallback' => 'iii'), + 'ijo' => array('language' => 'Ijo', 'locale' => 'ijo', 'localeFallback' => 'ijo'), + 'ik' => array('language' => 'Inupiaq', 'locale' => 'ipk', 'localeFallback' => 'ipk'), + 'iku' => array('language' => 'Inuktitut', 'locale' => 'iku', 'localeFallback' => 'iku'), + 'ilo' => array('language' => 'Iloko', 'locale' => 'ilo', 'localeFallback' => 'ilo'), + 'inc' => array('language' => 'Indic (Other)', 'locale' => 'inc', 'localeFallback' => 'inc'), + 'ine' => array('language' => 'Indo-European (Other)', 'locale' => 'ine', 'localeFallback' => 'ine'), + 'inh' => array('language' => 'Ingush', 'locale' => 'inh', 'localeFallback' => 'inh'), + 'io' => array('language' => 'Ido', 'locale' => 'io', 'localeFallback' => 'io'), + 'ira' => array('language' => 'Iranian (Other)', 'locale' => 'ira', 'localeFallback' => 'ira'), + 'iro' => array('language' => 'Iroquoian languages', 'locale' => 'iro', 'localeFallback' => 'iro'), + 'is' => array('language' => 'Icelandic', 'locale' => 'is', 'localeFallback' => 'is'), + 'it' => array('language' => 'Italian (Italy)', 'locale' => 'ita', 'localeFallback' => 'ita'), + 'it-ch' => array('language' => 'Italian (Switzerland)', 'locale' => 'it_ch', 'localeFallback' => 'ita'), + 'iu' => array('language' => 'Inuktitut', 'locale' => 'iu', 'localeFallback' => 'iu'), + 'ja' => array('language' => 'Japanese', 'locale' => 'ja', 'localeFallback' => 'ja'), + 'jav' => array('language' => 'Javanese', 'locale' => 'jav', 'localeFallback' => 'jav'), + 'jbo' => array('language' => 'Lojban', 'locale' => 'jbo', 'localeFallback' => 'jbo'), + 'jpn' => array('language' => 'Japanese', 'locale' => 'jpn', 'localeFallback' => 'jpn'), + 'jrb' => array('language' => 'Judeo-Arabic', 'locale' => 'jrb', 'localeFallback' => 'jrb'), + 'jv' => array('language' => 'Javanese', 'locale' => 'jv', 'localeFallback' => 'jv'), + 'ka' => array('language' => 'Georgian', 'locale' => 'ka', 'localeFallback' => 'ka'), + 'kaa' => array('language' => 'Kara-Kalpak', 'locale' => 'kaa', 'localeFallback' => 'kaa'), + 'kab' => array('language' => 'Kabyle', 'locale' => 'kab', 'localeFallback' => 'kab'), + 'kac' => array('language' => 'Kachin', 'locale' => 'kac', 'localeFallback' => 'kac'), + 'kam' => array('language' => 'Kamba', 'locale' => 'kam', 'localeFallback' => 'kam'), + 'kan' => array('language' => 'Kannada', 'locale' => 'kan', 'localeFallback' => 'kan'), + 'kar' => array('language' => 'Karen', 'locale' => 'kar', 'localeFallback' => 'kar'), + 'kas' => array('language' => 'Kashmiri', 'locale' => 'kas', 'localeFallback' => 'kas'), + 'kau' => array('language' => 'Kanuri', 'locale' => 'kau', 'localeFallback' => 'kau'), + 'kaw' => array('language' => 'Kawi', 'locale' => 'kaw', 'localeFallback' => 'kaw'), + 'kbd' => array('language' => 'Kabardian', 'locale' => 'kbd', 'localeFallback' => 'kbd'), + 'kg' => array('language' => 'Kongo', 'locale' => 'kg', 'localeFallback' => 'kg'), + 'kha' => array('language' => 'Khasi', 'locale' => 'kha', 'localeFallback' => 'kha'), + 'khi' => array('language' => 'Khoisan (Other)', 'locale' => 'khi', 'localeFallback' => 'khi'), + 'khm' => array('language' => 'Khmer', 'locale' => 'khm', 'localeFallback' => 'khm'), + 'kho' => array('language' => 'Khotanese', 'locale' => 'kho', 'localeFallback' => 'kho'), + 'ki' => array('language' => 'Kikuyu; Gikuyu', 'locale' => 'kik', 'localeFallback' => 'kik'), + 'kin' => array('language' => 'Kinyarwanda', 'locale' => 'kin', 'localeFallback' => 'kin'), + 'kir' => array('language' => 'Kirghiz', 'locale' => 'kir', 'localeFallback' => 'kir'), + 'kk' => array('language' => 'Kazakh', 'locale' => 'kaz', 'localeFallback' => 'kaz'), + 'kl' => array('language' => 'Kalaallisut; Greenlandic', 'locale' => 'kal', 'localeFallback' => 'kal'), + 'km' => array('language' => 'Khmer', 'locale' => 'km', 'localeFallback' => 'km'), + 'kmb' => array('language' => 'Kimbundu', 'locale' => 'kmb', 'localeFallback' => 'kmb'), + 'kn' => array('language' => 'Kannada', 'locale' => 'kn', 'localeFallback' => 'kn'), + 'ko' => array('language' => 'Korean', 'locale' => 'ko', 'localeFallback' => 'ko'), + 'ko-kp' => array('language' => 'Korea (North), Dem. Rep', 'locale' => 'ko_KP', 'localeFallback' => 'ko'), + 'ko-kr' => array('language' => 'Korea (South)', 'locale' => 'ko_KR', 'localeFallback' => 'ko'), + 'koi8-r' => array('language' => 'Russian', 'locale' => 'koi8_r', 'localeFallback' => 'rus'), + 'kok' => array('language' => 'Konkani', 'locale' => 'kok', 'localeFallback' => 'kok'), + 'kom' => array('language' => 'Komi', 'locale' => 'kom', 'localeFallback' => 'kom'), + 'kon' => array('language' => 'Kongo', 'locale' => 'kon', 'localeFallback' => 'kon'), + 'kos' => array('language' => 'Kosraean', 'locale' => 'kos', 'localeFallback' => 'kos'), + 'kpe' => array('language' => 'Kpelle', 'locale' => 'kpe', 'localeFallback' => 'kpe'), + 'kr' => array('language' => 'Kanuri', 'locale' => 'kr', 'localeFallback' => 'kr'), + 'krc' => array('language' => 'Karachay-Balkar', 'locale' => 'krc', 'localeFallback' => 'krc'), + 'kro' => array('language' => 'Kru', 'locale' => 'kro', 'localeFallback' => 'kro'), + 'kru' => array('language' => 'Kurukh', 'locale' => 'kru', 'localeFallback' => 'kru'), + 'ks' => array('language' => 'Kashmiri', 'locale' => 'ks', 'localeFallback' => 'ks'), + 'ku' => array('language' => 'Kurdish', 'locale' => 'ku', 'localeFallback' => 'ku'), + 'kua' => array('language' => 'Kuanyama; Kwanyama', 'locale' => 'kua', 'localeFallback' => 'kua'), + 'kum' => array('language' => 'Kumyk', 'locale' => 'kum', 'localeFallback' => 'kum'), + 'kut' => array('language' => 'Kutenai', 'locale' => 'kut', 'localeFallback' => 'kut'), + 'kv' => array('language' => 'Komi', 'locale' => 'kv', 'localeFallback' => 'kv'), + 'kw' => array('language' => 'Cornish', 'locale' => 'kw', 'localeFallback' => 'kw'), + 'ky' => array('language' => 'Kirghiz', 'locale' => 'ky', 'localeFallback' => 'ky'), + 'la' => array('language' => 'Latin', 'locale' => 'la', 'localeFallback' => 'la'), + 'lad' => array('language' => 'Ladino', 'locale' => 'lad', 'localeFallback' => 'lad'), + 'lah' => array('language' => 'Lahnda', 'locale' => 'lah', 'localeFallback' => 'lah'), + 'lam' => array('language' => 'Lamba', 'locale' => 'lam', 'localeFallback' => 'lam'), + 'lat' => array('language' => 'Latin', 'locale' => 'lat', 'localeFallback' => 'lat'), + 'lav' => array('language' => 'Latvian', 'locale' => 'lav', 'localeFallback' => 'lav'), + 'lb' => array('language' => 'Luxembourgish; Letzeburgesch', 'locale' => 'lb', 'localeFallback' => 'lb'), + 'lez' => array('language' => 'Lezghian', 'locale' => 'lez', 'localeFallback' => 'lez'), + 'lg' => array('language' => 'Ganda', 'locale' => 'lg', 'localeFallback' => 'lg'), + 'li' => array('language' => 'Limburgan; Limburger; Limburgish', 'locale' => 'li', 'localeFallback' => 'li'), + 'lim' => array('language' => 'Limburgan; Limburger; Limburgish', 'locale' => 'lim', 'localeFallback' => 'lim'), + 'lin' => array('language' => 'Lingala', 'locale' => 'lin', 'localeFallback' => 'lin'), + 'ln' => array('language' => 'Lingala', 'locale' => 'ln', 'localeFallback' => 'ln'), + 'lo' => array('language' => 'Lao', 'locale' => 'lo', 'localeFallback' => 'lo'), + 'lol' => array('language' => 'Mongo', 'locale' => 'lol', 'localeFallback' => 'lol'), + 'loz' => array('language' => 'Lozi', 'locale' => 'loz', 'localeFallback' => 'loz'), + 'lt' => array('language' => 'Lithuanian', 'locale' => 'lt', 'localeFallback' => 'lt'), + 'ltz' => array('language' => 'Luxembourgish; Letzeburgesch', 'locale' => 'ltz', 'localeFallback' => 'ltz'), + 'lu' => array('language' => 'Luba-Katanga', 'locale' => 'lu', 'localeFallback' => 'lu'), + 'lua' => array('language' => 'Luba-Lulua', 'locale' => 'lua', 'localeFallback' => 'lua'), + 'lub' => array('language' => 'Luba-Katanga', 'locale' => 'lub', 'localeFallback' => 'lub'), + 'lug' => array('language' => 'Ganda', 'locale' => 'lug', 'localeFallback' => 'lug'), + 'lui' => array('language' => 'Luiseno', 'locale' => 'lui', 'localeFallback' => 'lui'), + 'lun' => array('language' => 'Lunda', 'locale' => 'lun', 'localeFallback' => 'lun'), + 'luo' => array('language' => 'Luo (Kenya and Tanzania)', 'locale' => 'luo', 'localeFallback' => 'luo'), + 'lus' => array('language' => 'Lushai', 'locale' => 'lus', 'localeFallback' => 'lus'), + 'lv' => array('language' => 'Latvian', 'locale' => 'lv', 'localeFallback' => 'lv'), + 'mad' => array('language' => 'Madurese', 'locale' => 'mad', 'localeFallback' => 'mad'), + 'mag' => array('language' => 'Magahi', 'locale' => 'mag', 'localeFallback' => 'mag'), + 'mah' => array('language' => 'Marshallese', 'locale' => 'mah', 'localeFallback' => 'mah'), + 'mai' => array('language' => 'Maithili', 'locale' => 'mai', 'localeFallback' => 'mai'), + 'mak' => array('language' => 'Makasar', 'locale' => 'mak', 'localeFallback' => 'mak'), + 'mal' => array('language' => 'Malayalam', 'locale' => 'mal', 'localeFallback' => 'mal'), + 'man' => array('language' => 'Mandingo', 'locale' => 'man', 'localeFallback' => 'man'), + 'map' => array('language' => 'Austronesian (Other)', 'locale' => 'map', 'localeFallback' => 'map'), + 'mar' => array('language' => 'Marathi', 'locale' => 'mar', 'localeFallback' => 'mar'), + 'mas' => array('language' => 'Masai', 'locale' => 'mas', 'localeFallback' => 'mas'), + 'mdf' => array('language' => 'Moksha', 'locale' => 'mdf', 'localeFallback' => 'mdf'), + 'mdr' => array('language' => 'Mandar', 'locale' => 'mdr', 'localeFallback' => 'mdr'), + 'men' => array('language' => 'Mende', 'locale' => 'men', 'localeFallback' => 'men'), + 'mg' => array('language' => 'Malagasy', 'locale' => 'mg', 'localeFallback' => 'mg'), + 'mga' => array('language' => 'Irish, Middle', 'locale' => 'mga', 'localeFallback' => 'mga'), + 'mh' => array('language' => 'Marshallese', 'locale' => 'mh', 'localeFallback' => 'mh'), + 'mi' => array('language' => 'Maori', 'locale' => 'mi', 'localeFallback' => 'mi'), + 'mic' => array('language' => 'Micmac', 'locale' => 'mic', 'localeFallback' => 'mic'), + 'min' => array('language' => 'Minangkabau', 'locale' => 'min', 'localeFallback' => 'min'), + 'mk' => array('language' => 'FYRO Macedonian', 'locale' => 'mk', 'localeFallback' => 'mk'), + 'mk-mk' => array('language' => 'Macedonian', 'locale' => 'mk_MK', 'localeFallback' => 'mk'), + 'mkh' => array('language' => 'Mon-Khmer (Other)', 'locale' => 'mkh', 'localeFallback' => 'mkh'), + 'ml' => array('language' => 'Malayalam', 'locale' => 'ml', 'localeFallback' => 'ml'), + 'mlg' => array('language' => 'Malagasy', 'locale' => 'mlg', 'localeFallback' => 'mlg'), + 'mlt' => array('language' => 'Maltese', 'locale' => 'mlt', 'localeFallback' => 'mlt'), + 'mn' => array('language' => 'Mongolian', 'locale' => 'mn', 'localeFallback' => 'mn'), + 'mnc' => array('language' => 'Manchu', 'locale' => 'haw', 'localeFallback' => 'haw'), + 'mni' => array('language' => 'Manipuri', 'locale' => 'mni', 'localeFallback' => 'mni'), + 'mno' => array('language' => 'Manobo languages', 'locale' => 'mno', 'localeFallback' => 'mno'), + 'mo' => array('language' => 'Moldavian', 'locale' => 'mo', 'localeFallback' => 'mo'), + 'moh' => array('language' => 'Mohawk', 'locale' => 'moh', 'localeFallback' => 'moh'), + 'mol' => array('language' => 'Moldavian', 'locale' => 'mol', 'localeFallback' => 'mol'), + 'mon' => array('language' => 'Mongolian', 'locale' => 'mon', 'localeFallback' => 'mon'), + 'mos' => array('language' => 'Mossi', 'locale' => 'mos', 'localeFallback' => 'mos'), + 'mr' => array('language' => 'Marathi', 'locale' => 'mr', 'localeFallback' => 'mr'), + 'ms' => array('language' => 'Malay', 'locale' => 'ms', 'localeFallback' => 'ms'), + 'mt' => array('language' => 'Maltese', 'locale' => 'mt', 'localeFallback' => 'mt'), + 'mun' => array('language' => 'Munda languages', 'locale' => 'mun', 'localeFallback' => 'mun'), + 'mus' => array('language' => 'Creek', 'locale' => 'mus', 'localeFallback' => 'mus'), + 'mwl' => array('language' => 'Mirandese', 'locale' => 'mwl', 'localeFallback' => 'mwl'), + 'mwr' => array('language' => 'Marwari', 'locale' => 'mwr', 'localeFallback' => 'mwr'), + 'my' => array('language' => 'Burmese', 'locale' => 'my', 'localeFallback' => 'my'), + 'myn' => array('language' => 'Mayan languages', 'locale' => 'myn', 'localeFallback' => 'myn'), + 'myv' => array('language' => 'Erzya', 'locale' => 'myv', 'localeFallback' => 'myv'), + 'na' => array('language' => 'Nauru', 'locale' => 'na', 'localeFallback' => 'na'), + 'nah' => array('language' => 'Nahuatl', 'locale' => 'nah', 'localeFallback' => 'nah'), + 'nai' => array('language' => 'North American Indian', 'locale' => 'nai', 'localeFallback' => 'nai'), + 'nap' => array('language' => 'Neapolitan', 'locale' => 'nap', 'localeFallback' => 'nap'), + 'nau' => array('language' => 'Nauru', 'locale' => 'nau', 'localeFallback' => 'nau'), + 'nav' => array('language' => 'Navajo; Navaho', 'locale' => 'nav', 'localeFallback' => 'nav'), + 'nb' => array('language' => 'Norwegian (Bokmal)', 'locale' => 'nb', 'localeFallback' => 'nb'), + 'nbl' => array('language' => 'Ndebele, South; South Ndebele', 'locale' => 'nbl', 'localeFallback' => 'nbl'), + 'nd' => array('language' => 'North Ndebele', 'locale' => 'nd', 'localeFallback' => 'nd'), + 'nde' => array('language' => 'Ndebele, North; North Ndebele', 'locale' => 'nde', 'localeFallback' => 'nde'), + 'ndo' => array('language' => 'Ndonga', 'locale' => 'ndo', 'localeFallback' => 'ndo'), + 'nds' => array('language' => 'Low German; Low Saxon;', 'locale' => 'nds', 'localeFallback' => 'nds'), + 'ne' => array('language' => 'Nepali (India)', 'locale' => 'hr', 'localeFallback' => 'hr'), + 'nep' => array('language' => 'Nepali', 'locale' => 'nep', 'localeFallback' => 'nep'), + 'new' => array('language' => 'Newari; Nepal Bhasa', 'locale' => 'new', 'localeFallback' => 'new'), + 'ng' => array('language' => 'Ndonga', 'locale' => 'ng', 'localeFallback' => 'ng'), + 'nia' => array('language' => 'Nias', 'locale' => 'nia', 'localeFallback' => 'nia'), + 'nic' => array('language' => 'Niger-Kordofanian (Other)', 'locale' => 'nic', 'localeFallback' => 'nic'), + 'niu' => array('language' => 'Niuean', 'locale' => 'niu', 'localeFallback' => 'niu'), + 'nl' => array('language' => 'Dutch (Netherlands)', 'locale' => 'nl', 'localeFallback' => 'nl'), + 'nl-be' => array('language' => 'Dutch (Belgium)', 'locale' => 'nl_BE', 'localeFallback' => 'nl'), + 'nn' => array('language' => 'Norwegian (Nynorsk)', 'locale' => 'nn', 'localeFallback' => 'nn'), + 'nno' => array('language' => 'Norwegian Nynorsk; Nynorsk, Norwegian', 'locale' => 'nno', 'localeFallback' => 'nno'), + 'no' => array('language' => 'Norwegian Bokmċl', 'locale' => 'no', 'localeFallback' => 'no'), + 'nob' => array('language' => 'Norwegian Bokmċl; Bokmċl, Norwegian', 'locale' => 'nob', 'localeFallback' => 'nob'), + 'nog' => array('language' => 'Nogai', 'locale' => 'nog', 'localeFallback' => 'nog'), + 'non' => array('language' => 'Norse, Old', 'locale' => 'non', 'localeFallback' => 'non'), + 'nor' => array('language' => 'Norwegian', 'locale' => 'nor', 'localeFallback' => 'nor'), + 'nr' => array('language' => 'South Ndebele', 'locale' => 'nr', 'localeFallback' => 'nr'), + 'nso' => array('language' => 'Northern Sotho; Pedi; Sepedi', 'locale' => 'nso', 'localeFallback' => 'nso'), + 'nub' => array('language' => 'Nubian languages', 'locale' => 'nub', 'localeFallback' => 'nub'), + 'nv' => array('language' => 'Navajo; Navaho', 'locale' => 'nv', 'localeFallback' => 'nv'), + 'nwc' => array('language' => 'Classical Newari; Old Newari; Classical Nepal Bhasa', 'locale' => 'nwc', 'localeFallback' => 'nwc'), + 'ny' => array('language' => 'Chichewa; Chewa; Nyanja', 'locale' => 'ny', 'localeFallback' => 'ny'), + 'nya' => array('language' => 'Chichewa; Chewa; Nyanja', 'locale' => 'nya', 'localeFallback' => 'nya'), + 'nym' => array('language' => 'Nyamwezi', 'locale' => 'nym', 'localeFallback' => 'nym'), + 'nyn' => array('language' => 'Nyankole', 'locale' => 'nyn', 'localeFallback' => 'nyn'), + 'nyo' => array('language' => 'Nyoro', 'locale' => 'nyo', 'localeFallback' => 'nyo'), + 'nzi' => array('language' => 'Nzima', 'locale' => 'nzi', 'localeFallback' => 'nzi'), + 'oc' => array('language' => 'Occitan (post 1500); Provençal', 'locale' => 'oc', 'localeFallback' => 'oc'), + 'oci' => array('language' => 'Occitan; Provençal', 'locale' => 'oci', 'localeFallback' => 'oci'), + 'oj' => array('language' => 'Ojibwa', 'locale' => 'oj', 'localeFallback' => 'oj'), + 'oji' => array('language' => 'Ojibwa', 'locale' => 'oji', 'localeFallback' => 'oji'), + 'om' => array('language' => 'Oromo', 'locale' => 'om', 'localeFallback' => 'om'), + 'or' => array('language' => 'Oriya', 'locale' => 'or', 'localeFallback' => 'or'), + 'ori' => array('language' => 'Oriya', 'locale' => 'ori', 'localeFallback' => 'ori'), + 'orm' => array('language' => 'Oromo', 'locale' => 'orm', 'localeFallback' => 'orm'), + 'os' => array('language' => 'Ossetian; Ossetic', 'locale' => 'os', 'localeFallback' => 'os'), + 'osa' => array('language' => 'Osage', 'locale' => 'osa', 'localeFallback' => 'osa'), + 'oss' => array('language' => 'Ossetian; Ossetic', 'locale' => 'oss', 'localeFallback' => 'oss'), + 'ota' => array('language' => 'Turkish, Ottoman', 'locale' => 'ota', 'localeFallback' => 'ota'), + 'oto' => array('language' => 'Otomian languages', 'locale' => 'oto', 'localeFallback' => 'oto'), + 'pa' => array('language' => 'Panjabi; Punjabi', 'locale' => 'pa', 'localeFallback' => 'pa'), + 'pa-in' => array('language' => 'Punjabi (India)', 'locale' => 'pa_IN', 'localeFallback' => 'pa'), + 'pa-pk' => array('language' => 'Punjabi (Pakistan)', 'locale' => 'pa_PK', 'localeFallback' => 'pa'), + 'paa' => array('language' => 'Papuan (Other)', 'locale' => 'paa', 'localeFallback' => 'paa'), + 'pag' => array('language' => 'Pangasinan', 'locale' => 'pag', 'localeFallback' => 'pag'), + 'pal' => array('language' => 'Pahlavi', 'locale' => 'pal', 'localeFallback' => 'pal'), + 'pam' => array('language' => 'Pampanga', 'locale' => 'pam', 'localeFallback' => 'pam'), + 'pan' => array('language' => 'Panjabi; Punjabi', 'locale' => 'pan', 'localeFallback' => 'pan'), + 'pap' => array('language' => 'Papiamento', 'locale' => 'pap', 'localeFallback' => 'pap'), + 'pau' => array('language' => 'Palauan', 'locale' => 'pau', 'localeFallback' => 'pau'), + 'peo' => array('language' => 'Persian, Old', 'locale' => 'peo', 'localeFallback' => 'peo'), + 'phi' => array('language' => 'Philippine (Other)', 'locale' => 'phi', 'localeFallback' => 'phi'), + 'phn' => array('language' => 'Phoenician', 'locale' => 'phn', 'localeFallback' => 'phn'), + 'pi' => array('language' => 'Pali', 'locale' => 'pi', 'localeFallback' => 'pi'), + 'pl' => array('language' => 'Polish', 'locale' => 'pl', 'localeFallback' => 'pl'), + 'pli' => array('language' => 'Pali', 'locale' => 'pli', 'localeFallback' => 'pli'), + 'pol' => array('language' => 'Polish', 'locale' => 'pol', 'localeFallback' => 'pol'), + 'pon' => array('language' => 'Pohnpeian', 'locale' => 'pon', 'localeFallback' => 'pon'), + 'por' => array('language' => 'Portuguese', 'locale' => 'por', 'localeFallback' => 'por'), + 'pra' => array('language' => 'Prakrit languages', 'locale' => 'pra', 'localeFallback' => 'pra'), + 'pro' => array('language' => 'Provençal, Old', 'locale' => 'pro', 'localeFallback' => 'pro'), + 'ps' => array('language' => 'Pushto', 'locale' => 'ps', 'localeFallback' => 'ps'), + 'pt' => array('language' => 'Portuguese (Portugal)', 'locale' => 'pt', 'localeFallback' => 'pt'), + 'pt-br' => array('language' => 'Portuguese (Brazil)', 'locale' => 'pt_BR', 'localeFallback' => 'pt'), + 'pus' => array('language' => 'Pushto', 'locale' => 'pus', 'localeFallback' => 'pus'), + 'qu' => array('language' => 'Quechua', 'locale' => 'qu', 'localeFallback' => 'qu'), + 'que' => array('language' => 'Quechua', 'locale' => 'que', 'localeFallback' => 'que'), + 'raj' => array('language' => 'Rajasthani', 'locale' => 'raj', 'localeFallback' => 'raj'), + 'rap' => array('language' => 'Rapanui', 'locale' => 'rap', 'localeFallback' => 'rap'), + 'rar' => array('language' => 'Rarotongan', 'locale' => 'rar', 'localeFallback' => 'rar'), + 'rm' => array('language' => 'Raeto-Romance', 'locale' => 'rm', 'localeFallback' => 'rm'), + 'rn' => array('language' => 'Rundi', 'locale' => 'rn', 'localeFallback' => 'rn'), + 'ro' => array('language' => 'Romanian', 'locale' => 'ro', 'localeFallback' => 'ro'), + 'ro-md' => array('language' => 'Romanian (Moldova)', 'locale' => 'ro_MD', 'localeFallback' => 'ro'), + 'roa' => array('language' => 'Romance (Other)', 'locale' => 'roa', 'localeFallback' => 'roa'), + 'roh' => array('language' => 'Raeto-Romance', 'locale' => 'roh', 'localeFallback' => 'roh'), + 'rom' => array('language' => 'Romany', 'locale' => 'rom', 'localeFallback' => 'rom'), + 'ru' => array('language' => 'Russian', 'locale' => 'rus', 'localeFallback' => 'rus'), + 'ru-md' => array('language' => 'Russian (Moldova)', 'locale' => 'ru_md', 'localeFallback' => 'rus'), + 'rup' => array('language' => 'Aromanian', 'locale' => 'rup', 'localeFallback' => 'rup'), + 'sa' => array('language' => 'Sanskrit', 'locale' => 'sa', 'localeFallback' => 'sa'), + 'sad' => array('language' => 'Sandawe', 'locale' => 'sad', 'localeFallback' => 'sad'), + 'sah' => array('language' => 'Yakut', 'locale' => 'sah', 'localeFallback' => 'sah'), + 'sai' => array('language' => 'South American Indian (Other)', 'locale' => 'sai', 'localeFallback' => 'sai'), + 'sal' => array('language' => 'Salishan languages', 'locale' => 'sal', 'localeFallback' => 'sal'), + 'sam' => array('language' => 'Samaritan Aramaic', 'locale' => 'sam', 'localeFallback' => 'sam'), + 'sas' => array('language' => 'Sasak', 'locale' => 'sas', 'localeFallback' => 'sas'), + 'sat' => array('language' => 'Santali', 'locale' => 'sat', 'localeFallback' => 'sat'), + 'sc' => array('language' => 'Sardinian', 'locale' => 'sc', 'localeFallback' => 'sc'), + 'scn' => array('language' => 'Sicilian', 'locale' => 'scn', 'localeFallback' => 'scn'), + 'sco' => array('language' => 'Scots', 'locale' => 'sco', 'localeFallback' => 'sco'), + 'sd' => array('language' => 'Sindhi', 'locale' => 'sd', 'localeFallback' => 'sd'), + 'se' => array('language' => 'Northern Sami', 'locale' => 'se', 'localeFallback' => 'se'), + 'sel' => array('language' => 'Selkup', 'locale' => 'sel', 'localeFallback' => 'sel'), + 'sem' => array('language' => 'Semitic (Other)', 'locale' => 'sem', 'localeFallback' => 'sem'), + 'sg' => array('language' => 'Sango', 'locale' => 'sg', 'localeFallback' => 'sg'), + 'sga' => array('language' => 'Irish, Old', 'locale' => 'sga', 'localeFallback' => 'sga'), + 'shn' => array('language' => 'Shan', 'locale' => 'shn', 'localeFallback' => 'shn'), + 'si' => array('language' => 'Sinhala; Sinhalese', 'locale' => 'si', 'localeFallback' => 'si'), + 'sid' => array('language' => 'Sidamo', 'locale' => 'sid', 'localeFallback' => 'sid'), + 'sio' => array('language' => 'Siouan languages', 'locale' => 'sio', 'localeFallback' => 'sio'), + 'sit' => array('language' => 'Sino-Tibetan (Other)', 'locale' => 'sit', 'localeFallback' => 'sit'), + 'sk' => array('language' => 'Slovak', 'locale' => 'sk', 'localeFallback' => 'sk'), + 'sl' => array('language' => 'Slovenian', 'locale' => 'sl', 'localeFallback' => 'sl'), + 'sla' => array('language' => 'Slavic (Other)', 'locale' => 'sla', 'localeFallback' => 'sla'), + 'sm' => array('language' => 'Samoan', 'locale' => 'sm', 'localeFallback' => 'sm'), + 'sma' => array('language' => 'Southern Sami', 'locale' => 'sma', 'localeFallback' => 'sma'), + 'smi' => array('language' => 'Sami languages (Other)', 'locale' => 'smi', 'localeFallback' => 'smi'), + 'smj' => array('language' => 'Lule Sami', 'locale' => 'smj', 'localeFallback' => 'smj'), + 'smn' => array('language' => 'Inari Sami', 'locale' => 'smn', 'localeFallback' => 'smn'), + 'sms' => array('language' => 'Skolt Sami', 'locale' => 'sms', 'localeFallback' => 'sms'), + 'sn' => array('language' => 'Shona', 'locale' => 'sn', 'localeFallback' => 'sn'), + 'snk' => array('language' => 'Soninke', 'locale' => 'snk', 'localeFallback' => 'snk'), + 'so' => array('language' => 'Somali', 'locale' => 'so', 'localeFallback' => 'so'), + 'sog' => array('language' => 'Sogdian', 'locale' => 'sog', 'localeFallback' => 'sog'), + 'son' => array('language' => 'Songhai', 'locale' => 'son', 'localeFallback' => 'son'), + 'sq' => array('language' => 'Albanian', 'locale' => 'sq', 'localeFallback' => 'sq'), + 'sr' => array('language' => 'Serbian', 'locale' => 'sr', 'localeFallback' => 'sr'), + 'srr' => array('language' => 'Serer', 'locale' => 'srr', 'localeFallback' => 'srr'), + 'ss' => array('language' => 'Swati', 'locale' => 'ss', 'localeFallback' => 'ss'), + 'ssa' => array('language' => 'Nilo-Saharan (Other)', 'locale' => 'ssa', 'localeFallback' => 'ssa'), + 'st' => array('language' => 'Southern Sotho', 'locale' => 'st', 'localeFallback' => 'st'), + 'su' => array('language' => 'Sundanese', 'locale' => 'su', 'localeFallback' => 'su'), + 'suk' => array('language' => 'Sukuma', 'locale' => 'suk', 'localeFallback' => 'suk'), + 'sus' => array('language' => 'Susu', 'locale' => 'sus', 'localeFallback' => 'sus'), + 'sux' => array('language' => 'Sumerian', 'locale' => 'sux', 'localeFallback' => 'sux'), + 'sv' => array('language' => 'Swedish', 'locale' => 'sv', 'localeFallback' => 'sv'), + 'sv-fi' => array('language' => 'Swedish (Finland)', 'locale' => 'sv_FI', 'localeFallback' => 'sv'), + 'sw' => array('language' => 'Swahili', 'locale' => 'sw', 'localeFallback' => 'sw'), + 'swa' => array('language' => 'Swahili', 'locale' => 'swa', 'localeFallback' => 'swa'), + 'swe' => array('language' => 'Swedish', 'locale' => 'swe', 'localeFallback' => 'swe'), + 'syr' => array('language' => 'Syriac', 'locale' => 'syr', 'localeFallback' => 'syr'), + 'ta' => array('language' => 'Tamil', 'locale' => 'ta', 'localeFallback' => 'ta'), + 'tai' => array('language' => 'Tai (Other)', 'locale' => 'tai', 'localeFallback' => 'tai'), + 'te' => array('language' => 'Telugu', 'locale' => 'te', 'localeFallback' => 'te'), + 'tem' => array('language' => 'Timne', 'locale' => 'tem', 'localeFallback' => 'tem'), + 'ter' => array('language' => 'Tereno', 'locale' => 'ter', 'localeFallback' => 'ter'), + 'tet' => array('language' => 'Tetum', 'locale' => 'tet', 'localeFallback' => 'tet'), + 'tg' => array('language' => 'Tajik', 'locale' => 'tg', 'localeFallback' => 'tg'), + 'th' => array('language' => 'Thai', 'locale' => 'th', 'localeFallback' => 'th'), + 'tig' => array('language' => 'Tigre', 'locale' => 'tig', 'localeFallback' => 'tig'), + 'tir' => array('language' => 'Tigrinya|', 'locale' => 'ti', 'localeFallback' => 'ti'), + 'tiv' => array('language' => 'Tiv', 'locale' => 'tiv', 'localeFallback' => 'tiv'), + 'tk' => array('language' => 'Turkmen', 'locale' => 'tk', 'localeFallback' => 'tk'), + 'tkl' => array('language' => 'Tokelau', 'locale' => 'tkl', 'localeFallback' => 'tkl'), + 'tl' => array('language' => 'Tagalog', 'locale' => 'tl', 'localeFallback' => 'tl'), + 'tlh' => array('language' => 'Klingon; tlhIngan-Hol', 'locale' => 'tlh', 'localeFallback' => 'tlh'), + 'tli' => array('language' => 'Tlingit', 'locale' => 'tli', 'localeFallback' => 'tli'), + 'tmh' => array('language' => 'Tamashek', 'locale' => 'tmh', 'localeFallback' => 'tmh'), + 'tn' => array('language' => 'Tswana', 'locale' => 'tn', 'localeFallback' => 'tn'), + 'to' => array('language' => 'Tonga (Tonga Islands)', 'locale' => 'to', 'localeFallback' => 'to'), + 'tog' => array('language' => 'Tonga (Nyasa)', 'locale' => 'tog', 'localeFallback' => 'tog'), + 'tpi' => array('language' => 'Tok Pisin', 'locale' => 'tpi', 'localeFallback' => 'tpi'), + 'tr' => array('language' => 'Turkish', 'locale' => 'tr', 'localeFallback' => 'tr'), + 'ts' => array('language' => 'Tsonga', 'locale' => 'ts', 'localeFallback' => 'ts'), + 'tsi' => array('language' => 'Tsimshian', 'locale' => 'tsi', 'localeFallback' => 'tsi'), + 'tt' => array('language' => 'Tatar', 'locale' => 'tt', 'localeFallback' => 'tt'), + 'tum' => array('language' => 'Tumbuka', 'locale' => 'tum', 'localeFallback' => 'tum'), + 'tup' => array('language' => 'Tupi languages', 'locale' => 'tup', 'localeFallback' => 'tup'), + 'tut' => array('language' => 'Altaic (Other)', 'locale' => 'tut', 'localeFallback' => 'tut'), + 'tvl' => array('language' => 'Tuvalu', 'locale' => 'tvl', 'localeFallback' => 'tvl'), + 'tw' => array('language' => 'Twi', 'locale' => 'tw', 'localeFallback' => 'tw'), + 'ty' => array('language' => 'Tahitian', 'locale' => 'ty', 'localeFallback' => 'ty'), + 'tyv' => array('language' => 'Tuvinian', 'locale' => 'tyv', 'localeFallback' => 'tyv'), + 'udm' => array('language' => 'Udmurt', 'locale' => 'udm', 'localeFallback' => 'udm'), + 'ug' => array('language' => 'Uighur; Uyghur', 'locale' => 'ug', 'localeFallback' => 'ug'), + 'uga' => array('language' => 'Ugaritic', 'locale' => 'uga', 'localeFallback' => 'uga'), + 'uk' => array('language' => 'Ukrainian', 'locale' => 'uk', 'localeFallback' => 'uk'), + 'umb' => array('language' => 'Umbundu', 'locale' => 'umb', 'localeFallback' => 'umb'), + 'ur' => array('language' => 'Urdu', 'locale' => 'ur', 'localeFallback' => 'ur'), + 'us' => array('language' => 'English (United States)', 'locale' => 'en_US', 'localeFallback' => 'en_US'), + 'uz' => array('language' => 'Uzbek', 'locale' => 'uz', 'localeFallback' => 'uz'), + 'vai' => array('language' => 'Vai', 'locale' => 'vai', 'localeFallback' => 'vai'), + 've' => array('language' => 'Venda', 'locale' => 've', 'localeFallback' => 've'), + 'vi' => array('language' => 'Vietnamese', 'locale' => 'vi', 'localeFallback' => 'vi'), + 'vo' => array('language' => 'Volapük', 'locale' => 'vo', 'localeFallback' => 'vo'), + 'vot' => array('language' => 'Votic', 'locale' => 'vot', 'localeFallback' => 'vot'), + 'wa' => array('language' => 'Walloon', 'locale' => 'wa', 'localeFallback' => 'wa'), + 'wak' => array('language' => 'Wakashan languages', 'locale' => 'wak', 'localeFallback' => 'wak'), + 'wal' => array('language' => 'Walamo', 'locale' => 'wal', 'localeFallback' => 'wal'), + 'war' => array('language' => 'Waray', 'locale' => 'war', 'localeFallback' => 'war'), + 'was' => array('language' => 'Washo', 'locale' => 'was', 'localeFallback' => 'was'), + 'wen' => array('language' => 'Sorbian languages', 'locale' => 'wen', 'localeFallback' => 'wen'), + 'wo' => array('language' => 'Wolof', 'locale' => 'wo', 'localeFallback' => 'wo'), + 'xal' => array('language' => 'Kalmyk', 'locale' => 'xal', 'localeFallback' => 'xal'), + 'xh' => array('language' => 'Xhosa', 'locale' => 'xh', 'localeFallback' => 'xh'), + 'yao' => array('language' => 'Yao', 'locale' => 'yao', 'localeFallback' => 'yao'), + 'yap' => array('language' => 'Yapese', 'locale' => 'yap', 'localeFallback' => 'yap'), + 'yi' => array('language' => 'Yiddish', 'locale' => 'yi', 'localeFallback' => 'yi'), + 'yo' => array('language' => 'Yoruba', 'locale' => 'yo', 'localeFallback' => 'yo'), + 'ypk' => array('language' => 'Yupik languages', 'locale' => 'ypk', 'localeFallback' => 'ypk'), + 'za' => array('language' => 'Zhuang; Chuang', 'locale' => 'za', 'localeFallback' => 'za'), + 'zap' => array('language' => 'Zapotec', 'locale' => 'zap', 'localeFallback' => 'zap'), + 'zen' => array('language' => 'Zenaga', 'locale' => 'zen', 'localeFallback' => 'zen'), + 'zh' => array('language' => 'Chinese', 'locale' => 'zh', 'localeFallback' => 'zh'), + 'zh-cn' => array('language' => 'Chinese (China)', 'locale' => 'zh_CN', 'localeFallback' => 'zh'), + 'zh-hk' => array('language' => 'Chinese (Hong Kong SAR)', 'locale' => 'zh_HK', 'localeFallback' => 'zh'), + 'zh-mo' => array('language' => 'Chinese (Macau SAR)', 'locale' => 'zh_MO', 'localeFallback' => 'zh'), + 'zh-sg' => array('language' => 'Chinese (Singapore)', 'locale' => 'zh_SG', 'localeFallback' => 'zh'), + 'zh-tw' => array('language' => 'Chinese (Taiwan)', 'locale' => 'zh_TW', 'localeFallback' => 'zh'), + 'znd' => array('language' => 'Zande', 'locale' => 'znd', 'localeFallback' => 'znd'), + 'zu' => array('language' => 'Zulu', 'locale' => 'zu', 'localeFallback' => 'zu'), + 'zun' => array('language' => 'Zuni', 'locale' => 'zun', 'localeFallback' => 'zun')); - function __construct() - { - parent::__construct(); - } - - function get($language) - { - if (!is_null($language)) - { - return $this->_setLanguage($language); - } - else - { - return $this->_autoLanguage(); - } - } - - function _setLanguage($language = 'eng') - { - if ((!is_null($language)) && (isset($this->_l10nCatalog[$this->_l10nMap[$language]]))) - { - $this->language = $this->_l10nCatalog[$this->_l10nMap[$language]]['language']; - $this->languagePath = array(0 => $this->_l10nCatalog[$language]['locale'], - 1 => $this->_l10nCatalog[$language]['localeFallback'], - 2 => $this->_l10nCatalog[DEFAULT_LANGUAGE]['localeFallback']); - $this->lang = $language; - $this->locale = $this->_l10nCatalog[$this->_l10nMap[$language]]['locale']; - } - else - { - if(defined('DEFAULT_LANGUAGE')) - { - $this->language = $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['language']; - $this->languagePath = array(0 => $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['locale'], - 1 => $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['localeFallback']); - $this->lang = DEFAULT_LANGUAGE; - $this->locale = $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['locale']; - } - } - } - - function _autoLanguage() - { - $_detectableLanguages = split ('[,;]', env('HTTP_ACCEPT_LANGUAGE')); - - foreach ($_detectableLanguages as $langKey => $key) { - if (isset($this->_l10nCatalog[$langKey])) - { - $this->language = $this->_l10nCatalog[$langKey]['language']; - $this->languagePath = array(0 => $this->_l10nCatalog[$langKey]['locale'], - 1 => $this->_l10nCatalog[$langKey]['localeFallback'], - 2 => $this->_l10nCatalog[DEFAULT_LANGUAGE]['localeFallback']); - $this->lang = $langKey; - $this->locale = $this->_l10nCatalog[$langKey]['locale']; - break; - } - } - } + function __construct() { + parent::__construct(); + } + function get($language = null) { + if (!is_null($language)) { + return $this->_setLanguage($language); + } + return $this->_autoLanguage(); + } + function _setLanguage($language = null) { + if ((!is_null($language)) && (isset($this->_l10nCatalog[$this->_l10nMap[$language]]))) { + $this->language = $this->_l10nCatalog[$this->_l10nMap[$language]]['language']; + $this->languagePath = array(0 => $this->_l10nCatalog[$language]['locale'], + 1 => $this->_l10nCatalog[$language]['localeFallback'], + 2 => $this->_l10nCatalog[DEFAULT_LANGUAGE]['localeFallback']); + $this->lang = $language; + $this->locale = $this->_l10nCatalog[$this->_l10nMap[$language]]['locale']; + } elseif (defined('DEFAULT_LANGUAGE')) { + $this->language = $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['language']; + $this->languagePath = array(0 => $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['locale'], + 1 => $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['localeFallback']); + $this->lang = DEFAULT_LANGUAGE; + $this->locale = $this->_l10nCatalog[$this->_l10nMap[DEFAULT_LANGUAGE]]['locale']; + } + } + function _autoLanguage() { + $_detectableLanguages = split ('[,;]', env('HTTP_ACCEPT_LANGUAGE')); + foreach ($_detectableLanguages as $langKey => $key) { + if (isset($this->_l10nCatalog[$langKey])) { + $this->language = $this->_l10nCatalog[$langKey]['language']; + $this->languagePath = array(0 => $this->_l10nCatalog[$langKey]['locale'], + 1 => $this->_l10nCatalog[$langKey]['localeFallback'], + 2 => $this->_l10nCatalog[DEFAULT_LANGUAGE]['localeFallback']); + $this->lang = $langKey; + $this->locale = $this->_l10nCatalog[$langKey]['locale']; + break; + } + } + } } - ?> \ No newline at end of file