cakephp2-php8/cake/libs/l10n.php

1202 lines
112 KiB
PHP
Raw Normal View History

<?php
/* SVN FILE: $Id$ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2005, 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
*/
/**
* Short description for file.
*
* Long description for file
*
* @package cake
* @subpackage cake.cake.libs
* @since CakePHP v 0.10.3.1423
*/
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',
/*Acoli*/ 'ach' => 'ach',
/*Adangme*/ 'ada' => 'ada',
/*Adyghe; Adygei*/ 'ady' => 'ady',
/*Afro-Asiatic (Other)*/ 'afa' => 'afa',
/*Afrihili*/ 'afh' => 'afh',
/*Amharic*/ 'afr' => 'af',
/*Ainu*/ 'ain' => 'ain',
/*Akan*/ 'aka' => 'ak',
/*Akkadian*/ 'akk' => 'akk',
/*Albanian*/ 'alb' => 'sq',
/*Aleut*/ 'ale' => 'ale',
/*Algonquian Languages*/ 'alg' => 'alg',
/*Southern Altai*/ 'alt' => 'alt',
/*Amharic*/ 'amh' => 'am',
/*English, Old*/ 'ang' => 'ang',
/*Apache languages*/ 'apa' => 'apa',
/*Arabic*/ 'ara' => 'ar',
/*Aramaic*/ 'arc' => 'arc',
/*Aragonese*/ 'arg' => 'an',
/*Armenian*/ 'arm' => 'hy',
/*Araucanian*/ 'arn' => 'arn',
/*Arapaho*/ 'arp' => 'arp',
/*Arawak*/ 'arw' => 'arw',
/*Assamese */ 'asm' => 'as',
/*Asturian; Bable*/ 'ast' => 'ast',
/*Athapascan languages*/ 'ath' => 'ath',
/*Australian languages*/ 'aus' => 'aus',
/*Avaric*/ 'ava' => 'av',
/*Avestan*/ 'ave' => 'ae',
/*Awadhi*/ 'awa' => 'awa',
/*Aymara*/ 'aym' => 'ay',
/*Azerbaijani*/ 'aze' => 'az',
/*Banda*/ 'bad' => 'bad',
/*Bamileke languages*/ 'bai' => 'bai',
/*Bashkir*/ 'bak' => 'ba',
/*Bashkir*/ 'bal' => 'bal',
/*Bambara*/ 'bam' => 'bam',
/*Balinese*/ 'ban' => 'ban',
/*Basque*/ 'baq' => 'eu',
/*Basa*/ 'bas' => 'bas',
/*Baltic (Other)*/ 'bat' => 'bat',
/*Beja*/ 'bej' => 'bej',
/*Belarusian*/ 'bel' => 'bel',
/*Bemba*/ 'bem' => 'bem',
/*Bengali*/ 'ben' => 'ben',
/*Berber (Other)*/ 'ber' => 'ber',
/*Bhojpuri*/ 'bho' => 'bho',
/*Bihari*/ 'bih' => 'bih',
/*Bikol*/ 'bik' => 'bik',
/*Bini*/ 'bin' => 'bin',
/*Bislama*/ 'bis' => 'bis',
/*Siksika*/ 'bla' => 'bla',
/*Bantu (Other)*/ 'bnt' => 'bnt',
/*Bosnian*/ 'bos' => 'bs',
/*Braj*/ 'bra' => 'bra',
/*Breton*/ 'bre' => 'br',
/*Batak (Indonesia)*/ 'btk' => 'btk',
/*Buriat*/ 'bua' => 'bua',
/*Buginese*/ 'bug' => 'bug',
/*Bulgarian*/ 'bul' => 'bg',
/*Burmese*/ 'bur' => 'my',
/*Blin; Bilin*/ 'byn' => 'byn',
/*Caddo*/ 'cad' => 'cad',
/*Central American Indian*/ 'cai' => 'cai',
/*Carib*/ 'car' => 'car',
/*Catalan; Valencian*/ 'cat' => 'ca',
/*Caucasian (Other)*/ 'cau' => 'cau',
/*Cebuano*/ 'ceb' => 'ceb',
/*Celtic (Other)*/ 'cel' => 'cel',
/*Chamorro*/ 'cha' => 'cha',
/*Chibcha*/ 'chb' => 'chb',
/*Chechen*/ 'che' => 'ce',
/*Chagatai*/ 'chg' => 'chg',
/*Chinese*/ 'chi' => 'zh',
/*Chuukese*/ 'chk' => 'chk',
/*Mari*/ 'chm' => 'chm',
/*Chinook jargon*/ 'chn' => 'chn',
/*Choctaw*/ 'cho' => 'cho',
/*Chipewyan*/ 'chp' => 'chp',
/*Cherokee*/ 'chr' => 'chr',
/*Church Slavic;
Old Slavonic;
Church Slavonic;*/ 'chu' => 'cu',
/*Chuvash*/ 'chv' => 'cv',
/*Cheyenne*/ 'chy' => 'chy',
/*Chamic languages*/ 'cmc' => 'cmc',
/*Coptic*/ 'cop' => 'cop',
/*Cornish*/ 'cor' => 'kw',
/*Corsican*/ 'cos' => 'co',
/*Creoles and pidgins,
English based (Other)*/ 'cpe' => 'cpe',
/*Creoles and pidgins,
French-based (Other)*/ 'cpf' => 'cpf',
/*Creoles and pidgins*/ 'cpp' => 'cpp',
/*Cree*/ 'cre' => 'cr',
/*Crimean Tatar;
Crimean Turkish*/ 'crh' => 'crh',
/*Creoles and pidgins
(Other)*/ 'crp' => 'crp',
/*Kashubian*/ 'csb' => 'csb',
/*Cushitic (Other)*/ 'cus' => 'cus',
/*Czech*/ 'cze' => 'cs',
/*Dakota*/ 'dak' => 'dak',
/*Danish*/ 'dan' => 'da',
/*Dargwa*/ 'dar' => 'dar',
/*Dayak*/ 'day' => 'day',
/*Delaware*/ 'del' => 'del',
/*Slave (Athapascan)*/ 'den' => 'den',
/*Dogrib*/ 'dgr' => 'dgr',
/*Dinka*/ 'din' => 'din',
/*Divehi*/ 'div' => 'dv',
/*Dogri*/ 'doi' => 'doi',
/*Dravidian (Other)*/ 'dra' => 'dra',
/*Lower Sorbian*/ 'dsb' => 'dsb',
/*Duala*/ 'dua' => 'dua',
/*Dutch, Middle*/ 'dum' => 'dum',
/*Dutch; Flemish*/ 'dut' => 'nl',
/*Dyula*/ 'dyu' => 'dyu',
/*Dzongkha*/ 'dzo' => 'dzo',
/*Efik*/ 'efi' => 'efi',
/*Egyptian (Ancient)*/ 'egy' => 'egy',
/*Ekajuk*/ 'eka' => 'eka',
/*Elamite*/ 'elx' => 'elx',
/*English*/ 'eng' => 'en',
/*English, Middle*/ 'enm' => 'enm',
/*Esperanto*/ 'epo' => 'eo',
/*Estonian*/ 'est' => 'et',
/*Ewe*/ 'ewe' => 'ee',
/*Ewondo*/ 'ewo' => 'ewo',
/*Fang*/ 'fan' => 'fan',
/*Faroese*/ 'fao' => 'fo',
/*Fanti*/ 'fat' => 'fat',
/*Fijian*/ 'fij' => 'fij',
/*Filipino; Pilipino*/ 'fil' => 'fil',
/*Finnish*/ 'fin' => 'fi',
/*Finno-Ugrian (Other)*/ 'fiu' => 'fiu',
/*Fon*/ 'fon' => 'fon',
/*French*/ 'fre' => 'fr',
/*French, Middle*/ 'frm' => 'frm',
/*French, Old*/ 'fro' => 'fro',
/*Frisian*/ 'fry' => 'fy',
/*Fulah*/ 'ful' => 'ff',
/*Friulian*/ 'fur' => 'fur',
/*Ga*/ 'gaa' => 'gaa',
/*Gayo*/ 'gay' => 'gay',
/*Gbaya*/ 'gba' => 'gba',
/*Germanic (Other)*/ 'gem' => 'gem',
/*Georgian*/ 'geo' => 'ka',
/*German*/ 'ger' => 'de',
/*Geez*/ 'gez' => 'gez',
/*Gilbertese*/ 'gil' => 'gil',
/*Gaelic;
Scottish Gaelic*/ 'gla' => 'gd',
/*Irish*/ 'gle' => 'ga',
/*Galician*/ 'glg' => 'gl',
/*Manx*/ 'glv' => 'gv',
/*German, Middle High*/ 'gmh' => 'gmh',
/*German, Old High*/ 'goh' => 'goh',
/*Gondi*/ 'gon' => 'gon',
/*Gorontalo*/ 'gor' => 'gor',
/*Gothic*/ 'got' => 'got',
/*Grebo*/ 'grb' => 'grb',
/*Greek, Ancient*/ 'grc' => 'grc',
/*Greek, Modern*/ 'gre' => 'gre',
/*Guarani*/ 'grn' => 'gn',
/*Gujarati*/ 'guj' => 'gu',
/*Gwich<63>in*/ 'gwi' => 'gwi',
/*Haida*/ 'hai' => 'hai',
/*Haitian;
Haitian Creole*/ 'hat' => 'ht',
/*Hausa*/ 'hau' => 'ha',
/*Hawaiian*/ 'haw' => 'haw',
/*Hebrew*/ 'heb' => 'he',
/*Herero*/ 'her' => 'hz',
/*Hiligaynon*/ 'hil' => 'hil',
/*Himachali*/ 'him' => 'him',
/*Hindi*/ 'hin' => 'hi',
/*Hmong*/ 'hmn' => 'hmn',
/*Hiri Motu*/ 'hmo' => 'ho',
/*Upper Sorbian*/ 'hsb' => 'hsb',
/*Hungarian*/ 'hun' => 'hu',
/*Hupa*/ 'hup' => 'hup',
/*Iban*/ 'iba' => 'iba',
/*Igbo*/ 'ibo' => 'ibo',
/*Icelandic*/ 'ice' => 'is',
/*Ido*/ 'ido' => 'io',
/*Sichuan Yi*/ 'iii' => 'ii',
/*Ijo*/ 'ijo' => 'ijo',
/*Inuktitut*/ 'iku' => 'iku',
/*Interlingue*/ 'ile' => 'ile',
/*Iloko*/ 'ilo' => 'ilo',
/*Interlingua*/ 'ina' => 'ia',
/*Indic (Other)*/ 'inc' => 'inc',
/*Indonesian*/ 'ind' => 'ind',
/*Indo-European (Other)*/ 'ine' => 'ine',
/*Ingush*/ 'inh' => 'inh',
/*Inupiaq*/ 'ipk' => 'ipk',
/*Iranian (Other)*/ 'ira' => 'ira',
/*Iroquoian languages*/ 'iro' => 'iro',
/*Italian*/ 'ita' => 'ita',
/*Javanese*/ 'jav' => 'jav',
/*Lojban*/ 'jbo' => 'jbo',
/*Japanese*/ 'jpn' => 'jpn',
/*Judeo-Persian*/ 'jpr' => 'jpr',
/*Judeo-Arabic*/ 'jrb' => 'jrb',
/*Kara-Kalpak*/ 'kaa' => 'kaa',
/*Kabyle*/ 'kab' => 'kab',
/*Kachin*/ 'kac' => 'kac',
/*Kalaallisut; Greenlandic*/'kal' => 'kal',
/*Kamba*/ 'kam' => 'kam',
/*Kannada*/ 'kan' => 'kan',
/*Karen*/ 'kar' => 'kar',
/*Kashmiri*/ 'kas' => 'kas',
/*Kanuri*/ 'kau' => 'kau',
/*Kawi*/ 'kaw' => 'kaw',
/*Kazakh*/ 'kaz' => 'kaz',
/*Kabardian*/ 'kbd' => 'kbd',
/*Khasi*/ 'kha' => 'kha',
/*Khoisan (Other)*/ 'khi' => 'khi',
/*Khmer*/ 'khm' => 'khm',
/*Khotanese*/ 'kho' => 'kho',
/*Kikuyu; Gikuyu*/ 'kik' => 'kik',
/*Kinyarwanda*/ 'kin' => 'kin',
/*Kirghiz*/ 'kir' => 'kir',
/*Kimbundu*/ 'kmb' => 'kmb',
/*Konkani*/ 'kok' => 'kok',
/*Komi*/ 'kom' => 'kom',
/*Kongo*/ 'kon' => 'koo',
/*Korean*/ 'kor' => 'ko',
/*Kosraean*/ 'kos' => 'kos',
/*Kpelle*/ 'kpe' => 'kpe',
/*Karachay-Balkar*/ 'krc' => 'krc',
/*Kru*/ 'kro' => 'kro',
/*Kurukh*/ 'kru' => 'kru',
/*Kuanyama; Kwanyama*/ 'kua' => 'kua',
/*Kumyk*/ 'kum' => 'kum',
/*Kurdish*/ 'kur' => 'ku',
/*Kutenai*/ 'kut' => 'kut',
/*Ladino*/ 'lad' => 'lad',
/*Lahnda*/ 'lah' => 'lah',
/*Lamba*/ 'lam' => 'lam',
/*Lao*/ 'lao' => 'lo',
/*Latin*/ 'lat' => 'lat',
/*Latvian*/ 'lav' => 'lav',
/*Lezghian*/ 'lez' => 'lez',
/*Limburgan;
Limburger;
Limburgish*/ 'lim' => 'lim',
/*Lingala*/ 'lin' => 'lin',
/*Lithuanian*/ 'lit' => 'lt',
/*Mongo*/ 'lol' => 'lol',
/*Lozi*/ 'loz' => 'loz',
/*Luxembourgish;
Letzeburgesch*/ 'ltz' => 'ltz',
/*Luba-Lulua*/ 'lua' => 'lua',
/*Luba-Katanga*/ 'lub' => 'lub',
/*Ganda*/ 'lug' => 'lug',
/*Luiseno*/ 'lui' => 'lui',
/*Lunda*/ 'lun' => 'lun',
/*Luo (Kenya and Tanzania)*/'luo' => 'luo',
/*Lushai*/ 'lus' => 'lus',
/*Macedonian*/ 'mac' => 'mac',
/*Madurese*/ 'mad' => 'mad',
/*Magahi*/ 'mag' => 'mag',
/*Marshallese*/ 'mah' => 'mah',
/*Maithili*/ 'mai' => 'mai',
/*Makasar*/ 'mak' => 'mak',
/*Malayalam*/ 'mal' => 'mal',
/*Mandingo*/ 'man' => 'man',
/*Maori*/ 'mao' => 'mi',
/*Austronesian (Other)*/ 'map' => 'map',
/*Marathi*/ 'mar' => 'mar',
/*Masai*/ 'mas' => 'mas',
/*Malay*/ 'may' => 'ms',
/*Moksha*/ 'mdf' => 'mdf',
/*Mandar*/ 'mdr' => 'mdr',
/*Mende*/ 'men' => 'men',
/*Irish, Middle*/ 'mga' => 'mga',
/*Micmac*/ 'mic' => 'mic',
/*Minangkabau*/ 'min' => 'min',
/*Mon-Khmer (Other)*/ 'mkh' => 'mkh',
/*Malagasy*/ 'mlg' => 'mlg',
/*Maltese*/ 'mlt' => 'mlt',
/*Manchu*/ 'mnc' => 'mnc',
/*Manipuri*/ 'mni' => 'mni',
/*Manobo languages*/ 'mno' => 'mno',
/*Mohawk*/ 'moh' => 'moh',
/*Moldavian*/ 'mol' => 'mol',
/*Mongolian*/ 'mon' => 'mon',
/*Mossi*/ 'mos' => 'mos',
/*unda languages*/ 'mun' => 'mun',
/*Creek*/ 'mus' => 'mus',
/*Mirandese*/ 'mwl' => 'mwl',
/*Marwari*/ 'mwr' => 'mwr',
/*Mayan languages*/ 'myn' => 'myn',
/*Erzya*/ 'myv' => 'myv',
/*Nahuatl*/ 'nah' => 'nah',
/*North American Indian*/ 'nai' => 'nai',
/*Neapolitan*/ 'nap' => 'nap',
/*Nauru*/ 'nau' => 'nau',
/*Navajo; Navaho*/ 'nav' => 'nav',
/*South Ndebele*/ 'nbl' => 'nbl',
/*North Ndebele*/ 'nde' => 'nde',
/*Ndonga*/ 'ndo' => 'ndo',
/*Low German; Low Saxon*/ 'nds' => 'nds',
/*Nepali*/ 'nep' => 'nep',
/*Newari; Nepal Bhasa*/ 'new' => 'new',
/*Nias*/ 'nia' => 'nia',
/*Niger-Kordofanian*/ 'nic' => 'nic',
/*Niuean*/ 'niu' => 'niu',
/*Norwegian Nynorsk*/ 'nno' => 'nno',
/*Norwegian Bokm<6B>l*/ 'nob' => 'nob',
/*Nogai*/ 'nog' => 'nog',
/*Norse, Old*/ 'non' => 'non',
/*Norwegian*/ 'nor' => 'nor',
/*Sotho, Northern*/ 'nso' => 'nso',
/*Nubian languages'*/ 'nub' => 'nub',
/*Classical Newari;
Old Newari;
Classical Nepal Bhasa*/ 'nwc' => 'nwc',
/*Chichewa; Chewa; Nyanja*/ 'nya' => 'nya',
/*Nyamwezi*/ 'nym' => 'nym',
/*Nyankole*/ 'nyn' => 'nyn',
/*Nyoro*/ 'nyo' => 'nyo',
/*Nzima*/ 'nzi' => 'nzi',
/*Occitan; Proven<65>al*/ 'oci' => 'oci',
/*Ojibwa*/ 'oji' => 'oji',
/*Oriya*/ 'ori' => 'ori',
/*Oromo*/ 'orm' => 'orm',
/*Osage*/ 'osa' => 'osa',
/*Ossetian; Ossetic*/ 'oss' => 'oss',
/*Turkish, Ottoman*/ 'ota' => 'ota',
/*Otomian languages*/ 'oto' => 'oto',
/*Papuan (Other)*/ 'paa' => 'paa',
/*Pangasinan*/ 'pag' => 'pag',
/*Pahlavi*/ 'pal' => 'pal',
/*Pampanga*/ 'pam' => 'pam',
/*Panjabi; Punjabi*/ 'pan' => 'pan',
/*Papiamento*/ 'pap' => 'pap',
/*Palauan*/ 'pau' => 'pau',
/*Persian, Old*/ 'peo' => 'peo',
/*Persian*/ 'per' => 'fa',
/*Philippine (Other)*/ 'phi' => 'phi',
/*Phoenician*/ 'phn' => 'phn',
/*Pali*/ 'pli' => 'pli',
/*Polish*/ 'pol' => 'pol',
/*Pohnpeian*/ 'pon' => 'pon',
/*Portuguese*/ 'por' => 'por',
/*Prakrit languages*/ 'pra' => 'pra',
/*Proven<65>al, Old*/ 'pro' => 'pro',
/*Pushto*/ 'pus' => 'pus',
/*Quechua*/ 'que' => 'que',
/*Rajasthani*/ 'raj' => 'raj',
/*Rapanui*/ 'rap' => 'rap',
/*Rarotongan*/ 'rar' => 'rar',
/*Romance (Other)*/ 'roa' => 'roa',
/*Raeto-Romance*/ 'roh' => 'roh',
/*Romany*/ 'rom' => 'rom',
/*Romanian*/ 'rum' => 'ro',
/*Rundi*/ 'run' => 'rn',
/*Aromanian,
Arumanian,
Macedo-Romanian*/ 'rup' => 'rup',
/*Russian*/ 'rus' => 'ru',
/*Sandawe*/ 'sad' => 'sad',
/*Sango*/ 'sag' => 'sg',
/*Yakut*/ 'sah' => 'sah',
/*South American Indian*/ 'sai' => 'sai',
/*Salishan languages*/ 'sal' => 'sal',
/*Samaritan Aramaic*/ 'sam' => 'sam',
/*Sanskrit*/ 'san' => 'sa',
/*Sasak*/ 'sas' => 'sas',
/*Santali*/ 'sat' => 'sat',
/*Serbian*/ 'scc' => 'sr',
/*Sicilian*/ 'scn' => 'scn',
/*Scots*/ 'sco' => 'sco',
/*Croatian*/ 'scr' => 'scr',
/*Selkup*/ 'sel' => 'sel',
/*Semitic (Other)*/ 'sem' => 'sem',
/*Irish, Old*/ 'sga' => 'sga',
/*Shan*/ 'shn' => 'shn',
/*Sidamo*/ 'sid' => 'sid',
/*Sinhala; Sinhalese*/ 'sin' => 'si',
/*Siouan languages*/ 'sio' => 'sio',
/*Sino-Tibetan (Other)*/ 'sit' => 'sit',
/*Slavic (Other)*/ 'sla' => 'sla',
/*Slovak*/ 'slo' => 'sk',
/*Slovenian*/ 'slv' => 'sl',
/*Southern Sami*/ 'sma' => 'sma',
/*Northern Sami*/ 'sme' => 'se',
/*Sami languages (Other)*/ 'smi' => 'smi',
/*Lule Sami*/ 'smj' => 'smj',
/*Inari Sami*/ 'smn' => 'smn',
/*Samoan*/ 'smo' => 'sm',
/*Skolt Sami*/ 'sms' => 'sms',
/*Shona*/ 'sna' => 'sn',
/*Sindhi*/ 'snd' => 'sd',
/*Soninke*/ 'snk' => 'snk',
/*Sogdian*/ 'sog' => 'sog',
/*Somali*/ 'som' => 'so',
/*Songhai*/ 'son' => 'son',
/*Sotho, Southern*/ 'sot' => 'st',
/*Spanish; Castilian*/ 'spa' => 'es',
/*Sardinian*/ 'srd' => 'sc',
/*Serer*/ 'srr' => 'srr',
/*Nilo-Saharan (Other)*/ 'ssa' => 'ssa',
/*Swati*/ 'ssw' => 'ss',
/*Sukuma*/ 'suk' => 'suk',
/*Sundanese*/ 'sun' => 'su',
/*Susu*/ 'sus' => 'sus',
/*Sumerian*/ 'sux' => 'sux',
/*Swahili*/ 'swa' => 'swa',
/*Swedish*/ 'swe' => 'swe',
/*Syriac*/ 'syr' => 'syr',
/*Tahitian*/ 'tah' => 'ty',
/*Tai (Other)*/ 'tai' => 'tai',
/*Tamil*/ 'tam' => 'ta',
/*Tatar*/ 'tat' => 'tt',
/*Telugu*/ 'tel' => 'te',
/*Timne*/ 'tem' => 'tem',
/*Tereno*/ 'ter' => 'ter',
/*Tetum*/ 'tet' => 'tet',
/*Tajik*/ 'tgk' => 'tg',
/*Tagalog*/ 'tgl' => 'tl',
/*Thai*/ 'tha' => 'th',
/*Tibetan*/ 'tib' => 'bo',
/*Tigre*/ 'tig' => 'tig',
/*Tigrinya*/ 'tir' => 'ti',
/*Tiv*/ 'tiv' => 'tiv',
/*Tokelau*/ 'tkl' => 'tkl',
/*Klingon; tlhlngan-Hol*/ 'tlh' => 'tlh',
/*Tlingit*/ 'tli' => 'tli',
/*Tamashek*/ 'tmh' => 'tmh',
/*Tonga (Nyasa)*/ 'tog' => 'tog',
/*Tonga (Tonga Islands)*/ 'ton' => 'to',
/*Tok Pisin'*/ 'tpi' => 'tpi',
/*Tsimshian*/ 'tsi' => ' tsi',
/*Tswana*/ 'tsn' => 'tn',
/*Tsonga*/ 'tso' => 'ts',
/*Turkmen*/ 'tuk' => 'tk',
/*Tumbuka*/ 'tum' => 'tum',
/*Tupi languages*/ 'tup' => 'tup',
/*Turkish*/ 'tur' => 'tr',
/*Altaic (Other)*/ 'tut' => 'tut',
/*Tuvalu*/ 'tvl' => 'tvl',
/*Twi*/ 'twi' => 'tw',
/*Tuvinian*/ 'tyv' => 'tyv',
/*Udmurt*/ 'udm' => 'udm',
/*Ugaritic*/ 'uga' => 'uga',
/*Uighur; Uyghur*/ 'uig' => 'ug',
/*Ukrainian*/ 'ukr' => 'uk',
/*Umbundu*/ 'umb' => 'umb',
/*Urdu*/ 'urd' => 'ur',
/*Uzbek*/ 'uzb' => 'uz',
/*Vai*/ 'vai' => 'vai',
/*Venda*/ 'ven' => 've',
/*Vietnamese*/ 'vie' => 'vi',
/*Volap<61>k*/ 'vol' => 'vo',
/*Votic*/ 'vot' => 'vot',
/*Wakashan languages*/ 'wak' => 'wak',
/*Walamo*/ 'wal' => 'wal',
/*Waray*/ 'war' => 'war',
/*Washo*/ 'was' => 'was',
/*Welsh*/ 'wel' => 'cy',
/*Sorbian languages*/ 'wen' => 'was',
/*Walloon*/ 'wln' => 'wa',
/*Wolof*/ 'wol' => 'wo',
/*Kalmyk*/ 'xal' => 'xal',
/*Xhosa*/ 'xho' => 'xh',
/*Yao*/ 'yao' => 'yao',
/*Yapese*/ 'yap' => 'yap',
/*Yiddish*/ 'yid' => 'yi',
/*Yoruba*/ 'yor' => 'yo',
/*Yupik languages*/ 'ypk' => 'ypk',
/*Zapotec*/ 'zap' => 'zap',
/*Zenaga*/ 'zen' => 'zen',
/*Zhuang; Chuang*/ 'zha' => 'za',
/*Zande*/ 'znd' => 'znd',
/*Zulu*/ 'zul' => 'zu',
/*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<63>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<6B>l', '3iso639' => 'nob', '2iso639' => 'no', 'locale' => 'no', 'localeFallback' => 'no'),
'nob' => array('language' => 'Norwegian Bokm<6B>l; Bokm<6B>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<65>al', '3iso639' => 'oci', '2iso639' => 'oc', 'locale' => 'oc', 'localeFallback' => 'oc'),
'oci' => array('language' => 'Occitan; Proven<65>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<65>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<61>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'));
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;
}
}
}
}
?>