Documentation for this module may be created at Module:languages/data2/doc

local u = mw.ustring.char

-- UTF-8 encoded strings for some commonly-used diacritics
local GRAVE     = u(0x0300)
local ACUTE     = u(0x0301)
local CIRC      = u(0x0302)
local TILDE     = u(0x0303)
local MACRON    = u(0x0304)
local BREVE     = u(0x0306)
local DOTABOVE  = u(0x0307)
local DIAER     = u(0x0308)
local CARON     = u(0x030C)
local DGRAVE    = u(0x030F)
local INVBREVE  = u(0x0311)
local DOTBELOW  = u(0x0323)
local RINGBELOW = u(0x0325)
local CEDILLA   = u(0x0327)

local m = {}

m["aa"] = {
	canonicalName = "Afar",
	otherNames = {"Qafar"},
	type = "regular",
	scripts = {"Latn"},
	family = "cus",
}

m["ab"] = {
	canonicalName = "Abkhaz",
	otherNames = {"Abkhazian", "Abxazo"},
	type = "regular",
	scripts = {"Cyrl"},
	family = "cau-nwc",
	translit_module = "ab-translit",
	entry_name = {
		from = {GRAVE, ACUTE},
		to   = {}} ,
}

m["ae"] = {
	canonicalName = "Avestan",
	otherNames = {"Zend", "Old Bactrian"},
	type = "regular",
	scripts = {"Avst", "Gujr"},
	family = "ira",
	translit_module = "Avst-translit",
}

m["af"] = {
	canonicalName = "Afrikaans",
	type = "regular",
	scripts = {"Latn", "Arab"},
	family = "gmw",
	ancestors = {"nl"},
	sort_key = {
		from = {"[äáâà]", "[ëéêè]", "[ïíîì]", "[öóôò]", "[üúûù]", "[ÿýŷỳ]", "^-", "'"},
		to   = {"a"	 , "e"	, "i"	, "o"	, "u"  , "y" }} ,
}

m["ak"] = {
	canonicalName = "Akan",
	otherNames = {"Twi-Fante"},
	type = "regular",
	scripts = {"Latn"},
	family = "alv-kwa",
}

m["am"] = {
	canonicalName = "Amharic",
	type = "regular",
	scripts = {"Ethi"},
	family = "sem-eth",
	translit_module = "Ethi-translit",
}

m["an"] = {
	canonicalName = "Aragonese",
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
}

m["ar"] = {
	canonicalName = "Arabic",
	otherNames = {"Modern Standard Arabic", "Standard Arabic", "Literary Arabic", "Classical Arabic"},
	type = "regular",
	scripts = {"Arab"},
	family = "sem-arb",
	entry_name = {
		from = {u(0x0671), u(0x064B), u(0x064C), u(0x064D), u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652), u(0x0670), u(0x0640)},
		to   = {u(0x0627)}},
	translit_module = "ar-translit",
}

m["as"] = {
	canonicalName = "Assamese",
	type = "regular",
	scripts = {"Beng"},
	family = "inc",
}

m["av"] = {
	canonicalName = "Avar",
	otherNames = {"Avaric"},
	type = "regular",
	scripts = {"Cyrl"},
	family = "cau-nec",
	translit_module = "av-translit",
}

m["ay"] = {
	canonicalName = "Aymara",
	otherNames = {"Southern Aymara", "Central Aymara"},
	type = "regular",
	scripts = {"Latn"},
	family = "sai-aym",
}

m["az"] = {
	canonicalName = "Azeri",
	otherNames = {"Azerbaijani", "Azari", "Azeri Turkic", "Azerbaijani Turkic", "North Azerbaijani", "South Azerbaijani"},
	type = "regular",
	scripts = {"Latn", "Cyrl", "fa-Arab"},
	family = "trk",
}

m["ba"] = {
	canonicalName = "Bashkir",
	type = "regular",
	scripts = {"Cyrl"},
	family = "trk",
	translit_module = "ba-translit",
}

m["be"] = {
	canonicalName = "Belarusian",
	otherNames = {"Belorussian", "Belarusan", "Bielorussian", "Byelorussian", "Belarussian", "White Russian"},
	type = "regular",
	scripts = {"Cyrl"},
	family = "zle",
	ancestors = {"orv"},
	translit_module = "be-translit",
	sort_key = {
		from = {"Ё", "ё"},
		to   = {"Е" , "е"}},
	entry_name = {
		from = {GRAVE, ACUTE},
		to   = {}} ,
}

m["bg"] = {
	canonicalName = "Bulgarian",
	type = "regular",
	scripts = {"Cyrl"},
	family = "zls",
	translit_module = "bg-translit",
	entry_name = {
		from = {"Ѐ", "ѐ", "Ѝ", "ѝ", GRAVE, ACUTE},
		to   = {"Е", "е", "И", "и"}} ,
}

m["bh"] = {
	canonicalName = "Bihari",
	type = "regular",
	scripts = {"Deva"},
	family = "inc",
}

m["bi"] = {
	canonicalName = "Bislama",
	type = "regular",
	scripts = {"Latn"},
	family = "crp",
	ancestors = {"en"},
}

m["bm"] = {
	canonicalName = "Bambara",
	otherNames = {"Bamanankan"},
	type = "regular",
	scripts = {"Latn"},
	family = "dmn",
}

m["bn"] = {
	canonicalName = "Bengali",
	otherNames = {"Bangla"},
	type = "regular",
	scripts = {"Beng"},
	family = "inc",
}

m["bo"] = {
	canonicalName = "Tibetan",
	type = "regular",
	scripts = {"Tibt"},
	family = "tbq",
	translit_module = "bo-translit",
}

m["br"] = {
	canonicalName = "Breton",
	type = "regular",
	scripts = {"Latn"},
	family = "cel-bry",
	ancestors = {"xbm"},
}

m["ca"] = {
	canonicalName = "Catalan",
	otherNames = {"Valencian"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"à", "[èé]", "[íï]", "[òó]", "[úü]", "ç", "l·l"},
		to   = {"a", "e"   , "i"   , "o"   , "u"   , "c", "ll" }} ,
}

m["ce"] = {
	canonicalName = "Chechen",
	type = "regular",
	scripts = {"Cyrl"},
	family = "cau-nec",
	translit_module = "ce-translit",
}

m["ch"] = {
	canonicalName = "Chamorro",
	otherNames = {"Chamoru"},
	type = "regular",
	scripts = {"Latn"},
	family = "poz-sus",
}

m["co"] = {
	canonicalName = "Corsican",
	otherNames = {"Corsu"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
}

m["cr"] = {
	canonicalName = "Cree",
	type = "regular",
	scripts = {"Cans", "Latn"},
	family = "alg",
}

m["cs"] = {
	canonicalName = "Czech",
	type = "regular",
	scripts = {"Latn"},
	family = "zlw",
	sort_key = {
		from = {"á", "é", "í", "ó", "[úů]", "ý"},
		to   = {"a", "e", "i", "o", "u"   , "y"}} ,
}

m["cu"] = {
	canonicalName = "Old Church Slavonic",
	otherNames = {"Old Church Slavic"},
	type = "regular",
	scripts = {"Cyrs", "Glag"},
	family = "zls",
	translit_module = "Cyrs-Glag-translit",
	entry_name = {
		from = {u(0x0484)}, -- kamora
		to   = {}},
	sort_key = {
		from = {"оу", "є"},
		to   = {"у" , "е"}} ,
}

m["cv"] = {
	canonicalName = "Chuvash",
	type = "regular",
	scripts = {"Cyrl"},
	family = "trk",
	translit_module = "cv-translit",
}

m["cy"] = {
	canonicalName = "Welsh",
	type = "regular",
	scripts = {"Latn"},
	family = "cel-bry",
	ancestors = {"wlm"},
	sort_key = {
		from = {"[âáàä]", "[êéèë]", "[îíìï]", "[ôóòö]", "[ûúùü]", "[ŵẃẁẅ]", "[ŷýỳÿ]", "'"},
		to   = {"a"	 , "e"	 , "i"	 , "o"	 , "u"	 , "w"	 , "y"	 }} ,
}

m["da"] = {
	canonicalName = "Danish",
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
}

m["de"] = {
	canonicalName = "German",
	otherNames = {"High German", "New High German", "Deutsch"}, -- the last name is indeed also used in English
	type = "regular",
	scripts = {"Latn", "Latf"},
	family = "gmw",
	ancestors = {"gmh"},
	sort_key = {
		from = {"[äàáâå]", "[ëèéê]", "[ïìíî]", "[öòóô]", "[üùúû]", "ß" },
		to   = {"a"	  , "e"	 , "i"	 , "o"	 , "u"	 , "ss"}} ,
}

m["dv"] = {
	canonicalName = "Dhivehi",
	otherNames = {"Divehi", "Mahal", "Mahl", "Maldivian"},
	type = "regular",
	scripts = {"Thaa"},
	family = "inc",
	translit_module = "dv-translit",
}

m["dz"] = {
	canonicalName = "Dzongkha",
	type = "regular",
	scripts = {"Tibt"},
	family = "tbq",
	translit_module = "bo-translit",
}

m["ee"] = {
	canonicalName = "Ewe",
	type = "regular",
	scripts = {"Latn"},
	family = "alv",
}

m["el"] = {
	canonicalName = "Greek",
	otherNames = {"Modern Greek", "Neo-Hellenic"},
	type = "regular",
	scripts = {"Grek"},
	family = "grk",
	translit_module = "el-translit",
	sort_key = {  -- Keep this synchronized with grc, cpg
		from = {"[ᾳάᾴὰᾲᾶᾷἀᾀἄᾄἂᾂἆᾆἁᾁἅᾅἃᾃἇᾇ]", "[έὲἐἔἒἑἕἓ]", "[ῃήῄὴῂῆῇἠᾐἤᾔἢᾒἦᾖἡᾑἥᾕἣᾓἧᾗ]", "[ίὶῖἰἴἲἶἱἵἳἷϊΐῒῗ]", "[όὸὀὄὂὁὅὃ]", "[ύὺῦὐὔὒὖὑὕὓὗϋΰῢῧ]", "[ῳώῴὼῲῶῷὠᾠὤᾤὢᾢὦᾦὡᾡὥᾥὣᾣὧᾧ]", "ῥ", "ς"},
		to   = {"α"						, "ε"		 , "η"						, "ι"				, "ο"		 , "υ"				, "ω"						, "ρ", "σ"}} ,
}

m["en"] = {
	canonicalName = "English",
	otherNames = {"Modern English", "New English", "Hawaiian Creole English", "Hawai'ian Creole English", "Hawaiian Creole", "Hawai'ian Creole", "Polari", "Yinglish"}, -- all but the first three are names and alt names of subsumed dialects which once had ISO codes
	type = "regular",
	scripts = {"Latn", "Shaw", "Dsrt"}, -- last two are rare but probably attested; entries in them might require community approval, but it's good for the script codes not to be orphans
	family = "gmw",
	ancestors = {"enm"},
	sort_key = {
		from = {"[äàáâåā]", "[ëèéêē]", "[ïìíîī]", "[öòóôō]", "[üùúûū]", "æ" , "œ" , "[çč]", "ñ", "'"},
		to   = {"a"       , "e"      , "i"      , "o"      , "u"      , "ae", "oe", "c"   , "n"}},
	wikimedia_codes = {"en", "simple"},
}

m["eo"] = {
	canonicalName = "Esperanto",
	type = "regular",
	scripts = {"Latn"},
	family = "art",
	sort_key = {
		from = {"[áà]", "[éè]", "[íì]", "[óò]", "[úù]", "[ĉ]", "[ĝ]", "[ĥ]", "[ĵ]", "[ŝ]", "[ŭ]"},
		to   = {"a"	   , "e"  , "i"  , "o"  , "u", "cĉ", "gĉ", "hĉ", "jĉ", "sĉ", "uĉ"}} ,
}

m["es"] = {
	canonicalName = "Spanish",
	otherNames = {"Castilian"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"á", "é", "í", "ó", "[úü]", "ç", "ñ"},
		to   = {"a", "e", "i", "o", "u"   , "c", "n"}} ,
}

m["et"] = {
	canonicalName = "Estonian",
	type = "regular",
	scripts = {"Latn"},
	family = "fiu-fin",
	ancestors = {"fiu-fin-pro"},
}

m["eu"] = {
	canonicalName = "Basque",
	otherNames = {"Euskara"},
	type = "regular",
	scripts = {"Latn"},
	family = "euq",
}

m["fa"] = {
	canonicalName = "Persian",
	otherNames = {"Farsi", "New Persian", "Modern Persian", "Western Persian", "Iranian Persian", "Eastern Persian", "Dari"},
	type = "regular",
	scripts = {"fa-Arab"},
	family = "ira",
	entry_name = {
		from = {u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652)},
		to   = {}} ,
}

m["ff"] = {
	canonicalName = "Fula",
	otherNames = {"Adamawa Fulfulde", "Bagirmi Fulfulde", "Borgu Fulfulde", "Central-Eastern Niger Fulfulde", "Fulani", "Fulfulde", "Maasina Fulfulde", "Nigerian Fulfulde", "Pular", "Pulaar", "Western Niger Fulfulde"}, -- Maasina, etc are dialects, subsumed into this code
	type = "regular",
	scripts = {"Latn"},
	family = "alv-sng",
}

m["fi"] = {
	canonicalName = "Finnish",
	otherNames = {"Suomi"},
	type = "regular",
	scripts = {"Latn"},
	family = "fiu-fin",
	ancestors = {"fiu-fin-pro"},
	entry_name = {
		from = {"ˣ"},  -- Used to indicate gemination of the next consonant
		to   = {}},
	sort_key = {
		from = {"[áàâã]", "[éèêẽ]", "[íìîĩ]", "[óòôõ]", "[úùûũ]", "[ýỳŷüű]", "[øõő]", "æ" , "œ" , "[čç]", "š", "ž", "ß" , "[':]"},
		to   = {"a"	 , "e"	 , "i"	 , "o"	 , "u"	 ,  "y"	 , "ö"	, "ae", "oe", "c"   , "s", "z", "ss"}} ,
}

m["fj"] = {
	canonicalName = "Fijian",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-occ",
}

m["fo"] = {
	canonicalName = "Faroese",
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
}

m["fr"] = {
	canonicalName = "French",
	otherNames = {"Modern French"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	ancestors = {"frm"},
	sort_key = {
		from = {"[áàâä]", "[éèêë]", "[íìîï]", "[óòôö]", "[úùûü]", "[ýỳŷÿ]", "ç", "æ" , "œ" , "'"},
		to   = {"a"	 , "e"	 , "i"	 , "o"	 , "u"	 , "y"	 , "c", "ae", "oe"}} ,
}

m["fy"] = {
	canonicalName = "West Frisian",
	otherNames = {"Western Frisian", "Frisian"},
	type = "regular",
	scripts = {"Latn"},
	family = "gmw-fri",
}

m["ga"] = {
	canonicalName = "Irish",
	otherNames = {"Irish Gaelic"},
	type = "regular",
	scripts = {"Latn"},
	family = "cel-gae",
	ancestors = {"mga"},
	sort_key = {
		from = {"á", "é", "í", "ó", "ú", "ý", "ḃ" , "ċ" , "ḋ" , "ḟ" , "ġ" , "ṁ" , "ṗ" , "ṡ" , "ṫ" },
		to   = {"a", "e", "i", "o", "u", "y", "bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"}} ,
}

m["gd"] = {
	canonicalName = "Scottish Gaelic",
	otherNames = {"Gàidhlig", "Highland Gaelic", "Scots Gaelic", "Scottish"},
	type = "regular",
	scripts = {"Latn"},
	family = "cel-gae",
	ancestors = {"mga"},
	sort_key = {
		from = {"[áà]", "[éè]", "[íì]", "[óò]", "[úù]", "[ýỳ]"},
		to   = {"a"   , "e"   , "i"   , "o"   , "u"   , "y"   }} ,
}

m["gl"] = {
	canonicalName = "Galician",
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
}

m["gn"] = {
	canonicalName = "Guaraní",
	type = "regular",
	scripts = {"Latn"},
	family = "tup",
}

m["gu"] = {
	canonicalName = "Gujarati",
	type = "regular",
	scripts = {"Gujr"},
	family = "inc",
}

m["gv"] = {
	canonicalName = "Manx",
	otherNames = {"Manx Gaelic"},
	type = "regular",
	scripts = {"Latn"},
	family = "cel-gae",
	ancestors = {"mga"},
	sort_key = {
		from = {"ç", "-"},
		to   = {"c"}} ,
}

m["ha"] = {
	canonicalName = "Hausa",
	type = "regular",
	scripts = {"Latn", "Arab"},
	family = "cdc-wst",
}

m["he"] = {
	canonicalName = "Hebrew",
	otherNames = {"Ivrit"},
	type = "regular",
	scripts = {"Hebr"},
	family = "sem-can",
	entry_name = {
		from = {"[" .. u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7) .. "]"},
		to   = {}} ,
}

m["hi"] = {
	canonicalName = "Hindi",
	type = "regular",
	scripts = {"Deva"},
	family = "inc",
	translit_module = "hi-translit",
}

m["ho"] = {
	canonicalName = "Hiri Motu",
	otherNames = {"Pidgin Motu", "Police Motu"},
	type = "regular",
	scripts = {"Latn"},
	family = "crp",
	ancestors = {"meu"},
}

m["ht"] = {
	canonicalName = "Haitian Creole",
	otherNames = {"Creole", "Haitian", "Kreyòl"},
	type = "regular",
	scripts = {"Latn"},
	family = "crp",
}

m["hu"] = {
	canonicalName = "Hungarian",
	otherNames = {"Magyar"},
	type = "regular",
	scripts = {"Latn"},
	family = "fiu-ugr",
	sort_key = {
		from = {"á", "é", "í", "ó", "ú", "ő", "ű"},
		to   = {"a", "e", "i", "o", "u", "ö", "ü"}} ,
}

m["hy"] = {
	canonicalName = "Armenian",
	otherNames = {"Modern Armenian", "Eastern Armenian", "Western Armenian"},
	type = "regular",
	scripts = {"Armn"},
	family = "hyx",
	translit_module = "Armn-translit",
	sort_key = {
		from = {"ու", "և", "եւ"},
		to   = {"ւ", "եվ", "եվ"}},
	entry_name = {
		from = {"՞", "՜", "՛", "՟", "և", "<sup>յ</sup>", "ՙ", "̈", "յ̵"},
		to   = {"", "", "", "", "եւ", "յ", "", "", "յ"}} ,
}

m["hz"] = {
	canonicalName = "Herero",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["ia"] = {
	canonicalName = "Interlingua",
	type = "regular",
	scripts = {"Latn"},
	family = "art",
}

m["id"] = {
	canonicalName = "Indonesian",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-mly",
}

m["ie"] = {
	canonicalName = "Interlingue",
	otherNames = {"Occidental"},
	type = "regular",
	scripts = {"Latn"},
	family = "art",
}

m["ig"] = {
	canonicalName = "Igbo",
	type = "regular",
	scripts = {"Latn"},
	family = "nic-bco",
}

m["ii"] = {
	canonicalName = "Sichuan Yi",
	type = "regular",
	scripts = {"Yiii"},
	family = "tbq",
}

m["ik"] = {
	canonicalName = "Inupiak",
	otherNames = {"Inupiaq", "Iñupiaq", "Inupiatun"},
	type = "regular",
	scripts = {"Latn"},
	family = "esx-inu",
}

m["io"] = {
	canonicalName = "Ido",
	type = "regular",
	scripts = {"Latn"},
	family = "art",
}

m["is"] = {
	canonicalName = "Icelandic",
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
	ancestors = {"non"},
}

m["it"] = {
	canonicalName = "Italian",
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"[àáâäå]", "[èéêë]", "[ìíîï]", "[òóôö]", "[ùúûü]"},
		to   = {"a"	  , "e"	 , "i"	 , "o"	 , "u"	 }} ,
}

m["iu"] = {
	canonicalName = "Inuktitut",
	otherNames = {"Eastern Canadian Inuktitut", "Eastern Canadian Inuit", "Western Canadian Inuktitut", "Western Canadian Inuit", "Western Canadian Inuktun", "Inuinnaq", "Inuinnaqtun", "Inuvialuk", "Inuvialuktun", "Nunavimmiutit", "Nunatsiavummiut", "Aivilimmiut", "Natsilingmiut", "Kivallirmiut", "Siglit", "Siglitun"},
	type = "regular",
	scripts = {"Cans", "Latn"},
	family = "esx-inu",
	translit_module = "iu-translit",
}

m["ja"] = {
	canonicalName = "Japanese",
	otherNames = {"Modern Japanese", "Nipponese", "Nihongo"},
	type = "regular",
	scripts = {"Jpan", "Latn", "Hira"},
	family = "jpx",
}

m["jv"] = {
	canonicalName = "Javanese",
	type = "regular",
	scripts = {"Latn", "Java"},
	family = "poz-sus",
}

m["ka"] = {
	canonicalName = "Georgian",
	otherNames = {"Kartvelian"},
	type = "regular",
	scripts = {"Geor", "Geok"},
	family = "ccs",
	translit_module = "Geor-translit",
	entry_name = {
		from = {"̂"},
		to   = {""}},
}

m["kg"] = {
	canonicalName = "Kongo",
	otherNames = {"Kikongo", "Koongo", "Laari", "San Salvador Kongo", "Yombe"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["ki"] = {
	canonicalName = "Kikuyu",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["kj"] = {
	canonicalName = "Kwanyama",
	otherNames = {"Kuanyama", "Oshikwanyama"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["kk"] = {
	canonicalName = "Kazakh",
	type = "regular",
	scripts = {"Cyrl", "Latn", "Arab", "kk-Arab"},
	family = "trk",
	translit_module = "kk-translit",
}

m["kl"] = {
	canonicalName = "Greenlandic",
	otherNames = {"Kalaallisut"},
	type = "regular",
	scripts = {"Latn"},
	family = "esx-inu",
}

m["km"] = {
	canonicalName = "Khmer",
	otherNames = {"Cambodian"},
	type = "regular",
	scripts = {"Khmr"},
	family = "mkh",
	translit_module = "km-translit",
}

m["kn"] = {
	canonicalName = "Kannada",
	type = "regular",
	scripts = {"Knda"},
	family = "dra",
	translit_module = "kn-translit",
}

m["ko"] = {
	canonicalName = "Korean",
	otherNames = {"Modern Korean"},
	type = "regular",
	scripts = {"Kore"},
	family = "qfa-kor",
	translit_module = "ko-translit",
}

m["kr"] = {
	canonicalName = "Kanuri",
	otherNames = {"Kanembu", "Bilma Kanuri", "Central Kanuri", "Manga Kanuri", "Tumari Kanuri"},
	type = "regular",
	scripts = {"Latn"},
	family = "ssa",
}

m["ks"] = {
	canonicalName = "Kashmiri",
	type = "regular",
	scripts = {"ks-Arab", "Deva"},
	family = "iir-dar",
}

m["ku"] = {
	canonicalName = "Kurdish",
	type = "regular",
	scripts = {"Latn", "ku-Arab"},
	family = "ira",
}

m["kw"] = {
	canonicalName = "Cornish",
	type = "regular",
	scripts = {"Latn"},
	family = "cel-bry",
	ancestors = {"cnx"},
}

m["ky"] = {
	canonicalName = "Kyrgyz",
	otherNames = {"Kirghiz", "Kirgiz"},
	type = "regular",
	scripts = {"Cyrl", "Latn", "Arab"},
	family = "trk",
	translit_module = "ky-translit",
}

m["la"] = {
	canonicalName = "Latin",
	type = "regular",
	scripts = {"Latn"},
	family = "itc",
	ancestors = {"itc-ola"},
	entry_name = {
		from = {"[ĀĂ]", "[āă]", "[ĒĔ]", "[ēĕë]", "[ĪĬÏ]", "[īĭï]", "[ŌŎ]", "[ōŏ]", "[ŪŬÜ]", "[ūŭü]", "Ȳ", "ȳ", MACRON, BREVE, DIAER},
		to   = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y"}},
}

m["lb"] = {
	canonicalName = "Luxembourgish",
	type = "regular",
	scripts = {"Latn"},
	family = "gmw",
	ancestors = {"gmh"},
}

m["lg"] = {
	canonicalName = "Luganda",
	otherNames = {"Ganda"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["li"] = {
	canonicalName = "Limburgish",
	otherNames = {"Limburgan", "Limburgian", "Limburgic"},
	type = "regular",
	scripts = {"Latn"},
	family = "gmw",
	ancestors = {"dum"},
}

m["ln"] = {
	canonicalName = "Lingala",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["lo"] = {
	canonicalName = "Lao",
	otherNames = {"Laotian"},
	type = "regular",
	scripts = {"Laoo"},
	family = "tai-swe",
	translit_module = "lo-translit",
}

m["lt"] = {
	canonicalName = "Lithuanian",
	type = "regular",
	scripts = {"Latn"},
	family = "bat",
	entry_name = {
		from = {"[áãà]", "[éẽè]", "[íĩì]", "[ýỹ]", "ñ", "[óõò]", "[úù]", ACUTE, GRAVE, TILDE},
		to   = {"a"    , "e"    , "i", "y"   , "n", "o"	   , "u"   }} ,
}

m["lu"] = {
	canonicalName = "Luba-Katanga",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["lv"] = {
	canonicalName = "Latvian",
	otherNames = {"Lettish", "Lett"},
	type = "regular",
	scripts = {"Latn"},
	family = "bat",
}

m["mg"] = {
	canonicalName = "Malagasy",
	otherNames = {"Betsimisaraka Malagasy", "Betsimisaraka", "Northern Betsimisaraka Malagasy", "Northern Betsimisaraka", "Southern Betsimisaraka Malagasy", "Southern Betsimisaraka", "Bara Malagasy", "Bara", "Masikoro Malagasy", "Masikoro", "Antankarana", "Antankarana Malagasy", "Plateau Malagasy", "Sakalava", "Tandroy Malagasy", "Tandroy", "Tanosy", "Tanosy Malagasy", "Tesaka", "Tsimihety", "Tsimihety Malagasy"},
	type = "regular",
	scripts = {"Latn"},
	family = "poz-bre",
}

m["mh"] = {
	canonicalName = "Marshallese",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-mic",
	sort_key = {
		from = {"ā" , "ļ" , "m̧" , "ņ" , "n̄"  , "o̧" , "ō"  , "ū" },
		to   = {"a~", "l~", "m~", "n~", "n~~", "o~", "o~~", "u~"}} ,
}

m["mi"] = {
	canonicalName = "Maori",
	otherNames = {"Māori"},
	type = "regular",
	scripts = {"Latn"},
	family = "poz-pol",
}

m["mk"] = {
	canonicalName = "Macedonian",
	type = "regular",
	scripts = {"Cyrl"},
	family = "zls",
	translit_module = "mk-translit",
	entry_name = {
		from = {ACUTE},
		to   = {}},
}

m["ml"] = {
	canonicalName = "Malayalam",
	type = "regular",
	scripts = {"Mlym"},
	family = "dra",
	translit_module = "ml-translit",
}

m["mn"] = {
	canonicalName = "Mongolian",
	otherNames = {"Khalkha Mongolian"},
	type = "regular",
	scripts = {"Cyrl", "Mong"},
	family = "xgn",
	translit_module = "mn-translit",
}

m["mr"] = {
	canonicalName = "Marathi",
	type = "regular",
	scripts = {"Deva"},
	family = "inc",
	translit_module = "hi-translit",
}

m["ms"] = {
	canonicalName = "Malay",
	type = "regular",
	scripts = {"Latn", "Arab"},
	family = "poz-mly",
}

m["mt"] = {
	canonicalName = "Maltese",
	type = "regular",
	scripts = {"Latn"},
	family = "sem-arb",
}

m["my"] = {
	canonicalName = "Burmese",
	otherNames = {"Myanmar"},
	type = "regular",
	scripts = {"Mymr"},
	family = "tbq-brm",
	ancestors = {"obr"},
	translit_module = "my-translit",
}

m["na"] = {
	canonicalName = "Nauruan",
	otherNames = {"Nauru"},
	type = "regular",
	scripts = {"Latn"},
	family = "poz-mic",
}

m["nb"] = {
	canonicalName = "Norwegian Bokmål",
	otherNames = {"Bokmål"},
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
	wikimedia_codes = {"no"},
}

m["nd"] = {
	canonicalName = "Northern Ndebele",
	otherNames = {"North Ndebele"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["ne"] = {
	canonicalName = "Nepali",
	otherNames = {"Nepalese"},
	type = "regular",
	scripts = {"Deva"},
	family = "inc",
	translit_module = "sa-translit",
}

m["ng"] = {
	canonicalName = "Ndonga",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["nl"] = {
	canonicalName = "Dutch",
	otherNames = {"Netherlandic", "Flemish"},
	type = "regular",
	scripts = {"Latn"},
	family = "gmw",
	ancestors = {"dum"},
	sort_key = {
		from = {"[äáâå]", "[ëéê]", "[ïíî]", "[öóô]", "[üúû]", "ç", "ñ", "^-"},
		to   = {"a"	 , "e"	, "i"	, "o"	, "u"	, "c", "n"}} ,
}

m["nn"] = {
	canonicalName = "Norwegian Nynorsk",
	otherNames = {"New Norwegian", "Nynorsk"},
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
}

m["no"] = {
	canonicalName = "Norwegian",
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
}

m["nr"] = {
	canonicalName = "Southern Ndebele",
	otherNames = {"South Ndebele"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["nv"] = {
	canonicalName = "Navajo",
	type = "regular",
	scripts = {"nv-Latn"},
	family = "apa",
	sort_key = {
		from = {"[áą]", "[éę]", "[íį]", "[óǫ]", "ń", "^n([djlt])", "ł" , "[ʼ’']", ACUTE},
		to   = {"a"   , "e"   , "i"   , "o"   , "n", "ni%1"	  , "l"}} }  -- the copyright sign is used to guarantee that ł will always be sorted after all other words with l
m["ny"] = {
	canonicalName = "Chichewa",
	otherNames = {"Chicheŵa", "Chinyanja", "Nyanja"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["oc"] = {
	canonicalName = "Occitan",
	otherNames = {"Provençal", "Auvergnat", "Auvernhat", "Gascon", "Languedocien", "Lengadocian"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"[àá]", "[èé]", "[íï]", "[òó]", "[úü]", "ç", "([lns])·h"},
		to   = {"a"   , "e"   , "i"   , "o"   , "u"   , "c", "%1h"	  }} ,
}

m["oj"] = {
	canonicalName = "Ojibwe",
	otherNames = {"Chippewa", "Ojibway", "Ojibwemowin", "Southwestern Ojibwa"},
	type = "regular",
	scripts = {"Cans", "Latn"},
	family = "alg",
}

m["om"] = {
	canonicalName = "Oromo",
	otherNames = {"Orma", "Borana-Arsi-Guji Oromo", "West Central Oromo"},
	type = "regular",
	scripts = {"Latn", "Ethi"},
	family = "cus",
}

m["or"] = {
	canonicalName = "Oriya",
	otherNames = {"Odia", "Oorya"},
	type = "regular",
	scripts = {"Orya"},
	family = "inc",
}

m["os"] = {
	canonicalName = "Ossetian",
	otherNames = {"Ossete", "Ossetic", "Digor", "Iron"},
	type = "regular",
	scripts = {"Cyrl", "Geor", "Latn"},
	family = "ira",
	translit_module = "os-translit",
	entry_name = {
		from = {GRAVE, ACUTE},
		to   = {}} ,
}

m["pa"] = {
	canonicalName = "Punjabi",
	otherNames = {"Panjabi"},
	type = "regular",
	scripts = {"Guru", "Arab", "Deva"},
	family = "inc",
}

m["pi"] = {
	canonicalName = "Pali",
	type = "regular",
	scripts = {"Latn", "Deva", "Sinh", "Mymr", "Khmr", "Thai"},
	family = "inc",
	sort_key = {
		from = {"ā", "ī", "ū", "ḍ", "ḷ", "[ṁṃ]", "[ṇñṅ]", "ṭ"},
		to   = {"a", "i", "u", "d", "l", "m"   , "n"	, "t"}} ,
}

m["pl"] = {
	canonicalName = "Polish",
	type = "regular",
	scripts = {"Latn"},
	family = "zlw",
	sort_key = {
	from = {"[Ąą]", "[Ćć]", "[Ęę]", "[Łł]", "[Ńń]", "[Óó]", "[Śś]", "[Żż]", "[Źź]"},
	to   = {
		"a" .. u(0x10FFFF),
		"c" .. u(0x10FFFF),
		"e" .. u(0x10FFFF),
		"l" .. u(0x10FFFF),
		"n" .. u(0x10FFFF),
		"o" .. u(0x10FFFF),
		"s" .. u(0x10FFFF),
		"z" .. u(0x10FFFF),
		"z" .. u(0x10FFFE)}} ,
}

m["ps"] = {
	canonicalName = "Pashto",
	otherNames = {"Pashtun", "Pushto", "Pashtu", "Central Pashto", "Northern Pashto", "Southern Pashto", "Pukhto", "Pakhto", "Pakkhto", "Afghani"},
	type = "regular",
	scripts = {"ps-Arab"},
	family = "ira",
}

m["pt"] = {
	canonicalName = "Portuguese",
	otherNames = {"Modern Portuguese"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"[àãáâä]", "[èẽéêë]", "[ìĩíï]", "[òóôõö]", "[üúùũ]", "ç", "ñ"},
		to   = {"a"	  , "e"	  , "i"	 , "o"	  , "u"	 , "c", "n"}} ,
}

m["qu"] = {
	canonicalName = "Quechua",
	type = "regular",
	scripts = {"Latn"},
	family = "qwe",
}

m["rm"] = {
	canonicalName = "Romansch",
	otherNames = {"Romansh", "Rumantsch", "Romanche"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
}

m["rn"] = {
	canonicalName = "Kirundi",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["ro"] = {
	canonicalName = "Romanian",
	otherNames = {"Daco-Romanian", "Roumanian", "Rumanian"},
	type = "regular",
	scripts = {"Latn", "Cyrl"},
	family = "roa",
}

m["ru"] = {
	canonicalName = "Russian",
	type = "regular",
	scripts = {"Cyrl"},
	family = "zle",
	ancestors = {"orv"},
	translit_module = "ru-translit",
	sort_key = {
		from = {"ё"},
		to   = {"е" .. mw.ustring.char(0x10FFFF)}},
	entry_name = {
		from = {GRAVE, ACUTE},
		to   = {}} ,
}

m["rw"] = {
	canonicalName = "Kinyarwanda",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["sa"] = {
	canonicalName = "Sanskrit",
	type = "regular",
	scripts = {"Deva", "Beng", "Brah", "Gran", "Gujr", "Guru", "Khar", "Knda", "Mlym", "Mymr", "Orya", "Shrd", "Sinh", "Taml", "Telu", "Thai", "Tibt"},
	family = "inc",
	ancestors = {"inc-pro"},
	translit_module = "sa-translit",
}

m["sc"] = {
	canonicalName = "Sardinian",
	otherNames = {"Campidanese", "Logudorese", "Nuorese"},
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
}

m["sd"] = {
	canonicalName = "Sindhi",
	type = "regular",
	scripts = {"sd-Arab"},
	family = "inc",
}

m["se"] = {
	canonicalName = "Northern Sami",
	otherNames = {"North Sami", "Northern Saami", "North Saami"},
	type = "regular",
	scripts = {"Latn"},
	family = "smi",
	entry_name = {
		from = {"([đflmnŋrsšŧv])'%1"},
		to   = {"%1%1"} },
}

m["sg"] = {
	canonicalName = "Sango",
	type = "regular",
	scripts = {"Latn"},
	family = "crp",
}

m["sh"] = {
	canonicalName = "Serbo-Croatian",
	otherNames = {"BCS", "Croato-Serbian", "Serbocroatian", "Bosnian", "Croatian", "Montenegrin", "Serbian"},
	type = "regular",
	scripts = {"Latn", "Cyrl"},
	family = "zls",
	entry_name = {
		from = {"[ȀÀȂÁĀ]", "[ȁàȃáā]", "[ȄÈȆÉĒ]", "[ȅèȇéē]", "[ȈÌȊÍĪ]", "[ȉìȋíī]", "[ȌÒȎÓŌ]", "[ȍòȏóō]", "[ȐȒŔ]", "[ȑȓŕ]", "[ȔÙȖÚŪ]", "[ȕùȗúū]", "Ѐ", "ѐ", "[ӢЍ]", "[ӣѝ]", "[Ӯ]", "[ӯ]", GRAVE, ACUTE, DGRAVE, INVBREVE, MACRON},
		to   = {"A"	  , "a"	  , "E"	  , "e"	  , "I"	  , "i"	  , "O"	  , "o"	  , "R"	, "r"	, "U"	  , "u"	  , "Е", "е", "И"   , "и", "У", "у"   }},
	wikimedia_codes = {"sh", "bs", "hr", "sr"},
}

m["si"] = {
	canonicalName = "Sinhalese",
	otherNames = {"Singhalese", "Sinhala"},
	type = "regular",
	scripts = {"Sinh"},
	family = "inc",
	translit_module = "si-translit",
}

m["sk"] = {
	canonicalName = "Slovak",
	type = "regular",
	scripts = {"Latn"},
	family = "zlw",
	sort_key = {
		from = {"[áä]", "é", "í", "[óô]", "ú", "ý", "ŕ", "ĺ"},
		to   = {"a"   , "e", "i", "o"   , "u", "y", "r", "l"}} ,
}

m["sl"] = {
	canonicalName = "Slovene",
	otherNames = {"Slovenian"},
	type = "regular",
	scripts = {"Latn"},
	family = "zls",
	entry_name = {
		from = {"[ÁÀÂȂȀ]", "[áàâȃȁ]", "[ÉÈÊȆȄỆẸ]", "[éèêȇȅệẹə]", "[ÍÌÎȊȈ]", "[íìîȋȉ]", "[ÓÒÔȎȌỘỌ]", "[óòôȏȍộọ]", "[ŔȒȐ]", "[ŕȓȑ]", "[ÚÙÛȖȔ]", "[úùûȗȕ]", "ł", GRAVE, ACUTE, DGRAVE, INVBREVE, CIRC, DOTBELOW},
		to   = {"A"	  , "a"	  , "E"		, "e"		 , "I"	  , "i"	  , "O"		, "o"		, "R"	, "r"	, "U"	  , "u"	  , "l"}} ,
}

m["sm"] = {
	canonicalName = "Samoan",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-pol",
}

m["sn"] = {
	canonicalName = "Shona",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["so"] = {
	canonicalName = "Somali",
	type = "regular",
	scripts = {"Latn", "Arab", "Osma"},
	family = "cus",
	entry_name = {
		from = {"[ÁÀÂ]", "[áàâ]", "[ÉÈÊ]", "[éèê]", "[ÍÌÎ]", "[íìî]", "[ÓÒÔ]", "[óòô]", "[ÚÙÛ]", "[úùû]", "[ÝỲ]", "[ýỳ]"},
		to   = {"A"	  , "a"	  , "E"	, "e" , "I"	  , "i"	  , "O"	, "o"	, "U"  , "u", "Y", "y"}} ,
}

m["sq"] = {
	canonicalName = "Albanian",
	type = "regular",
	scripts = {"Latn", "Elba"},
	family = "sqj",
	sort_key = {
		from = { '[âãä]', '[ÂÃÄ]', '[êẽë]', '[ÊẼË]', 'ĩ', 'Ĩ', 'õ', 'Õ', 'ũ', 'Ũ', 'ỹ', 'Ỹ', 'ç', 'Ç' },
		to   = {     'a',     'A',     'e',     'E', 'i', 'I', 'o', 'O', 'u', 'U', 'y', 'Y', 'c', 'C' } } ,
}

m["ss"] = {
	canonicalName = "Swazi",
	otherNames = {"Swati"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["st"] = {
	canonicalName = "Sotho",
	otherNames = {"Sesotho", "Southern Sesotho", "Southern Sotho"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["su"] = {
	canonicalName = "Sundanese",
	type = "regular",
	scripts = {"Latn", "Sund"},
	family = "poz-msa",
}

m["sv"] = {
	canonicalName = "Swedish",
	type = "regular",
	scripts = {"Latn"},
	family = "gmq",
	ancestors = {"gmq-osw"},
}

m["sw"] = {
	canonicalName = "Swahili",
	type = "regular",
	scripts = {"Latn", "Arab"},
	family = "bnt",
	sort_key = {
		from = {"ng'", "^-"},
		to   = {"ngz"}} ,
}

m["ta"] = {
	canonicalName = "Tamil",
	type = "regular",
	scripts = {"Taml"},
	family = "dra",
	translit_module = "ta-translit",
}

m["te"] = {
	canonicalName = "Telugu",
	type = "regular",
	scripts = {"Telu"},
	family = "dra",
	translit_module = "te-translit",
}

m["tg"] = {
	canonicalName = "Tajik",
	otherNames = {"Tadjik", "Tadzhik", "Tajiki", "Tajik Persian"},
	type = "regular",
	scripts = {"Cyrl", "fa-Arab", "Latn"},
	family = "ira",
	translit_module = "tg-translit",
		sort_key = {
		from = {"Ё", "ё"},
		to   = {"Е" , "е"}} ,
}

m["th"] = {
	canonicalName = "Thai",
	type = "regular",
	scripts = {"Thai"},
	family = "tai-swe",
}

m["ti"] = {
	canonicalName = "Tigrinya",
	type = "regular",
	scripts = {"Ethi"},
	family = "sem-eth",
	translit_module = "Ethi-translit",
}

m["tk"] = {
	canonicalName = "Turkmen",
	type = "regular",
	scripts = {"Latn", "Cyrl"},
	family = "trk",
}

m["tl"] = {
	canonicalName = "Tagalog",
	type = "regular",
	scripts = {"Latn", "Tglg"},
	family = "phi",
}

m["tn"] = {
	canonicalName = "Tswana",
	otherNames = {"Setswana"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["to"] = {
	canonicalName = "Tongan",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-pol",
}

m["tr"] = {
	canonicalName = "Turkish",
	type = "regular",
	scripts = {"Latn"},
	family = "trk",
}

m["ts"] = {
	canonicalName = "Tsonga",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["tt"] = {
	canonicalName = "Tatar",
	type = "regular",
	scripts = {"Cyrl", "Latn", "Arab", "tt-Arab"},
	family = "trk",
	translit_module = "tt-translit",
}

m["tw"] = {
	canonicalName = "Twi",
	type = "regular",
	scripts = {"Latn"},
	family = "alv-kwa",
}

m["ty"] = {
	canonicalName = "Tahitian",
	type = "regular",
	scripts = {"Latn"},
	family = "poz-pol",
}

m["ug"] = {
	canonicalName = "Uyghur",
	otherNames = {"Uigur", "Uighur", "Uygur"},
	type = "regular",
	scripts = {"ug-Arab", "Latn", "Cyrl"},
	family = "trk",
	translit_module = "ug-translit",
}

m["uk"] = {
	canonicalName = "Ukrainian",
	type = "regular",
	scripts = {"Cyrl"},
	family = "zle",
	ancestors = {"orv"},
	translit_module = "uk-translit",
	entry_name = {
		from = {GRAVE, ACUTE},
		to   = {}} } 
m["ur"] = {
	canonicalName = "Urdu",
	type = "regular",
	scripts = {"ur-Arab"},
	family = "inc",
	entry_name = {
		from = {u(0x064B), u(0x064C), u(0x064D), u(0x064E), u(0x064F), u(0x0650), u(0x0651), u(0x0652)},
		to   = {}} ,
}

m["uz"] = {
	canonicalName = "Uzbek",
	otherNames = {"Northern Uzbek", "Southern Uzbek"},
	type = "regular",
	scripts = {"Latn", "Cyrl", "fa-Arab"},
	family = "trk",
}

m["ve"] = {
	canonicalName = "Venda",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["vi"] = {
	canonicalName = "Vietnamese",
	otherNames = {"Annamese", "Annamite"},
	type = "regular",
	scripts = {"Latn", "Hani"},
	family = "mkh-vie",
}

m["vo"] = {
	canonicalName = "Volapük",
	type = "regular",
	scripts = {"Latn"},
	family = "art",
}

m["wa"] = {
	canonicalName = "Walloon",
	type = "regular",
	scripts = {"Latn"},
	family = "roa",
	sort_key = {
		from = {"[áàâäå]", "[éèêë]", "[íìîï]", "[óòôö]", "[úùûü]", "[ýỳŷÿ]", "ç", "'"},
		to   = {"a"	  , "e"	 , "i"	 , "o"	 , "u"	 , "y"	 , "c"}} ,
}

m["wo"] = {
	canonicalName = "Wolof",
	type = "regular",
	scripts = {"Latn", "Arab"},
	family = "alv-sng",
}

m["xh"] = {
	canonicalName = "Xhosa",
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

m["yi"] = {
	canonicalName = "Yiddish",
	type = "regular",
	scripts = {"Hebr"},
	family = "gmw",
	ancestors = {"gmh"},
	translit_module = "yi-translit",
}

m["yo"] = {
	canonicalName = "Yoruba",
	type = "regular",
	scripts = {"Latn"},
	family = "alv-von",
}

m["za"] = {
	canonicalName = "Zhuang",
	type = "regular",
	scripts = {"Latn", "Hani", "Cyrl"},
	family = "tai",
}

m["zh"] = {
	canonicalName = "Chinese",
	type = "regular",
	scripts = {"Hani"},
	family = "sit",
}

m["zu"] = {
	canonicalName = "Zulu",
	otherNames = {"isiZulu"},
	type = "regular",
	scripts = {"Latn"},
	family = "bnt",
}

return m