Loncat ke isi

Modul:bahasa

Deri Wikikamus
(Dialihin deri Modul:lang)

Dokumentasi untuk modul ini dapat dibuat di Modul:bahasa/doc

local p = {}

local langNames = {
	["mul"] = "Antérobasa",
	
	-- Kode basa hurup dua (ISO 639-1)
	["aa"] = "Apar",
	["ab"] = "Abhas",
	["ae"] = "Awèstan",
	["af"] = "Aprikan",
	["ak"] = "Akan",
	["am"] = "Amhara",
	["an"] = "Aragon",
	["ar"] = "Arab",
	["as"] = "Asam",
	["av"] = "Awar",
	["ay"] = "Aymara",
	["az"] = "Asèrbaijan",
	["ba"] = "Baskir",
	["be"] = "Rus Puti",
	["bg"] = "Bulgari",
	["bh"] = "Bihari",
	["bi"] = "Bislama",
	["bm"] = "Bambara",
	["bn"] = "Benggala",
	["bo"] = "Tibet",
	["br"] = "Bréton",
--  ["bs"] = "Bosni", gabung ke [sh]
	["ca"] = "Katalan",
	["ce"] = "Cècèn",
	["ch"] = "Camoru",
	["co"] = "Korsika",
--  ["cr"] = "Kri", kudu dimasupin per logat
	["co"] = "Korsika",
	["cs"] = "Cèk",
	["cv"] = "Cuwas",
	["cy"] = "Walès",
	["da"] = "Dèn",
	["de"] = "Dèt",
	["dv"] = "Diwéhi",
	["dz"] = "Jongka",
	["ee"] = "Éwé",
	["el"] = "Yunani",
	["en"] = "Inggris",
	["eo"] = "Sepèranto",
	["es"] = "Spanyol",
	["et"] = "Èsti",
	["eu"] = "Basken",
	["fa"] = "Parsi",
	["ff"] = "Pula",
	["fi"] = "Pin",
	["fj"] = "Piji",
	["fo"] = "Pèrower",
	["fr"] = "Prasman",
	["fy"] = "Pris Kulon",
	["ga"] = "Ir",
	["gd"] = "Gaèlik Skot",
	["gl"] = "Galisi",
	["gn"] = "Guarani",
	["gu"] = "Gujarat",
	["gv"] = "Mang",
	["ha"] = "Hausa",
	["he"] = "Ibrani",
	["hi"] = "Hindi",
	["ho"] = "Hiri Motu",
--  ["hr"] = "Kroasi", gabung ama [sh]
	["ht"] = "Peranakan Haiti",
	["hu"] = "Honggari",
	["hy"] = "Lemènder",
	["hi"] = "Hindi",
	["hz"] = "Héréro",
	["ia"] = "Interlingua",
	["id"] = "Indonésia",
	["ie"] = "Interlingué",
	["ig"] = "Igbo",
	["ii"] = "Nuosu",
	["ik"] = "Inupiak",
	["io"] = "Ido",
	["is"] = "Èslan",
	["it"] = "Itali",
	["iu"] = "Inuktitut",
	["ja"] = "Jepang",
	["jv"] = "Jawa",
	["ka"] = "Géorgi",
	["kg"] = "Konggo",
	["ki"] = "Kikuyu",
	["kj"] = "Kwanyama",
	["kk"] = "Kasak",
	["kl"] = "Grunlan",
	["km"] = "Kemboja",
	["kn"] = "Kanada",
	["ko"] = "Koréa",
	["kr"] = "Kanuri",
	["ks"] = "Kasmir",
	["ku"] = "Kurdi",
	["kw"] = "Kornis",
	["ky"] = "Kirgis",
	["la"] = "Latèn",
	["lb"] = "Leksembereh",
	["lg"] = "Luganda",
	["li"] = "Limbereh",
	["ln"] = "Lingala",
	["lo"] = "Laos",
	["lt"] = "Litowen",
	["lu"] = "Luba-Katanga",
	["lv"] = "Lèt",
	["mg"] = "Madagaskar",
	["mh"] = "Marsèl",
	["mi"] = "Maori",
	["mk"] = "Makèdoni",
	["ml"] = "Malayalam",
	["mn"] = "Monggol",
	["mr"] = "Marati",
	["ms"] = "Melayu",
	["mt"] = "Malta",
	["my"] = "Birma",
	["na"] = "Nauru",
	["nb"] = "Nor Buku",
	["nd"] = "Ndébélé Lor",
	["ne"] = "Népal",
	["ng"] = "Ndonga",
	["nl"] = "Welanda",
	["nn"] = "Nor Baru",
	["no"] = "Nor",
	["nr"] = "Ndébélé Kidul",
	["nv"] = "Nabaho",
	["ny"] = "Nyanja",
	["oc"] = "Oksitan",
	["oj"] = "Ojibwé",
	["om"] = "Oromo",
	["or"] = "Odia",
	["os"] = "Oséti",
	["pa"] = "Panjabi",
	["pi"] = "Pali",
	["pl"] = "Pol",
	["ps"] = "Pastun",
	["pt"] = "Portugis",
	["qu"] = "Kécua",
	["rm"] = "Romans",
	["ro"] = "Rumèn",
	["ru"] = "Rus",
	["rw"] = "Rwanda-Rundi",
	["sa"] = "Sangsekerta",
	["sc"] = "Sardèni",
	["sd"] = "Sindi",
	["se"] = "Sami Lor",
	["sg"] = "Sango",
	["sh"] = "Sèrwi-Kroasi",
	["si"] = "Singala",
	["sk"] = "Slowak",
	["sl"] = "Slowèn",
	["sm"] = "Samoa",
	["sn"] = "Sona",
	["so"] = "Somali",
	["sq"] = "Albani",
	["ss"] = "Swasi",
	["st"] = "Soto",
	["su"] = "Sunda",
	["sv"] = "Swèd",
	["sw"] = "Swahili",
	["ta"] = "Tamil",
	["te"] = "Telugu",
	["tg"] = "Tajik",
	["th"] = "Siam",
	["ti"] = "Tigrinya",
	["tk"] = "Turkemèn",
	["tl"] = "Tegalog",
	["tn"] = "Cuana",
	["to"] = "Tonga",
	["tr"] = "Turki",
	["ts"] = "Conga",
	["tt"] = "Tatar",
	["ty"] = "Taiti",
	["ug"] = "Uygur",
	["uk"] = "Ukrain",
	["ur"] = "Urdu",
	["uz"] = "Usbèk",
	["ve"] = "Wènda",
	["vi"] = "Piètnam",
	["vo"] = "Wolapek",
	["wa"] = "Walon",
	["wo"] = "Wolop",
	["xh"] = "Ngkosa",
	["yi"] = "Yèdi",
	["yo"] = "Yoruba",
	["za"] = "Cueng",
	["zh"] = "Tionghoa",
	["zu"] = "Julu",

	-- Kode basa hurup tiga (ISO 639-3)
	["aaa"] = "Ghotuo",
	["aab"] = "Alumu-Tesu",
	["aac"] = "Ari",
	["aad"] = "Amal",
	["aaf"] = "Aranadan",
	["aag"] = "Ambrak",
	["aah"] = "Arapesh Abu'",
	["aai"] = "Arifama-Miniafia",
	["aak"] = "Ankave",
	["aal"] = "Afade",
	["aan"] = "Anambé",
	["aap"] = "Arára Pará",
	["aaq"] = "Penobscot",
	["aas"] = "Aasax",
	["aau"] = "Abau",
	["aaw"] = "Solong",
	["aax"] = "Mandobo Atas",
	["aaz"] = "Amarasi",
	["aba"] = "Abé",
	["abb"] = "Bankon",
	["abc"] = "Ayta Ambala",
	["abd"] = "Agta Camarines Norte",
	["abe"] = "Abenaki",
	["abf"] = "Abai Sungé",
	["abg"] = "Abaga",
	["abh"] = "Arab Tajik",
	["abi"] = "Abidji",
	["abj"] = "Aka-Bea",
	["abl"] = "Lampung Nyo",
	["abm"] = "Abanyom",
	["abn"] = "Abua",
	["abo"] = "Abon",
	["abp"] = "Ayta Abenlen",
	["abq"] = "Abasa",
	["abr"] = "Abron",
	["abs"] = "Ambon",
	["abt"] = "Ambulas",
	["abu"] = "Abure",
	["abv"] = "Arab Baharna",
	["abw"] = "Pal",
	["abx"] = "Inabaknon",
	["aby"] = "Aneme Wake",
	["abz"] = "Abui",
	["aca"] = "Achagua",
	["acb"] = "Áncá",
	["acd"] = "Gikyode",
	["ace"] = "Acé",
	["ach"] = "Acoli",
	["aci"] = "Aka-Cari",
	["ack"] = "Aka-Kora",
	["acl"] = "Akar-Bale",
	["acm"] = "Arab Irak",
	["acn"] = "Achang",
	["acp"] = "Acipa Wètan",
	["acr"] = "Achi",
	["acs"] = "Acroá",
	["acu"] = "Achuar",
	["acv"] = "Achumawi",
	["acw"] = "Arab Hijaz",
	["acx"] = "Arab Oman",
	["acy"] = "Arab Siprus",
	["acz"] = "Acheron",
	["ada"] = "Adangme",
	["adb"] = "Adabe",
	["add"] = "Dzodinka",
	["ade"] = "Adele",
	["adf"] = "Arab Dhofar",
	["adg"] = "Andegerebinha",
	["adh"] = "Adhola",
	["adi"] = "Adi",
	["adj"] = "Adioukrou",
	["adl"] = "Galo",
	["adn"] = "Adang",
	["ado"] = "Abu",
	["adp"] = "Adap",
	["adq"] = "Adangbe",
	["adr"] = "Adonara",
	["ads"] = "Peta Adamorobe",
	["adt"] = "Adnyamathanha",
	["adu"] = "Aduge",
	["adw"] = "Amondawa",
	["ady"] = "Adigé",
	["adz"] = "Adzera",
	["aea"] = "Areba",
	["aeb"] = "Arab Tunisia",
	["aed"] = "Peta Argentina",
	["aee"] = "Pashayi Lor-wètan",
	["aek"] = "Haeke",
	["ael"] = "Ambele",
	["aem"] = "Arem",
	["aen"] = "Peta Armenia",
	["aeq"] = "Aer",
	["aer"] = "Arrernte Wètan",
	["aes"] = "Alsea",
	["aeu"] = "Akeu",
	["aew"] = "Ambakich",
	["aey"] = "Amele",
	["aez"] = "Aeka",
	["afb"] = "Arab Teluk",
	["afd"] = "Andai",
	["afe"] = "Putukwam",
	["afg"] = "Peta Afghan",
	["afh"] = "Afrihili",
	["afi"] = "Akrukay",
	["afk"] = "Nanubae",
	["afn"] = "Defaka",
	["afo"] = "Eloyi",
	["afp"] = "Tapei",
	["afs"] = "Peranakan Apro-Seminoli",
	["aft"] = "Afitti",
	["afu"] = "Awutu",
	["afz"] = "Obokuitai",
	["aga"] = "Aguano",
	["agb"] = "Legbo",
	["agc"] = "Agatu",
	["agd"] = "Agarabi",
	["age"] = "Angal",
	["agf"] = "Arguni",
	["agg"] = "Angor",
	["agh"] = "Ngelima",
	["agi"] = "Agariya",
	["agj"] = "Argobba",
	["agk"] = "Agta Isarog",
	["agl"] = "Fembe",
	["agm"] = "Angaataha",
	["agn"] = "Agutaynen",
	["ago"] = "Tainae",
	["agq"] = "Aghem",
	["agr"] = "Aguaruna",
	["ags"] = "Esimbi",
	["agt"] = "Agta Cagayan Tenga",
	["agu"] = "Aguacateca",
	["agv"] = "Agta Remontado",
	["agw"] = "Kahua",
	["agx"] = "Aghul",
	["agy"] = "Alta Kidul",
	["agz"] = "Agta Mount Iriga",
	["aha"] = "Ahanta",
	["ahb"] = "Axamb",
	["ahg"] = "Qimant",
	["ahh"] = "Aghu",
	["ahi"] = "Aizi Tiagbamrin",
	["ahk"] = "Akha",
	["ahl"] = "Igo",
	["ahm"] = "Aizi Mobumrin",
	["ahn"] = "Àhàn",
	["aho"] = "Ahom",
	["ahp"] = "Aizi Aproumu",
	["ahr"] = "Ahirani",
	["ahs"] = "Ashe",
	["aht"] = "Ahtna",
	["aia"] = "Arosi",
	["aib"] = "Aynu",
	["aic"] = "Ainbai",
	["aid"] = "Alngith",
	["aie"] = "Amara",
	["aif"] = "Agi",
	["aig"] = "Peranakan Inggris Antigua èn Barbuda",
	["aih"] = "Ai-Cham",
	["aii"] = "Neo-Aramaik Asur",
	["aij"] = "Lishanid Noshan",
	["aik"] = "Ake",
	["ail"] = "Aimele",
	["aim"] = "Aimol",
	["ain"] = "Ainu",
	["aio"] = "Aiton",
	["aip"] = "Burumakok",
	["air"] = "Airoran",
	["ait"] = "Arikem",
	["aiw"] = "Aari",
	["aix"] = "Aighon",
	["aiy"] = "Ali",
	["aja"] = "Aja",
	["ajg"] = "Adja",
	["aji"] = "Ajië",
	["ajn"] = "Andajin",
	["ajp"] = "Arab Sam Kidul",
	["ajw"] = "Ajawa",
	["ajz"] = "Karbi Amri",
	["akb"] = "Angkola",
	["akl"] = "Aklanon",
	["akm"] = "Aka-Bo",
	["ako"] = "Akurio",
	["akp"] = "Siwu",
	["akq"] = "Ak",
	["akr"] = "Araki",
	["aks"] = "Akaselem",
	["akt"] = "Akolet",
	["aku"] = "Akum",
	["akv"] = "Akhvakh",
	["akw"] = "Akwa",
	["akx"] = "Aka-Kede",
	["aky"] = "Aka-Kol",
	["akz"] = "Alabama",
	["ala"] = "Alago",
	["alc"] = "Kawésqar",
	["ald"] = "Alladian",
	["ale"] = "Aleut",
	["alf"] = "Alege",
	["alh"] = "Alawa",
	["ali"] = "Amaimon",
	["alj"] = "Alangan",
	["alk"] = "Alak",
	["all"] = "Allar",
	["alm"] = "Amblong",
	["alo"] = "Larike-Wakasihu",
	["alp"] = "Aluné",
	["alq"] = "Algonquin",
	["alr"] = "Alutor",
	["alt"] = "Altai Kidul",
	["alu"] = "'Are'are",
	["alw"] = "Alaba",
	["alx"] = "Amol",
	["aly"] = "Alyawarr",
	["alz"] = "Alur",
	["ama"] = "Amanayé",
	["amb"] = "Ambo",
	["amc"] = "Amahuaca",
	["ame"] = "Yanesha'",
	["amf"] = "Hamer-Banna",
	["amg"] = "Amurdag",
	["ami"] = "Amis",
	["amj"] = "Amdang",
	["amk"] = "Ambai",
	["aml"] = "War-Jaintia",
	["amm"] = "Ama",
	["amn"] = "Amanab",
	["amo"] = "Amo",
	["amp"] = "Alamblak",
	["amq"] = "Amahai",
	["amr"] = "Amarakaeri",
	["ams"] = "Amami-Oshima Kidul",
	["amt"] = "Amto",
	["amu"] = "Amuzgo Guerrero",
	["amv"] = "Ambelau",
	["amw"] = "Neo-Aramaik Kulon",
	["amx"] = "Anmatyerre",
	["amy"] = "Ami",
	["amz"] = "Atampaya",
	["ana"] = "Andaqui",
	["anb"] = "Andoa",
	["anc"] = "Ngas",
	["and"] = "Ansus",
	["ane"] = "Xârâcùù",
	["anf"] = "Animere",
	["anh"] = "Nend",
	["ani"] = "Andi",
	["anj"] = "Anor",
	["ank"] = "Goemai",
	["anl"] = "Anu",
	["anm"] = "Anal",
	["ann"] = "Obolo",
	["ano"] = "Andoque",
	["anp"] = "Angika",
	["anq"] = "Jarawa",
	["anr"] = "Andh",
	["ans"] = "Anserma",
	["ant"] = "Antakarinya",
	["anu"] = "Anuak",
	["anv"] = "Denya",
	["anw"] = "Anaang",
	["anx"] = "Andra-Hus",
	["any"] = "Anyi",
	["anz"] = "Anem",
	["aoa"] = "Angolar",
	["aob"] = "Abom",
	["aoc"] = "Pemon",
	["aod"] = "Andarum",
	["aoe"] = "Angal Enen",
	["aof"] = "Bragat",
	["aog"] = "Angoram",
	["aoi"] = "Anindilyakwa",
	["aoj"] = "Mufian",
	["aok"] = "Arhö",
	["aol"] = "Alor",
	["aom"] = "Ömie",
	["aon"] = "Arapesh Bumbita",
	["aor"] = "Aore",
	["aos"] = "Taikat",
	["aot"] = "Atong (India)",
	["aou"] = "A'ou",
	["aox"] = "Atorada",
	["aoz"] = "Méto",
	["apb"] = "Sa'a",
	["apc"] = "Arab Syam Utara",
	["apd"] = "Arab Sudan",
	["ape"] = "Bukiyip",
	["apf"] = "Agta Pahanan",
	["apg"] = "Ampanang",
	["aph"] = "Athpare",
	["api"] = "Apiaká",
	["apj"] = "Jicarilla",
	["apk"] = "Apache Plains",
	["apl"] = "Lipan",
	["apm"] = "Chiricahua",
	["apn"] = "Apinayé",
	["apo"] = "Ambul",
	["app"] = "Apma",
	["apq"] = "A-Pucikwar",
	["apr"] = "Arop-Lokep",
	["aps"] = "Arop-Sissano",
	["apt"] = "Apatani",
	["apu"] = "Apurinã",
	["apv"] = "Alapmunte",
	["apw"] = "Apache Barat",
	["apx"] = "Aputai",
	["apy"] = "Apalaí",
	["apz"] = "Safeyoka",
	["aqc"] = "Archi",
	["aqd"] = "Dogon Ampari",
	["aqg"] = "Arigidi",
	["aqm"] = "Atohwaim",
	["aqn"] = "Alta Utara",
	["aqp"] = "Atakapa",
	["aqr"] = "Arhâ",
	["aqt"] = "Angaité",
	["aqz"] = "Akuntsu",
	["arc"] = "Aramaik",
	["ard"] = "Arabana",
	["are"] = "Arrernte Barat",
	["arh"] = "Arhuaco",
	["ari"] = "Arikara",
	["arj"] = "Arapaso",
	["ark"] = "Arikapú",
	["arl"] = "Arabela",
	["arn"] = "Mapudungun",
	["aro"] = "Araona",
	["arp"] = "Arapaho",
	["arq"] = "Arab Aljajaèr",
	["arr"] = "Arara-Karo",
	["ars"] = "Arab Najdi",
	["aru"] = "Arua",
	["arv"] = "Arbore",
	["arw"] = "Arawak",
	["arx"] = "Aruá",
	["ary"] = "Arab Maroko",
	["arz"] = "Arab Mesir",
	["ast"] = "Asturi",
	["ayh"] = "Arab Hadrami",
	["bac"] = "Baduy",
	["ban"] = "Bali",
	["bbc"] = "Toba",
    ["bcl"] = "Bikol Tenga",
	["bdq"] = "Bahnar",
	["bdr"] = "Bajo Pesisir Kulon",
	["bew"] = "Betawi",
	["bgz"] = "Banggai",
	["bhw"] = "Biak",
	["bjn"] = "Banjar",
	["bkr"] = "Bekumpé",
	["bla"] = "Siksika",
	["blj"] = "Bulungan",
	["blz"] = "Belantak",
	["bnd"] = "Bandan",
	["bnn"] = "Bunun",
	["bpz"] = "Bilba",
	["brh"] = "Brahui",
	["bsb"] = "Bisaya Bruné",
	["bts"] = "Simelungun",
	["btx"] = "Karo",
	["bug"] = "Bugis",
	["bve"] = "Bero",
	["bvu"] = "Melayu Bukit",
	["ceb"] = "Sèbu",
	["cia"] = "Cia-Cia",
	["cje"] = "Ceru",
	["cjm"] = "Cam Wètan",
	["ckt"] = "Cukci",
	["cmn"] = "Mandarin",
	["crh"] = "Tatar Krim",
	["dbl"] = "Jirbal",
	["dbn"] = "Duriankari",
	["dru"] = "Rukay",
	["dun"] = "Dusun Déah",
	["duo"] = "Agta Dupaningan",
	["ert"] = "Eritay",
	["fon"] = "Pon",
	["fos"] = "Siraya",
	["frm"] = "Prasman Tengaan",
	["gag"] = "Gagaos",
	["gal"] = "Galoli",
	["gay"] = "Gayo",
	["gbi"] = "Galèla",
	["gor"] = "Gorontalo",
	["hak"] = "Khè'",
	["haw"] = "Hawai",
	["iba"] = "Iban",
	["ill"] = "Iranun",
	["ilo"] = "Iloko",
	["itd"] = "Tidung Kidul",
	["izh"] = "Ingri",
	["jax"] = "Jambi",
	["jmd"] = "Yamdéna",
	["kab"] = "Kebél",
	["kem"] = "Kemak",
	["kge"] = "Kumering",
	["kkv"] = "Kangèan",
	["kmk"] = "Kalinga Limos",
	["kmr"] = "Kurdi Lor",
	["knb"] = "Kalinga Lubuagan",
	["knx"] = "Kendayan",
	["kxd"] = "Melayu Bruné",
	["kzp"] = "Kaidipang-Bolangitang",
	["lbx"] = "Lawangan-Pasèr",
	["ljl"] = "Lio",
	["ljp"] = "Lampung Api",
	["lkj"] = "Remun",
	["lmo"] = "Lombardi",
	["lnd"] = "Lundayé",
	["lti"] = "Léti",
	["mad"] = "Medura",
	["mak"] = "Mengkasar",
	["max"] = "Melayu Maluku Lor",
	["mba"] = "Higonon",
	["mbb"] = "Manobo Bukidnon Kulon",
	["mbf"] = "Melayu Baba",
	["mbt"] = "Manobo Matigsalug",
	["mdh"] = "Magindano",
	["mdr"] = "Mandar",
	["meo"] = "Melayu Kedah",
	["mfa"] = "Melayu Kelantan-Petani",
	["mhy"] = "Maanyan",
	["min"] = "Minangkabo",
	["mkn"] = "Melayu Kupang",
	["mqg"] = "Kuté Udik",
	["mqy"] = "Manggarai",
	["mui"] = "Musi",
	["mvp"] = "Duri",
	["mvv"] = "Murut Tagal",
	["nia"] = "Nias",
	["nij"] = "Ngaju",
	["otd"] = "Ot Danum",
	["pag"] = "Pengasinan",
	["pam"] = "Papanggo",
	["pap"] = "Papiamèntu",
	["pey"] = "Peco",
	["plh"] = "Paulohi",
	["plm"] = "Pelèmbang", --aselinya udah apkir, cuming masing kita paké
	["pmf"] = "Pamona",
	["pms"] = "Pimontès",
	["pmy"] = "Melayu Papua",
	["ppu"] = "Papora",
	["pse"] = "Melayu Tenga",
	["ptu"] = "Bambam",
	["pwn"] = "Paiwan",
	["rej"] = "Rejang",
	["rob"] = "Taé'",
	["ryu"] = "Okinawa",
	["sas"] = "Sasak",
	["scn"] = "Sisili",
	["sco"] = "Skot",
	["sda"] = "Toraja",
	["slr"] = "Salar",
	["smr"] = "Simelur",
	["smw"] = "Sumbawa",
	["sxn"] = "Sangir",
	["szy"] = "Sakijaya",
	["tao"] = "Yami",
	["tay"] = "Atayal",
	["tby"] = "Tabaru",
	["tes"] = "Tengger",
	["tet"] = "Tètun",
	["tnt"] = "Tontemboan",
	["tok"] = "Toki Pona",
	["tpi"] = "Tok Pisin",
	["trv"] = "Taroko",
	["tsg"] = "Suluk",
	["tvl"] = "Tuwalu",
	["tvx"] = "Tayboan",
    ["txn"] = "Tarangan Kulon",
	["vkt"] = "Kuté Ilir",
	["vot"] = "Wot",
    ["wlo"] = "Wolio",
    ["wod"] = "Wolani",
	["xmm"] = "Menado",
	["xxt"] = "Tambora",
	["yka"] = "Yakan",
	["yue"] = "Kanton",
	
	-- Kode basa bikinan
	["ms-baz"] = "Melayu Pasar",
	["ms-cla"] = "Melayu Tinggi",
	["nan-hbl"] = "Hokkièn",
	
	-- Kode basa lama
	["ang"] = "Inggris Kolot",
	["cu"] = "Slawèn Geréja Kolot",
	["kaw"] = "Jawa Kolot",
	["omy"] = "Melayu Kolot",
	["osn"] = "Sunda Kolot",
	["ota"] = "Turki Usmani",
	
	-- Kode basa pongkol
	["aav-khs-pro"] = "Pongkol Kasi",
	["aav-nic-pro"] = "Pongkol Nikobar",
	["aav-pkl-pro"] = "Pongkol Penar-Kasi-Lingam",
	["aav-pro"] = "Pongkol Ostroasia",
	["afa-pro"] = "Pongkol Aproasia",
	["alg-pro"] = "Pongkol Kealgonkian",
	["ine-pro"] = "Pongkol Hindi-Èropa",
	["map-pro"] = "Pongkol Ostronési",
	["poz-pro"] = "Pongkol Melayu-Polinési",
	["poz-mly-pro"] = "Pongkol Kemelayuan",

	-- Rungkun basa
	["ine"] = "Hindi-Èropa",
	["map"] = "Ostronési",
	["ms-eit"] = "Melayu Pasar Indonésia Belètan",
	["poz"] = "Melayu-Polinési",
	["poz-mly"] = "Kemelayuan"
}

local protoLangs = {
	["ine-pro"] = true,
	["map-pro"] = true,
	["poz-pro"] = true,
	["poz-mly-pro"] = true
}

local langFamilies = {
	["ine"] = true,
	["map"] = true,
	["ms-eit"] = true,
	["poz"] = true,
	["poz-mly"] = true
}

-- Interwiki table
local interwikis = {
	aa = true, ab = true, af = true, ak = true, am = true, an = true, ang = true,
	ar = true, as = true, ast = true, av = true, ay = true, az = true, bcl = true,
	be = true, bg = true, bh = true, bi = true, bjn = true, blk = true, bm = true,
	bn = true, bo = true, br = true, bs = true, btm = true, ca = true, ch = true,
	chr = true, ckb = true, co = true, cr = true, cs = true, csb = true, cy = true,
	da = true, de = true, diq = true, dv = true, dz = true, el = true, en = true,
	eo = true, es = true, et = true, eu = true, fa = true, fi = true, fj = true,
	fo = true, fr = true, fy = true, ga = true, gd = true, gl = true, gn = true,
	gom = true, gor = true, gu = true, guw = true, gv = true, ha = true, he = true,
	hi = true, hif = true, hr = true, hsb = true, hu = true, hy = true, ia = true,
	id = true, ie = true, ig = true, ik = true, ["io"] = true, ["is"] = true, it = true,
	iu = true, ja = true, jbo = true, jv = true, ka = true, kaa = true, kbd = true,
	kcg = true, kk = true, kl = true, km = true, kn = true, ko = true, ks = true,
	ku = true, kw = true, ky = true, la = true, lb = true, li = true, lmo = true,
	ln = true, lo = true, lt = true, lv = true, mad = true, mg = true, mh = true,
	mi = true, ["min"] = true, mk = true, ml = true, mn = true, mni = true, mnw = true,
	mr = true, ms = true, mt = true, my = true, na = true, nah = true, nds = true,
	ne = true, nia = true, nl = true, nn = true, no = true, oc = true, om = true,
	["or"] = true, pa = true, pi = true, pl = true, pnb = true, ps = true, pt = true,
	qu = true, rm = true, rn = true, ro = true, ru = true, rw = true, sa = true,
	sat = true, sc = true, scn = true, sd = true, sg = true, sh = true, shn = true,
	shy = true, si = true, sk = true, skr = true, sl = true, sm = true, sn = true,
	so = true, sq = true, sr = true, ss = true, st = true, su = true, sv = true,
	sw = true, ta = true, tcy = true, te = true, tg = true, th = true, ti = true,
	tk = true, tl = true, tn = true, to = true, tpi = true, tr = true, ts = true,
	tt = true, tw = true, ug = true, uk = true, ur = true, uz = true, vec = true,
	vi = true, vo = true, wa = true, wo = true, xh = true, yi = true, yo = true,
	za = true, zh = true, zu = true,

	-- Mapped codes
	mly = "ms", msa = "ms", msi = "ms", zlm = "ms", zsm = "ms"
}

-- Return interwiki link
function p.getInterwikiLink(lang, title)
	local targetLang = interwikis[lang]
	if targetLang == nil then
		return lang
	elseif targetLang == true then
		return string.format("[[:%s:%s|%s]]", lang, title, lang)
	else
		return string.format("[[:%s:%s|%s]]", targetLang, title, lang)
	end
end

-- Get full language name (returns nil if invalid)
function p.getLangName(frame)
    local args = frame.args
    local code = mw.text.trim(args[1] or "")
    local nocap = args.nocap or ""

    local name = langNames[code]
    if not name then return nil end

    local prefix = ""
    if langFamilies[code] then
        prefix = "Rungkun basa "
    elseif code ~= "mul" then
        prefix = "Basa "
    end

    local fullName = prefix .. name

    if nocap == "1" and mw.ustring.len(fullName) > 0 then
        local first = mw.ustring.sub(fullName, 1, 1)
        local rest = mw.ustring.sub(fullName, 2)
        fullName = mw.ustring.lower(first) .. rest
    end

    return fullName
end

-- Get language code (returns nil if invalid)
function p.getLangCode(frame)
    local code = mw.text.trim((frame.args and frame.args[1]) or "")
    if langNames[code] then
        return code
    else
        return nil
    end
end

-- Expose tables
p.langFamilies = langFamilies
p.protoLangs = protoLangs
p.langNames = langNames
p.interwikis = interwikis

return p