উইকিঅভিধান bnwiktionary https://bn.wiktionary.org/wiki/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%A7%E0%A6%BE%E0%A6%A8_%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%BE MediaWiki 1.47.0-wmf.6 case-sensitive মিডিয়া বিশেষ আলাপ ব্যবহারকারী ব্যবহারকারী আলাপ উইকিঅভিধান উইকিঅভিধান আলোচনা চিত্র চিত্র আলোচনা মিডিয়াউইকি মিডিয়াউইকি আলোচনা টেমপ্লেট টেমপ্লেট আলোচনা সাহায্য সাহায্য আলোচনা বিষয়শ্রেণী বিষয়শ্রেণী আলোচনা পরিশিষ্ট পরিশিষ্ট আলোচনা ছন্দ ছন্দ আলোচনা থিসরাস থিসরাস আলোচনা উদ্ধৃতি উদ্ধৃতি আলোচনা TimedText TimedText talk মডিউল মডিউল আলাপ ইভেন্ট ইভেন্ট আলোচনা মডিউল:wikimedia languages/data 828 7213 510623 324154 2026-06-11T04:24:48Z Redmin 6857 510623 Scribunto text/plain local m = {} --[=[ This table maps *FROM* Wikimedia language codes (used in lang-specific Wikipedias and Wiktionaries) into English Wiktionary language codes. See also the following: * `interwiki_langs` in [[Module:translations/data]], which maps in the other direction (from English Wiktionary codes to foreign Wiktionaries), specifically for {{t+}}; * the `wiktprefix` field of the `metadata` variable in [[MediaWiki:Gadget-TranslationAdder-Data.js]], which also maps from English Wiktionary codes to foreign Wiktionaries for use with the TranslationAdder gadget; * the `wikimedia_codes` field of the language data in e.g. [[Module:languages/data/2]], which also maps from English Wiktionary codes to Wikimedia language codes. ]=] m["als"] = { wiktionary_code = "gsw", } m["azb"] = { "South Azerbaijani", wiktionary_code = "az", } m["bat-smg"] = { wiktionary_code = "sgs", } m["be-tarask"] = { "Taraškievica Belarusian", wiktionary_code = "be", } m["bs"] = { "Bosnian", wiktionary_code = "sh", } m["bxr"] = { wiktionary_code = "bua", } m["diq"] = { wiktionary_code = "zza", } m["eml"] = { "Emiliano-Romagnolo", wiktionary_code = "egl", } m["fiu-vro"] = { wiktionary_code = "vro", } m["hr"] = { "Croatian", wiktionary_code = "sh", } m["hu-formal"] = { "Formal Hungarian", wiktionary_code = "hu", } m["ksh"] = { wiktionary_code = "gmw-cfr", } m["ku"] = { "Kurdish", wiktionary_code = "kmr", } m["kv"] = { "Komi", wiktionary_code = "kpv", } m["mo"] = { wiktionary_code = "ro" } m["nrm"] = { wiktionary_code = "nrf", } m["prs"] = { wiktionary_code = "fa", } m["roa-rup"] = { wiktionary_code = "rup", } m["roa-tara"] = { wiktionary_code = "roa-tar", } m["simple"] = { "Simple English", wiktionary_code = "en", } m["sr"] = { "Serbian", wiktionary_code = "sh", } m["zh-classical"] = { wiktionary_code = "ltc", } m["zh-min-nan"] = { "Southern Min", wiktionary_code = "nan-hbl", } m["zh-yue"] = { wiktionary_code = "yue", } return m kwokciokdiansv9vymuokvd2g9zid7x মডিউল:families/data 828 7314 510599 323366 2026-06-11T02:41:04Z Hiyuune 11971 510599 Scribunto text/plain --[=[ This module contains definitions for all language family codes on Wiktionary. ]=]-- local m = {} m["aav"] = { "Austroasiatic", 33199, aliases = {"Austro-Asiatic"}, } m["aav-khs"] = { "Khasian", 3073734, "aav", aliases = {"Khasic"}, } m["aav-nic"] = { "Nicobarese", 217380, "aav", } m["aav-pkl"] = { "Pnar-Khasi-Lyngngam", nil, "aav-khs", } m["afa"] = { "Afroasiatic", 25268, aliases = {"Afro-Asiatic"}, } m["alg"] = { "Algonquian", 33392, "aql", } m["alg-abp"] = { "Abenaki-Penobscot", 197936, "alg-eas", } m["alg-ara"] = { "Arapahoan", 2153686, "alg", } m["alg-eas"] = { "Eastern Algonquian", 2257525, "alg", } m["alg-sfk"] = { "Sac-Fox-Kickapoo", 1440172, "alg", } m["alv"] = { "Atlantic-Congo", 771124, "nic", } m["alv-aah"] = { "Ayere-Ahan", 750953, "alv-von", } m["alv-ada"] = { "Adamawa", 32906, "alv-sav", } m["alv-bag"] = { "Baga", 2746083, "alv-mel", } m["alv-bak"] = { "Bak", 1708174, "alv-sng", } m["alv-bam"] = { "Bambukic", 4853456, "alv-ada", aliases = {"Yungur-Jen"}, } m["alv-bny"] = { "Banyum", 2892477, "alv-nyn", } m["alv-bua"] = { "Bua", 4982094, "alv-mbd", } m["alv-bwj"] = { "Bikwin-Jen", 84542501, "alv-bam", } m["alv-cng"] = { "Cangin", 1033184, "alv-fwo", } m["alv-ctn"] = { "Central Tano", 1658486, "alv-ptn", aliases = {"Akan"}, } m["alv-dlt"] = { "Delta Edoid", nil, "alv-edo", } m["alv-dur"] = { "Duru", 5316788, "alv-lni", } m["alv-ede"] = { "Ede", 35368, "alv-yor", } m["alv-edk"] = { "Edekiri", 5336735, "alv-yrd", } m["alv-edo"] = { "Edoid", 1287469, "alv-von", } m["alv-eeo"] = { "Edo-Esan-Ora", 12630439, "alv-nce", } m["alv-fli"] = { "Fali", 3450166, "alv", } m["alv-fwo"] = { "Fula-Wolof", 12631267, "alv-sng", } m["alv-gbe"] = { "Gbe", 668284, "alv-von", } m["alv-gda"] = { "Ga-Dangme", 3443338, "alv-kwa", } m["alv-gng"] = { "Guang", 684009, "alv-ptn", } m["alv-gtm"] = { "Ghana-Togo Mountain", 493020, "alv-kwa", aliases = {"Togo Remnant", "Central Togo"}, } m["alv-hei"] = { "Heiban", 108752116, "alv-the", } m["alv-ido"] = { "Idomoid", 974196, "alv-von", } m["alv-igb"] = { "Igboid", 1429100, "alv-von", } m["alv-jfe"] = { "Jola-Felupe", 1708174, "alv-jol", aliases = {"Ejamat"}, } m["alv-jol"] = { "Jola", 35176, "alv-bak", aliases = {"Diola"}, } m["alv-kim"] = { "Kim", 6409701, "alv-mbd", } m["alv-kis"] = { "Kissi", 35696, "alv-mel", } m["alv-krb"] = { "Karaboro", 4213541, "alv-snf", } m["alv-ktg"] = { "Ka-Togo", 5972796, "alv-gtm", } m["alv-kul"] = { "Kulango", 16977424, "alv-sav", aliases = {"Kulango-Lorhon", "Kulango-Lorom"}, } m["alv-kwa"] = { "Kwa", 33430, "nic-vco", } m["alv-lag"] = { "Lagoon", 111210042, "alv-kwa", } m["alv-lek"] = { "Leko", 6520642, other_names = {"Sambaic"}, -- appears to be an alias in Glottolog "alv-lni", } m["alv-lim"] = { "Limba", 35825, "alv", } m["alv-lni"] = { "Leko-Nimbari", 1708170, "alv-ada", other_names = {"Central Adamawa"}, aliases = {"Chamba-Mumuye"}, } m["alv-mbd"] = { "Mbum-Day", 6799816, "alv-ada", } m["alv-mbm"] = { "Mbum", 6799814, "alv-mbd", } m["alv-mel"] = { "Mel", 12122355, "alv", } m["alv-mum"] = { "Mumuye", 84607009, "alv-mye", } m["alv-mye"] = { "Mumuye-Yendang", 6935539, "alv-lni", } m["alv-nal"] = { "Nalu", nil, "alv-sng", } m["alv-nce"] = { "North-Central Edoid", 16110869, "alv-edo", } m["alv-ngb"] = { "Nupe-Gbagyi", 12638649, "alv-nup", aliases = {"Nupe-Gbari"}, } m["alv-ntg"] = { "Na-Togo", nil, "alv-gtm", } m["alv-nup"] = { "Nupoid", 1429143, "alv-von", } m["alv-nwd"] = { "Northwestern Edoid", 16111012, "alv-edo", } m["alv-nyn"] = { "Nyun", nil, "alv-fwo", } m["alv-pap"] = { "Papel", 7132562, "alv-bak", } m["alv-pph"] = { "Phla-Pherá", 3849625, "alv-gbe", } m["alv-ptn"] = { "Potou-Tano", 1475003, "alv-kwa", } m["alv-sav"] = { "Savanna", 4403672, "nic-vco", aliases = {"Savannas"}, } m["alv-sma"] = { "Supyire-Mamara", 4446348, "alv-snf", aliases = {"Suppire-Mamara"}, } m["alv-snf"] = { "Senufo", 33795, "alv", aliases = {"Senufic", "Senoufo", "Sénoufo"}, } m["alv-sng"] = { "Senegambian", 1708753, "alv", } m["alv-snr"] = { "Senari", 4416084, "alv-snf", } m["alv-swd"] = { "Southwestern Edoid", 12633903, "alv-edo", } m["alv-tal"] = { "Talodi", 12643302, "alv-the", } m["alv-tdj"] = { "Tagwana-Djimini", 7675362, "alv-snf", } m["alv-ten"] = { "Tenda", 3217535, "alv-fwo", } m["alv-the"] = { "Talodi-Heiban", 1521145, "alv", } m["alv-von"] = { "Volta-Niger", 34177, "nic-vco", } m["alv-wan"] = { "Wara-Natyoro", 7968830, "alv-sav", } m["alv-wjk"] = { "Waja-Kam", nil, "alv-ada", } m["alv-yek"] = { "Yekhee", nil, "alv-nce", } m["alv-yor"] = { "Yoruba", nil, "alv-edk", } m["alv-yrd"] = { "Yoruboid", 1789745, "alv-von", } m["alv-yun"] = { "Yungur", 84601642, "alv-bam", aliases = {"Bena-Mboi"}, } m["apa"] = { "Apachean", 27758, "ath", aliases = {"Southern Athabaskan"}, } m["aqa"] = { "Alacalufan", 1288430, } m["aql"] = { "Algic", 721612, aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"}, } m["art"] = { "constructed", 33215, "qfa-not", aliases = {"artificial", "planned"}, } m["ath"] = { "Athabaskan", 27475, "xnd", } m["ath-nor"] = { "North Athabaskan", 20738, "ath", aliases = {"Northern Athabaskan"}, } m["ath-pco"] = { "Pacific Coast Athabaskan", 20654, "ath", } m["auf"] = { "Arauan", 626772, aliases = {"Arahuan", "Arauán", "Arawa", "Arawan", "Arawán"}, } --[=[ Exceptional language and family codes for Australian Aboriginal languages can use the prefix "aus-", though "aus" is no longer itself a family code. ]=]-- m["aus-arn"] = { "Arnhem", 2581700, aliases = {"Gunwinyguan", "Macro-Gunwinyguan"}, } m["aus-bub"] = { "Bunuban", 2495148, aliases = {"Bunaban"}, } m["aus-cww"] = { "Central New South Wales", 5061507, "aus-pam", } m["aus-dal"] = { "Daly", 2478079, } m["aus-dyb"] = { "Dyirbalic", 1850666, "aus-pam", } m["aus-gar"] = { "Garawan", 5521951, } m["aus-gun"] = { "Gunwinyguan", 2581700, "aus-arn", aliases = {"Gunwingguan"}, } m["aus-jar"] = { "Jarrakan", 2039423, } m["aus-kar"] = { "Karnic", 4215578, "aus-pam", } m["aus-mir"] = { "Mirndi", 4294095, } m["aus-nga"] = { "Ngayarda", 16153490, "aus-psw", } m["aus-nyu"] = { "Nyulnyulan", 2039408, } m["aus-pam"] = { "Pama-Nyungan", 33942, } m["aus-pmn"] = { "Paman", 2640654, "aus-pam", } m["aus-psw"] = { "Southwest Pama-Nyungan", 2258160, "aus-pam", } m["aus-rnd"] = { "Arandic", 4784071, "aus-pam", } m["aus-tnk"] = { "Tangkic", 1823065, } m["aus-wdj"] = { "Iwaidjan", 4196968, aliases = {"Yiwaidjan"}, } m["aus-wor"] = { "Worrorran", 2038619, } m["aus-yid"] = { "Yidinyic", 4205849, "aus-pam", } m["aus-yng"] = { "Yangmanic", 42727644, } m["aus-yol"] = { "Yolngu", 2511254, "aus-pam", aliases = {"Yolŋu", "Yolngu Matha"}, } m["aus-yuk"] = { "Yuin-Kuric", 3833021, "aus-pam", } m["awd"] = { "Arawak", 626753, aliases = {"Arawakan", "Maipurean", "Maipuran"}, } m["awd-nwk"] = { "Nawiki", nil, "awd", aliases = {"Newiki"}, } m["awd-taa"] = { "Ta-Arawak", 7672731, "awd", aliases = {"Ta-Arawakan", "Ta-Maipurean"}, } m["azc"] = { "Uto-Aztecan", 34073, aliases = {"Uto-Aztekan"}, } m["azc-cup"] = { "Cupan", 19866871, "azc-tak", } m["azc-dur"] = { "Durango Nahuatl", 2386361, "azc-nah", aliases = {"Mexicanero"} } m["azc-hua"] = { "Huasteca Nahuatl", 3832950, "azc-nah", } m["azc-nah"] = { "Nahuan", 11965602, "azc", aliases = {"Aztecan"}, } m["azc-num"] = { "Numic", 2657541, "azc", } m["azc-pim"] = { "Piman", 7194600, "azc", aliases = {"Tepiman"}, } m["azc-tak"] = { "Takic", 1280305, "azc", } m["azc-trc"] = { "Taracahitic", 4245032, "azc", aliases = {"Taracahitan"}, } m["bad"] = { "Banda", 806234, "nic-ubg", } m["bad-cnt"] = { "Central Banda", 3438391, "bad", } m["bai"] = { "Bamileke", 806005, "nic-gre", } m["bat"] = { "Baltic", 33136, "ine-bsl", } m["bat-eas"] = { "East Baltic", 149944, "bat", } m["bat-wes"] = { "West Baltic", 149946, "bat", } m["ber"] = { "Berber", 25448, "afa", aliases = {"Tamazight"}, } m["bnt"] = { "Bantu", 33146, "nic-bds", } m["bnt-baf"] = { "Bafia", 799784, "bnt", } m["bnt-bbo"] = { "Bafo-Bonkeng", nil, "bnt-saw", } m["bnt-bdz"] = { "Boma-Dzing", 1729203, "bnt", } m["bnt-bek"] = { "Bekwilic", nil, "bnt-ndb", } m["bnt-bki"] = { "Bena-Kinga", 16113307, "bnt-bne", } m["bnt-bmo"] = { "Bangi-Moi", nil, "bnt-bnm", } m["bnt-bne"] = { "Northeast Bantu", 7057832, "bnt", } m["bnt-bnm"] = { "Bangi-Ntomba", 806477, "bnt-bte", } m["bnt-boa"] = { "Boan", 4931250, "bnt", aliases = {"Buan", "Ababuan"}, } m["bnt-bot"] = { "Botatwe", 4948532, "bnt", } m["bnt-bsa"] = { "Basaa", 809739, "bnt", } m["bnt-bsh"] = { "Bushoong", 5001551, "bnt-bte", } m["bnt-bso"] = { "Southern Bantu", 980498, "bnt", } m["bnt-bta"] = { "Bati-Angba", 4869303, "bnt-boa", other_names = {"Late Bomokandian"}, aliases = {"Bwa"}, } m["bnt-btb"] = { "Beti", 35118, "bnt", } m["bnt-bte"] = { "Bangi-Tetela", 4855181, "bnt", } m["bnt-bun"] = { "Buja-Ngombe", 4986733, "bnt-mbb", } m["bnt-chg"] = { "Chaga", 33016, "bnt-cht", } m["bnt-cht"] = { "Chaga-Taita", nil, "bnt-bne", } m["bnt-clu"] = { "Chokwe-Luchazi", 3339273, "bnt", } m["bnt-com"] = { "Comorian", 33077, "bnt-sab", } m["bnt-glb"] = { "Great Lakes Bantu", 5599420, "bnt-bne", } m["bnt-haj"] = { "Haya-Jita", 25502360, "bnt-glb", } m["bnt-kak"] = { "Kako", nil, "bnt-pob", } m["bnt-kav"] = { "Kavango", 116544179, "bnt-ksb", } m["bnt-kbi"] = { "Komo-Bira", 6428591, "bnt-boa", } m["bnt-kel"] = { "Kele", 1738162, "bnt-kts", aliases = {"Sheke"}, } m["bnt-kil"] = { "Kilombero", 6408121, "bnt", } m["bnt-kka"] = { "Kikuyu-Kamba", 16114410, "bnt-bne", aliases = {"Thagiicu"}, } m["bnt-kmb"] = { "Kimbundu", 16947687, "bnt", } m["bnt-kng"] = { "Kongo", 6429214, "bnt", } m["bnt-kpw"] = { "Kpwe", 36428, "bnt-saw", } m["bnt-ksb"] = { "Kavango-Southwest Bantu", 6379098, "bnt", } m["bnt-kts"] = { "Kele-Tsogo", 6385577, "bnt", } m["bnt-lbn"] = { "Luban", 4536504, "bnt", } m["bnt-leb"] = { "Lebonya", 6511395, "bnt", } m["bnt-lgb"] = { "Lega-Binja", 6517694, "bnt", } m["bnt-lok"] = { "Logooli-Kuria", nil, "bnt-glb", } m["bnt-lub"] = { "Luba", nil, "bnt-lbn", } m["bnt-lun"] = { "Lunda", 6704091, "bnt", } m["bnt-mak"] = { "Makua", 6740431, "bnt-bso", aliases = {"Makhuwa"}, } m["bnt-mbb"] = { "Mboshi-Buja", 6799764, "bnt", } m["bnt-mbe"] = { "Mbole-Enya", 6799728, "bnt", } m["bnt-mbi"] = { "Mbinga", nil, "bnt-rur", } m["bnt-mbo"] = { "Mboshi", 6799763, "bnt-mbb", } m["bnt-mbt"] = { "Mbete", 1346910, "bnt-tmb", aliases = {"Mbere"}, } m["bnt-mby"] = { "Mbeya", nil, "bnt-ruk", } m["bnt-mij"] = { "Mijikenda", 6845474, "bnt-sab", } m["bnt-mka"] = { "Makaa", nil, "bnt-ndb", } m["bnt-mne"] = { "Manenguba", 31147471, "bnt", aliases = {"Mbo", "Ngoe"}, } m["bnt-mnj"] = { "Makaa-Njem", 1603899, "bnt-pob", } m["bnt-mon"] = { "Mongo", nil, "bnt-bnm", } m["bnt-mra"] = { "Mbugwe-Rangi", 6799795, "bnt", } m["bnt-msl"] = { "Masaba-Luhya", 12636428, "bnt-glb", } m["bnt-mwi"] = { "Mwika", nil, "bnt-ruk", } m["bnt-ncb"] = { "Northeast Coast Bantu", 7057848, "bnt-bne", } m["bnt-ndb"] = { "Ndzem-Bomwali", nil, "bnt-mnj", } m["bnt-ngn"] = { "Ngondi-Ngiri", 7022532, "bnt-mbb", } m["bnt-ngu"] = { "Nguni", 961559, "bnt-bso", aliases = {"Ngoni"}, } m["bnt-nya"] = { "Nyali", 7070832, "bnt-leb", } m["bnt-nyb"] = { "Nyanga-Buyi", 7070882, "bnt", } m["bnt-nyg"] = { "Nyoro-Ganda", 12638666, "bnt-glb", } m["bnt-nys"] = { "Nyasa", 7070921, "bnt", } m["bnt-nze"] = { "Nzebi", 1755498, "bnt-tmb", aliases = {"Njebi"}, } m["bnt-ova"] = { "Ovambo", 36489, "bnt-swb", aliases = {"Oshivambo", "Oshiwambo", "Owambo"}, } m["bnt-par"] = { "Pare", nil, "bnt-ncb", } m["bnt-pen"] = { "Pende", 7162373, "bnt", } m["bnt-pob"] = { "Pomo-Bomwali", nil, "bnt", } m["bnt-ruk"] = { "Rukwa", 7378902, "bnt", } m["bnt-run"] = { "Rungwe", nil, "bnt-ruk", } m["bnt-rur"] = { "Rufiji-Ruvuma", 7377947, "bnt", } m["bnt-ruv"] = { "Ruvu", nil, "bnt-ncb", } m["bnt-rvm"] = { "Ruvuma", nil, "bnt-rur", } m["bnt-sab"] = { "Sabaki", 2209395, "bnt-ncb", } m["bnt-saw"] = { "Sawabantu", 532003, "bnt", } m["bnt-sbi"] = { "Sabi", 7396071, "bnt", } m["bnt-seu"] = { "Seuta", nil, "bnt-ncb", } m["bnt-shh"] = { "Shi-Havu", nil, "bnt-glb", } m["bnt-sho"] = { "Shona", 2904660, "bnt", } m["bnt-sir"] = { "Sira", 1436372, "bnt", aliases = {"Shira-Punu"}, } m["bnt-ske"] = { "Soko-Kele", nil, "bnt-bte", } m["bnt-sna"] = { "Sena", nil, "bnt-nys", } m["bnt-sts"] = { "Sotho-Tswana", 2038386, "bnt-bso", } m["bnt-swb"] = { "Southwest Bantu", 116543539, "bnt-ksb", } m["bnt-swh"] = { "Swahili", nil, "bnt-sab", } m["bnt-tek"] = { "Teke", 36528, "bnt-tmb", } m["bnt-tet"] = { "Tetela", 7706059, "bnt-bte", } m["bnt-tkc"] = { "Central Teke", 36473, "bnt-tek", } m["bnt-tkm"] = { "Takama", nil, "bnt-bne", } m["bnt-tmb"] = { "Teke-Mbede", 7695332, "bnt", aliases = {"Teke-Mbere"}, } m["bnt-tso"] = { "Tsogo", 2458420, other_names = {"Okani"}, --appears to be an alias in Glottolog "bnt-kts", } m["bnt-tsr"] = { "Tswa-Ronga", 12643962, "bnt-bso", } m["bnt-yak"] = { "Yaka", 8047027, "bnt", } m["bnt-yko"] = { "Yasa-Kombe", nil, "bnt-saw", } m["bnt-zbi"] = { "Zamba-Binza", nil, "bnt-bnm", } m["btk"] = { "Batak", 1998595, "poz-nws", } --[=[ Exceptional language and family codes for Central American Indian languages may use the prefix "cai-", though "cai" is no longer itself a family code. ]=]-- --[=[ Exceptional language and family codes for Caucasian languages can use the prefix "cau-", though "cau" is no longer itself a family code. ]=]-- m["cau-abz"] = { "Abkhaz-Abaza", 4663617, "cau-nwc", other_names = {"Abkhaz-Tapanta"}, aliases = {"Abazgi"}, } m["cau-and"] = { "Andian", 492152, "cau-ava", aliases = {"Andic"}, } m["cau-ava"] = { "Avaro-Andian", 4055404, "cau-nec", aliases = {"Avar-Andian", "Avar-Andi", "Avar-Andic"}, } m["cau-cir"] = { "Circassian", 858543, "cau-nwc", aliases = {"Cherkess"}, } m["cau-drg"] = { "Dargwa", 5222637, "cau-nec", other_names = {"Dargin"}, } m["cau-esm"] = { "Eastern Samur", nil, "cau-sam", } m["cau-ets"] = { "East Tsezian", 121437666, "cau-tsz", aliases = {"East Tsezic", "East Didoic"}, } m["cau-lzg"] = { "Lezghian", 2144370, "cau-nec", aliases = {"Lezgi", "Lezgian", "Lezgic"}, } m["cau-nkh"] = { "Nakh", 24441, "cau-nec", aliases = {"North-Central Caucasian"}, } m["cau-nec"] = { "Northeast Caucasian", 27387, aliases = {"Dagestanian", "Nakho-Dagestanian", "Caspian"}, } m["cau-nwc"] = { "Northwest Caucasian", 33852, aliases = {"Abkhazo-Adyghean", "Abkhaz-Adyghe", "Pontic"}, } m["cau-sam"] = { "Samur", 15229151, "cau-lzg", } m["cau-ssm"] = { "Southern Samur", nil, "cau-sam", } m["cau-tsz"] = { "Tsezian", 1651530, "cau-nec", aliases = {"Tsezic", "Didoic"}, } m["cau-vay"] = { "Vainakh", 4102486, "cau-nkh", aliases = {"Veinakh", "Vaynakh"}, } m["cau-wsm"] = { "Western Samur", nil, "cau-sam", } m["cau-wts"] = { "West Tsezian", 121437697, "cau-tsz", aliases = {"West Tsezic", "West Didoic"}, } m["cba"] = { "Chibchan", 520478, "qfa-mch", -- or none if Macro-Chibchan is considered undemonstrated } m["ccs"] = { "Kartvelian", 34030, aliases = {"South Caucasian"}, } m["ccs-gzn"] = { "Georgian-Zan", 34030, "ccs", aliases = {"Karto-Zan"}, } m["ccs-zan"] = { "Zan", 2606912, "ccs-gzn", aliases = {"Zanuri", "Colchian"}, } m["cdc"] = { "Chadic", 33184, "afa", } m["cdc-cbm"] = { "Central Chadic", 2251547, "cdc", aliases = {"Biu-Mandara"}, } m["cdc-est"] = { "East Chadic", 2276221, "cdc", } m["cdc-mas"] = { "Masa", 2136092, "cdc", } m["cdc-wst"] = { "West Chadic", 2447774, "cdc", } m["cdd"] = { "Caddoan", 1025090, } m["cel"] = { "Celtic", 25293, "ine", } m["cel-bry"] = { "Brythonic", 156877, "cel-ins", aliases = {"Brittonic"}, } m["cel-brs"] = { "Southwestern Brythonic", 2612853, "cel-bry", aliases = {"Southwestern Brittonic"}, } m["cel-brw"] = { "Western Brythonic", 593069, "cel-bry", aliases = {"Western Brittonic"}, } m["cel-gae"] = { "Goidelic", 56433, "cel-ins", aliases = {"Gaelic"}, protoLanguage = "pgl", } m["cel-his"] = { "Hispano-Celtic", 4204136, "cel", } m["cel-ins"] = { "Insular Celtic", 214506, "cel", } m["chi"] = { "Chimakuan", 1073088, } m["chm"] = { "Mari", 973685, "urj", } m["cmc"] = { "Chamic", 2997506, "poz-mcm", } m["crp"] = { "creole or pidgin", 19682167, "qfa-cnt", } m["csu"] = { "Central Sudanic", 190822, "ssa", } m["csu-bba"] = { "Bongo-Bagirmi", 3505042, "csu", } m["csu-bbk"] = { "Bongo-Baka", 4941917, "csu-bba", } m["csu-bgr"] = { "Bagirmi", 4841948, "csu-bba", aliases = {"Bagirmic"}, } m["csu-bkr"] = { "Birri-Kresh", nil, "csu", } m["csu-ecs"] = { "Eastern Central Sudanic", 16911698, "csu", aliases = {"East Central Sudanic", "Central Sudanic East", "Lendu-Mangbetu"}, } m["csu-kab"] = { "Kaba", 6343715, "csu-bba", } m["csu-lnd"] = { "Lendu", 6522357, "csu-ecs", aliases = {"Lenduic"}, } m["csu-maa"] = { "Mangbetu", 6748874, "csu-ecs", aliases = {"Mangbetu-Asoa", "Mangbetu-Asua"}, } m["csu-mle"] = { "Mangbutu-Lese", 17009406, "csu-ecs", aliases = {"Mangbutu-Efe", "Mangbutu", "Membi-Mangbutu-Efe"}, } m["csu-mma"] = { "Moru-Madi", 6915156, "csu-ecs", } m["csu-sar"] = { "Sara", 2036691, "csu-bba", } m["csu-val"] = { "Vale", 7909520, "csu-bba", } m["cus"] = { "Cushitic", 33248, "afa", } m["cus-cen"] = { "Central Cushitic", 56569, "cus", } m["cus-eas"] = { "East Cushitic", 56568, "cus", } m["cus-hec"] = { "Highland East Cushitic", 56524, "cus-eas", } m["cus-som"] = { "Somaloid", 56774, "cus-eas", aliases = {"Sam", "Macro-Somali"}, } m["cus-sou"] = { "South Cushitic", 56525, "cus", } m["day"] = { "Land Dayak", 2760613, "poz", } m["del"] = { "Lenape", 2665761, "alg-eas", aliases = {"Delaware"}, } m["den"] = { "Slavey", 13272, "ath-nor", aliases = {"Slave", "Slavé"}, } m["dmn"] = { "Mande", 33681, "nic", } m["dmn-bbu"] = { "Bisa-Busa", 12627956, "dmn-mde", } m["dmn-emn"] = { "East Manding", nil, "dmn-man", } m["dmn-jje"] = { "Jogo-Jeri", nil, "dmn-mjo", } m["dmn-man"] = { "Manding", 35772, "dmn-mmo", } m["dmn-mda"] = { "Mano-Dan", nil, "dmn-mse", } m["dmn-mdc"] = { "Central Mande", 5972907, "dmn-mdw", } m["dmn-mde"] = { "Eastern Mande", 12633080, "dmn", } m["dmn-mdw"] = { "Western Mande", 16113831, "dmn", } m["dmn-mjo"] = { "Manding-Jogo", 12636153, "dmn-mdc", } m["dmn-mmo"] = { "Manding-Mokole", nil, "dmn-mva", } m["dmn-mnk"] = { "Maninka", 36186, "dmn-emn", } m["dmn-mnw"] = { "Northwestern Mande", 5972910, "dmn-mdw", } m["dmn-mok"] = { "Mokole", 16935447, "dmn-mmo", } m["dmn-mse"] = { "Southeastern Mande", 5972912, "dmn-mde", } m["dmn-msw"] = { "Southwestern Mande", 12633904, "dmn-mdw", } m["dmn-mva"] = { "Manding-Vai", nil, "dmn-mjo", } m["dmn-nbe"] = { "Nwa-Beng", nil, "dmn-mse", } m["dmn-sam"] = { "Samo", 36327, "dmn-bbu", aliases = {"Samuic"}, } m["dmn-smg"] = { "Samogo", 7410000, "dmn-mnw", aliases = {"Duun-Seenku"}, } m["dmn-snb"] = { "Soninke-Bobo", 16111680, "dmn-mnw", } m["dmn-sya"] = { "Susu-Yalunka", nil, "dmn-mdc", } m["dmn-vak"] = { "Vai-Kono", nil, "dmn-mva", } m["dmn-wmn"] = { "West Manding", nil, "dmn-man", } m["dra"] = { "Dravidian", 33311, } m["dra-cen"] = { "Central Dravidian", 12628823, "dra", } m["dra-gki"] = { "Gondi-Kui", 12631610, "dra-sdt", } m["dra-gon"] = { "Gondi", 55639812, "dra-gki", } m["dra-imd"] = { "Irula-Muduga", nil, "dra-tkn", } m["dra-kan"] = { "Kannadoid", 6363888, "dra-tkn", protoLanguage = "dra-okn", } m["dra-kki"] = { "Konda-Kui", nil, "dra-gki", } m["dra-kml"] = { "Kurux-Malto", 68002822, "dra-nor", } m["dra-knk"] = { "Kolami-Naiki", 10547037, "dra-cen", } m["dra-kod"] = { "Kodagu", 67983106, "dra-tkd", } m["dra-kor"] = { "Koraga", 33394, "dra-tlk", } m["dra-mal"] = { "Malayalamoid", 6741581, "dra-tml", } m["dra-mdy"] = { "Madiya", 27602, "dra-gon", } m["dra-mlo"] = { "Malto", nil, "dra-kml", } m["dra-mur"] = { "Muria", 6938499, "dra-gon", } m["dra-nor"] = { "North Dravidian", 16110967, "dra", } m["dra-pgd"] = { "Parji-Gadaba", 10620428, "dra-cen", } m["dra-sdo"] = { "South Dravidian I", 16112843, -- Wikipedia's "South Dravidian" is South Dravidian I in this scheme. "dra-sou", aliases = {"South Dravidian"}, -- This is why I and II are used. } m["dra-sdt"] = { "South Dravidian II", 12633975, "dra-sou", aliases = {"South-Central Dravidian"}, } m["dra-sou"] = { "South Dravidian", 128886618, "dra", aliases = {"Southern Dravidian"}, } m["dra-tam"] = { "Tamiloid", 7681417, "dra-tml", protoLanguage = "oty", } m["dra-tel"] = { "Teluguic", nil, "dra-sdt", protoLanguage = "dra-ote", } m["dra-tkd"] = { "Tamil-Kodagu", 25494510, "dra-tkn", } m["dra-tkn"] = { "Tamil-Kannada", 6478506, "dra-sdo", } m["dra-tkt"] = { "Toda-Kota", 67983857, "dra-tkd", } m["dra-tlk"] = { "Tulu-Koraga", nil, "dra-sdo", } m["dra-tml"] = { "Tamil-Malayalam", 10690507, "dra-tkd", } m["egx"] = { "Egyptian", 50868, "afa", protoLanguage = "egy", } m["ero"] = { "Horpa", 56854, "sit-wgy", } m["esx"] = { "Eskimo-Aleut", 25946, } m["esx-esk"] = { "Eskimo", 25946, "esx", } m["esx-inu"] = { "Inuit", 27796, "esx-esk", } m["euq"] = { "Vasconic", 4669240, } m["gba"] = { "Gbaya", 3099986, "alv-sav", } m["gba-eas"] = { "Eastern Gbaya", nil, "gba", } m["gba-sou"] = { "Southern Gbaya", nil, "gba", } m["gba-wes"] = { "Western Gbaya", nil, "gba", } m["gem"] = { "Germanic", 21200, "ine", } m["gio"] = { "Gelao", 56401, "qfa-kra", } m["gme"] = { "East Germanic", 108662, "gem", } m["gmq"] = { "North Germanic", 106085, "gem", } m["gmq-eas"] = { "East Scandinavian", 3090263, "gmq", protoLanguage = "non-oen", } m["gmq-ins"] = { "Insular Scandinavian", nil, "gmq-wes", } m["gmq-wes"] = { "West Scandinavian", 1792570, "gmq", protoLanguage = "non-own", } m["gmw"] = { "West Germanic", 26721, "gem", } m["gmw-afr"] = { "Anglo-Frisian", 5329170, "gmw-nsg", } m["gmw-ang"] = { "Anglic", 1346342, "gmw-afr", protoLanguage = "ang", } m["gmw-fri"] = { "Frisian", 25325, "gmw-afr", protoLanguage = "ofs", } m["gmw-frk"] = { "Low Franconian", 153050, "gmw", protoLanguage = "frk", } m["gmw-hgm"] = { "High German", 52040, "gmw", protoLanguage = "goh", } m["gmw-ian"] = { "Irish Anglo-Norman", 120719384, "gmw-ang", protoLanguage = "enm", } m["gmw-lgm"] = { "Low German", 25433, "gmw-nsg", protoLanguage = "osx", } m["gmw-nsg"] = { "North Sea Germanic", 30134, "gmw", aliases = {"Ingvaeonic"}, } m["gn"] = { "Guarani", 35876, "tup-gua", aliases = {"Guaraní"}, } m["grb"] = { "Grebo proper", 35257, "kro-grb", } m["grk"] = { "Hellenic", 2042538, "ine", aliases = {"Greek"}, } m["him"] = { "Western Pahari", 10939493, "inc-pah", aliases = {"Himachali"}, } m["hmn"] = { "Hmongic", 3307894, "hmx", } m["hmx"] = { "Hmong-Mien", 33322, aliases = {"Miao-Yao"}, } m["hmx-mie"] = { "Mienic", 7992695, "hmx", } m["hok"] = { "Hokan", 33406, } m["hyx"] = { "Armenian", 8785, "ine", } m["iir"] = { "Indo-Iranian", 33514, "ine", } m["iir-nur"] = { "Nuristani", 161804, "iir", } m["nur-nor"] = { "Northern Nuristani", nil, "iir-nur", } m["nur-sou"] = { "Southern Nuristani", nil, "iir-nur", } m["ijo"] = { "Ijoid", 1325759, "nic", other_names = {"Ijaw"}, -- Ijaw may be a subfamily } m["inc"] = { "Indo-Aryan", 33577, "iir", aliases = {"Indic"}, } m["inc-bas"] = { "Bengali-Assamese", 4179137, "inc-eas", aliases = {"Assamese-Bengali", "Gauda-Kamarupa"}, } m["inc-bhi"] = { "Bhil", 4901727, "inc-cen", } m["inc-bih"] = { "Bihari", 135305, "inc-eas", } m["inc-cen"] = { "Central Indo-Aryan", 10979187, "inc", protoLanguage = "inc-asa", } m["inc-chi"] = { "Chitrali", 11732797, "inc-dar", } m["inc-dar"] = { "Dardic", 161101, "inc", protoLanguage = "inc-ash", } m["inc-dre"] = { "Eastern Dardic", nil, "inc-dar", } m["inc-dng"] = { "Dangari", nil, "inc-shn", } m["inc-eas"] = { "Eastern Indo-Aryan", 12593391, "inc", protoLanguage = "inc-aav", } m["inc-hal"] = { "Halbic", 16910593, "inc-eas", aliases = {"Halbi"}, } m["inc-hie"] = { "Eastern Hindi", 4126648, "inc-cen", aliases = {"Purabiyā"}, protoLanguage = "inc-apa", } m["inc-hiw"] = { "Western Hindi", 12600937, "inc-cen", protoLanguage = "inc-ohi", } m["inc-hnd"] = { "Hindustani", 11051, "inc-hiw", aliases = {"Hindi-Urdu"}, protoLanguage = "hi-mid", } m["inc-ins"] = { "Insular Indo-Aryan", 12179302, "inc", protoLanguage = "inc-apa", } m["inc-kas"] = { "Kashmiric", nil, "inc-dre", aliases = {"Kashmiri"}, } m["inc-koh"] = { "Kohistani", 13018610, "inc-dre", } m["inc-krd"] = { "KRDS languages", 6356154, "inc-eas", aliases = {"Kamta, Rajbanshi, Deshi and Surjapuri", "KRNB languages", "Kamta, Rajbanshi and Northern Deshi Bangla"}, } m["inc-kun"] = { "Kunar", nil, "inc-dar", } m["inc-mid"] = { "Middle Indo-Aryan", 3236316, "inc", aliases = {"Middle Indic"}, } m["inc-nwe"] = { "Northwestern Indo-Aryan", 16111018, "inc", protoLanguage = "inc-apa", } m["inc-nor"] = { "Northern Indo-Aryan", 946077, "inc", protoLanguage = "inc-aka", } m["inc-old"] = { "Old Indo-Aryan", 118976896, "inc", aliases = {"Old Indic"}, } m["inc-pah"] = { "Pahari", 946077, "inc-nor", aliases = {"Pahadi"}, protoLanguage = "inc-aka", } m["inc-pan"] = { "Punjabic", 2656685, "inc-nwe", aliases = {"Greater Punjabic"}, protoLanguage = "inc-opa", } m["inc-pas"] = { "Pashayi", 36670, "inc-dar", aliases = {"Pashai"}, } m["inc-rom"] = { "Romani", 13201, "inc-wes", aliases = {"Romany", "Gypsy", "Gipsy"}, } m["inc-shn"] = { "Shinaic", 12646125, "inc-dre", } m["inc-snd"] = { "Sindhic", 7522212, "inc-nwe", protoLanguage = "inc-avr", } m["inc-sou"] = { "Southern Indo-Aryan", 10856062, "inc", protoLanguage = "inc-ama", } m["inc-tha"] = { "Tharu", 34035, "inc-eas", } m["inc-wes"] = { "Western Indo-Aryan", nil, "inc", protoLanguage = "inc-agu", } m["ine"] = { "Indo-European", 19860, aliases = {"Indo-Germanic"}, } m["ine-ana"] = { "Anatolian", 147085, "ine", } m["ine-bsl"] = { "Balto-Slavic", 147356, "ine", } m["ine-toc"] = { "Tocharian", 37029, "ine", aliases = {"Tokharian"}, } m["ira"] = { "Iranian", 33527, "iir", } m["ira-csp"] = { "Caspian", 5049123, "ira-mpr", } m["ira-cen"] = { "Central Iranian", nil, "ira", } m["ira-kms"] = { "Komisenian", nil, "ira-mpr", aliases = {"Semnani"}, } m["ine-luw"] = { "Luwic", 115748615, "ine-ana", aliases = {"Luvic"}, } m["ira-mid"] = { "Middle Iranian", 6841465, "ira", } m["ira-mny"] = { "Munji-Yidgha", nil, "ira-sym", aliases = {"Yidgha-Munji"}, } m["ira-msh"] = { "Mazanderani-Shahmirzadi", nil, "ira-csp", } m["ira-nei"] = { "Northeastern Iranian", 10775567, "ira", } m["ira-nwi"] = { "Northwestern Iranian", 390576, "ira-wes", } m["ira-old"] = { "Old Iranian", 23301845, "ira", } m["ira-orp"] = { "Ormuri-Parachi", nil, "ira-sei", } m["ira-pat"] = { "Pathan", nil, "ira-sei", } m["ira-sbc"] = { "Sogdo-Bactrian", nil, "ira-nei", } m["ira-mpr"] = { "Medo-Parthian", nil, "ira-nwi", aliases = {"Partho-Median"}, } m["ira-sgi"] = { "Sanglechi-Ishkashimi", 18711232, "ira-sei", } m["ira-shr"] = { "Shughni-Roshani", 11732824, "ira-shy", } m["ira-shy"] = { "Shughni-Yazghulami", nil, "ira-sym", } m["ira-sgc"] = { "Sogdic", nil, "ira-sbc", aliases = {"Sogdian"}, } m["ira-sei"] = { "Southeastern Iranian", 3833002, "ira", } m["ira-swi"] = { "Southwestern Iranian", 390424, "ira-wes", } m["ira-sym"] = { "Shughni-Yazghulami-Munji", nil, "ira-sei", } m["ira-wes"] = { "Western Iranian", 129850, "ira", } m["ira-zgr"] = { "Zaza-Gorani", 167854, "ira-mpr", aliases = {"Zaza-Gurani", "Gorani-Zaza"}, } m["iro"] = { "Iroquoian", 33623, } m["iro-nor"] = { "North Iroquoian", nil, "iro", } m["itc"] = { "Italic", 131848, "ine", } m["itc-laf"] = { "Latino-Faliscan", 33478, "itc", aliases = {"Latinian"}, } m["itc-sbl"] = { "Osco-Umbrian", 515194, "itc", aliases = {"Sabellic", "Sabellian"}, } m["jpx"] = { "Japonic", 33612, aliases = {"Japanese", "Japanese-Ryukyuan"}, } m["jpx-nry"] = { "Northern Ryukyuan", 20862796, "jpx-ryu", } m["jpx-ryu"] = { "Ryukyuan", 56393, "jpx", } m["jpx-sry"] = { "Southern Ryukyuan", 18392243, "jpx-ryu", } m["kar"] = { "Karen", 1364815, "sit", } m["kca"] = { "Khanty", 33563, "urj-ugr", aliases = {"Khantyic", "Khantic"}, } --[=[ Exceptional language and family codes for Khoisan and Kordofanian languages can use the prefix "khi-" and "kdo-" respectively, though they are no longer family codes themselves. ]=]-- m["khi-kal"] = { "Kalahari Khoe", nil, "khi-kho", } m["khi-khk"] = { "Khoekhoe", nil, "khi-kho", } m["khi-kkw"] = { "Khoe-Kwadi", 60785084, aliases = {"Kwadi-Khoe"}, } m["khi-kho"] = { "Khoe", 2736449, "khi-kkw", aliases = {"Central Khoisan"}, } m["khi-kxa"] = { "Kx'a", 6450587, aliases = {"Kxa", "Ju-ǂHoan"}, } m["khi-tuu"] = { "Tuu", 631046, aliases = {"Kwi", "Taa-Kwi", "Southern Khoisan", "Taa-ǃKwi", "Taa-ǃUi", "ǃUi-Taa"}, } m["kro"] = { "Kru", 33535, "nic-vco", } m["kro-aiz"] = { "Aizi", 4699431, "kro", } m["kro-bet"] = { "Bété", 32956, "kro-ekr", } m["kro-did"] = { "Dida", 32685, "kro-ekr", } m["kro-ekr"] = { "Eastern Kru", 5972899, "kro", } m["kro-grb"] = { "Grebo", 5601537, "kro-wkr", } m["kro-wee"] = { "Wee", nil, "kro-wkr", } m["kro-wkr"] = { "Western Kru", 5972897, "kro", } m["ku"] = { "Kurdish", 36368, "ira-nwi", } m["kv"] = { "Komi", 36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family "urj-prm", } m["map"] = { "Austronesian", 49228, } m["map-ata"] = { "Atayalic", 716610, "map", } m["mjg"] = { "Monguor", 34214, "xgn-shr", } m["mkh"] = { "Mon-Khmer", 33199, "aav", } m["mkh-asl"] = { "Aslian", 3111082, "mkh", } m["mkh-ban"] = { "Bahnaric", 56309, "mkh", } m["mkh-kat"] = { "Katuic", 56697, "mkh", } m["mkh-khm"] = { "Khmuic", 1323245, "mkh", } m["mkh-kmr"] = { "Khmeric", nil, "mkh", } m["mkh-mnc"] = { "Monic", 3217497, "mkh", } m["mkh-mng"] = { "Mangic", 3509556, "mkh", } m["mkh-nbn"] = { "North Bahnaric", 56309, "mkh-ban", } m["mkh-pal"] = { "Palaungic", 2391173, "mkh", } m["mkh-pea"] = { "Pearic", 3073022, "mkh", } m["mkh-pkn"] = { "Pakanic", nil, "mkh-mng", } m["mkh-vie"] = { "Vietic", 2355546, "mkh", } m["mno"] = { "Manobo", 3217483, "phi", } m["mns"] = { "Mansi", 33759, "urj-ugr", aliases = {"Mansic"}, } m["mun"] = { "Munda", 33892, "aav", } m["myn"] = { "Mayan", 33738, } --[=[ Exceptional language and family codes for North American Indian languages can use the prefix "nai-", though "nai" is no longer itself a family code. ]=]-- m["nai-cat"] = { "Catawban", 3446638, "nai-sca", } m["nai-chu"] = { "Chumashan", 1288420, } m["nai-ckn"] = { "Chinookan", 610586, } m["nai-coo"] = { "Coosan", 940278, } m["nai-jcq"] = { "Jicaquean", 12179308, "hok" } m["nai-ker"] = { "Keresan", 35878, } m["nai-klp"] = { "Kalapuyan", 1569040, } m["nai-kta"] = { "Kiowa-Tanoan", 386288, } m["nai-len"] = { "Lencan", 36189, aliases = {"Lenca"}, } m["nai-mdu"] = { "Maiduan", 33502, } m["nai-miz"] = { "Mixe-Zoquean", 954016, aliases = {"Mixe-Zoque"}, } m["nai-min"] = { "Misumalpan", 281693, "qfa-mch", aliases = {"Misuluan", "Misumalpa"}, } m["nai-mus"] = { "Muskogean", 902978, aliases = {"Muskhogean"}, } m["nai-pak"] = { "Pakawan", 65085487, "hok", } m["nai-pal"] = { "Palaihnihan", 1288332, } m["nai-plp"] = { "Plateau Penutian", 2307476, } m["nai-pom"] = { "Pomoan", 2618420, "hok", aliases = {"Pomo", "Kulanapan"}, } m["nai-sca"] = { "Siouan-Catawban", 34181, } m["nai-shp"] = { "Sahaptian", 114782, "nai-plp", } m["nai-shs"] = { "Shastan", 2991735, "hok", } m["nai-tot"] = { "Totozoquean", 7828419, } m["nai-ttn"] = { "Totonacan", 34039, aliases = {"Totonac-Tepehua", "Totonacan-Tepehuan"}, varieties = {"Totonac"}, } m["nai-tqn"] = { "Tequistlatecan", 1568317, "hok", aliases = {"Tequistlatec", "Chontal", "Chontalan", "Oaxacan Chontal", "Chontal of Oaxaca"}, } m["nai-tsi"] = { "Tsimshianic", 34134, } m["nai-utn"] = { "Utian", 13371763, "nai-you", aliases = {"Miwok-Costanoan", "Mutsun"}, } m["nai-wtq"] = { "Wintuan", 1294259, aliases = {"Wintun"}, } m["nai-xin"] = { "Xincan", 1546494, aliases = {"Xinca"}, } m["nai-ykn"] = { "Yukian", 2406722, aliases = {"Yuki-Wappo"}, } m["nai-you"] = { "Yok-Utian", 2886186, } m["nai-yuc"] = { "Yuman-Cochimí", 579137, } m["ngf"] = { "Trans-New Guinea", 34018, } m["ngf-ais"] = { "Aisian", nil, "ngf-eso", } m["ngf-ang"] = { "Angan", 3217366, "ngf", aliases = {"Kratke Range"}, -- Usher } m["ngf-ank"] = { "Angal-Kewa", 12626916, -- exist in dewiki and hrwiki "ngf-sak", } m["ngf-ask"] = { "Asmat-Kamoro", 3031400, "ngf", -- Wikipedia uses Asmat-Kamoro to refer to a narrower group excluding the Sabakor languages (Buruwai and Kamberau, -- which Glottolog splits into North Kamrau and South Kamrau [sic]), and uses Asmat-Kamrau to refer to what we and -- Glottolog call Asmat-Kamoro. Glottolog does not recognize the narrower grouping. aliases = {"Asmat-Kamrau", -- Wikipedia "Asmat-Kamrau Bay", -- Usher }, } m["ngf-asm"] = { "Asmat", 4807421, "ngf-ask", } m["ngf-ata"] = { "Ankave-Tainae-Akoye", nil, "ngf-ang", aliases = {"Southwest Kratke Range"}, -- Usher } m["ngf-awd"] = { "Awyu-Dumut", -- [[w:Awyu-Dumut languages]] redirects to [[w:Greater Awyu languages]] 4830163, -- exist in eswiki, hrwiki and ruwiki "ngf-gaw", aliases = {"Central Digul River"}, -- Usher } m["ngf-awy"] = { "Awyu", 96372866, "ngf-awd", } m["ngf-bda"] = { "Becking-Dawi", nil, -- Q55993716 ([[Category:Becking–Dawi languages]]) exists in enwiki "ngf-gaw", aliases = {"Becking and Dawi Rivers"}, -- Usher } m["ngf-bin"] = { "Binanderean", 3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean "ngf-gbi", aliases = {"Oro"}, -- Usher (2020) } m["ngf-boa"] = { "Boane", nil, "ngf-era", aliases = {"Boana", -- Glottolog's name "Wain"}, -- not in Usher; "Wain" often excludes Mungkip, perhaps because it's poorly documented } m["ngf-bos"] = { "Bosavi", 4947122, "ngf", aliases = {"Papuan Plateau"}, -- alternative name given by Wikipedia } m["ngf-bsi"] = { "Baruya-Simbari", nil, "ngf-ang", aliases = {"Northwest Kratke Range"}, -- Usher } m["ngf-cda"] = { "Central Dani", nil, "ngf-dan", aliases = {"Dani"}, -- Usher } m["ngf-chw"] = { "Chimbu-Wahgi", 3217383, "ngf", aliases = {"Simbu-Western Highlands"}, -- alternative name given by Wikipedia } m["ngf-dag"] = { "Dagan", 5208454, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Meneao Range"}, } m["ngf-dal"] = { "Dallman", nil, "ngf-huo", aliases = {"Kinalakna-Kumukio", -- Pawley-Hammarström, who exclude Nomu, but they only had a numeral list of that language to work from "Northeast Huon", -- Usher }, } m["ngf-dan"] = { "Dani", 3217389, "ngf", -- Wikipedia renames the Dani languages to the Baliem Valley languages and sometimes (but not consistently) -- reserves the name Dani (or "Dani proper") for a narrower group excluding Wano and the poorly attested Ngalik -- languages (Nduga, Silimo, and the Yali dialect cluster, which we, following Ethnologue and Glottolog, split into -- Anggurk Yali, Ninia Yali and Pass Valley Yali). Glottolog does not recognize the narrower grouping. aliases = {"Baliem Valley", -- Wikipedia "Balim Valley", -- Usher }, } m["ngf-dum"] = { "Dumut", -- [[w:Dumut languages]] redirects to [[w:Greater Awyu languages]] nil, "ngf-awd", aliases = {"Wambon"}, -- Usher } m["ngf-ehu"] = { "Eastern Huon", -- Glottolog adds Ono and Sialum, Pawley-Hammarström adds Dedua 10567087, "ngf-huo", aliases = {"East Huon"}, -- Usher } m["ngf-eku"] = { "East Kutubuan", 5328752, "ngf", -- Not in TNG per Glottolog but accepted by all others. Sometimes grouped with Fasu to form a Kutubuan family. aliases = {"East Kutubu"}, -- Glottolog's name } m["ngf-enc"] = { "Engic", nil, "ngf-eng", aliases = {"Engan", -- Glottolog "Engan proper", -- Wikipedia "North Engan", -- alternative name given by Wikipedia "Trans-Enga", -- Usher }, } m["ngf-eng"] = { "Engan", 3217449, "ngf", aliases = {"Enga-Kewa-Huli", -- Glottolog, Pawley-Hammarström "Enga-Southern Highlands", -- Usher }, } m["ngf-era"] = { "Erap", nil, "ngf-fin", aliases = {"Erap River"}, -- Usher? } m["ngf-eso"] = { "East Sogeram", nil, "ngf-sog", } m["ngf-est"] = { "East Strickland", 5329440, "ngf", aliases = {"Strickland River"}, -- alternative name given by Wikipedia } m["ngf-eva"] = { "Evapia", nil, "ngf-rai", aliases = {"Evapia River"}, -- Usher } m["ngf-fgi"] = { "Fore-Gimi", nil, "ngf-gor", aliases = {"South Goroka"}, -- Usher } m["ngf-fhu"] = { "Finisterre-Huon", 3217453, "ngf", aliases = {"Finisterre Range-Huon Peninsula"}, -- per Usher } m["ngf-fin"] = { "Finisterre", 5450373, "ngf-fhu", aliases = {"Finisterre-Saruwaged", -- Glottolog's name "Finisterre Range"}, -- per Usher } m["ngf-gah"] = { "Gahuku", nil, "ngf-gor", aliases = {"Alekano-Asaro River"}, -- Usher } m["ngf-gau"] = { "Gauwa", nil, "ngf-kai", aliases = {"West Kainantu"}, -- Usher } m["ngf-gaw"] = { "Greater Awyu", 12627424, "ngf", aliases = {"Digul River"}, -- used by Usher (2020) } m["ngf-gbi"] = { "Greater Binanderean", 3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean "ngf", -- not placed in Trans-New Guinea in Usher (2020) aliases = {"Guhu-Oro"}, -- Guhu-Oro is used in Usher (2020) } m["ngf-gko"] = { "Gaena-Korafe", 11732347, -- considered a single Korafe language by Wikipedia "ngf-bin", aliases = {"Gaina-Korafe"}, -- Usher } m["ngf-gmo"] = { "Gusap-Mot", 16110857, "ngf-fin", aliases = {"Mot River"}, -- Usher? } m["ngf-gor"] = { "Goroka", 15478597, "ngf-kgo", } m["ngf-gsu"] = { "Gogodala-Suki", 5577428, "ngf", -- Possibly in the proposed Papuan Gulf family. Not in TNG per Glottolog but accepted by all others. aliases = {"Suki-Gogodala", -- Glottolog's name "Suki-Aramia River", -- Used in Usher (2020) }, } m["ngf-gum"] = { "Gum", 5618008, "ngf-mab", } m["ngf-gvd"] = { "Grand Valley Dani", -- considered a single language by Wikipedia 5595219, "ngf-cda", } m["ngf-hag"] = { "Hagen", -- [[w:Hagen languages]] redirects to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Melpa-Kaugel River"}, -- Usher } m["ngf-han"] = { "Hanseman", 5651020, "ngf-mab", aliases = {"Hansemann Range"}, -- Usher } m["ngf-huo"] = { "Huon", 5946109, "ngf-fhu", aliases = {"Huon Peninsula"}, -- per Usher } m["ngf-jim"] = { "Jimi", -- [[w:Jimi languages]] and [[w:Jimi River languages]] redirect to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Jimi River"}, -- Usher } m["ngf-kab"] = { "Kabwum", nil, "ngf-huo", aliases = {"Timbe-Selepet-Komba", -- Pawley-Hammarström, "Northwest Huon", -- Usher }, } m["ngf-kai"] = { "Kainantu", -- Kambaira: under "unclassified Kainantu" (Glottolog), Tairora (Pawley-Hammarström), Gauwa (Usher) 15478590, "ngf-kgo", aliases = {"Gadsup-Auyana-Awa-Tairora"}, -- Wurm, } m["ngf-kak"] = { "Kalam-Kobon", 6350303, "ngf-ksa", aliases = {"Kalam", "Kaironk River"}, -- Usher (2020) } m["ngf-kau"] = { "Kaukombar", nil, "ngf-nad", aliases = {"Kaukombaran", -- Glottolog following Z'graggen (1975) "Kaukombar River"}, -- Usher's term } m["ngf-kbm"] = { "Kosorong-Burum-Mindik", nil, "ngf-huo", aliases = {"Bulum River"}, -- Usher } m["ngf-kgo"] = { "Kainantu-Goroka", 3217463, "ngf", aliases = {"Eastern Highlands"}, -- per Usher (2020) } m["ngf-khu"] = { "Kewa-Huli", nil, "ngf-eng", aliases = {"Huli-Southern Highlands"}, -- Usher } m["ngf-kma"] = { "Kâte-Mape", nil, "ngf-ehu", aliases = {"Kate-Mape-Sene", -- Pawley-Hammarström (with Sene), "Southeast Huon", -- Usher }, } m["ngf-kme"] = { "Kapau-Menya", nil, "ngf-ang", aliases = {"Southeast Kratke Range"}, -- Usher } m["ngf-koi"] = { "Koiarian", 11154240, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Koiari-Managalas Plateau"}, } m["ngf-kok"] = { "Kokon", -- Usher calls it South Mabuso but includes Gum in it nil, "ngf-mab", } m["ngf-kow"] = { "Kowan", 6435004, "ngf-mad", aliases = {"Isumrud Strait"}, -- per Usher (2020) } m["ngf-ksa"] = { "Kalam-Southern Adelbert", nil, "ngf-mad", aliases = {"Kalamic-South Adelbert", -- Glottolog "West Madang"}, -- Usher (2020) } m["ngf-kto"] = { "Kube-Tobo", -- per Glottolog, one language "Kulungtfu-Yuanggeng-Tobo" 1173235, -- code for Tobo-Kube language "ngf-huo", aliases = {"Tobo-Kube"}, } m["ngf-kts"] = { "Komyandaret-Tsaukambo", nil, "ngf-bda", aliases = {"Becking River"}, -- Usher } m["ngf-kum"] = { "Kumil", nil, "ngf-nad", aliases = {"Kumilan", -- Pawley-Hammarström following Z'graggen (1975) "Kumil River"}, -- Usher's term } m["ngf-kya"] = { "Kamano-Yagaria", nil, "ngf-gor", aliases = {"Henganofi", -- Usher "Kamano-Yagaria-Keigana", }, } m["ngf-lok"] = { "Lowland Ok", nil, "ngf-okk", } m["ngf-mab"] = { "Mabuso", 6721668, "ngf-mad", } m["ngf-mad"] = { "Madang", 11217556, "ngf", aliases = {"Madang-Adelbert Range"}, -- Z'graggen (1975), corresponding to today's Madang except in lacking Kalam and Gants } m["ngf-mek"] = { "Mek", 6810515, "ngf", aliases = {"Goliath"}, -- outdated alternative name given by Wikipedia } m["ngf-min"] = { "Mindjim", 86749913, "ngf-mad", aliases = {"Lower Minjim", -- Glottolog, placed in Rai Coast by Glottolog and Pawley-Hammarström; Glottolog's -- Mindjim has 6 languages, including "Upper Minjim" (Rerau and Sgi Bara) "Mindjim River", -- Usher "Minjim", "Minjim River", }, } -- Add if Molet is separated from Asaro'o -- m["ngf-moa"] = { -- "Molet-Asaro'o", -- nil, -- "ngf-war", -- } m["ngf-mok"] = { "Mountain Ok", -- [[w:Mountain Ok languages]] redirects to [[w:Ok languages]] nil, "ngf-okk", } m["ngf-mom"] = { "Mombum", 6897077, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Mombum-Koneraw", "Komolom", "Muli Strait"}, -- Pawley-Hammarström uses Komolom, Usher uses Muli Strait } m["ngf-msu"] = { "Mian-Suganga", -- considred a single Mian language by Wikipedia 12952846, "ngf-mok", aliases = {"Mianic"}, -- Glottolog } m["ngf-nad"] = { "Northern Adelbert", -- not accepted by Pawley-Hammarström 16952821, -- code for Croisilles linkage "ngf-mad", aliases = {"Adelbert Range-Isumrud Strait", -- Usher (2020) "North Adelbert", "Pihom-Isumrud"}, -- Ross? } m["ngf-nbi"] = { "North Binanderean", nil, "ngf-bin", aliases = {"Suena-Zia"}, -- Usher } m["ngf-nde"] = { "Ndeiram", -- [[w:Ndeiram River languages]] redirects to [[w:Greater Awyu languages]] nil, "ngf-awd", aliases = {"Ndeiram River"}, -- Usher? } m["ngf-ngn"] = { "Ngalik-Nduga", -- [[w:Ngalik languages]] redirects to [[w:Baliem Valley languages]] = Dani languages nil, "ngf-dan", aliases = {"Ngalik"}, -- Usher } m["ngf-nso"] = { "North Sogeram", nil, "ngf-sog", aliases = {"Mum-Sirva", -- Usher "North Central Sogeram", -- used by those who accept Central Sogeram (= North Sogeram + Apali and Manat) "North-Central Sogeram", -- rarer than without the dash "Sikan"}, -- Z’graggen (1975?) } m["ngf-num"] = { "Numugen", nil, "ngf-nad", aliases = {"Numugenan", -- Glottolog following Z'graggen 1975 "Numugen River"}, -- Usher's term } m["ngf-nur"] = { "Nuru", -- Usher excludes Yangulam, Pawley-Hammarström include Jilim and Rerau nil, "ngf-rai", aliases = {"Nuru River"}, -- Usher? } m["ngf-nwh"] = { "Northwest Hanseman", -- Usher nil, "ngf-han", aliases = {"Wamas-Samosa-Murupi-Mosimo"}, -- Glottolog, Greenhill, and Pawley-Hammarström following Z'graggen; the most common name, but very unwieldy } m["ngf-oen"] = { "Outer Engan", -- considered a single Nete language by Wikipedia 6998869, "ngf-enc", aliases = {"Nete-Bisorio"}, -- Usher } m["ngf-okk"] = { "Ok", 7081687, "ngf", } m["ngf-omo"] = { "Omosan", -- not included in (Greater) Northern Adelbert by Glottolog, but a sister nil, "ngf-nad", } m["ngf-oro"] = { "Orokaivic", 7103752, -- considered a single Orokaiva language by Wikipedia "ngf-bin", aliases = {"Central Oro"}, -- Usher } m["ngf-pan"] = { "Paniai Lakes", 6035631, "ngf", aliases = {"Wissel Lakes", "Wissel Lakes-Kemandoga River"}, -- alternative names given by Wikipedia } m["ngf-pek"] = { "Peka", nil, "ngf-rai", aliases = {"Peka River"}, -- Usher? } m["ngf-pom"] = { "Pomoikan", nil, "ngf-sad", } m["ngf-rai"] = { "Rai Coast", 7283663, "ngf-mad", aliases = {"South Madang"}, -- Usher } m["ngf-sab"] = { "Sabakor", -- [[w:Sabakor languages]] redirects to [[w:Asmat–Kamrau languages]] nil, -- 55994614 is for [[Category:Kamrau Bay languages]], which exists on enwiki "ngf-ask", aliases = {"Kamrau Bay"}, -- Usher } m["ngf-sad"] = { "Southern Adelbert", 12633980, "ngf-ksa", aliases = {"South Adelbert", -- Glottolog "Southern Adelbert Range", -- Z'graggen (1980) "Sogeram and Tomul Rivers"}, -- Usher (2020)? } m["ngf-sak"] = { "Sau-Angal-Kewa", nil, "ngf-khu", aliases = {"Southern Highlands"}, -- Usher } m["ngf-san"] = { "Sankwep", nil, "ngf-huo", aliases = {"Nabak-Momolili", -- Pawley-Hammarström, "Southwest Huon", -- Usher }, } m["ngf-sbh"] = { "South Bird's Head", 7566330, "ngf", } m["ngf-sim"] = { "Simbu", nil, "ngf-chw", } m["ngf-sog"] = { "Sogeram", 86750419, "ngf-sad", aliases = {"Sogeram River", -- Usher "Wanang"}, } m["ngf-sop"] = { "Sopac", nil, "ngf-ehu", aliases = {"Momare-Migabac", -- Pawley-Hammarström, "Masaweng River", -- Usher }, } m["ngf-taa"] = { "Tainae-Akoye", nil, "ngf-ata", aliases = {"Akoye-Tainae"}, -- Usher } m["ngf-tai"] = { "Tairora", nil, "ngf-kai", aliases = {"Tairoric", -- Glottolog, "East Kainantu", -- Usher }, } m["ngf-tib"] = { "Tiboran", nil, "ngf-nad", aliases = {"Nuclear Tibor", -- Glottolog, excluding Wanambre/Mokati "Tiboran River", -- Usher (2020) "Tibor", -- Pick (2020) and Glottolog including Wanambre/Mokati } } m["ngf-tna"] = { "Tangko-Nakai", nil, "ngf-okk", aliases = {"Central Ok"}, -- Usher } m["ngf-uru"] = { "Uruwa", nil, "ngf-fin", aliases = {"Uruwa River"}, -- Usher? } m["ngf-usi"] = { "Utu-Silopi", nil, "ngf-han", aliases = {"Silopi-Utu"}, -- Usher } m["ngf-waa"] = { "Wantoat-Awara", -- not in Usher but Wantoat and Awara form a dialect chain nil, "ngf-wan", aliases = {"Awara-Wantoat"}, -- per Wikipedia } m["ngf-wah"] = { "Wahgi", -- [[w:Wahgi languages]] redirects to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Wahgi Valley"}, -- Usher } m["ngf-wan"] = { "Wantoatic", nil, "ngf-fin", aliases = {"Wantoat", "Wantoat River", -- Usher? }, } m["ngf-war"] = { "Warup", 12645082, "ngf-fin", aliases = {"Warup River"}, -- Usher? } m["ngf-woj"] = { "Wojokesic", nil, "ngf-ang", aliases = {"Northeast Kratke Range"}, -- Usher } m["ngf-wok"] = { "West Ok", nil, "ngf-okk", aliases = {"Kwer-Kopkaka-Burumakok"}, -- Glottolog, Pawley-Hammarström } m["ngf-wso"] = { "West Sogeram", nil, "ngf-sog", aliases = {"Mand-Nend", -- Usher "Atan", -- Wurm following Z'graggen }, } m["ngf-yag"] = { "Yaganon", -- placed in Rai Coast by Glottolog and Pawley-Hammarström 35323986, "ngf-mad", aliases = {"Yaganon River"}, -- Usher } m["ngf-yal"] = { "Yali", -- considered a single language by Wikipedia 8047468, "ngf-ngn", aliases = {"Ngalik"}, -- Glottolog, Pawley-Hammarström } m["ngf-yar"] = { "Yareban", 16977672, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Musa River"}, } m["ngf-ynu"] = { "Yau-Nungon", 12953319, -- for the single Yau language in Wikipedia ([[w:Yau language (Trans–New Guinea)]]) "ngf-uru", } m["ngf-yup"] = { "Yupna", nil, "ngf-fin", aliases = {"Yupna River"}, -- Usher? } m["nic"] = { "Niger-Congo", 33838, aliases = {"Niger-Kordofanian"}, } m["nic-alu"] = { "Alumic", 4737355, "nic-plt", } m["nic-bas"] = { "Basa", 4866154, "nic-knj", } m["nic-bbe"] = { "Eastern Beboid", nil, "nic-beb", } m["nic-bco"] = { "Benue-Congo", 33253, "nic-vco", } m["nic-bcr"] = { "Bantoid-Cross", 806983, "nic-bco", } m["nic-bdn"] = { "Northern Bantoid", nil, "nic-bod", aliases = {"North Bantoid"}, } m["nic-bds"] = { "Southern Bantoid", 3183152, "nic-bod", aliases = {"Wide Bantu", "Bin"}, } m["nic-beb"] = { "Beboid", 813549, "nic-bds", } m["nic-ben"] = { "Bendi", 4887065, "nic-bcr", } m["nic-beo"] = { "Beromic", 4894642, "nic-plt", } m["nic-bod"] = { "Bantoid", 806992, "nic-bcr", } m["nic-buk"] = { "Buli-Koma", nil, "nic-ovo", } m["nic-bwa"] = { "Bwa", 12628562, "nic-gur", other_names = {"Bwamu", "Bomu"}, } m["nic-cde"] = { "Central Delta", 3813191, "nic-cri", } m["nic-cri"] = { "Cross River", 1141096, "nic-bcr", } m["nic-dag"] = { "Dagbani", nil, "nic-wov", } m["nic-dak"] = { "Dakoid", 1157745, "nic-bdn", } m["nic-dge"] = { "Escarpment Dogon", 5397128, "qfa-dgn", } m["nic-dgw"] = { "West Dogon", nil, "qfa-dgn", } m["nic-eko"] = { "Ekoid", 1323395, "nic-bds", } m["nic-eov"] = { "Eastern Oti-Volta", nil, "nic-ovo", aliases = {"Samba"}, } m["nic-fru"] = { "Furu", 5509783, "nic-bds", } m["nic-gne"] = { "Eastern Gurunsi", 12633072, "nic-gns", aliases = {"Eastern Grũsi"}, } m["nic-gnn"] = { "Northern Gurunsi", nil, "nic-gns", aliases = {"Northern Grũsi"}, } m["nic-gnw"] = { "Western Gurunsi", nil, "nic-gns", aliases = {"Western Grũsi"}, } m["nic-gns"] = { "Gurunsi", 721007, "nic-gur", aliases = {"Grũsi"}, } m["nic-gre"] = { "Eastern Grassfields", 5330160, "nic-grf", } m["nic-grf"] = { "Grassfields", 750932, "nic-bds", aliases = {"Grassfields Bantu", "Wide Grassfields"}, } m["nic-grm"] = { "Gurma", 30587833, "nic-ovo", } m["nic-grs"] = { "Southwest Grassfields", 7571285, "nic-grf", } m["nic-gur"] = { "Gur", 33536, "alv-sav", aliases = {"Voltaic"}, } m["nic-ief"] = { "Ibibio-Efik", 2743643, "nic-lcr", } m["nic-jer"] = { "Jera", nil, "nic-kne", } m["nic-jkn"] = { "Jukunoid", 1711622, "nic-pla", } m["nic-jrn"] = { "Jarawan", 1683430, "nic-mba", } m["nic-jrw"] = { "Jarawa", 35423, "nic-jrn", } m["nic-kam"] = { "Kambari", 6356294, "nic-knj", } m["nic-ktl"] = { "Katloid", nil, "nic", } m["nic-kau"] = { "Kauru", nil, "nic-kne", } m["nic-kmk"] = { "Kamuku", 6359821, "nic-knj", } m["nic-kne"] = { "East Kainji", 5328687, "nic-knj", } m["nic-knj"] = { "Kainji", 681495, "nic-pla", } m["nic-knn"] = { "Northwest Kainji", 7060098, "nic-knj", } m["nic-ktl"] = { "Katloid", 6377681, "nic", aliases = {"Katla", "Katla-Tima"}, } m["nic-lcr"] = { "Lower Cross River", 3813193, "nic-cri", } m["nic-mam"] = { "Mamfe", 2005898, "nic-bds", aliases = {"Nyang"}, } m["nic-mba"] = { "Mbam", 687826, "nic-bds", } m["nic-mbc"] = { "Mba", 6799561, "nic-ubg", } m["nic-mbw"] = { "West Mbam", nil, "nic-mba", } m["nic-mmb"] = { "Mambiloid", 1888151, other_names = {"North Bantoid"}, -- per Wikipedia, North Bantoid is the parent family "nic-bdn", } m["nic-mom"] = { "Momo", 6897393, "nic-grf", } m["nic-mre"] = { "Moré", nil, "nic-wov", } m["nic-ngd"] = { "Ngbandi", 36439, "nic-ubg", } m["nic-nge"] = { "Ngemba", 7022271, "nic-gre", } m["nic-ngk"] = { "Ngbaka", 3217499, "nic-ubg", } m["nic-nin"] = { "Ninzic", 7039282, "nic-plt", } m["nic-nka"] = { "Nkambe", 7042520, "nic-gre", } m["nic-nkb"] = { "Baka", nil, "nic-nkw", } m["nic-nke"] = { "Eastern Ngbaka", nil, "nic-ngk", } m["nic-nkg"] = { "Gbanziri", nil, "nic-nkw", } m["nic-nkk"] = { "Kpala", nil, "nic-nkw", } m["nic-nkm"] = { "Mbaka", nil, "nic-nkw", } m["nic-nkw"] = { "Western Ngbaka", nil, "nic-ngk", } m["nic-npd"] = { "North Plateau Dogon", nil, "qfa-dgn", } m["nic-nun"] = { "Nun", 13654297, "nic-gre", } m["nic-nwa"] = { "Nanga-Walo", nil, "qfa-dgn", } m["nic-ogo"] = { "Ogoni", 2350726, "nic-cri", aliases = {"Ogonoid"}, } m["nic-ovo"] = { "Oti-Volta", 1157178, "nic-gur", } m["nic-pla"] = { "Platoid", 453244, "nic-bco", aliases = {"Central Nigerian"}, } m["nic-plc"] = { "Central Plateau", 5061668, "nic-plt", } m["nic-pld"] = { "Plains Dogon", nil, "qfa-dgn", } m["nic-ple"] = { "East Plateau", 5329154, "nic-plt", } m["nic-pls"] = { "South Plateau", 7568236, "nic-plt", aliases = {"Jilic-Eggonic"}, } m["nic-plt"] = { "Plateau", 1267471, "nic-pla", } m["nic-ras"] = { "Rashad", 3401986, "nic", } m["nic-rnc"] = { "Central Ring", nil, "nic-rng", } m["nic-rng"] = { "Ring", 2269051, "nic-grf", aliases = {"Ring Road"}, } m["nic-rnn"] = { "Northern Ring", nil, "nic-rng", } m["nic-rnw"] = { "Western Ring", nil, "nic-rng", } m["nic-ser"] = { "Sere", 7453058, "nic-ubg", } m["nic-shi"] = { "Shiroro", 7498953, "nic-knj", aliases = {"Pongu"}, } m["nic-sis"] = { "Sisaala", 36532, "nic-gnw", } m["nic-tar"] = { "Tarokoid", 2394472, "nic-plt", } m["nic-tiv"] = { "Tivoid", 752377, "nic-bds", } m["nic-tvc"] = { "Central Tivoid", nil, "nic-tiv", } m["nic-tvn"] = { "Northern Tivoid", nil, "nic-tiv", } m["nic-ubg"] = { "Ubangian", 33932, "nic-vco", -- or none } m["nic-uce"] = { "East-West Upper Cross River", nil, "nic-ucr", } m["nic-ucn"] = { "North-South Upper Cross River", nil, "nic-ucr", } m["nic-ucr"] = { "Upper Cross River", 4108624, "nic-cri", aliases = {"Upper Cross"}, } m["nic-vco"] = { "Volta-Congo", 37228, "alv", } m["nic-wov"] = { "Western Oti-Volta", nil, "nic-ovo", aliases = {"Moré-Dagbani"} } m["nic-ykb"] = { "Yukubenic", 16909196, "nic-plt", aliases = {"Oohum"}, } m["nic-ymb"] = { "Yambasa", nil, "nic-mba", } m["nic-yon"] = { "Yom-Nawdm", nil, "nic-ovo", aliases = {"Moré-Dagbani"} } m["njo"] = { "Ao", 28433, "sit-aao", aliases = {"Ao Naga"}, } m["nub"] = { "Nubian", 1517194, "sdv-nes", } m["nub-hil"] = { "Hill Nubian", 5762211, "nub", aliases = {"Kordofan Nubian"}, } m["omq"] = { "Oto-Manguean", 33669, } m["omq-cha"] = { "Chatino", 35111, "omq-zap", } m["omq-chi"] = { "Chinantecan", 35828, "omq", } m["omq-cui"] = { "Cuicatec", 616024, "omq-mix", } m["omq-maz"] = { "Mazatecan", 36230, "omq", aliases = {"Mazatec"}, } m["omq-mix"] = { "Mixtecan", 21083066, "omq", } m["omq-mxt"] = { "Mixtec", 36363, "omq-mix", } m["omq-otp"] = { "Oto-Pamean", 1270220, "omq", } m["omq-pop"] = { "Popolocan", 5132273, "omq", } m["omq-tri"] = { "Triqui", 780200, "omq-mix", aliases = {"Trique"}, } m["omq-zap"] = { "Zapotecan", 8066463, "omq", } m["omq-zpc"] = { "Zapotec", 13214, "omq-zap", } m["omv"] = { "Omotic", 33860, "afa", } m["omv-aro"] = { "Aroid", 3699526, "omv", aliases = {"Ari-Banna", "South Omotic", "Somotic"}, } m["omv-diz"] = { "Dizoid", 430251, "omv", aliases = {"Maji", "Majoid"}, } m["omv-eom"] = { "East Ometo", 20527288, "omv-ome", } m["omv-gon"] = { "Gonga", 4143043, "omv", aliases = {"Kefoid"}, } m["omv-mao"] = { "Mao", 1351495, "omv", } m["omv-nom"] = { "North Ometo", nil, "omv-ome", } m["omv-ome"] = { "Ometo", 36310, "omv", } m["oto"] = { "Otomian", 130372545, "omq-otp", } m["oto-otm"] = { "Otomi", 36355, "oto", } m["paa"] = { "Papuan", 236425, "qfa-not", } m["paa-aia"] = { "Aian", 4767739, -- Annaberg languages "paa-ram", aliases = {"Middle Ramu", -- Foley (with Rao), "Annaberg", -- with Rao "Aram-Aren", -- Usher }, } m["paa-alp"] = { "Alor-Pantar", 3502429, "paa-tap", } m["paa-amu"] = { "Amto-Musan", 480281, aliases = {"Samaia River"}, } m["paa-ani"] = { "Anim", 55603991, aliases = {"Fly River"}, } m["paa-ara"] = { "Arapesh", 4784223, "paa-koa", aliases = {"Arapeshan"}, -- Foley } m["paa-arf"] = { "Arafundi", 4783702, } m["paa-ata"] = { "Ataitan", 4812652, "paa-ram", aliases = {"Tangu", -- Foley "Tanggu", -- alternative name given by Wikipedia "Moam River", -- Usher }, } m["paa-baa"] = { "Bayono-Awbono", 2424781, } m["paa-bai"] = { "Baining", 748487, aliases = {"East New Britain"}, } m["paa-baw"] = { "Bosngun-Awar", nil, "paa-ott", aliases = {"East Ramu Coast", -- Usher "Bosman-Awar", -- Wikipedia }, } m["paa-bew"] = { "Bewani", -- [[w:Bewani languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 16113460, "paa-bor", aliases = {"Poal River"}, -- Usher } m["paa-boa"] = { "Boazi", 48803717, "paa-mby", aliases = {"Lake Murray"}, -- Usher } m["paa-bor"] = { "Border", 1752158, aliases = {"Upper Tami", "Tami River-Bewani Range", -- Usher }, } m["paa-bul"] = { "Bulaka River", 4987195, aliases = {"Yelmek-Maklew", "Jabga"}, -- Yelmek-Maklew in Evans (2018) and Gregor (2021) } m["paa-bvi"] = { "Betaf-Vitou", -- Glottolog nil, "paa-tor", aliases = {"Vitou-Betaf", -- Wikipedia "Fitou-Tena", -- Usher "Manirem", }, } m["paa-clp"] = { "Central Lakes Plain", -- [[w:Central Lakes Plain languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q86780132 is for the corresponding category, which exists in enwiki "paa-lpl", aliases = {"East Tariku", -- Glottolog "Central Lakes Plains", -- Usher }, } m["paa-dtu"] = { "Doso-Turumsa", 16917784, -- possibly related to East Strickland languages aliases = {"Soari River"}, -- Usher's name } m["paa-ebh"] = { "East Bird's Head", 338064, aliases = {"Mantion-Meax", "Mantion-Meyah", -- Mantion-Meax is Wikipedia's term "Southeast Bird's Head", -- Usher (2020) }, } m["paa-eel"] = { "Eastern Eleman", nil, "paa-ele", aliases = {"East Eleman"}, } m["paa-egb"] = { "East Geelvink Bay", 1497678, aliases = {"Geelvink Bay", "East Cenderawasih"}, -- Geelvink Bay per Glottolog } m["paa-eke"] = { "East Keram", nil, "paa-ker", } m["paa-ele"] = { "Eleman", 3034298, aliases = {"Kerema Bay"}, } m["paa-elp"] = { "East Lakes Plain", -- [[w:East Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]; but Croatian Wikipedia has an entry 12633078, "paa-lpl", aliases = {"East Lakes Plains"}, -- Usher } m["paa-epw"] = { "Eastern Pauwasi", 16115496, aliases = {"East Pauwasi"}, } m["paa-etf"] = { "Eastern Trans-Fly", 5330530, aliases = {"Oriomo"}, -- in increasing recent use, probably originating in Evans (2018) } m["paa-eti"] = { "East Timor", 15496066, "paa-tap", aliases = {"Oirata-Makasae", -- Wikipedia's name "Eastern Timor", -- alternative name given by Wikipedia "Fataluku-Makasai", "Oirata-Makasai", -- alternative names given by Wikidata }, } m["paa-fas"] = { "Fas", 3502658, aliases = {"Baibai-Fas"}, -- Glottolog's name } m["paa-flp"] = { "Far West Lakes Plain", -- [[w:Wapoga River languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q86808337 is for the corresponding Wapoga languages category, which exists in enwiki "paa-lpl", aliases = {"Rasawa", -- Clouse (1997) "Wapoga River", -- Usher, including Kehu/Keuw (unclassified by others) }, } m["paa-gkw"] = { "Greater Kwerba", 12635134, aliases = {"West Foja Range", -- Usher "Kwerbic", -- Wikipedia "Kwerba", -- Foley (2018) }, } m["paa-gto"] = { "Galela-Tobelo", nil, "paa-nnh", aliases = {"Mainland North Halmaheran", -- Glottolog "Mainland North Halmahera", "Northeast Halmahera", -- alternative names "Northeast Halmaheran", -- Wikipedia, from Verhoeve 1988 }, } m["paa-hya"] = { "Heyo-Yahang", nil, "paa-mam", aliases = {"Yahang-Heyo"}, -- Wikipedia's name } m["paa-ing"] = { "Inland Gulf", 6034783, "paa-ani", aliases = {"Inland Gulf of Papua"}, -- Glottolog } m["paa-isk"] = { "Inner Sko", 65043889, "paa-sko", aliases = {"Skouic", -- Glottolog "West Vanimo Coast", -- Usher "Western Skou", -- Wikipedia "Inner Skou", "Nuclear Skou", -- alternative names given by Wikipedia }, } m["paa-iwa"] = { "Iwam", 15147853, "paa-sep", } m["paa-kae"] = { "Kamula-Elevala", 130390498, -- often placed in TNG aliases = {"Kamula-Elevala River"}, } m["paa-kan"] = { "Kanum", -- removed from Tonda by Glottolog nil, "paa-ton", } m["paa-kay"] = { "Kayagaric", 7566330, aliases = {"Kayagar", -- formerly common "Cook River"}, -- per Usher (2020) } m["paa-ker"] = { "Keram", 48768173, -- often grouped within or coordinate with the Ramu languages aliases = {"Keram River"}, } m["paa-kiw"] = { "Kiwaian", 338449, aliases = {"Kiwai"}, -- formerly common, still sees some use } m["paa-kko"] = { "Kaure-Kosare", -- rejected by Pawley-Hammarström but accepted by Glottolog, Foley (2018) and Usher (2020) 48767891, aliases = {"Nawa River"}, -- Usher's term } m["paa-koa"] = { "Kombio-Arapesh", 16115049, "paa-trr", aliases = {"Kombio-Arapeshan", -- Laycock, who includes Wom "Kombio-Arapesh-Urat", -- Glottolog, including Urat }, } m["paa-kol"] = { "Kolopom", 6427807, } m["paa-kom"] = { "Kombio", 65044238, "paa-koa", aliases = {"Kombian", -- Laycock "Kombio-Yambes", -- Glottolog }, } m["paa-kun"] = { "Kunimaipan", 134973258, aliases = {"Northwest Wharton Range"}, -- per Usher (2020) -- often considered a subfamily of Goilalan } m["paa-kwa"] = { "Kwalean", 6450053, aliases = {"Humene-Uare"}, } m["paa-kwe"] = { "Kwerba proper", 12635134, "paa-gkw", aliases = {"Kwerba", -- Usher "Kwerbaic", -- Glottolog }, } m["paa-kwo"] = { "Kwomtari", 2075415, aliases = {"Kwomtari-Nai"}, -- Senu River is a larger unproven proposal } m["paa-lla"] = { "Loloda-Laba", -- a single language in Glottolog (Loloda-Laba) and Wikipedia (Loloda) 11732388, -- for the Loloda language "paa-gto", aliases = {"Loloda"}, -- Wikipedia's name } m["paa-lma"] = { "Left May", 614468, aliases = {"Arai River"}, -- per Usher (2020) -- Sometimes in a putative Arai-Samaia family along with Amto-Musan and the Pyu language } m["paa-lmu"] = { "Lepki-Murkim", -- Kembra accepted by Glottolog and Usher; not by Foley (2020) but does not exclude the possibility -- of a relationship 85776285, -- independent family per Glottolog, part of South Pauwasi River family (under Pauwasi) per Usher (2020) aliases = {"Lepki-Murkim-Kembra"}, -- Glottolog } m["paa-lpl"] = { "Lakes Plain", 6478969, aliases = {"Lakes Plains"}, } m["paa-lra"] = { "Lower Ramu", 65089469, "paa-ram", aliases = {"Ottilien-Misegian"}, -- alternative name given by Wikipedia } m["paa-lse"] = { "Lower Sepik", 7061700, aliases = {"Nor-Pondo"}, } m["paa-mai"] = { "Mairasi", 6736896, aliases = {"Mairasic"}, -- per Glottolog } m["paa-mal"] = { "Mailuan", 6735839, aliases = {"Cloudy Bay"}, } m["paa-mam"] = { "Maimai", -- Foley's Maimai is expanded 53679325, -- this is the code for the expanded Maimai with 6 languages, as opposed to the 3 in "Nuclear Maimai" "paa-trr", aliases = {"Nuclear Maimai", -- Glottolog's name "Maimai proper", -- Wikipedia's name }, } m["paa-man"] = { "Manubaran", 6752335, aliases = {"Mount Brown"}, } m["paa-mar"] = { "Marienberg", 1570589, "paa-trr", aliases = {"Marienberg Hills"}, -- Usher } m["paa-may"] = { "Maybratic", 4830892, -- the code for the Maybrat language in Wikipedia, which subsumes the two languages of this family -- putatively included in West Papuan but generally considered an isolated family aliases = {"Maybrat-Karon"}, } m["paa-mbi"] = { "Mbaham-Iha", 85784512, "qfa-dis", -- Papuan languages; Glottolog groups Karas (Kalamang) with Mbaham-Iha into a (mainland) West Bomberai -- family and stops there; Wikipedia, following Usher and Schapper (2022), groups Karas, Mbaham-Iha -- and the large Timor-Alor-Pantar family into a (Greater) West Bomberai family, saying that Karas is no -- closer to Mbaham-Iha than to Timor-Alor-Pantar. aliases = {"Mbahaam-Iha", -- used by Wikidata "Nuclear West Bomberai", -- Glottolog's name }, } m["paa-mby"] = { "Marind-Boazi-Yaqay", 3217484, "paa-ani", aliases = {"Marind-Boazi-Yaqai", -- Glottolog "Marind-Yakhai", -- Usher, without Boazi "Marind-Yaqai", -- Wikidata "Marind", -- alternative name given by Wikipedia "Marind-Arandai", -- alternative name given by Spanish Wikipedia }, } m["paa-mmu"] = { "Mandi-Muniwara", nil, "paa-mar", aliases = {"West Marienberg Hills"}, -- Usher } m["paa-mon"] = { "Monumbo", -- per Glottolog: "No evidence for the Bogia (Monumbo) languages being related to other Torricelli languages was ever presented" 16928417, aliases = {"Bogia", -- Glottolog "Bogia Bay", -- Usher (2020) }, } m["paa-mri"] = { "Marindic", -- [[w:Marindic languages]] redirects to [[w:Marind–Yaqai languages]] nil, "paa-mby", aliases = {"Marind"}, -- Usher; a single language } m["paa-nam"] = { "Nambu", 6961418, "paa-yam", aliases = {"East Morehead River"}, -- Usher } m["paa-nbo"] = { "North Bougainville", 749496, } m["paa-ndu"] = { "Ndu", 3217498, "paa-sep", -- Not accepted by Glottolog aliases = {"Ndu-Nggala"}, -- Usher } m["paa-ngk"] = { "Ngkolmpu", -- considered a single language by Wikipedia 5908646, "paa-kan", aliases = {"Ngkantr", -- Glottolog "Ngkolmpu Kanum", -- Wikipedia "Ngkontar", -- alternative name given by Wikipedia "Kanum", -- used by Wikidata }, } m["paa-nha"] = { "North Halmahera", 3217358, -- possibly in a proposed West Papuan family or an independent family } m["paa-nim"] = { "Nimboran", 12638426, aliases = {"Nimboranic", -- per Glottolog "Grime River", -- per Usher (2020) } } m["paa-nnd"] = { "Nuclear Ndu", nil, "paa-ndu", aliases = {"Ndu", -- Usher, with Boiken/Boikin "Ndu proper", -- Wikipedia }, } m["paa-nnh"] = { "Northern North Halmahera", nil, "paa-nha", aliases = {"Northern North Halmaheran", -- Glottolog "Halmahera", -- Usher "Core Halmaheran", -- Wikipedia }, } m["paa-nto"] = { "Namla-Tofanma", 16918187, -- independent family per Glottolog and Foley (2018), part of West Pauwasi family (under Pauwasi) per Usher (2020) } m["paa-ott"] = { "Ottilien", 7109477, "paa-lra", aliases = {"Ramu Coast", -- Usher "Watam-Awar-Gamay", -- alternative name given by Wikipedia }, } m["paa-pah"] = { "Pahoturi River", 17049141, aliases = {"Pahoturi"}, -- per Glottolog } m["paa-pal"] = { "Palei", -- Laycock adds Agi and Nabi/Nambi(-Metan) 65089113, "paa-wpa", aliases = {"Nuclear Palai"}, } m["paa-pia"] = { "Piawi", -- per Wikipedia, grouped with Arafundi languages to form Upper Yuat, which is a sister to Madang 7190400, aliases = {"Schraeder Range", -- Usher? "Waibuk"}, } m["paa-pio"] = { "Piore River", 65043152, "paa-sko", aliases = {"Barupu Lagoon", -- Glottolog "Lagoon", -- alternative name given by Wikipedia }, } m["paa-por"] = { "Porapora", -- Foley includes Ambakich (which we, Glottolog, and Usher treat as Keram) 65044258, "paa-ram", aliases = {"Agoan", -- Glottolog "Porapora River", -- Usher "core Grass", -- alternative name given by Wikipedia }, } m["paa-ram"] = { "Ramu", 3442808, aliases = {"Ramu River"}, -- per Usher (2020) } m["paa-rsa"] = { "Rasawa-Saponi", -- [[w:Rasawa-Saponi languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q9859418 is for the coresponding category, which exists in the Piedmontese Wikipedia (?!) "paa-flp", aliases = {"Rombak River"}, -- Usher } m["paa-rub"] = { "Ruboni", 6875319, "paa-lra", aliases = {"Misegian", -- Wikipedia's name "Mikarew", -- alternative name given by Wikipedia "Ruboni Range"}, -- Usher } m["paa-saa"] = { "Samarokena-Airoran", 96417699, "paa-gkw", aliases = {"Apauwar Coast"}, -- Usher } m["paa-sah"] = { "Sahu", nil, "paa-nnh", } m["paa-sbo"] = { "South Bougainville", 3217380, } m["paa-sen"] = { "Sentani", 17044584, -- no consensus on higher affiliations, if any aliases = {"Sentanic", "Demta-Sentani", "Demta-Lake Sentani"}, -- Sentanic per Glottolog, Demta-Sentani per Wikipedia } m["paa-sep"] = { "Sepik", 3508772, } m["paa-shi"] = { "Serra Hills", 65043154, "paa-sko", } m["paa-sko"] = { "Sko", 953509, aliases = {"Skou"}, } m["paa-sng"] = { "Senagi", 2066550, } m["paa-taa"] = { "Taikat-Awyi", -- [[w:Taikat languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 12643265, "paa-bor", aliases = {"Taikat", -- Foley "Upper Tami River", -- Usher }, } m["paa-tam"] = { "Tamolan", 7681634, "paa-ram", aliases = {"Guam River"}, -- Usher } m["paa-tap"] = { "Timor-Alor-Pantar", 16590002, } m["paa-teb"] = { "Teberan", 7692052, -- Often grouped with Trans-New Guinea, but per Pawley-Hammarström (2018), it has "weaker or disputed claims to membership in TNG". aliases = {"Dadibi-Folopa"}, } m["paa-tir"] = { "Tirio", 7809225, "paa-ani", aliases = {"Nuclear Lower Fly", -- Pawley-Hammarström ("Lower Fly" includes Abom) "Nuclear Tirio", -- Glottolog ("Tirio" includes Abom) "Lower Fly River", -- Usher (without Abom) }, } m["paa-tki"] = { "Turama-Kikori", 7853680, aliases = {"Turama-Kikorian", "Rumu-Omati River"}, } m["paa-ton"] = { "Tonda", 8581005, "paa-yam", aliases = {"West Morehead River"}, -- Usher } m["paa-too"] = { "Tor-Orya", 16590099, aliases = {"Orya-Tor"}, } m["paa-tor"] = { "Tor", -- [[w:Tor languages]] redirects to [[w:Orya–Tor languages]] nil, "paa-too", } m["paa-trr"] = { "Torricelli", 1333831, } m["paa-tti"] = { "Ternate-Tidore", nil, "paa-nnh", } m["paa-wal"] = { "Walio", 16919872, -- Often placed in Sepik (e.g. by Laycock and Z'graggen (1975)), but not by Foley (2018), and not accepted by Glottolog. aliases = {"Walioic", -- Glottolog "Central Leonhard Schultze River", }, } m["paa-wap"] = { "Wapei", -- Glottolog includes Nabi/Nambi(-Metan) in Wapeic 65089115, "paa-wpa", aliases = {"Wapeic"}, -- Glottolog } m["paa-war"] = { "Waris", -- [[w:Waris languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 12645076, "paa-bor", aliases = {"Warisic", -- Glottolog "Bapi River", -- Usher (without Manem or Senggi) }, } m["paa-wbh"] = { "West Bird's Head", 5330530, -- Kuwani is sometimes included; probably related to North Halmahera languages. } m["paa-wel"] = { "Western Eleman", nil, "paa-ele", aliases = {"West Eleman"}, } m["paa-wig"] = { "West Inland Gulf", nil, "paa-ing", aliases = {"West Inland Gulf of Papua"}, -- Glottolog } m["paa-wke"] = { "West Keram", nil, "paa-ker", aliases = {"Koam", "Mongol-Langam", "Ulmapo"}, -- Koam used by Foley, Ulmapo used by Glottolog } m["paa-wko"] = { "Wára-Kómnzo", -- since we split out Kómnzo as a separate language 11732474, -- for the Wara language "paa-ton", aliases = {"Anta-Komnzo-Wára-Wérè-Kémä", -- Glottolog's name "Wára", "Wara", -- Wikipedia }, } m["paa-wlp"] = { "West Lakes Plain", -- [[w:Tariku languages]] redirects to [[w:Lakes Plain languages]] 47007503, -- actually for "Tariku languages", which per Wikipedia covers Fayu, Kirikiri, Iau and Tause "paa-lpl", aliases = {"West Tariku", -- Glottolog "West Lakes Plains"}, -- Usher, with Edopi/Iau } m["paa-wpa"] = { "Wapei-Palei", 65043156, "paa-trr", } m["paa-wpw"] = { -- paa-wpa already used by Wapei-Palei "Western Pauwasi", -- 2 langs per Glottolog and Pawley-Hammarström; Usher also includes Namla-Tofanma and Usku 85815062, aliases = {"West Pauwasi", -- Wikipedia, Usher "Tebi-Towe", "Dubu-Towei"}, } m["paa-yam"] = { "Yam", 15062272, aliases = {"Morehead and Upper Maro River", "Morehead River", -- Usher }, } m["paa-yaq"] = { "Yaqayic", -- [[w:Yaqai languages]] redirects to [[w:Marind–Yaqai languages]] nil, "paa-mby", aliases = {"Yakhai-Warkay"}, -- Usher } m["paa-ysa"] = { "Yawa-Saweru", 3217545, aliases = {"Yawa", "Yawan", "Yapen"}, } m["paa-yua"] = { "Yuat", 8060096, } m["phi"] = { "Philippine", 947858, "poz", } m["phi-kal"] = { "Kalamian", 3217466, "phi", aliases = {"Calamian"}, } m["poz"] = { "Malayo-Polynesian", 143158, "map", } m["poz-aay"] = { "Admiralty Islands", 2701306, "poz-oce", } m["poz-bnn"] = { "North Bornean", 1427907, "poz", } m["poz-bre"] = { "East Barito", 2701314, "poz", } m["poz-brw"] = { "West Barito", 2761679, "poz", } m["poz-bss"] = { "Bali-Sasak-Sumbawa", 3396043, "poz-msa", } m["poz-btk"] = { "Bungku-Tolaki", 3217381, "poz-clb", } m["poz-cet"] = { "Central-Eastern Malayo-Polynesian", 2269883, "poz", } m["poz-clb"] = { "Celebic", 1078041, "poz", } m["poz-cln"] = { "New Caledonian", 3091221, "poz-ocs", } m["poz-cma"] = { "Central Maluku", 3217479, "poz-cet", } m["poz-hce"] = { "Halmahera-Cenderawasih", 2526616, "pqe", } m["poz-kal"] = { "Kaili-Pamona", 3217465, "poz-clb", } m["poz-lgx"] = { "Lampungic", 49215, "poz", } m["poz-mcm"] = { "Malayo-Chamic", nil, "poz-msa", } m["poz-mic"] = { "Micronesian", 420591, "poz-occ", } m["poz-mly"] = { "Malayic", 662628, "poz-mcm", } m["poz-msa"] = { "Malayo-Sumbawan", 1363818, "poz", } m["poz-mun"] = { "Muna-Buton", 3037924, "poz-clb", } m["poz-nws"] = { "Northwest Sumatran", 2071308, "poz", } m["poz-occ"] = { "Central-Eastern Oceanic", 2068435, "poz-oce", } m["poz-oce"] = { "Oceanic", 324457, "pqe", } m["poz-ocs"] = { "Southern Oceanic", 3039118, "poz-occ", } m["poz-ocw"] = { "Western Oceanic", 2701282, "poz-oce", } m["poz-pcc"] = { "Central Pacific", 3130237, "poz-occ", } m["poz-pep"] = { "Eastern Polynesian", 390979, "poz-pnp", } m["poz-pnp"] = { "Nuclear Polynesian", 743851, "poz-pol", } m["poz-pol"] = { "Polynesian", 390979, "poz-pcc", } m["poz-san"] = { "Sabahan", 3217517, "poz-bnn", } m["poz-sbj"] = { "Sama-Bajaw", 2160409, "poz", } m["poz-slb"] = { "Saluan-Banggai", 3217519, "poz-clb", } m["poz-sls"] = { "Southeast Solomonic", 3119671, "poz-occ", } m["poz-ssw"] = { "South Sulawesi", 2778190, "poz", } m["poz-stm"] = { "St. Matthias", 6484143, "poz-oce", aliases = {"St Matthias"}, } m["poz-swa"] = { "North Sarawakan", 538569, "poz-bnn", } m["poz-tem"] = { "Temotu", 3075769, "poz-oce", } m["poz-tim"] = { "Timoric", 7806987, "poz-cet", } m["poz-ton"] = { "Tongic", 3397263, "poz-pol", } m["poz-tot"] = { "Tomini-Tolitoli", 3217541, "poz-clb", } m["poz-vnc"] = { "Central Vanuatu", 5061988, "poz-ocs", } m["poz-vnn"] = { "North Vanuatu", 85789650, "poz-ocs", } m["poz-vns"] = { "South Vanuatu", 3070173, "poz-ocs", } m["poz-wot"] = { "Wotu-Wolio", 1041317, "poz-clb", aliases = {"Island Kaili-Wolio"}, -- Glottolog } m["pqe"] = { "Eastern Malayo-Polynesian", 2269883, "poz-cet", } m["qfa-adc"] = { "Central Great Andamanese", nil, "qfa-adm", } m["qfa-adm"] = { "Great Andamanese", 3515103, } m["qfa-adn"] = { "Northern Great Andamanese", nil, "qfa-adm", } m["qfa-ads"] = { "Southern Great Andamanese", nil, "qfa-adm", } m["qfa-ain"] = { "Ainuic", 50111972, aliases = {"Ainu"}, } m["qfa-bej"] = { "Be-Jizhao", nil, "qfa-bet", } m["qfa-bet"] = { "Be-Tai", 12627719, "qfa-tak", aliases = {"Tai-Be", "Daic-Beic", "Beic-Daic"}, } m["qfa-buy"] = { "Buyang", 1109927, "qfa-kra", } m["qfa-cka"] = { "Chukotko-Kamchatkan", 33255, } m["qfa-cre"] = { "creole", 33289, "crp", } m["qfa-ckn"] = { "Chukotkan", 2606732, "qfa-cka", } m["qfa-cnt"] = { "contact", 133253514, "qfa-not", } m["qfa-dis"] = { -- Languages that are not unclassifiable (qfa-unc) but where there is no consensus on classification. Usually -- this is because the languages are divergent and it's disputed whether they are isolates or distantly related -- to other languages. "disputed affiliation", nil, "qfa-not", categoryName = "Languages of disputed affiliation", } m["qfa-dgn"] = { "Dogon", 1234776, "nic", } m["qfa-dny"] = { "Dene-Yeniseian", 21103, aliases = {"Dené-Yeniseian"}, } m["qfa-hur"] = { "Hurro-Urartian", 1144159, } m["qfa-iso"] = { "isolate", 33648, "qfa-not", categoryName = "Language isolates", } m["qfa-kad"] = { "Kadu", -- considered either Nilo-Saharan or independent/none 1720989, } m["qfa-kms"] = { "Kam-Sui", 1023641, "qfa-tak", } m["qfa-kor"] = { "Koreanic", 11263525, } m["qfa-kra"] = { "Kra", 1022087, "qfa-tak", } m["qfa-lic"] = { "Hlai", 1023648, "qfa-tak", aliases = {"Hlaic"}, } m["qfa-mch"] = { -- used in both N and S America "Macro-Chibchan", 3438062, } m["qfa-mix"] = { "mixed", 33694, "qfa-cnt", } m["qfa-not"] = { "not a family", nil, "qfa-not", } m["qfa-onb"] = { "Be", nil, "qfa-bej", aliases = {"Ong-Be", "Beic"}, } m["qfa-ong"] = { "Ongan", 2090575, aliases = {"Angan", "South Andamanese", "Jarawa-Onge"}, } m["qfa-pid"] = { "pidgin", 33831, "crp", } m["qfa-sub"] = { "substrate", 20730913, "qfa-not", } m["qfa-tak"] = { "Kra-Dai", 34171, aliases = {"Tai-Kadai", "Kadai"}, } m["qfa-tyn"] = { "Tyrsenian", 1344038, } m["qfa-unc"] = { -- This corresponds to languages normally called "unclassified", i.e. there is insufficient data or research to -- classify them, whereas our [[:Category:Unclassified languages]] is just languages that no Wiktionary editor -- has classified yet (the family code in the language data is missing). "unclassifiable", 33956, "qfa-not", } m["qfa-xgs"] = { "Serbi-Mongolic", 108887939, } m["qfa-xgx"] = { "Para-Mongolic", 107619002, "qfa-xgs", } m["qfa-yen"] = { "Yeniseian", 27639, "qfa-dny", aliases = {"Yeniseic", "Yenisei-Ostyak"}, } m["qfa-yke"] = { "Ketic", nil, "qfa-yen", } m["qfa-yko"] = { "Kottic", nil, "qfa-yen", } m["qfa-yrn"] = { "Arinic", nil, "qfa-yen", } m["qfa-ypm"] = { "Pumpokolic", nil, "qfa-yen", } m["qfa-yuk"] = { "Yukaghir", 34164, aliases = {"Yukagir", "Jukagir"}, } m["qwe"] = { "Quechuan", 5218, } m["raj"] = { "Rajasthani", 13196, "inc-wes", protoLanguage = "inc-ogu", } m["roa"] = { "Romance", 19814, "itc", aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"}, protoLanguage = "la", } m["roa-asl"] = { "Asturleonese", 35390, "roa-ibe", protoLanguage = "roa-ole", } m["roa-cas"] = { "Castilian", 71924, "roa-ibe", aliases = {"Castillian", "Castilic", "Castillic"}, protoLanguage = "osp", } m["roa-dal"] = { "Dalmatian Romance", 97646077, "roa-itd", } m["roa-eas"] = { "Eastern Romance", 147576, "roa", } m["roa-emr"] = { "Emilian-Romagnol", 242648, "roa-git", } m["roa-gap"] = { "Galician-Portuguese", 9080204, "roa-ibe", aliases = {"Galician Romance", "Galaic-Portuguese"}, protoLanguage = "roa-opt", } m["roa-gar"] = { "Gallo-Romance", 500394, "roa-wes", } m["roa-itd"] = { "Italo-Dalmatian", 3313381, "roa-iwr", aliases = {"Central Romance"} } m["roa-itr"] = { "Italo-Romance", 3356483, "roa-itd", } m["roa-iwr"] = { "Italo-Western Romance", 112608, "roa", aliases = {"Italo-Western"}, } m["roa-git"] = { "Gallo-Italic", 516074, "roa-gar", aliases = {"Gallo-Italian", "Gallo-Cisalpine", "Cisalpine"}, } m["roa-grh"] = { "Gallo-Rhaetian", 97646466, "roa-gar", } m["roa-ibe"] = { "Ibero-Romance", 749533, "roa-wes", aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"} } m["roa-nar"] = { "Navarro-Aragonese", 133252927, "roa-ibe", protoLanguage = "roa-ona", } m["roa-oil"] = { "Oïl", 37351, "roa-grh", aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"}, protoLanguage = "fro", } m["roa-ocr"] = { "Occitano-Romance", 599958, "roa-gar", aliases = {"Gallo-Narbonnese", "East Iberian", "Eastern Iberian"}, } m["roa-rhe"] = { "Rhaeto-Romance", 515593, "roa-grh", aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"}, } m["roa-sou"] = { "Southern Romance", 145345, "roa", } m["roa-wes"] = { "Western Romance", 2714388, "roa-iwr", } --[=[ Exceptional language and family codes for South American Indian languages can use the prefix "sai-", though "sai" is no longer itself a family code. ]=]-- m["sai-ara"] = { "Araucanian", 626630, } m["sai-aym"] = { "Aymaran", 33010, } m["sai-bar"] = { "Barbacoan", 807304, aliases = {"Barbakoan"}, } m["sai-bor"] = { "Boran", 5371776, } m["sai-cah"] = { "Cahuapanan", 1025793, } m["sai-car"] = { "Cariban", 33090, aliases = {"Carib"}, } m["sai-cer"] = { "Cerrado", 98078151, "sai-jee", aliases = {"Amazonian Jê"}, } m["sai-chc"] = { "Chocoan", 1075616, aliases = {"Choco", "Chocó"}, } m["sai-cho"] = { "Chonan", 33019, aliases = {"Chon"}, } m["sai-cje"] = { "Central Jê", 18010843, "sai-cer", aliases = {"Akuwẽ"}, } m["sai-cpc"] = { "Chapacuran", 1062626, } m["sai-crn"] = { "Charruan", 3112423, aliases = {"Charrúan"}, } m["sai-ctc"] = { "Catacaoan", 5051139, } m["sai-guc"] = { "Guaicuruan", 1974973, "sai-mgc", aliases = {"Guaicurú", "Guaycuruana", "Guaikurú", "Guaycuruano", "Guaykuruan", "Waikurúan"}, } m["sai-guh"] = { "Guahiban", 944056, aliases = {"Guahiboan", "Guajiboan", "Wahivoan"}, } m["sai-gui"] = { "Guianan", nil, "sai-car", aliases = {"Guianan Carib", "Guiana Carib"}, } m["sai-har"] = { "Harákmbut", 1584402, "sai-hkt", aliases = {"Harákmbet"}, } m["sai-hkt"] = { "Harákmbut-Katukinan", 17107635, } m["sai-hrp"] = { "Huarpean", 1578336, aliases = {"Warpean", "Huarpe", "Warpe"}, } m["sai-jee"] = { "Jê", 1483594, "sai-mje", aliases = {"Gê", "Jean", "Gean", "Jê-Kaingang", "Ye"}, } m["sai-jir"] = { "Jirajaran", 3028651, aliases = {"Hiraháran"}, } m["sai-jiv"] = { "Jivaroan", 1393074, aliases = {"Hívaro", "Jibaro", "Jibaroan", "Jibaroana", "Jívaro"}, } m["sai-ktk"] = { "Katukinan", 2636000, "sai-hkt", aliases = {"Catuquinan"}, } m["sai-kui"] = { "Kuikuroan", nil, "sai-car", aliases = {"Kuikuro", "Nahukwa"}, } m["sai-map"] = { "Mapoyan", 61096301, "sai-ven", aliases = {"Mapoyo", "Mapoyo-Yabarana", "Mapoyo-Yavarana", "Mapoyo-Yawarana"}, } m["sai-mas"] = { "Mascoian", 1906952, aliases = {"Mascoyan", "Maskoian", "Enlhet-Enenlhet"}, } m["sai-mgc"] = { "Mataco-Guaicuru", 255512, } m["sai-mje"] = { "Macro-Jê", 887133, aliases = {"Macro-Gê"}, } m["sai-mtc"] = { "Matacoan", 2447424, "sai-mgc", } m["sai-mur"] = { "Muran", 33826, aliases = {"Mura"}, } m["sai-nad"] = { "Nadahup", 1856439, aliases = {"Makú", "Macú", "Vaupés-Japurá"}, } m["sai-nje"] = { "Northern Jê", 98078225, "sai-cer", aliases = {"Core Jê"}, } m["sai-nmk"] = { "Nambikwaran", 15548027, aliases = {"Nambicuaran", "Nambiquaran", "Nambikuaran"}, } m["sai-otm"] = { "Otomacoan", 3217503, aliases = {"Otomákoan", "Otomakoan"}, } m["sai-pan"] = { "Panoan", 1544537, "sai-pat", aliases = {"Pano"}, } m["sai-pat"] = { "Pano-Tacanan", 2475746, aliases = {"Pano-Tacana", "Pano-Takana", "Páno-Takána", "Pano-Takánan"}, } m["sai-pek"] = { "Pekodian", 107451736, "sai-car", aliases = {"South Amazonian Carib", "Southern Cariban", "Pekodi"}, } m["sai-pem"] = { "Pemongan", nil, "sai-ven", aliases = {"Pemong", "Pemóng", "Purukoto"}, } m["sai-pey"] = { "Peba-Yaguan", 174015, aliases = {"Peba-Yagua", "Yaguan", "Peban", "Yáwan"}, } m["sai-prk"] = { "Parukotoan", 107451482, "sai-car", aliases = {"Parukoto"}, } m["sai-sje"] = { "Southern Jê", 98078245, "sai-jee", } m["sai-tac"] = { "Tacanan", 3113762, "sai-pat", } m["sai-tar"] = { "Taranoan", 105097814, "sai-gui", aliases = {"Trio", "Tarano"}, } m["sai-tuc"] = { "Tucanoan", 788144, } m["sai-tyu"] = { "Ticuna-Yuri", 4467010, } m["sai-ucp"] = { "Uru-Chipaya", 2475488, aliases = {"Uru-Chipayan"}, } m["sai-ven"] = { "Venezuelan Cariban", nil, "sai-car", aliases = {"Venezuelan Carib", "Venezuelan", "Venezuelano"}, } m["sai-wic"] = { "Wichí", 3027047, } m["sai-wit"] = { "Witotoan", 43079317, aliases = {"Huitotoan", "Uitotoan"}, } m["sai-ynm"] = { "Yanomami", nil, aliases = {"Yanomam", "Shamatari", "Yamomami", "Yanomaman"}, } m["sai-yuk"] = { "Yukpan", nil, "sai-car", aliases = {"Yukpa", "Yukpano", "Yukpa-Japreria"}, } m["sai-zam"] = { "Zamucoan", 3048461, aliases = {"Samúkoan"}, } m["sai-zap"] = { "Zaparoan", 33911, aliases = {"Záparoan", "Saparoan", "Sáparoan", "Záparo", "Zaparoano", "Zaparoana"}, } m["sal"] = { "Salish", 33985, } m["sdv"] = { "Eastern Sudanic", 2036148, "ssa", } m["sdv-bri"] = { "Bari", nil, "sdv-nie", } m["sdv-daj"] = { "Daju", 956724, "sdv", } m["sdv-dnu"] = { "Dinka-Nuer", nil, "sdv-niw", } m["sdv-eje"] = { "Eastern Jebel", 3408878, "sdv", } m["sdv-kln"] = { "Kalenjin", 637228, "sdv-nis", } m["sdv-lma"] = { "Lotuko-Maa", nil, "sdv-nie", } m["sdv-lon"] = { "Northern Luo", nil, "sdv-luo", } m["sdv-los"] = { "Southern Luo", 7570103, "sdv-luo", } m["sdv-luo"] = { "Luo", nil, "sdv-niw", } m["sdv-nes"] = { "Northern Eastern Sudanic", 4810496, "sdv", aliases = {"Astaboran", "Ek Sudanic"}, } m["sdv-nie"] = { "Eastern Nilotic", 153795, "sdv-nil", } m["sdv-nil"] = { "Nilotic", 513408, "sdv", } m["sdv-nis"] = { "Southern Nilotic", 1552410, "sdv-nil", } m["sdv-niw"] = { "Western Nilotic", 3114989, "sdv-nil", } m["sdv-nma"] = { "Nandi-Markweta", nil, "sdv-kln", } m["sdv-nyi"] = { "Nyima", 11688746, "sdv-nes", aliases = {"Nyimang"}, } m["sdv-tmn"] = { "Taman", 3408873, "sdv-nes", aliases = {"Tamaic"}, } m["sdv-ttu"] = { "Teso-Turkana", 7705551, "sdv-nie", aliases = {"Ateker"}, } m["sel"] = { "Selkup", 34008, "syd", } m["sem"] = { "Semitic", 34049, "afa", } m["sem-ara"] = { "Aramaic", 28602, "sem-nwe", protoLanguage = "arc", } m["sem-arb"] = { "Arabic", 164667, "sem-cen", protoLanguage = "ar", } m["sem-are"] = { "Eastern Aramaic", 3410322, "sem-ara", } m["sem-arw"] = { "Western Aramaic", 3394214, "sem-ara", } m["sem-ase"] = { "Southeastern Aramaic", 3410322, "sem-are", } m["sem-can"] = { "Canaanite", 747547, "sem-nwe", } m["sem-cen"] = { "Central Semitic", 3433228, "sem-wes", } m["sem-cna"] = { "Central Neo-Aramaic", 3410322, "sem-are", } m["sem-eas"] = { "East Semitic", 164273, "sem", } m["sem-eth"] = { "Ethiopian Semitic", 163629, "sem-wes", aliases = {"Afro-Semitic", "Ethiopian", "Ethiopic", "Ethiosemitic"}, } m["sem-nna"] = { "Northeastern Neo-Aramaic", 2560578, "sem-are", } m["sem-nwe"] = { "Northwest Semitic", 162996, "sem-cen", } m["sem-osa"] = { "Old South Arabian", 35025, "sem-cen", aliases = {"Epigraphic South Arabian", "Sayhadic"}, } m["sem-sar"] = { "Modern South Arabian", 1981908, "sem-wes", } m["sem-wes"] = { "West Semitic", 124901, "sem", } m["sgn"] = { "sign", 34228, "qfa-not", } m["sgn-asl"] = { "American Sign Languages", nil, "sgn-fsl", } m["sgn-fsl"] = { "French Sign Languages", 5501921, "sgn", } m["sgn-gsl"] = { "German Sign Languages", 5551235, "sgn", } m["sgn-jsl"] = { "Japanese Sign Languages", 11722508, "sgn", } m["sio"] = { "Siouan", 34181, "nai-sca", } m["sio-dhe"] = { "Dhegihan", 3217420, "sio-msv", } m["sio-dkt"] = { "Dakotan", 4154122, "sio-msv", } m["sio-mor"] = { "Missouri River Siouan", 26807266, "sio", } m["sio-msv"] = { "Mississippi Valley Siouan", 12637104, "sio", } m["sio-ohv"] = { "Ohio Valley Siouan", 21070931, "sio", } m["sit"] = { "Sino-Tibetan", 45961, aliases = {"Trans-Himalayan"}, } m["sit-aao"] = { "Central Naga", 615474, "sit", } m["sit-alm"] = { "Almora", nil, "sit-whm", } m["sit-bai"] = { "Bai", 35103, "sit-mba", } m["sit-bdi"] = { "Bodish", 1814078, "sit", } m["sit-cln"] = { "Cai-Long", 107182612, "sit-mba", aliases = {"Ta-Li"}, } m["sit-dhi"] = { "Dhimalish", 1207648, "sit", } m["sit-ebo"] = { "East Bodish", 56402, "sit-bdi", } m["sit-egy"] = { "East rGyalrongic", 832026, "sit-rgy", } m["sit-ers"] = { "Ersuic", 56335, "sit", } m["sit-gma"] = { "Greater Magaric", 55612963, "sit", } m["sit-gsi"] = { "Greater Siangic", 52698851, "sit", } m["sit-hrs"] = { "Hrusish", 1632501, "sit", aliases = {"Southeast Kamengic"}, } m["sit-jnp"] = { "Jingphoic", nil, "sit-jpl", aliases = {"Jingpho"}, } m["sit-jpl"] = { "Kachin-Luic", 1515454, "tbq-bkj", aliases = {"Jingpho-Luish", "Jingpho-Asakian", "Kachinic"}, } m["sit-kch"] = { "Konyak-Chang", nil, "sit-kon", } m["sit-kha"] = { "Kham", 33305, "sit-gma", } m["sit-khb"] = { "Kho-Bwa", 6401917, "sit", aliases = {"Bugunish", "Kamengic"}, } m["sit-khw"] = { "Western Kho-Bwa", nil, "sit-khb", } m["sit-khc"] = { "Chug-Lish", nil, "sit-khw", aliases = {"Duhumbi-Khispi"}, } m["sit-khm"] = { "Mey-Sartang", nil, "sit-khw", aliases = {"Sartang-Sherdukpen"}, } m["sit-kic"] = { "Central Kiranti", nil, "sit-kir", } m["sit-kie"] = { "Eastern Kiranti", nil, "sit-kir", } m["sit-kin"] = { "Kinnauric", nil, "sit-whm", aliases = {"Kinnauri"}, } m["sit-kir"] = { "Kiranti", 922148, "sit", } m["sit-kiw"] = { "Western Kiranti", 922148, "sit-kir", } m["sit-kon"] = { "Northern Naga", 774590, "tbq-bkj", aliases = {"Konyakian", "Konyak"}, } m["sit-kyk"] = { "Kyirong-Kagate", 6450957, "sit-tib", } m["sit-lab"] = { "Ladakhi-Balti", 6450957, "sit-tib", } m["sit-las"] = { "Lahuli-Spiti", 6473510, "sit-tib", } m["sit-luu"] = { "Luish", 55621439, "sit-jpl", aliases = {"Asakian", "Sak"}, } m["sit-mar"] = { "Maringic", nil, "sit-tma", } m["sit-mba"] = { "Macro-Bai", 16963847, "sit-sba", aliases = {"Greater Bai"}, } m["sit-mdz"] = { "Midzu", 6843504, "sit", aliases = {"Geman", "Midzuish", "Miju-Meyor", "Southern Mishmi"}, } m["sit-mnz"] = { "Mondzish", 6898839, "tbq-lob", aliases = {"Mangish"}, } m["sit-mru"] = { "Mruic", 16908870, "sit", aliases = {"Mru-Hkongso"}, } m["sit-nas"] = { "Naish", 25047956, "sit-nax", } m["sit-nax"] = { "Naic", 6982999, "tbq-buq", aliases = {"Naxish"}, } m["sit-nba"] = { "Northern Bai", 122463830, "sit-bai", } m["sit-new"] = { "Newaric", 55625069, "sit", } m["sit-nng"] = { "Nungish", 1515482, "sit", aliases = {"Nung"}, } m["sit-qia"] = { "Qiangic", 1636765, "tbq-buq", } m["sit-rgy"] = { "Rgyalrongic", 56936, "sit-qia", aliases = {"Jiarongic"}, } m["sit-sba"] = { "Sino-Bai", nil, "sit", aliases = {"Greater Bai"}, } m["sit-tam"] = { "Tamangic", 3309439, "sit", aliases = {"West Bodish"}, } m["sit-tan"] = { "Tani", 3217538, "sit", } m["sit-tib"] = { "Tibetic", 1641150, "sit-bdi", protoLanguage = "otb", } m["sit-tja"] = { "Tujia", nil, "sit", } m["sit-tma"] = { "Tangkhul-Maring", nil, "sit", } m["sit-tng"] = { "Tangkhulic", 1516657, "sit-tma", aliases = {"Tangkhul"}, } m["sit-tno"] = { "Tangsa-Nocte", nil, "sit-kon", } m["sit-tsk"] = { "Tshangla", nil, "sit", } m["sit-wgy"] = { "West rGyalrongic", nil, "sit-rgy" } m["sit-whm"] = { "West Himalayish", 2301695, "sit", } m["sit-zem"] = { "Zeme", 189291, "sit", aliases = {"Zeliangrong", "Zemeic"}, } m["sla"] = { "Slavic", 23526, "ine-bsl", aliases = {"Slavonic"}, } m["smi"] = { "Sami", 56463, "urj", aliases = {"Saami", "Samic", "Saamic"}, } m["son"] = { "Songhay", 505198, "ssa", aliases = {"Songhai"}, } m["sqj"] = { "Albanian", 8748, "ine", } m["ssa"] = { "Nilo-Saharan", -- possibly not a genetic grouping 33705, } m["ssa-fur"] = { "Fur", 2989512, "ssa", } m["ssa-klk"] = { "Kuliak", 1791476, "ssa", aliases = {"Rub"}, } m["ssa-kom"] = { "Koman", 1781084, "ssa", } m["ssa-sah"] = { "Saharan", 1757661, "ssa", } m["syd"] = { "Samoyedic", 34005, "urj", aliases = {"Samoyed", "Samodeic"}, } m["syd-ene"] = { "Enets", 29942, "syd", } m["tai"] = { "Tai", 749720, "qfa-bet", aliases = {"Daic"}, } m["tai-wen"] = { "Wenma-Southwestern Tai", nil, "tai", } m["tai-tay"] = { "Tày", nil, "tai-wen", } m["tai-sap"] = { "Sapa-Southwestern Tai", nil, "tai-wen", aliases = {"Sapa-Thai"}, } m["tai-swe"] = { "Southwestern Tai", 10889250, "tai-sap", } m["tai-cho"] = { "Chongzuo Tai", 13216, "tai", } m["tai-cen"] = { "Central Tai", 5061891, "tai", } m["tai-nor"] = { "Northern Tai", 7059014, "tai", } m["tbq"] = { "Tibeto-Burman", 34064, "sit", } m["tbq-anp"] = { "Angami-Pochuri", 530460, "sit", } m["tbq-axi"] = { "Axioid", nil, "tbq-sel", } m["tbq-bdg"] = { "Bodo-Garo", 4090000, "tbq-bkj", } m["tbq-bis"] = { "Bisoid", 48844742, "tbq-slo", } m["tbq-bka"] = { "Bi-Ka", 12627890, "tbq-slo", } m["tbq-bkj"] = { "Sal", 889900, "sit", -- Brahmaputran appears to be Glottolog's term aliases = {"Bodo-Konyak-Jinghpaw", "Brahmaputran", "Jingpho-Konyak-Bodo"}, } m["tbq-brm"] = { "Burmish", 865713, "tbq-lob", } m["tbq-buq"] = { "Burmo-Qiangic", 16056278, "sit", aliases = {"Eastern Tibeto-Burman"}, } m["tbq-drp"] = { "Downriver Phula", 7188378, "tbq-rph", } m["tbq-han"] = { "Hanoid", 17004185, "tbq-slo", } m["tbq-hph"] = { "Highland Phula", nil, "tbq-sel", } m["tbq-jin"] = { "Jino", 6202716, "tbq-slo", } m["tbq-kzh"] = { "Kazhuoish", 48834669, "tbq-lol", } m["tbq-kuk"] = { "Kuki-Chin", 832413, "sit", aliases = {"Kukish", "South-Central Tibeto-Burman"}, } m["tbq-lal"] = { "Lalo", 56548, "tbq-lso", } m["tbq-lho"] = { "Lahoish", nil, "tbq-lol", } m["tbq-llo"] = { "Lipo-Lolopo", nil, "tbq-lso", } m["tbq-lob"] = { "Lolo-Burmese", 1635712, "tbq-buq", } m["tbq-lol"] = { "Loloish", 37035, "tbq-lob", aliases = {"Yi", "Ngwi", "Nisoic"}, } m["tbq-lso"] = { "Lisoish", 6559055, "tbq-lol", } m["tbq-lwo"] = { "Lawoish", 48847673, "tbq-lol", } m["tbq-muj"] = { "Muji", 11221327, "tbq-hph", } m["tbq-nas"] = { "Nasoid", nil, "tbq-nlo", } m["tbq-nis"] = { "Nisu", 56404, "tbq-nlo", } m["tbq-nlo"] = { "Northern Loloish", 7058676, "tbq-nso", } m["tbq-nso"] = { "Nisoish", 56990, "tbq-lol", } m["tbq-nus"] = { "Nusoish", 114245231, "tbq-lol", } m["tbq-phw"] = { "Phowa", 7187959, "tbq-hph", } m["tbq-rph"] = { "Riverine Phula", nil, "tbq-sel", } m["tbq-sel"] = { "Southeastern Loloish", 16111894, "tbq-nso", } m["tbq-sil"] = { "Siloid", 60787071, "tbq-slo", } m["tbq-slo"] = { "Southern Loloish", 5649340, "tbq-lol", } m["tbq-tal"] = { "Taloid", 48804018, "tbq-lso", } m["tbq-urp"] = { "Upriver Phula", 7187058, "tbq-rph", } m["trk"] = { "Turkic", 34090, } m["trk-cmn"] = { "Common Turkic", 1126028, "trk", aliases = {"Shaz Turkic", "Shaz-Turkic"}, } m["trk-kar"] = { "Karluk", 703173, "trk-cmn", aliases = {"Qarluq", "Uyghur-Uzbek", "Southeastern Turkic"}, } m["trk-kbu"] = { "Kipchak-Bulgar", 3512539, "trk-kip", aliases = {"Uralian", "Uralo-Caspian"}, } m["trk-kcu"] = { "Kipchak-Cuman", 4370412, "trk-kip", aliases = {"Ponto-Caspian"}, } m["trk-kip"] = { "Kipchak", 1339898, "trk-cmn", -- Russian Wikipedia article [[w:ru:Западнотюркские_языки]] says "Western Turkic" is used by N.A. Baskakov and includes Oghuz, Kipchak and Karluk. -- Azerbaijani Wikipedia article [[w:az:Qərbi_türk_dilləri]] clarifies that "Western Turkic" is not a clade. other_names = {"Western Turkic"}, aliases = {"Kypchak", "Qypchaq", "Northwestern Turkic"}, protoLanguage = "qwm", } m["trk-kkp"] = { "Kyrgyz-Kipchak", 4221189, "trk-kip", } m["trk-kno"] = { "Kipchak-Nogai", 4326954, "trk-kip", aliases = {"Aralo-Caspian"}, } m["trk-nsb"] = { "North Siberian Turkic", 4537269, "trk-sib", aliases = {"Northern Siberian Turkic"}, } m["trk-ogr"] = { "Oghur", 1422731, "trk", aliases = {"Lir-Turkic", "r-Turkic"}, } m["trk-ogz"] = { "Oghuz", 494600, "trk-cmn", aliases = {"Southwestern Turkic"}, } m["trk-sib"] = { "Siberian Turkic", 354353, "trk-cmn", other_names = {"Northern Turkic"}, -- per [[w:ru:Восточнотюркские_языки]], "Eastern Turkic" is an alias for Siberian Turkic in the work of O.A. Mudrak, -- but has a different non-clade meaning in the older work of N.A. Baskakov. aliases = {"Eastern Turkic", "Northeastern Turkic"}, } m["trk-ssb"] = { "South Siberian Turkic", nil, "trk-sib", aliases = {"Southern Siberian Turkic"}, } m["tup"] = { "Tupian", 34070, aliases = {"Tupi"}, } m["tup-gua"] = { "Tupi-Guarani", 148610, "tup", aliases = {"Tupí-Guaraní"}, } m["tuw"] = { "Tungusic", 34230, aliases = {"Manchu-Tungus", "Tungus"}, } m["tuw-ewe"] = { "Ewenic", 105889448, "tuw", aliases = {"Northern Tungusic"}, } m["tuw-jrc"] = { "Jurchenic", 105889432, "tuw", aliases = {"Manchuric"}, } m["tuw-nan"] = { "Nanaic", 105889264, "tuw", } m["tuw-udg"] = { "Udegheic", 105889266, "tuw", } m["urj"] = { "Uralic", 34113, varieties = {"Finno-Ugric"}, } m["urj-fin"] = { "Finnic", 33328, "urj", aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"}, } m["urj-mdv"] = { "Mordvinic", 627313, "urj", } m["urj-prm"] = { "Permic", 161493, "urj", } m["urj-ugr"] = { "Ugric", 156631, "urj", } m["wak"] = { "Wakashan", 60069, } m["wen"] = { "Sorbian", 25442, "zlw", aliases = {"Lusatian", "Wendish"}, } m["xgn"] = { "Mongolic", 33750, "qfa-xgs", aliases = {"Mongolian"}, } m["xgn-cen"] = { "Central Mongolic", 28719447, "xgn", protoLanguage = "xng-lat", } m["xgn-sou"] = { "Southern Mongolic", nil, "xgn", protoLanguage = "xng-ear", } m["xgn-shr"] = { "Shirongolic", 107539435, "xgn-sou", } m["xme"] = { "Median", nil, "ira-mpr", protoLanguage = "xme-old", } m["xme-ttc"] = { "Tatic", nil, "xme", } m["xnd"] = { "Na-Dene", 26986, "qfa-dny", aliases = {"Na-Dené"}, } m["xsc"] = { "Scythian", nil, "ira-nei", } m["xsc-sak"] = { "Saka", nil, "xsc-skw", aliases = {"Sakan"}, } m["xsc-sar"] = { "Sarmatian", nil, "xsc", } m["xsc-skw"] = { "Saka-Wakhi", nil, "xsc", } m["yok"] = { "Yokuts", 34249, "nai-you", aliases = {"Yokutsan", "Mariposan", "Mariposa"}, } m["ypk"] = { "Yupik", 27970, "esx-esk", aliases = {"Yup'ik", "Yuit"}, } m["yrk"] = { "Nenets", 36452, "syd", } m["zhx"] = { "Sinitic", 33857, "sit-sba", aliases = {"Chinese"}, protoLanguage = "och", } m["zhx-com"] = { "Coastal Min", 20667215, "zhx-min", } m["zhx-inm"] = { "Inland Min", 20667237, "zhx-min", } m["zhx-man"] = { "Mandarinic", nil, "zhx", protoLanguage = "cmn-ear", } m["zhx-min"] = { "Min", 56504, "zhx", } m["zhx-nan"] = { "Southern Min", 36495, "zhx-com", } m["zhx-pin"] = { "Pinghua", 2735715, "zhx", protoLanguage = "ltc", } m["zhx-yue"] = { "Yue", 7033959, "zhx", protoLanguage = "ltc", } m["zle"] = { "East Slavic", 144713, "sla", } m["zls"] = { "South Slavic", 146665, "sla", } m["zlw"] = { "West Slavic", 145852, "sla", } m["zlw-lch"] = { "Lechitic", 742782, "zlw", aliases = {"Lekhitic"}, } m["zlw-pom"] = { "Pomeranian", nil, "zlw-lch", } m["znd"] = { "Zande", 8066072, "nic-ubg", } return require("Module:languages").finalizeData(m, "family") bzggxdgr0jm5f5dcmv72pa6klgnd8fd 510601 510599 2026-06-11T02:43:10Z Hiyuune 11971 510601 Scribunto text/plain --[=[ This module contains definitions for all language family codes on Wiktionary. ]=]-- local m = {} m["aav"] = { "Austroasiatic", 33199, aliases = {"Austro-Asiatic"}, } m["aav-khs"] = { "Khasian", 3073734, "aav", aliases = {"Khasic"}, } m["aav-nic"] = { "Nicobarese", 217380, "aav", } m["aav-pkl"] = { "Pnar-Khasi-Lyngngam", nil, "aav-khs", } m["afa"] = { "Afroasiatic", 25268, aliases = {"Afro-Asiatic"}, } m["alg"] = { "Algonquian", 33392, "aql", } m["alg-abp"] = { "Abenaki-Penobscot", 197936, "alg-eas", } m["alg-ara"] = { "Arapahoan", 2153686, "alg", } m["alg-eas"] = { "Eastern Algonquian", 2257525, "alg", } m["alg-sfk"] = { "Sac-Fox-Kickapoo", 1440172, "alg", } m["alv"] = { "Atlantic-Congo", 771124, "nic", } m["alv-aah"] = { "Ayere-Ahan", 750953, "alv-von", } m["alv-ada"] = { "Adamawa", 32906, "alv-sav", } m["alv-bag"] = { "Baga", 2746083, "alv-mel", } m["alv-bak"] = { "Bak", 1708174, "alv-sng", } m["alv-bam"] = { "Bambukic", 4853456, "alv-ada", aliases = {"Yungur-Jen"}, } m["alv-bny"] = { "Banyum", 2892477, "alv-nyn", } m["alv-bua"] = { "Bua", 4982094, "alv-mbd", } m["alv-bwj"] = { "Bikwin-Jen", 84542501, "alv-bam", } m["alv-cng"] = { "Cangin", 1033184, "alv-fwo", } m["alv-ctn"] = { "Central Tano", 1658486, "alv-ptn", aliases = {"Akan"}, } m["alv-dlt"] = { "Delta Edoid", nil, "alv-edo", } m["alv-dur"] = { "Duru", 5316788, "alv-lni", } m["alv-ede"] = { "Ede", 35368, "alv-yor", } m["alv-edk"] = { "Edekiri", 5336735, "alv-yrd", } m["alv-edo"] = { "Edoid", 1287469, "alv-von", } m["alv-eeo"] = { "Edo-Esan-Ora", 12630439, "alv-nce", } m["alv-fli"] = { "Fali", 3450166, "alv", } m["alv-fwo"] = { "Fula-Wolof", 12631267, "alv-sng", } m["alv-gbe"] = { "Gbe", 668284, "alv-von", } m["alv-gda"] = { "Ga-Dangme", 3443338, "alv-kwa", } m["alv-gng"] = { "Guang", 684009, "alv-ptn", } m["alv-gtm"] = { "Ghana-Togo Mountain", 493020, "alv-kwa", aliases = {"Togo Remnant", "Central Togo"}, } m["alv-hei"] = { "Heiban", 108752116, "alv-the", } m["alv-ido"] = { "Idomoid", 974196, "alv-von", } m["alv-igb"] = { "Igboid", 1429100, "alv-von", } m["alv-jfe"] = { "Jola-Felupe", 1708174, "alv-jol", aliases = {"Ejamat"}, } m["alv-jol"] = { "Jola", 35176, "alv-bak", aliases = {"Diola"}, } m["alv-kim"] = { "Kim", 6409701, "alv-mbd", } m["alv-kis"] = { "Kissi", 35696, "alv-mel", } m["alv-krb"] = { "Karaboro", 4213541, "alv-snf", } m["alv-ktg"] = { "Ka-Togo", 5972796, "alv-gtm", } m["alv-kul"] = { "Kulango", 16977424, "alv-sav", aliases = {"Kulango-Lorhon", "Kulango-Lorom"}, } m["alv-kwa"] = { "Kwa", 33430, "nic-vco", } m["alv-lag"] = { "Lagoon", 111210042, "alv-kwa", } m["alv-lek"] = { "Leko", 6520642, other_names = {"Sambaic"}, -- appears to be an alias in Glottolog "alv-lni", } m["alv-lim"] = { "Limba", 35825, "alv", } m["alv-lni"] = { "Leko-Nimbari", 1708170, "alv-ada", other_names = {"Central Adamawa"}, aliases = {"Chamba-Mumuye"}, } m["alv-mbd"] = { "Mbum-Day", 6799816, "alv-ada", } m["alv-mbm"] = { "Mbum", 6799814, "alv-mbd", } m["alv-mel"] = { "Mel", 12122355, "alv", } m["alv-mum"] = { "Mumuye", 84607009, "alv-mye", } m["alv-mye"] = { "Mumuye-Yendang", 6935539, "alv-lni", } m["alv-nal"] = { "Nalu", nil, "alv-sng", } m["alv-nce"] = { "North-Central Edoid", 16110869, "alv-edo", } m["alv-ngb"] = { "Nupe-Gbagyi", 12638649, "alv-nup", aliases = {"Nupe-Gbari"}, } m["alv-ntg"] = { "Na-Togo", nil, "alv-gtm", } m["alv-nup"] = { "Nupoid", 1429143, "alv-von", } m["alv-nwd"] = { "Northwestern Edoid", 16111012, "alv-edo", } m["alv-nyn"] = { "Nyun", nil, "alv-fwo", } m["alv-pap"] = { "Papel", 7132562, "alv-bak", } m["alv-pph"] = { "Phla-Pherá", 3849625, "alv-gbe", } m["alv-ptn"] = { "Potou-Tano", 1475003, "alv-kwa", } m["alv-sav"] = { "Savanna", 4403672, "nic-vco", aliases = {"Savannas"}, } m["alv-sma"] = { "Supyire-Mamara", 4446348, "alv-snf", aliases = {"Suppire-Mamara"}, } m["alv-snf"] = { "Senufo", 33795, "alv", aliases = {"Senufic", "Senoufo", "Sénoufo"}, } m["alv-sng"] = { "Senegambian", 1708753, "alv", } m["alv-snr"] = { "Senari", 4416084, "alv-snf", } m["alv-swd"] = { "Southwestern Edoid", 12633903, "alv-edo", } m["alv-tal"] = { "Talodi", 12643302, "alv-the", } m["alv-tdj"] = { "Tagwana-Djimini", 7675362, "alv-snf", } m["alv-ten"] = { "Tenda", 3217535, "alv-fwo", } m["alv-the"] = { "Talodi-Heiban", 1521145, "alv", } m["alv-von"] = { "Volta-Niger", 34177, "nic-vco", } m["alv-wan"] = { "Wara-Natyoro", 7968830, "alv-sav", } m["alv-wjk"] = { "Waja-Kam", nil, "alv-ada", } m["alv-yek"] = { "Yekhee", nil, "alv-nce", } m["alv-yor"] = { "Yoruba", nil, "alv-edk", } m["alv-yrd"] = { "Yoruboid", 1789745, "alv-von", } m["alv-yun"] = { "Yungur", 84601642, "alv-bam", aliases = {"Bena-Mboi"}, } m["apa"] = { "Apachean", 27758, "ath", aliases = {"Southern Athabaskan"}, } m["aqa"] = { "Alacalufan", 1288430, } m["aql"] = { "Algic", 721612, aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"}, } m["art"] = { "constructed", 33215, "qfa-not", aliases = {"artificial", "planned"}, } m["ath"] = { "Athabaskan", 27475, "xnd", } m["ath-nor"] = { "North Athabaskan", 20738, "ath", aliases = {"Northern Athabaskan"}, } m["ath-pco"] = { "Pacific Coast Athabaskan", 20654, "ath", } m["auf"] = { "Arauan", 626772, aliases = {"Arahuan", "Arauán", "Arawa", "Arawan", "Arawán"}, } --[=[ Exceptional language and family codes for Australian Aboriginal languages can use the prefix "aus-", though "aus" is no longer itself a family code. ]=]-- m["aus-arn"] = { "Arnhem", 2581700, aliases = {"Gunwinyguan", "Macro-Gunwinyguan"}, } m["aus-bub"] = { "Bunuban", 2495148, aliases = {"Bunaban"}, } m["aus-cww"] = { "Central New South Wales", 5061507, "aus-pam", } m["aus-dal"] = { "Daly", 2478079, } m["aus-dyb"] = { "Dyirbalic", 1850666, "aus-pam", } m["aus-gar"] = { "Garawan", 5521951, } m["aus-gun"] = { "Gunwinyguan", 2581700, "aus-arn", aliases = {"Gunwingguan"}, } m["aus-jar"] = { "Jarrakan", 2039423, } m["aus-kar"] = { "Karnic", 4215578, "aus-pam", } m["aus-mir"] = { "Mirndi", 4294095, } m["aus-nga"] = { "Ngayarda", 16153490, "aus-psw", } m["aus-nyu"] = { "Nyulnyulan", 2039408, } m["aus-pam"] = { "Pama-Nyungan", 33942, } m["aus-pmn"] = { "Paman", 2640654, "aus-pam", } m["aus-psw"] = { "Southwest Pama-Nyungan", 2258160, "aus-pam", } m["aus-rnd"] = { "Arandic", 4784071, "aus-pam", } m["aus-tnk"] = { "Tangkic", 1823065, } m["aus-wdj"] = { "Iwaidjan", 4196968, aliases = {"Yiwaidjan"}, } m["aus-wor"] = { "Worrorran", 2038619, } m["aus-yid"] = { "Yidinyic", 4205849, "aus-pam", } m["aus-yng"] = { "Yangmanic", 42727644, } m["aus-yol"] = { "Yolngu", 2511254, "aus-pam", aliases = {"Yolŋu", "Yolngu Matha"}, } m["aus-yuk"] = { "Yuin-Kuric", 3833021, "aus-pam", } m["awd"] = { "Arawak", 626753, aliases = {"Arawakan", "Maipurean", "Maipuran"}, } m["awd-nwk"] = { "Nawiki", nil, "awd", aliases = {"Newiki"}, } m["awd-taa"] = { "Ta-Arawak", 7672731, "awd", aliases = {"Ta-Arawakan", "Ta-Maipurean"}, } m["azc"] = { "Uto-Aztecan", 34073, aliases = {"Uto-Aztekan"}, } m["azc-cup"] = { "Cupan", 19866871, "azc-tak", } m["azc-dur"] = { "Durango Nahuatl", 2386361, "azc-nah", aliases = {"Mexicanero"} } m["azc-hua"] = { "Huasteca Nahuatl", 3832950, "azc-nah", } m["azc-nah"] = { "Nahuan", 11965602, "azc", aliases = {"Aztecan"}, } m["azc-num"] = { "Numic", 2657541, "azc", } m["azc-pim"] = { "Piman", 7194600, "azc", aliases = {"Tepiman"}, } m["azc-tak"] = { "Takic", 1280305, "azc", } m["azc-trc"] = { "Taracahitic", 4245032, "azc", aliases = {"Taracahitan"}, } m["bad"] = { "Banda", 806234, "nic-ubg", } m["bad-cnt"] = { "Central Banda", 3438391, "bad", } m["bai"] = { "Bamileke", 806005, "nic-gre", } m["bat"] = { "Baltic", 33136, "ine-bsl", } m["bat-eas"] = { "East Baltic", 149944, "bat", } m["bat-wes"] = { "West Baltic", 149946, "bat", } m["ber"] = { "Berber", 25448, "afa", aliases = {"Tamazight"}, } m["bnt"] = { "Bantu", 33146, "nic-bds", } m["bnt-baf"] = { "Bafia", 799784, "bnt", } m["bnt-bbo"] = { "Bafo-Bonkeng", nil, "bnt-saw", } m["bnt-bdz"] = { "Boma-Dzing", 1729203, "bnt", } m["bnt-bek"] = { "Bekwilic", nil, "bnt-ndb", } m["bnt-bki"] = { "Bena-Kinga", 16113307, "bnt-bne", } m["bnt-bmo"] = { "Bangi-Moi", nil, "bnt-bnm", } m["bnt-bne"] = { "Northeast Bantu", 7057832, "bnt", } m["bnt-bnm"] = { "Bangi-Ntomba", 806477, "bnt-bte", } m["bnt-boa"] = { "Boan", 4931250, "bnt", aliases = {"Buan", "Ababuan"}, } m["bnt-bot"] = { "Botatwe", 4948532, "bnt", } m["bnt-bsa"] = { "Basaa", 809739, "bnt", } m["bnt-bsh"] = { "Bushoong", 5001551, "bnt-bte", } m["bnt-bso"] = { "Southern Bantu", 980498, "bnt", } m["bnt-bta"] = { "Bati-Angba", 4869303, "bnt-boa", other_names = {"Late Bomokandian"}, aliases = {"Bwa"}, } m["bnt-btb"] = { "Beti", 35118, "bnt", } m["bnt-bte"] = { "Bangi-Tetela", 4855181, "bnt", } m["bnt-bun"] = { "Buja-Ngombe", 4986733, "bnt-mbb", } m["bnt-chg"] = { "Chaga", 33016, "bnt-cht", } m["bnt-cht"] = { "Chaga-Taita", nil, "bnt-bne", } m["bnt-clu"] = { "Chokwe-Luchazi", 3339273, "bnt", } m["bnt-com"] = { "Comorian", 33077, "bnt-sab", } m["bnt-glb"] = { "Great Lakes Bantu", 5599420, "bnt-bne", } m["bnt-haj"] = { "Haya-Jita", 25502360, "bnt-glb", } m["bnt-kak"] = { "Kako", nil, "bnt-pob", } m["bnt-kav"] = { "Kavango", 116544179, "bnt-ksb", } m["bnt-kbi"] = { "Komo-Bira", 6428591, "bnt-boa", } m["bnt-kel"] = { "Kele", 1738162, "bnt-kts", aliases = {"Sheke"}, } m["bnt-kil"] = { "Kilombero", 6408121, "bnt", } m["bnt-kka"] = { "Kikuyu-Kamba", 16114410, "bnt-bne", aliases = {"Thagiicu"}, } m["bnt-kmb"] = { "Kimbundu", 16947687, "bnt", } m["bnt-kng"] = { "Kongo", 6429214, "bnt", } m["bnt-kpw"] = { "Kpwe", 36428, "bnt-saw", } m["bnt-ksb"] = { "Kavango-Southwest Bantu", 6379098, "bnt", } m["bnt-kts"] = { "Kele-Tsogo", 6385577, "bnt", } m["bnt-lbn"] = { "Luban", 4536504, "bnt", } m["bnt-leb"] = { "Lebonya", 6511395, "bnt", } m["bnt-lgb"] = { "Lega-Binja", 6517694, "bnt", } m["bnt-lok"] = { "Logooli-Kuria", nil, "bnt-glb", } m["bnt-lub"] = { "Luba", nil, "bnt-lbn", } m["bnt-lun"] = { "Lunda", 6704091, "bnt", } m["bnt-mak"] = { "Makua", 6740431, "bnt-bso", aliases = {"Makhuwa"}, } m["bnt-mbb"] = { "Mboshi-Buja", 6799764, "bnt", } m["bnt-mbe"] = { "Mbole-Enya", 6799728, "bnt", } m["bnt-mbi"] = { "Mbinga", nil, "bnt-rur", } m["bnt-mbo"] = { "Mboshi", 6799763, "bnt-mbb", } m["bnt-mbt"] = { "Mbete", 1346910, "bnt-tmb", aliases = {"Mbere"}, } m["bnt-mby"] = { "Mbeya", nil, "bnt-ruk", } m["bnt-mij"] = { "Mijikenda", 6845474, "bnt-sab", } m["bnt-mka"] = { "Makaa", nil, "bnt-ndb", } m["bnt-mne"] = { "Manenguba", 31147471, "bnt", aliases = {"Mbo", "Ngoe"}, } m["bnt-mnj"] = { "Makaa-Njem", 1603899, "bnt-pob", } m["bnt-mon"] = { "Mongo", nil, "bnt-bnm", } m["bnt-mra"] = { "Mbugwe-Rangi", 6799795, "bnt", } m["bnt-msl"] = { "Masaba-Luhya", 12636428, "bnt-glb", } m["bnt-mwi"] = { "Mwika", nil, "bnt-ruk", } m["bnt-ncb"] = { "Northeast Coast Bantu", 7057848, "bnt-bne", } m["bnt-ndb"] = { "Ndzem-Bomwali", nil, "bnt-mnj", } m["bnt-ngn"] = { "Ngondi-Ngiri", 7022532, "bnt-mbb", } m["bnt-ngu"] = { "Nguni", 961559, "bnt-bso", aliases = {"Ngoni"}, } m["bnt-nya"] = { "Nyali", 7070832, "bnt-leb", } m["bnt-nyb"] = { "Nyanga-Buyi", 7070882, "bnt", } m["bnt-nyg"] = { "Nyoro-Ganda", 12638666, "bnt-glb", } m["bnt-nys"] = { "Nyasa", 7070921, "bnt", } m["bnt-nze"] = { "Nzebi", 1755498, "bnt-tmb", aliases = {"Njebi"}, } m["bnt-ova"] = { "Ovambo", 36489, "bnt-swb", aliases = {"Oshivambo", "Oshiwambo", "Owambo"}, } m["bnt-par"] = { "Pare", nil, "bnt-ncb", } m["bnt-pen"] = { "Pende", 7162373, "bnt", } m["bnt-pob"] = { "Pomo-Bomwali", nil, "bnt", } m["bnt-ruk"] = { "Rukwa", 7378902, "bnt", } m["bnt-run"] = { "Rungwe", nil, "bnt-ruk", } m["bnt-rur"] = { "Rufiji-Ruvuma", 7377947, "bnt", } m["bnt-ruv"] = { "Ruvu", nil, "bnt-ncb", } m["bnt-rvm"] = { "Ruvuma", nil, "bnt-rur", } m["bnt-sab"] = { "Sabaki", 2209395, "bnt-ncb", } m["bnt-saw"] = { "Sawabantu", 532003, "bnt", } m["bnt-sbi"] = { "Sabi", 7396071, "bnt", } m["bnt-seu"] = { "Seuta", nil, "bnt-ncb", } m["bnt-shh"] = { "Shi-Havu", nil, "bnt-glb", } m["bnt-sho"] = { "Shona", 2904660, "bnt", } m["bnt-sir"] = { "Sira", 1436372, "bnt", aliases = {"Shira-Punu"}, } m["bnt-ske"] = { "Soko-Kele", nil, "bnt-bte", } m["bnt-sna"] = { "Sena", nil, "bnt-nys", } m["bnt-sts"] = { "Sotho-Tswana", 2038386, "bnt-bso", } m["bnt-swb"] = { "Southwest Bantu", 116543539, "bnt-ksb", } m["bnt-swh"] = { "Swahili", nil, "bnt-sab", } m["bnt-tek"] = { "Teke", 36528, "bnt-tmb", } m["bnt-tet"] = { "Tetela", 7706059, "bnt-bte", } m["bnt-tkc"] = { "Central Teke", 36473, "bnt-tek", } m["bnt-tkm"] = { "Takama", nil, "bnt-bne", } m["bnt-tmb"] = { "Teke-Mbede", 7695332, "bnt", aliases = {"Teke-Mbere"}, } m["bnt-tso"] = { "Tsogo", 2458420, other_names = {"Okani"}, --appears to be an alias in Glottolog "bnt-kts", } m["bnt-tsr"] = { "Tswa-Ronga", 12643962, "bnt-bso", } m["bnt-yak"] = { "Yaka", 8047027, "bnt", } m["bnt-yko"] = { "Yasa-Kombe", nil, "bnt-saw", } m["bnt-zbi"] = { "Zamba-Binza", nil, "bnt-bnm", } m["btk"] = { "Batak", 1998595, "poz-nws", } --[=[ Exceptional language and family codes for Central American Indian languages may use the prefix "cai-", though "cai" is no longer itself a family code. ]=]-- --[=[ Exceptional language and family codes for Caucasian languages can use the prefix "cau-", though "cau" is no longer itself a family code. ]=]-- m["cau-abz"] = { "Abkhaz-Abaza", 4663617, "cau-nwc", other_names = {"Abkhaz-Tapanta"}, aliases = {"Abazgi"}, } m["cau-and"] = { "Andian", 492152, "cau-ava", aliases = {"Andic"}, } m["cau-ava"] = { "Avaro-Andian", 4055404, "cau-nec", aliases = {"Avar-Andian", "Avar-Andi", "Avar-Andic"}, } m["cau-cir"] = { "Circassian", 858543, "cau-nwc", aliases = {"Cherkess"}, } m["cau-drg"] = { "Dargwa", 5222637, "cau-nec", other_names = {"Dargin"}, } m["cau-esm"] = { "Eastern Samur", nil, "cau-sam", } m["cau-ets"] = { "East Tsezian", 121437666, "cau-tsz", aliases = {"East Tsezic", "East Didoic"}, } m["cau-lzg"] = { "Lezghian", 2144370, "cau-nec", aliases = {"Lezgi", "Lezgian", "Lezgic"}, } m["cau-nkh"] = { "Nakh", 24441, "cau-nec", aliases = {"North-Central Caucasian"}, } m["cau-nec"] = { "Northeast Caucasian", 27387, aliases = {"Dagestanian", "Nakho-Dagestanian", "Caspian"}, } m["cau-nwc"] = { "Northwest Caucasian", 33852, aliases = {"Abkhazo-Adyghean", "Abkhaz-Adyghe", "Pontic"}, } m["cau-sam"] = { "Samur", 15229151, "cau-lzg", } m["cau-ssm"] = { "Southern Samur", nil, "cau-sam", } m["cau-tsz"] = { "Tsezian", 1651530, "cau-nec", aliases = {"Tsezic", "Didoic"}, } m["cau-vay"] = { "Vainakh", 4102486, "cau-nkh", aliases = {"Veinakh", "Vaynakh"}, } m["cau-wsm"] = { "Western Samur", nil, "cau-sam", } m["cau-wts"] = { "West Tsezian", 121437697, "cau-tsz", aliases = {"West Tsezic", "West Didoic"}, } m["cba"] = { "Chibchan", 520478, "qfa-mch", -- or none if Macro-Chibchan is considered undemonstrated } m["ccs"] = { "Kartvelian", 34030, aliases = {"South Caucasian"}, } m["ccs-gzn"] = { "Georgian-Zan", 34030, "ccs", aliases = {"Karto-Zan"}, } m["ccs-zan"] = { "Zan", 2606912, "ccs-gzn", aliases = {"Zanuri", "Colchian"}, } m["cdc"] = { "Chadic", 33184, "afa", } m["cdc-cbm"] = { "Central Chadic", 2251547, "cdc", aliases = {"Biu-Mandara"}, } m["cdc-est"] = { "East Chadic", 2276221, "cdc", } m["cdc-mas"] = { "Masa", 2136092, "cdc", } m["cdc-wst"] = { "West Chadic", 2447774, "cdc", } m["cdd"] = { "Caddoan", 1025090, } m["cel"] = { "Celtic", 25293, "ine", } m["cel-bry"] = { "Brythonic", 156877, "cel-ins", aliases = {"Brittonic"}, } m["cel-brs"] = { "Southwestern Brythonic", 2612853, "cel-bry", aliases = {"Southwestern Brittonic"}, } m["cel-brw"] = { "Western Brythonic", 593069, "cel-bry", aliases = {"Western Brittonic"}, } m["cel-gae"] = { "Goidelic", 56433, "cel-ins", aliases = {"Gaelic"}, protoLanguage = "pgl", } m["cel-his"] = { "Hispano-Celtic", 4204136, "cel", } m["cel-ins"] = { "Insular Celtic", 214506, "cel", } m["chi"] = { "Chimakuan", 1073088, } m["chm"] = { "Mari", 973685, "urj", } m["cmc"] = { "Chamic", 2997506, "poz-mcm", } m["crp"] = { "creole or pidgin", 19682167, "qfa-cnt", } m["csu"] = { "Central Sudanic", 190822, "ssa", } m["csu-bba"] = { "Bongo-Bagirmi", 3505042, "csu", } m["csu-bbk"] = { "Bongo-Baka", 4941917, "csu-bba", } m["csu-bgr"] = { "Bagirmi", 4841948, "csu-bba", aliases = {"Bagirmic"}, } m["csu-bkr"] = { "Birri-Kresh", nil, "csu", } m["csu-ecs"] = { "Eastern Central Sudanic", 16911698, "csu", aliases = {"East Central Sudanic", "Central Sudanic East", "Lendu-Mangbetu"}, } m["csu-kab"] = { "Kaba", 6343715, "csu-bba", } m["csu-lnd"] = { "Lendu", 6522357, "csu-ecs", aliases = {"Lenduic"}, } m["csu-maa"] = { "Mangbetu", 6748874, "csu-ecs", aliases = {"Mangbetu-Asoa", "Mangbetu-Asua"}, } m["csu-mle"] = { "Mangbutu-Lese", 17009406, "csu-ecs", aliases = {"Mangbutu-Efe", "Mangbutu", "Membi-Mangbutu-Efe"}, } m["csu-mma"] = { "Moru-Madi", 6915156, "csu-ecs", } m["csu-sar"] = { "Sara", 2036691, "csu-bba", } m["csu-val"] = { "Vale", 7909520, "csu-bba", } m["cus"] = { "Cushitic", 33248, "afa", } m["cus-cen"] = { "Central Cushitic", 56569, "cus", } m["cus-eas"] = { "East Cushitic", 56568, "cus", } m["cus-hec"] = { "Highland East Cushitic", 56524, "cus-eas", } m["cus-som"] = { "Somaloid", 56774, "cus-eas", aliases = {"Sam", "Macro-Somali"}, } m["cus-sou"] = { "South Cushitic", 56525, "cus", } m["day"] = { "Land Dayak", 2760613, "poz", } m["del"] = { "Lenape", 2665761, "alg-eas", aliases = {"Delaware"}, } m["den"] = { "Slavey", 13272, "ath-nor", aliases = {"Slave", "Slavé"}, } m["dmn"] = { "Mande", 33681, "nic", } m["dmn-bbu"] = { "Bisa-Busa", 12627956, "dmn-mde", } m["dmn-emn"] = { "East Manding", nil, "dmn-man", } m["dmn-jje"] = { "Jogo-Jeri", nil, "dmn-mjo", } m["dmn-man"] = { "Manding", 35772, "dmn-mmo", } m["dmn-mda"] = { "Mano-Dan", nil, "dmn-mse", } m["dmn-mdc"] = { "Central Mande", 5972907, "dmn-mdw", } m["dmn-mde"] = { "Eastern Mande", 12633080, "dmn", } m["dmn-mdw"] = { "Western Mande", 16113831, "dmn", } m["dmn-mjo"] = { "Manding-Jogo", 12636153, "dmn-mdc", } m["dmn-mmo"] = { "Manding-Mokole", nil, "dmn-mva", } m["dmn-mnk"] = { "Maninka", 36186, "dmn-emn", } m["dmn-mnw"] = { "Northwestern Mande", 5972910, "dmn-mdw", } m["dmn-mok"] = { "Mokole", 16935447, "dmn-mmo", } m["dmn-mse"] = { "Southeastern Mande", 5972912, "dmn-mde", } m["dmn-msw"] = { "Southwestern Mande", 12633904, "dmn-mdw", } m["dmn-mva"] = { "Manding-Vai", nil, "dmn-mjo", } m["dmn-nbe"] = { "Nwa-Beng", nil, "dmn-mse", } m["dmn-sam"] = { "Samo", 36327, "dmn-bbu", aliases = {"Samuic"}, } m["dmn-smg"] = { "Samogo", 7410000, "dmn-mnw", aliases = {"Duun-Seenku"}, } m["dmn-snb"] = { "Soninke-Bobo", 16111680, "dmn-mnw", } m["dmn-sya"] = { "Susu-Yalunka", nil, "dmn-mdc", } m["dmn-vak"] = { "Vai-Kono", nil, "dmn-mva", } m["dmn-wmn"] = { "West Manding", nil, "dmn-man", } m["dra"] = { "Dravidian", 33311, } m["dra-cen"] = { "Central Dravidian", 12628823, "dra", } m["dra-gki"] = { "Gondi-Kui", 12631610, "dra-sdt", } m["dra-gon"] = { "Gondi", 55639812, "dra-gki", } m["dra-imd"] = { "Irula-Muduga", nil, "dra-tkn", } m["dra-kan"] = { "Kannadoid", 6363888, "dra-tkn", protoLanguage = "dra-okn", } m["dra-kki"] = { "Konda-Kui", nil, "dra-gki", } m["dra-kml"] = { "Kurux-Malto", 68002822, "dra-nor", } m["dra-knk"] = { "Kolami-Naiki", 10547037, "dra-cen", } m["dra-kod"] = { "Kodagu", 67983106, "dra-tkd", } m["dra-kor"] = { "Koraga", 33394, "dra-tlk", } m["dra-mal"] = { "Malayalamoid", 6741581, "dra-tml", } m["dra-mdy"] = { "Madiya", 27602, "dra-gon", } m["dra-mlo"] = { "Malto", nil, "dra-kml", } m["dra-mur"] = { "Muria", 6938499, "dra-gon", } m["dra-nor"] = { "North Dravidian", 16110967, "dra", } m["dra-pgd"] = { "Parji-Gadaba", 10620428, "dra-cen", } m["dra-sdo"] = { "South Dravidian I", 16112843, -- Wikipedia's "South Dravidian" is South Dravidian I in this scheme. "dra-sou", aliases = {"South Dravidian"}, -- This is why I and II are used. } m["dra-sdt"] = { "South Dravidian II", 12633975, "dra-sou", aliases = {"South-Central Dravidian"}, } m["dra-sou"] = { "South Dravidian", 128886618, "dra", aliases = {"Southern Dravidian"}, } m["dra-tam"] = { "Tamiloid", 7681417, "dra-tml", protoLanguage = "oty", } m["dra-tel"] = { "Teluguic", nil, "dra-sdt", protoLanguage = "dra-ote", } m["dra-tkd"] = { "Tamil-Kodagu", 25494510, "dra-tkn", } m["dra-tkn"] = { "Tamil-Kannada", 6478506, "dra-sdo", } m["dra-tkt"] = { "Toda-Kota", 67983857, "dra-tkd", } m["dra-tlk"] = { "Tulu-Koraga", nil, "dra-sdo", } m["dra-tml"] = { "Tamil-Malayalam", 10690507, "dra-tkd", } m["egx"] = { "Egyptian", 50868, "afa", protoLanguage = "egy", } m["ero"] = { "Horpa", 56854, "sit-wgy", } m["esx"] = { "Eskimo-Aleut", 25946, } m["esx-esk"] = { "Eskimo", 25946, "esx", } m["esx-inu"] = { "Inuit", 27796, "esx-esk", } m["euq"] = { "Vasconic", 4669240, } m["gba"] = { "Gbaya", 3099986, "alv-sav", } m["gba-eas"] = { "Eastern Gbaya", nil, "gba", } m["gba-sou"] = { "Southern Gbaya", nil, "gba", } m["gba-wes"] = { "Western Gbaya", nil, "gba", } m["gem"] = { "Germanic", 21200, "ine", } m["gio"] = { "Gelao", 56401, "qfa-kra", } m["gme"] = { "East Germanic", 108662, "gem", } m["gmq"] = { "North Germanic", 106085, "gem", } m["gmq-eas"] = { "East Scandinavian", 3090263, "gmq", protoLanguage = "non-oen", } m["gmq-ins"] = { "Insular Scandinavian", nil, "gmq-wes", } m["gmq-wes"] = { "West Scandinavian", 1792570, "gmq", protoLanguage = "non-own", } m["gmw"] = { "West Germanic", 26721, "gem", } m["gmw-afr"] = { "Anglo-Frisian", 5329170, "gmw-nsg", } m["gmw-ang"] = { "Anglic", 1346342, "gmw-afr", protoLanguage = "ang", } m["gmw-fri"] = { "Frisian", 25325, "gmw-afr", protoLanguage = "ofs", } m["gmw-frk"] = { "Low Franconian", 153050, "gmw", protoLanguage = "frk", } m["gmw-hgm"] = { "High German", 52040, "gmw", protoLanguage = "goh", } m["gmw-ian"] = { "Irish Anglo-Norman", 120719384, "gmw-ang", protoLanguage = "enm", } m["gmw-lgm"] = { "Low German", 25433, "gmw-nsg", protoLanguage = "osx", } m["gmw-nsg"] = { "North Sea Germanic", 30134, "gmw", aliases = {"Ingvaeonic"}, } m["gn"] = { "Guarani", 35876, "tup-gua", aliases = {"Guaraní"}, } m["grb"] = { "Grebo proper", 35257, "kro-grb", } m["grk"] = { "Hellenic", 2042538, "ine", aliases = {"Greek"}, } m["him"] = { "Western Pahari", 10939493, "inc-pah", aliases = {"Himachali"}, } m["hmn"] = { "Hmongic", 3307894, "hmx", } m["hmx"] = { "Hmong-Mien", 33322, aliases = {"Miao-Yao"}, } m["hmx-mie"] = { "Mienic", 7992695, "hmx", } m["hok"] = { "Hokan", 33406, } m["hyx"] = { "Armenian", 8785, "ine", } m["iir"] = { "Indo-Iranian", 33514, "ine", } m["iir-nur"] = { "Nuristani", 161804, "iir", } m["nur-nor"] = { "Northern Nuristani", nil, "iir-nur", } m["nur-sou"] = { "Southern Nuristani", nil, "iir-nur", } m["ijo"] = { "Ijoid", 1325759, "nic", other_names = {"Ijaw"}, -- Ijaw may be a subfamily } m["inc"] = { "Indo-Aryan", 33577, "iir", aliases = {"Indic"}, } m["inc-bas"] = { "Bengali-Assamese", 4179137, "inc-eas", aliases = {"Assamese-Bengali", "Gauda-Kamarupa"}, } m["inc-bhi"] = { "Bhil", 4901727, "inc-cen", } m["inc-bih"] = { "Bihari", 135305, "inc-eas", } m["inc-cen"] = { "Central Indo-Aryan", 10979187, "inc", protoLanguage = "inc-asa", } m["inc-chi"] = { "Chitrali", 11732797, "inc-dar", } m["inc-dar"] = { "Dardic", 161101, "inc", protoLanguage = "inc-ash", } m["inc-dre"] = { "Eastern Dardic", nil, "inc-dar", } m["inc-dng"] = { "Dangari", nil, "inc-shn", } m["inc-eas"] = { "Eastern Indo-Aryan", 12593391, "inc", protoLanguage = "inc-aav", } m["inc-hal"] = { "Halbic", 16910593, "inc-eas", aliases = {"Halbi"}, } m["inc-hie"] = { "Eastern Hindi", 4126648, "inc-cen", aliases = {"Purabiyā"}, protoLanguage = "inc-apa", } m["inc-hiw"] = { "Western Hindi", 12600937, "inc-cen", protoLanguage = "inc-ohi", } m["inc-hnd"] = { "Hindustani", 11051, "inc-hiw", aliases = {"Hindi-Urdu"}, protoLanguage = "hi-mid", } m["inc-ins"] = { "Insular Indo-Aryan", 12179302, "inc", protoLanguage = "inc-apa", } m["inc-kas"] = { "Kashmiric", nil, "inc-dre", aliases = {"Kashmiri"}, } m["inc-koh"] = { "Kohistani", 13018610, "inc-dre", } m["inc-krd"] = { "KRDS languages", 6356154, "inc-eas", aliases = {"Kamta, Rajbanshi, Deshi and Surjapuri", "KRNB languages", "Kamta, Rajbanshi and Northern Deshi Bangla"}, } m["inc-kun"] = { "Kunar", nil, "inc-dar", } m["inc-mid"] = { "Middle Indo-Aryan", 3236316, "inc", aliases = {"Middle Indic"}, } m["inc-nwe"] = { "Northwestern Indo-Aryan", 16111018, "inc", protoLanguage = "inc-apa", } m["inc-nor"] = { "Northern Indo-Aryan", 946077, "inc", protoLanguage = "inc-aka", } m["inc-old"] = { "Old Indo-Aryan", 118976896, "inc", aliases = {"Old Indic"}, } m["inc-pah"] = { "Pahari", 946077, "inc-nor", aliases = {"Pahadi"}, protoLanguage = "inc-aka", } m["inc-pan"] = { "Punjabic", 2656685, "inc-nwe", aliases = {"Greater Punjabic"}, protoLanguage = "inc-opa", } m["inc-pas"] = { "Pashayi", 36670, "inc-dar", aliases = {"Pashai"}, } m["inc-rom"] = { "Romani", 13201, "inc-wes", aliases = {"Romany", "Gypsy", "Gipsy"}, } m["inc-shn"] = { "Shinaic", 12646125, "inc-dre", } m["inc-snd"] = { "Sindhic", 7522212, "inc-nwe", protoLanguage = "inc-avr", } m["inc-sou"] = { "Southern Indo-Aryan", 10856062, "inc", protoLanguage = "inc-ama", } m["inc-tha"] = { "Tharu", 34035, "inc-eas", } m["inc-wes"] = { "Western Indo-Aryan", nil, "inc", protoLanguage = "inc-agu", } m["ine"] = { "ইন্দো-ইউরোপীয়", 19860, aliases = {"Indo-Germanic"}, } m["ine-ana"] = { "Anatolian", 147085, "ine", } m["ine-bsl"] = { "Balto-Slavic", 147356, "ine", } m["ine-toc"] = { "Tocharian", 37029, "ine", aliases = {"Tokharian"}, } m["ira"] = { "Iranian", 33527, "iir", } m["ira-csp"] = { "Caspian", 5049123, "ira-mpr", } m["ira-cen"] = { "Central Iranian", nil, "ira", } m["ira-kms"] = { "Komisenian", nil, "ira-mpr", aliases = {"Semnani"}, } m["ine-luw"] = { "Luwic", 115748615, "ine-ana", aliases = {"Luvic"}, } m["ira-mid"] = { "Middle Iranian", 6841465, "ira", } m["ira-mny"] = { "Munji-Yidgha", nil, "ira-sym", aliases = {"Yidgha-Munji"}, } m["ira-msh"] = { "Mazanderani-Shahmirzadi", nil, "ira-csp", } m["ira-nei"] = { "Northeastern Iranian", 10775567, "ira", } m["ira-nwi"] = { "Northwestern Iranian", 390576, "ira-wes", } m["ira-old"] = { "Old Iranian", 23301845, "ira", } m["ira-orp"] = { "Ormuri-Parachi", nil, "ira-sei", } m["ira-pat"] = { "Pathan", nil, "ira-sei", } m["ira-sbc"] = { "Sogdo-Bactrian", nil, "ira-nei", } m["ira-mpr"] = { "Medo-Parthian", nil, "ira-nwi", aliases = {"Partho-Median"}, } m["ira-sgi"] = { "Sanglechi-Ishkashimi", 18711232, "ira-sei", } m["ira-shr"] = { "Shughni-Roshani", 11732824, "ira-shy", } m["ira-shy"] = { "Shughni-Yazghulami", nil, "ira-sym", } m["ira-sgc"] = { "Sogdic", nil, "ira-sbc", aliases = {"Sogdian"}, } m["ira-sei"] = { "Southeastern Iranian", 3833002, "ira", } m["ira-swi"] = { "Southwestern Iranian", 390424, "ira-wes", } m["ira-sym"] = { "Shughni-Yazghulami-Munji", nil, "ira-sei", } m["ira-wes"] = { "Western Iranian", 129850, "ira", } m["ira-zgr"] = { "Zaza-Gorani", 167854, "ira-mpr", aliases = {"Zaza-Gurani", "Gorani-Zaza"}, } m["iro"] = { "Iroquoian", 33623, } m["iro-nor"] = { "North Iroquoian", nil, "iro", } m["itc"] = { "Italic", 131848, "ine", } m["itc-laf"] = { "Latino-Faliscan", 33478, "itc", aliases = {"Latinian"}, } m["itc-sbl"] = { "Osco-Umbrian", 515194, "itc", aliases = {"Sabellic", "Sabellian"}, } m["jpx"] = { "Japonic", 33612, aliases = {"Japanese", "Japanese-Ryukyuan"}, } m["jpx-nry"] = { "Northern Ryukyuan", 20862796, "jpx-ryu", } m["jpx-ryu"] = { "Ryukyuan", 56393, "jpx", } m["jpx-sry"] = { "Southern Ryukyuan", 18392243, "jpx-ryu", } m["kar"] = { "Karen", 1364815, "sit", } m["kca"] = { "Khanty", 33563, "urj-ugr", aliases = {"Khantyic", "Khantic"}, } --[=[ Exceptional language and family codes for Khoisan and Kordofanian languages can use the prefix "khi-" and "kdo-" respectively, though they are no longer family codes themselves. ]=]-- m["khi-kal"] = { "Kalahari Khoe", nil, "khi-kho", } m["khi-khk"] = { "Khoekhoe", nil, "khi-kho", } m["khi-kkw"] = { "Khoe-Kwadi", 60785084, aliases = {"Kwadi-Khoe"}, } m["khi-kho"] = { "Khoe", 2736449, "khi-kkw", aliases = {"Central Khoisan"}, } m["khi-kxa"] = { "Kx'a", 6450587, aliases = {"Kxa", "Ju-ǂHoan"}, } m["khi-tuu"] = { "Tuu", 631046, aliases = {"Kwi", "Taa-Kwi", "Southern Khoisan", "Taa-ǃKwi", "Taa-ǃUi", "ǃUi-Taa"}, } m["kro"] = { "Kru", 33535, "nic-vco", } m["kro-aiz"] = { "Aizi", 4699431, "kro", } m["kro-bet"] = { "Bété", 32956, "kro-ekr", } m["kro-did"] = { "Dida", 32685, "kro-ekr", } m["kro-ekr"] = { "Eastern Kru", 5972899, "kro", } m["kro-grb"] = { "Grebo", 5601537, "kro-wkr", } m["kro-wee"] = { "Wee", nil, "kro-wkr", } m["kro-wkr"] = { "Western Kru", 5972897, "kro", } m["ku"] = { "Kurdish", 36368, "ira-nwi", } m["kv"] = { "Komi", 36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family "urj-prm", } m["map"] = { "Austronesian", 49228, } m["map-ata"] = { "Atayalic", 716610, "map", } m["mjg"] = { "Monguor", 34214, "xgn-shr", } m["mkh"] = { "Mon-Khmer", 33199, "aav", } m["mkh-asl"] = { "Aslian", 3111082, "mkh", } m["mkh-ban"] = { "Bahnaric", 56309, "mkh", } m["mkh-kat"] = { "Katuic", 56697, "mkh", } m["mkh-khm"] = { "Khmuic", 1323245, "mkh", } m["mkh-kmr"] = { "Khmeric", nil, "mkh", } m["mkh-mnc"] = { "Monic", 3217497, "mkh", } m["mkh-mng"] = { "Mangic", 3509556, "mkh", } m["mkh-nbn"] = { "North Bahnaric", 56309, "mkh-ban", } m["mkh-pal"] = { "Palaungic", 2391173, "mkh", } m["mkh-pea"] = { "Pearic", 3073022, "mkh", } m["mkh-pkn"] = { "Pakanic", nil, "mkh-mng", } m["mkh-vie"] = { "Vietic", 2355546, "mkh", } m["mno"] = { "Manobo", 3217483, "phi", } m["mns"] = { "Mansi", 33759, "urj-ugr", aliases = {"Mansic"}, } m["mun"] = { "Munda", 33892, "aav", } m["myn"] = { "Mayan", 33738, } --[=[ Exceptional language and family codes for North American Indian languages can use the prefix "nai-", though "nai" is no longer itself a family code. ]=]-- m["nai-cat"] = { "Catawban", 3446638, "nai-sca", } m["nai-chu"] = { "Chumashan", 1288420, } m["nai-ckn"] = { "Chinookan", 610586, } m["nai-coo"] = { "Coosan", 940278, } m["nai-jcq"] = { "Jicaquean", 12179308, "hok" } m["nai-ker"] = { "Keresan", 35878, } m["nai-klp"] = { "Kalapuyan", 1569040, } m["nai-kta"] = { "Kiowa-Tanoan", 386288, } m["nai-len"] = { "Lencan", 36189, aliases = {"Lenca"}, } m["nai-mdu"] = { "Maiduan", 33502, } m["nai-miz"] = { "Mixe-Zoquean", 954016, aliases = {"Mixe-Zoque"}, } m["nai-min"] = { "Misumalpan", 281693, "qfa-mch", aliases = {"Misuluan", "Misumalpa"}, } m["nai-mus"] = { "Muskogean", 902978, aliases = {"Muskhogean"}, } m["nai-pak"] = { "Pakawan", 65085487, "hok", } m["nai-pal"] = { "Palaihnihan", 1288332, } m["nai-plp"] = { "Plateau Penutian", 2307476, } m["nai-pom"] = { "Pomoan", 2618420, "hok", aliases = {"Pomo", "Kulanapan"}, } m["nai-sca"] = { "Siouan-Catawban", 34181, } m["nai-shp"] = { "Sahaptian", 114782, "nai-plp", } m["nai-shs"] = { "Shastan", 2991735, "hok", } m["nai-tot"] = { "Totozoquean", 7828419, } m["nai-ttn"] = { "Totonacan", 34039, aliases = {"Totonac-Tepehua", "Totonacan-Tepehuan"}, varieties = {"Totonac"}, } m["nai-tqn"] = { "Tequistlatecan", 1568317, "hok", aliases = {"Tequistlatec", "Chontal", "Chontalan", "Oaxacan Chontal", "Chontal of Oaxaca"}, } m["nai-tsi"] = { "Tsimshianic", 34134, } m["nai-utn"] = { "Utian", 13371763, "nai-you", aliases = {"Miwok-Costanoan", "Mutsun"}, } m["nai-wtq"] = { "Wintuan", 1294259, aliases = {"Wintun"}, } m["nai-xin"] = { "Xincan", 1546494, aliases = {"Xinca"}, } m["nai-ykn"] = { "Yukian", 2406722, aliases = {"Yuki-Wappo"}, } m["nai-you"] = { "Yok-Utian", 2886186, } m["nai-yuc"] = { "Yuman-Cochimí", 579137, } m["ngf"] = { "Trans-New Guinea", 34018, } m["ngf-ais"] = { "Aisian", nil, "ngf-eso", } m["ngf-ang"] = { "Angan", 3217366, "ngf", aliases = {"Kratke Range"}, -- Usher } m["ngf-ank"] = { "Angal-Kewa", 12626916, -- exist in dewiki and hrwiki "ngf-sak", } m["ngf-ask"] = { "Asmat-Kamoro", 3031400, "ngf", -- Wikipedia uses Asmat-Kamoro to refer to a narrower group excluding the Sabakor languages (Buruwai and Kamberau, -- which Glottolog splits into North Kamrau and South Kamrau [sic]), and uses Asmat-Kamrau to refer to what we and -- Glottolog call Asmat-Kamoro. Glottolog does not recognize the narrower grouping. aliases = {"Asmat-Kamrau", -- Wikipedia "Asmat-Kamrau Bay", -- Usher }, } m["ngf-asm"] = { "Asmat", 4807421, "ngf-ask", } m["ngf-ata"] = { "Ankave-Tainae-Akoye", nil, "ngf-ang", aliases = {"Southwest Kratke Range"}, -- Usher } m["ngf-awd"] = { "Awyu-Dumut", -- [[w:Awyu-Dumut languages]] redirects to [[w:Greater Awyu languages]] 4830163, -- exist in eswiki, hrwiki and ruwiki "ngf-gaw", aliases = {"Central Digul River"}, -- Usher } m["ngf-awy"] = { "Awyu", 96372866, "ngf-awd", } m["ngf-bda"] = { "Becking-Dawi", nil, -- Q55993716 ([[Category:Becking–Dawi languages]]) exists in enwiki "ngf-gaw", aliases = {"Becking and Dawi Rivers"}, -- Usher } m["ngf-bin"] = { "Binanderean", 3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean "ngf-gbi", aliases = {"Oro"}, -- Usher (2020) } m["ngf-boa"] = { "Boane", nil, "ngf-era", aliases = {"Boana", -- Glottolog's name "Wain"}, -- not in Usher; "Wain" often excludes Mungkip, perhaps because it's poorly documented } m["ngf-bos"] = { "Bosavi", 4947122, "ngf", aliases = {"Papuan Plateau"}, -- alternative name given by Wikipedia } m["ngf-bsi"] = { "Baruya-Simbari", nil, "ngf-ang", aliases = {"Northwest Kratke Range"}, -- Usher } m["ngf-cda"] = { "Central Dani", nil, "ngf-dan", aliases = {"Dani"}, -- Usher } m["ngf-chw"] = { "Chimbu-Wahgi", 3217383, "ngf", aliases = {"Simbu-Western Highlands"}, -- alternative name given by Wikipedia } m["ngf-dag"] = { "Dagan", 5208454, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Meneao Range"}, } m["ngf-dal"] = { "Dallman", nil, "ngf-huo", aliases = {"Kinalakna-Kumukio", -- Pawley-Hammarström, who exclude Nomu, but they only had a numeral list of that language to work from "Northeast Huon", -- Usher }, } m["ngf-dan"] = { "Dani", 3217389, "ngf", -- Wikipedia renames the Dani languages to the Baliem Valley languages and sometimes (but not consistently) -- reserves the name Dani (or "Dani proper") for a narrower group excluding Wano and the poorly attested Ngalik -- languages (Nduga, Silimo, and the Yali dialect cluster, which we, following Ethnologue and Glottolog, split into -- Anggurk Yali, Ninia Yali and Pass Valley Yali). Glottolog does not recognize the narrower grouping. aliases = {"Baliem Valley", -- Wikipedia "Balim Valley", -- Usher }, } m["ngf-dum"] = { "Dumut", -- [[w:Dumut languages]] redirects to [[w:Greater Awyu languages]] nil, "ngf-awd", aliases = {"Wambon"}, -- Usher } m["ngf-ehu"] = { "Eastern Huon", -- Glottolog adds Ono and Sialum, Pawley-Hammarström adds Dedua 10567087, "ngf-huo", aliases = {"East Huon"}, -- Usher } m["ngf-eku"] = { "East Kutubuan", 5328752, "ngf", -- Not in TNG per Glottolog but accepted by all others. Sometimes grouped with Fasu to form a Kutubuan family. aliases = {"East Kutubu"}, -- Glottolog's name } m["ngf-enc"] = { "Engic", nil, "ngf-eng", aliases = {"Engan", -- Glottolog "Engan proper", -- Wikipedia "North Engan", -- alternative name given by Wikipedia "Trans-Enga", -- Usher }, } m["ngf-eng"] = { "Engan", 3217449, "ngf", aliases = {"Enga-Kewa-Huli", -- Glottolog, Pawley-Hammarström "Enga-Southern Highlands", -- Usher }, } m["ngf-era"] = { "Erap", nil, "ngf-fin", aliases = {"Erap River"}, -- Usher? } m["ngf-eso"] = { "East Sogeram", nil, "ngf-sog", } m["ngf-est"] = { "East Strickland", 5329440, "ngf", aliases = {"Strickland River"}, -- alternative name given by Wikipedia } m["ngf-eva"] = { "Evapia", nil, "ngf-rai", aliases = {"Evapia River"}, -- Usher } m["ngf-fgi"] = { "Fore-Gimi", nil, "ngf-gor", aliases = {"South Goroka"}, -- Usher } m["ngf-fhu"] = { "Finisterre-Huon", 3217453, "ngf", aliases = {"Finisterre Range-Huon Peninsula"}, -- per Usher } m["ngf-fin"] = { "Finisterre", 5450373, "ngf-fhu", aliases = {"Finisterre-Saruwaged", -- Glottolog's name "Finisterre Range"}, -- per Usher } m["ngf-gah"] = { "Gahuku", nil, "ngf-gor", aliases = {"Alekano-Asaro River"}, -- Usher } m["ngf-gau"] = { "Gauwa", nil, "ngf-kai", aliases = {"West Kainantu"}, -- Usher } m["ngf-gaw"] = { "Greater Awyu", 12627424, "ngf", aliases = {"Digul River"}, -- used by Usher (2020) } m["ngf-gbi"] = { "Greater Binanderean", 3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean "ngf", -- not placed in Trans-New Guinea in Usher (2020) aliases = {"Guhu-Oro"}, -- Guhu-Oro is used in Usher (2020) } m["ngf-gko"] = { "Gaena-Korafe", 11732347, -- considered a single Korafe language by Wikipedia "ngf-bin", aliases = {"Gaina-Korafe"}, -- Usher } m["ngf-gmo"] = { "Gusap-Mot", 16110857, "ngf-fin", aliases = {"Mot River"}, -- Usher? } m["ngf-gor"] = { "Goroka", 15478597, "ngf-kgo", } m["ngf-gsu"] = { "Gogodala-Suki", 5577428, "ngf", -- Possibly in the proposed Papuan Gulf family. Not in TNG per Glottolog but accepted by all others. aliases = {"Suki-Gogodala", -- Glottolog's name "Suki-Aramia River", -- Used in Usher (2020) }, } m["ngf-gum"] = { "Gum", 5618008, "ngf-mab", } m["ngf-gvd"] = { "Grand Valley Dani", -- considered a single language by Wikipedia 5595219, "ngf-cda", } m["ngf-hag"] = { "Hagen", -- [[w:Hagen languages]] redirects to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Melpa-Kaugel River"}, -- Usher } m["ngf-han"] = { "Hanseman", 5651020, "ngf-mab", aliases = {"Hansemann Range"}, -- Usher } m["ngf-huo"] = { "Huon", 5946109, "ngf-fhu", aliases = {"Huon Peninsula"}, -- per Usher } m["ngf-jim"] = { "Jimi", -- [[w:Jimi languages]] and [[w:Jimi River languages]] redirect to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Jimi River"}, -- Usher } m["ngf-kab"] = { "Kabwum", nil, "ngf-huo", aliases = {"Timbe-Selepet-Komba", -- Pawley-Hammarström, "Northwest Huon", -- Usher }, } m["ngf-kai"] = { "Kainantu", -- Kambaira: under "unclassified Kainantu" (Glottolog), Tairora (Pawley-Hammarström), Gauwa (Usher) 15478590, "ngf-kgo", aliases = {"Gadsup-Auyana-Awa-Tairora"}, -- Wurm, } m["ngf-kak"] = { "Kalam-Kobon", 6350303, "ngf-ksa", aliases = {"Kalam", "Kaironk River"}, -- Usher (2020) } m["ngf-kau"] = { "Kaukombar", nil, "ngf-nad", aliases = {"Kaukombaran", -- Glottolog following Z'graggen (1975) "Kaukombar River"}, -- Usher's term } m["ngf-kbm"] = { "Kosorong-Burum-Mindik", nil, "ngf-huo", aliases = {"Bulum River"}, -- Usher } m["ngf-kgo"] = { "Kainantu-Goroka", 3217463, "ngf", aliases = {"Eastern Highlands"}, -- per Usher (2020) } m["ngf-khu"] = { "Kewa-Huli", nil, "ngf-eng", aliases = {"Huli-Southern Highlands"}, -- Usher } m["ngf-kma"] = { "Kâte-Mape", nil, "ngf-ehu", aliases = {"Kate-Mape-Sene", -- Pawley-Hammarström (with Sene), "Southeast Huon", -- Usher }, } m["ngf-kme"] = { "Kapau-Menya", nil, "ngf-ang", aliases = {"Southeast Kratke Range"}, -- Usher } m["ngf-koi"] = { "Koiarian", 11154240, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Koiari-Managalas Plateau"}, } m["ngf-kok"] = { "Kokon", -- Usher calls it South Mabuso but includes Gum in it nil, "ngf-mab", } m["ngf-kow"] = { "Kowan", 6435004, "ngf-mad", aliases = {"Isumrud Strait"}, -- per Usher (2020) } m["ngf-ksa"] = { "Kalam-Southern Adelbert", nil, "ngf-mad", aliases = {"Kalamic-South Adelbert", -- Glottolog "West Madang"}, -- Usher (2020) } m["ngf-kto"] = { "Kube-Tobo", -- per Glottolog, one language "Kulungtfu-Yuanggeng-Tobo" 1173235, -- code for Tobo-Kube language "ngf-huo", aliases = {"Tobo-Kube"}, } m["ngf-kts"] = { "Komyandaret-Tsaukambo", nil, "ngf-bda", aliases = {"Becking River"}, -- Usher } m["ngf-kum"] = { "Kumil", nil, "ngf-nad", aliases = {"Kumilan", -- Pawley-Hammarström following Z'graggen (1975) "Kumil River"}, -- Usher's term } m["ngf-kya"] = { "Kamano-Yagaria", nil, "ngf-gor", aliases = {"Henganofi", -- Usher "Kamano-Yagaria-Keigana", }, } m["ngf-lok"] = { "Lowland Ok", nil, "ngf-okk", } m["ngf-mab"] = { "Mabuso", 6721668, "ngf-mad", } m["ngf-mad"] = { "Madang", 11217556, "ngf", aliases = {"Madang-Adelbert Range"}, -- Z'graggen (1975), corresponding to today's Madang except in lacking Kalam and Gants } m["ngf-mek"] = { "Mek", 6810515, "ngf", aliases = {"Goliath"}, -- outdated alternative name given by Wikipedia } m["ngf-min"] = { "Mindjim", 86749913, "ngf-mad", aliases = {"Lower Minjim", -- Glottolog, placed in Rai Coast by Glottolog and Pawley-Hammarström; Glottolog's -- Mindjim has 6 languages, including "Upper Minjim" (Rerau and Sgi Bara) "Mindjim River", -- Usher "Minjim", "Minjim River", }, } -- Add if Molet is separated from Asaro'o -- m["ngf-moa"] = { -- "Molet-Asaro'o", -- nil, -- "ngf-war", -- } m["ngf-mok"] = { "Mountain Ok", -- [[w:Mountain Ok languages]] redirects to [[w:Ok languages]] nil, "ngf-okk", } m["ngf-mom"] = { "Mombum", 6897077, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Mombum-Koneraw", "Komolom", "Muli Strait"}, -- Pawley-Hammarström uses Komolom, Usher uses Muli Strait } m["ngf-msu"] = { "Mian-Suganga", -- considred a single Mian language by Wikipedia 12952846, "ngf-mok", aliases = {"Mianic"}, -- Glottolog } m["ngf-nad"] = { "Northern Adelbert", -- not accepted by Pawley-Hammarström 16952821, -- code for Croisilles linkage "ngf-mad", aliases = {"Adelbert Range-Isumrud Strait", -- Usher (2020) "North Adelbert", "Pihom-Isumrud"}, -- Ross? } m["ngf-nbi"] = { "North Binanderean", nil, "ngf-bin", aliases = {"Suena-Zia"}, -- Usher } m["ngf-nde"] = { "Ndeiram", -- [[w:Ndeiram River languages]] redirects to [[w:Greater Awyu languages]] nil, "ngf-awd", aliases = {"Ndeiram River"}, -- Usher? } m["ngf-ngn"] = { "Ngalik-Nduga", -- [[w:Ngalik languages]] redirects to [[w:Baliem Valley languages]] = Dani languages nil, "ngf-dan", aliases = {"Ngalik"}, -- Usher } m["ngf-nso"] = { "North Sogeram", nil, "ngf-sog", aliases = {"Mum-Sirva", -- Usher "North Central Sogeram", -- used by those who accept Central Sogeram (= North Sogeram + Apali and Manat) "North-Central Sogeram", -- rarer than without the dash "Sikan"}, -- Z’graggen (1975?) } m["ngf-num"] = { "Numugen", nil, "ngf-nad", aliases = {"Numugenan", -- Glottolog following Z'graggen 1975 "Numugen River"}, -- Usher's term } m["ngf-nur"] = { "Nuru", -- Usher excludes Yangulam, Pawley-Hammarström include Jilim and Rerau nil, "ngf-rai", aliases = {"Nuru River"}, -- Usher? } m["ngf-nwh"] = { "Northwest Hanseman", -- Usher nil, "ngf-han", aliases = {"Wamas-Samosa-Murupi-Mosimo"}, -- Glottolog, Greenhill, and Pawley-Hammarström following Z'graggen; the most common name, but very unwieldy } m["ngf-oen"] = { "Outer Engan", -- considered a single Nete language by Wikipedia 6998869, "ngf-enc", aliases = {"Nete-Bisorio"}, -- Usher } m["ngf-okk"] = { "Ok", 7081687, "ngf", } m["ngf-omo"] = { "Omosan", -- not included in (Greater) Northern Adelbert by Glottolog, but a sister nil, "ngf-nad", } m["ngf-oro"] = { "Orokaivic", 7103752, -- considered a single Orokaiva language by Wikipedia "ngf-bin", aliases = {"Central Oro"}, -- Usher } m["ngf-pan"] = { "Paniai Lakes", 6035631, "ngf", aliases = {"Wissel Lakes", "Wissel Lakes-Kemandoga River"}, -- alternative names given by Wikipedia } m["ngf-pek"] = { "Peka", nil, "ngf-rai", aliases = {"Peka River"}, -- Usher? } m["ngf-pom"] = { "Pomoikan", nil, "ngf-sad", } m["ngf-rai"] = { "Rai Coast", 7283663, "ngf-mad", aliases = {"South Madang"}, -- Usher } m["ngf-sab"] = { "Sabakor", -- [[w:Sabakor languages]] redirects to [[w:Asmat–Kamrau languages]] nil, -- 55994614 is for [[Category:Kamrau Bay languages]], which exists on enwiki "ngf-ask", aliases = {"Kamrau Bay"}, -- Usher } m["ngf-sad"] = { "Southern Adelbert", 12633980, "ngf-ksa", aliases = {"South Adelbert", -- Glottolog "Southern Adelbert Range", -- Z'graggen (1980) "Sogeram and Tomul Rivers"}, -- Usher (2020)? } m["ngf-sak"] = { "Sau-Angal-Kewa", nil, "ngf-khu", aliases = {"Southern Highlands"}, -- Usher } m["ngf-san"] = { "Sankwep", nil, "ngf-huo", aliases = {"Nabak-Momolili", -- Pawley-Hammarström, "Southwest Huon", -- Usher }, } m["ngf-sbh"] = { "South Bird's Head", 7566330, "ngf", } m["ngf-sim"] = { "Simbu", nil, "ngf-chw", } m["ngf-sog"] = { "Sogeram", 86750419, "ngf-sad", aliases = {"Sogeram River", -- Usher "Wanang"}, } m["ngf-sop"] = { "Sopac", nil, "ngf-ehu", aliases = {"Momare-Migabac", -- Pawley-Hammarström, "Masaweng River", -- Usher }, } m["ngf-taa"] = { "Tainae-Akoye", nil, "ngf-ata", aliases = {"Akoye-Tainae"}, -- Usher } m["ngf-tai"] = { "Tairora", nil, "ngf-kai", aliases = {"Tairoric", -- Glottolog, "East Kainantu", -- Usher }, } m["ngf-tib"] = { "Tiboran", nil, "ngf-nad", aliases = {"Nuclear Tibor", -- Glottolog, excluding Wanambre/Mokati "Tiboran River", -- Usher (2020) "Tibor", -- Pick (2020) and Glottolog including Wanambre/Mokati } } m["ngf-tna"] = { "Tangko-Nakai", nil, "ngf-okk", aliases = {"Central Ok"}, -- Usher } m["ngf-uru"] = { "Uruwa", nil, "ngf-fin", aliases = {"Uruwa River"}, -- Usher? } m["ngf-usi"] = { "Utu-Silopi", nil, "ngf-han", aliases = {"Silopi-Utu"}, -- Usher } m["ngf-waa"] = { "Wantoat-Awara", -- not in Usher but Wantoat and Awara form a dialect chain nil, "ngf-wan", aliases = {"Awara-Wantoat"}, -- per Wikipedia } m["ngf-wah"] = { "Wahgi", -- [[w:Wahgi languages]] redirects to [[w:Chimbu–Wahgi languages]] nil, "ngf-chw", aliases = {"Wahgi Valley"}, -- Usher } m["ngf-wan"] = { "Wantoatic", nil, "ngf-fin", aliases = {"Wantoat", "Wantoat River", -- Usher? }, } m["ngf-war"] = { "Warup", 12645082, "ngf-fin", aliases = {"Warup River"}, -- Usher? } m["ngf-woj"] = { "Wojokesic", nil, "ngf-ang", aliases = {"Northeast Kratke Range"}, -- Usher } m["ngf-wok"] = { "West Ok", nil, "ngf-okk", aliases = {"Kwer-Kopkaka-Burumakok"}, -- Glottolog, Pawley-Hammarström } m["ngf-wso"] = { "West Sogeram", nil, "ngf-sog", aliases = {"Mand-Nend", -- Usher "Atan", -- Wurm following Z'graggen }, } m["ngf-yag"] = { "Yaganon", -- placed in Rai Coast by Glottolog and Pawley-Hammarström 35323986, "ngf-mad", aliases = {"Yaganon River"}, -- Usher } m["ngf-yal"] = { "Yali", -- considered a single language by Wikipedia 8047468, "ngf-ngn", aliases = {"Ngalik"}, -- Glottolog, Pawley-Hammarström } m["ngf-yar"] = { "Yareban", 16977672, "ngf", -- not accepted as TNG by Glottolog but accepted by all others aliases = {"Musa River"}, } m["ngf-ynu"] = { "Yau-Nungon", 12953319, -- for the single Yau language in Wikipedia ([[w:Yau language (Trans–New Guinea)]]) "ngf-uru", } m["ngf-yup"] = { "Yupna", nil, "ngf-fin", aliases = {"Yupna River"}, -- Usher? } m["nic"] = { "Niger-Congo", 33838, aliases = {"Niger-Kordofanian"}, } m["nic-alu"] = { "Alumic", 4737355, "nic-plt", } m["nic-bas"] = { "Basa", 4866154, "nic-knj", } m["nic-bbe"] = { "Eastern Beboid", nil, "nic-beb", } m["nic-bco"] = { "Benue-Congo", 33253, "nic-vco", } m["nic-bcr"] = { "Bantoid-Cross", 806983, "nic-bco", } m["nic-bdn"] = { "Northern Bantoid", nil, "nic-bod", aliases = {"North Bantoid"}, } m["nic-bds"] = { "Southern Bantoid", 3183152, "nic-bod", aliases = {"Wide Bantu", "Bin"}, } m["nic-beb"] = { "Beboid", 813549, "nic-bds", } m["nic-ben"] = { "Bendi", 4887065, "nic-bcr", } m["nic-beo"] = { "Beromic", 4894642, "nic-plt", } m["nic-bod"] = { "Bantoid", 806992, "nic-bcr", } m["nic-buk"] = { "Buli-Koma", nil, "nic-ovo", } m["nic-bwa"] = { "Bwa", 12628562, "nic-gur", other_names = {"Bwamu", "Bomu"}, } m["nic-cde"] = { "Central Delta", 3813191, "nic-cri", } m["nic-cri"] = { "Cross River", 1141096, "nic-bcr", } m["nic-dag"] = { "Dagbani", nil, "nic-wov", } m["nic-dak"] = { "Dakoid", 1157745, "nic-bdn", } m["nic-dge"] = { "Escarpment Dogon", 5397128, "qfa-dgn", } m["nic-dgw"] = { "West Dogon", nil, "qfa-dgn", } m["nic-eko"] = { "Ekoid", 1323395, "nic-bds", } m["nic-eov"] = { "Eastern Oti-Volta", nil, "nic-ovo", aliases = {"Samba"}, } m["nic-fru"] = { "Furu", 5509783, "nic-bds", } m["nic-gne"] = { "Eastern Gurunsi", 12633072, "nic-gns", aliases = {"Eastern Grũsi"}, } m["nic-gnn"] = { "Northern Gurunsi", nil, "nic-gns", aliases = {"Northern Grũsi"}, } m["nic-gnw"] = { "Western Gurunsi", nil, "nic-gns", aliases = {"Western Grũsi"}, } m["nic-gns"] = { "Gurunsi", 721007, "nic-gur", aliases = {"Grũsi"}, } m["nic-gre"] = { "Eastern Grassfields", 5330160, "nic-grf", } m["nic-grf"] = { "Grassfields", 750932, "nic-bds", aliases = {"Grassfields Bantu", "Wide Grassfields"}, } m["nic-grm"] = { "Gurma", 30587833, "nic-ovo", } m["nic-grs"] = { "Southwest Grassfields", 7571285, "nic-grf", } m["nic-gur"] = { "Gur", 33536, "alv-sav", aliases = {"Voltaic"}, } m["nic-ief"] = { "Ibibio-Efik", 2743643, "nic-lcr", } m["nic-jer"] = { "Jera", nil, "nic-kne", } m["nic-jkn"] = { "Jukunoid", 1711622, "nic-pla", } m["nic-jrn"] = { "Jarawan", 1683430, "nic-mba", } m["nic-jrw"] = { "Jarawa", 35423, "nic-jrn", } m["nic-kam"] = { "Kambari", 6356294, "nic-knj", } m["nic-ktl"] = { "Katloid", nil, "nic", } m["nic-kau"] = { "Kauru", nil, "nic-kne", } m["nic-kmk"] = { "Kamuku", 6359821, "nic-knj", } m["nic-kne"] = { "East Kainji", 5328687, "nic-knj", } m["nic-knj"] = { "Kainji", 681495, "nic-pla", } m["nic-knn"] = { "Northwest Kainji", 7060098, "nic-knj", } m["nic-ktl"] = { "Katloid", 6377681, "nic", aliases = {"Katla", "Katla-Tima"}, } m["nic-lcr"] = { "Lower Cross River", 3813193, "nic-cri", } m["nic-mam"] = { "Mamfe", 2005898, "nic-bds", aliases = {"Nyang"}, } m["nic-mba"] = { "Mbam", 687826, "nic-bds", } m["nic-mbc"] = { "Mba", 6799561, "nic-ubg", } m["nic-mbw"] = { "West Mbam", nil, "nic-mba", } m["nic-mmb"] = { "Mambiloid", 1888151, other_names = {"North Bantoid"}, -- per Wikipedia, North Bantoid is the parent family "nic-bdn", } m["nic-mom"] = { "Momo", 6897393, "nic-grf", } m["nic-mre"] = { "Moré", nil, "nic-wov", } m["nic-ngd"] = { "Ngbandi", 36439, "nic-ubg", } m["nic-nge"] = { "Ngemba", 7022271, "nic-gre", } m["nic-ngk"] = { "Ngbaka", 3217499, "nic-ubg", } m["nic-nin"] = { "Ninzic", 7039282, "nic-plt", } m["nic-nka"] = { "Nkambe", 7042520, "nic-gre", } m["nic-nkb"] = { "Baka", nil, "nic-nkw", } m["nic-nke"] = { "Eastern Ngbaka", nil, "nic-ngk", } m["nic-nkg"] = { "Gbanziri", nil, "nic-nkw", } m["nic-nkk"] = { "Kpala", nil, "nic-nkw", } m["nic-nkm"] = { "Mbaka", nil, "nic-nkw", } m["nic-nkw"] = { "Western Ngbaka", nil, "nic-ngk", } m["nic-npd"] = { "North Plateau Dogon", nil, "qfa-dgn", } m["nic-nun"] = { "Nun", 13654297, "nic-gre", } m["nic-nwa"] = { "Nanga-Walo", nil, "qfa-dgn", } m["nic-ogo"] = { "Ogoni", 2350726, "nic-cri", aliases = {"Ogonoid"}, } m["nic-ovo"] = { "Oti-Volta", 1157178, "nic-gur", } m["nic-pla"] = { "Platoid", 453244, "nic-bco", aliases = {"Central Nigerian"}, } m["nic-plc"] = { "Central Plateau", 5061668, "nic-plt", } m["nic-pld"] = { "Plains Dogon", nil, "qfa-dgn", } m["nic-ple"] = { "East Plateau", 5329154, "nic-plt", } m["nic-pls"] = { "South Plateau", 7568236, "nic-plt", aliases = {"Jilic-Eggonic"}, } m["nic-plt"] = { "Plateau", 1267471, "nic-pla", } m["nic-ras"] = { "Rashad", 3401986, "nic", } m["nic-rnc"] = { "Central Ring", nil, "nic-rng", } m["nic-rng"] = { "Ring", 2269051, "nic-grf", aliases = {"Ring Road"}, } m["nic-rnn"] = { "Northern Ring", nil, "nic-rng", } m["nic-rnw"] = { "Western Ring", nil, "nic-rng", } m["nic-ser"] = { "Sere", 7453058, "nic-ubg", } m["nic-shi"] = { "Shiroro", 7498953, "nic-knj", aliases = {"Pongu"}, } m["nic-sis"] = { "Sisaala", 36532, "nic-gnw", } m["nic-tar"] = { "Tarokoid", 2394472, "nic-plt", } m["nic-tiv"] = { "Tivoid", 752377, "nic-bds", } m["nic-tvc"] = { "Central Tivoid", nil, "nic-tiv", } m["nic-tvn"] = { "Northern Tivoid", nil, "nic-tiv", } m["nic-ubg"] = { "Ubangian", 33932, "nic-vco", -- or none } m["nic-uce"] = { "East-West Upper Cross River", nil, "nic-ucr", } m["nic-ucn"] = { "North-South Upper Cross River", nil, "nic-ucr", } m["nic-ucr"] = { "Upper Cross River", 4108624, "nic-cri", aliases = {"Upper Cross"}, } m["nic-vco"] = { "Volta-Congo", 37228, "alv", } m["nic-wov"] = { "Western Oti-Volta", nil, "nic-ovo", aliases = {"Moré-Dagbani"} } m["nic-ykb"] = { "Yukubenic", 16909196, "nic-plt", aliases = {"Oohum"}, } m["nic-ymb"] = { "Yambasa", nil, "nic-mba", } m["nic-yon"] = { "Yom-Nawdm", nil, "nic-ovo", aliases = {"Moré-Dagbani"} } m["njo"] = { "Ao", 28433, "sit-aao", aliases = {"Ao Naga"}, } m["nub"] = { "Nubian", 1517194, "sdv-nes", } m["nub-hil"] = { "Hill Nubian", 5762211, "nub", aliases = {"Kordofan Nubian"}, } m["omq"] = { "Oto-Manguean", 33669, } m["omq-cha"] = { "Chatino", 35111, "omq-zap", } m["omq-chi"] = { "Chinantecan", 35828, "omq", } m["omq-cui"] = { "Cuicatec", 616024, "omq-mix", } m["omq-maz"] = { "Mazatecan", 36230, "omq", aliases = {"Mazatec"}, } m["omq-mix"] = { "Mixtecan", 21083066, "omq", } m["omq-mxt"] = { "Mixtec", 36363, "omq-mix", } m["omq-otp"] = { "Oto-Pamean", 1270220, "omq", } m["omq-pop"] = { "Popolocan", 5132273, "omq", } m["omq-tri"] = { "Triqui", 780200, "omq-mix", aliases = {"Trique"}, } m["omq-zap"] = { "Zapotecan", 8066463, "omq", } m["omq-zpc"] = { "Zapotec", 13214, "omq-zap", } m["omv"] = { "Omotic", 33860, "afa", } m["omv-aro"] = { "Aroid", 3699526, "omv", aliases = {"Ari-Banna", "South Omotic", "Somotic"}, } m["omv-diz"] = { "Dizoid", 430251, "omv", aliases = {"Maji", "Majoid"}, } m["omv-eom"] = { "East Ometo", 20527288, "omv-ome", } m["omv-gon"] = { "Gonga", 4143043, "omv", aliases = {"Kefoid"}, } m["omv-mao"] = { "Mao", 1351495, "omv", } m["omv-nom"] = { "North Ometo", nil, "omv-ome", } m["omv-ome"] = { "Ometo", 36310, "omv", } m["oto"] = { "Otomian", 130372545, "omq-otp", } m["oto-otm"] = { "Otomi", 36355, "oto", } m["paa"] = { "Papuan", 236425, "qfa-not", } m["paa-aia"] = { "Aian", 4767739, -- Annaberg languages "paa-ram", aliases = {"Middle Ramu", -- Foley (with Rao), "Annaberg", -- with Rao "Aram-Aren", -- Usher }, } m["paa-alp"] = { "Alor-Pantar", 3502429, "paa-tap", } m["paa-amu"] = { "Amto-Musan", 480281, aliases = {"Samaia River"}, } m["paa-ani"] = { "Anim", 55603991, aliases = {"Fly River"}, } m["paa-ara"] = { "Arapesh", 4784223, "paa-koa", aliases = {"Arapeshan"}, -- Foley } m["paa-arf"] = { "Arafundi", 4783702, } m["paa-ata"] = { "Ataitan", 4812652, "paa-ram", aliases = {"Tangu", -- Foley "Tanggu", -- alternative name given by Wikipedia "Moam River", -- Usher }, } m["paa-baa"] = { "Bayono-Awbono", 2424781, } m["paa-bai"] = { "Baining", 748487, aliases = {"East New Britain"}, } m["paa-baw"] = { "Bosngun-Awar", nil, "paa-ott", aliases = {"East Ramu Coast", -- Usher "Bosman-Awar", -- Wikipedia }, } m["paa-bew"] = { "Bewani", -- [[w:Bewani languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 16113460, "paa-bor", aliases = {"Poal River"}, -- Usher } m["paa-boa"] = { "Boazi", 48803717, "paa-mby", aliases = {"Lake Murray"}, -- Usher } m["paa-bor"] = { "Border", 1752158, aliases = {"Upper Tami", "Tami River-Bewani Range", -- Usher }, } m["paa-bul"] = { "Bulaka River", 4987195, aliases = {"Yelmek-Maklew", "Jabga"}, -- Yelmek-Maklew in Evans (2018) and Gregor (2021) } m["paa-bvi"] = { "Betaf-Vitou", -- Glottolog nil, "paa-tor", aliases = {"Vitou-Betaf", -- Wikipedia "Fitou-Tena", -- Usher "Manirem", }, } m["paa-clp"] = { "Central Lakes Plain", -- [[w:Central Lakes Plain languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q86780132 is for the corresponding category, which exists in enwiki "paa-lpl", aliases = {"East Tariku", -- Glottolog "Central Lakes Plains", -- Usher }, } m["paa-dtu"] = { "Doso-Turumsa", 16917784, -- possibly related to East Strickland languages aliases = {"Soari River"}, -- Usher's name } m["paa-ebh"] = { "East Bird's Head", 338064, aliases = {"Mantion-Meax", "Mantion-Meyah", -- Mantion-Meax is Wikipedia's term "Southeast Bird's Head", -- Usher (2020) }, } m["paa-eel"] = { "Eastern Eleman", nil, "paa-ele", aliases = {"East Eleman"}, } m["paa-egb"] = { "East Geelvink Bay", 1497678, aliases = {"Geelvink Bay", "East Cenderawasih"}, -- Geelvink Bay per Glottolog } m["paa-eke"] = { "East Keram", nil, "paa-ker", } m["paa-ele"] = { "Eleman", 3034298, aliases = {"Kerema Bay"}, } m["paa-elp"] = { "East Lakes Plain", -- [[w:East Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]; but Croatian Wikipedia has an entry 12633078, "paa-lpl", aliases = {"East Lakes Plains"}, -- Usher } m["paa-epw"] = { "Eastern Pauwasi", 16115496, aliases = {"East Pauwasi"}, } m["paa-etf"] = { "Eastern Trans-Fly", 5330530, aliases = {"Oriomo"}, -- in increasing recent use, probably originating in Evans (2018) } m["paa-eti"] = { "East Timor", 15496066, "paa-tap", aliases = {"Oirata-Makasae", -- Wikipedia's name "Eastern Timor", -- alternative name given by Wikipedia "Fataluku-Makasai", "Oirata-Makasai", -- alternative names given by Wikidata }, } m["paa-fas"] = { "Fas", 3502658, aliases = {"Baibai-Fas"}, -- Glottolog's name } m["paa-flp"] = { "Far West Lakes Plain", -- [[w:Wapoga River languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q86808337 is for the corresponding Wapoga languages category, which exists in enwiki "paa-lpl", aliases = {"Rasawa", -- Clouse (1997) "Wapoga River", -- Usher, including Kehu/Keuw (unclassified by others) }, } m["paa-gkw"] = { "Greater Kwerba", 12635134, aliases = {"West Foja Range", -- Usher "Kwerbic", -- Wikipedia "Kwerba", -- Foley (2018) }, } m["paa-gto"] = { "Galela-Tobelo", nil, "paa-nnh", aliases = {"Mainland North Halmaheran", -- Glottolog "Mainland North Halmahera", "Northeast Halmahera", -- alternative names "Northeast Halmaheran", -- Wikipedia, from Verhoeve 1988 }, } m["paa-hya"] = { "Heyo-Yahang", nil, "paa-mam", aliases = {"Yahang-Heyo"}, -- Wikipedia's name } m["paa-ing"] = { "Inland Gulf", 6034783, "paa-ani", aliases = {"Inland Gulf of Papua"}, -- Glottolog } m["paa-isk"] = { "Inner Sko", 65043889, "paa-sko", aliases = {"Skouic", -- Glottolog "West Vanimo Coast", -- Usher "Western Skou", -- Wikipedia "Inner Skou", "Nuclear Skou", -- alternative names given by Wikipedia }, } m["paa-iwa"] = { "Iwam", 15147853, "paa-sep", } m["paa-kae"] = { "Kamula-Elevala", 130390498, -- often placed in TNG aliases = {"Kamula-Elevala River"}, } m["paa-kan"] = { "Kanum", -- removed from Tonda by Glottolog nil, "paa-ton", } m["paa-kay"] = { "Kayagaric", 7566330, aliases = {"Kayagar", -- formerly common "Cook River"}, -- per Usher (2020) } m["paa-ker"] = { "Keram", 48768173, -- often grouped within or coordinate with the Ramu languages aliases = {"Keram River"}, } m["paa-kiw"] = { "Kiwaian", 338449, aliases = {"Kiwai"}, -- formerly common, still sees some use } m["paa-kko"] = { "Kaure-Kosare", -- rejected by Pawley-Hammarström but accepted by Glottolog, Foley (2018) and Usher (2020) 48767891, aliases = {"Nawa River"}, -- Usher's term } m["paa-koa"] = { "Kombio-Arapesh", 16115049, "paa-trr", aliases = {"Kombio-Arapeshan", -- Laycock, who includes Wom "Kombio-Arapesh-Urat", -- Glottolog, including Urat }, } m["paa-kol"] = { "Kolopom", 6427807, } m["paa-kom"] = { "Kombio", 65044238, "paa-koa", aliases = {"Kombian", -- Laycock "Kombio-Yambes", -- Glottolog }, } m["paa-kun"] = { "Kunimaipan", 134973258, aliases = {"Northwest Wharton Range"}, -- per Usher (2020) -- often considered a subfamily of Goilalan } m["paa-kwa"] = { "Kwalean", 6450053, aliases = {"Humene-Uare"}, } m["paa-kwe"] = { "Kwerba proper", 12635134, "paa-gkw", aliases = {"Kwerba", -- Usher "Kwerbaic", -- Glottolog }, } m["paa-kwo"] = { "Kwomtari", 2075415, aliases = {"Kwomtari-Nai"}, -- Senu River is a larger unproven proposal } m["paa-lla"] = { "Loloda-Laba", -- a single language in Glottolog (Loloda-Laba) and Wikipedia (Loloda) 11732388, -- for the Loloda language "paa-gto", aliases = {"Loloda"}, -- Wikipedia's name } m["paa-lma"] = { "Left May", 614468, aliases = {"Arai River"}, -- per Usher (2020) -- Sometimes in a putative Arai-Samaia family along with Amto-Musan and the Pyu language } m["paa-lmu"] = { "Lepki-Murkim", -- Kembra accepted by Glottolog and Usher; not by Foley (2020) but does not exclude the possibility -- of a relationship 85776285, -- independent family per Glottolog, part of South Pauwasi River family (under Pauwasi) per Usher (2020) aliases = {"Lepki-Murkim-Kembra"}, -- Glottolog } m["paa-lpl"] = { "Lakes Plain", 6478969, aliases = {"Lakes Plains"}, } m["paa-lra"] = { "Lower Ramu", 65089469, "paa-ram", aliases = {"Ottilien-Misegian"}, -- alternative name given by Wikipedia } m["paa-lse"] = { "Lower Sepik", 7061700, aliases = {"Nor-Pondo"}, } m["paa-mai"] = { "Mairasi", 6736896, aliases = {"Mairasic"}, -- per Glottolog } m["paa-mal"] = { "Mailuan", 6735839, aliases = {"Cloudy Bay"}, } m["paa-mam"] = { "Maimai", -- Foley's Maimai is expanded 53679325, -- this is the code for the expanded Maimai with 6 languages, as opposed to the 3 in "Nuclear Maimai" "paa-trr", aliases = {"Nuclear Maimai", -- Glottolog's name "Maimai proper", -- Wikipedia's name }, } m["paa-man"] = { "Manubaran", 6752335, aliases = {"Mount Brown"}, } m["paa-mar"] = { "Marienberg", 1570589, "paa-trr", aliases = {"Marienberg Hills"}, -- Usher } m["paa-may"] = { "Maybratic", 4830892, -- the code for the Maybrat language in Wikipedia, which subsumes the two languages of this family -- putatively included in West Papuan but generally considered an isolated family aliases = {"Maybrat-Karon"}, } m["paa-mbi"] = { "Mbaham-Iha", 85784512, "qfa-dis", -- Papuan languages; Glottolog groups Karas (Kalamang) with Mbaham-Iha into a (mainland) West Bomberai -- family and stops there; Wikipedia, following Usher and Schapper (2022), groups Karas, Mbaham-Iha -- and the large Timor-Alor-Pantar family into a (Greater) West Bomberai family, saying that Karas is no -- closer to Mbaham-Iha than to Timor-Alor-Pantar. aliases = {"Mbahaam-Iha", -- used by Wikidata "Nuclear West Bomberai", -- Glottolog's name }, } m["paa-mby"] = { "Marind-Boazi-Yaqay", 3217484, "paa-ani", aliases = {"Marind-Boazi-Yaqai", -- Glottolog "Marind-Yakhai", -- Usher, without Boazi "Marind-Yaqai", -- Wikidata "Marind", -- alternative name given by Wikipedia "Marind-Arandai", -- alternative name given by Spanish Wikipedia }, } m["paa-mmu"] = { "Mandi-Muniwara", nil, "paa-mar", aliases = {"West Marienberg Hills"}, -- Usher } m["paa-mon"] = { "Monumbo", -- per Glottolog: "No evidence for the Bogia (Monumbo) languages being related to other Torricelli languages was ever presented" 16928417, aliases = {"Bogia", -- Glottolog "Bogia Bay", -- Usher (2020) }, } m["paa-mri"] = { "Marindic", -- [[w:Marindic languages]] redirects to [[w:Marind–Yaqai languages]] nil, "paa-mby", aliases = {"Marind"}, -- Usher; a single language } m["paa-nam"] = { "Nambu", 6961418, "paa-yam", aliases = {"East Morehead River"}, -- Usher } m["paa-nbo"] = { "North Bougainville", 749496, } m["paa-ndu"] = { "Ndu", 3217498, "paa-sep", -- Not accepted by Glottolog aliases = {"Ndu-Nggala"}, -- Usher } m["paa-ngk"] = { "Ngkolmpu", -- considered a single language by Wikipedia 5908646, "paa-kan", aliases = {"Ngkantr", -- Glottolog "Ngkolmpu Kanum", -- Wikipedia "Ngkontar", -- alternative name given by Wikipedia "Kanum", -- used by Wikidata }, } m["paa-nha"] = { "North Halmahera", 3217358, -- possibly in a proposed West Papuan family or an independent family } m["paa-nim"] = { "Nimboran", 12638426, aliases = {"Nimboranic", -- per Glottolog "Grime River", -- per Usher (2020) } } m["paa-nnd"] = { "Nuclear Ndu", nil, "paa-ndu", aliases = {"Ndu", -- Usher, with Boiken/Boikin "Ndu proper", -- Wikipedia }, } m["paa-nnh"] = { "Northern North Halmahera", nil, "paa-nha", aliases = {"Northern North Halmaheran", -- Glottolog "Halmahera", -- Usher "Core Halmaheran", -- Wikipedia }, } m["paa-nto"] = { "Namla-Tofanma", 16918187, -- independent family per Glottolog and Foley (2018), part of West Pauwasi family (under Pauwasi) per Usher (2020) } m["paa-ott"] = { "Ottilien", 7109477, "paa-lra", aliases = {"Ramu Coast", -- Usher "Watam-Awar-Gamay", -- alternative name given by Wikipedia }, } m["paa-pah"] = { "Pahoturi River", 17049141, aliases = {"Pahoturi"}, -- per Glottolog } m["paa-pal"] = { "Palei", -- Laycock adds Agi and Nabi/Nambi(-Metan) 65089113, "paa-wpa", aliases = {"Nuclear Palai"}, } m["paa-pia"] = { "Piawi", -- per Wikipedia, grouped with Arafundi languages to form Upper Yuat, which is a sister to Madang 7190400, aliases = {"Schraeder Range", -- Usher? "Waibuk"}, } m["paa-pio"] = { "Piore River", 65043152, "paa-sko", aliases = {"Barupu Lagoon", -- Glottolog "Lagoon", -- alternative name given by Wikipedia }, } m["paa-por"] = { "Porapora", -- Foley includes Ambakich (which we, Glottolog, and Usher treat as Keram) 65044258, "paa-ram", aliases = {"Agoan", -- Glottolog "Porapora River", -- Usher "core Grass", -- alternative name given by Wikipedia }, } m["paa-ram"] = { "Ramu", 3442808, aliases = {"Ramu River"}, -- per Usher (2020) } m["paa-rsa"] = { "Rasawa-Saponi", -- [[w:Rasawa-Saponi languages]] redirects to [[w:Lakes Plain languages]] nil, -- Q9859418 is for the coresponding category, which exists in the Piedmontese Wikipedia (?!) "paa-flp", aliases = {"Rombak River"}, -- Usher } m["paa-rub"] = { "Ruboni", 6875319, "paa-lra", aliases = {"Misegian", -- Wikipedia's name "Mikarew", -- alternative name given by Wikipedia "Ruboni Range"}, -- Usher } m["paa-saa"] = { "Samarokena-Airoran", 96417699, "paa-gkw", aliases = {"Apauwar Coast"}, -- Usher } m["paa-sah"] = { "Sahu", nil, "paa-nnh", } m["paa-sbo"] = { "South Bougainville", 3217380, } m["paa-sen"] = { "Sentani", 17044584, -- no consensus on higher affiliations, if any aliases = {"Sentanic", "Demta-Sentani", "Demta-Lake Sentani"}, -- Sentanic per Glottolog, Demta-Sentani per Wikipedia } m["paa-sep"] = { "Sepik", 3508772, } m["paa-shi"] = { "Serra Hills", 65043154, "paa-sko", } m["paa-sko"] = { "Sko", 953509, aliases = {"Skou"}, } m["paa-sng"] = { "Senagi", 2066550, } m["paa-taa"] = { "Taikat-Awyi", -- [[w:Taikat languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 12643265, "paa-bor", aliases = {"Taikat", -- Foley "Upper Tami River", -- Usher }, } m["paa-tam"] = { "Tamolan", 7681634, "paa-ram", aliases = {"Guam River"}, -- Usher } m["paa-tap"] = { "Timor-Alor-Pantar", 16590002, } m["paa-teb"] = { "Teberan", 7692052, -- Often grouped with Trans-New Guinea, but per Pawley-Hammarström (2018), it has "weaker or disputed claims to membership in TNG". aliases = {"Dadibi-Folopa"}, } m["paa-tir"] = { "Tirio", 7809225, "paa-ani", aliases = {"Nuclear Lower Fly", -- Pawley-Hammarström ("Lower Fly" includes Abom) "Nuclear Tirio", -- Glottolog ("Tirio" includes Abom) "Lower Fly River", -- Usher (without Abom) }, } m["paa-tki"] = { "Turama-Kikori", 7853680, aliases = {"Turama-Kikorian", "Rumu-Omati River"}, } m["paa-ton"] = { "Tonda", 8581005, "paa-yam", aliases = {"West Morehead River"}, -- Usher } m["paa-too"] = { "Tor-Orya", 16590099, aliases = {"Orya-Tor"}, } m["paa-tor"] = { "Tor", -- [[w:Tor languages]] redirects to [[w:Orya–Tor languages]] nil, "paa-too", } m["paa-trr"] = { "Torricelli", 1333831, } m["paa-tti"] = { "Ternate-Tidore", nil, "paa-nnh", } m["paa-wal"] = { "Walio", 16919872, -- Often placed in Sepik (e.g. by Laycock and Z'graggen (1975)), but not by Foley (2018), and not accepted by Glottolog. aliases = {"Walioic", -- Glottolog "Central Leonhard Schultze River", }, } m["paa-wap"] = { "Wapei", -- Glottolog includes Nabi/Nambi(-Metan) in Wapeic 65089115, "paa-wpa", aliases = {"Wapeic"}, -- Glottolog } m["paa-war"] = { "Waris", -- [[w:Waris languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry 12645076, "paa-bor", aliases = {"Warisic", -- Glottolog "Bapi River", -- Usher (without Manem or Senggi) }, } m["paa-wbh"] = { "West Bird's Head", 5330530, -- Kuwani is sometimes included; probably related to North Halmahera languages. } m["paa-wel"] = { "Western Eleman", nil, "paa-ele", aliases = {"West Eleman"}, } m["paa-wig"] = { "West Inland Gulf", nil, "paa-ing", aliases = {"West Inland Gulf of Papua"}, -- Glottolog } m["paa-wke"] = { "West Keram", nil, "paa-ker", aliases = {"Koam", "Mongol-Langam", "Ulmapo"}, -- Koam used by Foley, Ulmapo used by Glottolog } m["paa-wko"] = { "Wára-Kómnzo", -- since we split out Kómnzo as a separate language 11732474, -- for the Wara language "paa-ton", aliases = {"Anta-Komnzo-Wára-Wérè-Kémä", -- Glottolog's name "Wára", "Wara", -- Wikipedia }, } m["paa-wlp"] = { "West Lakes Plain", -- [[w:Tariku languages]] redirects to [[w:Lakes Plain languages]] 47007503, -- actually for "Tariku languages", which per Wikipedia covers Fayu, Kirikiri, Iau and Tause "paa-lpl", aliases = {"West Tariku", -- Glottolog "West Lakes Plains"}, -- Usher, with Edopi/Iau } m["paa-wpa"] = { "Wapei-Palei", 65043156, "paa-trr", } m["paa-wpw"] = { -- paa-wpa already used by Wapei-Palei "Western Pauwasi", -- 2 langs per Glottolog and Pawley-Hammarström; Usher also includes Namla-Tofanma and Usku 85815062, aliases = {"West Pauwasi", -- Wikipedia, Usher "Tebi-Towe", "Dubu-Towei"}, } m["paa-yam"] = { "Yam", 15062272, aliases = {"Morehead and Upper Maro River", "Morehead River", -- Usher }, } m["paa-yaq"] = { "Yaqayic", -- [[w:Yaqai languages]] redirects to [[w:Marind–Yaqai languages]] nil, "paa-mby", aliases = {"Yakhai-Warkay"}, -- Usher } m["paa-ysa"] = { "Yawa-Saweru", 3217545, aliases = {"Yawa", "Yawan", "Yapen"}, } m["paa-yua"] = { "Yuat", 8060096, } m["phi"] = { "Philippine", 947858, "poz", } m["phi-kal"] = { "Kalamian", 3217466, "phi", aliases = {"Calamian"}, } m["poz"] = { "Malayo-Polynesian", 143158, "map", } m["poz-aay"] = { "Admiralty Islands", 2701306, "poz-oce", } m["poz-bnn"] = { "North Bornean", 1427907, "poz", } m["poz-bre"] = { "East Barito", 2701314, "poz", } m["poz-brw"] = { "West Barito", 2761679, "poz", } m["poz-bss"] = { "Bali-Sasak-Sumbawa", 3396043, "poz-msa", } m["poz-btk"] = { "Bungku-Tolaki", 3217381, "poz-clb", } m["poz-cet"] = { "Central-Eastern Malayo-Polynesian", 2269883, "poz", } m["poz-clb"] = { "Celebic", 1078041, "poz", } m["poz-cln"] = { "New Caledonian", 3091221, "poz-ocs", } m["poz-cma"] = { "Central Maluku", 3217479, "poz-cet", } m["poz-hce"] = { "Halmahera-Cenderawasih", 2526616, "pqe", } m["poz-kal"] = { "Kaili-Pamona", 3217465, "poz-clb", } m["poz-lgx"] = { "Lampungic", 49215, "poz", } m["poz-mcm"] = { "Malayo-Chamic", nil, "poz-msa", } m["poz-mic"] = { "Micronesian", 420591, "poz-occ", } m["poz-mly"] = { "Malayic", 662628, "poz-mcm", } m["poz-msa"] = { "Malayo-Sumbawan", 1363818, "poz", } m["poz-mun"] = { "Muna-Buton", 3037924, "poz-clb", } m["poz-nws"] = { "Northwest Sumatran", 2071308, "poz", } m["poz-occ"] = { "Central-Eastern Oceanic", 2068435, "poz-oce", } m["poz-oce"] = { "Oceanic", 324457, "pqe", } m["poz-ocs"] = { "Southern Oceanic", 3039118, "poz-occ", } m["poz-ocw"] = { "Western Oceanic", 2701282, "poz-oce", } m["poz-pcc"] = { "Central Pacific", 3130237, "poz-occ", } m["poz-pep"] = { "Eastern Polynesian", 390979, "poz-pnp", } m["poz-pnp"] = { "Nuclear Polynesian", 743851, "poz-pol", } m["poz-pol"] = { "Polynesian", 390979, "poz-pcc", } m["poz-san"] = { "Sabahan", 3217517, "poz-bnn", } m["poz-sbj"] = { "Sama-Bajaw", 2160409, "poz", } m["poz-slb"] = { "Saluan-Banggai", 3217519, "poz-clb", } m["poz-sls"] = { "Southeast Solomonic", 3119671, "poz-occ", } m["poz-ssw"] = { "South Sulawesi", 2778190, "poz", } m["poz-stm"] = { "St. Matthias", 6484143, "poz-oce", aliases = {"St Matthias"}, } m["poz-swa"] = { "North Sarawakan", 538569, "poz-bnn", } m["poz-tem"] = { "Temotu", 3075769, "poz-oce", } m["poz-tim"] = { "Timoric", 7806987, "poz-cet", } m["poz-ton"] = { "Tongic", 3397263, "poz-pol", } m["poz-tot"] = { "Tomini-Tolitoli", 3217541, "poz-clb", } m["poz-vnc"] = { "Central Vanuatu", 5061988, "poz-ocs", } m["poz-vnn"] = { "North Vanuatu", 85789650, "poz-ocs", } m["poz-vns"] = { "South Vanuatu", 3070173, "poz-ocs", } m["poz-wot"] = { "Wotu-Wolio", 1041317, "poz-clb", aliases = {"Island Kaili-Wolio"}, -- Glottolog } m["pqe"] = { "Eastern Malayo-Polynesian", 2269883, "poz-cet", } m["qfa-adc"] = { "Central Great Andamanese", nil, "qfa-adm", } m["qfa-adm"] = { "Great Andamanese", 3515103, } m["qfa-adn"] = { "Northern Great Andamanese", nil, "qfa-adm", } m["qfa-ads"] = { "Southern Great Andamanese", nil, "qfa-adm", } m["qfa-ain"] = { "Ainuic", 50111972, aliases = {"Ainu"}, } m["qfa-bej"] = { "Be-Jizhao", nil, "qfa-bet", } m["qfa-bet"] = { "Be-Tai", 12627719, "qfa-tak", aliases = {"Tai-Be", "Daic-Beic", "Beic-Daic"}, } m["qfa-buy"] = { "Buyang", 1109927, "qfa-kra", } m["qfa-cka"] = { "Chukotko-Kamchatkan", 33255, } m["qfa-cre"] = { "creole", 33289, "crp", } m["qfa-ckn"] = { "Chukotkan", 2606732, "qfa-cka", } m["qfa-cnt"] = { "contact", 133253514, "qfa-not", } m["qfa-dis"] = { -- Languages that are not unclassifiable (qfa-unc) but where there is no consensus on classification. Usually -- this is because the languages are divergent and it's disputed whether they are isolates or distantly related -- to other languages. "disputed affiliation", nil, "qfa-not", categoryName = "Languages of disputed affiliation", } m["qfa-dgn"] = { "Dogon", 1234776, "nic", } m["qfa-dny"] = { "Dene-Yeniseian", 21103, aliases = {"Dené-Yeniseian"}, } m["qfa-hur"] = { "Hurro-Urartian", 1144159, } m["qfa-iso"] = { "isolate", 33648, "qfa-not", categoryName = "Language isolates", } m["qfa-kad"] = { "Kadu", -- considered either Nilo-Saharan or independent/none 1720989, } m["qfa-kms"] = { "Kam-Sui", 1023641, "qfa-tak", } m["qfa-kor"] = { "Koreanic", 11263525, } m["qfa-kra"] = { "Kra", 1022087, "qfa-tak", } m["qfa-lic"] = { "Hlai", 1023648, "qfa-tak", aliases = {"Hlaic"}, } m["qfa-mch"] = { -- used in both N and S America "Macro-Chibchan", 3438062, } m["qfa-mix"] = { "mixed", 33694, "qfa-cnt", } m["qfa-not"] = { "not a family", nil, "qfa-not", } m["qfa-onb"] = { "Be", nil, "qfa-bej", aliases = {"Ong-Be", "Beic"}, } m["qfa-ong"] = { "Ongan", 2090575, aliases = {"Angan", "South Andamanese", "Jarawa-Onge"}, } m["qfa-pid"] = { "pidgin", 33831, "crp", } m["qfa-sub"] = { "substrate", 20730913, "qfa-not", } m["qfa-tak"] = { "Kra-Dai", 34171, aliases = {"Tai-Kadai", "Kadai"}, } m["qfa-tyn"] = { "Tyrsenian", 1344038, } m["qfa-unc"] = { -- This corresponds to languages normally called "unclassified", i.e. there is insufficient data or research to -- classify them, whereas our [[:Category:Unclassified languages]] is just languages that no Wiktionary editor -- has classified yet (the family code in the language data is missing). "unclassifiable", 33956, "qfa-not", } m["qfa-xgs"] = { "Serbi-Mongolic", 108887939, } m["qfa-xgx"] = { "Para-Mongolic", 107619002, "qfa-xgs", } m["qfa-yen"] = { "Yeniseian", 27639, "qfa-dny", aliases = {"Yeniseic", "Yenisei-Ostyak"}, } m["qfa-yke"] = { "Ketic", nil, "qfa-yen", } m["qfa-yko"] = { "Kottic", nil, "qfa-yen", } m["qfa-yrn"] = { "Arinic", nil, "qfa-yen", } m["qfa-ypm"] = { "Pumpokolic", nil, "qfa-yen", } m["qfa-yuk"] = { "Yukaghir", 34164, aliases = {"Yukagir", "Jukagir"}, } m["qwe"] = { "Quechuan", 5218, } m["raj"] = { "Rajasthani", 13196, "inc-wes", protoLanguage = "inc-ogu", } m["roa"] = { "Romance", 19814, "itc", aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"}, protoLanguage = "la", } m["roa-asl"] = { "Asturleonese", 35390, "roa-ibe", protoLanguage = "roa-ole", } m["roa-cas"] = { "Castilian", 71924, "roa-ibe", aliases = {"Castillian", "Castilic", "Castillic"}, protoLanguage = "osp", } m["roa-dal"] = { "Dalmatian Romance", 97646077, "roa-itd", } m["roa-eas"] = { "Eastern Romance", 147576, "roa", } m["roa-emr"] = { "Emilian-Romagnol", 242648, "roa-git", } m["roa-gap"] = { "Galician-Portuguese", 9080204, "roa-ibe", aliases = {"Galician Romance", "Galaic-Portuguese"}, protoLanguage = "roa-opt", } m["roa-gar"] = { "Gallo-Romance", 500394, "roa-wes", } m["roa-itd"] = { "Italo-Dalmatian", 3313381, "roa-iwr", aliases = {"Central Romance"} } m["roa-itr"] = { "Italo-Romance", 3356483, "roa-itd", } m["roa-iwr"] = { "Italo-Western Romance", 112608, "roa", aliases = {"Italo-Western"}, } m["roa-git"] = { "Gallo-Italic", 516074, "roa-gar", aliases = {"Gallo-Italian", "Gallo-Cisalpine", "Cisalpine"}, } m["roa-grh"] = { "Gallo-Rhaetian", 97646466, "roa-gar", } m["roa-ibe"] = { "Ibero-Romance", 749533, "roa-wes", aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"} } m["roa-nar"] = { "Navarro-Aragonese", 133252927, "roa-ibe", protoLanguage = "roa-ona", } m["roa-oil"] = { "Oïl", 37351, "roa-grh", aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"}, protoLanguage = "fro", } m["roa-ocr"] = { "Occitano-Romance", 599958, "roa-gar", aliases = {"Gallo-Narbonnese", "East Iberian", "Eastern Iberian"}, } m["roa-rhe"] = { "Rhaeto-Romance", 515593, "roa-grh", aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"}, } m["roa-sou"] = { "Southern Romance", 145345, "roa", } m["roa-wes"] = { "Western Romance", 2714388, "roa-iwr", } --[=[ Exceptional language and family codes for South American Indian languages can use the prefix "sai-", though "sai" is no longer itself a family code. ]=]-- m["sai-ara"] = { "Araucanian", 626630, } m["sai-aym"] = { "Aymaran", 33010, } m["sai-bar"] = { "Barbacoan", 807304, aliases = {"Barbakoan"}, } m["sai-bor"] = { "Boran", 5371776, } m["sai-cah"] = { "Cahuapanan", 1025793, } m["sai-car"] = { "Cariban", 33090, aliases = {"Carib"}, } m["sai-cer"] = { "Cerrado", 98078151, "sai-jee", aliases = {"Amazonian Jê"}, } m["sai-chc"] = { "Chocoan", 1075616, aliases = {"Choco", "Chocó"}, } m["sai-cho"] = { "Chonan", 33019, aliases = {"Chon"}, } m["sai-cje"] = { "Central Jê", 18010843, "sai-cer", aliases = {"Akuwẽ"}, } m["sai-cpc"] = { "Chapacuran", 1062626, } m["sai-crn"] = { "Charruan", 3112423, aliases = {"Charrúan"}, } m["sai-ctc"] = { "Catacaoan", 5051139, } m["sai-guc"] = { "Guaicuruan", 1974973, "sai-mgc", aliases = {"Guaicurú", "Guaycuruana", "Guaikurú", "Guaycuruano", "Guaykuruan", "Waikurúan"}, } m["sai-guh"] = { "Guahiban", 944056, aliases = {"Guahiboan", "Guajiboan", "Wahivoan"}, } m["sai-gui"] = { "Guianan", nil, "sai-car", aliases = {"Guianan Carib", "Guiana Carib"}, } m["sai-har"] = { "Harákmbut", 1584402, "sai-hkt", aliases = {"Harákmbet"}, } m["sai-hkt"] = { "Harákmbut-Katukinan", 17107635, } m["sai-hrp"] = { "Huarpean", 1578336, aliases = {"Warpean", "Huarpe", "Warpe"}, } m["sai-jee"] = { "Jê", 1483594, "sai-mje", aliases = {"Gê", "Jean", "Gean", "Jê-Kaingang", "Ye"}, } m["sai-jir"] = { "Jirajaran", 3028651, aliases = {"Hiraháran"}, } m["sai-jiv"] = { "Jivaroan", 1393074, aliases = {"Hívaro", "Jibaro", "Jibaroan", "Jibaroana", "Jívaro"}, } m["sai-ktk"] = { "Katukinan", 2636000, "sai-hkt", aliases = {"Catuquinan"}, } m["sai-kui"] = { "Kuikuroan", nil, "sai-car", aliases = {"Kuikuro", "Nahukwa"}, } m["sai-map"] = { "Mapoyan", 61096301, "sai-ven", aliases = {"Mapoyo", "Mapoyo-Yabarana", "Mapoyo-Yavarana", "Mapoyo-Yawarana"}, } m["sai-mas"] = { "Mascoian", 1906952, aliases = {"Mascoyan", "Maskoian", "Enlhet-Enenlhet"}, } m["sai-mgc"] = { "Mataco-Guaicuru", 255512, } m["sai-mje"] = { "Macro-Jê", 887133, aliases = {"Macro-Gê"}, } m["sai-mtc"] = { "Matacoan", 2447424, "sai-mgc", } m["sai-mur"] = { "Muran", 33826, aliases = {"Mura"}, } m["sai-nad"] = { "Nadahup", 1856439, aliases = {"Makú", "Macú", "Vaupés-Japurá"}, } m["sai-nje"] = { "Northern Jê", 98078225, "sai-cer", aliases = {"Core Jê"}, } m["sai-nmk"] = { "Nambikwaran", 15548027, aliases = {"Nambicuaran", "Nambiquaran", "Nambikuaran"}, } m["sai-otm"] = { "Otomacoan", 3217503, aliases = {"Otomákoan", "Otomakoan"}, } m["sai-pan"] = { "Panoan", 1544537, "sai-pat", aliases = {"Pano"}, } m["sai-pat"] = { "Pano-Tacanan", 2475746, aliases = {"Pano-Tacana", "Pano-Takana", "Páno-Takána", "Pano-Takánan"}, } m["sai-pek"] = { "Pekodian", 107451736, "sai-car", aliases = {"South Amazonian Carib", "Southern Cariban", "Pekodi"}, } m["sai-pem"] = { "Pemongan", nil, "sai-ven", aliases = {"Pemong", "Pemóng", "Purukoto"}, } m["sai-pey"] = { "Peba-Yaguan", 174015, aliases = {"Peba-Yagua", "Yaguan", "Peban", "Yáwan"}, } m["sai-prk"] = { "Parukotoan", 107451482, "sai-car", aliases = {"Parukoto"}, } m["sai-sje"] = { "Southern Jê", 98078245, "sai-jee", } m["sai-tac"] = { "Tacanan", 3113762, "sai-pat", } m["sai-tar"] = { "Taranoan", 105097814, "sai-gui", aliases = {"Trio", "Tarano"}, } m["sai-tuc"] = { "Tucanoan", 788144, } m["sai-tyu"] = { "Ticuna-Yuri", 4467010, } m["sai-ucp"] = { "Uru-Chipaya", 2475488, aliases = {"Uru-Chipayan"}, } m["sai-ven"] = { "Venezuelan Cariban", nil, "sai-car", aliases = {"Venezuelan Carib", "Venezuelan", "Venezuelano"}, } m["sai-wic"] = { "Wichí", 3027047, } m["sai-wit"] = { "Witotoan", 43079317, aliases = {"Huitotoan", "Uitotoan"}, } m["sai-ynm"] = { "Yanomami", nil, aliases = {"Yanomam", "Shamatari", "Yamomami", "Yanomaman"}, } m["sai-yuk"] = { "Yukpan", nil, "sai-car", aliases = {"Yukpa", "Yukpano", "Yukpa-Japreria"}, } m["sai-zam"] = { "Zamucoan", 3048461, aliases = {"Samúkoan"}, } m["sai-zap"] = { "Zaparoan", 33911, aliases = {"Záparoan", "Saparoan", "Sáparoan", "Záparo", "Zaparoano", "Zaparoana"}, } m["sal"] = { "Salish", 33985, } m["sdv"] = { "Eastern Sudanic", 2036148, "ssa", } m["sdv-bri"] = { "Bari", nil, "sdv-nie", } m["sdv-daj"] = { "Daju", 956724, "sdv", } m["sdv-dnu"] = { "Dinka-Nuer", nil, "sdv-niw", } m["sdv-eje"] = { "Eastern Jebel", 3408878, "sdv", } m["sdv-kln"] = { "Kalenjin", 637228, "sdv-nis", } m["sdv-lma"] = { "Lotuko-Maa", nil, "sdv-nie", } m["sdv-lon"] = { "Northern Luo", nil, "sdv-luo", } m["sdv-los"] = { "Southern Luo", 7570103, "sdv-luo", } m["sdv-luo"] = { "Luo", nil, "sdv-niw", } m["sdv-nes"] = { "Northern Eastern Sudanic", 4810496, "sdv", aliases = {"Astaboran", "Ek Sudanic"}, } m["sdv-nie"] = { "Eastern Nilotic", 153795, "sdv-nil", } m["sdv-nil"] = { "Nilotic", 513408, "sdv", } m["sdv-nis"] = { "Southern Nilotic", 1552410, "sdv-nil", } m["sdv-niw"] = { "Western Nilotic", 3114989, "sdv-nil", } m["sdv-nma"] = { "Nandi-Markweta", nil, "sdv-kln", } m["sdv-nyi"] = { "Nyima", 11688746, "sdv-nes", aliases = {"Nyimang"}, } m["sdv-tmn"] = { "Taman", 3408873, "sdv-nes", aliases = {"Tamaic"}, } m["sdv-ttu"] = { "Teso-Turkana", 7705551, "sdv-nie", aliases = {"Ateker"}, } m["sel"] = { "Selkup", 34008, "syd", } m["sem"] = { "Semitic", 34049, "afa", } m["sem-ara"] = { "Aramaic", 28602, "sem-nwe", protoLanguage = "arc", } m["sem-arb"] = { "Arabic", 164667, "sem-cen", protoLanguage = "ar", } m["sem-are"] = { "Eastern Aramaic", 3410322, "sem-ara", } m["sem-arw"] = { "Western Aramaic", 3394214, "sem-ara", } m["sem-ase"] = { "Southeastern Aramaic", 3410322, "sem-are", } m["sem-can"] = { "Canaanite", 747547, "sem-nwe", } m["sem-cen"] = { "Central Semitic", 3433228, "sem-wes", } m["sem-cna"] = { "Central Neo-Aramaic", 3410322, "sem-are", } m["sem-eas"] = { "East Semitic", 164273, "sem", } m["sem-eth"] = { "Ethiopian Semitic", 163629, "sem-wes", aliases = {"Afro-Semitic", "Ethiopian", "Ethiopic", "Ethiosemitic"}, } m["sem-nna"] = { "Northeastern Neo-Aramaic", 2560578, "sem-are", } m["sem-nwe"] = { "Northwest Semitic", 162996, "sem-cen", } m["sem-osa"] = { "Old South Arabian", 35025, "sem-cen", aliases = {"Epigraphic South Arabian", "Sayhadic"}, } m["sem-sar"] = { "Modern South Arabian", 1981908, "sem-wes", } m["sem-wes"] = { "West Semitic", 124901, "sem", } m["sgn"] = { "sign", 34228, "qfa-not", } m["sgn-asl"] = { "American Sign Languages", nil, "sgn-fsl", } m["sgn-fsl"] = { "French Sign Languages", 5501921, "sgn", } m["sgn-gsl"] = { "German Sign Languages", 5551235, "sgn", } m["sgn-jsl"] = { "Japanese Sign Languages", 11722508, "sgn", } m["sio"] = { "Siouan", 34181, "nai-sca", } m["sio-dhe"] = { "Dhegihan", 3217420, "sio-msv", } m["sio-dkt"] = { "Dakotan", 4154122, "sio-msv", } m["sio-mor"] = { "Missouri River Siouan", 26807266, "sio", } m["sio-msv"] = { "Mississippi Valley Siouan", 12637104, "sio", } m["sio-ohv"] = { "Ohio Valley Siouan", 21070931, "sio", } m["sit"] = { "Sino-Tibetan", 45961, aliases = {"Trans-Himalayan"}, } m["sit-aao"] = { "Central Naga", 615474, "sit", } m["sit-alm"] = { "Almora", nil, "sit-whm", } m["sit-bai"] = { "Bai", 35103, "sit-mba", } m["sit-bdi"] = { "Bodish", 1814078, "sit", } m["sit-cln"] = { "Cai-Long", 107182612, "sit-mba", aliases = {"Ta-Li"}, } m["sit-dhi"] = { "Dhimalish", 1207648, "sit", } m["sit-ebo"] = { "East Bodish", 56402, "sit-bdi", } m["sit-egy"] = { "East rGyalrongic", 832026, "sit-rgy", } m["sit-ers"] = { "Ersuic", 56335, "sit", } m["sit-gma"] = { "Greater Magaric", 55612963, "sit", } m["sit-gsi"] = { "Greater Siangic", 52698851, "sit", } m["sit-hrs"] = { "Hrusish", 1632501, "sit", aliases = {"Southeast Kamengic"}, } m["sit-jnp"] = { "Jingphoic", nil, "sit-jpl", aliases = {"Jingpho"}, } m["sit-jpl"] = { "Kachin-Luic", 1515454, "tbq-bkj", aliases = {"Jingpho-Luish", "Jingpho-Asakian", "Kachinic"}, } m["sit-kch"] = { "Konyak-Chang", nil, "sit-kon", } m["sit-kha"] = { "Kham", 33305, "sit-gma", } m["sit-khb"] = { "Kho-Bwa", 6401917, "sit", aliases = {"Bugunish", "Kamengic"}, } m["sit-khw"] = { "Western Kho-Bwa", nil, "sit-khb", } m["sit-khc"] = { "Chug-Lish", nil, "sit-khw", aliases = {"Duhumbi-Khispi"}, } m["sit-khm"] = { "Mey-Sartang", nil, "sit-khw", aliases = {"Sartang-Sherdukpen"}, } m["sit-kic"] = { "Central Kiranti", nil, "sit-kir", } m["sit-kie"] = { "Eastern Kiranti", nil, "sit-kir", } m["sit-kin"] = { "Kinnauric", nil, "sit-whm", aliases = {"Kinnauri"}, } m["sit-kir"] = { "Kiranti", 922148, "sit", } m["sit-kiw"] = { "Western Kiranti", 922148, "sit-kir", } m["sit-kon"] = { "Northern Naga", 774590, "tbq-bkj", aliases = {"Konyakian", "Konyak"}, } m["sit-kyk"] = { "Kyirong-Kagate", 6450957, "sit-tib", } m["sit-lab"] = { "Ladakhi-Balti", 6450957, "sit-tib", } m["sit-las"] = { "Lahuli-Spiti", 6473510, "sit-tib", } m["sit-luu"] = { "Luish", 55621439, "sit-jpl", aliases = {"Asakian", "Sak"}, } m["sit-mar"] = { "Maringic", nil, "sit-tma", } m["sit-mba"] = { "Macro-Bai", 16963847, "sit-sba", aliases = {"Greater Bai"}, } m["sit-mdz"] = { "Midzu", 6843504, "sit", aliases = {"Geman", "Midzuish", "Miju-Meyor", "Southern Mishmi"}, } m["sit-mnz"] = { "Mondzish", 6898839, "tbq-lob", aliases = {"Mangish"}, } m["sit-mru"] = { "Mruic", 16908870, "sit", aliases = {"Mru-Hkongso"}, } m["sit-nas"] = { "Naish", 25047956, "sit-nax", } m["sit-nax"] = { "Naic", 6982999, "tbq-buq", aliases = {"Naxish"}, } m["sit-nba"] = { "Northern Bai", 122463830, "sit-bai", } m["sit-new"] = { "Newaric", 55625069, "sit", } m["sit-nng"] = { "Nungish", 1515482, "sit", aliases = {"Nung"}, } m["sit-qia"] = { "Qiangic", 1636765, "tbq-buq", } m["sit-rgy"] = { "Rgyalrongic", 56936, "sit-qia", aliases = {"Jiarongic"}, } m["sit-sba"] = { "Sino-Bai", nil, "sit", aliases = {"Greater Bai"}, } m["sit-tam"] = { "Tamangic", 3309439, "sit", aliases = {"West Bodish"}, } m["sit-tan"] = { "Tani", 3217538, "sit", } m["sit-tib"] = { "Tibetic", 1641150, "sit-bdi", protoLanguage = "otb", } m["sit-tja"] = { "Tujia", nil, "sit", } m["sit-tma"] = { "Tangkhul-Maring", nil, "sit", } m["sit-tng"] = { "Tangkhulic", 1516657, "sit-tma", aliases = {"Tangkhul"}, } m["sit-tno"] = { "Tangsa-Nocte", nil, "sit-kon", } m["sit-tsk"] = { "Tshangla", nil, "sit", } m["sit-wgy"] = { "West rGyalrongic", nil, "sit-rgy" } m["sit-whm"] = { "West Himalayish", 2301695, "sit", } m["sit-zem"] = { "Zeme", 189291, "sit", aliases = {"Zeliangrong", "Zemeic"}, } m["sla"] = { "Slavic", 23526, "ine-bsl", aliases = {"Slavonic"}, } m["smi"] = { "Sami", 56463, "urj", aliases = {"Saami", "Samic", "Saamic"}, } m["son"] = { "Songhay", 505198, "ssa", aliases = {"Songhai"}, } m["sqj"] = { "Albanian", 8748, "ine", } m["ssa"] = { "Nilo-Saharan", -- possibly not a genetic grouping 33705, } m["ssa-fur"] = { "Fur", 2989512, "ssa", } m["ssa-klk"] = { "Kuliak", 1791476, "ssa", aliases = {"Rub"}, } m["ssa-kom"] = { "Koman", 1781084, "ssa", } m["ssa-sah"] = { "Saharan", 1757661, "ssa", } m["syd"] = { "Samoyedic", 34005, "urj", aliases = {"Samoyed", "Samodeic"}, } m["syd-ene"] = { "Enets", 29942, "syd", } m["tai"] = { "Tai", 749720, "qfa-bet", aliases = {"Daic"}, } m["tai-wen"] = { "Wenma-Southwestern Tai", nil, "tai", } m["tai-tay"] = { "Tày", nil, "tai-wen", } m["tai-sap"] = { "Sapa-Southwestern Tai", nil, "tai-wen", aliases = {"Sapa-Thai"}, } m["tai-swe"] = { "Southwestern Tai", 10889250, "tai-sap", } m["tai-cho"] = { "Chongzuo Tai", 13216, "tai", } m["tai-cen"] = { "Central Tai", 5061891, "tai", } m["tai-nor"] = { "Northern Tai", 7059014, "tai", } m["tbq"] = { "Tibeto-Burman", 34064, "sit", } m["tbq-anp"] = { "Angami-Pochuri", 530460, "sit", } m["tbq-axi"] = { "Axioid", nil, "tbq-sel", } m["tbq-bdg"] = { "Bodo-Garo", 4090000, "tbq-bkj", } m["tbq-bis"] = { "Bisoid", 48844742, "tbq-slo", } m["tbq-bka"] = { "Bi-Ka", 12627890, "tbq-slo", } m["tbq-bkj"] = { "Sal", 889900, "sit", -- Brahmaputran appears to be Glottolog's term aliases = {"Bodo-Konyak-Jinghpaw", "Brahmaputran", "Jingpho-Konyak-Bodo"}, } m["tbq-brm"] = { "Burmish", 865713, "tbq-lob", } m["tbq-buq"] = { "Burmo-Qiangic", 16056278, "sit", aliases = {"Eastern Tibeto-Burman"}, } m["tbq-drp"] = { "Downriver Phula", 7188378, "tbq-rph", } m["tbq-han"] = { "Hanoid", 17004185, "tbq-slo", } m["tbq-hph"] = { "Highland Phula", nil, "tbq-sel", } m["tbq-jin"] = { "Jino", 6202716, "tbq-slo", } m["tbq-kzh"] = { "Kazhuoish", 48834669, "tbq-lol", } m["tbq-kuk"] = { "Kuki-Chin", 832413, "sit", aliases = {"Kukish", "South-Central Tibeto-Burman"}, } m["tbq-lal"] = { "Lalo", 56548, "tbq-lso", } m["tbq-lho"] = { "Lahoish", nil, "tbq-lol", } m["tbq-llo"] = { "Lipo-Lolopo", nil, "tbq-lso", } m["tbq-lob"] = { "Lolo-Burmese", 1635712, "tbq-buq", } m["tbq-lol"] = { "Loloish", 37035, "tbq-lob", aliases = {"Yi", "Ngwi", "Nisoic"}, } m["tbq-lso"] = { "Lisoish", 6559055, "tbq-lol", } m["tbq-lwo"] = { "Lawoish", 48847673, "tbq-lol", } m["tbq-muj"] = { "Muji", 11221327, "tbq-hph", } m["tbq-nas"] = { "Nasoid", nil, "tbq-nlo", } m["tbq-nis"] = { "Nisu", 56404, "tbq-nlo", } m["tbq-nlo"] = { "Northern Loloish", 7058676, "tbq-nso", } m["tbq-nso"] = { "Nisoish", 56990, "tbq-lol", } m["tbq-nus"] = { "Nusoish", 114245231, "tbq-lol", } m["tbq-phw"] = { "Phowa", 7187959, "tbq-hph", } m["tbq-rph"] = { "Riverine Phula", nil, "tbq-sel", } m["tbq-sel"] = { "Southeastern Loloish", 16111894, "tbq-nso", } m["tbq-sil"] = { "Siloid", 60787071, "tbq-slo", } m["tbq-slo"] = { "Southern Loloish", 5649340, "tbq-lol", } m["tbq-tal"] = { "Taloid", 48804018, "tbq-lso", } m["tbq-urp"] = { "Upriver Phula", 7187058, "tbq-rph", } m["trk"] = { "Turkic", 34090, } m["trk-cmn"] = { "Common Turkic", 1126028, "trk", aliases = {"Shaz Turkic", "Shaz-Turkic"}, } m["trk-kar"] = { "Karluk", 703173, "trk-cmn", aliases = {"Qarluq", "Uyghur-Uzbek", "Southeastern Turkic"}, } m["trk-kbu"] = { "Kipchak-Bulgar", 3512539, "trk-kip", aliases = {"Uralian", "Uralo-Caspian"}, } m["trk-kcu"] = { "Kipchak-Cuman", 4370412, "trk-kip", aliases = {"Ponto-Caspian"}, } m["trk-kip"] = { "Kipchak", 1339898, "trk-cmn", -- Russian Wikipedia article [[w:ru:Западнотюркские_языки]] says "Western Turkic" is used by N.A. Baskakov and includes Oghuz, Kipchak and Karluk. -- Azerbaijani Wikipedia article [[w:az:Qərbi_türk_dilləri]] clarifies that "Western Turkic" is not a clade. other_names = {"Western Turkic"}, aliases = {"Kypchak", "Qypchaq", "Northwestern Turkic"}, protoLanguage = "qwm", } m["trk-kkp"] = { "Kyrgyz-Kipchak", 4221189, "trk-kip", } m["trk-kno"] = { "Kipchak-Nogai", 4326954, "trk-kip", aliases = {"Aralo-Caspian"}, } m["trk-nsb"] = { "North Siberian Turkic", 4537269, "trk-sib", aliases = {"Northern Siberian Turkic"}, } m["trk-ogr"] = { "Oghur", 1422731, "trk", aliases = {"Lir-Turkic", "r-Turkic"}, } m["trk-ogz"] = { "Oghuz", 494600, "trk-cmn", aliases = {"Southwestern Turkic"}, } m["trk-sib"] = { "Siberian Turkic", 354353, "trk-cmn", other_names = {"Northern Turkic"}, -- per [[w:ru:Восточнотюркские_языки]], "Eastern Turkic" is an alias for Siberian Turkic in the work of O.A. Mudrak, -- but has a different non-clade meaning in the older work of N.A. Baskakov. aliases = {"Eastern Turkic", "Northeastern Turkic"}, } m["trk-ssb"] = { "South Siberian Turkic", nil, "trk-sib", aliases = {"Southern Siberian Turkic"}, } m["tup"] = { "Tupian", 34070, aliases = {"Tupi"}, } m["tup-gua"] = { "Tupi-Guarani", 148610, "tup", aliases = {"Tupí-Guaraní"}, } m["tuw"] = { "Tungusic", 34230, aliases = {"Manchu-Tungus", "Tungus"}, } m["tuw-ewe"] = { "Ewenic", 105889448, "tuw", aliases = {"Northern Tungusic"}, } m["tuw-jrc"] = { "Jurchenic", 105889432, "tuw", aliases = {"Manchuric"}, } m["tuw-nan"] = { "Nanaic", 105889264, "tuw", } m["tuw-udg"] = { "Udegheic", 105889266, "tuw", } m["urj"] = { "Uralic", 34113, varieties = {"Finno-Ugric"}, } m["urj-fin"] = { "Finnic", 33328, "urj", aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"}, } m["urj-mdv"] = { "Mordvinic", 627313, "urj", } m["urj-prm"] = { "Permic", 161493, "urj", } m["urj-ugr"] = { "Ugric", 156631, "urj", } m["wak"] = { "Wakashan", 60069, } m["wen"] = { "Sorbian", 25442, "zlw", aliases = {"Lusatian", "Wendish"}, } m["xgn"] = { "Mongolic", 33750, "qfa-xgs", aliases = {"Mongolian"}, } m["xgn-cen"] = { "Central Mongolic", 28719447, "xgn", protoLanguage = "xng-lat", } m["xgn-sou"] = { "Southern Mongolic", nil, "xgn", protoLanguage = "xng-ear", } m["xgn-shr"] = { "Shirongolic", 107539435, "xgn-sou", } m["xme"] = { "Median", nil, "ira-mpr", protoLanguage = "xme-old", } m["xme-ttc"] = { "Tatic", nil, "xme", } m["xnd"] = { "Na-Dene", 26986, "qfa-dny", aliases = {"Na-Dené"}, } m["xsc"] = { "Scythian", nil, "ira-nei", } m["xsc-sak"] = { "Saka", nil, "xsc-skw", aliases = {"Sakan"}, } m["xsc-sar"] = { "Sarmatian", nil, "xsc", } m["xsc-skw"] = { "Saka-Wakhi", nil, "xsc", } m["yok"] = { "Yokuts", 34249, "nai-you", aliases = {"Yokutsan", "Mariposan", "Mariposa"}, } m["ypk"] = { "Yupik", 27970, "esx-esk", aliases = {"Yup'ik", "Yuit"}, } m["yrk"] = { "Nenets", 36452, "syd", } m["zhx"] = { "Sinitic", 33857, "sit-sba", aliases = {"Chinese"}, protoLanguage = "och", } m["zhx-com"] = { "Coastal Min", 20667215, "zhx-min", } m["zhx-inm"] = { "Inland Min", 20667237, "zhx-min", } m["zhx-man"] = { "Mandarinic", nil, "zhx", protoLanguage = "cmn-ear", } m["zhx-min"] = { "Min", 56504, "zhx", } m["zhx-nan"] = { "Southern Min", 36495, "zhx-com", } m["zhx-pin"] = { "Pinghua", 2735715, "zhx", protoLanguage = "ltc", } m["zhx-yue"] = { "Yue", 7033959, "zhx", protoLanguage = "ltc", } m["zle"] = { "East Slavic", 144713, "sla", } m["zls"] = { "South Slavic", 146665, "sla", } m["zlw"] = { "West Slavic", 145852, "sla", } m["zlw-lch"] = { "Lechitic", 742782, "zlw", aliases = {"Lekhitic"}, } m["zlw-pom"] = { "Pomeranian", nil, "zlw-lch", } m["znd"] = { "Zande", 8066072, "nic-ubg", } return require("Module:languages").finalizeData(m, "family") o34x8gy4xmqan892n89ui6dvkbnons4 মডিউল:families 828 7316 510598 323363 2026-06-11T02:40:15Z Hiyuune 11971 510598 Scribunto text/plain local export = {} local families_by_name_module = "Module:families/canonical names" local families_data_module = "Module:families/data" local json_module = "Module:JSON" local language_like_module = "Module:language-like" local languages_module = "Module:languages" local load_module = "Module:load" local table_module = "Module:table" local get_by_code -- Defined below. local gmatch = string.gmatch local insert = table.insert local ipairs = ipairs local make_object -- Defined below. local pairs = pairs local require = require local setmetatable = setmetatable local type = type --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function category_name_has_suffix(...) category_name_has_suffix = require(language_like_module).categoryNameHasSuffix return category_name_has_suffix(...) end local function category_name_to_code(...) category_name_to_code = require(language_like_module).categoryNameToCode return category_name_to_code(...) end local function deep_copy(...) deep_copy = require(table_module).deepCopy return deep_copy(...) end local function get_lang(...) get_lang = require(languages_module).getByCode return get_lang(...) end local function keys_to_list(...) keys_to_list = require(table_module).keysToList return keys_to_list(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function make_lang_object(...) make_lang_object = require(languages_module).makeObject return make_lang_object(...) end local function to_json(...) to_json = require(json_module).toJSON return to_json(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local families_by_name local function get_families_by_name() families_by_name, get_families_by_name = load_data(families_by_name_module), nil return families_by_name end local families_data local function get_families_data() families_data, get_families_data = load_data(families_data_module), nil return families_data end local families_suffixes local function get_families_suffixes() families_suffixes, get_families_suffixes = { "ভাষাগোষ্ঠী", "lects" }, nil return families_suffixes end local Family = {} Family.__index = Family --[==[ Return the family code of the family, e.g. {"ine"} for the Indo-European languages. ]==] function Family:getCode() return self._code end --[==[ Return the canonical name of the family. This is the name used to represent that language family on Wiktionary, and is guaranteed to be unique to that family alone. Example: {"Indo-European"} for the Indo-European languages. ]==] function Family:getCanonicalName() local name = self._name if name == nil then name = self._data[1] self._name = name end return name end --[==[ Return the display form of the family. For families, this is usually the same as the value returned by {getCategoryName("nocap")}, i.e. it reads <code>"<var>name</var> languages"</code> (e.g. {"Indo-Iranian languages"}). For full and etymology-only languages, this is the same as the canonical name, and for scripts, it reads <code>"<var>name</var> script"</code> (e.g. {"Arabic script"}). The displayed text used in {makeCategoryLink()} is always the same as the display form. ]==] function Family:getDisplayForm() local name = self._data[1] if category_name_has_suffix(name, families_suffixes or get_families_suffixes()) then name = name .. " ভাষাগোষ্ঠী" end return name end function Family:getAliases() Family.getAliases = require(language_like_module).getAliases return self:getAliases() end function Family:getVarieties(flatten) Family.getVarieties = require(language_like_module).getVarieties return self:getVarieties(flatten) end function Family:getOtherNames() Family.getOtherNames = require(language_like_module).getOtherNames return self:getOtherNames() end function Family:getAllNames() Family.getAllNames = require(language_like_module).getAllNames return self:getAllNames() end --[==[Returns a table of types as a lookup table (with the types as keys). The possible types are * {family}: This object is a family. * {full}: This object is a "full" family. This includes all families but a couple of etymology-only families for Old and Middle Iranian languages. * {etymology-only}: This object is an etymology-only family, similar to etymology-only languages. There are currently only two such families, for Old Iranian languages and Middle Iranian languages (which do not represent proper clades and have no proto-languages, hence cannot be full families). ]==] function Family:getTypes() local types = self._types if types == nil then types = {family = true} if self:getFullCode() == self:getCode() then types.full = true else types["etymology-only"] = true end local rawtypes = self._data.type if rawtypes then for t in gmatch(rawtypes, "[^,]+") do types[t] = true end end self._types = types end return types end --[==[Given a list of types as strings, returns true if the family has all of them.]==] function Family:hasType(...) Family.hasType = require(language_like_module).hasType return self:hasType(...) end --[==[Returns a {Family} object for the superfamily that the family belongs to.]==] function Family:getFamily() if self._familyObject == nil then local familyCode = self:getFamilyCode() if familyCode then self._familyObject = get_by_code(familyCode) else self._familyObject = false end end return self._familyObject or nil end --[==[Returns the code of the family's superfamily.]==] function Family:getFamilyCode() if not self._familyCode then self._familyCode = self._data[3] end return self._familyCode end --[==[Returns the canonical name of the family's superfamily.]==] function Family:getFamilyName() if self._familyName == nil then local family = self:getFamily() if family then self._familyName = family:getCanonicalName() else self._familyName = false end end return self._familyName or nil end --[==[Check whether the family belongs to {superfamily} (which can be a family code or object), and returns a boolean. If more than one is given, returns {true} if the family belongs to any of them. A family is '''not''' considered to belong to itself.]==] function Family:inFamily(...) for _, superfamily in ipairs{...} do if type(superfamily) == "table" then superfamily = superfamily:getCode() end local family, code = self:getFamily() while family do code = family:getCode() if code == superfamily then return true end family = family:getFamily() -- If family is parent to itself, return false. if family and family:getCode() == code then return false end end return false end end function Family:getParent() if self._parentObject == nil then local parentCode = self:getParentCode() if parentCode then self._parentObject = get_lang(parentCode, nil, true, true) else self._parentObject = false end end return self._parentObject or nil end function Family:getParentCode() if not self._parentCode then self._parentCode = self._data.parent end return self._parentCode end function Family:getParentName() if self._parentName == nil then local parent = self:getParent() if parent then self._parentName = parent:getCanonicalName() else self._parentName = false end end return self._parentName or nil end function Family:getParentChain() if not self._parentChain then self._parentChain = {} local parent = self:getParent() while parent do insert(self._parentChain, parent) parent = parent:getParent() end end return self._parentChain end function Family:hasParent(...) --checkObject("family", nil, ...) for _, other_family in ipairs{...} do for _, parent in ipairs(self:getParentChain()) do if type(other_family) == "string" then if other_family == parent:getCode() then return true end else if other_family:getCode() == parent:getCode() then return true end end end end return false end --[==[ If the family is etymology-only, this iterates through its parents until a full family is found, and the corresponding object is returned. If the family is a full family, then it simply returns itself. ]==] function Family:getFull() if not self._fullObject then local fullCode = self:getFullCode() if fullCode ~= self:getCode() then self._fullObject = get_lang(fullCode, nil, nil, true) else self._fullObject = self end end return self._fullObject end --[==[ If the family is etymology-only, this iterates through its parents until a full family is found, and the corresponding code is returned. If the family is a full family, then it simply returns the family code. ]==] function Family:getFullCode() return self._fullCode or self:getCode() end --[==[ If the family is etymology-only, this iterates through its parents until a full family is found, and the corresponding canonical name is returned. If the family is a full family, then it simply returns the canonical name of the family. ]==] function Family:getFullName() if self._fullName == nil then local full = self:getFull() if full then self._fullName = full:getCanonicalName() else self._fullName = false end end return self._fullName or nil end --[==[ Return a {Language} object (see [[Module:languages]]) for the proto-language of this family, if one exists. Otherwise, return {nil}. ]==] function Family:getProtoLanguage() if self._protoLanguageObject == nil then self._protoLanguageObject = get_lang(self._data.protoLanguage or self:getCode() .. "-pro", nil, true) or false end return self._protoLanguageObject or nil end function Family:getProtoLanguageCode() if self._protoLanguageCode == nil then local protoLanguage = self:getProtoLanguage() self._protoLanguageCode = protoLanguage and protoLanguage:getCode() or false end return self._protoLanguageCode or nil end function Family:getProtoLanguageName() if not self._protoLanguageName then self._protoLanguageName = self:getProtoLanguage():getCanonicalName() end return self._protoLanguageName end function Family:hasAncestor(...) -- Go up the family tree until a protolanguage is found. local family = self local protolang = family:getProtoLanguage() while not protolang do family = family:getFamily() protolang = family:getProtoLanguage() -- Return false if the family is its own family, to avoid an infinite loop. if family:getFamilyCode() == family:getCode() then return false end end -- If the protolanguage is not in the family, it must therefore be ancestral to it. Check if it is a match. for _, otherlang in ipairs{...} do if ( type(otherlang) == "string" and protolang:getCode() == otherlang or type(otherlang) == "table" and protolang:getCode() == otherlang:getCode() ) and not protolang:inFamily(self) then return true end end -- If not, check the protolanguage's ancestry. return protolang:hasAncestor(...) end local function fetch_descendants(self, format) local languages = require("Module:languages/code to canonical name") local etymology_languages = require("Module:etymology languages/code to canonical name") local families = require("Module:families/code to canonical name") local descendants = {} -- Iterate over all three datasets. for _, data in ipairs{languages, etymology_languages, families} do for code in pairs(data) do local lang = get_lang(code, nil, true, true) if lang:inFamily(self) then if format == "object" then insert(descendants, lang) elseif format == "code" then insert(descendants, code) elseif format == "name" then insert(descendants, lang:getCanonicalName()) end end end end return descendants end function Family:getDescendants() if not self._descendantObjects then self._descendantObjects = fetch_descendants(self, "object") end return self._descendantObjects end function Family:getDescendantCodes() if not self._descendantCodes then self._descendantCodes = fetch_descendants(self, "code") end return self._descendantCodes end function Family:getDescendantNames() if not self._descendantNames then self._descendantNames = fetch_descendants(self, "name") end return self._descendantNames end function Family:hasDescendant(...) for _, lang in ipairs{...} do if type(lang) == "string" then lang = get_lang(lang, nil, true) end if lang:inFamily(self) then return true end end return false end --[==[ Return the name of the main category of that family. Example: {"Germanic languages"} for the Germanic languages, whose category is at [[:Category:Germanic languages]]. Unless optional argument `nocap` is given, the family name at the beginning of the returned value will be capitalized. This capitalization is correct for category names, but not if the family name is lowercase and the returned value of this function is used in the middle of a sentence. (For example, the pseudo-family with the code {qfa-mix} has the name {"mixed"}, which should remain lowercase when used as part of the category name [[:Category:Terms derived from mixed languages]] but should be capitalized in [[:Category:Mixed languages]].) If you are considering using {getCategoryName("nocap")}, use {getDisplayForm()} instead. ]==] function Family:getCategoryName(nocap) local name = self._data.categoryName or self:getDisplayForm() if not nocap then name = mw.getContentLanguage():ucfirst(name) end return name end function Family:makeCategoryLink() return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getDisplayForm() .. "]]" end --[==[Returns the Wikidata item id for the family or <code>nil</code>. This corresponds to the the second field in the data modules.]==] function Family:getWikidataItem() Family.getWikidataItem = require(language_like_module).getWikidataItem return self:getWikidataItem() end --[==[ Returns the name of the Wikipedia article for the family. `project` specifies the language and project to retrieve the article from, defaulting to {"enwiki"} for the English Wikipedia. Normally if specified it should be the project code for a specific-language Wikipedia e.g. "zhwiki" for the Chinese Wikipedia, but it can be any project, including non-Wikipedia ones. If the project is the English Wikipedia and the property {wikipedia_article} is present in the data module it will be used first. In all other cases, a sitelink will be generated from {:getWikidataItem} (if set). The resulting value (or lack of value) is cached so that subsequent calls are fast. If no value could be determined, and `noCategoryFallback` is {false}, {:getCategoryName} is used as fallback; otherwise, {nil} is returned. Note that if `noCategoryFallback` is {nil} or omitted, it defaults to {false} if the project is the English Wikipedia, otherwise to {true}. In other words, under normal circumstances, if the English Wikipedia article couldn't be retrieved, the return value will fall back to a link to the family's category, but this won't normally happen for any other project. ]==] function Family:getWikipediaArticle(noCategoryFallback, project) Family.getWikipediaArticle = require(language_like_module).getWikipediaArticle return self:getWikipediaArticle(noCategoryFallback, project) end function Family:makeWikipediaLink() return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]" end --[==[Returns the name of the Wikimedia Commons category page for the family.]==] function Family:getCommonsCategory() Family.getCommonsCategory = require(language_like_module).getCommonsCategory return self:getCommonsCategory() end function Family:toJSON(opts) local ret = { canonicalName = self:getCanonicalName(), categoryName = self:getCategoryName("nocap"), code = self:getCode(), parent = self:getParentCode(), full = self:getFullCode(), family = self:getFamilyCode(), protoLanguage = self:getProtoLanguageCode(), aliases = self:getAliases(), varieties = self:getVarieties(), otherNames = self:getOtherNames(), type = keys_to_list(self:getTypes()), wikidataItem = self:getWikidataItem(), wikipediaArticle = self:getWikipediaArticle(true), } -- Use `deep_copy` when returning a table, so that there are no editing restrictions imposed by `mw.loadData`. return opts and opts.lua_table and deep_copy(ret) or to_json(ret, opts) end function Family:getData() return self._data end function export.makeObject(code, data) local data_type = type(data) if data_type ~= "table" then error(("bad argument #2 to 'makeObject' (table expected, got %s)"):format(data_type)) end return setmetatable({_data = data, _code = code, _fullCode = code}, Family) end make_object = export.makeObject --[==[ Finds the family whose code matches the one provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}.]==] function export.getByCode(code) local data = (families_data or get_families_data())[code] if data == nil then return nil elseif data.parent == nil then return make_object(code, data) end return make_lang_object(code, data) end get_by_code = export.getByCode --[==[ Look for the family whose canonical name (the name used to represent that family on Wiktionary) matches the one provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. The canonical name of families should always be unique (it is an error for two families on Wiktionary to share the same canonical name), so this is guaranteed to give at most one result.]==] function export.getByCanonicalName(name) if name == nil then return nil end local code = (families_by_name or get_families_by_name())[name] if code == nil then return nil end return get_by_code(code) end --[==[ Look for the family whose category name (the name used in categories for that family) matches the one provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. In almost all cases, the category name for a family is its canonical name plus the word "languages", e.g. "Indo-European" has the category name "Indo-European languages". Where a canonical name ends with "languages" or "lects", the category name is identical to the canonical name.]==] function export.getByCategoryName(name) if name == nil then return nil end local code = category_name_to_code( name, " ভাষাগোষ্ঠী", families_by_name or get_families_by_name(), families_suffixes or get_families_suffixes() ) if code == nil then return nil end return get_by_code(code) end return export sg6tbbwpm0co0i0jwaaefgh55n7wwut বিষয়শ্রেণী:আরবি ভাষা 14 7732 510608 43959 2026-06-11T02:51:54Z Hiyuune 11971 Hiyuune [[বিষয়শ্রেণী:আরবি]] পাতাটিকে [[বিষয়শ্রেণী:আরবি ভাষা]] শিরোনামে পুনর্নির্দেশনার মাধ্যমে স্থানান্তর করেছেন 43959 wikitext text/x-wiki [[বিষয়শ্রেণী:সকল ভাষা]] do1x3rjbc8lchyqe4neewfhyo3w1yte 510610 510608 2026-06-11T02:52:14Z Hiyuune 11971 510610 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 510611 510610 2026-06-11T02:52:50Z Hiyuune 11971 510611 wikitext text/x-wiki {{auto cat|আলজেরিয়ার}} q0rnzk8fyvqtkfik82r63m316320och الله 0 13901 510626 500924 2026-06-11T04:38:48Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L252309-এর সাথে সংযোগ তৈরি করছি 510626 wikitext text/x-wiki {{লে|L252309|উচ্চারণ=* আধ্বব<sup>(key)</sup>: /aɫ.ɫaː(h)/ (in isolation) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaːh/ (phonemic, in isolation or before a pausa) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaː.hu/ (classical, nominative form) *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [aɫˈɫaː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ˈɑɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑːh] *: ধ্রুপদী: আধ্বব<sup>(key)</sup>: [ʔalˤlˤaːh], [ʔalːˤaːh] * (after ''a'' or ''u''): /ɫ.ɫaːh/ *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɫɫɑːh] * (''i'' এর পরে): /l.laːh/ *: মিশর, কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [llæː] *: লেভান্ত, সুদান, পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [llaː] *: তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [llɛːh] *: মরক্কো: আধ্বব<sup>(key)</sup>: [llæːh]}} ===উদ্ভূত=== * [[اللّٰهُ أَكْبَرُ]] (আল্লাহু আকবর) * [[بِسْمِ ٱللّٰهِ]] (বিসমিল্লাহি) ** [[بسم الله الرحمن الرحيم]] (বিসমিল্লাহির রাহমানির রাহীম) ==হিজাজি আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|acw|ar|الله}} থেকে। === উচ্চারণ ১ === * আধ্বব: /aɫ.ɫaː(h)/ ====নামবাচক বিশেষ্য==== {{acw-proper noun|g=m|tr=aḷḷā}} # {{lb|acw|monotheism}} [[আল্লাহ]], [[খোদা]], [[সৃষ্টিকর্তা]], [[স্রষ্টা]], [[পালনকর্তা]] ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷā}} # [[হে আল্লাহ]] (to something beautiful and exciting) === উচ্চারণ ২ === * আধ্বব: /aɫ.ɫa(h)/ ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷa}} # [[ওহ আল্লাহ]] (to something shocking) ==খালাজ== ===বিশেষ্য=== {{head|klj|noun|head=اَللّٰه|tr=Allâh|definite accusative|اَللّٰه‌ؽ}} # {{spelling of|klj|আরবি|Allâh|t=[[God]]}} ==মালয়== ===নামবাচক বিশেষ্য=== # {{ms-jawi|Allah}} ==উত্তর লেভান্তীয় আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|apc|ar|الله}} থেকে। === উচ্চারণ === * IPA<sup>(key)</sup>: /ˈʔɑlˤlˤɑ/ ===নামবাচক বিশেষ্য=== {{head|apc|নামবাচক বিশেষ্য|g=m|tr=ʾAlla}} # {{lb|apc|monotheism}} [[ঈশ্বর]], [[আল্লাহ]] #: هوه ملحد، ما بيآمن بشي اسمو الله #: Huwi mulḥid, ma biʾāmin bi-ši ismu '''Alla'''. #: সে নাস্তিক, সে '''ঈশ্বর'''কে বিশ্বাস করে না। ==অটোমান তুর্কি== ===ব্যুৎপত্তি=== {{bor|ota|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ota|sem-pro|*ʾil-}} থেকে আগত। ===বিশেষ্য=== {{ota-noun|tr=Allah}} # {{lb|ota|ইসলাম}} [[আল্লাহ]], [[ঈশ্বর]] ==পাশতু== {{উইকিপিডিয়া|lang=ps|sc=ps-Arab}} ===ব্যুৎপত্তি=== {{bor|ps|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ps|sem-pro|*ʾil-}} থেকে আগত। ===নামবাচক বিশেষ্য=== {{head|ps|নামবাচক বিশেষ্য|tr=allāh}} # [[আল্লাহ]] =={{ভাষা|fa}}== {{উইকিপিডিয়া|lang=fa}} {{fa-regional|الله|الله|Аллоҳ}} ===ব্যুৎপত্তি=== {{bor|fa|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|fa|sem-pro|*ʾil-}} থেকে আগত। ===উচ্চারণ=== {{fa-IPA|al`lāh}} ===বিশেষ্য=== {{fa-noun|head=اَلله|tr=allâh}} # [[আল্লাহ]], [[ঈশ্বর]] ====আরো দেখুন==== * {{l|fa|خُدا|tr=xodâ}} {{topicsfa|ইসলাম|Religion}} ==ফিলিস্তিনি আরবি== {{লে|L1551417|0}} {{লে|L1234065}} [[Category:ps:ইসলাম]] 4szgsqxmefxwd2lxwpeovmfbe8lovqq 510627 510626 2026-06-11T04:42:00Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L675887-এর সাথে সংযোগ তৈরি করছি 510627 wikitext text/x-wiki {{লে|L252309|উচ্চারণ=* আধ্বব<sup>(key)</sup>: /aɫ.ɫaː(h)/ (in isolation) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaːh/ (phonemic, in isolation or before a pausa) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaː.hu/ (classical, nominative form) *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [aɫˈɫaː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ˈɑɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑːh] *: ধ্রুপদী: আধ্বব<sup>(key)</sup>: [ʔalˤlˤaːh], [ʔalːˤaːh] * (after ''a'' or ''u''): /ɫ.ɫaːh/ *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɫɫɑːh] * (''i'' এর পরে): /l.laːh/ *: মিশর, কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [llæː] *: লেভান্ত, সুদান, পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [llaː] *: তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [llɛːh] *: মরক্কো: আধ্বব<sup>(key)</sup>: [llæːh]}} ===উদ্ভূত=== * [[اللّٰهُ أَكْبَرُ]] (আল্লাহু আকবর) * [[بِسْمِ ٱللّٰهِ]] (বিসমিল্লাহি) ** [[بسم الله الرحمن الرحيم]] (বিসমিল্লাহির রাহমানির রাহীম) ==হিজাজি আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|acw|ar|الله}} থেকে। === উচ্চারণ ১ === * আধ্বব: /aɫ.ɫaː(h)/ ====নামবাচক বিশেষ্য==== {{acw-proper noun|g=m|tr=aḷḷā}} # {{lb|acw|monotheism}} [[আল্লাহ]], [[খোদা]], [[সৃষ্টিকর্তা]], [[স্রষ্টা]], [[পালনকর্তা]] ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷā}} # [[হে আল্লাহ]] (to something beautiful and exciting) === উচ্চারণ ২ === * আধ্বব: /aɫ.ɫa(h)/ ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷa}} # [[ওহ আল্লাহ]] (to something shocking) ==খালাজ== ===বিশেষ্য=== {{head|klj|noun|head=اَللّٰه|tr=Allâh|definite accusative|اَللّٰه‌ؽ}} # {{spelling of|klj|আরবি|Allâh|t=[[God]]}} {{লে|L675887}} ==উত্তর লেভান্তীয় আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|apc|ar|الله}} থেকে। === উচ্চারণ === * IPA<sup>(key)</sup>: /ˈʔɑlˤlˤɑ/ ===নামবাচক বিশেষ্য=== {{head|apc|নামবাচক বিশেষ্য|g=m|tr=ʾAlla}} # {{lb|apc|monotheism}} [[ঈশ্বর]], [[আল্লাহ]] #: هوه ملحد، ما بيآمن بشي اسمو الله #: Huwi mulḥid, ma biʾāmin bi-ši ismu '''Alla'''. #: সে নাস্তিক, সে '''ঈশ্বর'''কে বিশ্বাস করে না। ==অটোমান তুর্কি== ===ব্যুৎপত্তি=== {{bor|ota|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ota|sem-pro|*ʾil-}} থেকে আগত। ===বিশেষ্য=== {{ota-noun|tr=Allah}} # {{lb|ota|ইসলাম}} [[আল্লাহ]], [[ঈশ্বর]] ==পাশতু== {{উইকিপিডিয়া|lang=ps|sc=ps-Arab}} ===ব্যুৎপত্তি=== {{bor|ps|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ps|sem-pro|*ʾil-}} থেকে আগত। ===নামবাচক বিশেষ্য=== {{head|ps|নামবাচক বিশেষ্য|tr=allāh}} # [[আল্লাহ]] =={{langname|fa}}== {{উইকিপিডিয়া|lang=fa}} {{fa-regional|الله|الله|Аллоҳ}} ===ব্যুৎপত্তি=== {{bor|fa|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|fa|sem-pro|*ʾil-}} থেকে আগত। ===উচ্চারণ=== {{fa-IPA|al`lāh}} ===বিশেষ্য=== {{fa-noun|head=اَلله|tr=allâh}} # [[আল্লাহ]], [[ঈশ্বর]] ====আরো দেখুন==== * {{l|fa|خُدا|tr=xodâ}} {{topicsfa|ইসলাম|Religion}} ==ফিলিস্তিনি আরবি== {{লে|L1551417|0}} {{লে|L1234065}} [[Category:ps:ইসলাম]] rgpkwkgnthes4ws3sqsvtg2x77tupk9 510629 510627 2026-06-11T04:47:03Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1149444-এর সাথে সংযোগ তৈরি করছি 510629 wikitext text/x-wiki {{লে|L252309|উচ্চারণ=* আধ্বব<sup>(key)</sup>: /aɫ.ɫaː(h)/ (in isolation) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaːh/ (phonemic, in isolation or before a pausa) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaː.hu/ (classical, nominative form) *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [aɫˈɫaː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ˈɑɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑːh] *: ধ্রুপদী: আধ্বব<sup>(key)</sup>: [ʔalˤlˤaːh], [ʔalːˤaːh] * (after ''a'' or ''u''): /ɫ.ɫaːh/ *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɫɫɑːh] * (''i'' এর পরে): /l.laːh/ *: মিশর, কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [llæː] *: লেভান্ত, সুদান, পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [llaː] *: তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [llɛːh] *: মরক্কো: আধ্বব<sup>(key)</sup>: [llæːh]}} ===উদ্ভূত=== * [[اللّٰهُ أَكْبَرُ]] (আল্লাহু আকবর) * [[بِسْمِ ٱللّٰهِ]] (বিসমিল্লাহি) ** [[بسم الله الرحمن الرحيم]] (বিসমিল্লাহির রাহমানির রাহীম) ==হিজাজি আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|acw|ar|الله}} থেকে। === উচ্চারণ ১ === * আধ্বব: /aɫ.ɫaː(h)/ ====নামবাচক বিশেষ্য==== {{acw-proper noun|g=m|tr=aḷḷā}} # {{lb|acw|monotheism}} [[আল্লাহ]], [[খোদা]], [[সৃষ্টিকর্তা]], [[স্রষ্টা]], [[পালনকর্তা]] ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷā}} # [[হে আল্লাহ]] (to something beautiful and exciting) === উচ্চারণ ২ === * আধ্বব: /aɫ.ɫa(h)/ ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷa}} # [[ওহ আল্লাহ]] (to something shocking) ==খালাজ== ===বিশেষ্য=== {{head|klj|noun|head=اَللّٰه|tr=Allâh|definite accusative|اَللّٰه‌ؽ}} # {{spelling of|klj|আরবি|Allâh|t=[[God]]}} {{লে|L675887}} ==উত্তর লেভান্তীয় আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|apc|ar|الله}} থেকে। === উচ্চারণ === * IPA<sup>(key)</sup>: /ˈʔɑlˤlˤɑ/ ===নামবাচক বিশেষ্য=== {{head|apc|নামবাচক বিশেষ্য|g=m|tr=ʾAlla}} # {{lb|apc|monotheism}} [[ঈশ্বর]], [[আল্লাহ]] #: هوه ملحد، ما بيآمن بشي اسمو الله #: Huwi mulḥid, ma biʾāmin bi-ši ismu '''Alla'''. #: সে নাস্তিক, সে '''ঈশ্বর'''কে বিশ্বাস করে না। ==অটোমান তুর্কি== ===ব্যুৎপত্তি=== {{bor|ota|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ota|sem-pro|*ʾil-}} থেকে আগত। ===বিশেষ্য=== {{ota-noun|tr=Allah}} # {{lb|ota|ইসলাম}} [[আল্লাহ]], [[ঈশ্বর]] ==পাশতু== {{উইকিপিডিয়া|lang=ps|sc=ps-Arab}} ===ব্যুৎপত্তি=== {{bor|ps|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ps|sem-pro|*ʾil-}} থেকে আগত। ===নামবাচক বিশেষ্য=== {{head|ps|নামবাচক বিশেষ্য|tr=allāh}} # [[আল্লাহ]] {{লে|L1149444|উচ্চারণ={{fa-IPA|al`lāh}}}} {{fa-regional|الله|الله|Аллоҳ}} ====আরো দেখুন==== * {{l|fa|خُدا|tr=xodâ}} {{topicsfa|ইসলাম|Religion}} ==ফিলিস্তিনি আরবি== {{লে|L1551417|0}} {{লে|L1234065}} [[Category:ps:ইসলাম]] 2zf3m59tziugt1iydh17jfo311ju0h2 510630 510629 2026-06-11T04:48:01Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1012756-এর সাথে সংযোগ তৈরি করছি 510630 wikitext text/x-wiki {{লে|L252309|উচ্চারণ=* আধ্বব<sup>(key)</sup>: /aɫ.ɫaː(h)/ (in isolation) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaːh/ (phonemic, in isolation or before a pausa) * আধ্বব<sup>(key)</sup>: /aɫ.ɫaː.hu/ (classical, nominative form) *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑː] *: পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [aɫˈɫaː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ˈɑɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɑɫˈɫɑːh] *: ধ্রুপদী: আধ্বব<sup>(key)</sup>: [ʔalˤlˤaːh], [ʔalːˤaːh] * (after ''a'' or ''u''): /ɫ.ɫaːh/ *: মিশর, লেভান্ত, সুদান: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [ɫɫɑː] *: পূর্ব আরব: আধ্বব<sup>(key)</sup>: [ɫɫɐ] *: মরক্কো, তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [ɫɫɑːh] * (''i'' এর পরে): /l.laːh/ *: মিশর, কেন্দ্রীয় আরব: আধ্বব<sup>(key)</sup>: [llæː] *: লেভান্ত, সুদান, পশ্চিম আরব: আধ্বব<sup>(key)</sup>: [llaː] *: তিউনিশিয়া: আধ্বব<sup>(key)</sup>: [llɛːh] *: মরক্কো: আধ্বব<sup>(key)</sup>: [llæːh]}} ===উদ্ভূত=== * [[اللّٰهُ أَكْبَرُ]] (আল্লাহু আকবর) * [[بِسْمِ ٱللّٰهِ]] (বিসমিল্লাহি) ** [[بسم الله الرحمن الرحيم]] (বিসমিল্লাহির রাহমানির রাহীম) ==হিজাজি আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|acw|ar|الله}} থেকে। === উচ্চারণ ১ === * আধ্বব: /aɫ.ɫaː(h)/ ====নামবাচক বিশেষ্য==== {{acw-proper noun|g=m|tr=aḷḷā}} # {{lb|acw|monotheism}} [[আল্লাহ]], [[খোদা]], [[সৃষ্টিকর্তা]], [[স্রষ্টা]], [[পালনকর্তা]] ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷā}} # [[হে আল্লাহ]] (to something beautiful and exciting) === উচ্চারণ ২ === * আধ্বব: /aɫ.ɫa(h)/ ====বিস্ময়বোধক==== {{acw-interj|head=الله|tr=aḷḷa}} # [[ওহ আল্লাহ]] (to something shocking) ==খালাজ== ===বিশেষ্য=== {{head|klj|noun|head=اَللّٰه|tr=Allâh|definite accusative|اَللّٰه‌ؽ}} # {{spelling of|klj|আরবি|Allâh|t=[[God]]}} {{লে|L675887}} ==উত্তর লেভান্তীয় আরবি== ===ব্যুৎপত্তি=== {{উত্তরাধিকারী|apc|ar|الله}} থেকে। === উচ্চারণ === * IPA<sup>(key)</sup>: /ˈʔɑlˤlˤɑ/ ===নামবাচক বিশেষ্য=== {{head|apc|নামবাচক বিশেষ্য|g=m|tr=ʾAlla}} # {{lb|apc|monotheism}} [[ঈশ্বর]], [[আল্লাহ]] #: هوه ملحد، ما بيآمن بشي اسمو الله #: Huwi mulḥid, ma biʾāmin bi-ši ismu '''Alla'''. #: সে নাস্তিক, সে '''ঈশ্বর'''কে বিশ্বাস করে না। ==অটোমান তুর্কি== ===ব্যুৎপত্তি=== {{bor|ota|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ota|sem-pro|*ʾil-}} থেকে আগত। ===বিশেষ্য=== {{ota-noun|tr=Allah}} # {{lb|ota|ইসলাম}} [[আল্লাহ]], [[ঈশ্বর]] ==পাশতু== {{উইকিপিডিয়া|lang=ps|sc=ps-Arab}} ===ব্যুৎপত্তি=== {{bor|ps|ar|اللّٰه}} থেকে ঋণকৃত; আলটিমেটলি {{der|ps|sem-pro|*ʾil-}} থেকে আগত। ===নামবাচক বিশেষ্য=== {{head|ps|নামবাচক বিশেষ্য|tr=allāh}} # [[আল্লাহ]] {{লে|L1149444|উচ্চারণ={{fa-IPA|al`lāh}}}} {{fa-regional|الله|الله|Аллоҳ}} ====আরো দেখুন==== * {{l|fa|خُدا|tr=xodâ}} {{topicsfa|ইসলাম|Religion}} ==ফিলিস্তিনি আরবি== {{লে|L1551417|0}} {{লে|L1234065}} [[Category:ps:ইসলাম]] {{লে|L1012756}} apeszybanchkvk0kb65d3nvze9jox3t お母さん 0 14020 510633 89525 2026-06-11T08:01:02Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L405867-এর সাথে সংযোগ তৈরি করছি 510633 wikitext text/x-wiki {{লে|L405867}} dhpuzxte98wiloxpacu4jt044pc5wz0 wife 0 27002 510637 115334 2026-06-11T08:03:14Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L4139-এর সাথে সংযোগ তৈরি করছি 510637 wikitext text/x-wiki {{লে|L4139|pronunciation=* {{অন্ত্যমিল|en|aɪf}}|meaning=[[ভার্যা]], [[জায়া]], [[জীবনসঙ্গিনী]], [[ভত্র্রী]], [[দার]], [[দয়িতা]], [[জানানা]], [[মাগ]], [[গিন্নীমা]], [[জানী]], [[অর্ধাঙ্গী]], [[প্রেয়সী]], [[বনিতা]], [[জনি]], [[ক্ষেত্র]]}} 4ed2ginh9a5tapdlunfy2z7z43qcshr মডিউল:আভিধানিক উপাত্ত 828 50158 510597 510496 2026-06-10T23:31:26Z Redmin 6857 510597 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local lex_cat local matched_lemma local function wrapStringInWikilinks(str) local exceptions = i18n.nolinks local result = str:gsub('(%S+)', function(token) local word, trailing_char = token:match('^(.-)([;,]*)$') local wrapped = word:gsub('[^(-/]+', function(part) if exceptions[part] then return part else return '[[' .. part .. '#' .. i18n['content_lang_name'] .. '|' .. part .. ']]' end end) return wrapped .. trailing_char end) return result end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end -- Use this function to get the label of an item even if that item does not have any label in the wiki's content language or English. local function getLabel(id) if id == 'Q11051hi' then return 'হিন্দি' elseif id == 'Q11051ur' then return 'উর্দু' elseif id == 'Q56356571fa' then return 'ফার্সি' elseif id == 'Q56356571tg' then return 'তাজিক' elseif id == 'Q58635pa' or id == 'Q58635pnb' then return 'পাঞ্জাবি' end local label = wb.getLabel(id) if label then return label end local labels = wb.getEntity(id).labels if not labels then return id end for _, v in pairs(labels) do if v and v.value then return v.value end end end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks then if reference.snaks['P248'] then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end -- Returns the Wiktionary language code for a lexeme entity local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] then local code = statements[1].mainsnak.datavalue.value if code == 'hr' then return 'sh' elseif code == 'pan' then return 'pa' else return statements[1].mainsnak.datavalue.value end end end -- error(current_lexeme:getId() .. '-এর ভাষার কোড পাওয়া যায়নি') end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) if lex then lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) then source_name = getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termSpan(rep) else lemma_string = lemma_string .. '/' .. termSpan(rep) end end return lemma_string end local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') local example_text, example_lang, example_form, example_str for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers and stmt.qualifiers['P6072'] and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for _, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getItemForSense(sense) for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local qid = stmt.mainsnak.datavalue.value.id return qid, getLabel(qid) end end local function getTranslations(frame, senses) if #senses == 0 then return nil end local all_translations = {} local wmlang for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') local item, label = getItemForSense(sense) if item then wmlang = require("Module:wikimedia languages") end for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local trans_lexeme = getEntity(lexeme_id) local lang_name = getLabel(trans_lexeme:getLanguage()) local trans_code = getLexemeLanguageCode(trans_lexeme) if trans_code then table.insert(translation_set, lang_name .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={trans_code, getLemmata(trans_lexeme) .. '<br/>'}}) else table.insert(translation_set, lang_name .. ': ' .. getLinkedLemmata(trans_lexeme) .. '<br/>' .. i18n.trans_category(lang_name)) end end if item then for _, v in pairs(getEntity(item).labels) do if string.find(v.language, '-') == nil then -- @TODO: Implement deduplication of translation and get rid of this check local lang = wmlang.getByCode(v.language) local wikt = lang:getWiktionaryLanguage() if wikt:hasType('regular') then table.insert(translation_set, getLabel(wikt:getWikidataItem()) .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={wikt:getCode(), v.value .. '<br/>'}}) end end end end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss or label } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) local item_label_gloss_parts = {} local idlinkset = {} for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for _, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end end local val = getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(item_label_gloss_parts, i18n.tocatlink(lang_code .. ':' .. val)) end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss then main_gloss_text = main_gloss_text .. wrapStringInWikilinks(gloss) if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local stmt_value, item_label = getItemForSense(sense) if item_label then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. item_label .. ']]') end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for _, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for _, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) for i, stmt in pairs(sense:getAllStatements('P8394')) do -- টিপ্পনীর উদ্ধৃতি local gloss_quote = termSpan({stmt.mainsnak.datavalue.value.text, stmt.mainsnak.datavalue.value.language}) if stmt.references[1] then local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local sense_images = sense:getAllStatements('P18') if next(sense_images) then first_sense_image = sense_images[1].mainsnak.datavalue.value end if first_sense_image ~= '' then table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) table.insert(idlinkset, idlinks) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen, idlinkset} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme, frame ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers and stmt.qualifiers['P1545'] then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme, frame, 'partial') if part_etymology ~= '' and part_etymology then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' and 'compound' templates instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '', '', '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return getLexemeLanguageCode(root_lexeme), '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame, mode ) -- @TODO: Fix the etymology chains that are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme, frame) local root_lang, current_roots, root_str = getRoots(current_lexeme) if mode ~= 'partial' and root_str then --frame:expandTemplate{title=i18n['template_root'], args={lang_code, root_lang, root_str}} end local stmts = current_lexeme:getAllStatements('P5191') local new_etymology_string if #stmts == 0 then if current_roots ~= '' and current_combines ~= '' and current_roots then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then if lang_code == 'ar' and mode ~= 'partial' and root_str ~= matched_lemma then return frame:expandTemplate{title=i18n['template_ar-rootbox'], args={root_str}} else return current_roots end else return current_combines end end local origin_lexeme_string for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = getLabel(origin_lexeme:getLanguage()) local sitelink = i18n.wplink(origin_lexeme:getLanguage(), origin_lexeme_lang, wb) if sitelink ~= '' then origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. sitelink .. ')' else origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. origin_lexeme_lang .. ')' end if stmt.qualifiers and stmt.qualifiers['P5886'] then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then -- @TODO: Add support for showing gender origin_lexeme_string = frame:expandTemplate{title=i18n['template_borrowed'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_borrowing'] elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_inherited'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_inheritance'] elseif mode_of_derivation == 'Q189743' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_ellipsis'], args={lang_code, getLemmata(origin_lexeme)}} .. ' ' .. i18n['etymology_ellipsis'] end end local origin_origin = getEtymology(origin_lexeme, frame) if origin_origin ~= '' and origin_origin then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string and etymology then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology and current_roots then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন local qual = stmt.qualifiers[property_id] if qual then for _, qual in pairs(qual) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, getLabel(stmt_value)) end end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local syllable_count if lang_code == 'tr' then syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z10029|' .. ipa_text, frame) else syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame) end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. syllable_count) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_code == 'bn' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_code == 'ar' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_code == 'fax' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys, heading) for i, v in ipairs(keys) do if args[v] then if heading then table.insert(sections, heading) table.insert(sections, args[v]) end end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] if lemma == title then matched_lemma = lemma break end end if matched_lemma == nil then if lang_code == 'ar' then -- Arabic lemmas do not match the title of the entry because those are written with different characters stripped out on Wiktionary. matched_lemma = lexeme:getLemma('ar') elseif lang_code == 'rhg' then matched_lemma = lexeme:getLemma('rhg-arab') end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat then for j, f in ipairs(feat) do local label = getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local lang_name = getLabel(lang_category) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end lang_code = getLexemeLanguageCode(current_lexeme) matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) lex_cat = current_lexeme:getLexicalCategory() local cat = i18n.lang_category(getLabel(lex_cat), lang_name) local lex_cat_template if cat then table.insert(sections, '===' .. getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) local ety_added if etymology ~= '' and etymology then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) ety_added = true end if ety_added then add_any_notes(sections, args, i18n['manual_etymology']) else add_any_notes(sections, args, i18n['manual_etymology'], heading_level(i18n['heading_etymology'], 4)) end local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pron_added if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end if pron_added then add_any_notes(sections, args, i18n['manual_pronunciation']) else add_any_notes(sections, args, i18n['manual_pronunciation'], heading_level(i18n['heading_pronunciation'], 4)) end local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then if matched_lemma then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then if matched_lemma then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template then table.insert(sections, lex_cat_template) else if matched_lemma then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, i18n.tocatlink(i18n['category_no_matching_lemma'])) end end local meanings, references_seen, sense_extlinks = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end if lex_cat == 'Q134830' then table.insert(sections, frame:expandTemplate{title='prefixsee', args={lang_code}}) elseif lex_cat == 'Q102047' then table.insert(sections, frame:expandTemplate{title='suffixsee', args={lang_code}}) -- elseif lex_cat == 'Q111029' then -- table.insert(sections, frame:expandTemplate{title='rootsee', args={'+', lang_code, matched_lemma}}) end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and sense_extlinks and #sense_extlinks == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then table.insert(sections, i18n.rfref_category(lang_name)) end return table.concat(sections,"\n\n") end return p 00ye3lz238p877lgqfr01x4ze37y3kw 510625 510597 2026-06-11T04:32:46Z Redmin 6857 510625 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local lex_cat local matched_lemma local function wrapStringInWikilinks(str) local exceptions = i18n.nolinks local result = str:gsub('(%S+)', function(token) local word, trailing_char = token:match('^(.-)([;,]*)$') local wrapped = word:gsub('[^(-/]+', function(part) if exceptions[part] then return part else return '[[' .. part .. '#' .. i18n['content_lang_name'] .. '|' .. part .. ']]' end end) return wrapped .. trailing_char end) return result end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end -- Use this function to get the label of an item even if that item does not have any label in the wiki's content language or English. local function getLabel(id) if id == 'Q11051hi' then return 'হিন্দি' elseif id == 'Q11051ur' then return 'উর্দু' elseif id == 'Q56356571fa' then return 'ফার্সি' elseif id == 'Q56356571tg' then return 'তাজিক' elseif id == 'Q58635pa' or id == 'Q58635pnb' then return 'পাঞ্জাবি' end local label = wb.getLabel(id) if label then return label end local labels = wb.getEntity(id).labels if not labels then return id end for _, v in pairs(labels) do if v and v.value then return v.value end end end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks then if reference.snaks['P248'] then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end -- Returns the Wiktionary language code for a lexeme entity local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] then local code = statements[1].mainsnak.datavalue.value if code == 'hr' then return 'sh' elseif code == 'pan' then return 'pa' else return statements[1].mainsnak.datavalue.value end end end -- error(current_lexeme:getId() .. '-এর ভাষার কোড পাওয়া যায়নি') end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) if lex then lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) then source_name = getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termSpan(rep) else lemma_string = lemma_string .. '/' .. termSpan(rep) end end return lemma_string end local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') local example_text, example_lang, example_form, example_str for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers and stmt.qualifiers['P6072'] and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for _, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getItemForSense(sense) for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local qid = stmt.mainsnak.datavalue.value.id return qid, getLabel(qid) end end local function getTranslations(frame, senses) if #senses == 0 then return nil end local all_translations = {} local wmlang for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') local item, label = getItemForSense(sense) if item then wmlang = require("Module:wikimedia languages") end for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local trans_lexeme = getEntity(lexeme_id) local lang_name = getLabel(trans_lexeme:getLanguage()) local trans_code = getLexemeLanguageCode(trans_lexeme) if trans_code then table.insert(translation_set, lang_name .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={trans_code, getLemmata(trans_lexeme) .. '<br/>'}}) else table.insert(translation_set, lang_name .. ': ' .. getLinkedLemmata(trans_lexeme) .. '<br/>' .. i18n.trans_category(lang_name)) end end if item then for _, v in pairs(getEntity(item).labels) do if string.find(v.language, '-') == nil then -- @TODO: Implement deduplication of translation and get rid of this check local lang = wmlang.getByCode(v.language) local wikt = lang:getWiktionaryLanguage() if wikt:hasType('regular') then table.insert(translation_set, getLabel(wikt:getWikidataItem()) .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={wikt:getCode(), v.value .. '<br/>'}}) end end end end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss or label } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) local item_label_gloss_parts = {} local idlinkset = {} for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for _, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end end local val = getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(item_label_gloss_parts, i18n.tocatlink(lang_code .. ':' .. val)) end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss then main_gloss_text = main_gloss_text .. wrapStringInWikilinks(gloss) if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local stmt_value, item_label = getItemForSense(sense) if item_label then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. item_label .. ']]') end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for _, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for _, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) for i, stmt in pairs(sense:getAllStatements('P8394')) do -- টিপ্পনীর উদ্ধৃতি local gloss_quote = termSpan({stmt.mainsnak.datavalue.value.text, stmt.mainsnak.datavalue.value.language}) if stmt.references[1] then local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local sense_images = sense:getAllStatements('P18') if next(sense_images) then first_sense_image = sense_images[1].mainsnak.datavalue.value end if first_sense_image ~= '' then table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) table.insert(idlinkset, idlinks) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen, idlinkset} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme, frame ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers and stmt.qualifiers['P1545'] then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme, frame, 'partial') if part_etymology ~= '' and part_etymology then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' and 'compound' templates instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '', '', '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return getLexemeLanguageCode(root_lexeme), '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame, mode ) -- @TODO: Fix the etymology chains that are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme, frame) local root_lang, current_roots, root_str = getRoots(current_lexeme) if mode ~= 'partial' and root_str then --frame:expandTemplate{title=i18n['template_root'], args={lang_code, root_lang, root_str}} end local stmts = current_lexeme:getAllStatements('P5191') local new_etymology_string if #stmts == 0 then if current_roots ~= '' and current_combines ~= '' and current_roots then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then if lang_code == 'ar' and mode ~= 'partial' and root_str ~= matched_lemma then return frame:expandTemplate{title=i18n['template_ar-rootbox'], args={root_str}} else return current_roots end else return current_combines end end local origin_lexeme_string for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = getLabel(origin_lexeme:getLanguage()) local sitelink = i18n.wplink(origin_lexeme:getLanguage(), origin_lexeme_lang, wb) if sitelink ~= '' then origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. sitelink .. ')' else origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. origin_lexeme_lang .. ')' end if stmt.qualifiers and stmt.qualifiers['P5886'] then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then -- @TODO: Add support for showing gender origin_lexeme_string = frame:expandTemplate{title=i18n['template_borrowed'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_borrowing'] elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_inherited'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_inheritance'] elseif mode_of_derivation == 'Q189743' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_ellipsis'], args={lang_code, getLemmata(origin_lexeme)}} .. ' ' .. i18n['etymology_ellipsis'] end end local origin_origin = getEtymology(origin_lexeme, frame) if origin_origin ~= '' and origin_origin then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string and etymology then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology and current_roots then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন local qual = stmt.qualifiers[property_id] if qual then for _, qual in pairs(qual) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, getLabel(stmt_value)) end end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local syllable_count if lang_code == 'tr' then syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z10029|' .. ipa_text, frame) else syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame) end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. syllable_count) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_code == 'bn' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_code == 'ar' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_code == 'fax' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys, heading) for i, v in ipairs(keys) do if args[v] then if heading then table.insert(sections, heading) table.insert(sections, args[v]) end end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] if lemma == title then matched_lemma = lemma break end end if matched_lemma == nil then if lang_code == 'ar' then -- Arabic lemmas do not match the title of the entry because those are written with different characters stripped out on Wiktionary. matched_lemma = lexeme:getLemma('ar') elseif lang_code == 'rhg' then matched_lemma = lexeme:getLemma('rhg-arab') end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat then for j, f in ipairs(feat) do local label = getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local lang_name = getLabel(lang_category) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end lang_code = getLexemeLanguageCode(current_lexeme) matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) lex_cat = current_lexeme:getLexicalCategory() local cat = i18n.lang_category(getLabel(lex_cat), lang_name) local lex_cat_template if cat then table.insert(sections, '===' .. getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) local ety_added if etymology ~= '' and etymology then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) ety_added = true end if ety_added then add_any_notes(sections, args, i18n['manual_etymology']) else add_any_notes(sections, args, i18n['manual_etymology'], heading_level(i18n['heading_etymology'], 4)) end local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pron_added if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end if pron_added then add_any_notes(sections, args, i18n['manual_pronunciation']) else add_any_notes(sections, args, i18n['manual_pronunciation'], heading_level(i18n['heading_pronunciation'], 4)) end local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then if matched_lemma then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then if matched_lemma then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template then table.insert(sections, lex_cat_template) else if matched_lemma then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, i18n.tocatlink(i18n['category_no_matching_lemma'])) end end local meanings, references_seen, sense_extlinks = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end if lex_cat ~= 'Q9788' then local translations = getTranslations(frame, senses) if translations then table.insert(sections, translations) end end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end if lex_cat == 'Q134830' then table.insert(sections, frame:expandTemplate{title='prefixsee', args={lang_code}}) elseif lex_cat == 'Q102047' then table.insert(sections, frame:expandTemplate{title='suffixsee', args={lang_code}}) -- elseif lex_cat == 'Q111029' then -- table.insert(sections, frame:expandTemplate{title='rootsee', args={'+', lang_code, matched_lemma}}) end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and sense_extlinks and #sense_extlinks == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then table.insert(sections, i18n.rfref_category(lang_name)) end return table.concat(sections,"\n\n") end return p ka7bqcb43l8phg6sapnnbaz9cqfvr8a 510684 510625 2026-06-11T08:16:55Z Redmin 6857 510684 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local lex_cat local matched_lemma local function wrapStringInWikilinks(str) local exceptions = i18n.nolinks local result = str:gsub('(%S+)', function(token) local word, trailing_char = token:match('^(.-)([;,]*)$') local wrapped = word:gsub('[^(-/]+', function(part) if exceptions[part] then return part else return '[[' .. part .. '#' .. i18n['content_lang_name'] .. '|' .. part .. ']]' end end) return wrapped .. trailing_char end) return result end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end -- Use this function to get the label of an item even if that item does not have any label in the wiki's content language or English. local function getLabel(id) if id == 'Q11051hi' then return 'হিন্দি' elseif id == 'Q11051ur' then return 'উর্দু' elseif id == 'Q56356571fa' then return 'ফার্সি' elseif id == 'Q56356571tg' then return 'তাজিক' elseif id == 'Q58635pa' or id == 'Q58635pnb' then return 'পাঞ্জাবি' end local label = wb.getLabel(id) if label then return label end local labels = wb.getEntity(id).labels if not labels then return id end for _, v in pairs(labels) do if v and v.value then return v.value end end end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks then if reference.snaks['P248'] then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end -- Returns the Wiktionary language code for a lexeme entity local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] then local code = statements[1].mainsnak.datavalue.value if code == 'hr' then return 'sh' elseif code == 'pan' then return 'pa' else return statements[1].mainsnak.datavalue.value end end end -- error(current_lexeme:getId() .. '-এর ভাষার কোড পাওয়া যায়নি') end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) if lex then lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) then source_name = getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termSpan(rep) else lemma_string = lemma_string .. '/' .. termSpan(rep) end end return lemma_string end local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') local example_text, example_lang, example_form, example_str for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers and stmt.qualifiers['P6072'] and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for _, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getItemForSense(sense) for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local qid = stmt.mainsnak.datavalue.value.id return qid, getLabel(qid) end end local function getTranslations(frame, senses) if #senses == 0 then return nil end local all_translations = {} local wmlang for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') local item, label = getItemForSense(sense) if item then wmlang = require("Module:wikimedia languages") end for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local trans_lexeme = getEntity(lexeme_id) local lang_name = getLabel(trans_lexeme:getLanguage()) local trans_code = getLexemeLanguageCode(trans_lexeme) if trans_code then table.insert(translation_set, lang_name .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={trans_code, getLemmata(trans_lexeme) .. '<br/>'}}) else table.insert(translation_set, lang_name .. ': ' .. getLinkedLemmata(trans_lexeme) .. '<br/>' .. i18n.trans_category(lang_name)) end end if item then for _, v in pairs(getEntity(item).labels) do if string.find(v.language, '-') == nil then -- @TODO: Implement deduplication of translation and get rid of this check local lang = wmlang.getByCode(v.language) local wikt = lang:getWiktionaryLanguage() if wikt:hasType('regular') then table.insert(translation_set, getLabel(wikt:getWikidataItem()) .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={wikt:getCode(), v.value .. '<br/>'}}) end end end end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss or label } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) local item_label_gloss_parts = {} local idlinkset = {} for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for _, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end end local val = getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(item_label_gloss_parts, i18n.tocatlink(lang_code .. ':' .. val)) end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss then main_gloss_text = main_gloss_text .. wrapStringInWikilinks(gloss) if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local stmt_value, item_label = getItemForSense(sense) if item_label then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. item_label .. ']]') end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for _, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for _, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) for i, stmt in pairs(sense:getAllStatements('P8394')) do -- টিপ্পনীর উদ্ধৃতি local gloss_quote = termSpan({stmt.mainsnak.datavalue.value.text, stmt.mainsnak.datavalue.value.language}) if stmt.references[1] then local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local sense_images = sense:getAllStatements('P18') if next(sense_images) then first_sense_image = sense_images[1].mainsnak.datavalue.value end if first_sense_image ~= '' then table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) table.insert(idlinkset, idlinks) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen, idlinkset} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme, frame ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers and stmt.qualifiers['P1545'] then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme, frame, 'partial') if part_etymology ~= '' and part_etymology then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' and 'compound' templates instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '', '', '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return getLexemeLanguageCode(root_lexeme), '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame, mode ) -- @TODO: Fix the etymology chains that are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme, frame) local root_lang, current_roots, root_str = getRoots(current_lexeme) if mode ~= 'partial' and root_str then --frame:expandTemplate{title=i18n['template_root'], args={lang_code, root_lang, root_str}} end local stmts = current_lexeme:getAllStatements('P5191') local new_etymology_string if #stmts == 0 then if current_roots ~= '' and current_combines ~= '' and current_roots then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then if lang_code == 'ar' and mode ~= 'partial' and root_str ~= matched_lemma then return frame:expandTemplate{title=i18n['template_ar-rootbox'], args={root_str}} else return current_roots end else return current_combines end end local origin_lexeme_string for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = getLabel(origin_lexeme:getLanguage()) local sitelink = i18n.wplink(origin_lexeme:getLanguage(), origin_lexeme_lang, wb) if sitelink ~= '' then origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. sitelink .. ')' else origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. origin_lexeme_lang .. ')' end if stmt.qualifiers and stmt.qualifiers['P5886'] then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then -- @TODO: Add support for showing gender origin_lexeme_string = frame:expandTemplate{title=i18n['template_borrowed'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_borrowing'] elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_inherited'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_inheritance'] elseif mode_of_derivation == 'Q189743' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_ellipsis'], args={lang_code, getLemmata(origin_lexeme)}} .. ' ' .. i18n['etymology_ellipsis'] end end local origin_origin = getEtymology(origin_lexeme, frame) if origin_origin ~= '' and origin_origin then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string and etymology then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology and current_roots then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন local qual = stmt.qualifiers[property_id] if qual then for _, qual in pairs(qual) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, getLabel(stmt_value)) end end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local syllable_count if lang_code == 'tr' then syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z10029|' .. ipa_text, frame) else syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame) end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. syllable_count) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_code == 'bn' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_code == 'ar' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_code == 'fax' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys, heading) for i, v in ipairs(keys) do if args[v] then if heading then table.insert(sections, heading) table.insert(sections, args[v]) end end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] if lemma == title then matched_lemma = lemma break end end if matched_lemma == nil then if lang_code == 'ar' then matched_lemma = lexeme:getLemma('ar') elseif lang_code == 'rhg' then matched_lemma = lexeme:getLemma('rhg-arab') elseif lang_code == 'ur' then matched_lemma = lexeme:getLemma('ur') end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat then for j, f in ipairs(feat) do local label = getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local lang_name = getLabel(lang_category) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end lang_code = getLexemeLanguageCode(current_lexeme) matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) lex_cat = current_lexeme:getLexicalCategory() local cat = i18n.lang_category(getLabel(lex_cat), lang_name) local lex_cat_template if cat then table.insert(sections, '===' .. getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) local ety_added if etymology ~= '' and etymology then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) ety_added = true end if ety_added then add_any_notes(sections, args, i18n['manual_etymology']) else add_any_notes(sections, args, i18n['manual_etymology'], heading_level(i18n['heading_etymology'], 4)) end local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pron_added if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end if pron_added then add_any_notes(sections, args, i18n['manual_pronunciation']) else add_any_notes(sections, args, i18n['manual_pronunciation'], heading_level(i18n['heading_pronunciation'], 4)) end local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then if matched_lemma then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then if matched_lemma then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template then table.insert(sections, lex_cat_template) else if matched_lemma then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, i18n.tocatlink(i18n['category_no_matching_lemma'])) end end local meanings, references_seen, sense_extlinks = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end if lex_cat ~= 'Q9788' then local translations = getTranslations(frame, senses) if translations then table.insert(sections, translations) end end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end if lex_cat == 'Q134830' then table.insert(sections, frame:expandTemplate{title='prefixsee', args={lang_code}}) elseif lex_cat == 'Q102047' then table.insert(sections, frame:expandTemplate{title='suffixsee', args={lang_code}}) -- elseif lex_cat == 'Q111029' then -- table.insert(sections, frame:expandTemplate{title='rootsee', args={'+', lang_code, matched_lemma}}) end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and sense_extlinks and #sense_extlinks == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then table.insert(sections, i18n.rfref_category(lang_name)) end return table.concat(sections,"\n\n") end return p jvfab2wrrcwq5rah047ctz6qm09kadz মডিউল:data consistency check 828 51784 510617 323306 2026-06-11T03:07:49Z Hiyuune 11971 510617 Scribunto text/plain -- TODO: -- ietf_subtag field used with a 2/3-letter langauge/family code except qaa-qtz, or a 4-letter script code. -- Check against files containing up-to-date ISO data, to cross-check validity. local export = {} local mw = mw local require = require local string = string local Array = require("Module:array") local m_en_utilities = require("Module:en-utilities") local m_etym_languages_canonical_names = require("Module:etymology languages/canonical names") local m_etym_languages_codes = require("Module:etymology languages/code to canonical name") local m_etym_languages_data = require("Module:etymology languages/data") local m_families = require("Module:families") local m_families_canonical_names = require("Module:families/canonical names") local m_families_codes = require("Module:families/code to canonical name") local m_families_data = require("Module:families/data") local m_languages = require("Module:languages") local m_languages_canonical_names = require("Module:languages/canonical names") local m_languages_codes = require("Module:languages/code to canonical name") local m_languages_data_all = require("Module:languages/data/all") local m_load = require("Module:load") local m_scripts = require("Module:scripts") local m_scripts_canonical_names = require("Module:scripts/canonical names") local m_scripts_codes = require("Module:scripts/code to canonical name") local m_scripts_data = require("Module:scripts/data") local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local add_indefinite_article = m_en_utilities.add_indefinite_article local codepoint = m_str_utils.codepoint local concat = table.concat local dump = mw.dumpObject local format = string.format local gcodepoint = m_str_utils.gcodepoint local get_data_module_name = m_languages.getDataModuleName local get_family_by_code = m_families.getByCode local get_family_by_canonical_name = m_families.getByCanonicalName local get_indefinite_article = m_en_utilities.get_indefinite_article local get_language_by_code = m_languages.getByCode local get_language_by_canonical_name = m_languages.getByCanonicalName local get_script_by_code = m_scripts.getByCode local get_script_by_canonical_name = m_scripts.getByCanonicalName local gmatch = string.gmatch local gsub = string.gsub local insert = table.insert local ipairs = ipairs local is_callable = require("Module:fun").is_callable local is_positive_integer = require("Module:math").is_positive_integer local is_known_language_tag = mw.language.isKnownLanguageTag local isutf8 = mw.ustring.isutf8 local json_decode = mw.text.jsonDecode local language_link = require("Module:links").language_link local list_to_set = m_table.listToSet local list_to_text = mw.text.listToText local load_data = m_load.load_data local log = mw.log local main_loader = package.loaders[2] local make_family = m_families.makeObject local make_lang = m_languages.makeObject local make_script = m_scripts.makeObject local match = string.match local new_title = mw.title.new local next = next local pairs = pairs local pcall = pcall local remove_comments = require("Module:string/removeComments") local safe_require = m_load.safe_require local sorted_pairs = m_table.sortedPairs local split = m_str_utils.split local sub = string.sub local table_len = m_table.length local tag_text = require("Module:script utilities").tag_text local type = type local umatch = m_str_utils.match local unpack = unpack or table.unpack -- Lua 5.2 compatibility local aliases = require("Module:languages/data").aliases local messages local function discrepancy(modname, ...) local success, result = pcall(function(...) messages[modname]:insert(format(...)) end, ...) if not success then log(result, ...) end end local messages_mt = {} function messages_mt:__index(k) local val = Array() self[k] = val return val end local all_codes = {} local language_names = {} local etym_language_names = {} local family_names = {} local script_names = {} local nonempty_families = {} local allowed_empty_families = {tbq = true} local nonempty_scripts = {} local function link(obj, code_first) return type(obj) == "string" and obj or code_first and format("<code>%s</code> (%s)", obj:getCode(), obj:makeCategoryLink()) or format("%s (<code>%s</code>)", obj:makeCategoryLink(), obj:getCode()) end local function check_data_keys(...) local valid_keys = Array(...):toSet() return function (modname, obj, data) local invalid_keys for k in pairs(data) do if not valid_keys[k] then if not invalid_keys then invalid_keys = Array(k) else invalid_keys:insert(k) end end end if invalid_keys == nil then return end local plural = #invalid_keys ~= 1 discrepancy(modname, "The data key%s %s for %s %s invalid.", plural and "s" or "", invalid_keys:map(function(key) return "<code>" .. key .. "</code>" end):concat(", "), link(obj), plural and "are" or "is" ) end end -- Modification of isArray in [[Module:table]]. -- This assumes all keys are either integers or non-numbers. -- If there are fractional numbers, the results might be incorrect. -- For instance, find_gap{"a", "b", [0.5] = true} evaluates to 3, but there -- isn't a gap at 3 in the sense of there being an integer key greater than 3. local function find_gap(t, can_contain_non_number_keys) local i = 0 for k in pairs(t) do if not (can_contain_non_number_keys and type(k) ~= "number") then i = i + 1 if t[i] == nil then return i end end end end local function check_true_or_string_or_nil(modname, obj, data, key) local field = data[key] if not (field == nil or field == true or type(field) == "string") then discrepancy(modname, "%s has %s <code>%s</code> value that is not <code>nil</code>, <code>true</code> or a string: <code>%s</code>", link(obj), get_indefinite_article(key), key, dump(data[key]) ) end end local function check_array(modname, obj, data, array_name, parent_array_name, can_contain_non_number_keys) local parent_table = data if parent_array_name then parent_table = assert(data[parent_array_name], parent_array_name) parent_array_name = "the <code>" .. parent_array_name .. "</code> field in " else parent_array_name = "" end local array_type = type(parent_table[array_name]) if array_type == "table" then local gap = find_gap(parent_table[array_name], can_contain_non_number_keys) if gap then discrepancy(modname, "The <code>%s</code> array in %sthe data table for %s has a gap at index %d.", array_name, parent_array_name, link(obj), gap ) else return true end else discrepancy(modname, "The <code>%s</code> field in %sthe data table for %s should be an array (table) but is %s.", array_name, parent_array_name, link(obj), array_type == "nil" and "nil" or "a " .. array_type ) end end local function check_no_alias_codes(modname, mod_data) local lookup, discrepancies = {}, {} for k, v in pairs(mod_data) do local check = lookup[v] if check then discrepancies[check] = discrepancies[check] or {"<code>" .. check .. "</code>"} insert(discrepancies[check], "<code>" .. k .. "</code>") else lookup[v] = k end end for _, v in pairs(discrepancies) do discrepancy(modname, "The codes %s are currently alias codes. Only one code should be used in the data.", list_to_text(v, ", ", " and ") ) end end local function check_wikidata_item(modname, obj, data, key) local data_item = data[key] if data_item == nil or is_positive_integer(data_item) then return end discrepancy(modname, "%s has a Wikidata item ID that is not a positive integer: <code>%s</code>", link(obj), dump(data_item) ) end local function check_name_field(modname, obj, data, canonical_name, data_key, allow_nested, allow_canonical_name_in_table) local array = data[data_key] if not array then return end check_array(modname, obj, data, data_key, nil, true) local names = {} local function check_other_name(other_name) if not allow_canonical_name_in_table and other_name == canonical_name then discrepancy(modname, "%s has its canonical name (<code>%s</code>) repeated in the table of <code>%s</code>.", link(obj), dump(canonical_name), data_key ) end if names[other_name] then discrepancy(modname, "The name %s is found twice or more in the list of <code>%s</code> for %s.", other_name, data_key, link(obj) ) end names[other_name] = true end for _, other_name in ipairs(array) do if type(other_name) == "table" then if not allow_nested then discrepancy(modname, "A nested table is found in the list of <code>%s</code> for %s, but isn't allowed.", data_key, link(obj) ) else for _, on in ipairs(other_name) do check_other_name(on) end end else check_other_name(other_name) end end end local function check_other_names_aliases_varieties(modname, obj, data, canonical_name) if data.other_names then check_name_field(modname, obj, data, canonical_name, "other_names") end if data.aliases then check_name_field(modname, obj, data, canonical_name, "aliases") end if data.varieties then -- Sometimes a variety legitimately has the same name as the language as a whole, so allow that. check_name_field(modname, obj, data, canonical_name, "varieties", "allow_nested", "allow_canonical_name_in_table") end end local function validate_pattern(pattern, modname, obj, standard_chars) if type(pattern) ~= "string" then return discrepancy(modname, "\"%s\", the %spattern for %s, is not a string.", pattern, standard_chars and "standard character " or "", link(obj) ) elseif not isutf8(pattern) then return discrepancy(modname, "%s specifies a pattern for for %scharacter detection which is not valid UTF-8: <code>%s</code>", link(obj), standard_chars and "standard " or "", dump(pattern) ) end local ranges for lower, higher in gmatch(pattern, "(.[\128-\191]*)%-%%?(.[\128-\191]*)") do if codepoint(lower) >= codepoint(higher) then ranges = ranges or Array() insert(ranges, { lower, higher }) end end if ranges and ranges[1] then local plural = #ranges ~= 1 and "s" or "" discrepancy(modname, "%s specifies an invalid pattern " .. "for %scharacter detection: <code>%s</code>. The first codepoint%s " .. "in the range%s %s %s must be less than or equal to the second.", link(obj), standard_chars and "standard " or "", dump(pattern), plural, plural, ranges:map(function(range) return format(range[1] .. "-" .. range[2] .. " (U+%X, U+%X)", codepoint(range[1]), codepoint(range[2])) end):concat(", "), #ranges ~= 1 and "are" or "is" ) end local success, result = pcall(umatch, "", "[" .. pattern .. "]") if not success then discrepancy(modname, "%s specifies an invalid pattern for %scharacter detection: <code>%s</code> (%s)", link(obj), standard_chars and "standard " or "", dump(pattern), result ) end end local remove_exceptions_addition = 0xF0000 local maximum_code_point = 0x10FFFF local remove_exceptions_maximum_code_point = maximum_code_point - remove_exceptions_addition -- TODO: check modules exist. -- TODO: validate script codes and check inner tables. local function check_replacement_data(modname, obj, data, key, func_name) local replacements = data[key] if replacements == nil then return end local replacements_type = type(replacements) if replacements_type == "string" then local mod = main_loader("Module:" .. replacements) if not mod then discrepancy(modname, "The <code>%s</code> field in the data table for %s specifies the module [[Module:%s]], which does not exist.", key, link(obj), replacements ) else mod = mod() if not (type(mod) == "table" and is_callable(mod[func_name])) then discrepancy(modname, "The <code>%s</code> field in the data table for %s specifies the module [[Module:%s]], which exists, but does not contain the expected function <code>%s()</code>.", key, link(obj), replacements, func_name ) end end return elseif replacements_type ~= "table" then discrepancy(modname, "The <code>%s</code> field in the data table for %s must be a string or table, not a %s.", key, link(obj), replacements_type ) return end local from, to = replacements.from, replacements.to if (from ~= nil) ~= (to ~= nil) then discrepancy(modname, "The <code>from</code> and <code>to</code> arrays in the <code>%s</code> table for %s are not both defined or both undefined.", key, link(obj) ) elseif from then for _, k in ipairs {"from", "to"} do check_array(modname, obj, data, k, key) end end local remove_diacritics = replacements.remove_diacritics if not (remove_diacritics == nil or type(remove_diacritics) == "string") then discrepancy(modname, "The <code>remove_diacritics</code> field in the <code>%s</code> table for %s table must be a string.", key, link(obj) ) end local remove_exceptions = replacements.remove_exceptions if remove_exceptions then if check_array(modname, obj, data, "remove_exceptions", key) then for sequence_i, sequence in ipairs(remove_exceptions) do local code_point_i = 0 for code_point in gcodepoint(sequence) do code_point_i = code_point_i + 1 if code_point > remove_exceptions_maximum_code_point then discrepancy(modname, "Code point #%d (0x%04X) in field #%d of the <code>remove_exceptions</code> array for %s is over U+%04X.", code_point_i, code_point, sequence_i, link(obj), remove_exceptions_maximum_code_point ) end end end end end if from and to and table_len(to) > table_len(from) then discrepancy(modname, "The <code>from</code> array in the <code>%s</code> table for %s must be shorter or the same length as the <code>to</code> array.", key, link(obj) ) end end local function check_replacements_data(modname, obj, data) for _, replacement_spec in ipairs{ {"translit", "tr"}, {"display_text", "makeDisplayText"}, {"strip_diacritics", "stripDiacritics"}, {"sort_key", "makeSortKey"}, } do check_replacement_data(modname, obj, data, unpack(replacement_spec)) end end local function has_ancestor(lang, code) for _, anc in ipairs(lang:getAncestors()) do if code == anc:getCode() or has_ancestor(anc, code) then return true end end end local function get_default_ancestors(lang) if lang:hasType("language", "etymology-only") then local parent = lang:getParent() if not has_ancestor(parent, lang:getCode()) then return parent:getAncestorCodes() end end local fam_code, def_anc = lang:getFamilyCode() while fam_code and fam_code ~= "qfa-not" do local fam = m_families_data[fam_code] def_anc = fam.protoLanguage or m_languages_data_all[fam_code .. "-pro"] and fam_code .. "-pro" or m_etym_languages_data[fam_code .. "-pro"] and fam_code .. "-pro" if def_anc and def_anc ~= lang:getCode() then return {def_anc} end fam_code = fam[3] end end local function iterate_ancestor(obj, modname, anc_code) local anc = get_language_by_code(anc_code, nil, true) if not anc then discrepancy(modname, "%s lists the invalid language code <code>%s</code> as its ancestor.", link(obj), dump(anc_code) ) return end local anc_fam = anc:getFamily() if not anc_fam then discrepancy(modname, "%s has no family.", link(anc) ) return end local anc_fam_code = anc_fam:getCode() local def_ancs = get_default_ancestors(obj) if def_ancs then for _, def_anc in ipairs(def_ancs) do def_anc = get_language_by_code(def_anc, nil, true) if def_anc and ( anc_code == def_anc:getCode() or has_ancestor(def_anc, anc_code) or def_anc:hasParent(anc_code) and not has_ancestor(anc, def_anc:getCode()) ) then discrepancy(modname, "%s has the ancestor %s listed in its ancestor field, which is redundant, since it is determined to be ancestral automatically.", link(obj), link(anc) ) end end end if not obj:inFamily(anc_fam_code) then discrepancy(modname, "%s has %s set as an ancestor, but is not in the %s.", link(obj), link(anc), link(anc_fam) ) end local fam, proto = obj repeat fam = fam:getFamily() proto = fam and fam:getProtoLanguage() until proto or not fam or fam:getCode() == "qfa-not" if proto and not ( proto:getCode() == anc:getCode() or proto:hasAncestor(anc:getCode()) or anc:hasAncestor(proto:getCode()) ) then local fam = obj:getFamily() discrepancy(modname, "%s is in the %s and has %s set as an ancestor, but it is not possible to form an ancestral chain between them.", link(obj), link(fam), link(anc) ) end end local function check_ancestors(modname, obj, data) local ancestors = data.ancestors if ancestors == nil then return end local ancestors_type = type(ancestors) if ancestors_type == "string" then ancestors = split(ancestors, ",", true, true) elseif ancestors_type ~= "table" then discrepancy(modname, "The <code>ancestors</code> field in the data table for %s must be a string or table, not a %s.", link(obj), ancestors_type ) end for _, anc in ipairs(ancestors) do iterate_ancestor(obj, modname, anc) end end local function check_wikimedia_codes(modname, obj, data) local wikimedia_codes = data.wikimedia_codes if wikimedia_codes == nil then return end local wikimedia_codes_type = type(wikimedia_codes) if wikimedia_codes_type == "string" then wikimedia_codes = split(wikimedia_codes, ",", true, true) elseif wikimedia_codes_type ~= "table" then discrepancy(modname, "The <code>wikimedia_codes</code> field in the data table for %s must be a string or table, not a %s.", link(obj), wikimedia_codes_type ) end for _, code in ipairs(wikimedia_codes) do if not is_known_language_tag(code) then discrepancy(modname, "%s lists the invalid Wikimedia code <code>%s</code> in the <code>wikimedia_codes</code> field.", link(obj), dump(code) ) end end end local function check_code_to_name_and_name_to_code_maps( source_module_type, source_module_description, code_to_module_map, name_to_code_map, code_to_name_modname, code_to_name_module, name_to_code_modname, name_to_code_module ) local function check_code_and_name(modname, code, canonical_name) -- Check the code is in code_to_module_map and that it didn't originate from the wrong data module. local check_mod = code_to_module_map[code] or code_to_module_map[aliases[code]] if not (check_mod and match(check_mod, "^" .. source_module_type .. "/data")) then if not name_to_code_map[canonical_name] then discrepancy(modname, "The code <code>%s</code> and the canonical name %s should be removed; they are not found in %s.", code, canonical_name, source_module_description ) else discrepancy(modname, "<code>%s</code>, the code for the canonical name %s, is wrong; it should be <code>%s</code>.", code, canonical_name, name_to_code_map[canonical_name] ) end elseif not name_to_code_map[canonical_name] then local data_table = require("Module:" .. code_to_module_map[code])[code] discrepancy(modname, "%s, the canonical name for the code <code>%s</code>, is wrong; it should be %s.", canonical_name, code, data_table[1] ) end end for code, canonical_name in pairs(code_to_name_module) do check_code_and_name(code_to_name_modname, code, canonical_name) end for canonical_name, code in pairs(name_to_code_module) do check_code_and_name(name_to_code_modname, code, canonical_name) end end local function check_extraneous_extra_data( data_modname, data_module, extra_data_modname, extra_data_module) for code, _ in pairs(extra_data_module) do if not data_module[code] then discrepancy(extra_data_modname, "The code <code>%s</code> is not found in [[Module:%s]], and should be removed from [[Module:%s]].", code, data_modname, extra_data_modname ) end end end -- TODO: add collision check between the canonical names "X" and "X [Ll]anguage". local function check_languages(frame) local check_language_data_keys = check_data_keys( 1, 2, 3, 4, -- canonical name, Wikidata item, family, scripts "display_text", "generate_forms", "strip_diacritics", "sort_key", "other_names", "aliases", "varieties", "ietf_subtag", "type", "ancestors", "pseudo_families", "wikimedia_codes", "wikipedia_article", "standard_chars", "translit", "override_translit", "link_tr", "dotted_dotless_i" ) local function check_language(modname, code, data, extra_modname, extra_data) local obj, code_modname, canonical_name = make_lang(code, data, true), get_data_module_name(code), data[1] -- FIXME: this module should use the prefixed module name throughout. code_modname = code_modname:gsub("^Module:", "") if code_modname ~= modname then if code_modname == "languages/data/2" then discrepancy(modname, "%s is a two-letter code, so should be moved to [[Module:%s]].", link(obj), code_modname ) elseif code_modname == "languages/data/exceptional" then discrepancy(modname, "%s is an exceptional code, as it does not consist of two or three lowercase letters, so should be moved to [[Module:%s]].", link(obj), code_modname ) else discrepancy(modname, "%s is a three-letter code beginning with '%s', so should be moved to [[Module:%s]].", link(obj), sub(code, 1, 1), code_modname ) end end check_language_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_languages_codes[code] then discrepancy("languages/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end -- TODO: these checks should be consolidated with the proto-language checks in the family data, -- since bad settings there affect the warnings here (e.g. xxx-pro assigned to yyy when xxx also -- doesn't not exist - a warning that xxx has "no family" would be misleading). if sub(code, -4) == "-pro" then local fam_code = sub(code, 1, -5) local fam = get_language_by_code(fam_code, nil, true, true) if not fam then discrepancy(modname, "'''Proto-language with no family''': %s should be the proto-language of <code>%s</code>, which doesn't exist.", link(obj), dump(fam_code) ) elseif not fam:hasType("family") then discrepancy(modname, "'''Proto-language with no family''': %s should be the proto-language of <code>%s</code>, but %s is not a family.", link(obj), dump(fam_code), link(fam) ) else -- Reinstate this as low-priority once message priorities have been implemented. -- local expected_name = "Proto-" .. fam:getCanonicalName() -- if canonical_name ~= expected_name then -- discrepancy(modname, -- "%s does not have the expected name \"%s\", even though it is the proto-language of the %s.", -- link(obj), expected_name, link(fam) -- ) -- end end end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif language_names[canonical_name] then local canonical_lang = get_language_by_canonical_name(canonical_name) if not canonical_lang then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_lang:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), language_names[canonical_name] ) end else if not m_languages_canonical_names[canonical_name] then discrepancy("languages/canonical names", "The canonical name %s is missing.", link(obj) ) end language_names[canonical_name] = code end check_wikidata_item(modname, obj, data, 2) if extra_data then check_other_names_aliases_varieties(modname, obj, extra_data, canonical_name) end local lang_type = data.type if lang_type and not (lang_type == "regular" or lang_type == "reconstructed" or lang_type == "appendix-constructed") then discrepancy(modname, "%s is of the invalid type <code>%s</code>.", link(obj), lang_type ) end if data.aliases then discrepancy(modname, "%s has an <code>aliases</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if data.varieties then discrepancy(modname, "%s has the <code>varieties</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if data.other_names then discrepancy(modname, "%s has the <code>other_names</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if not extra_data then discrepancy(extra_modname, "%s has data in [[Module:%s]], but does not have corresponding data in [[Module:%s]].", link(obj), modname, extra_modname ) --[[elseif extra_data.other_names then discrepancy(extra_modname, "%s has <code>other_names</code> key, but these should be changed to either <code>aliases</code> or <code>varieties</code>.", link(obj) )]] end local sc = data[4] if sc then if type(sc) == "string" then sc = split(sc, "%s*,%s*", true) end if type(sc) == "table" then if not sc[1] then discrepancy(modname, "%s has no scripts listed.", link(obj) ) else for _, sccode in ipairs(sc) do local cur_sc = m_scripts_data[sccode] if not (cur_sc or sccode == "All" or sccode == "Hants") then discrepancy(modname, "%s lists the invalid script code <code>%s</code>.", link(obj), dump(sccode) ) --[[elseif not cur_sc.characters then discrepancy(modname, "%s lists the %s, which does not have any characters.", link(obj), link(get_script_by_code(sccode)) )]] end nonempty_scripts[sccode] = true end end else discrepancy(modname, "The %s field for %s must be a table or string.", 4, link(obj) ) end end if data.ancestors then check_ancestors(modname, obj, data) end if data.wikimedia_codes then check_wikimedia_codes(modname, obj, data) end if data[3] then local family = data[3] if not m_families_data[family] then discrepancy(modname, "%s has the invalid family code <code>%s</code>.", link(obj), dump(family) ) end nonempty_families[family] = true end check_replacements_data(modname, obj, data) if data.standard_chars then if type(data.standard_chars) == "table" then local sccodes = {} for _, sccode in ipairs(sc) do sccodes[sccode] = true end for sccode in pairs(data.standard_chars) do if not (sccodes[sccode] or sccode == 1) then discrepancy(modname, "The field %s in the <code>standard_chars</code> table for %s does not match any script for that language.", sccode, link(obj) ) end end elseif data.standard_chars and type(data.standard_chars) ~= "string" then discrepancy(modname, "The <code>standard_chars</code> field in the data table for %s must be a string or table.", link(obj) ) end end check_true_or_string_or_nil(modname, obj, data, "override_translit") check_true_or_string_or_nil(modname, obj, data, "link_tr") -- This doesn't apply any more since scripts can be script-wide translit methods. -- if data.override_translit and not data.translit then -- discrepancy(modname, -- "%s has the <code>override_translit</code> field set, but no transliteration module", -- link(obj) -- ) -- end end local function check_module(modname) local mod_data = load_data("Module:" .. modname) local extra_modname = modname .. "/extra" local extra_mod_data = load_data("Module:" .. extra_modname) for code, data in pairs(mod_data) do check_language(modname, code, data, extra_modname, extra_mod_data[code]) end check_no_alias_codes(modname, mod_data) check_no_alias_codes(extra_modname, extra_mod_data) check_extraneous_extra_data(modname, mod_data, extra_modname, extra_mod_data) end -- Check two-letter codes check_module( "languages/data/2" ) -- Check three-letter codes for i = 0x61, 0x7A do -- a to z check_module( format("languages/data/3/%c", i) ) end -- Check exceptional codes check_module( "languages/data/exceptional" ) -- These checks must be done while all_codes only contains language codes: -- that is, after language data modules have been processed, but before -- etymology languages, families, and scripts have. check_code_to_name_and_name_to_code_maps( "languages", "a submodule of [[Module:languages]]", all_codes, language_names, "languages/code to canonical name", m_languages_codes, "languages/canonical names", m_languages_canonical_names ) -- Check [[Template:langname-lite]] local modname = "Template:langname-lite" for code, name in gmatch(remove_comments(new_title(modname):getContent()), "\n\t*|#*([^\n]+)=([^\n]*)") do if #code > 1 and code ~= "default" then for _, code in pairs(split(code, "|", true)) do local lang = get_language_by_code(code, nil, true, true) if match(name, "etymcode") then local nonEtym_name = frame:preprocess(name) local nonEtym_real_name = lang:getFullName() if nonEtym_name ~= nonEtym_real_name then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Expected name: %s.", code, nonEtym_name, nonEtym_real_name ) end name = frame:preprocess(gsub(name, "{{{allow etym|}}}", "1")) elseif match(name, "familycode") then name = match(name, "familycode|(.-)|") else name = name end if not lang then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Language not present in data.", code, name ) else local real_name = lang:getCanonicalName() if name ~= real_name then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Expected name: %s.", code, name, real_name ) end end end end end end local function check_etym_languages() local modname = "etymology languages/data" local check_etymology_language_data_keys = check_data_keys( 1, 2, 3, 4, -- canonical name, Wikidata item, family, scripts "parent", "display_text", "generate_forms", "strip_diacritics", "sort_key", "other_names", "aliases", "varieties", "ietf_subtag", "type", "main_code", "ancestors", "pseudo_families", "wikimedia_codes", "wikipedia_article", "standard_chars", "translit", "override_translit", "link_tr", "dotted_dotless_i" ) local checked = {} for code, data in pairs(m_etym_languages_data) do local obj, canonical_name, parent = make_lang(code, data, true), data[1], data.parent check_etymology_language_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_etym_languages_codes[code] then discrepancy("etymology languages/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif language_names[canonical_name] then local canonical_lang = get_language_by_canonical_name(canonical_name, nil, true) if not canonical_lang then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_lang:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), language_names[canonical_name] ) end else if not m_etym_languages_canonical_names[canonical_name] then discrepancy("etymology languages/canonical names", "The canonical name %s is missing.", link(obj) ) end etym_language_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if parent then if type(parent) ~= "string" then discrepancy(modname, "%s has a parent code that is %s rather than a string.", link(obj), parent == nil and "nil" or "a " .. type(parent) ) elseif not (m_languages_data_all[parent] or m_etym_languages_data[parent]) then discrepancy(modname, "%s has the invalid parent code <code>%s</code>%s.", link(obj), dump(parent), m_families_data[parent] and " (a family code)" or "" ) end nonempty_families[parent] = true else discrepancy(modname, "%s has no parent code.", link(obj) ) end if data.ancestors then check_ancestors(modname, obj, data) end if data.wikimedia_codes then check_wikimedia_codes(modname, obj, data) end if data[3] then local family = data[3] if not m_families_data[family] then discrepancy(modname, "%s has the invalid family code <code>%s</code>.", link(obj), dump(family)) end nonempty_families[family] = true end check_replacements_data(modname, obj, data) check_wikidata_item(modname, obj, data, 2) local stack = {} while data do if checked[code] then break elseif stack[code] then local parent = data.parent discrepancy(modname, "%s has a cyclic parental relationship to %s", link(make_lang(code, data, true)), link(get_language_by_code(parent, nil, true)) ) break end stack[code] = true code = data.parent data = m_etym_languages_data[code] end for code in pairs(stack) do checked[code] = true end end check_no_alias_codes(modname, m_etym_languages_data) check_code_to_name_and_name_to_code_maps( "etymology languages", "[[Module:etymology languages/data]]", all_codes, etym_language_names, "etymology languages/code to canonical name", m_etym_languages_codes, "etymology languages/canonical names", m_etym_languages_canonical_names) end -- TODO: add collision check between the canonical names "X" and "X [Ll]anguages". local function check_families() local modname = "families/data" local check_family_data_keys = check_data_keys( 1, 2, 3, -- canonical name, Wikidata item, (parent) family "type", "ietf_subtag", "protoLanguage", "other_names", "aliases", "varieties", "pseudo_families", "categoryName" ) local checked, double_check_if_empty = {["qfa-not"] = true}, {} for code, data in pairs(m_families_data) do local obj, canonical_name, family, protolang = make_family(code, data), data[1], data[3], data.protoLanguage check_family_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_families_codes[code] then discrepancy("families/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif family_names[canonical_name] then local canonical_family = get_family_by_canonical_name(canonical_name) if not canonical_family then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_family:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), family_names[canonical_name] ) end else if not m_families_canonical_names[canonical_name] then discrepancy("families/canonical names", "The canonical name %s is missing.", link(obj) ) end family_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if family then if family == code and code ~= "qfa-not" then discrepancy(modname, "%s has itself as its family.", link(obj) ) elseif not m_families_data[family] then discrepancy(modname, "%s has the invalid parent family code <code>%s</code>.", link(obj), dump(family) ) end nonempty_families[family] = true end if protolang then local protolang_obj = get_language_by_code(protolang, nil, true) if not protolang_obj then discrepancy(modname, "%s has the invalid proto-language code <code>%s</code>.", link(obj), dump(protolang) ) elseif protolang == code .. "-pro" then discrepancy(modname, "%s has %s listed as its proto-language, which is redundant, since it is determined to be the proto-language automatically.", link(obj), link(protolang_obj) ) elseif sub(protolang, -4) == "-pro" then discrepancy(modname, "%s has %s listed as its proto-language, which is supposed to be the proto-language for the family <code>%s</code>.", link(obj), link(protolang_obj), sub(protolang, 1, -5) ) end end check_wikidata_item(modname, obj, data, 2) -- Could be a false-positive if a child family occurs on a later -- iteration, so set aside any that fail for a second check. This avoids -- having to iterate through the whole list of families once -- nonempty_families has been fully populated. if not (nonempty_families[code] or allowed_empty_families[code]) then double_check_if_empty[code] = obj end local stack = {} while data do if checked[code] then break elseif stack[code] then local parent = data[3] discrepancy(modname, "%s has a cyclic familial relationship to %s", link(make_family(code, data)), link(get_family_by_code(parent)) ) break end stack[code] = true code = data[3] data = m_families_data[code] end for code in pairs(stack) do checked[code] = true end end -- Any languages set aside as candidates for having no children are checked -- again, now that nonempty_families is definitely complete. for code, obj in next, double_check_if_empty do if not (nonempty_families[code] or allowed_empty_families[code]) then discrepancy(modname, "%s has no child families or languages.", link(obj) ) end end check_no_alias_codes(modname, m_families_data) check_code_to_name_and_name_to_code_maps( "families", "[[Module:families/data]]", all_codes, family_names, "families/code to canonical name", m_families_codes, "families/canonical names", m_families_canonical_names) end -- TODO: add collision check between the canonical names "X" and "X [Ss]cript". local function check_scripts() local modname = "scripts/data" local check_script_data_keys = check_data_keys( 1, 2, 3, -- canonical name, Wikidata item, writing systems "other_names", "aliases", "varieties", "parent", "ietf_subtag", "type", "wikipedia_article", "ranges", "characters", "spaces", "capitalized", "translit", "direction", "character_category", "normalizationFixes", "sort_by_scraping", "display_text", "sort_key", "strip_diacritics" ) -- Just to satisfy requirements of check_code_to_name_and_name_to_code_maps. local script_code_to_module_map = {} for code, data in pairs(m_scripts_data) do local obj, canonical_name = make_script(code, data), data[1] if not m_scripts_codes[code] and #code == 4 then discrepancy("scripts/code to canonical name", "The code %s is missing", link(obj, true) ) end check_script_data_keys(modname, obj, data) if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif script_names[canonical_name] then local canonical_script = get_script_by_canonical_name(canonical_name) if not canonical_script then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) --[[elseif data.main_code ~= canonical_script:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), script_names[canonical_name] )]] end else if not m_scripts_canonical_names[canonical_name] and #code == 4 then discrepancy("scripts/canonical names", "The canonical name %s is missing.", link(obj) ) end script_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if not nonempty_scripts[code] then discrepancy(modname, "%s is not used by any language%s.", link(obj), data.characters and "" or " and has no characters listed for auto-detection") --[[elseif not data.characters then discrepancy(modname, "%s has no characters listed for auto-detection.", link(obj) )--]] end if data.characters then validate_pattern(data.characters, modname, obj, false) end check_wikidata_item(modname, obj, data, 2) script_code_to_module_map[code] = modname end check_no_alias_codes(modname, m_scripts_data) check_code_to_name_and_name_to_code_maps( "scripts", "a submodule of [[Module:scripts]]", script_code_to_module_map, script_names, "scripts/code to canonical name", m_scripts_codes, "scripts/canonical names", m_scripts_canonical_names) end -- FIXME: this is quite messy. local function check_wikidata_languages() local data = json_decode(new_title("Module:languages/data/wikidata.json"):getContent()) local seen = {{}, {}, {}, [5] = {}} for _, item in ipairs(data) do local id = item.id for k, v in pairs(item) do if k ~= "id" then local _seen = seen[k] for _, code in ipairs(v) do local _code = code[1] local _type = type(_seen[_code]) if _type == "table" then insert(_seen[_code], id) elseif _type == "string" then _seen[_code] = {_seen[_code], id} else _seen[_code] = id end end end end end local modname = "languages/data/wikidata.json" for k, v in pairs(seen) do for code, ids in pairs(v) do if type(ids) == "table" then local t = {} for i, id in ipairs(ids) do t[i] = format("<code>[[d:%s|%s]]</code>", id, id) end discrepancy(modname, "<code>%s</code> is set as an ISO 639-%d code on multiple items: %s.", code, k, list_to_text(t) ) end end end end local function check_labels() local check_label_data_keys = check_data_keys( "display", "Wikipedia", "glossary", "plain_categories", "topical_categories", "pos_categories", "regional_categories", "sense_categories", "omit_preComma", "omit_postComma", "omit_preSpace", "deprecated", "track" ) local function check_label(modname, code, data) local _type = type(data) if _type == "table" then check_label_data_keys(modname, code, data) elseif _type ~= "string" then discrepancy(modname, "The data for the label <code>%s</code> is %s %s; only tables and strings are allowed.", code, add_indefinite_article(_type) ) end end for _, module in ipairs{"", "/regional", "/topical"} do local modname = "Module:labels/data" .. module module = require(modname) for label, data in pairs(module) do check_label(modname, label, data) end end for code in pairs(m_languages_codes) do local modname = "Module:labels/data/lang/" .. code local module = safe_require(modname) if module then for label, data in pairs(module) do check_label(modname, label, data) end end end end local function check_zh_trad_simp() local m_ts = require("Module:zh/data/ts") local m_st = require("Module:zh/data/st") local ruby = require("Module:ja-ruby").ruby_auto local lang = get_language_by_code("zh") local Hant = get_script_by_code("Hant") local Hans = get_script_by_code("Hans") local data = {[0] = m_st, m_ts} local mod = {[0] = "st", "ts"} local var = {[0] = "Simp.", "Trad."} local sc = {[0] = Hans, Hant} local function find_stable_loop(chars, other, j) local display = ruby({["markup"] = "[" .. other .. "](" .. var[(j+1)%2] .. ")"}) display = language_link{term = other, alt = display, lang = lang, sc = sc[(j+1)%2], tr = "-"} insert(chars, display) if data[(j+1)%2][other] == other then insert(chars, other) return chars, 1 elseif not data[(j+1)%2][other] then insert(chars, "not found") return chars, 2 elseif data[j%2][data[(j+1)%2][other]] ~= other then return find_stable_loop(chars, data[(j+1)%2][other], j + 1) else local display = ruby({["markup"] = "[" .. data[(j+1)%2][other] .. "](" .. var[j%2] .. ")"}) display = language_link{term = data[(j+1)%2][other], alt = display, lang = lang, sc = sc[j%2], tr = "-"} insert(chars, display .. " (") display = ruby({["markup"] = "[" .. data[j%2][data[(j+1)%2][other]] .. "](" .. var[(j+1)%2] .. ")"}) display = language_link{term = data[j%2][data[(j+1)%2][other]], alt = display, lang = lang, sc = sc[(j+1)%2], tr = "-"} insert(chars, display .. " etc.)") return chars, 3 end return chars end for i = 0, 1, 1 do for ch, other_ch in pairs(data[i]) do if data[(i+1)%2][other_ch] ~= ch then local chars, issue = {} local display = ruby({["markup"] = "[" .. ch .. "](" .. var[i] .. ")"}) display = language_link{term = ch, alt = display, lang = lang, sc = sc[i], tr = "-"} insert(chars, display) chars, issue = find_stable_loop(chars, other_ch, i) if issue == 1 or issue == 2 then local sc_this, mod_this, j = {} if match(chars[#chars-1], var[(i+1)%2]) then j = 1 else j = 0 end mod_this = mod[(i+j)%2] sc_this = {[0] = sc[(i+j)%2], sc[(i+j+1)%2]} for k, ch in ipairs(chars) do chars[k] = tag_text(ch, lang, sc_this[k%2], "term") end local modname = "zh/data/" .. mod_this if issue == 1 then discrepancy(modname, "character references itself: %s", concat(chars, " → ") ) elseif issue == 2 then discrepancy(modname, "missing character: %s", concat(chars, " → ") ) end elseif issue == 3 then for j, ch in ipairs(chars) do chars[j] = tag_text(ch, lang, sc[(i+j)%2], "term") end discrepancy("zh/data/" .. mod[i], "possible mismatched character: %s", concat(chars, " → ") ) end end end end end local function check_serialization(modname) local serializers = { ["Hani-sortkey/data/serialized"] = "Hani-sortkey/serializer", } if not serializers[modname] then return nil end local serializer = serializers[modname] local current_data = require("Module:" .. serializer).main(true) local stored_data = require("Module:" .. modname) if current_data ~= stored_data then discrepancy(modname, "<strong><u>Important!</u> Serialized data is out of sync. Use [[Module:%s]] to update it. If you have made any changes to the underlying data, the serialized data <u>must</u> be updated before these changes will take effect.</strong>", serializer ) end end local find_code = require("Module:memoize")(function(message) return match(message, "<code>([^<]+)</code>") end) local function compare_messages(message1, message2) local code1, code2 = find_code(message1), find_code(message2) if code1 and code2 then return code1 < code2 else return message1 < message2 end end -- Warning: cannot be called twice in the same module invocation because -- some module-global variables are not reset between calls. local function do_checks(frame, modules) messages = setmetatable({}, messages_mt) if modules["zh/data/ts"] or modules["zh/data/st"] then check_zh_trad_simp() end check_languages(frame) check_etym_languages() -- families and scripts must be checked AFTER languages; languages checks fill out -- the nonempty_families and nonempty_scripts tables, used for testing if a family/script -- is ever used in the data check_families() check_scripts() check_wikidata_languages() if modules["labels/data"] then check_labels() end for module in pairs(modules) do check_serialization(module) end setmetatable(messages, nil) for _, msglist in pairs(messages) do msglist:sort(compare_messages) end local ret = messages messages = nil return ret end local function format_message(modname, msglist) local header; if match(modname, "^Module:") or match(modname, "^Template:") then header = "===[[" .. modname .. "]]===" else header = "===[[Module:" .. modname .. "]]===" end return header .. msglist:map(function(msg) return "\n* " .. msg end):concat() end function export.check_modules_t(frame) local args = frame.args local modules = list_to_set(args) local ret = Array() local messages = do_checks(frame, modules) for _, module in ipairs(args) do local msglist = messages[module] if msglist then ret:insert(format_message(module, msglist)) end end return ret:concat("\n") end function export.perform(frame) local messages = do_checks(frame, {}) -- Format the messages local ret = Array() for modname, msglist in sorted_pairs(messages) do ret:insert(format_message(modname, msglist)) end -- Are there any messages? -- TODO: check how many messages there are. if false then --if i == 1 then return "<b class=\"success\">Glory to Arstotzka.</b>" else ret:insert(1, "<b class=\"warning\">Discrepancies detected:</b>") return ret:concat("\n") end end return export gl7cr7quegesqg20o8ga2k3wf0lzrq0 মডিউল:family tree 828 52287 510605 510582 2026-06-11T02:48:34Z Hiyuune 11971 510605 Scribunto text/plain --[=[ Authors: [[User:kc_kennylau]], [[User:JohnC5]], [[User:Erutuon]], [[User:Suzukaze-c]], [[User:Theknightwho]], [[User:AryamanA]] --]=] local export = {} local regular_languages = require("Module:languages/code to canonical name") local etymology_languages = require("Module:etymology languages/code to canonical name") local families = require("Module:families/code to canonical name") function export.find_subtree(t, code) for _, val in ipairs(t) do if val.name == code then -- "name" is really code return {val} end local result = export.find_subtree(val, code) if result ~= nil then return result end end end local family_icon = "F" local variety_icon = "V" local proto_language_icon = family_icon local family_with_proto_language_icon = family_icon local function format_node(code, is_protolanguage_or_has_protolanguage, options) local canonical_name, category_name, class, icon, tooltip, lemma_count_text if regular_languages[code] then canonical_name = regular_languages[code] category_name = canonical_name:match(" ^ভাষা") and canonical_name or canonical_name .. " ভাষা" class = "familytree-lang" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-protolang' icon = proto_language_icon end -- Add lemma count if the lemma_count option is set and category name exists if options and options.lemma_count and category_name then page_count = mw.site.stats.pagesInCategory( canonical_name .. " লেমা", "pages" ) lemma_count_text = ' (' .. page_count .. ')' end elseif etymology_languages[code] then canonical_name = etymology_languages[code] class = "familytree-etymlang" icon = variety_icon tooltip = "Variety" elseif families[code] then canonical_name = families[code] category_name = (canonical_name:match(" ^ভাষাগোষ্ঠী") or canonical_name:match(" [Ll]ects$")) and canonical_name or canonical_name .. " ভাষাগোষ্ঠী" class = "familytree-family" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-hasprotolang' icon = family_with_proto_language_icon else icon = family_icon end tooltip = "Language family" end return '<span class="' .. class .. '" ' .. (tooltip and 'title="' .. tooltip .. '"' or '') .. '>' .. '[[:Category:' .. (category_name or canonical_name) .. '|' .. canonical_name .. ' <span class="familytree-code">(' .. code .. ')</span>]]' .. (icon and ' <span class="familytree-icon">' .. icon .. '</span>' or '') -- Include lemma count text if available .. (lemma_count_text or '') .. '</span>' end -- If neither options.show_all_families or options.show_etymology_languages is -- falsy, then this function does nothing. local function filter_nested_data(nested_data, options, protolanguage_of, is_protolanguage) if not nested_data then -- ??? return nil else local name = nested_data.name local first_child = nested_data[1] -- This indicates that new_nested_data below should only be returned -- if it contains non-etymology languages. local check_for_non_etymology_children = false -- If `show_all_families` is false and this is a family and its only -- child is its proto-language, then replace the family with the -- proto-language. if options.hide_families_with_protolanguages and name and families[name] and first_child and not nested_data[2] and protolanguage_of[name] == first_child.name then is_protolanguage[first_child.name] = true return filter_nested_data(first_child, options, protolanguage_of, is_protolanguage) elseif options.hide_etymology_languages and etymology_languages[name] then if nested_data[1] then check_for_non_etymology_children = true else return nil end end local new_nested_data = { name = name } local i = 0 for _, subtable in ipairs(nested_data) do subtable = filter_nested_data(subtable, options, protolanguage_of, is_protolanguage) if subtable then i = i + 1 new_nested_data[i] = subtable end end if not check_for_non_etymology_children or new_nested_data[1] then return new_nested_data end end end local function make_node(code, is_protolanguage, protolanguage_of, options) return '</span> ' .. format_node(code, is_protolanguage[code] or protolanguage_of[code] ~= nil, options) end local function only_child_is_protolanguage(tree, options, protolanguage_of) return (options.family_under_protolanguage or options.protolanguage_under_family) and tree[1] and protolanguage_of[tree.name] == tree[1].name end export.are_all_children_etymology_languages = require("Module:memoize")(function (nested_data) if not nested_data[1] then return nil end for _, child in ipairs(nested_data) do if not etymology_languages[child.name] or export.are_all_children_etymology_languages(child) == false then return false end end return true end) local customcollapsible_number = 0 local customcollapsible_prefix = "familytree" local function get_customcollapsible_id() customcollapsible_number = customcollapsible_number + 1 return customcollapsible_prefix .. customcollapsible_number end local no_break_space = "\194\160" local level_separator = (no_break_space):rep(3) local expandtext, collapsetext = "[+]─", "[-]┬" local function make_tree(data, is_protolanguage, protolanguage_of, options, prefix) local result = {} local function ins(val) table.insert(result, val) end -- This tag is closed in the node generated by make_node. prefix = prefix or '<span class="familytree-linedrawing">' local branch = "├" local next_level = prefix .. "│" .. level_separator local length = #data for i, val in ipairs(data) do if i == length then branch = "└" next_level = prefix .. level_separator .. no_break_space end local code = val.name local language_or_family_node = make_node(code, is_protolanguage, protolanguage_of, options) if not val[1] then ins('<li>' .. prefix .. branch .. options.sterile_branch_text .. language_or_family_node .. '</li>') else local customcollapsible_id = get_customcollapsible_id() ins('<li>' .. prefix .. branch .. '<span class="familytree-toggle mw-customtoggle-' .. customcollapsible_id .. '">───┬</span>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(val, options, protolanguage_of) local top_node if flag then code = val[1].name val = val[1] top_node = make_node(code, is_protolanguage, protolanguage_of, options) if options.protolanguage_under_family then top_node, language_or_family_node = language_or_family_node, top_node end end local all_children_are_etymology_languages = export.are_all_children_etymology_languages(val) local collapsible_ul = '<ul class="mw-collapsible' .. (all_children_are_etymology_languages and ' familytree-only-etym-children' or '') .. '" ' .. 'id="mw-customcollapsible-' .. customcollapsible_id .. '" data-expandtext="' .. expandtext .. '" data-collapsetext="' .. collapsetext .. '">' if flag then ins(top_node .. collapsible_ul .. '<li>' .. prefix .. (i == length and no_break_space or "│") .. level_separator .. "│") end ins(language_or_family_node) if not flag then ins(collapsible_ul) end -- Can't get default collapsibility script to apply the data-expandtext -- and data-collapsetext attribute values to the custom toggle, -- so have to have a custom script do it. ins(make_tree(val, is_protolanguage, protolanguage_of, options, next_level)) ins('</ul></li>') end end return table.concat(result) end local function get_number_parameter_in_range(args, arg, low, high) local val = args[arg] if val == "" or val == nil then val = nil else val = tonumber(val) if not (type(val) == "number" and 0 <= val and val <= 6) then error("Expected nothing or number between " .. low .. " and " .. high .. " in parameter |" .. arg .. "=.") end end return val end function export.show(frame) local args = frame.args local descendants_of = args[1] local to_boolean = require("Module:yesno") -- Determines whether families that have proto-languages will be shown. local show_all_families = to_boolean(args[2] or args.fam) -- Determines whether all etymology languages will be shown. local show_etymology_languages = to_boolean(args[3] or args.etym) -- Get the value for lemma_count argument local lemma_count = to_boolean(args.lemma_count) -- help! parameter name too long! local sterile_branch_length = get_number_parameter_in_range(args, "sterile_branch_length", 0, 6) -- Determines whether (if all families are shown) a family will be shown -- on a line directly under and at the same level as its proto-language, -- or the proto-language on a line directly under and at the same level as -- its family. local family_under_protolanguage = to_boolean(args.famunderproto) local protolanguage_under_family = to_boolean(args.protounderfam) if family_under_protolanguage and protolanguage_under_family then error("Kindly choose between proto-language under family and family under proto-language.") end return export.print_children(descendants_of, { hide_families_with_protolanguages = not show_all_families, hide_etymology_languages = not show_etymology_languages, family_under_protolanguage = family_under_protolanguage, protolanguage_under_family = protolanguage_under_family, sterile_branch_length = sterile_branch_length, collapsed = require("Module:yesno")(args.collapsed), lemma_count = lemma_count }) end function export.print_children(descendants_of, options) local m_languages = require("Module:languages") local m_table = require("Module:table") local make_auto_subtabler = require("Module:auto-subtable") descendants_of = m_languages.getByCode(descendants_of, nil, true, true) local names = {} local protolanguage_of = {} local children = make_auto_subtabler{} local descendants = descendants_of:getDescendantCodes() table.insert(descendants, descendants_of:getCode()) if descendants_of:hasType("family") then protolanguage_of[descendants_of:getCode()] = descendants_of:getProtoLanguageCode() end local memoized = {} local get = function(code, func, ...) local ret = memoized[code] or func(...) if code then memoized[code] = ret end return ret end for _, descendant_code in ipairs(descendants) do -- Inner "repeat until true" loop allows break to work like continue, as it will always only run once. repeat local descendant = get(descendant_code, m_languages.getByCode, descendant_code, nil, true, true) names[descendant_code] = descendant:getCanonicalName():gsub("Proto%-", "") if descendant:hasType("language") then local ancestors = m_table.shallowCopy(descendant:getAncestorCodes()) local parent_code = descendant:getParentCode() if parent_code and descendant:hasType("etymology-only") then local parent = get(parent_code, descendant.getParent, descendant) if m_table.deepEquals(parent:getAncestorCodes(), ancestors) and descendant:getFamilyCode() == parent:getFamilyCode() then table.insert(children[parent:getCode()], descendant_code) break end end if #ancestors > 0 then for _, ancestor in ipairs(ancestors) do table.insert(children[ancestor], descendant_code) end break end else local protolang = descendant:getProtoLanguageCode() protolanguage_of[descendant_code] = protolang if protolang and descendant:hasAncestor(protolang) then table.insert(children[protolang], descendant_code) break end end local family_code = descendant:getFamilyCode() if family_code then local family = get(family_code, descendant.getFamily, descendant) local protolang = get(family:getProtoLanguageCode(), family.getProtoLanguage, family) if not protolanguage_of[family] then protolanguage_of[family] = protolang and protolang:getCode() end if protolang and protolang:inFamily(family) and protolang:getCode() ~= descendant_code then table.insert(children[protolang:getCode()], descendant_code) else table.insert(children[family:getCode()], descendant_code) end end until true end -- No more auto subtabling needed. children = children:un_auto_subtable() -- Copy to new table, to filter out unwanted ancestors from descendants with multiple ancestors, where some are not descendants of the target language. local parent_to_children_map = {} for _, code in ipairs(descendants) do parent_to_children_map[code] = children[code] end local function make_nested(data, children) local make_nil = {} for key, val in pairs(data) do if type(key) == "number" then if children[val] then data[val] = make_nested(children[val], children) table.insert(make_nil, key) end else data[key] = make_nested(val, children) end end if make_nil[2] then -- Make sure larger keys are removed first. table.sort(make_nil, function (a, b) return a > b end) end for _, key in ipairs(make_nil) do table.remove(data, key) end return data end local nested = make_nested(parent_to_children_map, parent_to_children_map) local function deep_sort(current) local result = {} local is_table = {} for key, val in pairs(current) do if type(key) == "number" then table.insert(result, val) else is_table[key] = true table.insert(result, key) end end table.sort(result, function(code1, code2) return names[code1] < names[code2] end) for i = 1, #result do if is_table[result[i]] then local name = result[i] result[i] = deep_sort(current[result[i]]) result[i].name = name else result[i] = { name = result[i] } end end return result end nested = deep_sort(nested) data = { nested = nested, protolanguage_of = protolanguage_of } local nested_data, protolanguage_of = data.nested, data.protolanguage_of nested_data = export.find_subtree(nested_data, descendants_of:getCode()) -- Return nil instead of a tree with only the root node. if options.must_have_descendants and (nested_data == nil or #nested_data == 0 or nested_data[1] and #nested_data[1] == 0) then return nil end local is_protolanguage = {} if options.hide_families_with_protolanguages or options.hide_etymology_languages then nested_data = filter_nested_data(nested_data, { hide_families_with_protolanguages = options.hide_families_with_protolanguages, hide_etymology_languages = options.hide_etymology_languages, }, protolanguage_of, is_protolanguage) end if not nested_data or not next(nested_data) then return nil end local result = {'<div class="familytree"><ul>'} local function ins(val) table.insert(result, val) end local tree_options = { sterile_branch_text = '<span class="familytree-branch">' .. ("─"):rep(options.sterile_branch_length or 4) .. '</span>', family_under_protolanguage = options.family_under_protolanguage, protolanguage_under_family = options.protolanguage_under_family, lemma_count = options.lemma_count, } local collapsetext, expandtext = 'Collapse', 'Expand' for i, subtable in ipairs(nested_data) do -- top language name ins('<li>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(subtable, options, protolanguage_of) local top_node = format_node(subtable.name) local next_node if flag then subtable = subtable[1] next_node = format_node(subtable.name) if options.family_under_protolanguage then top_node, next_node = next_node, top_node end end ins(top_node) -- top toggle local customcollapsible_id = get_customcollapsible_id() ins('<span class="familytree-toptoggle mw-customtoggle-' .. customcollapsible_id .. '" style="display: none;">') ins(options.collapsed and expandtext or collapsetext) ins('</span>') if flag then ins('<li>') ins(next_node) end -- tree ins('<ul class="mw-collapsible') if options.collapsed then ins(' mw-collapsed') end ins('" id="mw-customcollapsible-' .. customcollapsible_id) ins('" data-expandtext="' .. expandtext) ins('" data-collapsetext="' .. collapsetext .. '">') ins(make_tree(subtable, is_protolanguage, protolanguage_of, tree_options)) if flag then ins('</li>') end ins('</ul></li>') end ins('</ul></div>') ins(require("Module:TemplateStyles")("Module:family tree/style.css")) return table.concat(result) end return export i213tgxlahiix1i70ec4soxtsg5att3 510612 510605 2026-06-11T02:54:11Z Hiyuune 11971 Restored revision 510582 by [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|talk]]) (TwinkleGlobal) 510612 Scribunto text/plain --[=[ Authors: [[User:kc_kennylau]], [[User:JohnC5]], [[User:Erutuon]], [[User:Suzukaze-c]], [[User:Theknightwho]], [[User:AryamanA]] --]=] local export = {} local regular_languages = require("Module:languages/code to canonical name") local etymology_languages = require("Module:etymology languages/code to canonical name") local families = require("Module:families/code to canonical name") function export.find_subtree(t, code) for _, val in ipairs(t) do if val.name == code then -- "name" is really code return {val} end local result = export.find_subtree(val, code) if result ~= nil then return result end end end local family_icon = "F" local variety_icon = "V" local proto_language_icon = family_icon local family_with_proto_language_icon = family_icon local function format_node(code, is_protolanguage_or_has_protolanguage, options) local canonical_name, category_name, class, icon, tooltip, lemma_count_text if regular_languages[code] then canonical_name = regular_languages[code] category_name = canonical_name:match(" ^ভাষা") and canonical_name or canonical_name .. " ভাষা" class = "familytree-lang" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-protolang' icon = proto_language_icon end -- Add lemma count if the lemma_count option is set and category name exists if options and options.lemma_count and category_name then page_count = mw.site.stats.pagesInCategory( canonical_name .. " লেমা", "pages" ) lemma_count_text = ' (' .. page_count .. ')' end elseif etymology_languages[code] then canonical_name = etymology_languages[code] class = "familytree-etymlang" icon = variety_icon tooltip = "Variety" elseif families[code] then canonical_name = families[code] category_name = (canonical_name:match(" [Ll]anguages$") or canonical_name:match(" [Ll]ects$")) and canonical_name or canonical_name .. " languages" class = "familytree-family" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-hasprotolang' icon = family_with_proto_language_icon else icon = family_icon end tooltip = "Language family" end return '<span class="' .. class .. '" ' .. (tooltip and 'title="' .. tooltip .. '"' or '') .. '>' .. '[[:Category:' .. (category_name or canonical_name) .. '|' .. canonical_name .. ' <span class="familytree-code">(' .. code .. ')</span>]]' .. (icon and ' <span class="familytree-icon">' .. icon .. '</span>' or '') -- Include lemma count text if available .. (lemma_count_text or '') .. '</span>' end -- If neither options.show_all_families or options.show_etymology_languages is -- falsy, then this function does nothing. local function filter_nested_data(nested_data, options, protolanguage_of, is_protolanguage) if not nested_data then -- ??? return nil else local name = nested_data.name local first_child = nested_data[1] -- This indicates that new_nested_data below should only be returned -- if it contains non-etymology languages. local check_for_non_etymology_children = false -- If `show_all_families` is false and this is a family and its only -- child is its proto-language, then replace the family with the -- proto-language. if options.hide_families_with_protolanguages and name and families[name] and first_child and not nested_data[2] and protolanguage_of[name] == first_child.name then is_protolanguage[first_child.name] = true return filter_nested_data(first_child, options, protolanguage_of, is_protolanguage) elseif options.hide_etymology_languages and etymology_languages[name] then if nested_data[1] then check_for_non_etymology_children = true else return nil end end local new_nested_data = { name = name } local i = 0 for _, subtable in ipairs(nested_data) do subtable = filter_nested_data(subtable, options, protolanguage_of, is_protolanguage) if subtable then i = i + 1 new_nested_data[i] = subtable end end if not check_for_non_etymology_children or new_nested_data[1] then return new_nested_data end end end local function make_node(code, is_protolanguage, protolanguage_of, options) return '</span> ' .. format_node(code, is_protolanguage[code] or protolanguage_of[code] ~= nil, options) end local function only_child_is_protolanguage(tree, options, protolanguage_of) return (options.family_under_protolanguage or options.protolanguage_under_family) and tree[1] and protolanguage_of[tree.name] == tree[1].name end export.are_all_children_etymology_languages = require("Module:memoize")(function (nested_data) if not nested_data[1] then return nil end for _, child in ipairs(nested_data) do if not etymology_languages[child.name] or export.are_all_children_etymology_languages(child) == false then return false end end return true end) local customcollapsible_number = 0 local customcollapsible_prefix = "familytree" local function get_customcollapsible_id() customcollapsible_number = customcollapsible_number + 1 return customcollapsible_prefix .. customcollapsible_number end local no_break_space = "\194\160" local level_separator = (no_break_space):rep(3) local expandtext, collapsetext = "[+]─", "[-]┬" local function make_tree(data, is_protolanguage, protolanguage_of, options, prefix) local result = {} local function ins(val) table.insert(result, val) end -- This tag is closed in the node generated by make_node. prefix = prefix or '<span class="familytree-linedrawing">' local branch = "├" local next_level = prefix .. "│" .. level_separator local length = #data for i, val in ipairs(data) do if i == length then branch = "└" next_level = prefix .. level_separator .. no_break_space end local code = val.name local language_or_family_node = make_node(code, is_protolanguage, protolanguage_of, options) if not val[1] then ins('<li>' .. prefix .. branch .. options.sterile_branch_text .. language_or_family_node .. '</li>') else local customcollapsible_id = get_customcollapsible_id() ins('<li>' .. prefix .. branch .. '<span class="familytree-toggle mw-customtoggle-' .. customcollapsible_id .. '">───┬</span>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(val, options, protolanguage_of) local top_node if flag then code = val[1].name val = val[1] top_node = make_node(code, is_protolanguage, protolanguage_of, options) if options.protolanguage_under_family then top_node, language_or_family_node = language_or_family_node, top_node end end local all_children_are_etymology_languages = export.are_all_children_etymology_languages(val) local collapsible_ul = '<ul class="mw-collapsible' .. (all_children_are_etymology_languages and ' familytree-only-etym-children' or '') .. '" ' .. 'id="mw-customcollapsible-' .. customcollapsible_id .. '" data-expandtext="' .. expandtext .. '" data-collapsetext="' .. collapsetext .. '">' if flag then ins(top_node .. collapsible_ul .. '<li>' .. prefix .. (i == length and no_break_space or "│") .. level_separator .. "│") end ins(language_or_family_node) if not flag then ins(collapsible_ul) end -- Can't get default collapsibility script to apply the data-expandtext -- and data-collapsetext attribute values to the custom toggle, -- so have to have a custom script do it. ins(make_tree(val, is_protolanguage, protolanguage_of, options, next_level)) ins('</ul></li>') end end return table.concat(result) end local function get_number_parameter_in_range(args, arg, low, high) local val = args[arg] if val == "" or val == nil then val = nil else val = tonumber(val) if not (type(val) == "number" and 0 <= val and val <= 6) then error("Expected nothing or number between " .. low .. " and " .. high .. " in parameter |" .. arg .. "=.") end end return val end function export.show(frame) local args = frame.args local descendants_of = args[1] local to_boolean = require("Module:yesno") -- Determines whether families that have proto-languages will be shown. local show_all_families = to_boolean(args[2] or args.fam) -- Determines whether all etymology languages will be shown. local show_etymology_languages = to_boolean(args[3] or args.etym) -- Get the value for lemma_count argument local lemma_count = to_boolean(args.lemma_count) -- help! parameter name too long! local sterile_branch_length = get_number_parameter_in_range(args, "sterile_branch_length", 0, 6) -- Determines whether (if all families are shown) a family will be shown -- on a line directly under and at the same level as its proto-language, -- or the proto-language on a line directly under and at the same level as -- its family. local family_under_protolanguage = to_boolean(args.famunderproto) local protolanguage_under_family = to_boolean(args.protounderfam) if family_under_protolanguage and protolanguage_under_family then error("Kindly choose between proto-language under family and family under proto-language.") end return export.print_children(descendants_of, { hide_families_with_protolanguages = not show_all_families, hide_etymology_languages = not show_etymology_languages, family_under_protolanguage = family_under_protolanguage, protolanguage_under_family = protolanguage_under_family, sterile_branch_length = sterile_branch_length, collapsed = require("Module:yesno")(args.collapsed), lemma_count = lemma_count }) end function export.print_children(descendants_of, options) local m_languages = require("Module:languages") local m_table = require("Module:table") local make_auto_subtabler = require("Module:auto-subtable") descendants_of = m_languages.getByCode(descendants_of, nil, true, true) local names = {} local protolanguage_of = {} local children = make_auto_subtabler{} local descendants = descendants_of:getDescendantCodes() table.insert(descendants, descendants_of:getCode()) if descendants_of:hasType("family") then protolanguage_of[descendants_of:getCode()] = descendants_of:getProtoLanguageCode() end local memoized = {} local get = function(code, func, ...) local ret = memoized[code] or func(...) if code then memoized[code] = ret end return ret end for _, descendant_code in ipairs(descendants) do -- Inner "repeat until true" loop allows break to work like continue, as it will always only run once. repeat local descendant = get(descendant_code, m_languages.getByCode, descendant_code, nil, true, true) names[descendant_code] = descendant:getCanonicalName():gsub("Proto%-", "") if descendant:hasType("language") then local ancestors = m_table.shallowCopy(descendant:getAncestorCodes()) local parent_code = descendant:getParentCode() if parent_code and descendant:hasType("etymology-only") then local parent = get(parent_code, descendant.getParent, descendant) if m_table.deepEquals(parent:getAncestorCodes(), ancestors) and descendant:getFamilyCode() == parent:getFamilyCode() then table.insert(children[parent:getCode()], descendant_code) break end end if #ancestors > 0 then for _, ancestor in ipairs(ancestors) do table.insert(children[ancestor], descendant_code) end break end else local protolang = descendant:getProtoLanguageCode() protolanguage_of[descendant_code] = protolang if protolang and descendant:hasAncestor(protolang) then table.insert(children[protolang], descendant_code) break end end local family_code = descendant:getFamilyCode() if family_code then local family = get(family_code, descendant.getFamily, descendant) local protolang = get(family:getProtoLanguageCode(), family.getProtoLanguage, family) if not protolanguage_of[family] then protolanguage_of[family] = protolang and protolang:getCode() end if protolang and protolang:inFamily(family) and protolang:getCode() ~= descendant_code then table.insert(children[protolang:getCode()], descendant_code) else table.insert(children[family:getCode()], descendant_code) end end until true end -- No more auto subtabling needed. children = children:un_auto_subtable() -- Copy to new table, to filter out unwanted ancestors from descendants with multiple ancestors, where some are not descendants of the target language. local parent_to_children_map = {} for _, code in ipairs(descendants) do parent_to_children_map[code] = children[code] end local function make_nested(data, children) local make_nil = {} for key, val in pairs(data) do if type(key) == "number" then if children[val] then data[val] = make_nested(children[val], children) table.insert(make_nil, key) end else data[key] = make_nested(val, children) end end if make_nil[2] then -- Make sure larger keys are removed first. table.sort(make_nil, function (a, b) return a > b end) end for _, key in ipairs(make_nil) do table.remove(data, key) end return data end local nested = make_nested(parent_to_children_map, parent_to_children_map) local function deep_sort(current) local result = {} local is_table = {} for key, val in pairs(current) do if type(key) == "number" then table.insert(result, val) else is_table[key] = true table.insert(result, key) end end table.sort(result, function(code1, code2) return names[code1] < names[code2] end) for i = 1, #result do if is_table[result[i]] then local name = result[i] result[i] = deep_sort(current[result[i]]) result[i].name = name else result[i] = { name = result[i] } end end return result end nested = deep_sort(nested) data = { nested = nested, protolanguage_of = protolanguage_of } local nested_data, protolanguage_of = data.nested, data.protolanguage_of nested_data = export.find_subtree(nested_data, descendants_of:getCode()) -- Return nil instead of a tree with only the root node. if options.must_have_descendants and (nested_data == nil or #nested_data == 0 or nested_data[1] and #nested_data[1] == 0) then return nil end local is_protolanguage = {} if options.hide_families_with_protolanguages or options.hide_etymology_languages then nested_data = filter_nested_data(nested_data, { hide_families_with_protolanguages = options.hide_families_with_protolanguages, hide_etymology_languages = options.hide_etymology_languages, }, protolanguage_of, is_protolanguage) end if not nested_data or not next(nested_data) then return nil end local result = {'<div class="familytree"><ul>'} local function ins(val) table.insert(result, val) end local tree_options = { sterile_branch_text = '<span class="familytree-branch">' .. ("─"):rep(options.sterile_branch_length or 4) .. '</span>', family_under_protolanguage = options.family_under_protolanguage, protolanguage_under_family = options.protolanguage_under_family, lemma_count = options.lemma_count, } local collapsetext, expandtext = 'Collapse', 'Expand' for i, subtable in ipairs(nested_data) do -- top language name ins('<li>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(subtable, options, protolanguage_of) local top_node = format_node(subtable.name) local next_node if flag then subtable = subtable[1] next_node = format_node(subtable.name) if options.family_under_protolanguage then top_node, next_node = next_node, top_node end end ins(top_node) -- top toggle local customcollapsible_id = get_customcollapsible_id() ins('<span class="familytree-toptoggle mw-customtoggle-' .. customcollapsible_id .. '" style="display: none;">') ins(options.collapsed and expandtext or collapsetext) ins('</span>') if flag then ins('<li>') ins(next_node) end -- tree ins('<ul class="mw-collapsible') if options.collapsed then ins(' mw-collapsed') end ins('" id="mw-customcollapsible-' .. customcollapsible_id) ins('" data-expandtext="' .. expandtext) ins('" data-collapsetext="' .. collapsetext .. '">') ins(make_tree(subtable, is_protolanguage, protolanguage_of, tree_options)) if flag then ins('</li>') end ins('</ul></li>') end ins('</ul></div>') ins(require("Module:TemplateStyles")("Module:family tree/style.css")) return table.concat(result) end return export sozrb5tyi3h1z8yut0irh1cxi0ocehh 510613 510612 2026-06-11T02:54:55Z Hiyuune 11971 Restored revision 323367 by [[Special:Contributions/Aishik Rehman|Aishik Rehman]] ([[User talk:Aishik Rehman|talk]]) (TwinkleGlobal) 510613 Scribunto text/plain --[=[ Authors: [[User:kc_kennylau]], [[User:JohnC5]], [[User:Erutuon]], [[User:Suzukaze-c]], [[User:Theknightwho]], [[User:AryamanA]] --]=] local export = {} local regular_languages = require("Module:languages/code to canonical name") local etymology_languages = require("Module:etymology languages/code to canonical name") local families = require("Module:families/code to canonical name") function export.find_subtree(t, code) for _, val in ipairs(t) do if val.name == code then -- "name" is really code return {val} end local result = export.find_subtree(val, code) if result ~= nil then return result end end end local family_icon = "F" local variety_icon = "V" local proto_language_icon = family_icon local family_with_proto_language_icon = family_icon local function format_node(code, is_protolanguage_or_has_protolanguage, options) local canonical_name, category_name, class, icon, tooltip, lemma_count_text if regular_languages[code] then canonical_name = regular_languages[code] category_name = canonical_name:match(" [Ll]anguage$") and canonical_name or canonical_name .. " language" class = "familytree-lang" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-protolang' icon = proto_language_icon end -- Add lemma count if the lemma_count option is set and category name exists if options and options.lemma_count and category_name then page_count = mw.site.stats.pagesInCategory( canonical_name .. " lemmas", "pages" ) lemma_count_text = ' (' .. page_count .. ')' end elseif etymology_languages[code] then canonical_name = etymology_languages[code] class = "familytree-etymlang" icon = variety_icon tooltip = "Variety" elseif families[code] then canonical_name = families[code] category_name = (canonical_name:match(" [Ll]anguages$") or canonical_name:match(" [Ll]ects$")) and canonical_name or canonical_name .. " languages" class = "familytree-family" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-hasprotolang' icon = family_with_proto_language_icon else icon = family_icon end tooltip = "Language family" end return '<span class="' .. class .. '" ' .. (tooltip and 'title="' .. tooltip .. '"' or '') .. '>' .. '[[:Category:' .. (category_name or canonical_name) .. '|' .. canonical_name .. ' <span class="familytree-code">(' .. code .. ')</span>]]' .. (icon and ' <span class="familytree-icon">' .. icon .. '</span>' or '') -- Include lemma count text if available .. (lemma_count_text or '') .. '</span>' end -- If neither options.show_all_families or options.show_etymology_languages is -- falsy, then this function does nothing. local function filter_nested_data(nested_data, options, protolanguage_of, is_protolanguage) if not nested_data then -- ??? return nil else local name = nested_data.name local first_child = nested_data[1] -- This indicates that new_nested_data below should only be returned -- if it contains non-etymology languages. local check_for_non_etymology_children = false -- If `show_all_families` is false and this is a family and its only -- child is its proto-language, then replace the family with the -- proto-language. if options.hide_families_with_protolanguages and name and families[name] and first_child and not nested_data[2] and protolanguage_of[name] == first_child.name then is_protolanguage[first_child.name] = true return filter_nested_data(first_child, options, protolanguage_of, is_protolanguage) elseif options.hide_etymology_languages and etymology_languages[name] then if nested_data[1] then check_for_non_etymology_children = true else return nil end end local new_nested_data = { name = name } local i = 0 for _, subtable in ipairs(nested_data) do subtable = filter_nested_data(subtable, options, protolanguage_of, is_protolanguage) if subtable then i = i + 1 new_nested_data[i] = subtable end end if not check_for_non_etymology_children or new_nested_data[1] then return new_nested_data end end end local function make_node(code, is_protolanguage, protolanguage_of, options) return '</span> ' .. format_node(code, is_protolanguage[code] or protolanguage_of[code] ~= nil, options) end local function only_child_is_protolanguage(tree, options, protolanguage_of) return (options.family_under_protolanguage or options.protolanguage_under_family) and tree[1] and protolanguage_of[tree.name] == tree[1].name end export.are_all_children_etymology_languages = require("Module:memoize")(function (nested_data) if not nested_data[1] then return nil end for _, child in ipairs(nested_data) do if not etymology_languages[child.name] or export.are_all_children_etymology_languages(child) == false then return false end end return true end) local customcollapsible_number = 0 local customcollapsible_prefix = "familytree" local function get_customcollapsible_id() customcollapsible_number = customcollapsible_number + 1 return customcollapsible_prefix .. customcollapsible_number end local no_break_space = "\194\160" local level_separator = (no_break_space):rep(3) local expandtext, collapsetext = "[+]─", "[-]┬" local function make_tree(data, is_protolanguage, protolanguage_of, options, prefix) local result = {} local function ins(val) table.insert(result, val) end -- This tag is closed in the node generated by make_node. prefix = prefix or '<span class="familytree-linedrawing">' local branch = "├" local next_level = prefix .. "│" .. level_separator local length = #data for i, val in ipairs(data) do if i == length then branch = "└" next_level = prefix .. level_separator .. no_break_space end local code = val.name local language_or_family_node = make_node(code, is_protolanguage, protolanguage_of, options) if not val[1] then ins('<li>' .. prefix .. branch .. options.sterile_branch_text .. language_or_family_node .. '</li>') else local customcollapsible_id = get_customcollapsible_id() ins('<li>' .. prefix .. branch .. '<span class="familytree-toggle mw-customtoggle-' .. customcollapsible_id .. '">───┬</span>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(val, options, protolanguage_of) local top_node if flag then code = val[1].name val = val[1] top_node = make_node(code, is_protolanguage, protolanguage_of, options) if options.protolanguage_under_family then top_node, language_or_family_node = language_or_family_node, top_node end end local all_children_are_etymology_languages = export.are_all_children_etymology_languages(val) local collapsible_ul = '<ul class="mw-collapsible' .. (all_children_are_etymology_languages and ' familytree-only-etym-children' or '') .. '" ' .. 'id="mw-customcollapsible-' .. customcollapsible_id .. '" data-expandtext="' .. expandtext .. '" data-collapsetext="' .. collapsetext .. '">' if flag then ins(top_node .. collapsible_ul .. '<li>' .. prefix .. (i == length and no_break_space or "│") .. level_separator .. "│") end ins(language_or_family_node) if not flag then ins(collapsible_ul) end -- Can't get default collapsibility script to apply the data-expandtext -- and data-collapsetext attribute values to the custom toggle, -- so have to have a custom script do it. ins(make_tree(val, is_protolanguage, protolanguage_of, options, next_level)) ins('</ul></li>') end end return table.concat(result) end local function get_number_parameter_in_range(args, arg, low, high) local val = args[arg] if val == "" or val == nil then val = nil else val = tonumber(val) if not (type(val) == "number" and 0 <= val and val <= 6) then error("Expected nothing or number between " .. low .. " and " .. high .. " in parameter |" .. arg .. "=.") end end return val end function export.show(frame) local args = frame.args local descendants_of = args[1] local to_boolean = require("Module:yesno") -- Determines whether families that have proto-languages will be shown. local show_all_families = to_boolean(args[2] or args.fam) -- Determines whether all etymology languages will be shown. local show_etymology_languages = to_boolean(args[3] or args.etym) -- Get the value for lemma_count argument local lemma_count = to_boolean(args.lemma_count) -- help! parameter name too long! local sterile_branch_length = get_number_parameter_in_range(args, "sterile_branch_length", 0, 6) -- Determines whether (if all families are shown) a family will be shown -- on a line directly under and at the same level as its proto-language, -- or the proto-language on a line directly under and at the same level as -- its family. local family_under_protolanguage = to_boolean(args.famunderproto) local protolanguage_under_family = to_boolean(args.protounderfam) if family_under_protolanguage and protolanguage_under_family then error("Kindly choose between proto-language under family and family under proto-language.") end return export.print_children(descendants_of, { hide_families_with_protolanguages = not show_all_families, hide_etymology_languages = not show_etymology_languages, family_under_protolanguage = family_under_protolanguage, protolanguage_under_family = protolanguage_under_family, sterile_branch_length = sterile_branch_length, collapsed = require("Module:yesno")(args.collapsed), lemma_count = lemma_count }) end function export.print_children(descendants_of, options) local m_languages = require("Module:languages") local m_table = require("Module:table") local make_auto_subtabler = require("Module:auto-subtable") descendants_of = m_languages.getByCode(descendants_of, nil, true, true) local names = {} local protolanguage_of = {} local children = make_auto_subtabler{} local descendants = descendants_of:getDescendantCodes() table.insert(descendants, descendants_of:getCode()) if descendants_of:hasType("family") then protolanguage_of[descendants_of:getCode()] = descendants_of:getProtoLanguageCode() end local memoized = {} local get = function(code, func, ...) local ret = memoized[code] or func(...) if code then memoized[code] = ret end return ret end for _, descendant_code in ipairs(descendants) do -- Inner "repeat until true" loop allows break to work like continue, as it will always only run once. repeat local descendant = get(descendant_code, m_languages.getByCode, descendant_code, nil, true, true) names[descendant_code] = descendant:getCanonicalName():gsub("Proto%-", "") if descendant:hasType("language") then local ancestors = m_table.shallowCopy(descendant:getAncestorCodes()) local parent_code = descendant:getParentCode() if parent_code and descendant:hasType("etymology-only") then local parent = get(parent_code, descendant.getParent, descendant) if m_table.deepEquals(parent:getAncestorCodes(), ancestors) and descendant:getFamilyCode() == parent:getFamilyCode() then table.insert(children[parent:getCode()], descendant_code) break end end if #ancestors > 0 then for _, ancestor in ipairs(ancestors) do table.insert(children[ancestor], descendant_code) end break end else local protolang = descendant:getProtoLanguageCode() protolanguage_of[descendant_code] = protolang if protolang and descendant:hasAncestor(protolang) then table.insert(children[protolang], descendant_code) break end end local family_code = descendant:getFamilyCode() if family_code then local family = get(family_code, descendant.getFamily, descendant) local protolang = get(family:getProtoLanguageCode(), family.getProtoLanguage, family) if not protolanguage_of[family] then protolanguage_of[family] = protolang and protolang:getCode() end if protolang and protolang:inFamily(family) and protolang:getCode() ~= descendant_code then table.insert(children[protolang:getCode()], descendant_code) else table.insert(children[family:getCode()], descendant_code) end end until true end -- No more auto subtabling needed. children = children:un_auto_subtable() -- Copy to new table, to filter out unwanted ancestors from descendants with multiple ancestors, where some are not descendants of the target language. local parent_to_children_map = {} for _, code in ipairs(descendants) do parent_to_children_map[code] = children[code] end local function make_nested(data, children) local make_nil = {} for key, val in pairs(data) do if type(key) == "number" then if children[val] then data[val] = make_nested(children[val], children) table.insert(make_nil, key) end else data[key] = make_nested(val, children) end end if make_nil[2] then -- Make sure larger keys are removed first. table.sort(make_nil, function (a, b) return a > b end) end for _, key in ipairs(make_nil) do table.remove(data, key) end return data end local nested = make_nested(parent_to_children_map, parent_to_children_map) local function deep_sort(current) local result = {} local is_table = {} for key, val in pairs(current) do if type(key) == "number" then table.insert(result, val) else is_table[key] = true table.insert(result, key) end end table.sort(result, function(code1, code2) return names[code1] < names[code2] end) for i = 1, #result do if is_table[result[i]] then local name = result[i] result[i] = deep_sort(current[result[i]]) result[i].name = name else result[i] = { name = result[i] } end end return result end nested = deep_sort(nested) data = { nested = nested, protolanguage_of = protolanguage_of } local nested_data, protolanguage_of = data.nested, data.protolanguage_of nested_data = export.find_subtree(nested_data, descendants_of:getCode()) -- Return nil instead of a tree with only the root node. if options.must_have_descendants and (nested_data == nil or #nested_data == 0 or nested_data[1] and #nested_data[1] == 0) then return nil end local is_protolanguage = {} if options.hide_families_with_protolanguages or options.hide_etymology_languages then nested_data = filter_nested_data(nested_data, { hide_families_with_protolanguages = options.hide_families_with_protolanguages, hide_etymology_languages = options.hide_etymology_languages, }, protolanguage_of, is_protolanguage) end if not nested_data or not next(nested_data) then return nil end local result = {'<div class="familytree"><ul>'} local function ins(val) table.insert(result, val) end local tree_options = { sterile_branch_text = '<span class="familytree-branch">' .. ("─"):rep(options.sterile_branch_length or 4) .. '</span>', family_under_protolanguage = options.family_under_protolanguage, protolanguage_under_family = options.protolanguage_under_family, lemma_count = options.lemma_count, } local collapsetext, expandtext = 'Collapse', 'Expand' for i, subtable in ipairs(nested_data) do -- top language name ins('<li>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(subtable, options, protolanguage_of) local top_node = format_node(subtable.name) local next_node if flag then subtable = subtable[1] next_node = format_node(subtable.name) if options.family_under_protolanguage then top_node, next_node = next_node, top_node end end ins(top_node) -- top toggle local customcollapsible_id = get_customcollapsible_id() ins('<span class="familytree-toptoggle mw-customtoggle-' .. customcollapsible_id .. '" style="display: none;">') ins(options.collapsed and expandtext or collapsetext) ins('</span>') if flag then ins('<li>') ins(next_node) end -- tree ins('<ul class="mw-collapsible') if options.collapsed then ins(' mw-collapsed') end ins('" id="mw-customcollapsible-' .. customcollapsible_id) ins('" data-expandtext="' .. expandtext) ins('" data-collapsetext="' .. collapsetext .. '">') ins(make_tree(subtable, is_protolanguage, protolanguage_of, tree_options)) if flag then ins('</li>') end ins('</ul></li>') end ins('</ul></div>') ins(require("Module:TemplateStyles")("Module:family tree/style.css")) return table.concat(result) end return export mnzwouf6sh0nymoc4nm2adgw0g71cs1 510614 510613 2026-06-11T02:56:37Z Hiyuune 11971 Restored revision 510605 by [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|talk]]) (TwinkleGlobal) 510614 Scribunto text/plain --[=[ Authors: [[User:kc_kennylau]], [[User:JohnC5]], [[User:Erutuon]], [[User:Suzukaze-c]], [[User:Theknightwho]], [[User:AryamanA]] --]=] local export = {} local regular_languages = require("Module:languages/code to canonical name") local etymology_languages = require("Module:etymology languages/code to canonical name") local families = require("Module:families/code to canonical name") function export.find_subtree(t, code) for _, val in ipairs(t) do if val.name == code then -- "name" is really code return {val} end local result = export.find_subtree(val, code) if result ~= nil then return result end end end local family_icon = "F" local variety_icon = "V" local proto_language_icon = family_icon local family_with_proto_language_icon = family_icon local function format_node(code, is_protolanguage_or_has_protolanguage, options) local canonical_name, category_name, class, icon, tooltip, lemma_count_text if regular_languages[code] then canonical_name = regular_languages[code] category_name = canonical_name:match(" ^ভাষা") and canonical_name or canonical_name .. " ভাষা" class = "familytree-lang" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-protolang' icon = proto_language_icon end -- Add lemma count if the lemma_count option is set and category name exists if options and options.lemma_count and category_name then page_count = mw.site.stats.pagesInCategory( canonical_name .. " লেমা", "pages" ) lemma_count_text = ' (' .. page_count .. ')' end elseif etymology_languages[code] then canonical_name = etymology_languages[code] class = "familytree-etymlang" icon = variety_icon tooltip = "Variety" elseif families[code] then canonical_name = families[code] category_name = (canonical_name:match(" ^ভাষাগোষ্ঠী") or canonical_name:match(" [Ll]ects$")) and canonical_name or canonical_name .. " ভাষাগোষ্ঠী" class = "familytree-family" if is_protolanguage_or_has_protolanguage then class = class .. ' familytree-hasprotolang' icon = family_with_proto_language_icon else icon = family_icon end tooltip = "Language family" end return '<span class="' .. class .. '" ' .. (tooltip and 'title="' .. tooltip .. '"' or '') .. '>' .. '[[:Category:' .. (category_name or canonical_name) .. '|' .. canonical_name .. ' <span class="familytree-code">(' .. code .. ')</span>]]' .. (icon and ' <span class="familytree-icon">' .. icon .. '</span>' or '') -- Include lemma count text if available .. (lemma_count_text or '') .. '</span>' end -- If neither options.show_all_families or options.show_etymology_languages is -- falsy, then this function does nothing. local function filter_nested_data(nested_data, options, protolanguage_of, is_protolanguage) if not nested_data then -- ??? return nil else local name = nested_data.name local first_child = nested_data[1] -- This indicates that new_nested_data below should only be returned -- if it contains non-etymology languages. local check_for_non_etymology_children = false -- If `show_all_families` is false and this is a family and its only -- child is its proto-language, then replace the family with the -- proto-language. if options.hide_families_with_protolanguages and name and families[name] and first_child and not nested_data[2] and protolanguage_of[name] == first_child.name then is_protolanguage[first_child.name] = true return filter_nested_data(first_child, options, protolanguage_of, is_protolanguage) elseif options.hide_etymology_languages and etymology_languages[name] then if nested_data[1] then check_for_non_etymology_children = true else return nil end end local new_nested_data = { name = name } local i = 0 for _, subtable in ipairs(nested_data) do subtable = filter_nested_data(subtable, options, protolanguage_of, is_protolanguage) if subtable then i = i + 1 new_nested_data[i] = subtable end end if not check_for_non_etymology_children or new_nested_data[1] then return new_nested_data end end end local function make_node(code, is_protolanguage, protolanguage_of, options) return '</span> ' .. format_node(code, is_protolanguage[code] or protolanguage_of[code] ~= nil, options) end local function only_child_is_protolanguage(tree, options, protolanguage_of) return (options.family_under_protolanguage or options.protolanguage_under_family) and tree[1] and protolanguage_of[tree.name] == tree[1].name end export.are_all_children_etymology_languages = require("Module:memoize")(function (nested_data) if not nested_data[1] then return nil end for _, child in ipairs(nested_data) do if not etymology_languages[child.name] or export.are_all_children_etymology_languages(child) == false then return false end end return true end) local customcollapsible_number = 0 local customcollapsible_prefix = "familytree" local function get_customcollapsible_id() customcollapsible_number = customcollapsible_number + 1 return customcollapsible_prefix .. customcollapsible_number end local no_break_space = "\194\160" local level_separator = (no_break_space):rep(3) local expandtext, collapsetext = "[+]─", "[-]┬" local function make_tree(data, is_protolanguage, protolanguage_of, options, prefix) local result = {} local function ins(val) table.insert(result, val) end -- This tag is closed in the node generated by make_node. prefix = prefix or '<span class="familytree-linedrawing">' local branch = "├" local next_level = prefix .. "│" .. level_separator local length = #data for i, val in ipairs(data) do if i == length then branch = "└" next_level = prefix .. level_separator .. no_break_space end local code = val.name local language_or_family_node = make_node(code, is_protolanguage, protolanguage_of, options) if not val[1] then ins('<li>' .. prefix .. branch .. options.sterile_branch_text .. language_or_family_node .. '</li>') else local customcollapsible_id = get_customcollapsible_id() ins('<li>' .. prefix .. branch .. '<span class="familytree-toggle mw-customtoggle-' .. customcollapsible_id .. '">───┬</span>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(val, options, protolanguage_of) local top_node if flag then code = val[1].name val = val[1] top_node = make_node(code, is_protolanguage, protolanguage_of, options) if options.protolanguage_under_family then top_node, language_or_family_node = language_or_family_node, top_node end end local all_children_are_etymology_languages = export.are_all_children_etymology_languages(val) local collapsible_ul = '<ul class="mw-collapsible' .. (all_children_are_etymology_languages and ' familytree-only-etym-children' or '') .. '" ' .. 'id="mw-customcollapsible-' .. customcollapsible_id .. '" data-expandtext="' .. expandtext .. '" data-collapsetext="' .. collapsetext .. '">' if flag then ins(top_node .. collapsible_ul .. '<li>' .. prefix .. (i == length and no_break_space or "│") .. level_separator .. "│") end ins(language_or_family_node) if not flag then ins(collapsible_ul) end -- Can't get default collapsibility script to apply the data-expandtext -- and data-collapsetext attribute values to the custom toggle, -- so have to have a custom script do it. ins(make_tree(val, is_protolanguage, protolanguage_of, options, next_level)) ins('</ul></li>') end end return table.concat(result) end local function get_number_parameter_in_range(args, arg, low, high) local val = args[arg] if val == "" or val == nil then val = nil else val = tonumber(val) if not (type(val) == "number" and 0 <= val and val <= 6) then error("Expected nothing or number between " .. low .. " and " .. high .. " in parameter |" .. arg .. "=.") end end return val end function export.show(frame) local args = frame.args local descendants_of = args[1] local to_boolean = require("Module:yesno") -- Determines whether families that have proto-languages will be shown. local show_all_families = to_boolean(args[2] or args.fam) -- Determines whether all etymology languages will be shown. local show_etymology_languages = to_boolean(args[3] or args.etym) -- Get the value for lemma_count argument local lemma_count = to_boolean(args.lemma_count) -- help! parameter name too long! local sterile_branch_length = get_number_parameter_in_range(args, "sterile_branch_length", 0, 6) -- Determines whether (if all families are shown) a family will be shown -- on a line directly under and at the same level as its proto-language, -- or the proto-language on a line directly under and at the same level as -- its family. local family_under_protolanguage = to_boolean(args.famunderproto) local protolanguage_under_family = to_boolean(args.protounderfam) if family_under_protolanguage and protolanguage_under_family then error("Kindly choose between proto-language under family and family under proto-language.") end return export.print_children(descendants_of, { hide_families_with_protolanguages = not show_all_families, hide_etymology_languages = not show_etymology_languages, family_under_protolanguage = family_under_protolanguage, protolanguage_under_family = protolanguage_under_family, sterile_branch_length = sterile_branch_length, collapsed = require("Module:yesno")(args.collapsed), lemma_count = lemma_count }) end function export.print_children(descendants_of, options) local m_languages = require("Module:languages") local m_table = require("Module:table") local make_auto_subtabler = require("Module:auto-subtable") descendants_of = m_languages.getByCode(descendants_of, nil, true, true) local names = {} local protolanguage_of = {} local children = make_auto_subtabler{} local descendants = descendants_of:getDescendantCodes() table.insert(descendants, descendants_of:getCode()) if descendants_of:hasType("family") then protolanguage_of[descendants_of:getCode()] = descendants_of:getProtoLanguageCode() end local memoized = {} local get = function(code, func, ...) local ret = memoized[code] or func(...) if code then memoized[code] = ret end return ret end for _, descendant_code in ipairs(descendants) do -- Inner "repeat until true" loop allows break to work like continue, as it will always only run once. repeat local descendant = get(descendant_code, m_languages.getByCode, descendant_code, nil, true, true) names[descendant_code] = descendant:getCanonicalName():gsub("Proto%-", "") if descendant:hasType("language") then local ancestors = m_table.shallowCopy(descendant:getAncestorCodes()) local parent_code = descendant:getParentCode() if parent_code and descendant:hasType("etymology-only") then local parent = get(parent_code, descendant.getParent, descendant) if m_table.deepEquals(parent:getAncestorCodes(), ancestors) and descendant:getFamilyCode() == parent:getFamilyCode() then table.insert(children[parent:getCode()], descendant_code) break end end if #ancestors > 0 then for _, ancestor in ipairs(ancestors) do table.insert(children[ancestor], descendant_code) end break end else local protolang = descendant:getProtoLanguageCode() protolanguage_of[descendant_code] = protolang if protolang and descendant:hasAncestor(protolang) then table.insert(children[protolang], descendant_code) break end end local family_code = descendant:getFamilyCode() if family_code then local family = get(family_code, descendant.getFamily, descendant) local protolang = get(family:getProtoLanguageCode(), family.getProtoLanguage, family) if not protolanguage_of[family] then protolanguage_of[family] = protolang and protolang:getCode() end if protolang and protolang:inFamily(family) and protolang:getCode() ~= descendant_code then table.insert(children[protolang:getCode()], descendant_code) else table.insert(children[family:getCode()], descendant_code) end end until true end -- No more auto subtabling needed. children = children:un_auto_subtable() -- Copy to new table, to filter out unwanted ancestors from descendants with multiple ancestors, where some are not descendants of the target language. local parent_to_children_map = {} for _, code in ipairs(descendants) do parent_to_children_map[code] = children[code] end local function make_nested(data, children) local make_nil = {} for key, val in pairs(data) do if type(key) == "number" then if children[val] then data[val] = make_nested(children[val], children) table.insert(make_nil, key) end else data[key] = make_nested(val, children) end end if make_nil[2] then -- Make sure larger keys are removed first. table.sort(make_nil, function (a, b) return a > b end) end for _, key in ipairs(make_nil) do table.remove(data, key) end return data end local nested = make_nested(parent_to_children_map, parent_to_children_map) local function deep_sort(current) local result = {} local is_table = {} for key, val in pairs(current) do if type(key) == "number" then table.insert(result, val) else is_table[key] = true table.insert(result, key) end end table.sort(result, function(code1, code2) return names[code1] < names[code2] end) for i = 1, #result do if is_table[result[i]] then local name = result[i] result[i] = deep_sort(current[result[i]]) result[i].name = name else result[i] = { name = result[i] } end end return result end nested = deep_sort(nested) data = { nested = nested, protolanguage_of = protolanguage_of } local nested_data, protolanguage_of = data.nested, data.protolanguage_of nested_data = export.find_subtree(nested_data, descendants_of:getCode()) -- Return nil instead of a tree with only the root node. if options.must_have_descendants and (nested_data == nil or #nested_data == 0 or nested_data[1] and #nested_data[1] == 0) then return nil end local is_protolanguage = {} if options.hide_families_with_protolanguages or options.hide_etymology_languages then nested_data = filter_nested_data(nested_data, { hide_families_with_protolanguages = options.hide_families_with_protolanguages, hide_etymology_languages = options.hide_etymology_languages, }, protolanguage_of, is_protolanguage) end if not nested_data or not next(nested_data) then return nil end local result = {'<div class="familytree"><ul>'} local function ins(val) table.insert(result, val) end local tree_options = { sterile_branch_text = '<span class="familytree-branch">' .. ("─"):rep(options.sterile_branch_length or 4) .. '</span>', family_under_protolanguage = options.family_under_protolanguage, protolanguage_under_family = options.protolanguage_under_family, lemma_count = options.lemma_count, } local collapsetext, expandtext = 'Collapse', 'Expand' for i, subtable in ipairs(nested_data) do -- top language name ins('<li>') -- name me! local flag = (options.family_under_protolanguage or options.protolanguage_under_family) and only_child_is_protolanguage(subtable, options, protolanguage_of) local top_node = format_node(subtable.name) local next_node if flag then subtable = subtable[1] next_node = format_node(subtable.name) if options.family_under_protolanguage then top_node, next_node = next_node, top_node end end ins(top_node) -- top toggle local customcollapsible_id = get_customcollapsible_id() ins('<span class="familytree-toptoggle mw-customtoggle-' .. customcollapsible_id .. '" style="display: none;">') ins(options.collapsed and expandtext or collapsetext) ins('</span>') if flag then ins('<li>') ins(next_node) end -- tree ins('<ul class="mw-collapsible') if options.collapsed then ins(' mw-collapsed') end ins('" id="mw-customcollapsible-' .. customcollapsible_id) ins('" data-expandtext="' .. expandtext) ins('" data-collapsetext="' .. collapsetext .. '">') ins(make_tree(subtable, is_protolanguage, protolanguage_of, tree_options)) if flag then ins('</li>') end ins('</ul></li>') end ins('</ul></div>') ins(require("Module:TemplateStyles")("Module:family tree/style.css")) return table.concat(result) end return export i213tgxlahiix1i70ec4soxtsg5att3 মডিউল:category tree/data 828 67301 510603 510572 2026-06-11T02:46:07Z Hiyuune 11971 510603 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local raw_handlers = {} local subpages = { -- It should not matter much what order we do the handlers in, but topic handling historically -- preceded "poscatboiler" handling (i.e. everything else), so keep it that way for the moment. "families", "languages", "lemmas", "miscellaneous", } -- Import subpages for _, subpage in ipairs(subpages) do local datamodule = "মডিউল:category tree/" .. subpage local retval = require(datamodule) if retval["LABELS"] then for label, data in pairs(retval["LABELS"]) do if labels[label] and not retval["IGNOREDUP"] then error("Label " .. label .. " defined in both [[" .. datamodule .. "]] and [[" .. labels[label].module .. "]].") end data.module = datamodule labels[label] = data end end if retval["RAW_CATEGORIES"] then for category, data in pairs(retval["RAW_CATEGORIES"]) do if raw_categories[category] and not retval["IGNOREDUP"] then error("Raw category " .. category .. " defined in both [[" .. datamodule .. "]] and [[" .. raw_categories[category].module .. "]].") end data.module = datamodule raw_categories[category] = data end end if retval["HANDLERS"] then for _, handler in ipairs(retval["HANDLERS"]) do table.insert(handlers, { module = datamodule, handler = handler }) end end if retval["RAW_HANDLERS"] then for _, handler in ipairs(retval["RAW_HANDLERS"]) do table.insert(raw_handlers, { module = datamodule, handler = handler }) end end end -- Add child categories to their parents local function add_children_to_parents(hierarchy, raw) for key, data in pairs(hierarchy) do local parents = data.parents if parents then if type(parents) ~= "table" then parents = {parents} end if parents.name or parents.module then parents = {parents} end for _, parent in ipairs(parents) do if type(parent) ~= "table" or not parent.name and not parent.module then parent = {name = parent} end if parent.name and not parent.module and type(parent.name) == "string" and not parent.name:find("^Category:") then local parent_is_raw if raw then parent_is_raw = not parent.is_label else parent_is_raw = parent.raw end -- Don't do anything if the child is raw and the parent is lang-specific, otherwise e.g. -- "Lemmas subcategories by language" will be listed as a child of every "LANG lemmas" category. -- FIXME: We need to rethink this mechanism. if not raw or parent_is_raw then local child_hierarchy = parent_is_raw and raw_categories or labels if child_hierarchy[parent.name] then local child = {name = key, sort = parent.sort, raw = raw} if child_hierarchy[parent.name].children then table.insert(child_hierarchy[parent.name].children, child) else child_hierarchy[parent.name].children = {child} end end end end end end end end add_children_to_parents(labels) add_children_to_parents(raw_categories, true) return { LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers, RAW_HANDLERS = raw_handlers } 7thflxpnvosarvi2xlsw4p17nb3xjln বিষয়শ্রেণী:আরবি লেমা 14 67563 510607 244981 2026-06-11T02:51:37Z Hiyuune 11971 510607 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx לבנה 0 73202 510620 461187 2026-06-11T03:15:56Z Redmin 6857 /* বিশেষ্য */ 510620 wikitext text/x-wiki {{আরও দেখুন|לבֿנה}} ==হিব্রু== ===ব্যুৎপত্তি 1=== {{HE root|לבן}} ====বিশেষণ==== {{he-adj form|g=f|n=s|fp=לבנות|fpwv=לְבָנוֹת|wv=לְבָנָה|tr=l'vaná}} # {{he-adj form of|לָבָן|tr=laván|g=f|n=s|nocap=1}} ====বিশেষ্য==== {{he-noun|wv=לְבָנָה|g=f|tr=l'vaná}} # {{lb|he|কাব্যিক}} the [[moon]] #: {{syn|he|יָרֵחַ|tr=yaréakh}} #* {{Q|he|Leah Goldberg|פזמון ליקינטון}} #*: {{quote|he|לַיְלָה לַיְלָה מִסְתַּכֶּלֶת הַלְּבָנָה / בַּפְּרָחִים אֲשֶׁר הֵנֵצּוּ בַּגִּנָּה. / בְּצִיצֵי הַיָּקִנְתּוֹן / בְּגַנֵּנוּ הַקָּטֹן / לַיְלָה לַיְלָה מִסְתַּכֶּלֶת הַלְּבָנָה.|tr=láyla láyla mistakélet '''hal'vaná''' / bap'rakhím 'ashér henétsu baginá. / b'tsitséi hayakintón / b'ganénu hakatón / láyla láyla mistakélet '''hal'vaná'''.|Night after night '''the moon''' looks down / Upon the flowers that are blossoming in the garden. / Upon the buds of the hyacinth / In our tiny garden / Night after night '''the moon''' looks down.}} =====উদ্ভূত শব্দ===== * {{he-l|ליקוי לבנה|dwv=לִקּוּי לְבָנָה|tr=likúi l'vaná}} ====নামবাচক বিশেষ্য==== {{he-proper noun|wv=לְבָנָה|g=f|tr=l'vána}} # {{প্রদত্ত নাম|he|নারী|xlit=Levana|eq=Luna}} ===ব্যুৎপত্তি 2=== {{HE root|לבן}} ====বিশেষ্য==== {{he-noun|wv=לְבֵנָה|tr=levená|g=f|pl=לְבֵנִים|pat=קְטֵלָה}} # [[brick]] ===ব্যুৎপত্তি 3=== {{HE root|לבן}} ====বিশেষ্য==== {{he-noun|wv=לִבְנֶה|g=m|tr=livné}} # [[styrax]] # {{lb|he|চলিত}} [[birch]] ===ব্যুৎপত্তি 4=== এর উৎস {{bor|he|ajp|لَبْنَة|tr=labna}}. ====বিশেষ্য==== {{he-noun|wv=לַבָּנֶה|tr=lábane|g=f}} # [[strained]] [[yogurt]]; [[labneh]] =====আরো পড়ুন===== * {{উইকিপিডিয়া|Strained yogurt}} ==য়িদ্দিশ== ===বিশেষ্য=== {{yi-noun|g=f|tr=levone}} # {{yi-unpointed form of|לבֿנה|tr=levone}} 1fntqh235gjbx9qokq3rns2f00cw6e4 حسد 0 79540 510616 461220 2026-06-11T03:06:43Z Redmin 6857 /* {{ভাষা|ar}} */ [[en:حسد]] থেকে কপি করলাম 510616 wikitext text/x-wiki =={{ভাষা|ar}}== ===ব্যুৎপত্তি ১=== {{ar-root|ح|س|د}}মূল হতে আগত। তুলনীয় {{সমোদ্ভব|he|חֶסֶד|tr=khésed|t=shame}}। ====ক্রিয়া==== {{ar-verb|I/a~i,u.pass.vn:حَسَد,حُسُود,حَسَادَة,حَسِيدَة}} # হিংসা করা, ঈর্ষান্বিত হওয়া #* Qur'an 4:54 #*: {{quote|ar|أَمْ '''يَحْسُدُونَ''' النَّاسَ عَلَىٰ مَا آتَاهُمُ اللَّهُ مِن فَضْلِهِ|t=Or do they '''envy''' people for what Allah has graciously furnished them with?}} #* Quran 113:05 #*: {{quote|ar|وَمِنْ شَرِّ '''حَاسِدٍ''' إِذَا '''حَسَدَ'''|t=And from the evil of the '''envious''' when they '''envy'''}} # {{label|ar|proscribed}} to [[curse]] with the [[evil eye]] through [[envy]] #: {{syn|ar|عَانَ|نَجَأَ}} =====ধাতুরূপ===== {{ar-conj|I/a~i,u.pass.vn:حَسَد,حُسُود,حَسَادَة,حَسِيدَة}} ===ব্যুৎপত্তি ২=== ====বিশেষ্য==== {{ar-noun|حَسَد|m}} # [[حَسَدَ]] এর ক্রিয়াবিশেষ্য # [[হিংসা]] # [[বদনজর]] #: {{syn|ar|عَيْن}} =====ব্যবহারবিধি===== It is common to use the word similarly to the ইংরেজি [[envy]], that is, without supernatural connotations. In religious and folklore-related contexts, however, the word is almost exclusively used to denote hateful and malicious thoughts and feelings that purportedly curse the envied with {{m|ar|العَيْن||the [evil] eye}} and cause them myriad afflictions. As such, it is often idiomatically combined with {{m|ar|حِقْد||ill will, malice}} for their consonance and like semantic fields since {{m|ar|حِقْد}} particularly highlights the hidden and dissimulated nature of the hatred and loathing of the referent. Other commonly collocated words include {{m|ar|غِلّ||concealed animosity and hate often with hidden injurious intent, spite, malice}}, {{m|ar|غَيْظ||hateful or envious fury, bitterness, rage, resentment}}, {{m|ar|بَغْضَاء||burning hatred, loathing, aversion, rancor, detestation, পুরুষvolence, hostility, antagonism}}, and {{m|ar|ضَغِينَة||dissembled extreme hate and malice, venom}}. =====Declension===== {{ar-decl-noun|حَسْد}} {{c|ar|Hatred}} dpek1rt5608qeaao1ded3nvnlev92pu মডিউল:families/canonical names 828 123218 510600 324363 2026-06-11T02:42:41Z Hiyuune 11971 510600 Scribunto text/plain return { ["Abenaki-Penobscot"] = "alg-abp", ["Abkhaz-Abaza"] = "cau-abz", ["Adamawa"] = "alv-ada", ["Admiralty Islands"] = "poz-aay", ["Afroasiatic"] = "afa", ["Aian"] = "paa-aia", ["Ainuic"] = "qfa-ain", ["Aisian"] = "ngf-ais", ["Aizi"] = "kro-aiz", ["Alacalufan"] = "aqa", ["Albanian"] = "sqj", ["Algic"] = "aql", ["Algonquian"] = "alg", ["Almora"] = "sit-alm", ["Alor-Pantar"] = "paa-alp", ["Alumic"] = "nic-alu", ["American Sign Languages"] = "sgn-asl", ["Amto-Musan"] = "paa-amu", ["Anatolian"] = "ine-ana", ["Andian"] = "cau-and", ["Angal-Kewa"] = "ngf-ank", ["Angami-Pochuri"] = "tbq-anp", ["Angan"] = "ngf-ang", ["Anglic"] = "gmw-ang", ["Anglo-Frisian"] = "gmw-afr", ["Anim"] = "paa-ani", ["Ankave-Tainae-Akoye"] = "ngf-ata", ["Ao"] = "njo", ["Apachean"] = "apa", ["Arabic"] = "sem-arb", ["Arafundi"] = "paa-arf", ["Aramaic"] = "sem-ara", ["Arandic"] = "aus-rnd", ["Arapahoan"] = "alg-ara", ["Arapesh"] = "paa-ara", ["Arauan"] = "auf", ["Araucanian"] = "sai-ara", ["Arawak"] = "awd", ["Arinic"] = "qfa-yrn", ["Armenian"] = "hyx", ["Arnhem"] = "aus-arn", ["Aroid"] = "omv-aro", ["Aslian"] = "mkh-asl", ["Asmat"] = "ngf-asm", ["Asmat-Kamoro"] = "ngf-ask", ["Asturleonese"] = "roa-asl", ["Ataitan"] = "paa-ata", ["Atayalic"] = "map-ata", ["Athabaskan"] = "ath", ["Atlantic-Congo"] = "alv", ["Austroasiatic"] = "aav", ["Austronesian"] = "map", ["Avaro-Andian"] = "cau-ava", ["Awyu"] = "ngf-awy", ["Awyu-Dumut"] = "ngf-awd", ["Axioid"] = "tbq-axi", ["Ayere-Ahan"] = "alv-aah", ["Aymaran"] = "sai-aym", ["Bafia"] = "bnt-baf", ["Bafo-Bonkeng"] = "bnt-bbo", ["Baga"] = "alv-bag", ["Bagirmi"] = "csu-bgr", ["Bahnaric"] = "mkh-ban", ["Bai"] = "sit-bai", ["Baining"] = "paa-bai", ["Bak"] = "alv-bak", ["Baka"] = "nic-nkb", ["Bali-Sasak-Sumbawa"] = "poz-bss", ["Baltic"] = "bat", ["Balto-Slavic"] = "ine-bsl", ["Bambukic"] = "alv-bam", ["Bamileke"] = "bai", ["Banda"] = "bad", ["Bangi-Moi"] = "bnt-bmo", ["Bangi-Ntomba"] = "bnt-bnm", ["Bangi-Tetela"] = "bnt-bte", ["Bantoid"] = "nic-bod", ["Bantoid-Cross"] = "nic-bcr", ["Bantu"] = "bnt", ["Banyum"] = "alv-bny", ["Barbacoan"] = "sai-bar", ["Bari"] = "sdv-bri", ["Baruya-Simbari"] = "ngf-bsi", ["Basa"] = "nic-bas", ["Basaa"] = "bnt-bsa", ["Batak"] = "btk", ["Bati-Angba"] = "bnt-bta", ["Bayono-Awbono"] = "paa-baa", ["Be"] = "qfa-onb", ["Be-Jizhao"] = "qfa-bej", ["Be-Tai"] = "qfa-bet", ["Beboid"] = "nic-beb", ["Becking-Dawi"] = "ngf-bda", ["Bekwilic"] = "bnt-bek", ["Bena-Kinga"] = "bnt-bki", ["Bendi"] = "nic-ben", ["বাংলা-অসমীয়া"] = "inc-bas", ["Benue-Congo"] = "nic-bco", ["Berber"] = "ber", ["Beromic"] = "nic-beo", ["Betaf-Vitou"] = "paa-bvi", ["Beti"] = "bnt-btb", ["Bewani"] = "paa-bew", ["Bhil"] = "inc-bhi", ["Bi-Ka"] = "tbq-bka", ["Bihari"] = "inc-bih", ["Bikwin-Jen"] = "alv-bwj", ["Binanderean"] = "ngf-bin", ["Birri-Kresh"] = "csu-bkr", ["Bisa-Busa"] = "dmn-bbu", ["Bisoid"] = "tbq-bis", ["Boan"] = "bnt-boa", ["Boane"] = "ngf-boa", ["Boazi"] = "paa-boa", ["Bodish"] = "sit-bdi", ["Bodo-Garo"] = "tbq-bdg", ["Boma-Dzing"] = "bnt-bdz", ["Bongo-Bagirmi"] = "csu-bba", ["Bongo-Baka"] = "csu-bbk", ["Boran"] = "sai-bor", ["Border"] = "paa-bor", ["Bosavi"] = "ngf-bos", ["Bosngun-Awar"] = "paa-baw", ["Botatwe"] = "bnt-bot", ["Brythonic"] = "cel-bry", ["Bua"] = "alv-bua", ["Buja-Ngombe"] = "bnt-bun", ["Bulaka River"] = "paa-bul", ["Buli-Koma"] = "nic-buk", ["Bungku-Tolaki"] = "poz-btk", ["Bunuban"] = "aus-bub", ["Burmish"] = "tbq-brm", ["Burmo-Qiangic"] = "tbq-buq", ["Bushoong"] = "bnt-bsh", ["Buyang"] = "qfa-buy", ["Bwa"] = "nic-bwa", ["Bété"] = "kro-bet", ["Caddoan"] = "cdd", ["Cahuapanan"] = "sai-cah", ["Cai-Long"] = "sit-cln", ["Canaanite"] = "sem-can", ["Cangin"] = "alv-cng", ["Cariban"] = "sai-car", ["Caspian"] = "ira-csp", ["Castilian"] = "roa-cas", ["Catacaoan"] = "sai-ctc", ["Catawban"] = "nai-cat", ["Celebic"] = "poz-clb", ["Celtic"] = "cel", ["Central Banda"] = "bad-cnt", ["Central Chadic"] = "cdc-cbm", ["Central Cushitic"] = "cus-cen", ["Central Dani"] = "ngf-cda", ["Central Delta"] = "nic-cde", ["Central Dravidian"] = "dra-cen", ["Central Great Andamanese"] = "qfa-adc", ["Central Indo-Aryan"] = "inc-cen", ["Central Iranian"] = "ira-cen", ["Central Jê"] = "sai-cje", ["Central Kiranti"] = "sit-kic", ["Central Lakes Plain"] = "paa-clp", ["Central Maluku"] = "poz-cma", ["Central Mande"] = "dmn-mdc", ["Central Mongolic"] = "xgn-cen", ["Central Naga"] = "sit-aao", ["Central Neo-Aramaic"] = "sem-cna", ["Central New South Wales"] = "aus-cww", ["Central Pacific"] = "poz-pcc", ["Central Plateau"] = "nic-plc", ["Central Ring"] = "nic-rnc", ["Central Semitic"] = "sem-cen", ["Central Sudanic"] = "csu", ["Central Tai"] = "tai-cen", ["Central Tano"] = "alv-ctn", ["Central Teke"] = "bnt-tkc", ["Central Tivoid"] = "nic-tvc", ["Central Vanuatu"] = "poz-vnc", ["Central-Eastern Malayo-Polynesian"] = "poz-cet", ["Central-Eastern Oceanic"] = "poz-occ", ["Cerrado"] = "sai-cer", ["Chadic"] = "cdc", ["Chaga"] = "bnt-chg", ["Chaga-Taita"] = "bnt-cht", ["Chamic"] = "cmc", ["Chapacuran"] = "sai-cpc", ["Charruan"] = "sai-crn", ["Chatino"] = "omq-cha", ["Chibchan"] = "cba", ["Chimakuan"] = "chi", ["Chimbu-Wahgi"] = "ngf-chw", ["Chinantecan"] = "omq-chi", ["Chinookan"] = "nai-ckn", ["Chitrali"] = "inc-chi", ["Chocoan"] = "sai-chc", ["Chokwe-Luchazi"] = "bnt-clu", ["Chonan"] = "sai-cho", ["Chongzuo Tai"] = "tai-cho", ["Chug-Lish"] = "sit-khc", ["Chukotkan"] = "qfa-ckn", ["Chukotko-Kamchatkan"] = "qfa-cka", ["Chumashan"] = "nai-chu", ["Circassian"] = "cau-cir", ["Coastal Min"] = "zhx-com", ["Common Turkic"] = "trk-cmn", ["Comorian"] = "bnt-com", ["Coosan"] = "nai-coo", ["Cross River"] = "nic-cri", ["Cuicatec"] = "omq-cui", ["Cupan"] = "azc-cup", ["Cushitic"] = "cus", ["Dagan"] = "ngf-dag", ["Dagbani"] = "nic-dag", ["Daju"] = "sdv-daj", ["Dakoid"] = "nic-dak", ["Dakotan"] = "sio-dkt", ["Dallman"] = "ngf-dal", ["Dalmatian Romance"] = "roa-dal", ["Daly"] = "aus-dal", ["Dangari"] = "inc-dng", ["Dani"] = "ngf-dan", ["Dardic"] = "inc-dar", ["Dargwa"] = "cau-drg", ["Delta Edoid"] = "alv-dlt", ["Dene-Yeniseian"] = "qfa-dny", ["Dhegihan"] = "sio-dhe", ["Dhimalish"] = "sit-dhi", ["Dida"] = "kro-did", ["Dinka-Nuer"] = "sdv-dnu", ["Dizoid"] = "omv-diz", ["Dogon"] = "qfa-dgn", ["Doso-Turumsa"] = "paa-dtu", ["Downriver Phula"] = "tbq-drp", ["Dravidian"] = "dra", ["Dumut"] = "ngf-dum", ["Durango Nahuatl"] = "azc-dur", ["Duru"] = "alv-dur", ["Dyirbalic"] = "aus-dyb", ["East Baltic"] = "bat-eas", ["East Barito"] = "poz-bre", ["East Bird's Head"] = "paa-ebh", ["East Bodish"] = "sit-ebo", ["East Chadic"] = "cdc-est", ["East Cushitic"] = "cus-eas", ["East Geelvink Bay"] = "paa-egb", ["East Germanic"] = "gme", ["East Kainji"] = "nic-kne", ["East Keram"] = "paa-eke", ["East Kutubuan"] = "ngf-eku", ["East Lakes Plain"] = "paa-elp", ["East Manding"] = "dmn-emn", ["East Ometo"] = "omv-eom", ["East Plateau"] = "nic-ple", ["East Scandinavian"] = "gmq-eas", ["East Semitic"] = "sem-eas", ["East Slavic"] = "zle", ["East Sogeram"] = "ngf-eso", ["East Strickland"] = "ngf-est", ["East Timor"] = "paa-eti", ["East Tsezian"] = "cau-ets", ["East rGyalrongic"] = "sit-egy", ["East-West Upper Cross River"] = "nic-uce", ["Eastern Algonquian"] = "alg-eas", ["Eastern Aramaic"] = "sem-are", ["Eastern Beboid"] = "nic-bbe", ["Eastern Central Sudanic"] = "csu-ecs", ["Eastern Dardic"] = "inc-dre", ["Eastern Eleman"] = "paa-eel", ["Eastern Gbaya"] = "gba-eas", ["Eastern Grassfields"] = "nic-gre", ["Eastern Gurunsi"] = "nic-gne", ["Eastern Hindi"] = "inc-hie", ["Eastern Huon"] = "ngf-ehu", ["Eastern Indo-Aryan"] = "inc-eas", ["Eastern Jebel"] = "sdv-eje", ["Eastern Kiranti"] = "sit-kie", ["Eastern Kru"] = "kro-ekr", ["Eastern Malayo-Polynesian"] = "pqe", ["Eastern Mande"] = "dmn-mde", ["Eastern Ngbaka"] = "nic-nke", ["Eastern Nilotic"] = "sdv-nie", ["Eastern Oti-Volta"] = "nic-eov", ["Eastern Pauwasi"] = "paa-epw", ["Eastern Polynesian"] = "poz-pep", ["Eastern Romance"] = "roa-eas", ["Eastern Samur"] = "cau-esm", ["Eastern Sudanic"] = "sdv", ["Eastern Trans-Fly"] = "paa-etf", ["Ede"] = "alv-ede", ["Edekiri"] = "alv-edk", ["Edo-Esan-Ora"] = "alv-eeo", ["Edoid"] = "alv-edo", ["Egyptian"] = "egx", ["Ekoid"] = "nic-eko", ["Eleman"] = "paa-ele", ["Emilian-Romagnol"] = "roa-emr", ["Enets"] = "syd-ene", ["Engan"] = "ngf-eng", ["Engic"] = "ngf-enc", ["Erap"] = "ngf-era", ["Ersuic"] = "sit-ers", ["Escarpment Dogon"] = "nic-dge", ["Eskimo"] = "esx-esk", ["Eskimo-Aleut"] = "esx", ["Ethiopian Semitic"] = "sem-eth", ["Evapia"] = "ngf-eva", ["Ewenic"] = "tuw-ewe", ["Fali"] = "alv-fli", ["Far West Lakes Plain"] = "paa-flp", ["Fas"] = "paa-fas", ["Finisterre"] = "ngf-fin", ["Finisterre-Huon"] = "ngf-fhu", ["Finnic"] = "urj-fin", ["Fore-Gimi"] = "ngf-fgi", ["French Sign Languages"] = "sgn-fsl", ["Frisian"] = "gmw-fri", ["Fula-Wolof"] = "alv-fwo", ["Fur"] = "ssa-fur", ["Furu"] = "nic-fru", ["Ga-Dangme"] = "alv-gda", ["Gaena-Korafe"] = "ngf-gko", ["Gahuku"] = "ngf-gah", ["Galela-Tobelo"] = "paa-gto", ["Galician-Portuguese"] = "roa-gap", ["Gallo-Italic"] = "roa-git", ["Gallo-Rhaetian"] = "roa-grh", ["Gallo-Romance"] = "roa-gar", ["Garawan"] = "aus-gar", ["Gauwa"] = "ngf-gau", ["Gbanziri"] = "nic-nkg", ["Gbaya"] = "gba", ["Gbe"] = "alv-gbe", ["Gelao"] = "gio", ["Georgian-Zan"] = "ccs-gzn", ["German Sign Languages"] = "sgn-gsl", ["Germanic"] = "gem", ["Ghana-Togo Mountain"] = "alv-gtm", ["Gogodala-Suki"] = "ngf-gsu", ["Goidelic"] = "cel-gae", ["Gondi"] = "dra-gon", ["Gondi-Kui"] = "dra-gki", ["Gonga"] = "omv-gon", ["Goroka"] = "ngf-gor", ["Grand Valley Dani"] = "ngf-gvd", ["Grassfields"] = "nic-grf", ["Great Andamanese"] = "qfa-adm", ["Great Lakes Bantu"] = "bnt-glb", ["Greater Awyu"] = "ngf-gaw", ["Greater Binanderean"] = "ngf-gbi", ["Greater Kwerba"] = "paa-gkw", ["Greater Magaric"] = "sit-gma", ["Greater Siangic"] = "sit-gsi", ["Grebo"] = "kro-grb", ["Grebo proper"] = "grb", ["Guahiban"] = "sai-guh", ["Guaicuruan"] = "sai-guc", ["Guang"] = "alv-gng", ["Guarani"] = "gn", ["Guianan"] = "sai-gui", ["Gum"] = "ngf-gum", ["Gunwinyguan"] = "aus-gun", ["Gur"] = "nic-gur", ["Gurma"] = "nic-grm", ["Gurunsi"] = "nic-gns", ["Gusap-Mot"] = "ngf-gmo", ["Hagen"] = "ngf-hag", ["Halbic"] = "inc-hal", ["Halmahera-Cenderawasih"] = "poz-hce", ["Hanoid"] = "tbq-han", ["Hanseman"] = "ngf-han", ["Harákmbut"] = "sai-har", ["Harákmbut-Katukinan"] = "sai-hkt", ["Haya-Jita"] = "bnt-haj", ["Heiban"] = "alv-hei", ["Hellenic"] = "grk", ["Heyo-Yahang"] = "paa-hya", ["High German"] = "gmw-hgm", ["Highland East Cushitic"] = "cus-hec", ["Highland Phula"] = "tbq-hph", ["Hill Nubian"] = "nub-hil", ["Hindustani"] = "inc-hnd", ["Hispano-Celtic"] = "cel-his", ["Hlai"] = "qfa-lic", ["Hmong-Mien"] = "hmx", ["Hmongic"] = "hmn", ["Hokan"] = "hok", ["Horpa"] = "ero", ["Hrusish"] = "sit-hrs", ["Huarpean"] = "sai-hrp", ["Huasteca Nahuatl"] = "azc-hua", ["Huon"] = "ngf-huo", ["Hurro-Urartian"] = "qfa-hur", ["Ibero-Romance"] = "roa-ibe", ["Ibibio-Efik"] = "nic-ief", ["Idomoid"] = "alv-ido", ["Igboid"] = "alv-igb", ["Ijoid"] = "ijo", ["Indo-Aryan"] = "inc", ["ইন্দো-ইউরোপীয়"] = "ine", ["Indo-Iranian"] = "iir", ["Inland Gulf"] = "paa-ing", ["Inland Min"] = "zhx-inm", ["Inner Sko"] = "paa-isk", ["Insular Celtic"] = "cel-ins", ["Insular Indo-Aryan"] = "inc-ins", ["Insular Scandinavian"] = "gmq-ins", ["Inuit"] = "esx-inu", ["Iranian"] = "ira", ["Irish Anglo-Norman"] = "gmw-ian", ["Iroquoian"] = "iro", ["Irula-Muduga"] = "dra-imd", ["Italic"] = "itc", ["Italo-Dalmatian"] = "roa-itd", ["Italo-Romance"] = "roa-itr", ["Italo-Western Romance"] = "roa-iwr", ["Iwaidjan"] = "aus-wdj", ["Iwam"] = "paa-iwa", ["Japanese Sign Languages"] = "sgn-jsl", ["Japonic"] = "jpx", ["Jarawa"] = "nic-jrw", ["Jarawan"] = "nic-jrn", ["Jarrakan"] = "aus-jar", ["Jera"] = "nic-jer", ["Jicaquean"] = "nai-jcq", ["Jimi"] = "ngf-jim", ["Jingphoic"] = "sit-jnp", ["Jino"] = "tbq-jin", ["Jirajaran"] = "sai-jir", ["Jivaroan"] = "sai-jiv", ["Jogo-Jeri"] = "dmn-jje", ["Jola"] = "alv-jol", ["Jola-Felupe"] = "alv-jfe", ["Jukunoid"] = "nic-jkn", ["Jurchenic"] = "tuw-jrc", ["Jê"] = "sai-jee", ["KRDS languages"] = "inc-krd", ["Ka-Togo"] = "alv-ktg", ["Kaba"] = "csu-kab", ["Kabwum"] = "ngf-kab", ["Kachin-Luic"] = "sit-jpl", ["Kadu"] = "qfa-kad", ["Kaili-Pamona"] = "poz-kal", ["Kainantu"] = "ngf-kai", ["Kainantu-Goroka"] = "ngf-kgo", ["Kainji"] = "nic-knj", ["Kako"] = "bnt-kak", ["Kalahari Khoe"] = "khi-kal", ["Kalam-Kobon"] = "ngf-kak", ["Kalam-Southern Adelbert"] = "ngf-ksa", ["Kalamian"] = "phi-kal", ["Kalapuyan"] = "nai-klp", ["Kalenjin"] = "sdv-kln", ["Kam-Sui"] = "qfa-kms", ["Kamano-Yagaria"] = "ngf-kya", ["Kambari"] = "nic-kam", ["Kamuku"] = "nic-kmk", ["Kamula-Elevala"] = "paa-kae", ["Kannadoid"] = "dra-kan", ["Kanum"] = "paa-kan", ["Kapau-Menya"] = "ngf-kme", ["Karaboro"] = "alv-krb", ["Karen"] = "kar", ["Karluk"] = "trk-kar", ["Karnic"] = "aus-kar", ["Kartvelian"] = "ccs", ["Kashmiric"] = "inc-kas", ["Katloid"] = "nic-ktl", ["Katuic"] = "mkh-kat", ["Katukinan"] = "sai-ktk", ["Kaukombar"] = "ngf-kau", ["Kaure-Kosare"] = "paa-kko", ["Kauru"] = "nic-kau", ["Kavango"] = "bnt-kav", ["Kavango-Southwest Bantu"] = "bnt-ksb", ["Kayagaric"] = "paa-kay", ["Kazhuoish"] = "tbq-kzh", ["Kele"] = "bnt-kel", ["Kele-Tsogo"] = "bnt-kts", ["Keram"] = "paa-ker", ["Keresan"] = "nai-ker", ["Ketic"] = "qfa-yke", ["Kewa-Huli"] = "ngf-khu", ["Kham"] = "sit-kha", ["Khanty"] = "kca", ["Khasian"] = "aav-khs", ["Khmeric"] = "mkh-kmr", ["Khmuic"] = "mkh-khm", ["Kho-Bwa"] = "sit-khb", ["Khoe"] = "khi-kho", ["Khoe-Kwadi"] = "khi-kkw", ["Khoekhoe"] = "khi-khk", ["Kikuyu-Kamba"] = "bnt-kka", ["Kilombero"] = "bnt-kil", ["Kim"] = "alv-kim", ["Kimbundu"] = "bnt-kmb", ["Kinnauric"] = "sit-kin", ["Kiowa-Tanoan"] = "nai-kta", ["Kipchak"] = "trk-kip", ["Kipchak-Bulgar"] = "trk-kbu", ["Kipchak-Cuman"] = "trk-kcu", ["Kipchak-Nogai"] = "trk-kno", ["Kiranti"] = "sit-kir", ["Kissi"] = "alv-kis", ["Kiwaian"] = "paa-kiw", ["Kodagu"] = "dra-kod", ["Kohistani"] = "inc-koh", ["Koiarian"] = "ngf-koi", ["Kokon"] = "ngf-kok", ["Kolami-Naiki"] = "dra-knk", ["Kolopom"] = "paa-kol", ["Koman"] = "ssa-kom", ["Kombio"] = "paa-kom", ["Kombio-Arapesh"] = "paa-koa", ["Komi"] = "kv", ["Komisenian"] = "ira-kms", ["Komo-Bira"] = "bnt-kbi", ["Komyandaret-Tsaukambo"] = "ngf-kts", ["Konda-Kui"] = "dra-kki", ["Kongo"] = "bnt-kng", ["Konyak-Chang"] = "sit-kch", ["Koraga"] = "dra-kor", ["Koreanic"] = "qfa-kor", ["Kosorong-Burum-Mindik"] = "ngf-kbm", ["Kottic"] = "qfa-yko", ["Kowan"] = "ngf-kow", ["Kpala"] = "nic-nkk", ["Kpwe"] = "bnt-kpw", ["Kra"] = "qfa-kra", ["Kra-Dai"] = "qfa-tak", ["Kru"] = "kro", ["Kube-Tobo"] = "ngf-kto", ["Kuikuroan"] = "sai-kui", ["Kuki-Chin"] = "tbq-kuk", ["Kulango"] = "alv-kul", ["Kuliak"] = "ssa-klk", ["Kumil"] = "ngf-kum", ["Kunar"] = "inc-kun", ["Kunimaipan"] = "paa-kun", ["Kurdish"] = "ku", ["Kurux-Malto"] = "dra-kml", ["Kwa"] = "alv-kwa", ["Kwalean"] = "paa-kwa", ["Kwerba proper"] = "paa-kwe", ["Kwomtari"] = "paa-kwo", ["Kx'a"] = "khi-kxa", ["Kyirong-Kagate"] = "sit-kyk", ["Kyrgyz-Kipchak"] = "trk-kkp", ["Kâte-Mape"] = "ngf-kma", ["Ladakhi-Balti"] = "sit-lab", ["Lagoon"] = "alv-lag", ["Lahoish"] = "tbq-lho", ["Lahuli-Spiti"] = "sit-las", ["Lakes Plain"] = "paa-lpl", ["Lalo"] = "tbq-lal", ["Lampungic"] = "poz-lgx", ["Land Dayak"] = "day", ["Latino-Faliscan"] = "itc-laf", ["Lawoish"] = "tbq-lwo", ["Lebonya"] = "bnt-leb", ["Lechitic"] = "zlw-lch", ["Left May"] = "paa-lma", ["Lega-Binja"] = "bnt-lgb", ["Leko"] = "alv-lek", ["Leko-Nimbari"] = "alv-lni", ["Lenape"] = "del", ["Lencan"] = "nai-len", ["Lendu"] = "csu-lnd", ["Lepki-Murkim"] = "paa-lmu", ["Lezghian"] = "cau-lzg", ["Limba"] = "alv-lim", ["Lipo-Lolopo"] = "tbq-llo", ["Lisoish"] = "tbq-lso", ["Logooli-Kuria"] = "bnt-lok", ["Lolo-Burmese"] = "tbq-lob", ["Loloda-Laba"] = "paa-lla", ["Loloish"] = "tbq-lol", ["Lotuko-Maa"] = "sdv-lma", ["Low Franconian"] = "gmw-frk", ["Low German"] = "gmw-lgm", ["Lower Cross River"] = "nic-lcr", ["Lower Ramu"] = "paa-lra", ["Lower Sepik"] = "paa-lse", ["Lowland Ok"] = "ngf-lok", ["Luba"] = "bnt-lub", ["Luban"] = "bnt-lbn", ["Luish"] = "sit-luu", ["Lunda"] = "bnt-lun", ["Luo"] = "sdv-luo", ["Luwic"] = "ine-luw", ["Mabuso"] = "ngf-mab", ["Macro-Bai"] = "sit-mba", ["Macro-Chibchan"] = "qfa-mch", ["Macro-Jê"] = "sai-mje", ["Madang"] = "ngf-mad", ["Madiya"] = "dra-mdy", ["Maiduan"] = "nai-mdu", ["Mailuan"] = "paa-mal", ["Maimai"] = "paa-mam", ["Mairasi"] = "paa-mai", ["Makaa"] = "bnt-mka", ["Makaa-Njem"] = "bnt-mnj", ["Makua"] = "bnt-mak", ["Malayalamoid"] = "dra-mal", ["Malayic"] = "poz-mly", ["Malayo-Chamic"] = "poz-mcm", ["Malayo-Polynesian"] = "poz", ["Malayo-Sumbawan"] = "poz-msa", ["Malto"] = "dra-mlo", ["Mambiloid"] = "nic-mmb", ["Mamfe"] = "nic-mam", ["Mandarinic"] = "zhx-man", ["Mande"] = "dmn", ["Mandi-Muniwara"] = "paa-mmu", ["Manding"] = "dmn-man", ["Manding-Jogo"] = "dmn-mjo", ["Manding-Mokole"] = "dmn-mmo", ["Manding-Vai"] = "dmn-mva", ["Manenguba"] = "bnt-mne", ["Mangbetu"] = "csu-maa", ["Mangbutu-Lese"] = "csu-mle", ["Mangic"] = "mkh-mng", ["Maninka"] = "dmn-mnk", ["Mano-Dan"] = "dmn-mda", ["Manobo"] = "mno", ["Mansi"] = "mns", ["Manubaran"] = "paa-man", ["Mao"] = "omv-mao", ["Mapoyan"] = "sai-map", ["Mari"] = "chm", ["Marienberg"] = "paa-mar", ["Marind-Boazi-Yaqay"] = "paa-mby", ["Marindic"] = "paa-mri", ["Maringic"] = "sit-mar", ["Masa"] = "cdc-mas", ["Masaba-Luhya"] = "bnt-msl", ["Mascoian"] = "sai-mas", ["Mataco-Guaicuru"] = "sai-mgc", ["Matacoan"] = "sai-mtc", ["Mayan"] = "myn", ["Maybratic"] = "paa-may", ["Mazanderani-Shahmirzadi"] = "ira-msh", ["Mazatecan"] = "omq-maz", ["Mba"] = "nic-mbc", ["Mbaham-Iha"] = "paa-mbi", ["Mbaka"] = "nic-nkm", ["Mbam"] = "nic-mba", ["Mbete"] = "bnt-mbt", ["Mbeya"] = "bnt-mby", ["Mbinga"] = "bnt-mbi", ["Mbole-Enya"] = "bnt-mbe", ["Mboshi"] = "bnt-mbo", ["Mboshi-Buja"] = "bnt-mbb", ["Mbugwe-Rangi"] = "bnt-mra", ["Mbum"] = "alv-mbm", ["Mbum-Day"] = "alv-mbd", ["Median"] = "xme", ["Medo-Parthian"] = "ira-mpr", ["Mek"] = "ngf-mek", ["Mel"] = "alv-mel", ["Mey-Sartang"] = "sit-khm", ["Mian-Suganga"] = "ngf-msu", ["Micronesian"] = "poz-mic", ["Middle Indo-Aryan"] = "inc-mid", ["Middle Iranian"] = "ira-mid", ["Midzu"] = "sit-mdz", ["Mienic"] = "hmx-mie", ["Mijikenda"] = "bnt-mij", ["Min"] = "zhx-min", ["Mindjim"] = "ngf-min", ["Mirndi"] = "aus-mir", ["Mississippi Valley Siouan"] = "sio-msv", ["Missouri River Siouan"] = "sio-mor", ["Misumalpan"] = "nai-min", ["Mixe-Zoquean"] = "nai-miz", ["Mixtec"] = "omq-mxt", ["Mixtecan"] = "omq-mix", ["Modern South Arabian"] = "sem-sar", ["Mokole"] = "dmn-mok", ["Mombum"] = "ngf-mom", ["Momo"] = "nic-mom", ["Mon-Khmer"] = "mkh", ["Mondzish"] = "sit-mnz", ["Mongo"] = "bnt-mon", ["Mongolic"] = "xgn", ["Monguor"] = "mjg", ["Monic"] = "mkh-mnc", ["Monumbo"] = "paa-mon", ["Mordvinic"] = "urj-mdv", ["Moru-Madi"] = "csu-mma", ["Moré"] = "nic-mre", ["Mountain Ok"] = "ngf-mok", ["Mruic"] = "sit-mru", ["Muji"] = "tbq-muj", ["Mumuye"] = "alv-mum", ["Mumuye-Yendang"] = "alv-mye", ["Muna-Buton"] = "poz-mun", ["Munda"] = "mun", ["Munji-Yidgha"] = "ira-mny", ["Muran"] = "sai-mur", ["Muria"] = "dra-mur", ["Muskogean"] = "nai-mus", ["Mwika"] = "bnt-mwi", ["Na-Dene"] = "xnd", ["Na-Togo"] = "alv-ntg", ["Nadahup"] = "sai-nad", ["Nahuan"] = "azc-nah", ["Naic"] = "sit-nax", ["Naish"] = "sit-nas", ["Nakh"] = "cau-nkh", ["Nalu"] = "alv-nal", ["Nambikwaran"] = "sai-nmk", ["Nambu"] = "paa-nam", ["Namla-Tofanma"] = "paa-nto", ["Nanaic"] = "tuw-nan", ["Nandi-Markweta"] = "sdv-nma", ["Nanga-Walo"] = "nic-nwa", ["Nasoid"] = "tbq-nas", ["Navarro-Aragonese"] = "roa-nar", ["Nawiki"] = "awd-nwk", ["Ndeiram"] = "ngf-nde", ["Ndu"] = "paa-ndu", ["Ndzem-Bomwali"] = "bnt-ndb", ["Nenets"] = "yrk", ["New Caledonian"] = "poz-cln", ["Newaric"] = "sit-new", ["Ngalik-Nduga"] = "ngf-ngn", ["Ngayarda"] = "aus-nga", ["Ngbaka"] = "nic-ngk", ["Ngbandi"] = "nic-ngd", ["Ngemba"] = "nic-nge", ["Ngkolmpu"] = "paa-ngk", ["Ngondi-Ngiri"] = "bnt-ngn", ["Nguni"] = "bnt-ngu", ["Nicobarese"] = "aav-nic", ["Niger-Congo"] = "nic", ["Nilo-Saharan"] = "ssa", ["Nilotic"] = "sdv-nil", ["Nimboran"] = "paa-nim", ["Ninzic"] = "nic-nin", ["Nisoish"] = "tbq-nso", ["Nisu"] = "tbq-nis", ["Nkambe"] = "nic-nka", ["North Athabaskan"] = "ath-nor", ["North Bahnaric"] = "mkh-nbn", ["North Binanderean"] = "ngf-nbi", ["North Bornean"] = "poz-bnn", ["North Bougainville"] = "paa-nbo", ["North Dravidian"] = "dra-nor", ["North Germanic"] = "gmq", ["North Halmahera"] = "paa-nha", ["North Iroquoian"] = "iro-nor", ["North Ometo"] = "omv-nom", ["North Plateau Dogon"] = "nic-npd", ["North Sarawakan"] = "poz-swa", ["North Sea Germanic"] = "gmw-nsg", ["North Siberian Turkic"] = "trk-nsb", ["North Sogeram"] = "ngf-nso", ["North Vanuatu"] = "poz-vnn", ["North-Central Edoid"] = "alv-nce", ["North-South Upper Cross River"] = "nic-ucn", ["Northeast Bantu"] = "bnt-bne", ["Northeast Caucasian"] = "cau-nec", ["Northeast Coast Bantu"] = "bnt-ncb", ["Northeastern Iranian"] = "ira-nei", ["Northeastern Neo-Aramaic"] = "sem-nna", ["Northern Adelbert"] = "ngf-nad", ["Northern Bai"] = "sit-nba", ["Northern Bantoid"] = "nic-bdn", ["Northern Eastern Sudanic"] = "sdv-nes", ["Northern Great Andamanese"] = "qfa-adn", ["Northern Gurunsi"] = "nic-gnn", ["Northern Indo-Aryan"] = "inc-nor", ["Northern Jê"] = "sai-nje", ["Northern Loloish"] = "tbq-nlo", ["Northern Luo"] = "sdv-lon", ["Northern Naga"] = "sit-kon", ["Northern North Halmahera"] = "paa-nnh", ["Northern Nuristani"] = "nur-nor", ["Northern Ring"] = "nic-rnn", ["Northern Ryukyuan"] = "jpx-nry", ["Northern Tai"] = "tai-nor", ["Northern Tivoid"] = "nic-tvn", ["Northwest Caucasian"] = "cau-nwc", ["Northwest Hanseman"] = "ngf-nwh", ["Northwest Kainji"] = "nic-knn", ["Northwest Semitic"] = "sem-nwe", ["Northwest Sumatran"] = "poz-nws", ["Northwestern Edoid"] = "alv-nwd", ["Northwestern Indo-Aryan"] = "inc-nwe", ["Northwestern Iranian"] = "ira-nwi", ["Northwestern Mande"] = "dmn-mnw", ["Nubian"] = "nub", ["Nuclear Ndu"] = "paa-nnd", ["Nuclear Polynesian"] = "poz-pnp", ["Numic"] = "azc-num", ["Numugen"] = "ngf-num", ["Nun"] = "nic-nun", ["Nungish"] = "sit-nng", ["Nupe-Gbagyi"] = "alv-ngb", ["Nupoid"] = "alv-nup", ["Nuristani"] = "iir-nur", ["Nuru"] = "ngf-nur", ["Nusoish"] = "tbq-nus", ["Nwa-Beng"] = "dmn-nbe", ["Nyali"] = "bnt-nya", ["Nyanga-Buyi"] = "bnt-nyb", ["Nyasa"] = "bnt-nys", ["Nyima"] = "sdv-nyi", ["Nyoro-Ganda"] = "bnt-nyg", ["Nyulnyulan"] = "aus-nyu", ["Nyun"] = "alv-nyn", ["Nzebi"] = "bnt-nze", ["Occitano-Romance"] = "roa-ocr", ["Oceanic"] = "poz-oce", ["Oghur"] = "trk-ogr", ["Oghuz"] = "trk-ogz", ["Ogoni"] = "nic-ogo", ["Ohio Valley Siouan"] = "sio-ohv", ["Ok"] = "ngf-okk", ["Old Indo-Aryan"] = "inc-old", ["Old Iranian"] = "ira-old", ["Old South Arabian"] = "sem-osa", ["Ometo"] = "omv-ome", ["Omosan"] = "ngf-omo", ["Omotic"] = "omv", ["Ongan"] = "qfa-ong", ["Ormuri-Parachi"] = "ira-orp", ["Orokaivic"] = "ngf-oro", ["Osco-Umbrian"] = "itc-sbl", ["Oti-Volta"] = "nic-ovo", ["Oto-Manguean"] = "omq", ["Oto-Pamean"] = "omq-otp", ["Otomacoan"] = "sai-otm", ["Otomi"] = "oto-otm", ["Otomian"] = "oto", ["Ottilien"] = "paa-ott", ["Outer Engan"] = "ngf-oen", ["Ovambo"] = "bnt-ova", ["Oïl"] = "roa-oil", ["Pacific Coast Athabaskan"] = "ath-pco", ["Pahari"] = "inc-pah", ["Pahoturi River"] = "paa-pah", ["Pakanic"] = "mkh-pkn", ["Pakawan"] = "nai-pak", ["Palaihnihan"] = "nai-pal", ["Palaungic"] = "mkh-pal", ["Palei"] = "paa-pal", ["Pama-Nyungan"] = "aus-pam", ["Paman"] = "aus-pmn", ["Paniai Lakes"] = "ngf-pan", ["Pano-Tacanan"] = "sai-pat", ["Panoan"] = "sai-pan", ["Papel"] = "alv-pap", ["Papuan"] = "paa", ["Para-Mongolic"] = "qfa-xgx", ["Pare"] = "bnt-par", ["Parji-Gadaba"] = "dra-pgd", ["Parukotoan"] = "sai-prk", ["Pashayi"] = "inc-pas", ["Pathan"] = "ira-pat", ["Pearic"] = "mkh-pea", ["Peba-Yaguan"] = "sai-pey", ["Peka"] = "ngf-pek", ["Pekodian"] = "sai-pek", ["Pemongan"] = "sai-pem", ["Pende"] = "bnt-pen", ["Permic"] = "urj-prm", ["Philippine"] = "phi", ["Phla-Pherá"] = "alv-pph", ["Phowa"] = "tbq-phw", ["Piawi"] = "paa-pia", ["Piman"] = "azc-pim", ["Pinghua"] = "zhx-pin", ["Piore River"] = "paa-pio", ["Plains Dogon"] = "nic-pld", ["Plateau"] = "nic-plt", ["Plateau Penutian"] = "nai-plp", ["Platoid"] = "nic-pla", ["Pnar-Khasi-Lyngngam"] = "aav-pkl", ["Polynesian"] = "poz-pol", ["Pomeranian"] = "zlw-pom", ["Pomo-Bomwali"] = "bnt-pob", ["Pomoan"] = "nai-pom", ["Pomoikan"] = "ngf-pom", ["Popolocan"] = "omq-pop", ["Porapora"] = "paa-por", ["Potou-Tano"] = "alv-ptn", ["Pumpokolic"] = "qfa-ypm", ["Punjabic"] = "inc-pan", ["Qiangic"] = "sit-qia", ["Quechuan"] = "qwe", ["Rai Coast"] = "ngf-rai", ["Rajasthani"] = "raj", ["Ramu"] = "paa-ram", ["Rasawa-Saponi"] = "paa-rsa", ["Rashad"] = "nic-ras", ["Rgyalrongic"] = "sit-rgy", ["Rhaeto-Romance"] = "roa-rhe", ["Ring"] = "nic-rng", ["Riverine Phula"] = "tbq-rph", ["Romance"] = "roa", ["Romani"] = "inc-rom", ["Ruboni"] = "paa-rub", ["Rufiji-Ruvuma"] = "bnt-rur", ["Rukwa"] = "bnt-ruk", ["Rungwe"] = "bnt-run", ["Ruvu"] = "bnt-ruv", ["Ruvuma"] = "bnt-rvm", ["Ryukyuan"] = "jpx-ryu", ["Sabahan"] = "poz-san", ["Sabaki"] = "bnt-sab", ["Sabakor"] = "ngf-sab", ["Sabi"] = "bnt-sbi", ["Sac-Fox-Kickapoo"] = "alg-sfk", ["Sahaptian"] = "nai-shp", ["Saharan"] = "ssa-sah", ["Sahu"] = "paa-sah", ["Saka"] = "xsc-sak", ["Saka-Wakhi"] = "xsc-skw", ["Sal"] = "tbq-bkj", ["Salish"] = "sal", ["Saluan-Banggai"] = "poz-slb", ["Sama-Bajaw"] = "poz-sbj", ["Samarokena-Airoran"] = "paa-saa", ["Sami"] = "smi", ["Samo"] = "dmn-sam", ["Samogo"] = "dmn-smg", ["Samoyedic"] = "syd", ["Samur"] = "cau-sam", ["Sanglechi-Ishkashimi"] = "ira-sgi", ["Sankwep"] = "ngf-san", ["Sapa-Southwestern Tai"] = "tai-sap", ["Sara"] = "csu-sar", ["Sarmatian"] = "xsc-sar", ["Sau-Angal-Kewa"] = "ngf-sak", ["Savanna"] = "alv-sav", ["Sawabantu"] = "bnt-saw", ["Scythian"] = "xsc", ["Selkup"] = "sel", ["Semitic"] = "sem", ["Sena"] = "bnt-sna", ["Senagi"] = "paa-sng", ["Senari"] = "alv-snr", ["Senegambian"] = "alv-sng", ["Sentani"] = "paa-sen", ["Senufo"] = "alv-snf", ["Sepik"] = "paa-sep", ["Serbi-Mongolic"] = "qfa-xgs", ["Sere"] = "nic-ser", ["Serra Hills"] = "paa-shi", ["Seuta"] = "bnt-seu", ["Shastan"] = "nai-shs", ["Shi-Havu"] = "bnt-shh", ["Shinaic"] = "inc-shn", ["Shirongolic"] = "xgn-shr", ["Shiroro"] = "nic-shi", ["Shona"] = "bnt-sho", ["Shughni-Roshani"] = "ira-shr", ["Shughni-Yazghulami"] = "ira-shy", ["Shughni-Yazghulami-Munji"] = "ira-sym", ["Siberian Turkic"] = "trk-sib", ["Siloid"] = "tbq-sil", ["Simbu"] = "ngf-sim", ["Sindhic"] = "inc-snd", ["Sinitic"] = "zhx", ["Sino-Bai"] = "sit-sba", ["Sino-Tibetan"] = "sit", ["Siouan"] = "sio", ["Siouan-Catawban"] = "nai-sca", ["Sira"] = "bnt-sir", ["Sisaala"] = "nic-sis", ["Sko"] = "paa-sko", ["Slavey"] = "den", ["Slavic"] = "sla", ["Sogdic"] = "ira-sgc", ["Sogdo-Bactrian"] = "ira-sbc", ["Sogeram"] = "ngf-sog", ["Soko-Kele"] = "bnt-ske", ["Somaloid"] = "cus-som", ["Songhay"] = "son", ["Soninke-Bobo"] = "dmn-snb", ["Sopac"] = "ngf-sop", ["Sorbian"] = "wen", ["Sotho-Tswana"] = "bnt-sts", ["South Bird's Head"] = "ngf-sbh", ["South Bougainville"] = "paa-sbo", ["South Cushitic"] = "cus-sou", ["South Dravidian"] = "dra-sou", ["South Dravidian I"] = "dra-sdo", ["South Dravidian II"] = "dra-sdt", ["South Plateau"] = "nic-pls", ["South Siberian Turkic"] = "trk-ssb", ["South Slavic"] = "zls", ["South Sulawesi"] = "poz-ssw", ["South Vanuatu"] = "poz-vns", ["Southeast Solomonic"] = "poz-sls", ["Southeastern Aramaic"] = "sem-ase", ["Southeastern Iranian"] = "ira-sei", ["Southeastern Loloish"] = "tbq-sel", ["Southeastern Mande"] = "dmn-mse", ["Southern Adelbert"] = "ngf-sad", ["Southern Bantoid"] = "nic-bds", ["Southern Bantu"] = "bnt-bso", ["Southern Gbaya"] = "gba-sou", ["Southern Great Andamanese"] = "qfa-ads", ["Southern Indo-Aryan"] = "inc-sou", ["Southern Jê"] = "sai-sje", ["Southern Loloish"] = "tbq-slo", ["Southern Luo"] = "sdv-los", ["Southern Min"] = "zhx-nan", ["Southern Mongolic"] = "xgn-sou", ["Southern Nilotic"] = "sdv-nis", ["Southern Nuristani"] = "nur-sou", ["Southern Oceanic"] = "poz-ocs", ["Southern Romance"] = "roa-sou", ["Southern Ryukyuan"] = "jpx-sry", ["Southern Samur"] = "cau-ssm", ["Southwest Bantu"] = "bnt-swb", ["Southwest Grassfields"] = "nic-grs", ["Southwest Pama-Nyungan"] = "aus-psw", ["Southwestern Brythonic"] = "cel-brs", ["Southwestern Edoid"] = "alv-swd", ["Southwestern Iranian"] = "ira-swi", ["Southwestern Mande"] = "dmn-msw", ["Southwestern Tai"] = "tai-swe", ["St. Matthias"] = "poz-stm", ["Supyire-Mamara"] = "alv-sma", ["Susu-Yalunka"] = "dmn-sya", ["Swahili"] = "bnt-swh", ["Ta-Arawak"] = "awd-taa", ["Tacanan"] = "sai-tac", ["Tagwana-Djimini"] = "alv-tdj", ["Tai"] = "tai", ["Taikat-Awyi"] = "paa-taa", ["Tainae-Akoye"] = "ngf-taa", ["Tairora"] = "ngf-tai", ["Takama"] = "bnt-tkm", ["Takic"] = "azc-tak", ["Talodi"] = "alv-tal", ["Talodi-Heiban"] = "alv-the", ["Taloid"] = "tbq-tal", ["Taman"] = "sdv-tmn", ["Tamangic"] = "sit-tam", ["Tamil-Kannada"] = "dra-tkn", ["Tamil-Kodagu"] = "dra-tkd", ["Tamil-Malayalam"] = "dra-tml", ["Tamiloid"] = "dra-tam", ["Tamolan"] = "paa-tam", ["Tangkhul-Maring"] = "sit-tma", ["Tangkhulic"] = "sit-tng", ["Tangkic"] = "aus-tnk", ["Tangko-Nakai"] = "ngf-tna", ["Tangsa-Nocte"] = "sit-tno", ["Tani"] = "sit-tan", ["Taracahitic"] = "azc-trc", ["Taranoan"] = "sai-tar", ["Tarokoid"] = "nic-tar", ["Tatic"] = "xme-ttc", ["Teberan"] = "paa-teb", ["Teke"] = "bnt-tek", ["Teke-Mbede"] = "bnt-tmb", ["Teluguic"] = "dra-tel", ["Temotu"] = "poz-tem", ["Tenda"] = "alv-ten", ["Tequistlatecan"] = "nai-tqn", ["Ternate-Tidore"] = "paa-tti", ["Teso-Turkana"] = "sdv-ttu", ["Tetela"] = "bnt-tet", ["Tharu"] = "inc-tha", ["Tibetic"] = "sit-tib", ["Tibeto-Burman"] = "tbq", ["Tiboran"] = "ngf-tib", ["Ticuna-Yuri"] = "sai-tyu", ["Timor-Alor-Pantar"] = "paa-tap", ["Timoric"] = "poz-tim", ["Tirio"] = "paa-tir", ["Tivoid"] = "nic-tiv", ["Tocharian"] = "ine-toc", ["Toda-Kota"] = "dra-tkt", ["Tomini-Tolitoli"] = "poz-tot", ["Tonda"] = "paa-ton", ["Tongic"] = "poz-ton", ["Tor"] = "paa-tor", ["Tor-Orya"] = "paa-too", ["Torricelli"] = "paa-trr", ["Totonacan"] = "nai-ttn", ["Totozoquean"] = "nai-tot", ["Trans-New Guinea"] = "ngf", ["Triqui"] = "omq-tri", ["Tsezian"] = "cau-tsz", ["Tshangla"] = "sit-tsk", ["Tsimshianic"] = "nai-tsi", ["Tsogo"] = "bnt-tso", ["Tswa-Ronga"] = "bnt-tsr", ["Tucanoan"] = "sai-tuc", ["Tujia"] = "sit-tja", ["Tulu-Koraga"] = "dra-tlk", ["Tungusic"] = "tuw", ["Tupi-Guarani"] = "tup-gua", ["Tupian"] = "tup", ["Turama-Kikori"] = "paa-tki", ["Turkic"] = "trk", ["Tuu"] = "khi-tuu", ["Tyrsenian"] = "qfa-tyn", ["Tày"] = "tai-tay", ["Ubangian"] = "nic-ubg", ["Udegheic"] = "tuw-udg", ["Ugric"] = "urj-ugr", ["Upper Cross River"] = "nic-ucr", ["Upriver Phula"] = "tbq-urp", ["Uralic"] = "urj", ["Uru-Chipaya"] = "sai-ucp", ["Uruwa"] = "ngf-uru", ["Utian"] = "nai-utn", ["Uto-Aztecan"] = "azc", ["Utu-Silopi"] = "ngf-usi", ["Vai-Kono"] = "dmn-vak", ["Vainakh"] = "cau-vay", ["Vale"] = "csu-val", ["Vasconic"] = "euq", ["Venezuelan Cariban"] = "sai-ven", ["Vietic"] = "mkh-vie", ["Volta-Congo"] = "nic-vco", ["Volta-Niger"] = "alv-von", ["Wahgi"] = "ngf-wah", ["Waja-Kam"] = "alv-wjk", ["Wakashan"] = "wak", ["Walio"] = "paa-wal", ["Wantoat-Awara"] = "ngf-waa", ["Wantoatic"] = "ngf-wan", ["Wapei"] = "paa-wap", ["Wapei-Palei"] = "paa-wpa", ["Wara-Natyoro"] = "alv-wan", ["Waris"] = "paa-war", ["Warup"] = "ngf-war", ["Wee"] = "kro-wee", ["Wenma-Southwestern Tai"] = "tai-wen", ["West Baltic"] = "bat-wes", ["West Barito"] = "poz-brw", ["West Bird's Head"] = "paa-wbh", ["West Chadic"] = "cdc-wst", ["West Dogon"] = "nic-dgw", ["West Germanic"] = "gmw", ["West Himalayish"] = "sit-whm", ["West Inland Gulf"] = "paa-wig", ["West Keram"] = "paa-wke", ["West Lakes Plain"] = "paa-wlp", ["West Manding"] = "dmn-wmn", ["West Mbam"] = "nic-mbw", ["West Ok"] = "ngf-wok", ["West Scandinavian"] = "gmq-wes", ["West Semitic"] = "sem-wes", ["West Slavic"] = "zlw", ["West Sogeram"] = "ngf-wso", ["West Tsezian"] = "cau-wts", ["West rGyalrongic"] = "sit-wgy", ["Western Aramaic"] = "sem-arw", ["Western Brythonic"] = "cel-brw", ["Western Eleman"] = "paa-wel", ["Western Gbaya"] = "gba-wes", ["Western Gurunsi"] = "nic-gnw", ["Western Hindi"] = "inc-hiw", ["Western Indo-Aryan"] = "inc-wes", ["Western Iranian"] = "ira-wes", ["Western Kho-Bwa"] = "sit-khw", ["Western Kiranti"] = "sit-kiw", ["Western Kru"] = "kro-wkr", ["Western Mande"] = "dmn-mdw", ["Western Ngbaka"] = "nic-nkw", ["Western Nilotic"] = "sdv-niw", ["Western Oceanic"] = "poz-ocw", ["Western Oti-Volta"] = "nic-wov", ["Western Pahari"] = "him", ["Western Pauwasi"] = "paa-wpw", ["Western Ring"] = "nic-rnw", ["Western Romance"] = "roa-wes", ["Western Samur"] = "cau-wsm", ["Wichí"] = "sai-wic", ["Wintuan"] = "nai-wtq", ["Witotoan"] = "sai-wit", ["Wojokesic"] = "ngf-woj", ["Worrorran"] = "aus-wor", ["Wotu-Wolio"] = "poz-wot", ["Wára-Kómnzo"] = "paa-wko", ["Xincan"] = "nai-xin", ["Yaganon"] = "ngf-yag", ["Yaka"] = "bnt-yak", ["Yali"] = "ngf-yal", ["Yam"] = "paa-yam", ["Yambasa"] = "nic-ymb", ["Yangmanic"] = "aus-yng", ["Yanomami"] = "sai-ynm", ["Yaqayic"] = "paa-yaq", ["Yareban"] = "ngf-yar", ["Yasa-Kombe"] = "bnt-yko", ["Yau-Nungon"] = "ngf-ynu", ["Yawa-Saweru"] = "paa-ysa", ["Yekhee"] = "alv-yek", ["Yeniseian"] = "qfa-yen", ["Yidinyic"] = "aus-yid", ["Yok-Utian"] = "nai-you", ["Yokuts"] = "yok", ["Yolngu"] = "aus-yol", ["Yom-Nawdm"] = "nic-yon", ["Yoruba"] = "alv-yor", ["Yoruboid"] = "alv-yrd", ["Yuat"] = "paa-yua", ["Yue"] = "zhx-yue", ["Yuin-Kuric"] = "aus-yuk", ["Yukaghir"] = "qfa-yuk", ["Yukian"] = "nai-ykn", ["Yukpan"] = "sai-yuk", ["Yukubenic"] = "nic-ykb", ["Yuman-Cochimí"] = "nai-yuc", ["Yungur"] = "alv-yun", ["Yupik"] = "ypk", ["Yupna"] = "ngf-yup", ["Zamba-Binza"] = "bnt-zbi", ["Zamucoan"] = "sai-zam", ["Zan"] = "ccs-zan", ["Zande"] = "znd", ["Zaparoan"] = "sai-zap", ["Zapotec"] = "omq-zpc", ["Zapotecan"] = "omq-zap", ["Zaza-Gorani"] = "ira-zgr", ["Zeme"] = "sit-zem", ["constructed"] = "art", ["contact"] = "qfa-cnt", ["creole"] = "qfa-cre", ["creole or pidgin"] = "crp", ["disputed affiliation"] = "qfa-dis", ["isolate"] = "qfa-iso", ["mixed"] = "qfa-mix", ["not a family"] = "qfa-not", ["pidgin"] = "qfa-pid", ["sign"] = "sgn", ["substrate"] = "qfa-sub", ["unclassifiable"] = "qfa-unc", } lxzfuax1eqqs3z14dn79rz5y135yr4f মডিউল:families/code to canonical name 828 123219 510615 324362 2026-06-11T02:57:47Z Hiyuune 11971 510615 Scribunto text/plain return { ["aav"] = "Austroasiatic", ["aav-khs"] = "Khasian", ["aav-nic"] = "Nicobarese", ["aav-pkl"] = "Pnar-Khasi-Lyngngam", ["afa"] = "Afroasiatic", ["alg"] = "Algonquian", ["alg-abp"] = "Abenaki-Penobscot", ["alg-ara"] = "Arapahoan", ["alg-eas"] = "Eastern Algonquian", ["alg-sfk"] = "Sac-Fox-Kickapoo", ["alv"] = "Atlantic-Congo", ["alv-aah"] = "Ayere-Ahan", ["alv-ada"] = "Adamawa", ["alv-bag"] = "Baga", ["alv-bak"] = "Bak", ["alv-bam"] = "Bambukic", ["alv-bny"] = "Banyum", ["alv-bua"] = "Bua", ["alv-bwj"] = "Bikwin-Jen", ["alv-cng"] = "Cangin", ["alv-ctn"] = "Central Tano", ["alv-dlt"] = "Delta Edoid", ["alv-dur"] = "Duru", ["alv-ede"] = "Ede", ["alv-edk"] = "Edekiri", ["alv-edo"] = "Edoid", ["alv-eeo"] = "Edo-Esan-Ora", ["alv-fli"] = "Fali", ["alv-fwo"] = "Fula-Wolof", ["alv-gbe"] = "Gbe", ["alv-gda"] = "Ga-Dangme", ["alv-gng"] = "Guang", ["alv-gtm"] = "Ghana-Togo Mountain", ["alv-hei"] = "Heiban", ["alv-ido"] = "Idomoid", ["alv-igb"] = "Igboid", ["alv-jfe"] = "Jola-Felupe", ["alv-jol"] = "Jola", ["alv-kim"] = "Kim", ["alv-kis"] = "Kissi", ["alv-krb"] = "Karaboro", ["alv-ktg"] = "Ka-Togo", ["alv-kul"] = "Kulango", ["alv-kwa"] = "Kwa", ["alv-lag"] = "Lagoon", ["alv-lek"] = "Leko", ["alv-lim"] = "Limba", ["alv-lni"] = "Leko-Nimbari", ["alv-mbd"] = "Mbum-Day", ["alv-mbm"] = "Mbum", ["alv-mel"] = "Mel", ["alv-mum"] = "Mumuye", ["alv-mye"] = "Mumuye-Yendang", ["alv-nal"] = "Nalu", ["alv-nce"] = "North-Central Edoid", ["alv-ngb"] = "Nupe-Gbagyi", ["alv-ntg"] = "Na-Togo", ["alv-nup"] = "Nupoid", ["alv-nwd"] = "Northwestern Edoid", ["alv-nyn"] = "Nyun", ["alv-pap"] = "Papel", ["alv-pph"] = "Phla-Pherá", ["alv-ptn"] = "Potou-Tano", ["alv-sav"] = "Savanna", ["alv-sma"] = "Supyire-Mamara", ["alv-snf"] = "Senufo", ["alv-sng"] = "Senegambian", ["alv-snr"] = "Senari", ["alv-swd"] = "Southwestern Edoid", ["alv-tal"] = "Talodi", ["alv-tdj"] = "Tagwana-Djimini", ["alv-ten"] = "Tenda", ["alv-the"] = "Talodi-Heiban", ["alv-von"] = "Volta-Niger", ["alv-wan"] = "Wara-Natyoro", ["alv-wjk"] = "Waja-Kam", ["alv-yek"] = "Yekhee", ["alv-yor"] = "Yoruba", ["alv-yrd"] = "Yoruboid", ["alv-yun"] = "Yungur", ["apa"] = "Apachean", ["aqa"] = "Alacalufan", ["aql"] = "Algic", ["art"] = "constructed", ["ath"] = "Athabaskan", ["ath-nor"] = "North Athabaskan", ["ath-pco"] = "Pacific Coast Athabaskan", ["auf"] = "Arauan", ["aus-arn"] = "Arnhem", ["aus-bub"] = "Bunuban", ["aus-cww"] = "Central New South Wales", ["aus-dal"] = "Daly", ["aus-dyb"] = "Dyirbalic", ["aus-gar"] = "Garawan", ["aus-gun"] = "Gunwinyguan", ["aus-jar"] = "Jarrakan", ["aus-kar"] = "Karnic", ["aus-mir"] = "Mirndi", ["aus-nga"] = "Ngayarda", ["aus-nyu"] = "Nyulnyulan", ["aus-pam"] = "Pama-Nyungan", ["aus-pmn"] = "Paman", ["aus-psw"] = "Southwest Pama-Nyungan", ["aus-rnd"] = "Arandic", ["aus-tnk"] = "Tangkic", ["aus-wdj"] = "Iwaidjan", ["aus-wor"] = "Worrorran", ["aus-yid"] = "Yidinyic", ["aus-yng"] = "Yangmanic", ["aus-yol"] = "Yolngu", ["aus-yuk"] = "Yuin-Kuric", ["awd"] = "Arawak", ["awd-nwk"] = "Nawiki", ["awd-taa"] = "Ta-Arawak", ["azc"] = "Uto-Aztecan", ["azc-cup"] = "Cupan", ["azc-dur"] = "Durango Nahuatl", ["azc-hua"] = "Huasteca Nahuatl", ["azc-nah"] = "Nahuan", ["azc-num"] = "Numic", ["azc-pim"] = "Piman", ["azc-tak"] = "Takic", ["azc-trc"] = "Taracahitic", ["bad"] = "Banda", ["bad-cnt"] = "Central Banda", ["bai"] = "Bamileke", ["bat"] = "Baltic", ["bat-eas"] = "East Baltic", ["bat-wes"] = "West Baltic", ["ber"] = "Berber", ["bnt"] = "Bantu", ["bnt-baf"] = "Bafia", ["bnt-bbo"] = "Bafo-Bonkeng", ["bnt-bdz"] = "Boma-Dzing", ["bnt-bek"] = "Bekwilic", ["bnt-bki"] = "Bena-Kinga", ["bnt-bmo"] = "Bangi-Moi", ["bnt-bne"] = "Northeast Bantu", ["bnt-bnm"] = "Bangi-Ntomba", ["bnt-boa"] = "Boan", ["bnt-bot"] = "Botatwe", ["bnt-bsa"] = "Basaa", ["bnt-bsh"] = "Bushoong", ["bnt-bso"] = "Southern Bantu", ["bnt-bta"] = "Bati-Angba", ["bnt-btb"] = "Beti", ["bnt-bte"] = "Bangi-Tetela", ["bnt-bun"] = "Buja-Ngombe", ["bnt-chg"] = "Chaga", ["bnt-cht"] = "Chaga-Taita", ["bnt-clu"] = "Chokwe-Luchazi", ["bnt-com"] = "Comorian", ["bnt-glb"] = "Great Lakes Bantu", ["bnt-haj"] = "Haya-Jita", ["bnt-kak"] = "Kako", ["bnt-kav"] = "Kavango", ["bnt-kbi"] = "Komo-Bira", ["bnt-kel"] = "Kele", ["bnt-kil"] = "Kilombero", ["bnt-kka"] = "Kikuyu-Kamba", ["bnt-kmb"] = "Kimbundu", ["bnt-kng"] = "Kongo", ["bnt-kpw"] = "Kpwe", ["bnt-ksb"] = "Kavango-Southwest Bantu", ["bnt-kts"] = "Kele-Tsogo", ["bnt-lbn"] = "Luban", ["bnt-leb"] = "Lebonya", ["bnt-lgb"] = "Lega-Binja", ["bnt-lok"] = "Logooli-Kuria", ["bnt-lub"] = "Luba", ["bnt-lun"] = "Lunda", ["bnt-mak"] = "Makua", ["bnt-mbb"] = "Mboshi-Buja", ["bnt-mbe"] = "Mbole-Enya", ["bnt-mbi"] = "Mbinga", ["bnt-mbo"] = "Mboshi", ["bnt-mbt"] = "Mbete", ["bnt-mby"] = "Mbeya", ["bnt-mij"] = "Mijikenda", ["bnt-mka"] = "Makaa", ["bnt-mne"] = "Manenguba", ["bnt-mnj"] = "Makaa-Njem", ["bnt-mon"] = "Mongo", ["bnt-mra"] = "Mbugwe-Rangi", ["bnt-msl"] = "Masaba-Luhya", ["bnt-mwi"] = "Mwika", ["bnt-ncb"] = "Northeast Coast Bantu", ["bnt-ndb"] = "Ndzem-Bomwali", ["bnt-ngn"] = "Ngondi-Ngiri", ["bnt-ngu"] = "Nguni", ["bnt-nya"] = "Nyali", ["bnt-nyb"] = "Nyanga-Buyi", ["bnt-nyg"] = "Nyoro-Ganda", ["bnt-nys"] = "Nyasa", ["bnt-nze"] = "Nzebi", ["bnt-ova"] = "Ovambo", ["bnt-par"] = "Pare", ["bnt-pen"] = "Pende", ["bnt-pob"] = "Pomo-Bomwali", ["bnt-ruk"] = "Rukwa", ["bnt-run"] = "Rungwe", ["bnt-rur"] = "Rufiji-Ruvuma", ["bnt-ruv"] = "Ruvu", ["bnt-rvm"] = "Ruvuma", ["bnt-sab"] = "Sabaki", ["bnt-saw"] = "Sawabantu", ["bnt-sbi"] = "Sabi", ["bnt-seu"] = "Seuta", ["bnt-shh"] = "Shi-Havu", ["bnt-sho"] = "Shona", ["bnt-sir"] = "Sira", ["bnt-ske"] = "Soko-Kele", ["bnt-sna"] = "Sena", ["bnt-sts"] = "Sotho-Tswana", ["bnt-swb"] = "Southwest Bantu", ["bnt-swh"] = "Swahili", ["bnt-tek"] = "Teke", ["bnt-tet"] = "Tetela", ["bnt-tkc"] = "Central Teke", ["bnt-tkm"] = "Takama", ["bnt-tmb"] = "Teke-Mbede", ["bnt-tso"] = "Tsogo", ["bnt-tsr"] = "Tswa-Ronga", ["bnt-yak"] = "Yaka", ["bnt-yko"] = "Yasa-Kombe", ["bnt-zbi"] = "Zamba-Binza", ["btk"] = "Batak", ["cau-abz"] = "Abkhaz-Abaza", ["cau-and"] = "Andian", ["cau-ava"] = "Avaro-Andian", ["cau-cir"] = "Circassian", ["cau-drg"] = "Dargwa", ["cau-esm"] = "Eastern Samur", ["cau-ets"] = "East Tsezian", ["cau-lzg"] = "Lezghian", ["cau-nec"] = "Northeast Caucasian", ["cau-nkh"] = "Nakh", ["cau-nwc"] = "Northwest Caucasian", ["cau-sam"] = "Samur", ["cau-ssm"] = "Southern Samur", ["cau-tsz"] = "Tsezian", ["cau-vay"] = "Vainakh", ["cau-wsm"] = "Western Samur", ["cau-wts"] = "West Tsezian", ["cba"] = "Chibchan", ["ccs"] = "Kartvelian", ["ccs-gzn"] = "Georgian-Zan", ["ccs-zan"] = "Zan", ["cdc"] = "Chadic", ["cdc-cbm"] = "Central Chadic", ["cdc-est"] = "East Chadic", ["cdc-mas"] = "Masa", ["cdc-wst"] = "West Chadic", ["cdd"] = "Caddoan", ["cel"] = "Celtic", ["cel-brs"] = "Southwestern Brythonic", ["cel-brw"] = "Western Brythonic", ["cel-bry"] = "Brythonic", ["cel-gae"] = "Goidelic", ["cel-his"] = "Hispano-Celtic", ["cel-ins"] = "Insular Celtic", ["chi"] = "Chimakuan", ["chm"] = "Mari", ["cmc"] = "Chamic", ["crp"] = "creole or pidgin", ["csu"] = "Central Sudanic", ["csu-bba"] = "Bongo-Bagirmi", ["csu-bbk"] = "Bongo-Baka", ["csu-bgr"] = "Bagirmi", ["csu-bkr"] = "Birri-Kresh", ["csu-ecs"] = "Eastern Central Sudanic", ["csu-kab"] = "Kaba", ["csu-lnd"] = "Lendu", ["csu-maa"] = "Mangbetu", ["csu-mle"] = "Mangbutu-Lese", ["csu-mma"] = "Moru-Madi", ["csu-sar"] = "Sara", ["csu-val"] = "Vale", ["cus"] = "Cushitic", ["cus-cen"] = "Central Cushitic", ["cus-eas"] = "East Cushitic", ["cus-hec"] = "Highland East Cushitic", ["cus-som"] = "Somaloid", ["cus-sou"] = "South Cushitic", ["day"] = "Land Dayak", ["del"] = "Lenape", ["den"] = "Slavey", ["dmn"] = "Mande", ["dmn-bbu"] = "Bisa-Busa", ["dmn-emn"] = "East Manding", ["dmn-jje"] = "Jogo-Jeri", ["dmn-man"] = "Manding", ["dmn-mda"] = "Mano-Dan", ["dmn-mdc"] = "Central Mande", ["dmn-mde"] = "Eastern Mande", ["dmn-mdw"] = "Western Mande", ["dmn-mjo"] = "Manding-Jogo", ["dmn-mmo"] = "Manding-Mokole", ["dmn-mnk"] = "Maninka", ["dmn-mnw"] = "Northwestern Mande", ["dmn-mok"] = "Mokole", ["dmn-mse"] = "Southeastern Mande", ["dmn-msw"] = "Southwestern Mande", ["dmn-mva"] = "Manding-Vai", ["dmn-nbe"] = "Nwa-Beng", ["dmn-sam"] = "Samo", ["dmn-smg"] = "Samogo", ["dmn-snb"] = "Soninke-Bobo", ["dmn-sya"] = "Susu-Yalunka", ["dmn-vak"] = "Vai-Kono", ["dmn-wmn"] = "West Manding", ["dra"] = "Dravidian", ["dra-cen"] = "Central Dravidian", ["dra-gki"] = "Gondi-Kui", ["dra-gon"] = "Gondi", ["dra-imd"] = "Irula-Muduga", ["dra-kan"] = "Kannadoid", ["dra-kki"] = "Konda-Kui", ["dra-kml"] = "Kurux-Malto", ["dra-knk"] = "Kolami-Naiki", ["dra-kod"] = "Kodagu", ["dra-kor"] = "Koraga", ["dra-mal"] = "Malayalamoid", ["dra-mdy"] = "Madiya", ["dra-mlo"] = "Malto", ["dra-mur"] = "Muria", ["dra-nor"] = "North Dravidian", ["dra-pgd"] = "Parji-Gadaba", ["dra-sdo"] = "South Dravidian I", ["dra-sdt"] = "South Dravidian II", ["dra-sou"] = "South Dravidian", ["dra-tam"] = "Tamiloid", ["dra-tel"] = "Teluguic", ["dra-tkd"] = "Tamil-Kodagu", ["dra-tkn"] = "Tamil-Kannada", ["dra-tkt"] = "Toda-Kota", ["dra-tlk"] = "Tulu-Koraga", ["dra-tml"] = "Tamil-Malayalam", ["egx"] = "Egyptian", ["ero"] = "Horpa", ["esx"] = "Eskimo-Aleut", ["esx-esk"] = "Eskimo", ["esx-inu"] = "Inuit", ["euq"] = "Vasconic", ["gba"] = "Gbaya", ["gba-eas"] = "Eastern Gbaya", ["gba-sou"] = "Southern Gbaya", ["gba-wes"] = "Western Gbaya", ["gem"] = "Germanic", ["gio"] = "Gelao", ["gme"] = "East Germanic", ["gmq"] = "North Germanic", ["gmq-eas"] = "East Scandinavian", ["gmq-ins"] = "Insular Scandinavian", ["gmq-wes"] = "West Scandinavian", ["gmw"] = "West Germanic", ["gmw-afr"] = "Anglo-Frisian", ["gmw-ang"] = "Anglic", ["gmw-fri"] = "Frisian", ["gmw-frk"] = "Low Franconian", ["gmw-hgm"] = "High German", ["gmw-ian"] = "Irish Anglo-Norman", ["gmw-lgm"] = "Low German", ["gmw-nsg"] = "North Sea Germanic", ["gn"] = "Guarani", ["grb"] = "Grebo proper", ["grk"] = "Hellenic", ["him"] = "Western Pahari", ["hmn"] = "Hmongic", ["hmx"] = "Hmong-Mien", ["hmx-mie"] = "Mienic", ["hok"] = "Hokan", ["hyx"] = "Armenian", ["iir"] = "Indo-Iranian", ["iir-nur"] = "Nuristani", ["ijo"] = "Ijoid", ["inc"] = "Indo-Aryan", ["inc-bas"] = "বাংলা-অসমীয়া", ["inc-bhi"] = "Bhil", ["inc-bih"] = "Bihari", ["inc-cen"] = "Central Indo-Aryan", ["inc-chi"] = "Chitrali", ["inc-dar"] = "Dardic", ["inc-dng"] = "Dangari", ["inc-dre"] = "Eastern Dardic", ["inc-eas"] = "Eastern Indo-Aryan", ["inc-hal"] = "Halbic", ["inc-hie"] = "Eastern Hindi", ["inc-hiw"] = "Western Hindi", ["inc-hnd"] = "Hindustani", ["inc-ins"] = "Insular Indo-Aryan", ["inc-kas"] = "Kashmiric", ["inc-koh"] = "Kohistani", ["inc-krd"] = "KRDS languages", ["inc-kun"] = "Kunar", ["inc-mid"] = "Middle Indo-Aryan", ["inc-nor"] = "Northern Indo-Aryan", ["inc-nwe"] = "Northwestern Indo-Aryan", ["inc-old"] = "Old Indo-Aryan", ["inc-pah"] = "Pahari", ["inc-pan"] = "Punjabic", ["inc-pas"] = "Pashayi", ["inc-rom"] = "Romani", ["inc-shn"] = "Shinaic", ["inc-snd"] = "Sindhic", ["inc-sou"] = "Southern Indo-Aryan", ["inc-tha"] = "Tharu", ["inc-wes"] = "Western Indo-Aryan", ["ine"] = "ইন্দো-ইউরোপীয়", ["ine-ana"] = "Anatolian", ["ine-bsl"] = "Balto-Slavic", ["ine-luw"] = "Luwic", ["ine-toc"] = "Tocharian", ["ira"] = "Iranian", ["ira-cen"] = "Central Iranian", ["ira-csp"] = "Caspian", ["ira-kms"] = "Komisenian", ["ira-mid"] = "Middle Iranian", ["ira-mny"] = "Munji-Yidgha", ["ira-mpr"] = "Medo-Parthian", ["ira-msh"] = "Mazanderani-Shahmirzadi", ["ira-nei"] = "Northeastern Iranian", ["ira-nwi"] = "Northwestern Iranian", ["ira-old"] = "Old Iranian", ["ira-orp"] = "Ormuri-Parachi", ["ira-pat"] = "Pathan", ["ira-sbc"] = "Sogdo-Bactrian", ["ira-sei"] = "Southeastern Iranian", ["ira-sgc"] = "Sogdic", ["ira-sgi"] = "Sanglechi-Ishkashimi", ["ira-shr"] = "Shughni-Roshani", ["ira-shy"] = "Shughni-Yazghulami", ["ira-swi"] = "Southwestern Iranian", ["ira-sym"] = "Shughni-Yazghulami-Munji", ["ira-wes"] = "Western Iranian", ["ira-zgr"] = "Zaza-Gorani", ["iro"] = "Iroquoian", ["iro-nor"] = "North Iroquoian", ["itc"] = "Italic", ["itc-laf"] = "Latino-Faliscan", ["itc-sbl"] = "Osco-Umbrian", ["jpx"] = "Japonic", ["jpx-nry"] = "Northern Ryukyuan", ["jpx-ryu"] = "Ryukyuan", ["jpx-sry"] = "Southern Ryukyuan", ["kar"] = "Karen", ["kca"] = "Khanty", ["khi-kal"] = "Kalahari Khoe", ["khi-khk"] = "Khoekhoe", ["khi-kho"] = "Khoe", ["khi-kkw"] = "Khoe-Kwadi", ["khi-kxa"] = "Kx'a", ["khi-tuu"] = "Tuu", ["kro"] = "Kru", ["kro-aiz"] = "Aizi", ["kro-bet"] = "Bété", ["kro-did"] = "Dida", ["kro-ekr"] = "Eastern Kru", ["kro-grb"] = "Grebo", ["kro-wee"] = "Wee", ["kro-wkr"] = "Western Kru", ["ku"] = "Kurdish", ["kv"] = "Komi", ["map"] = "Austronesian", ["map-ata"] = "Atayalic", ["mjg"] = "Monguor", ["mkh"] = "Mon-Khmer", ["mkh-asl"] = "Aslian", ["mkh-ban"] = "Bahnaric", ["mkh-kat"] = "Katuic", ["mkh-khm"] = "Khmuic", ["mkh-kmr"] = "Khmeric", ["mkh-mnc"] = "Monic", ["mkh-mng"] = "Mangic", ["mkh-nbn"] = "North Bahnaric", ["mkh-pal"] = "Palaungic", ["mkh-pea"] = "Pearic", ["mkh-pkn"] = "Pakanic", ["mkh-vie"] = "Vietic", ["mno"] = "Manobo", ["mns"] = "Mansi", ["mun"] = "Munda", ["myn"] = "Mayan", ["nai-cat"] = "Catawban", ["nai-chu"] = "Chumashan", ["nai-ckn"] = "Chinookan", ["nai-coo"] = "Coosan", ["nai-jcq"] = "Jicaquean", ["nai-ker"] = "Keresan", ["nai-klp"] = "Kalapuyan", ["nai-kta"] = "Kiowa-Tanoan", ["nai-len"] = "Lencan", ["nai-mdu"] = "Maiduan", ["nai-min"] = "Misumalpan", ["nai-miz"] = "Mixe-Zoquean", ["nai-mus"] = "Muskogean", ["nai-pak"] = "Pakawan", ["nai-pal"] = "Palaihnihan", ["nai-plp"] = "Plateau Penutian", ["nai-pom"] = "Pomoan", ["nai-sca"] = "Siouan-Catawban", ["nai-shp"] = "Sahaptian", ["nai-shs"] = "Shastan", ["nai-tot"] = "Totozoquean", ["nai-tqn"] = "Tequistlatecan", ["nai-tsi"] = "Tsimshianic", ["nai-ttn"] = "Totonacan", ["nai-utn"] = "Utian", ["nai-wtq"] = "Wintuan", ["nai-xin"] = "Xincan", ["nai-ykn"] = "Yukian", ["nai-you"] = "Yok-Utian", ["nai-yuc"] = "Yuman-Cochimí", ["ngf"] = "Trans-New Guinea", ["ngf-ais"] = "Aisian", ["ngf-ang"] = "Angan", ["ngf-ank"] = "Angal-Kewa", ["ngf-ask"] = "Asmat-Kamoro", ["ngf-asm"] = "Asmat", ["ngf-ata"] = "Ankave-Tainae-Akoye", ["ngf-awd"] = "Awyu-Dumut", ["ngf-awy"] = "Awyu", ["ngf-bda"] = "Becking-Dawi", ["ngf-bin"] = "Binanderean", ["ngf-boa"] = "Boane", ["ngf-bos"] = "Bosavi", ["ngf-bsi"] = "Baruya-Simbari", ["ngf-cda"] = "Central Dani", ["ngf-chw"] = "Chimbu-Wahgi", ["ngf-dag"] = "Dagan", ["ngf-dal"] = "Dallman", ["ngf-dan"] = "Dani", ["ngf-dum"] = "Dumut", ["ngf-ehu"] = "Eastern Huon", ["ngf-eku"] = "East Kutubuan", ["ngf-enc"] = "Engic", ["ngf-eng"] = "Engan", ["ngf-era"] = "Erap", ["ngf-eso"] = "East Sogeram", ["ngf-est"] = "East Strickland", ["ngf-eva"] = "Evapia", ["ngf-fgi"] = "Fore-Gimi", ["ngf-fhu"] = "Finisterre-Huon", ["ngf-fin"] = "Finisterre", ["ngf-gah"] = "Gahuku", ["ngf-gau"] = "Gauwa", ["ngf-gaw"] = "Greater Awyu", ["ngf-gbi"] = "Greater Binanderean", ["ngf-gko"] = "Gaena-Korafe", ["ngf-gmo"] = "Gusap-Mot", ["ngf-gor"] = "Goroka", ["ngf-gsu"] = "Gogodala-Suki", ["ngf-gum"] = "Gum", ["ngf-gvd"] = "Grand Valley Dani", ["ngf-hag"] = "Hagen", ["ngf-han"] = "Hanseman", ["ngf-huo"] = "Huon", ["ngf-jim"] = "Jimi", ["ngf-kab"] = "Kabwum", ["ngf-kai"] = "Kainantu", ["ngf-kak"] = "Kalam-Kobon", ["ngf-kau"] = "Kaukombar", ["ngf-kbm"] = "Kosorong-Burum-Mindik", ["ngf-kgo"] = "Kainantu-Goroka", ["ngf-khu"] = "Kewa-Huli", ["ngf-kma"] = "Kâte-Mape", ["ngf-kme"] = "Kapau-Menya", ["ngf-koi"] = "Koiarian", ["ngf-kok"] = "Kokon", ["ngf-kow"] = "Kowan", ["ngf-ksa"] = "Kalam-Southern Adelbert", ["ngf-kto"] = "Kube-Tobo", ["ngf-kts"] = "Komyandaret-Tsaukambo", ["ngf-kum"] = "Kumil", ["ngf-kya"] = "Kamano-Yagaria", ["ngf-lok"] = "Lowland Ok", ["ngf-mab"] = "Mabuso", ["ngf-mad"] = "Madang", ["ngf-mek"] = "Mek", ["ngf-min"] = "Mindjim", ["ngf-mok"] = "Mountain Ok", ["ngf-mom"] = "Mombum", ["ngf-msu"] = "Mian-Suganga", ["ngf-nad"] = "Northern Adelbert", ["ngf-nbi"] = "North Binanderean", ["ngf-nde"] = "Ndeiram", ["ngf-ngn"] = "Ngalik-Nduga", ["ngf-nso"] = "North Sogeram", ["ngf-num"] = "Numugen", ["ngf-nur"] = "Nuru", ["ngf-nwh"] = "Northwest Hanseman", ["ngf-oen"] = "Outer Engan", ["ngf-okk"] = "Ok", ["ngf-omo"] = "Omosan", ["ngf-oro"] = "Orokaivic", ["ngf-pan"] = "Paniai Lakes", ["ngf-pek"] = "Peka", ["ngf-pom"] = "Pomoikan", ["ngf-rai"] = "Rai Coast", ["ngf-sab"] = "Sabakor", ["ngf-sad"] = "Southern Adelbert", ["ngf-sak"] = "Sau-Angal-Kewa", ["ngf-san"] = "Sankwep", ["ngf-sbh"] = "South Bird's Head", ["ngf-sim"] = "Simbu", ["ngf-sog"] = "Sogeram", ["ngf-sop"] = "Sopac", ["ngf-taa"] = "Tainae-Akoye", ["ngf-tai"] = "Tairora", ["ngf-tib"] = "Tiboran", ["ngf-tna"] = "Tangko-Nakai", ["ngf-uru"] = "Uruwa", ["ngf-usi"] = "Utu-Silopi", ["ngf-waa"] = "Wantoat-Awara", ["ngf-wah"] = "Wahgi", ["ngf-wan"] = "Wantoatic", ["ngf-war"] = "Warup", ["ngf-woj"] = "Wojokesic", ["ngf-wok"] = "West Ok", ["ngf-wso"] = "West Sogeram", ["ngf-yag"] = "Yaganon", ["ngf-yal"] = "Yali", ["ngf-yar"] = "Yareban", ["ngf-ynu"] = "Yau-Nungon", ["ngf-yup"] = "Yupna", ["nic"] = "Niger-Congo", ["nic-alu"] = "Alumic", ["nic-bas"] = "Basa", ["nic-bbe"] = "Eastern Beboid", ["nic-bco"] = "Benue-Congo", ["nic-bcr"] = "Bantoid-Cross", ["nic-bdn"] = "Northern Bantoid", ["nic-bds"] = "Southern Bantoid", ["nic-beb"] = "Beboid", ["nic-ben"] = "Bendi", ["nic-beo"] = "Beromic", ["nic-bod"] = "Bantoid", ["nic-buk"] = "Buli-Koma", ["nic-bwa"] = "Bwa", ["nic-cde"] = "Central Delta", ["nic-cri"] = "Cross River", ["nic-dag"] = "Dagbani", ["nic-dak"] = "Dakoid", ["nic-dge"] = "Escarpment Dogon", ["nic-dgw"] = "West Dogon", ["nic-eko"] = "Ekoid", ["nic-eov"] = "Eastern Oti-Volta", ["nic-fru"] = "Furu", ["nic-gne"] = "Eastern Gurunsi", ["nic-gnn"] = "Northern Gurunsi", ["nic-gns"] = "Gurunsi", ["nic-gnw"] = "Western Gurunsi", ["nic-gre"] = "Eastern Grassfields", ["nic-grf"] = "Grassfields", ["nic-grm"] = "Gurma", ["nic-grs"] = "Southwest Grassfields", ["nic-gur"] = "Gur", ["nic-ief"] = "Ibibio-Efik", ["nic-jer"] = "Jera", ["nic-jkn"] = "Jukunoid", ["nic-jrn"] = "Jarawan", ["nic-jrw"] = "Jarawa", ["nic-kam"] = "Kambari", ["nic-kau"] = "Kauru", ["nic-kmk"] = "Kamuku", ["nic-kne"] = "East Kainji", ["nic-knj"] = "Kainji", ["nic-knn"] = "Northwest Kainji", ["nic-ktl"] = "Katloid", ["nic-lcr"] = "Lower Cross River", ["nic-mam"] = "Mamfe", ["nic-mba"] = "Mbam", ["nic-mbc"] = "Mba", ["nic-mbw"] = "West Mbam", ["nic-mmb"] = "Mambiloid", ["nic-mom"] = "Momo", ["nic-mre"] = "Moré", ["nic-ngd"] = "Ngbandi", ["nic-nge"] = "Ngemba", ["nic-ngk"] = "Ngbaka", ["nic-nin"] = "Ninzic", ["nic-nka"] = "Nkambe", ["nic-nkb"] = "Baka", ["nic-nke"] = "Eastern Ngbaka", ["nic-nkg"] = "Gbanziri", ["nic-nkk"] = "Kpala", ["nic-nkm"] = "Mbaka", ["nic-nkw"] = "Western Ngbaka", ["nic-npd"] = "North Plateau Dogon", ["nic-nun"] = "Nun", ["nic-nwa"] = "Nanga-Walo", ["nic-ogo"] = "Ogoni", ["nic-ovo"] = "Oti-Volta", ["nic-pla"] = "Platoid", ["nic-plc"] = "Central Plateau", ["nic-pld"] = "Plains Dogon", ["nic-ple"] = "East Plateau", ["nic-pls"] = "South Plateau", ["nic-plt"] = "Plateau", ["nic-ras"] = "Rashad", ["nic-rnc"] = "Central Ring", ["nic-rng"] = "Ring", ["nic-rnn"] = "Northern Ring", ["nic-rnw"] = "Western Ring", ["nic-ser"] = "Sere", ["nic-shi"] = "Shiroro", ["nic-sis"] = "Sisaala", ["nic-tar"] = "Tarokoid", ["nic-tiv"] = "Tivoid", ["nic-tvc"] = "Central Tivoid", ["nic-tvn"] = "Northern Tivoid", ["nic-ubg"] = "Ubangian", ["nic-uce"] = "East-West Upper Cross River", ["nic-ucn"] = "North-South Upper Cross River", ["nic-ucr"] = "Upper Cross River", ["nic-vco"] = "Volta-Congo", ["nic-wov"] = "Western Oti-Volta", ["nic-ykb"] = "Yukubenic", ["nic-ymb"] = "Yambasa", ["nic-yon"] = "Yom-Nawdm", ["njo"] = "Ao", ["nub"] = "Nubian", ["nub-hil"] = "Hill Nubian", ["nur-nor"] = "Northern Nuristani", ["nur-sou"] = "Southern Nuristani", ["omq"] = "Oto-Manguean", ["omq-cha"] = "Chatino", ["omq-chi"] = "Chinantecan", ["omq-cui"] = "Cuicatec", ["omq-maz"] = "Mazatecan", ["omq-mix"] = "Mixtecan", ["omq-mxt"] = "Mixtec", ["omq-otp"] = "Oto-Pamean", ["omq-pop"] = "Popolocan", ["omq-tri"] = "Triqui", ["omq-zap"] = "Zapotecan", ["omq-zpc"] = "Zapotec", ["omv"] = "Omotic", ["omv-aro"] = "Aroid", ["omv-diz"] = "Dizoid", ["omv-eom"] = "East Ometo", ["omv-gon"] = "Gonga", ["omv-mao"] = "Mao", ["omv-nom"] = "North Ometo", ["omv-ome"] = "Ometo", ["oto"] = "Otomian", ["oto-otm"] = "Otomi", ["paa"] = "Papuan", ["paa-aia"] = "Aian", ["paa-alp"] = "Alor-Pantar", ["paa-amu"] = "Amto-Musan", ["paa-ani"] = "Anim", ["paa-ara"] = "Arapesh", ["paa-arf"] = "Arafundi", ["paa-ata"] = "Ataitan", ["paa-baa"] = "Bayono-Awbono", ["paa-bai"] = "Baining", ["paa-baw"] = "Bosngun-Awar", ["paa-bew"] = "Bewani", ["paa-boa"] = "Boazi", ["paa-bor"] = "Border", ["paa-bul"] = "Bulaka River", ["paa-bvi"] = "Betaf-Vitou", ["paa-clp"] = "Central Lakes Plain", ["paa-dtu"] = "Doso-Turumsa", ["paa-ebh"] = "East Bird's Head", ["paa-eel"] = "Eastern Eleman", ["paa-egb"] = "East Geelvink Bay", ["paa-eke"] = "East Keram", ["paa-ele"] = "Eleman", ["paa-elp"] = "East Lakes Plain", ["paa-epw"] = "Eastern Pauwasi", ["paa-etf"] = "Eastern Trans-Fly", ["paa-eti"] = "East Timor", ["paa-fas"] = "Fas", ["paa-flp"] = "Far West Lakes Plain", ["paa-gkw"] = "Greater Kwerba", ["paa-gto"] = "Galela-Tobelo", ["paa-hya"] = "Heyo-Yahang", ["paa-ing"] = "Inland Gulf", ["paa-isk"] = "Inner Sko", ["paa-iwa"] = "Iwam", ["paa-kae"] = "Kamula-Elevala", ["paa-kan"] = "Kanum", ["paa-kay"] = "Kayagaric", ["paa-ker"] = "Keram", ["paa-kiw"] = "Kiwaian", ["paa-kko"] = "Kaure-Kosare", ["paa-koa"] = "Kombio-Arapesh", ["paa-kol"] = "Kolopom", ["paa-kom"] = "Kombio", ["paa-kun"] = "Kunimaipan", ["paa-kwa"] = "Kwalean", ["paa-kwe"] = "Kwerba proper", ["paa-kwo"] = "Kwomtari", ["paa-lla"] = "Loloda-Laba", ["paa-lma"] = "Left May", ["paa-lmu"] = "Lepki-Murkim", ["paa-lpl"] = "Lakes Plain", ["paa-lra"] = "Lower Ramu", ["paa-lse"] = "Lower Sepik", ["paa-mai"] = "Mairasi", ["paa-mal"] = "Mailuan", ["paa-mam"] = "Maimai", ["paa-man"] = "Manubaran", ["paa-mar"] = "Marienberg", ["paa-may"] = "Maybratic", ["paa-mbi"] = "Mbaham-Iha", ["paa-mby"] = "Marind-Boazi-Yaqay", ["paa-mmu"] = "Mandi-Muniwara", ["paa-mon"] = "Monumbo", ["paa-mri"] = "Marindic", ["paa-nam"] = "Nambu", ["paa-nbo"] = "North Bougainville", ["paa-ndu"] = "Ndu", ["paa-ngk"] = "Ngkolmpu", ["paa-nha"] = "North Halmahera", ["paa-nim"] = "Nimboran", ["paa-nnd"] = "Nuclear Ndu", ["paa-nnh"] = "Northern North Halmahera", ["paa-nto"] = "Namla-Tofanma", ["paa-ott"] = "Ottilien", ["paa-pah"] = "Pahoturi River", ["paa-pal"] = "Palei", ["paa-pia"] = "Piawi", ["paa-pio"] = "Piore River", ["paa-por"] = "Porapora", ["paa-ram"] = "Ramu", ["paa-rsa"] = "Rasawa-Saponi", ["paa-rub"] = "Ruboni", ["paa-saa"] = "Samarokena-Airoran", ["paa-sah"] = "Sahu", ["paa-sbo"] = "South Bougainville", ["paa-sen"] = "Sentani", ["paa-sep"] = "Sepik", ["paa-shi"] = "Serra Hills", ["paa-sko"] = "Sko", ["paa-sng"] = "Senagi", ["paa-taa"] = "Taikat-Awyi", ["paa-tam"] = "Tamolan", ["paa-tap"] = "Timor-Alor-Pantar", ["paa-teb"] = "Teberan", ["paa-tir"] = "Tirio", ["paa-tki"] = "Turama-Kikori", ["paa-ton"] = "Tonda", ["paa-too"] = "Tor-Orya", ["paa-tor"] = "Tor", ["paa-trr"] = "Torricelli", ["paa-tti"] = "Ternate-Tidore", ["paa-wal"] = "Walio", ["paa-wap"] = "Wapei", ["paa-war"] = "Waris", ["paa-wbh"] = "West Bird's Head", ["paa-wel"] = "Western Eleman", ["paa-wig"] = "West Inland Gulf", ["paa-wke"] = "West Keram", ["paa-wko"] = "Wára-Kómnzo", ["paa-wlp"] = "West Lakes Plain", ["paa-wpa"] = "Wapei-Palei", ["paa-wpw"] = "Western Pauwasi", ["paa-yam"] = "Yam", ["paa-yaq"] = "Yaqayic", ["paa-ysa"] = "Yawa-Saweru", ["paa-yua"] = "Yuat", ["phi"] = "Philippine", ["phi-kal"] = "Kalamian", ["poz"] = "Malayo-Polynesian", ["poz-aay"] = "Admiralty Islands", ["poz-bnn"] = "North Bornean", ["poz-bre"] = "East Barito", ["poz-brw"] = "West Barito", ["poz-bss"] = "Bali-Sasak-Sumbawa", ["poz-btk"] = "Bungku-Tolaki", ["poz-cet"] = "Central-Eastern Malayo-Polynesian", ["poz-clb"] = "Celebic", ["poz-cln"] = "New Caledonian", ["poz-cma"] = "Central Maluku", ["poz-hce"] = "Halmahera-Cenderawasih", ["poz-kal"] = "Kaili-Pamona", ["poz-lgx"] = "Lampungic", ["poz-mcm"] = "Malayo-Chamic", ["poz-mic"] = "Micronesian", ["poz-mly"] = "Malayic", ["poz-msa"] = "Malayo-Sumbawan", ["poz-mun"] = "Muna-Buton", ["poz-nws"] = "Northwest Sumatran", ["poz-occ"] = "Central-Eastern Oceanic", ["poz-oce"] = "Oceanic", ["poz-ocs"] = "Southern Oceanic", ["poz-ocw"] = "Western Oceanic", ["poz-pcc"] = "Central Pacific", ["poz-pep"] = "Eastern Polynesian", ["poz-pnp"] = "Nuclear Polynesian", ["poz-pol"] = "Polynesian", ["poz-san"] = "Sabahan", ["poz-sbj"] = "Sama-Bajaw", ["poz-slb"] = "Saluan-Banggai", ["poz-sls"] = "Southeast Solomonic", ["poz-ssw"] = "South Sulawesi", ["poz-stm"] = "St. Matthias", ["poz-swa"] = "North Sarawakan", ["poz-tem"] = "Temotu", ["poz-tim"] = "Timoric", ["poz-ton"] = "Tongic", ["poz-tot"] = "Tomini-Tolitoli", ["poz-vnc"] = "Central Vanuatu", ["poz-vnn"] = "North Vanuatu", ["poz-vns"] = "South Vanuatu", ["poz-wot"] = "Wotu-Wolio", ["pqe"] = "Eastern Malayo-Polynesian", ["qfa-adc"] = "Central Great Andamanese", ["qfa-adm"] = "Great Andamanese", ["qfa-adn"] = "Northern Great Andamanese", ["qfa-ads"] = "Southern Great Andamanese", ["qfa-ain"] = "Ainuic", ["qfa-bej"] = "Be-Jizhao", ["qfa-bet"] = "Be-Tai", ["qfa-buy"] = "Buyang", ["qfa-cka"] = "Chukotko-Kamchatkan", ["qfa-ckn"] = "Chukotkan", ["qfa-cnt"] = "contact", ["qfa-cre"] = "creole", ["qfa-dgn"] = "Dogon", ["qfa-dis"] = "disputed affiliation", ["qfa-dny"] = "Dene-Yeniseian", ["qfa-hur"] = "Hurro-Urartian", ["qfa-iso"] = "isolate", ["qfa-kad"] = "Kadu", ["qfa-kms"] = "Kam-Sui", ["qfa-kor"] = "Koreanic", ["qfa-kra"] = "Kra", ["qfa-lic"] = "Hlai", ["qfa-mch"] = "Macro-Chibchan", ["qfa-mix"] = "mixed", ["qfa-not"] = "not a family", ["qfa-onb"] = "Be", ["qfa-ong"] = "Ongan", ["qfa-pid"] = "pidgin", ["qfa-sub"] = "substrate", ["qfa-tak"] = "Kra-Dai", ["qfa-tyn"] = "Tyrsenian", ["qfa-unc"] = "unclassifiable", ["qfa-xgs"] = "Serbi-Mongolic", ["qfa-xgx"] = "Para-Mongolic", ["qfa-yen"] = "Yeniseian", ["qfa-yke"] = "Ketic", ["qfa-yko"] = "Kottic", ["qfa-ypm"] = "Pumpokolic", ["qfa-yrn"] = "Arinic", ["qfa-yuk"] = "Yukaghir", ["qwe"] = "Quechuan", ["raj"] = "Rajasthani", ["roa"] = "Romance", ["roa-asl"] = "Asturleonese", ["roa-cas"] = "Castilian", ["roa-dal"] = "Dalmatian Romance", ["roa-eas"] = "Eastern Romance", ["roa-emr"] = "Emilian-Romagnol", ["roa-gap"] = "Galician-Portuguese", ["roa-gar"] = "Gallo-Romance", ["roa-git"] = "Gallo-Italic", ["roa-grh"] = "Gallo-Rhaetian", ["roa-ibe"] = "Ibero-Romance", ["roa-itd"] = "Italo-Dalmatian", ["roa-itr"] = "Italo-Romance", ["roa-iwr"] = "Italo-Western Romance", ["roa-nar"] = "Navarro-Aragonese", ["roa-ocr"] = "Occitano-Romance", ["roa-oil"] = "Oïl", ["roa-rhe"] = "Rhaeto-Romance", ["roa-sou"] = "Southern Romance", ["roa-wes"] = "Western Romance", ["sai-ara"] = "Araucanian", ["sai-aym"] = "Aymaran", ["sai-bar"] = "Barbacoan", ["sai-bor"] = "Boran", ["sai-cah"] = "Cahuapanan", ["sai-car"] = "Cariban", ["sai-cer"] = "Cerrado", ["sai-chc"] = "Chocoan", ["sai-cho"] = "Chonan", ["sai-cje"] = "Central Jê", ["sai-cpc"] = "Chapacuran", ["sai-crn"] = "Charruan", ["sai-ctc"] = "Catacaoan", ["sai-guc"] = "Guaicuruan", ["sai-guh"] = "Guahiban", ["sai-gui"] = "Guianan", ["sai-har"] = "Harákmbut", ["sai-hkt"] = "Harákmbut-Katukinan", ["sai-hrp"] = "Huarpean", ["sai-jee"] = "Jê", ["sai-jir"] = "Jirajaran", ["sai-jiv"] = "Jivaroan", ["sai-ktk"] = "Katukinan", ["sai-kui"] = "Kuikuroan", ["sai-map"] = "Mapoyan", ["sai-mas"] = "Mascoian", ["sai-mgc"] = "Mataco-Guaicuru", ["sai-mje"] = "Macro-Jê", ["sai-mtc"] = "Matacoan", ["sai-mur"] = "Muran", ["sai-nad"] = "Nadahup", ["sai-nje"] = "Northern Jê", ["sai-nmk"] = "Nambikwaran", ["sai-otm"] = "Otomacoan", ["sai-pan"] = "Panoan", ["sai-pat"] = "Pano-Tacanan", ["sai-pek"] = "Pekodian", ["sai-pem"] = "Pemongan", ["sai-pey"] = "Peba-Yaguan", ["sai-prk"] = "Parukotoan", ["sai-sje"] = "Southern Jê", ["sai-tac"] = "Tacanan", ["sai-tar"] = "Taranoan", ["sai-tuc"] = "Tucanoan", ["sai-tyu"] = "Ticuna-Yuri", ["sai-ucp"] = "Uru-Chipaya", ["sai-ven"] = "Venezuelan Cariban", ["sai-wic"] = "Wichí", ["sai-wit"] = "Witotoan", ["sai-ynm"] = "Yanomami", ["sai-yuk"] = "Yukpan", ["sai-zam"] = "Zamucoan", ["sai-zap"] = "Zaparoan", ["sal"] = "Salish", ["sdv"] = "Eastern Sudanic", ["sdv-bri"] = "Bari", ["sdv-daj"] = "Daju", ["sdv-dnu"] = "Dinka-Nuer", ["sdv-eje"] = "Eastern Jebel", ["sdv-kln"] = "Kalenjin", ["sdv-lma"] = "Lotuko-Maa", ["sdv-lon"] = "Northern Luo", ["sdv-los"] = "Southern Luo", ["sdv-luo"] = "Luo", ["sdv-nes"] = "Northern Eastern Sudanic", ["sdv-nie"] = "Eastern Nilotic", ["sdv-nil"] = "Nilotic", ["sdv-nis"] = "Southern Nilotic", ["sdv-niw"] = "Western Nilotic", ["sdv-nma"] = "Nandi-Markweta", ["sdv-nyi"] = "Nyima", ["sdv-tmn"] = "Taman", ["sdv-ttu"] = "Teso-Turkana", ["sel"] = "Selkup", ["sem"] = "Semitic", ["sem-ara"] = "Aramaic", ["sem-arb"] = "Arabic", ["sem-are"] = "Eastern Aramaic", ["sem-arw"] = "Western Aramaic", ["sem-ase"] = "Southeastern Aramaic", ["sem-can"] = "Canaanite", ["sem-cen"] = "Central Semitic", ["sem-cna"] = "Central Neo-Aramaic", ["sem-eas"] = "East Semitic", ["sem-eth"] = "Ethiopian Semitic", ["sem-nna"] = "Northeastern Neo-Aramaic", ["sem-nwe"] = "Northwest Semitic", ["sem-osa"] = "Old South Arabian", ["sem-sar"] = "Modern South Arabian", ["sem-wes"] = "West Semitic", ["sgn"] = "sign", ["sgn-asl"] = "American Sign Languages", ["sgn-fsl"] = "French Sign Languages", ["sgn-gsl"] = "German Sign Languages", ["sgn-jsl"] = "Japanese Sign Languages", ["sio"] = "Siouan", ["sio-dhe"] = "Dhegihan", ["sio-dkt"] = "Dakotan", ["sio-mor"] = "Missouri River Siouan", ["sio-msv"] = "Mississippi Valley Siouan", ["sio-ohv"] = "Ohio Valley Siouan", ["sit"] = "Sino-Tibetan", ["sit-aao"] = "Central Naga", ["sit-alm"] = "Almora", ["sit-bai"] = "Bai", ["sit-bdi"] = "Bodish", ["sit-cln"] = "Cai-Long", ["sit-dhi"] = "Dhimalish", ["sit-ebo"] = "East Bodish", ["sit-egy"] = "East rGyalrongic", ["sit-ers"] = "Ersuic", ["sit-gma"] = "Greater Magaric", ["sit-gsi"] = "Greater Siangic", ["sit-hrs"] = "Hrusish", ["sit-jnp"] = "Jingphoic", ["sit-jpl"] = "Kachin-Luic", ["sit-kch"] = "Konyak-Chang", ["sit-kha"] = "Kham", ["sit-khb"] = "Kho-Bwa", ["sit-khc"] = "Chug-Lish", ["sit-khm"] = "Mey-Sartang", ["sit-khw"] = "Western Kho-Bwa", ["sit-kic"] = "Central Kiranti", ["sit-kie"] = "Eastern Kiranti", ["sit-kin"] = "Kinnauric", ["sit-kir"] = "Kiranti", ["sit-kiw"] = "Western Kiranti", ["sit-kon"] = "Northern Naga", ["sit-kyk"] = "Kyirong-Kagate", ["sit-lab"] = "Ladakhi-Balti", ["sit-las"] = "Lahuli-Spiti", ["sit-luu"] = "Luish", ["sit-mar"] = "Maringic", ["sit-mba"] = "Macro-Bai", ["sit-mdz"] = "Midzu", ["sit-mnz"] = "Mondzish", ["sit-mru"] = "Mruic", ["sit-nas"] = "Naish", ["sit-nax"] = "Naic", ["sit-nba"] = "Northern Bai", ["sit-new"] = "Newaric", ["sit-nng"] = "Nungish", ["sit-qia"] = "Qiangic", ["sit-rgy"] = "Rgyalrongic", ["sit-sba"] = "Sino-Bai", ["sit-tam"] = "Tamangic", ["sit-tan"] = "Tani", ["sit-tib"] = "Tibetic", ["sit-tja"] = "Tujia", ["sit-tma"] = "Tangkhul-Maring", ["sit-tng"] = "Tangkhulic", ["sit-tno"] = "Tangsa-Nocte", ["sit-tsk"] = "Tshangla", ["sit-wgy"] = "West rGyalrongic", ["sit-whm"] = "West Himalayish", ["sit-zem"] = "Zeme", ["sla"] = "Slavic", ["smi"] = "Sami", ["son"] = "Songhay", ["sqj"] = "Albanian", ["ssa"] = "Nilo-Saharan", ["ssa-fur"] = "Fur", ["ssa-klk"] = "Kuliak", ["ssa-kom"] = "Koman", ["ssa-sah"] = "Saharan", ["syd"] = "Samoyedic", ["syd-ene"] = "Enets", ["tai"] = "Tai", ["tai-cen"] = "Central Tai", ["tai-cho"] = "Chongzuo Tai", ["tai-nor"] = "Northern Tai", ["tai-sap"] = "Sapa-Southwestern Tai", ["tai-swe"] = "Southwestern Tai", ["tai-tay"] = "Tày", ["tai-wen"] = "Wenma-Southwestern Tai", ["tbq"] = "Tibeto-Burman", ["tbq-anp"] = "Angami-Pochuri", ["tbq-axi"] = "Axioid", ["tbq-bdg"] = "Bodo-Garo", ["tbq-bis"] = "Bisoid", ["tbq-bka"] = "Bi-Ka", ["tbq-bkj"] = "Sal", ["tbq-brm"] = "Burmish", ["tbq-buq"] = "Burmo-Qiangic", ["tbq-drp"] = "Downriver Phula", ["tbq-han"] = "Hanoid", ["tbq-hph"] = "Highland Phula", ["tbq-jin"] = "Jino", ["tbq-kuk"] = "Kuki-Chin", ["tbq-kzh"] = "Kazhuoish", ["tbq-lal"] = "Lalo", ["tbq-lho"] = "Lahoish", ["tbq-llo"] = "Lipo-Lolopo", ["tbq-lob"] = "Lolo-Burmese", ["tbq-lol"] = "Loloish", ["tbq-lso"] = "Lisoish", ["tbq-lwo"] = "Lawoish", ["tbq-muj"] = "Muji", ["tbq-nas"] = "Nasoid", ["tbq-nis"] = "Nisu", ["tbq-nlo"] = "Northern Loloish", ["tbq-nso"] = "Nisoish", ["tbq-nus"] = "Nusoish", ["tbq-phw"] = "Phowa", ["tbq-rph"] = "Riverine Phula", ["tbq-sel"] = "Southeastern Loloish", ["tbq-sil"] = "Siloid", ["tbq-slo"] = "Southern Loloish", ["tbq-tal"] = "Taloid", ["tbq-urp"] = "Upriver Phula", ["trk"] = "Turkic", ["trk-cmn"] = "Common Turkic", ["trk-kar"] = "Karluk", ["trk-kbu"] = "Kipchak-Bulgar", ["trk-kcu"] = "Kipchak-Cuman", ["trk-kip"] = "Kipchak", ["trk-kkp"] = "Kyrgyz-Kipchak", ["trk-kno"] = "Kipchak-Nogai", ["trk-nsb"] = "North Siberian Turkic", ["trk-ogr"] = "Oghur", ["trk-ogz"] = "Oghuz", ["trk-sib"] = "Siberian Turkic", ["trk-ssb"] = "South Siberian Turkic", ["tup"] = "Tupian", ["tup-gua"] = "Tupi-Guarani", ["tuw"] = "Tungusic", ["tuw-ewe"] = "Ewenic", ["tuw-jrc"] = "Jurchenic", ["tuw-nan"] = "Nanaic", ["tuw-udg"] = "Udegheic", ["urj"] = "Uralic", ["urj-fin"] = "Finnic", ["urj-mdv"] = "Mordvinic", ["urj-prm"] = "Permic", ["urj-ugr"] = "Ugric", ["wak"] = "Wakashan", ["wen"] = "Sorbian", ["xgn"] = "Mongolic", ["xgn-cen"] = "Central Mongolic", ["xgn-shr"] = "Shirongolic", ["xgn-sou"] = "Southern Mongolic", ["xme"] = "Median", ["xme-ttc"] = "Tatic", ["xnd"] = "Na-Dene", ["xsc"] = "Scythian", ["xsc-sak"] = "Saka", ["xsc-sar"] = "Sarmatian", ["xsc-skw"] = "Saka-Wakhi", ["yok"] = "Yokuts", ["ypk"] = "Yupik", ["yrk"] = "Nenets", ["zhx"] = "Sinitic", ["zhx-com"] = "Coastal Min", ["zhx-inm"] = "Inland Min", ["zhx-man"] = "Mandarinic", ["zhx-min"] = "Min", ["zhx-nan"] = "Southern Min", ["zhx-pin"] = "Pinghua", ["zhx-yue"] = "Yue", ["zle"] = "East Slavic", ["zls"] = "South Slavic", ["zlw"] = "West Slavic", ["zlw-lch"] = "Lechitic", ["zlw-pom"] = "Pomeranian", ["znd"] = "Zande", } 45exgjb53oygwizyywyvpi48p6yebel মডিউল:languages/data/3/k 828 123310 510624 509687 2026-06-11T04:27:08Z Redmin 6857 +kiu 510624 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["kaa"] = { "Karakalpak", 33541, "trk-kno", "Latn, Cyrl, fa-Arab", dotted_dotless_i = true, entry_name = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { Latn = { from = { -- Sort the old orthography (using the apostrophe) after the new orthography (using the acute accent). "í", "iʼ", "i", -- Ensure "i" comes after "í", "iʼ", "ı". "sh", "ch", "á", "aʼ", "ǵ", "gʼ", "x", p[4], p[5], "ı", "q", "ń", "nʼ", "ó", "oʼ", "ú", "uʼ", "c" }, to = { p[4], p[5], "i" .. p[3], "z" .. p[1], "z" .. p[3], "a" .. p[1], "a" .. p[2], "g" .. p[1], "g" .. p[2], "h" .. p[1], "i", "i" .. p[1], "i" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1], "u" .. p[2], "z" .. p[2] } }, Cyrl = { from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ү", "ў", "ҳ"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1]} }, }, } m["kab"] = { "Kabyle", 35853, "ber", "Latn, Arab, Tfng", } m["kac"] = { "Jingpho", 33332, "sit-jnp", "Latn, Mymr", } m["kad"] = { "Kadara", 3914011, "nic-plc", "Latn", } m["kae"] = { "Ketangalan", 2779411, "map", } m["kaf"] = { "Katso", 246122, "tbq-kzh", } m["kag"] = { "Kajaman", 6348863, "poz", "Latn", } m["kah"] = { "Fer", 5443742, "csu-bgr", "Latn", } m["kai"] = { "Karekare", 3438770, "cdc-wst", "Latn", } m["kaj"] = { "Jju", 35401, "nic-plc", "Latn", } m["kak"] = { "Kayapa Kallahan", 3192220, "phi", "Latn", } m["kam"] = { "Kamba", 2574767, "bnt-kka", "Latn", } m["kao"] = { "Kassonke", 36905, "dmn-wmn", "Latn", } m["kap"] = { "Bezhta", 33054, "cau-ets", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["kaq"] = { "Capanahua", 2937196, "sai-pan", "Latn", } m["kaw"] = { "Old Javanese", 49341, "poz", "Latn, Java, Kawi", translit = "jv-translit", --same as jv } m["kax"] = { "Kao", 3192799, "paa-nha" } m["kay"] = { "Kamayurá", 3192336, "tup-gua", "Latn", } m["kba"] = { "Kalarko", 5517764, "aus-pam", "Latn", } m["kbb"] = { "Kaxuyana", 12953626, "sai-prk", "Latn", } m["kbc"] = { "Kadiwéu", 18168288, "sai-guc", "Latn", } m["kbd"] = { "Kabardian", 33522, "cau-cir", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-cir-translit", Arab = "ar-translit", }, override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = { Cyrl = s["cau-Cyrl-entryname"], Latn = s["cau-Latn-entryname"], }, sort_key = { Cyrl = { from = { "кхъу", "къӏу", -- 4 chars "гъу", "джу", "дзу", "жъу", "къу", "кхъ", "къӏ", "кӏу", "кӏь", "лъу", "лӏу", "пӏу", "сӏу", "тӏу", "фӏу", "хъу", "цӏу", "чъу", "чӏу", "шъу", "шӏу", "щӏу", -- 3 chars "гу", "гъ", "гь", "дж", "дз", "ё", "жъ", "жь", "ку", "къ", "кь", "кӏ", "лъ", "ль", "лӏ", "пӏ", "сӏ", "тӏ", "фӏ", "ху", "хъ", "хь", "цу", "цӏ", "чу", "чъ", "чӏ", "шъ", "шӏ", "щӏ", "ӏу", "ӏь", -- 2 chars "э" -- 1 char }, to = { "к" .. p[5], "к" .. p[7], "г" .. p[3], "д" .. p[2], "д" .. p[4], "ж" .. p[2], "к" .. p[3], "к" .. p[4], "к" .. p[6], "к" .. p[10], "к" .. p[11], "л" .. p[2], "л" .. p[5], "п" .. p[2], "с" .. p[2], "т" .. p[2], "ф" .. p[2], "х" .. p[3], "ц" .. p[3], "ч" .. p[3], "ч" .. p[5], "ш" .. p[2], "ш" .. p[4], "щ" .. p[2], "г" .. p[1], "г" .. p[2], "г" .. p[4], "д" .. p[1], "д" .. p[3], "е" .. p[1], "ж" .. p[1], "ж" .. p[3], "к" .. p[1], "к" .. p[2], "к" .. p[8], "к" .. p[9], "л" .. p[1], "л" .. p[3], "л" .. p[4], "п" .. p[1], "с" .. p[1], "т" .. p[1], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[4], "ц" .. p[1], "ц" .. p[2], "ч" .. p[1], "ч" .. p[2], "ч" .. p[4], "ш" .. p[1], "ш" .. p[3], "щ" .. p[1], "ӏ" .. p[1], "ӏ" .. p[2], "а" .. p[1] } }, }, } m["kbe"] = { "Kanju", 10543322, "aus-pam", "Latn", } m["kbh"] = { "Camsá", 2842667, "qfa-iso", "Latn", } m["kbi"] = { "Kaptiau", 6367294, "poz-oce", "Latn", } m["kbj"] = { "Kari", 6370438, "bnt-boa", "Latn", } m["kbk"] = { "Grass Koiari", 12952642, "ngf", "Latn", } m["kbm"] = { "Iwal", 3156391, "poz-ocw", "Latn", } m["kbn"] = { "Kare (Africa)", 35554, "alv-mbm", "Latn", } m["kbo"] = { "Keliko", 11275553, "csu-mma", } m["kbp"] = { "Kabiyé", 35475, "nic-gne", "Latn", } m["kbq"] = { "Kamano", 11732272, "paa-kag", "Latn", } m["kbr"] = { "Kafa", 35481, "omv-gon", "Ethi, Latn", } m["kbs"] = { "Kande", 35556, "bnt-tso", "Latn", } m["kbt"] = { "Gabadi", 3291159, "poz-ocw", "Latn", } m["kbu"] = { "Kabutra", 10966761, "raj", } m["kbv"] = { "Kamberataro", 5261289, "paa", "Latn", } m["kbw"] = { "Kaiep", 6347632, "poz-ocw", "Latn", } m["kbx"] = { "Ap Ma", 56298, "paa-ram", } m["kbz"] = { "Duhwa", 56295, "cdc-wst", "Latn", } m["kcb"] = { "Kawacha", 11732302, "ngf", } m["kcc"] = { "Lubila", 3914381, "nic-uce", "Latn", } m["kcd"] = { "Ngkâlmpw Kanum", 12952566, "paa-yam", } m["kce"] = { "Kaivi", 6348685, "nic-kau", } m["kcf"] = { "Ukaan", 36651, "nic-bco", } m["kcg"] = { "Tyap", 3912765, "nic-plc", "Latn", } m["kch"] = { "Vono", 3913920, "nic-kau", } m["kci"] = { "Kamantan", 3914019, "nic-plc", } m["kcj"] = { "Kobiana", 35609, "alv-nyn", } m["kck"] = { "Kalanga", 33672, "bnt-sho", "Latn", } m["kcl"] = { "Kala", 6349982, "poz-ocw", "Latn", } m["kcm"] = { "Tar Gula", 277963, "csu-bba", } m["kcn"] = { "Nubi", 36388, "crp", "Latn, Arab", ancestors = "apd", entry_name = {remove_diacritics = c.acute}, } m["kco"] = { "Kinalakna", 11732320, "ngf", } m["kcp"] = { "Kanga", 6362384, "qfa-kad", "Latn", } m["kcq"] = { "Kamo", 3914879, "alv-wjk", } m["kcr"] = { "Katla", 35688, "nic-ktl", } m["kcs"] = { "Koenoem", 3438755, "cdc-wst", } m["kct"] = { "Kaian", 6347538, "paa-ram", } m["kcu"] = { "Kikami", 3915212, "bnt-ruv", "Latn", } m["kcv"] = { "Kete", 3195598, "bnt-lub", } m["kcw"] = { "Kabwari", 6344539, "bnt-glb", } m["kcx"] = { "Kachama-Ganjule", 12634070, "omv-eom", } m["kcy"] = { "Korandje", 33427, "son", } m["kcz"] = { "Konongo", 11732345, "bnt-tkm", "Latn", } m["kda"] = { "Worimi", 3914062, "aus-pam", "Latn", } m["kdc"] = { "Kutu", 6448634, "bnt-ruv", } m["kdd"] = { "Yankunytjatjara", 34207, "aus-pam", "Latn", } m["kde"] = { "Makonde", 35172, "bnt-rvm", "Latn", } m["kdf"] = { "Mamusi", 6746036, "poz-ocw", "Latn", } m["kdg"] = { "Seba", 7442316, "bnt-sbi", "Latn", } m["kdh"] = { "Tem", 36531, "nic-gne", "Latn", } m["kdi"] = { "Kumam", 6443410, "sdv-los", } m["kdj"] = { "Karamojong", 56326, "sdv-ttu", "Latn", } m["kdk"] = { "Numèè", 3346774, "poz-cln", "Latn", } m["kdl"] = { "Tsikimba", 3914404, "nic-kam", } m["kdm"] = { "Kagoma", 3914420, "nic-plc", } m["kdn"] = { "Kunda", 4121130, "bnt-sna", "Latn", } m["kdp"] = { "Kaningdon-Nindem", 3914956, "nic-nin", } m["kdq"] = { "Koch", 56431, "tbq-bdg", } m["kdr"] = { "Karaim", 33725, "trk-kcu", "Cyrl, Latn, Hebr", display_text = { Hebr = "Hebr-common", }, entry_name = { Hebr = "Hebr-common", }, sort_key = { Hebr = "Hebr-common", }, } m["kdt"] = { "Kuy", 56310, "mkh-kat", "Thai, Khmr, Laoo", } m["kdu"] = { "Kadaru", 35441, "nub-hil", "Latn", } m["kdv"] = { "Kado", 7402721, "sit-luu", } m["kdw"] = { "Koneraw", 11732341, "ngf", } m["kdx"] = { "Kam", 36753, "alv-wjk", } m["kdy"] = { "Keder", 6383641, "paa-tkw", } m["kdz"] = { "Kwaja", 11128866, "nic-nka", "Latn", } m["kea"] = { "Kabuverdianu", 35963, "crp", "Latn", ancestors = "pt", } m["keb"] = { "Kélé", 35559, "bnt-kel", } m["kec"] = { "Keiga", 3409311, "qfa-kad", "Latn", } m["ked"] = { "Kerewe", 6393846, "bnt-haj", } m["kee"] = { "Eastern Keres", 15649021, "nai-ker", "Latn", } m["kef"] = { "Kpessi", 35748, "alv-gbe", } m["keg"] = { "Tese", 16887296, "sdv", } m["keh"] = { "Keak", 6382110, "paa-spk", } m["kei"] = { "Kei", 2410352, } m["kej"] = { "Kadar", 6345179, "dra-mal", } m["kek"] = { "Q'eqchi", 35536, "myn", "Latn", } m["kel"] = { "Kela-Yela", 6385426, "bnt-mon", "Latn", } m["kem"] = { "Kemak", 35549, "poz-tim", "Latn", } m["ken"] = { "Kenyang", 35650, "nic-mam", "Latn", } m["keo"] = { "Kakwa", 3033547, "sdv-bri", } m["kep"] = { "Kaikadi", 6347757, "dra-tam", } m["keq"] = { "Kamar", 14916877, "inc-hal", } m["ker"] = { "Kera", 56251, "cdc-est", "Latn", } m["kes"] = { "Kugbo", 3813394, "nic-cde", "Latn", } m["ket"] = { "Ket", 33485, "qfa-yno", "Cyrl", entry_name = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { from = {"ӷ", "ё", "ӄ", "ӈ", "ө", "ә", "ʼ"}, to = {"г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "ъ" .. p[1], "ь" .. p[1]} }, } m["keu"] = { "Akebu", 35026, "alv-ktg", "Latn", } m["kev"] = { "Kanikkaran", 6363201, "dra-mal", "Taml, Mlym", } m["kew"] = { "Kewa", 12952619, "paa-eng", "Latn", } m["kex"] = { "Kukna", 5031131, "inc-eas", ancestors = "bh", } m["key"] = { "Kupia", 6445354, "inc-eas", } m["kez"] = { "Kukele", 3915391, "nic-ucn", "Latn", } m["kfa"] = { "Kodava", 33531, "dra-kod", "Knda, Mlym", translit = { Knda = "kn-translit", Mlym = "ml-translit" }, } m["kfb"] = { "Kolami", 33479, "dra-knk", "Deva, Telu", translit = { Telu = "te-translit", }, } m["kfc"] = { "Konda-Dora", 35679, "dra-kki", "Orya, Telu", translit = { Orya = "gon-Orya-translit", Telu = "te-translit", }, } m["kfd"] = { "Korra Koraga", 12952655, "dra-kor", "Knda", translit = "kn-translit", } m["kfe"] = { "Kota (India)", 33483, "dra-tkt", "Taml", translit = "ta-translit", } m["kff"] = { "Koya", 33471, "dra-gon", "Telu, Orya, Deva, Latn", } m["kfg"] = { "Kudiya", 12952667, "dra-tlk", } m["kfh"] = { "Kurichiya", 12952676, "dra-mal", "Mlym", translit = "ml-translit", } m["kfi"] = { "Kannada Kurumba", 56589, "dra-sdo", } m["kfj"] = { "Kemiehua", 27144776, "mkh-pal", } m["kfk"] = { "Kinnauri", 2383208, "sit-kin", "Takr, Deva, Latn", } m["kfl"] = { "Kung", 6444510, "nic-rnc", "Latn", } m["kfn"] = { "Kuk", 6442398, "nic-rnc", "Latn", } m["kfo"] = { "Koro (West Africa)", 11160588, "dmn-mnk", "Latn, Nkoo", } m["kfp"] = { "Korwa", 6432786, "mun", } m["kfq"] = { "Korku", 33715, "mun", "Deva", } m["kfr"] = { "Kachchi", 56487, "inc-snd", "Gujr, sd-Arab, Sind, Khoj", translit = { Gujr = "gu-translit", Sind = "Sind-translit", }, entry_name = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["kfs"] = { "Bilaspuri", 12953397, "him", "Deva, Takr", translit = "hi-translit", } m["kft"] = { "Kanjari", 12953610, "inc-pan", ancestors = "pa", } m["kfu"] = { "Katkari", 6377671, "inc-sou", } m["kfv"] = { "Kurmukar", 6446193, "inc-eas", } m["kfw"] = { "Kharam Naga", 12952906, "tbq-kuk", } m["kfx"] = { "Kullu Pahari", 6443148, "him", "Deva", translit = "hi-translit", } m["kfy"] = { "Kumaoni", 33529, "inc-pah", "Deva, Shrd, Takr", } m["kfz"] = { "Koromfé", 35701, "nic-gur", "Latn", } m["kga"] = { "Koyaga", 11155632, "dmn-mnk", } m["kgb"] = { "Kawe", 12952750, "poz-hce", "Latn", } m["kgd"] = { "Kataang", 12953622, "mkh", } m["kge"] = { "Komering", 49224, "poz-lgx", "Latn, Arab", } m["kgf"] = { "Kube", 11732359, "ngf", } m["kgg"] = { "Kusunda", 33630, "qfa-iso", "Latn", } m["kgi"] = { "Selangor Sign Language", 33731, "sgn", } m["kgj"] = { "Gamale Kham", 22236996, "sit-kha", "Deva", } m["kgk"] = { "Kaiwá", 3111883, "tup-gua", "Latn", } m["kgl"] = { "Kunggari", 10550184, "aus-pam", } m["kgm"] = { "Karipúna", 6371069, } m["kgn"] = { "Karingani", 6371041, "xme-ttc", "fa-Arab, Latn", ancestors = "xme-ttc-nor", } m["kgo"] = { "Krongo", 6438927, "qfa-kad", "Latn", } m["kgp"] = { "Kaingang", 2665734, "sai-sje", "Latn", } m["kgq"] = { "Kamoro", 6359001, "ngf", } m["kgr"] = { "Abun", 56657, "paa", "Latn", } m["kgs"] = { "Kumbainggar", 3915412, "aus-pam", } m["kgt"] = { "Somyev", 3913354, "nic-mmb", "Latn", } m["kgu"] = { "Kobol", 11732325, "ngf-mad", } m["kgv"] = { "Karas", 6368621, "ngf", } m["kgw"] = { "Karon Dori", 56817, } m["kgx"] = { "Kamaru", 12953604, "poz", } m["kgy"] = { "Kyerung", 12952691, "sit-kyk", } m["kha"] = { "Khasi", 33584, "aav-pkl", "Latn, as-Beng", } m["khb"] = { "Lü", 36948, "tai-swe", "Talu, Lana", translit = {Talu = "Talu-translit"}, entry_name = {remove_diacritics = c.ZWNJ}, sort_key = { Talu = "Talu-sortkey", Lana = "Lana-sortkey", }, } m["khc"] = { "Tukang Besi North", 18611555, "poz", } m["khd"] = { "Bädi Kanum", 20888004, "paa-yam", } m["khe"] = { "Korowai", 6432598, "ngf", } m["khf"] = { "Khuen", 27144893, "mkh", } m["khh"] = { "Kehu", 10994953, } m["khj"] = { "Kuturmi", 3914490, "nic-plc", "Latn", } m["khl"] = { "Lusi", 3267788, "poz-ocw", "Latn", } m["khn"] = { "Khandeshi", 33726, "inc-sou", } m["kho"] = { "Khotanese", 6583551, "xsc-sak", "Brah, Khar", translit = "Brah-translit", } m["khp"] = { "Kapauri", 3502575, "paa-tkw", } m["khq"] = { "Koyra Chiini", 33600, "son", "Latn, Arab", } m["khr"] = { "Kharia", 3915562, "mun", } m["khs"] = { "Kasua", 6374863, "ngf", } m["kht"] = { "Khamti", 3915502, "tai-swe", "Mymr", entry_name = {remove_diacritics = c.VS01}, } m["khu"] = { "Nkhumbi", 11019169, "bnt-swb", } m["khv"] = { "Khvarshi", 56425, "cau-wts", "Cyrl", translit = "khv-translit", display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["khw"] = { "Khowar", 938216, "inc-chi", "Arab", entry_name = { -- character "ۂ" code U+06C2 to "ه" and "هٔ"‎ (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ۂ", "ٱ"}, to = {"ہ", "ہ", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, } m["khx"] = { "Kanu", 12952571, "bnt-lgb", } m["khy"] = { "Ekele", 6385549, "bnt-ske", "Latn", } m["khz"] = { "Keapara", 12952603, "poz-ocw", "Latn", } m["kia"] = { "Kim", 35685, "alv-kim", } m["kib"] = { "Koalib", 35859, "alv-hei", } m["kic"] = { "Kickapoo", 20162127, "alg-sfk", "Latn", } m["kid"] = { "Koshin", 35632, "nic-beb", "Latn", } m["kie"] = { "Kibet", 56893, } m["kif"] = { "Eastern Parbate Kham", 12953022, "sit-kha", "Deva", } m["kig"] = { "Kimaama", 11732321, "ngf", } m["kih"] = { "Kilmeri", 6408020, "paa-brd", } m["kii"] = { "Kitsai", 56627, "cdd", "Latn", } m["kij"] = { "Kilivila", 3196601, "poz-ocw", "Latn", } m["kil"] = { "Kariya", 3438708, "cdc-wst", } m["kim"] = { "Tofa", 36848, "trk-ssb", "Cyrl", } m["kio"] = { "Kiowa", 56631, "nai-kta", "Latn", } m["kip"] = { "Sheshi Kham", 12952622, "sit-kha", "Deva", } m["kiq"] = { "Kosadle", 6432994, } m["kis"] = { "Kis", 6416362, "poz-ocw", "Latn", } m["kit"] = { "Agob", 3332143, nil, "Latn", } m["kiu"] = { "Kirmanjki", 3944007 } m["kiv"] = { "Kimbu", 10997740, "bnt-tkm", } m["kiw"] = { "Northeast Kiwai", 11732324, "paa-kiw", } m["kix"] = { "Khiamniungan Naga", 6401546, "sit-kch", "Latn", } m["kiy"] = { "Kirikiri", 6415159, "paa-lkp", "Latn", } m["kiz"] = { "Kisi", 3912772, "bnt-bki", } m["kja"] = { "Mlap", 6885683, "paa-nim", } m["kjb"] = { "Q'anjob'al", 35551, "myn", "Latn", } m["kjc"] = { "Coastal Konjo", 3198689, "poz", "Latn", } m["kjd"] = { "Southern Kiwai", 11732322, "paa-kiw", } m["kje"] = { "Kisar", 3197441, "poz", "Latn", } m["kjg"] = { "Khmu", 33335, "mkh", "Laoo", sort_key = "Laoo-sortkey", } m["kjh"] = { "Khakas", 33575, "trk-ssb", "Cyrl", translit = "kjh-translit", override_translit = true, } m["kji"] = { "Zabana", 379130, "poz-ocw", "Latn", } m["kjj"] = { "Khinalug", 35278, "cau-nec", "Cyrl, Latn", translit = "kjj-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = { Cyrl = s["cau-Cyrl-entryname"], Latn = s["cau-Latn-entryname"], }, } m["kjk"] = { "Highland Konjo", 3198688, "poz", } m["kjl"] = { "Western Parbate Kham", 22237017, "sit-kha", "Deva", } m["kjm"] = { "Kháng", 6403501, "mkh-pal", } m["kjn"] = { "Kunjen", 3200468, "aus-pmn", "Latn", } m["kjo"] = { "Harijan Kinnauri", 5657463, "him", "Takr, Deva", } m["kjp"] = { "Eastern Pwo", 5330390, "kar", "Mymr, Leke, Thai", translit = "kjp-translit", override_translit = true, } m["kjq"] = { "Western Keres", 12645568, "nai-ker", "Latn", } m["kjr"] = { "Kurudu", 12952678, "poz-hce", "Latn", } m["kjs"] = { "East Kewa", 20050949, "paa-eng", "Latn", } m["kjt"] = { "Phrae Pwo", 7187991, "kar", "Thai", } m["kju"] = { "Kashaya", 3193689, "nai-pom", "Latn", } m["kjx"] = { "Ramopa", 56830, "paa-nbo", } m["kjy"] = { "Erave", 12952416, "paa-eng", "Latn", } m["kjz"] = { "Bumthangkha", 2786408, "sit-ebo", "Tibt", translit = "Tibt-translit", override_translit = true, display_text = s["Tibt-displaytext"], entry_name = s["Tibt-entryname"], sort_key = "Tibt-sortkey", } m["kka"] = { "Kakanda", 3915342, "alv-ngb", } m["kkb"] = { "Kwerisa", 56881, "paa-lkp", } m["kkc"] = { "Odoodee", 12952987, } m["kkd"] = { "Kinuku", 6414422, "nic-kau", } m["kke"] = { "Kakabe", 3913966, "dmn-mok", "Latn", } m["kkf"] = { "Kalaktang Monpa", 63257089, "sit-tsk", "Tibt, Latn, Deva", translit = {Tibt = "Tibt-translit"}, override_translit = true, display_text = {Tibt = s["Tibt-displaytext"]}, entry_name = {Tibt = s["Tibt-entryname"]}, sort_key = {Tibt = "Tibt-sortkey"}, } m["kkg"] = { "Mabaka Valley Kalinga", 18753304, "phi", } m["kkh"] = { "Khün", 3545044, "tai-swe", "Lana, Thai", sort_key = { Lana = "Lana-sortkey", Thai = "Thai-sortkey" }, } m["kki"] = { "Kagulu", 12952537, "bnt-ruv", "Latn", } m["kkj"] = { "Kako", 35755, "bnt-kak", } m["kkk"] = { "Kokota", 3198399, "poz-ocw", "Latn", } m["kkl"] = { "Kosarek Yale", 6432995, "ngf", } m["kkm"] = { "Kiong", 6414512, "nic-ucr", "Latn", } m["kkn"] = { "Kon Keu", 6428686, "mkh-pal", } m["kko"] = { "Karko", 35529, "nub-hil", } m["kkp"] = { "Koko-Bera", 6426699, "aus-pmn", "Latn", } m["kkq"] = { "Kaiku", 6347840, "bnt-kbi", "Latn", } m["kkr"] = { "Kir-Balar", 3440527, "cdc-wst", "Latn", } m["kks"] = { "Kirfi", 56242, "cdc-wst", "Latn", } m["kkt"] = { "Koi", 6426194, "sit-kiw", } m["kku"] = { "Tumi", 3913934, "nic-kau", } m["kkv"] = { "Kangean", 2071325, "poz-msa", "Latn", } m["kkw"] = { "Teke-Kukuya", 36560, "bnt-tek", } m["kkx"] = { "Kohin", 6425997, "poz-brw", } m["kky"] = { "Guugu Yimidhirr", 56543, "aus-pam", "Latn", } m["kkz"] = { "Kaska", 20823, "ath-nor", "Latn", } m["kla"] = { "Klamath-Modoc", 2669248, "nai-plp", "Latn", } m["klb"] = { "Kiliwa", 3182593, "nai-yuc", "Latn", } m["klc"] = { "Kolbila", 6427122, "alv-lek", } m["kld"] = { "Gamilaraay", 3111818, "aus-cww", "Latn", } m["kle"] = { "Kulung", 6443304, "sit-kic", } m["klf"] = { "Kendeje", 56895, } m["klg"] = { "Tagakaulu Kalagan", 18756514, "phi", "Latn", } m["klh"] = { "Weliki", 7981017, "ngf-fin", "Latn", } m["kli"] = { "Kalumpang", 13561407, "poz", } m["klj"] = { "Khalaj", 33455, "trk", "fa-Arab, Latn", ancestors = "klj-arg", entry_name = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun, } } m["klk"] = { "Kono (Nigeria)", 6429589, "nic-kau", "Latn", } m["kll"] = { "Kagan Kalagan", 18748913, "phi", } m["klm"] = { "Kolom", 6844970, "ngf-mad", "Latn", } m["kln"] = { "Kalenjin", 637228, "sdv-nma", "Latn", } m["klo"] = { "Kapya", 6367410, "nic-ykb", } m["klp"] = { "Kamasa", 6356107, "ngf", } m["klq"] = { "Rumu", 7379420, "ngf", } m["klr"] = { "Khaling", 56381, "sit-kiw", "Deva", } m["kls"] = { "Kalasha", 33416, "inc-chi", "Latn, ks-Arab", } m["klt"] = { "Nukna", 7068874, "ngf-fin", "Latn", } m["klu"] = { "Klao", 3914866, "kro-wkr", } m["klv"] = { "Maskelynes", 3297282, "poz-vnc", "Latn", } m["klw"] = { "Lindu", 18390055, "poz-kal", "Latn", } m["klx"] = { "Koluwawa", 6427954, "poz-ocw", "Latn", } m["kly"] = { "Kalao", 6350643, "poz", } m["klz"] = { "Kabola", 11732258, "qfa-tap", } m["kma"] = { "Konni", 35680, "nic-buk", } m["kmb"] = { "Kimbundu", 35891, "bnt-kmb", "Latn", } m["kmc"] = { "Southern Kam", 35379, "qfa-kms", "Latn", } m["kmd"] = { "Madukayang Kalinga", 18753305, "phi", } m["kme"] = { "Bakole", 35068, "bnt-kpw", "Latn", } m["kmf"] = { "Kare (New Guinea)", 11732286, "ngf-mad", "Latn", } m["kmg"] = { "Kâte", 3201059, "ngf", "Latn", } m["kmh"] = { "Kalam", 12952550, "ngf-mad", } m["kmi"] = { "Kami", 3915372, "alv-ngb", "Latn", } m["kmj"] = { "Kumarbhag Paharia", 3130374, "dra-mlo", "Beng, Deva", } m["kmk"] = { "Limos Kalinga", 18753303, "phi", "Latn", } m["kml"] = { "Tanudan Kalinga", 18753307, "phi", "Latn", } m["kmm"] = { "Kom (India)", 12952647, "tbq-kuk", } m["kmn"] = { "Awtuw", 3504217, "paa-spk", "Latn", } m["kmo"] = { "Kwoma", 11732376, "paa-spk", } m["kmp"] = { "Gimme", 11152236, "alv-dur", } m["kmq"] = { "Kwama", 2591184, "ssa-kom", } m["kmr"] = { "Northern Kurdish", 36163, "ku", "Latn, Cyrl, Armn, ku-Arab, Yezi", translit = { Cyrl = "kmr-translit", Armn = "Armn-translit", ["ku-Arab"] = "ckb-translit", }, entry_name = { remove_diacritics = "'’", from = {"r̄", "R̄", "ẍ", "Ẍ"}, to = {"rr", "Rr", "x", "X"} }, wikimedia_codes = "ku", } m["kms"] = { "Kamasau", 6356117, "qfa-tor", "Latn", } m["kmt"] = { "Kemtuik", 6387179, "paa-nim", } m["kmu"] = { "Kanite", 12952567, "paa-kag", } m["kmv"] = { "Karipúna Creole French", 2523999, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["kmw"] = { "Kumu", 6428450, "bnt-kbi", "Latn", } m["kmx"] = { "Waboda", 7958705, "paa-kiw", } m["kmy"] = { "Koma", 35634, "alv-dur", } m["kmz"] = { "Khorasani Turkish", 35373, "trk-ogz", "Arab", ancestors = "trk-oat", } m["kna"] = { "Kanakuru", 56811, "cdc-wst", "Latn", } m["knb"] = { "Lubuagan Kalinga", 12953602, "phi", "Latn", } m["knc"] = { "মধ্য কানুরি", 15637215 } m["knd"] = { "Konda", 11732340, "ngf-sbh", "Latn", } m["kne"] = { "Kankanaey", 18753329, "phi", "Latn", entry_name = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer, } }, sort_key = { Latn = "tl-sortkey", }, standardChars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy" .. c.punc, }, } m["knf"] = { "Mankanya", 35789, "alv-pap", "Latn", } m["kni"] = { "Kanufi", 3913297, "nic-nin", "Latn", } m["knj"] = { "Akatek", 34923, "myn", "Latn", } m["knk"] = { "Kuranko", 3198896, "dmn-mok", "Latn", } m["knl"] = { "Keninjal", 6389309, "poz-mly", "Latn", } m["knm"] = { -- two unrelated lects have this name; this is the Katukinian one "Kanamari", 3438373, "sai-ktk", "Latn", } m["kno"] = { "Kono (Sierra Leone)", 35675, "dmn-vak", "Latn", } m["knp"] = { "Kwanja", 35641, "nic-mmb", "Latn", } m["knq"] = { "Kintaq", 6414335, "mkh-asl", } m["knr"] = { "Kaningra", 6363253, "paa-spk", } m["kns"] = { "Kensiu", 6391529, "mkh-asl", } m["knt"] = { "Katukina", 3194265, "sai-pan", "Latn", } m["knu"] = { -- a dialect of 'kpe' "Kono (Guinea)", 3198703, "dmn-msw", "Latn, Kpel", ancestors = "kpe", } m["knv"] = { "Tabo", 7959888, "aav", } m["knx"] = { "Kendayan", 6388963, "poz-mly", "Latn", } m["kny"] = { "Kanyok", 11110766, "bnt-lub", } m["knz"] = { "Kalamsé", 3914000, "nic-gnn", } m["koa"] = { "Konomala", 3198732, "poz-ocw", "Latn", } m["koc"] = { "Kpati", 3913279, "nic-nge", "Latn", } m["kod"] = { "Kodi", 4577633, "poz-cet", "Latn", } m["koe"] = { "Kacipo-Balesi", 5364424, "sdv", } m["kof"] = { "Kubi", 3438718, "cdc-wst", "Latn", } m["kog"] = { "Cogui", 3198286, "cba", "Latn", } m["koh"] = { "Koyo", 35649, "bnt-mbo", "Latn", } m["koi"] = { "Komi-Permyak", 56318, "urj-prm", "Cyrl", translit = "kv-translit", entry_name = {remove_diacritics = c.acute}, override_translit = true, } m["kok"] = { "Konkani", 34239, "inc-sou", "Deva, Knda, Mlym, fa-Arab, Latn", translit = { Deva = "mr-translit", Knda = "kn-translit", Mlym = "ml-translit", }, entry_name = { from = {"च़", "ज़", "झ़", "ಚ಼", "ಜ಼", "ಝ಼"}, to = {"च", "ज", "झ", "ಚ", "ಜ", "ಝ"} } , } m["kol"] = { "Kol (New Guinea)", 4227542, } m["koo"] = { "Konzo", 2361829, "bnt-glb", } m["kop"] = { "Waube", 11732373, "ngf-mad", } m["koq"] = { "Kota (Gabon)", 35607, "bnt-kel", "Latn", } m["kos"] = { "Kosraean", 33464, "poz-mic", "Latn", } m["kot"] = { "Lagwan", 3502264, "cdc-cbm", "Latn", } m["kou"] = { "Koke", 797249, "alv-bua", } m["kov"] = { "Kudu-Camo", 3915850, "nic-jer", } m["kow"] = { "Kugama", 3913307, "alv-mye", } m["koy"] = { "Koyukon", 28304, "ath-nor", "Latn", } m["koz"] = { "Korak", 6431365, "ngf-mad", } m["kpa"] = { "Kutto", 3437656, "cdc-wst", } m["kpb"] = { "Mullu Kurumba", 19573111, "dra-mal", } m["kpc"] = { "Curripaco", 2882543, "awd-nwk", "Latn", } m["kpd"] = { "Koba", 6424249, "poz", } m["kpe"] = { "Kpelle", 35673, "dmn-msw", "Latn, Kpel", } m["kpf"] = { "Komba", 6428239, "ngf", } m["kpg"] = { "Kapingamarangi", 35771, "poz-pnp", "Latn", } m["kph"] = { "Kplang", 35628, "alv-gng", } m["kpi"] = { "Kofei", 6425665, "paa-egb", "Latn", } m["kpj"] = { "Karajá", 10322066, "sai-mje", "Latn", } m["kpk"] = { "Kpan", 3915380, "nic-jkn", "Latn", } m["kpl"] = { "Kpala", 11154769, "nic-nkk", "Latn", } m["kpm"] = { "Koho", 3511919, "mkh-ban", "Latn", } m["kpn"] = { "Kepkiriwát", 3195366, "tup", "Latn", } m["kpo"] = { "Ikposo", 35029, "alv-ktg", "Latn", } m["kpq"] = { "Korupun-Sela", 6432769, "ngf", } m["kpr"] = { "Korafe-Yegha", 11732347, "ngf", } m["kps"] = { "Tehit", 7694851, nil, "Latn", } m["kpt"] = { "Karata", 56636, "cau-and", "Cyrl", translit = "kpt-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["kpu"] = { "Kafoa", 6346151, "qfa-tap", } m["kpv"] = { "Komi-Zyrian", 34114, "urj-prm", "Cyrl", translit = "kv-translit", override_translit = true, wikimedia_codes = "kv", } m["kpw"] = { "Kobon", 11732326, "ngf-mad", "Latn", } m["kpx"] = { "Mountain Koiari", 6925030, "ngf", "Latn", } m["kpy"] = { "Koryak", 36199, "qfa-ckn", "Cyrl", entry_name = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { from = {"вʼ", "гʼ", "ё", "ӄ", "ӈ"}, to = {"в" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1]} }, translit = "kpy-translit", } m["kpz"] = { "Kupsabiny", 56445, "sdv-kln", } m["kqa"] = { "Mum", 6935252, "ngf-mad", } m["kqb"] = { "Kovai", 6434822, "ngf", } m["kqc"] = { "Doromu-Koki", 5298175, "ngf", "Latn", } m["kqd"] = { "Koy Sanjaq Surat", 33463, "sem-nna", } m["kqe"] = { "Kalagan", 18748906, "phi", "Latn", } m["kqf"] = { "Kakabai", 6349119, "poz-ocw", "Latn", } m["kqg"] = { "Khe", 3914015, "nic-gur", } m["kqh"] = { "Kisankasa", 6416409, "sdv", } m["kqi"] = { "Koitabu", 6426363, "ngf", } m["kqj"] = { "Koromira", 6432520, "paa-sbo", } m["kqk"] = { "Kotafon Gbe", 12952447, "alv-pph", } m["kql"] = { "Kyenele", 11732453, "paa-yua", } m["kqm"] = { "Khisa", 3913955, "nic-gur", } m["kqn"] = { "Kaonde", 33601, "bnt-lub", "Latn", } m["kqo"] = { "Eastern Krahn", 3915374, "kro-wee", } m["kqp"] = { "Kimré", 3441210, "cdc-est", } m["kqq"] = { "Krenak", 6436747, "sai-cer", } m["kqr"] = { "Kimaragang", 3196845, "poz-san", "Latn", } m["kqs"] = { "Northern Kissi", 19921576, "alv-kis", } m["kqt"] = { "Klias River Kadazan", 12953594, "poz-san", } m["kqu"] = { "Seroa", 33127766, "khi-tuu", } m["kqv"] = { "Okolod", 7082487, "poz-san", } m["kqw"] = { "Kandas", 3192590, "poz-ocw", "Latn", } m["kqx"] = { "Mser", 3502347, "cdc-cbm", } m["kqy"] = { "Koorete", 6430753, "omv-eom", "Ethi, Latn", } m["kqz"] = { "Korana", 2756709, "khi-khk", "Latn", } m["kra"] = { "Kumhali", 13580783, "inc-eas", ancestors = "bh", } m["krb"] = { "Karkin", 3193345, "nai-you", "Latn", } m["krc"] = { "Karachay-Balkar", 33714, "trk-kcu", "Cyrl", translit = "krc-translit", sort_key = { from = {"гъ", "дж", "ё", "къ", "нг"}, to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1]} }, } m["krd"] = { "Kairui-Midiki", 12953277, "poz-tim", } m["kre"] = { "Panará", 3361895, "sai-cer", "Latn", } m["krf"] = { "Koro (Vanuatu)", 3198995, "poz-vnn", "Latn", } m["krh"] = { "Kurama", 35593, "nic-kau", } m["kri"] = { "Krio", 35744, "crp", "Latn", ancestors = "en", } m["krj"] = { "Kinaray-a", 33720, "phi", "Latn", } m["krk"] = { "Kerek", 332792, "qfa-ckn", "Cyrl", } m["krl"] = { "Karelian", 33557, "urj-fin", "Latn", sort_key = { from = { "č", "š", "ž", "ü", "ä", "ö", -- 2 chars "z", "'" -- 1 char }, to = { "c" .. p[1], "s" .. p[1], "s" .. p[3], "y" .. p[1], "y" .. p[2], "y" .. p[3], "s" .. p[2], "y" .. p[4], } }, } m["krm"] = { "Krim", 35713, "alv", } m["krn"] = { "Sapo", 3915386, "kro-wee", } m["krp"] = { "Korop", 35626, "nic-ucr", "Latn", } m["krr"] = { "Kru'ng", 12953650, "mkh-ban", } m["krs"] = { "Kresh", 56674, "csu-bkr", } m["kru"] = { "Kurukh", 33492, "dra-kml", "Deva, Tols", translit = { Deva = "hi-translit", }, } m["krv"] = { "Kavet", 12953649, "sai-ktk", "Latn", } m["krw"] = { "Western Krahn", 10975611, "kro-wee", } m["krx"] = { "Karon", 35704, "alv-jol", } m["kry"] = { "Kryts", 35861, "cau-ssm", "Latn, Cyrl", display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = { Latn = s["cau-Latn-entryname"], Cyrl = s["cau-Cyrl-entryname"], }, } m["krz"] = { "Sota Kanum", 12952568, "paa-yam", } m["ksa"] = { "Shuwa-Zamani", 3913929, "nic-kau", } m["ksb"] = { "Shambala", 3788739, "bnt-seu", "Latn", } m["ksc"] = { "Southern Kalinga", 18753301, "phi", } m["ksd"] = { "Tolai", 35870, "poz-ocw", "Latn", } m["kse"] = { "Kuni", 6444619, "poz-ocw", "Latn", } m["ksf"] = { "Bafia", 34930, "bnt-baf", "Latn", } m["ksg"] = { "Kusaghe", 3200638, "poz-ocw", "Latn", } m["ksi"] = { "Krisa", 841704, "paa-msk", "Latn", } m["ksj"] = { "Uare", 6450052, "ngf", } m["ksk"] = { "Kansa", 3192772, "sio-dhe", "Latn", } m["ksl"] = { "Kumalu", 17584381, "poz-ocw", "Latn", } m["ksm"] = { "Kumba", 3913972, "alv-mye", } m["ksn"] = { "Kasiguranin", 6374525, "phi", } m["kso"] = { "Kofa", 56278, "cdc-cbm", } m["ksp"] = { "Kaba", 3915316, "csu-sar", } m["ksq"] = { "Kwaami", 3440525, "cdc-wst", } m["ksr"] = { "Borong", 4946263, "ngf", "Latn", } m["kss"] = { "Southern Kissi", 11028974, "alv-kis", } m["kst"] = { "Winyé", 3913360, "nic-gnw", } m["ksu"] = { "Khamyang", 6583541, "tai-swe", } m["ksv"] = { "Kusu", 6448199, "bnt-tet", } m["ksw"] = { "S'gaw Karen", 56410, "kar", "Mymr", translit = "ksw-translit", } m["ksx"] = { "Kedang", 6382520, "poz", "Latn", } m["ksy"] = { "Kharia Thar", 6400661, "inc-eas", } m["ksz"] = { "Kodaku", 21179986, "mun", } m["kta"] = { "Katua", 6378404, "mkh-ban", } m["ktb"] = { "Kambaata", 35664, "cus-hec", "Latn", } m["ktc"] = { "Kholok", 3440464, "cdc-wst", } m["ktd"] = { "Kokata", 10547021, "aus-pam", } m["ktf"] = { "Kwami", 12952687, "bnt-lgb", } m["ktg"] = { "Kalkatungu", 3914057, "aus-pam", "Latn", } m["kth"] = { "Karanga", 713643, } m["kti"] = { "North Muyu", 20857698, "ngf", "Latn", } m["ktj"] = { "Plapo Krumen", 10975356, "kro-grb", } m["ktk"] = { "Kaniet", 3399050, "poz-aay", "Latn", } m["ktl"] = { "Koroshi", 3775265, "ira-nwi", ancestors = "bal", } m["ktm"] = { "Kurti", 3200615, "poz-aay", "Latn", } m["ktn"] = { "Karitiâna", 3112184, "tup", "Latn", } m["kto"] = { "Kuot", 56537, } m["ktp"] = { "Kaduo", 769809, "tbq-bka", } m["ktq"] = { "Katabaga", 3193895, } m["ktr"] = { "Kota Marudu Tinagas", 18642280, } m["kts"] = { "South Muyu", 42308820, "ngf", "Latn", } m["ktt"] = { "Ketum", 12952616, "ngf", } m["ktu"] = { "Kituba", 35746, "crp", "Latn", ancestors = "kg", } m["ktv"] = { "Eastern Katu", 22808951, "mkh-kat", "Latn", } m["ktw"] = { "Kato", 20831, "ath-pco", "Latn", } m["ktx"] = { "Kaxararí", 6380124, "sai-pan", "Latn", } m["kty"] = { "Kango", 6362818, "bnt-bta", "Latn", } m["ktz"] = { "Juǀ'hoan", 1192295, "khi-kxa", "Latn", } m["kub"] = { "Kutep", 35645, "nic-jkn", } m["kuc"] = { "Kwinsu", 6450460, "paa-tkw", } m["kud"] = { "Auhelawa", 5166, "poz-ocw", "Latn", } m["kue"] = { "Kuman", 137525, "ngf", "Latn", } m["kuf"] = { "Western Katu", 6378400, "mkh-kat", "Laoo, Tale, Latn", } m["kug"] = { "Kupa", 3915336, "alv-ngb", } m["kuh"] = { "Kushi", 3438747, "cdc-wst", } m["kui"] = { "Kuikúro", 3915522, "sai-kui", "Latn", } m["kuj"] = { "Kuria", 6445968, "bnt-lok", "Latn", } m["kuk"] = { "Kepo'", 6393217, "poz", } m["kul"] = { "Kulere", 3440506, "cdc-wst", } m["kum"] = { "Kumyk", 36209, "trk-kcu", "Cyrl", translit = "kum-translit", sort_key = { from = {"гъ", "гь", "ё", "къ", "нг", "оь", "уь"}, to = {"г" .. p[1], "г" .. p[2], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, } m["kun"] = { "Kunama", 36041, } m["kuo"] = { "Kumukio", 11732362, "ngf", } m["kup"] = { "Kunimaipa", 6444696, } m["kuq"] = { "Karipuna", 6371071, "tup-gua", "Latn", } m["kus"] = { "Kusaal", 35708, "nic-dag", "Latn", } m["kut"] = { "Kutenai", 33434, "qfa-iso", "Latn", } m["kuu"] = { "Upper Kuskokwim", 28062, "ath-nor", "Latn", } m["kuv"] = { "Kur", 12635082, "poz-cma", "Latn", } m["kuw"] = { "Kpagua", 11137573, "bad-cnt", } m["kux"] = { "Kukatja", 10549839, "aus-pam", } m["kuy"] = { "Kuuku-Ya'u", 10550697, "aus-pmn", } m["kuz"] = { "Kunza", 2669181, "qfa-iso", "Latn", } m["kva"] = { "Bagvalal", 56638, "cau-and", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["kvb"] = { "Kubu", 6441341, "poz-mly", } m["kvc"] = { "Kove", 3199402, "poz-ocw", "Latn", } m["kvd"] = { "Kui (Indonesia)", 6442230, "ngf", } m["kve"] = { "Kalabakan", 6350003, "poz-san", "Latn", } m["kvf"] = { "Kabalai", 3440427, "cdc-est", } m["kvg"] = { "Kuni-Boazi", 2907551, "ngf", } m["kvh"] = { "Komodo", 3198565, "poz-cet", "Latn", } m["kvi"] = { "Kwang", 3440398, "cdc-est", "Latn", } m["kvj"] = { "Psikye", 56304, "cdc-cbm", } m["kvk"] = { "Korean Sign Language", 3073428, "sgn-jsl", } m["kvl"] = { "Brek Karen", 12952577, "kar", } m["kvm"] = { "Kendem", 35751, "nic-mam", "Latn", } m["kvn"] = { "Border Kuna", 31777873, "cba", } m["kvo"] = { "Dobel", 5286559, "poz", "Latn", } m["kvp"] = { "Kompane", 18343041, "poz", } m["kvq"] = { "Geba Karen", 12952581, "kar", "Latn, Mymr", } m["kvr"] = { "Kerinci", 3195442, "poz-mly", "Latn, Arab", -- Also Incung, which we don't have } m["kvt"] = { "Lahta Karen", 12952582, "kar", } m["kvu"] = { "Yinbaw Karen", 14426328, "kar", } m["kvv"] = { "Kola", 6426967, "poz", "Latn", } m["kvw"] = { "Wersing", 7983599, "qfa-tap", } m["kvx"] = { "Parkari Koli", 3244176, "inc-wes", } m["kvy"] = { "Yintale Karen", 14426329, "kar", } m["kvz"] = { "Tsakwambo", 7849438, "ngf", } m["kwa"] = { "Dâw", 3042278, "sai-nad", "Latn", } m["kwb"] = { "Baa", 34842, "alv-ada", } m["kwc"] = { "Likwala", 35597, "bnt-mbo", } m["kwd"] = { "Kwaio", 3200796, "poz-sls", "Latn", } m["kwe"] = { "Kwerba", 6450328, "paa-tkw", } m["kwf"] = { "Kwara'ae", 3200829, "poz-sls", "Latn", } m["kwg"] = { "Sara Kaba Deme", 3915384, "csu-kab", } m["kwh"] = { "Kowiai", 6435028, "poz", "Latn", } m["kwi"] = { "Awa-Cuaiquer", 2603103, "sai-bar", "Latn", } m["kwj"] = { "Kwanga", 3438383, "paa-spk", } m["kwk"] = { "Kwak'wala", 2640628, "wak", "Latn", } m["kwl"] = { "Kofyar", 3441382, "cdc-wst", "Latn", } m["kwm"] = { "Kwambi", 3487165, "bnt-ova", } m["kwn"] = { "Kwangali", 36334, "bnt-kav", "Latn", } m["kwo"] = { "Kwomtari", 3508116, } m["kwp"] = { "Kodia", 3914867, "kro-ekr", } m["kwq"] = { "Kwak", 11014183, "nic-nka", ancestors = "yam", } m["kwr"] = { "Kwer", 12635137, "ngf-okk", } m["kws"] = { "Kwese", 3200846, "bnt-pen", } m["kwt"] = { "Kwesten", 6450354, "paa-tkw", } m["kwu"] = { "Kwakum", 35624, "bnt-kak", } m["kwv"] = { "Sara Kaba Náà", 3915361, "csu-kab", "Latn", } m["kww"] = { "Kwinti", 721182, "crp", "Latn", ancestors = "en" } m["kwx"] = { "Khirwar", 12976968, "dra", } m["kwz"] = { "Kwadi", 2364661, "khi-kkw", "Latn", } m["kxa"] = { "Kairiru", 3398785, "poz-ocw", "Latn", } m["kxb"] = { "Krobu", 35586, "alv-ptn", "Latn", } m["kxc"] = { "Khonso", 56624, "cus-eas", "Ethi, Latn", } m["kxd"] = { "Brunei Malay", 3182878, "poz-mly", "Latn, ms-Arab", } m["kxe"] = { "Kakihum", 3914433, "nic-kam", ancestors = "tvd", } m["kxf"] = { "Manumanaw Karen", 12952592, "kar", "Mymr, Latn", } m["kxh"] = { "Karo", 3447116, "omv-aro", } m["kxi"] = { "Keningau Murut", 6389308, "poz-san", "Latn", } m["kxj"] = { "Kulfa", 713654, "csu-kab", } m["kxk"] = { "Zayein Karen", 14352960, "kar", } m["kxl"] = { "Nepali Kurux", 3200624, "dra-kml", "Deva", ancestors = "kru", } m["kxm"] = { "Northern Khmer", 3502234, "mkh-kmr", "Thai, Khmr", ancestors = "xhm", sort_key = { from = {"[%pๆ]", "[็-๎]", "([เแโใไ])([ก-ฮ])"}, to = {"", "", "%2%1"} }, } m["kxn"] = { "Kanowit", 6364300, "poz-bnn", "Latn", } m["kxo"] = { "Kanoé", 4356223, "qfa-iso", } m["kxp"] = { "Wadiyara Koli", 12953645, "inc-wes", } m["kxq"] = { "Smärky Kanum", 12952569, "paa-yam", } m["kxr"] = { "Manus Koro", 3198994, "poz-aay", "Latn", } m["kxs"] = { "Kangjia", 3182570, "xgn-shr", "Latn", } m["kxt"] = { "Koiwat", 6426388, "paa-spk", } m["kxu"] = { "Kui (India)", 33919, "dra-kki", "Orya", translit = "kxv-translit", entry_name = { remove_diacritics = "୕", from = {"ଆଆ", "ଇଇ", "ଉଉ", "ଏଏ", "ଓଓ", "ିଇ", "ୁଉ", "େଏ", "ୋଓ"}, to = {"ଆ", "ଈ", "ଊ", "ଏ", "ଓ", "ୀ", "ୂ", "େ", "ୋ"}, }, } m["kxv"] = { "Kuvi", 3200721, "dra-kki", "Orya", translit = "kxv-translit", entry_name = { remove_diacritics = "୕", from = {"ଆଆ", "ଇଇ", "ଉଉ", "ଏଏ", "ଓଓ", "([କ-ହ])ଆ", "ିଇ", "ୁଉ", "େଏ", "ୋଓ"}, to = {"ଆ", "ଈ", "ଊ", "ଏ", "ଓ", "%1ା", "ୀ", "ୂ", "େ", "ୋ"}, }, } m["kxw"] = { "Konai", 11732339, } m["kxx"] = { "Likuba", 35646, "bnt-bmo", } m["kxy"] = { "Kayong", 6380673, "mkh", } m["kxz"] = { "Kerewo", 6393847, "paa-kiw", } m["kya"] = { "Kwaya", 6450276, "bnt-haj", "Latn", } m["kyb"] = { "Butbut Kalinga", 18753300, "phi", "Latn", } m["kyc"] = { "Kyaka", 12952690, "paa-eng", } m["kyd"] = { "Karey", 6370196, "poz", } m["kye"] = { "Krache", 35658, "alv-gng", } m["kyf"] = { "Kouya", 35595, "kro-bet", } m["kyg"] = { "Keyagana", 6398208, "paa-kag", } m["kyh"] = { "Karok", 1288440, "qfa-iso", "Latn", } m["kyi"] = { "Kiput", 3038653, "poz-swa", "Latn", } m["kyj"] = { "Karao", 3192950, "phi", "Latn", } m["kyk"] = { "Kamayo", 3192339, "phi", "Latn", } m["kyl"] = { "Kalapuya", 3192120, "nai-klp", } m["kym"] = { "Kpatili", 3913982, "znd", } m["kyn"] = { "Karolanos", 6373093, "phi", } m["kyo"] = { "Kelon", 6386414, "ngf", } m["kyp"] = { "Kang", 25559558, "tai", } m["kyq"] = { "Kenga", 35707, "csu-bgr", } m["kyr"] = { "Kuruáya", 3200633, "tup", "Latn", } m["kys"] = { "Baram Kayan", 2883794, "poz", "Latn", } m["kyt"] = { "Kayagar", 6380394, "ngf", } m["kyu"] = { "Western Kayah", 12952596, "kar", "Kali, Mymr, Latn", translit = {Kali = "Kali-translit"}, } m["kyv"] = { "Kayort", 6380675, "inc-krd", "Deva", } m["kyw"] = { "Kudmali", 6446173, "inc-bih", "Deva, as-Beng, Orya, Chis", } m["kyx"] = { "Rapoisi", 7294279, "paa-nbo", } m["kyy"] = { "Kambaira", 6356254, "paa-kag", } m["kyz"] = { "Kayabí", 6380372, "tup-gua", "Latn", } m["kza"] = { "Western Karaboro", 36601, "alv-krb", } m["kzb"] = { "Kaibobo", 6347565, "poz-cma", } m["kzc"] = { "Bondoukou Kulango", 11031321, "alv-kul", "Latn", } m["kzd"] = { "Kadai", 7679471, "poz-cma", "Latn", } m["kze"] = { "Kosena", 12952663, "ngf", "Latn", } m["kzf"] = { "Da'a Kaili", 33103997, "poz-kal", "Latn", } m["kzg"] = { "Kikai", 3196527, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], entry_name = s["jpx-entryname"], sort_key = s["jpx-sortkey"], } m["kzh"] = { "Dongolawi", 5295991, "nub", "Latn", } m["kzi"] = { "Kelabit", 6385445, "poz-swa", "Latn", } m["kzj"] = { "Coastal Kadazan", 3307195, "poz-san", "Latn", } m["kzk"] = { "Kazukuru", 1089069, "poz-ocw", } m["kzl"] = { "Kayeli", 4207444, "poz-cma", "Latn", } m["kzm"] = { "Kais", 6348319, "paa", "Latn", } m["kzn"] = { "Kokola", 11128329, "bnt-mak", "Latn", ancestors = "vmw", } m["kzo"] = { "Kaningi", 35683, "bnt-mbt", } m["kzp"] = { "Kaidipang", 6347611, "phi", "Latn", } m["kzq"] = { "Kaike", 10951226, "sit-tam", } m["kzr"] = { "Karang", 35681, "alv-mbm", "Latn", } m["kzs"] = { "Sugut Dusun", 12953510, "poz-san", "Latn", } m["kzt"] = { "Tambunan Dusun", 12953514, "poz-san", "Latn", } m["kzu"] = { "Kayupulau", 6380723, "poz-ocw", } m["kzv"] = { "Komyandaret", 6428671, "ngf-okk", "Latn", } m["kzw"] = { -- contrast xoo, sai-kat, sai-xoc, the last of which the ISO conflated into this code "Kariri", 12953620, "sai-mje", "Latn", } m["kzx"] = { "Kamarian", 6356040, "poz-cma", "Latn", } m["kzy"] = { "Kango-Sua", 11008360, "bnt-kbi", "Latn", ancestors = "bip", } m["kzz"] = { "Kalabra", 6350038, "paa", "Latn", } return require("Module:languages").finalizeData(m, "language") 2k99niie3vvo6ciww4bqjemipj69yuf টেমপ্লেট:getsc 10 123919 510631 251624 2026-06-11T07:34:00Z Redmin 6857 -obsolete template 510631 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 বিষয়শ্রেণী:ইন্দো-ইউরোপীয় ভাষাগোষ্ঠী 14 131553 510604 277716 2026-06-11T02:46:42Z Hiyuune 11971 পাতাকে '{{auto cat}}' দিয়ে প্রতিস্থাপিত করা হল 510604 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx বিষয়শ্রেণী:পরিবার অনুযায়ী ভাষা 14 131559 510606 277720 2026-06-11T02:50:38Z Hiyuune 11971 পাতাকে '{{auto cat}}' দিয়ে প্রতিস্থাপিত করা হল 510606 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx মডিউল:category tree/families 828 156757 510602 325337 2026-06-11T02:45:50Z Hiyuune 11971 510602 Scribunto text/plain local raw_categories = {} local raw_handlers = {} local concat = table.concat local insert = table.insert ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["সকল ভাষা পরিবার"] = { topright = "{{commonscat|Languages by family}}\n{{wp|Language family,List of language families}}", description = "This category lists all [[language family|language families]].", parents = {"Fundamental"}, } raw_categories["পরিবার অনুযায়ী ভাষা"] = { topright = "{{commonscat|Languages by family}}\n{{wp|Language family,List of language families}}", description = "This category contains all languages categorized hierarchically according to the [[language family]] they belong to.", additional = "Only top-level language families are shown here. For a full list of all language families, see [[:Category:All language families]] or [[Wiktionary:List of families]].", parents = { {name = "সকল ভাষা", sort = " "}, {name = "সকল ভাষা পরিবার", sort = " "}, }, } raw_categories["Unassigned languages"] = { description = "Languages that have not yet been assigned to any family by Wiktionary editors, usually due to oversight.", additional = [=[This should be distinguished from: * [[:Category:Unclassifiable languages]] (languages that cannot be confidently assigned to any family, typically because the language is extinct or unresearched and has little available data on it); * [[:Category:Language isolates]] (where there is general agreement that the language has no relatives); and * [[:Category:Languages of disputed affiliation]] (languages where there is no consensus concerning which family, if any, they belong to).]=], parents = { {name = "Languages by family", sort = "*"}, "সকল ভাষা পরিবার", }, } ----------------------------------------------------------------------------- -- -- -- RAW HANDLERS -- -- -- ----------------------------------------------------------------------------- local function family_is_not_a_family(fam) if not fam then return false elseif fam:getCode() == "qfa-not" then return true else return family_is_not_a_family(fam:getFamily()) end end local function family_has_no_category(fam) local famcode = fam:getCode() if famcode == "paa" then return false -- Papuan languages are not a family but have a category elseif famcode == "qfa-iso" or famcode == "qfa-not" then return true else local parfam = fam:getFamily() if parfam and parfam:getCode() == "qfa-not" then -- Constructed languages, sign languages, etc.; no category for them return true end end return false end -- Currently all Papuan families begin with "paa" or "ngf", local function family_is_papuan(fam) local famcode = fam:getCode() return famcode ~= "paa" and (famcode:find("^paa") or famcode:find("^ngf")) end local function infobox(fam) local ret = {} insert(ret, "<table class=\"wikitable\">\n") insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\">[//en.wiktionary.org/w/index.php?title=Module:families/data&action=edit Edit family data]</th>\n</tr>\n") insert(ret, "<tr>\n<th>Canonical name</th><td>" .. fam:getCanonicalName() .. "</td>\n</tr>\n") local otherNames = fam:getOtherNames() if otherNames then local names = {} for _, name in ipairs(otherNames) do insert(names, "<li>" .. name .. "</li>") end if #names > 0 then insert(ret, "<tr>\n<th>Other names</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end local aliases = fam:getAliases() if aliases then local names = {} for _, name in ipairs(aliases) do insert(names, "<li>" .. name .. "</li>") end if #names > 0 then insert(ret, "<tr>\n<th>Aliases</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end local varieties = fam:getVarieties() if varieties then local names = {} for _, name in ipairs(varieties) do if type(name) == "string" then insert(names, "<li>" .. name .. "</li>") else assert(type(name) == "table") local first_var local subvars = {} for i, var in ipairs(name) do if i == 1 then first_var = var else insert(subvars, "<li>" .. var .. "</li>") end end if #subvars > 0 then insert(names, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. concat(subvars, "\n") .. "</ul></dd></dl></li>") elseif first_var then insert(names, "<li>" .. first_var .. "</li>") end end end if #names > 0 then insert(ret, "<tr>\n<th>Varieties</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end insert(ret, "<tr>\n<th>[[Wiktionary:Families|Family code]]</th><td><code>" .. fam:getCode() .. "</code></td>\n</tr>\n") insert(ret, "<tr>\n<th>[[w:Proto-language|Common ancestor]]</th><td>") local protoLanguage = fam:getProtoLanguage() if protoLanguage then insert(ret, "[[:Category:" .. protoLanguage:getCategoryName() .. "|" .. protoLanguage:getCanonicalName() .. "]]") else insert(ret, "none") end insert(ret, "</td>\n") insert(ret, "\n</tr>\n") local parent = fam:getFamily() if not parent then insert(ret, "<tr>\n<th>[[Wiktionary:Families|Parent family]]</th>\n<td>") insert(ret, "unassigned") elseif parent:getCode() == "qfa-not" then insert(ret, "<tr>\n<th>[[Wiktionary:Families|Parent family]]</th>\n<td>") insert(ret, "not a family") else local chain = {} while parent do if family_has_no_category(parent) then break end insert(chain, "[[:Category:" .. parent:getCategoryName() .. "|" .. parent:getCanonicalName() .. "]]") parent = parent:getFamily() end if #chain == 0 then insert(ret, "<tr>\n<th>[[Wiktionary:Families|Parent family]]</th>\n<td>") insert(ret, "no parents") else insert(ret, "<tr>\n<th>[[Wiktionary:Families|Parent famil" .. (#chain == 1 and "y" or "ies") .. "]]</th>\n<td>") for i = #chain, 1, -1 do insert(ret, "<ul><li>" .. chain[i]) end insert(ret, string.rep("</li></ul>", #chain)) end end insert(ret, "</td>\n</tr>\n") if fam:getWikidataItem() and mw.wikibase then local link = '[' .. mw.wikibase.getEntityUrl(fam:getWikidataItem()) .. ' ' .. fam:getWikidataItem() .. ']' insert(ret, "<tr><th>Wikidata</th><td>" .. link .. "</td></tr>") end insert(ret, "</table>") return concat(ret) end local function NavFrame_for_family_tree(content, title) return '<div class="NavFrame"><div class="NavHead">' .. (title or '{{{title}}}') .. '</div>' .. '<div class="NavContent" style="text-align: left; font-size: calc(1em / 0.95); padding: 0.3em">' .. content .. '</div></div>' end local additional_information = { ["qfa-dis"] = "These are languages where there is no consensus concerning which family, if any, they belong to.", ["qfa-iso"] = "These are languages where there is general agreement that the language has no known relatives.", ["qfa-mix"] = "A [[mixed language]] is a language which is composed of two different languages.", ["qfa-unc"] = "These are languages that cannot be confidently assigned to a family due to lack of sufficient linguistic data. " .. "They are also commonly called {{w|unclassified language|unclassified languages}}, but this is ambiguous between " .. "languages that cannot be classified (due to insufficient data) and those that merely have not been classified " .. "(due to insufficient research).", } local preceding_information = { ["qfa-dis"] = "{{also|Category:Unclassifiable languages|Category:Unassigned languages|Category:Language isolates}}", ["qfa-iso"] = "{{also|Category:Languages of disputed affiliation|Category:Unclassifiable languages|Category:Unassigned languages}}", ["qfa-unc"] = "{{also|Category:Languages of disputed affiliation|Category:Unassigned languages|Category:Language isolates}}", ["qfa-mix"] = "{{also|Category:Creole or pidgin languages}}", ["crp"] = "{{also|Category:Mixed languages}}", } local specially_named_families = { ["Languages of disputed affiliation"] = "qfa-dis", ["Language isolates"] = "qfa-iso", } local specially_named_family_sort_keys = { ["Languages of disputed affiliation"] = "Disputed affiliation", ["Language isolates"] = "Isolate", } insert(raw_handlers, function(data) local family = require("Module:families").getByCategoryName(data.category) if not family then local special_code = specially_named_families[data.category] if special_code then family = require("Module:families").getByCode(special_code) if not family then error(("Internal error: Family code '%s' is an invalid family code."):format(special_code)) end end end if not family then return nil end local parent_fam = family:getFamily() local first_parent, parent_sort_key, first_parent_sort_key if not parent_fam or family_has_no_category(parent_fam) then first_parent = "পরিবার অনুযায়ী ভাষা" parent_sort_key = specially_named_family_sort_keys[data.category] first_parent_sort_key = "*" .. (parent_sort_key or "") else first_parent = parent_fam:getCategoryName() end local description, additional = "", "" local topright local preceding = preceding_information[family:getCode()] local additional_preface = additional_information[family:getCode()] if additional_preface then additional_preface = additional_preface .. "\n\n" else additional_preface = "" end if family_is_not_a_family(family) then additional_preface = additional_preface .. "This is a pseudo-family, used for grouping purposes but not forming a linguistically valid [[clade]] " .. "(i.e. a set of linguistically related languages descending from a common parent).\n\n" .. "Information about this family:\n\n" else additional_preface = "Information about " .. family:getCanonicalName() .. ":\n\n" end if not data.called_from_inside then topright = {} local wikipedia_art = family:getWikipediaArticle("noCategoryFallback") if wikipedia_art then insert(topright, "{{wp|" .. wikipedia_art .. "}}") end local commons_cat = family:getCommonsCategory() if commons_cat then insert(topright, "{{commonscat|" .. commons_cat:gsub("^Category:", "") .. "}}") end topright = #topright > 0 and concat(topright, "\n") or nil description = "This is the main category of the '''" .. family:getDisplayForm() .. "'''." additional = additional_preface .. infobox(family) end local ok, tree_of_descendants = pcall( require("Module:family tree").print_children, family:getCode(), { protolanguage_under_family = true, must_have_descendants = true }) if ok then if tree_of_descendants then additional = additional .. NavFrame_for_family_tree( tree_of_descendants, "Family tree") else additional = additional .. "\n\n" .. ucfirst(family:getCanonicalName()) .. " has no descendants or varieties listed in Wiktionary's language data modules." end else mw.log("error while generating tree: " .. tostring(tree_of_descendants)) end local parents = { {name = first_parent, sort = first_parent_sort_key}, {name = "সকল ভাষা পরিবার", sort = parent_sort_key}, } if parent_fam and parent_fam:getCode() == "sgn" then insert(parents, "All sign languages") end if family_is_papuan(family) then insert(parents, "Papuan languages") end return { preceding = preceding, topright = topright, description = description, additional = additional, parents = parents, breadcrumb = family:getCanonicalName(), can_be_empty = true, } end) return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers} jy37yc2nv7vp1zq32hra4c6djgrgl6y تكفرون 0 162400 510618 447521 2026-06-11T03:09:18Z Redmin 6857 [[en: تكفرون]] থেকে কপি করলাম 510618 wikitext text/x-wiki =={{langname|ar}}== ===ক্রিয়া=== {{ar-verb form|+كفر<I>}} #তুমি অবিশ্বাস করো। axrvlu9ajf9v61cjyw1ijpcipgs6i08 Allah 0 163445 510628 463544 2026-06-11T04:45:11Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L675887-এর সাথে সংযোগ তৈরি করছি 510628 wikitext text/x-wiki ==ইংরেজি== {{wp|lang=en}} {{wikiquote|lang=en}} ===ব্যুৎপত্তি=== {{root|en|ar|ء ل ه}} আরবি {{der|en|ar|اللّٰه}} থেকে, যা {{m|ar|اَل||the}} + {{m|ar|إِلَه||দেবতা}}-এর সংক্ষিপ্ত রূপ। হিব্রু {{cog|he|אֵל|tr=él}}, {{m|he|אלוהים|tr=elohím}} এবং আরামীয় {{cog|arc|אלהא|tr=aláhâ}} এর সঙ্গে সম্পর্কিত। মূল প্রোটো-সেমিটিক *ʾil- থেকে। ===উচ্চারণ=== * {{IPA|en|/əˈlɑː/}}, {{IPA|en|/ˈɑːlɑː/}}, {{IPA|en|/ˌɑːˈlɑː/}} (আরবি উচ্চারণের কাছাকাছি) * {{IPA|en|/ˈæ.lə/}}, {{IPA|en|/ˈɑːlə/}} (ইংরেজিকৃত) * {{audio|en|LL-Q1860 (eng)-Vealhurl-Allah.wav|a=দক্ষিণ ইংল্যান্ড}} * {{rhymes|en|ɑː|ælə|s=2}} ===নামবাচক বিশেষ্য=== {{en-prop}} # {{lb|en|ইসলাম}} [[আল্লাহ]] – [[ইসলাম|ইসলাম ধর্মে]] [[এক]] ও [[অদ্বিতীয়]] [[স্রষ্টা]], [[সর্বশক্তিমান]] [[ঈশ্বর]]। #: {{ux|en|Muslims say “Allāhu akbar” – '''Allah''' is the Greatest.|মুসলমানরা বলেন “আল্লাহু আকবার” – '''আল্লাহ''' সর্বশ্রেষ্ঠ।}} ====ব্যবহার নোট==== আরবিতে [[الله|اللّٰه]] [[শব্দ]]টি [[ইহুদি]] (বিশেষ করে আরব), [[খ্রিস্টান]] (আরব) ও [[মুসলিম]] সকলেই ঈশ্বর বোঝাতে ব্যবহার করেন। কিন্তু আধুনিক ইংরেজিতে “Allah” প্রায় সবসময়ই শুধু ইসলামের ঈশ্বর বোঝাতে ব্যবহৃত হয়। অন্য ধর্মের প্রসঙ্গে সাধারণত “God” বলা হয়। ====উদ্ভূত শব্দ==== {{col|en |alhamdulillah |Allahabad |ayatollah |bismillah |inshallah |mashallah |subhanallah |wallahi |astaghfirullah |Baháʼu'lláh }} ====অনুবাদ==== {{trans-top|ইসলামে ঈশ্বর}} * আরবি: {{t+|ar|اللّٰه|m}} * বাংলা: {{t+|bn|আল্লাহ}} * হিন্দি: {{t+|hi|अल्लाह|m}} * উর্দু: {{t+|ur|اَللّٰہ|m}} * তামিল: {{t+|ta|அல்லாஹ்}} * মালায়ালাম: {{t+|ml|അല്ലാഹു}} * তেলুগু: {{t+|te|అల్లాహ్}} * ইন্দোনেশীয়: {{t+|id|Allah}} * মালয়: {{t+|ms|Allah}} * তুর্কি: {{t+|tr|Allah}} * ফার্সি: {{t+|fa|الله|tr=allâh}} * পশতু: {{t+|ps|الله|m}} * কুর্দি (উত্তর): {{t+|kmr|Xwedê}}, {{t+|kmr|Xuda}} * চীনা (ম্যান্ডারিন): {{t+|cmn|安拉|tr=Ānlā}}, {{t+|cmn|阿拉|tr=Ālā}} * জাপানি: {{t+|ja|アッラー|tr=Arrā}} * কোরিয়ান: {{t+|ko|알라}} * রুশ: {{t+|ru|Алла́х|m}} * স্প্যানিশ: {{t+|es|Alá|m}} * ফরাসি: {{t+|fr|Allah|m}} * জার্মান: {{t+|de|Allah|m}} {{trans-bottom}} ====আরও দেখুন==== * [[Appendix:The 99 names of Allah]] {{C|en|ঈশ্বর}} ==আলবেনীয়== {{wp|sq:+u}} ===ব্যুৎপত্তি=== {{bor+|sq|ota|اَللّٰه}} থেকে, যা {{der|sq|ar|اَللّٰه}} থেকে এসেছে, মূলে প্রোটো-সেমিটিক *ʾil-। ===নামবাচক বিশেষ্য=== {{sq-proper noun|m}} # [[আল্লাহ]] ===আরও পড়ুন=== * {{R:sq:Jungg:1895|Aλah}} * {{R:sq:FGJSSH:1980}} * {{R:sq:Newmark:1999}} * {{R:sq:FGJSH:2006}} {{C|sq|ইসলাম}} ==আজারবাইজানি== {{az-variant|Аллаһ|a-cls=الله|a-n=آللاه}} ===ব্যুৎপত্তি=== {{bor|az|ar|اَللّٰه}} থেকে। ===নামবাচক বিশেষ্য=== {{head|az|proper noun}} # {{l|en|Allah}}, [[আল্লাহ]] {{C|az|ইসলাম|খ্রিস্টধর্ম}} #: {{uxi|az|'''Allah''' qoysa|আল্লাহ যদি চান}} #: {{uxi|az|'''Allah''' saxlasın|আল্লাহ হেফাজত করুন}} #: {{uxi|az|'''Allah''' rəhmət eləsin|আল্লাহ রহম করুন}} #: {{uxi|az|'''Allaha''' and olsun|আল্লাহর কসম}} ====রূপান্তর==== {{az-decl-noun|a|h}} ==ডাচ== ===ব্যুৎপত্তি=== {{bor|nl|ar|اللّٰه}} থেকে। ===উচ্চারণ=== * {{IPA|nl|/ˈɑ.laː/}} * {{audio|nl|Nl-Allah.ogg}} ===নামবাচক বিশেষ্য=== {{nl-proper noun|m}} # [[আল্লাহ]] {{C|nl|ইসলাম}} ==ফিনিশ== ===ব্যুৎপত্তি=== {{der|fi|ar|اللّٰه}} থেকে। ===উচ্চারণ=== * IPA<sup>(key)</sup>: /ˈɑlːɑh/, [ˈɑ̝lːɑ̝h] * Rhymes: -ɑlːɑh * Syllabification<sup>(key)</sup>: Al‧lah * Hyphenation<sup>(key)</sup>: Al‧lah ===নামবাচক বিশেষ্য=== {{fi-proper noun}} # [[আল্লাহ]] ====রূপান্তর==== {{fi-decl-risti|Allah|||a|n=sg|i=0}} ==জার্মান== ===উচ্চারণ=== * {{IPA|de|/ˈala/|/aˈlaː/}} * {{audio|de|De-Allah.ogg|a=জার্মানি (বার্লিন)}} ===নামবাচক বিশেষ্য=== {{de-proper noun|m}} # [[আল্লাহ]] (ইসলামে ঈশ্বর) ==হাউসা== ===ব্যুৎপত্তি=== {{bor|ha|ar|اللّٰه}} থেকে। ===উচ্চারণ=== * {{ha-IPA|allā̀}} ===নামবাচক বিশেষ্য=== {{ha-proper noun|m|Allā̀h}} # [[আল্লাহ]], [[ঈশ্বর]] ==ইন্দোনেশীয়== ===ব্যুৎপত্তি=== {{der|id|ar|اَللّٰه}} থেকে। ===উচ্চারণ=== * {{IPA|id|/ɑ(l)lɑh/}} (মুসলিম প্রসঙ্গে) * {{IPA|id|/a(l)lah/}} (খ্রিস্টান প্রসঙ্গে) ===নামবাচক বিশেষ্য=== {{head|id|proper noun}} # {{lb|id|ইসলাম}} [[আল্লাহ]] # {{lb|id|খ্রিস্টধর্ম}} [[ঈশ্বর]] ====ব্যবহার নোট==== ইন্দোনেশিয়ার বাইবেল অনুবাদে হিব্রু “[[אלוהים]]” কে “Allah” বলা হয়। ====উদ্ভূত শব্দ==== * {{l|id|keallahan}} {{লে|L675887|উচ্চারণ=* {{IPA|ms|/allah/}}|meaning=# {{lb|ms|খ্রিস্টধর্ম}} [[ঈশ্বর]]}} ===বিকল্প রূপ=== * {{l|ms|الله}} ==পোলিশ== ===বিকল্প রূপ=== * {{alt|pl|Allach}} ===ব্যুৎপত্তি=== {{bor+|pl|ar|الله}}। ===উচ্চারণ=== {{pl-pr|a=Pl-Allah.ogg}} ===নামবাচক বিশেষ্য=== {{pl-proper noun|m-pr}} # {{lb|pl|ইসলাম}} [[আল্লাহ]] ==সুইডিশ== ===নামবাচক বিশেষ্য=== {{sv-proper noun}} # {{lb|sv|ইসলাম}} [[আল্লাহ]] ====উদ্ভূত শব্দ==== * {{l|sv|Allahu akbar}} * {{l|sv|inshallah}} ==তুর্কি== ===ব্যুৎপত্তি=== {{inh+|tr|ota|الله}}, {{der|tr|ar|اَللّٰه}}। ===উচ্চারণ=== * {{IPA|tr|/ɑɫːɑh/}} ===নামবাচক বিশেষ্য=== {{tr-noun|Allah'ı|-}} # [[আল্লাহ]] ====উদ্ভূত শব্দ==== {{col3|tr |Allah Allah |estağfurallah |inşallah |maşallah }} ====দেখুন==== * {{l|tr|Tanrı}} kovmtw66c87ds8su8h5c922fdgd207f Qamishli 0 163657 510621 464203 2026-06-11T03:40:03Z Redmin 6857 /* অনুবাদ */ 510621 wikitext text/x-wiki ==ইংরেজি== {{wp|lang=en|Qamishli}} ===ব্যুৎপত্তি=== {{bor|en|tr|-}} {{suf|tr|kamış|li|t1=নলখাগড়া|t2=সহিত|nocat=1}} থেকে, {{calque|en|syc|ܒܝܬ ܙܠܝܢ|tr=bēṯ zālīn|lit=নলের ঘর|nocap=1|nocat=1}} এর ক্যাল্ক। তুলনা করুন {{cog|az|qamışlıq}}। ===নামবাচক বিশেষ্য=== {{en-prop}} # [[কামিশলি]] — সিরিয়ার উত্তর-পূর্বে আল-হাসাকা গভর্নরেটের একটি [[শহর]], তুরস্ক সীমান্তে অবস্থিত। ====অনুবাদ==== {{trans-top|কামিশলি (শহর)}} * বাংলা: {{t+|bn|কামিশলি}} * আরবি: {{t+|ar|الْقَامِشْلِي|f|tr=al-Qāmišlī}} * তুর্কি: {{t+|tr|Kamışlı}} * কুর্দি: {{t+|ckb|Qamişlo}} {{trans-bottom}} hmsplyh3rz5j65u52tfny7ojzakzaza 510622 510621 2026-06-11T03:40:48Z Redmin 6857 [[Special:Contributions/Redmin|Redmin]] ([[User talk:Redmin|আলাপ]])-এর সম্পাদিত [[Special:Diff/510621|510621]] নম্বর সংশোধনটি বাতিল করা হয়েছে 510622 wikitext text/x-wiki ==ইংরেজি== {{wp|lang=en|Qamishli}} ===ব্যুৎপত্তি=== {{bor|en|tr|-}} {{suf|tr|kamış|li|t1=নলখাগড়া|t2=সহিত|nocat=1}} থেকে, {{calque|en|syc|ܒܝܬ ܙܠܝܢ|tr=bēṯ zālīn|lit=নলের ঘর|nocap=1|nocat=1}} এর ক্যাল্ক। তুলনা করুন {{cog|az|qamışlıq}}। ===নামবাচক বিশেষ্য=== {{en-prop}} # [[কামিশলি]] — সিরিয়ার উত্তর-পূর্বে আল-হাসাকা গভর্নরেটের একটি [[শহর]], তুরস্ক সীমান্তে অবস্থিত। ====অনুবাদ==== {{trans-top|কামিশলি (শহর)}} * বাংলা: {{t+|bn|কামিশলি}} * আরবি: {{t+|ar|الْقَامِشْلِي|f|tr=al-Qāmišlī}} * তুর্কি: {{t+|tr|Kamışlı}} * কুর্দি: {{t+|ku|Qamişlo}} {{trans-bottom}} mb3rpdiodtq1dw9913ak0jx3lroisz4 خبر 0 167435 510619 508029 2026-06-11T03:11:30Z Redmin 6857 510619 wikitext text/x-wiki ==আরবি== ===ব্যুৎপত্তি ১=== ===উচ্চারণ=== * {{ar-IPA|خَبَرَ}} ===ক্রিয়া=== خَبَرَ • (ḵbara) আমি (অ-অতীত يَخْبُرُ (yaḵburu), মৌখিক বিশেষ্য خُبْر (ḵubr) বা خِبْرَة (ḵibra)) # {{lb|ar|সক্রিয়}} [[চেষ্টা করা]], [[পরীক্ষা করা]] ===ক্রিয়া=== # {{lb|ar|সক্রিয়}} [[অভিজ্ঞতা অর্জন করা]], ভালোভাবে জানা, পুরোপুরি জানা ===ব্যুৎপত্তি ২=== ===উচ্চারণ=== {{ar-IPA|خَبُرَ}} ===ক্রিয়া=== # {{+obj|ar|acc/:بِ}} পুরোপুরি জানা, ভালোভাবে পরিচিত হওয়া ===ব্যুৎপত্তি ৩=== ===উচ্চারণ=== {{ar-IPA|خَبَّرَ}} ===ক্রিয়া=== {{ar-verb|II.pass}} # {{+obj|ar|بِ}} [[জানানো]], [[অবহিত করা]], [[সংবাদ দেওয়া]] ===ব্যুৎপত্তি ৪=== ===উচ্চারণ=== {{ar-IPA|خَبَر}} * {{audio|ar|Ar-خبر.ogg}} ===বিশেষ্য=== {{ar-noun|خَبَر|m|pl=أَخْبَار}} # [[রিপোর্ট]], [[সংবাদ]], [[বার্তা]] # {{l|en|proposition|t=সত্য বা মিথ্যা প্রকাশক বাক্য}} # [[খবর]], [[সংবাদ]] # [[তথ্য]], [[জ্ঞান]] # [[গুজব]], [[কাহিনী]] # [[বিষয়]], [[ঘটনা]] # {{lb|ar|ব্যাকরণ}} নামবাচক বাক্যের [[প্রেডিকেট]] ====বিপরীতার্থক শব্দ==== * {{antsense|statement}} {{l|ar|إِنْشَاء}} =====আগত শব্দ===== {{top3}} * {{desc|bor=1|ace|haba}} * {{desc|bor=1|hy|խաբար}} * {{desc|bor=1|az|xəbər}} * {{desc|bor=1|ba|хәбәр}} * {{desc|bor=1|jdt|хабэри}} * {{desc|bor=1|kk|хабар}} * {{desc|kjh|хабар|bor=1}} * {{desc|klj|xabar|bor=1}} * {{desc|bor=1|ky|кабар}} * {{desc|kum|хабар|bor=1}} * {{desc|lez|хабар|bor=1}} * {{desctree|bor=1|ms|khabar}} * {{desc|bor=1|zdj|haɓari}} * {{desc|bor=1|nog|хабар}} * {{desc|bor=1|ps|خبر|tr=xabár}} * {{desctree|bor=1|fa|خبر|tr=xabar}} * {{desctree|bor=1|ota|خبر|sc=ota-Arab|tr=haber}} * {{desc|bor=1|cjs|қабар}} * {{desc|bor=1|sw|habari}} * {{desc|bor=1|tt|хәбәр}} * {{desc|bor=1|tk|habar}} * {{desc|bor=1|ug|خەۋەر}} * {{desc|bor=1|uz|xabar}} * {{desc|cv|хыпар|bor=1}} {{bottom}} ===ব্যুৎপত্তি ৫=== ===বিশেষ্য=== {{ar-noun|خِبْر,خُبْر|m}} # {{ar-verbal noun of|خَبَرَ|form=I}} # [[জ্ঞান]], [[তথ্য]] ===রেফারেন্স=== * {{R:ar:Dozy|volume=1|page=347}} * {{R:ar:Freytag|volume=1|page=455}} * {{R:ar:Lane|pages=695–696}} * {{R:ar:Steingass|page=311}} * {{R:ar:Wehr-4|pages=261–262}} {{C|ar|ত্রিব্যক্তিক ক্রিয়া}} ==চাগাতাই== ===ব্যুৎপত্তি=== {{root|chg|ar|خ ب ر}} {{bor+|chg|fa-cls|خَبَر}}, {{der|chg|ar|خَبَر}} থেকে। ===বিশেষ্য=== # [[খবর]] ====আগত শব্দ===== * {{desc|ug|خەۋەر}} * {{desc|uz|xabar}} ===আরও পড়ুন=== * {{R:chg:Shaw|page=107}} * {{R:chg:Jarring|page=127}} ==খলজ== ===বিশেষ্য=== {{head|klj|noun|head=خَبَر|tr=xabar ''or'' xəbər|definite accusative|[[خَبَری]] or [[خَبَرؽ]]|plural|[[خَبَرلَر]] or [[خَبَرلار]]}} # {{spelling of|klj|Arabic|[[xabar]], [[xəbər]]|t=[[খবর]]}} ====রূপান্তর===== {{klj-arabic-infl-noun-c|a}} {{klj-arabic-infl-noun-c|ə}} ==মরক্কো আরবি== {{ary-rootbox|خ ب ر}} ===ব্যুৎপত্তি ১=== {{inh|ary|ar|أَخْبَرَ}} থেকে। ===উচ্চারণ=== * {{IPA|ary|/xbar/}} ===ক্রিয়া=== {{ary-verb|I|tr=ḵbar|np=يخبر|nptr=yiḵbar}} # {{lb|ary|সক্রিয়}} [[জানানো]], [[অবহিত করা]] ===ব্যুৎপত্তি ২=== {{inh|ary|ar|خَبَر}} থেকে। ===উচ্চারণ=== * {{IPA|ary|/xa.bar/}} * {{audio|ary|LL-Q56426 (ary)-Fenakhay-خبر.wav}} ===বিশেষ্য=== {{ary-noun|g=m|tr=ḵabar|pl=خبار|pltr=ḵbār|pl2=أخبار|pl2tr=ʔaḵbār}} # [[রিপোর্ট]], [[বার্তা]], [[সংবাদ]] # [[খবর]] # [[তথ্য]] ==উসমানীয় তুর্কি== ===ব্যুৎপত্তি=== {{bor+|ota|ar|خَبَر|t=খবর; রিপোর্ট; গুজব}}। {{root|ota|ar|خ ب র}} ===বিশেষ্য=== {{head|ota|noun|tr=haber|definite accusative|خبری|plural|اخبار|f1tr=haberi|f2tr=ahbâr}} # [[খবর]], [[সংবাদ]], বর্তমান ঘটনা সম্পর্কিত তথ্য যা মিডিয়ায় প্রচারিত হয় #: {{syn|ota|چاو|tr=çav}} # [[তথ্য]], অনিশ্চয়তা দূর করে এমন জ্ঞান #: {{syn|ota|معلومات|tr=maʼlumât}} # [[রিপোর্ট]], [[বিবরণ]], [[বক্তব্য]] #: {{syn|ota|تقریر|tr1=takrir|راپور|tr2=rapor}} # {{lb|ota|ব্যাকরণ}} [[প্রেডিকেট]] ====আগত শব্দ==== * {{desc|tr|haber}} * {{desc|bor=1|sq|haber}} * {{desc|be|ха́бар|bor=1}} * {{desc|bg|хабе́р|bor=1}} * {{desc|bor=1|crh|haber}} * {{desc|bor=1|el|χαμπάρι}} * {{desc|bor=1|lad|-}} *: {{desc|sclang=1|lad|חאביר}} *: {{desc|sclang=1|lad|haber}} * {{desc|lzz|bor=1|ხაბერი|იხაპარს|der2=1}} * {{desc|pnt|χαπάριν|χαπάρ'|χαπέριν|χαπέρ'|bor=1}} * {{desc|bor=1|ro|habar}} * {{desc|ru|хаба́р|bor=1}} * {{desc|bor=1|sh|-}} *: {{desc|sclang=1|sh|ха̀бер|alts=1}} *: {{desc|sclang=1|sh|hàber|alts=1}} * {{desc|uk|хаба́р|bor=1}} ===আরও পড়ুন=== {{col-top|2|click to expand}} * {{R:ota:BdM|خبر|vol=I|page=688}} * {{R:tr:OTK|haber|vol=1|page=1823}} * {{R:ota:Devellioğlu|haber|page=362}} * {{R:ota:Kelekian|page=531}} * {{R:ota:Meninski|C|column=1161|Nuntium}} * {{R:ota:Meninski|L|column=1854}} * {{R:tr:Nishanyan|haber}} * {{R:ota:Redhouse|page=829}} {{col-bottom}} ==ফারসি== {{উইকিপিডিয়া|fa:}} ===ব্যুৎপত্তি=== {{bor+|fa|ar|خَبَر}}। ===উচ্চারণ=== {{fa-IPA|xa`bar}} ===বিশেষ্য=== {{fa-noun|head=خَبَر|cls=خَبَر|pl=خبرها|pl2=اخبار}} # [[খবর]] #: {{uxa|fa-ira|چِه '''خَبَر'''؟|কেমন আছেন; কী খবর?}} # [[তথ্য]], [[জ্ঞান]] ====সম্পর্কিত শব্দ==== * {{l|fa|خبرنگار|tr=xabar-negâr}} * {{l|fa|بی‌خبر|tr=bê-xabar}} * {{l|fa|چه خبر|tr=če xabar}} ====আগত শব্দ==== * {{desc|tg|хабар}} * {{desc|as|খবৰ|bor=1}} * {{desc|bn|খবর|bor=1}} * {{desc|gu|ખબર|bor=1}} * {{desc|inc-hnd|-|bor=1}} *: {{desc|hi|ख़बर}} *: {{desc|ur|خَبَر|tr=xabar}} *:: {{desc|en|kubber|bor=1}} * {{desc|mr|खबर|bor=1}} * {{desc|ne|खबर|bor=1}} * {{desc|lrc|خںڤںر|tr=xəvər|bor=1}} * {{desc|pa|-|bor=1}} *: {{desc|pa|ਖ਼ਬਰ|sclang=1}} *: {{desc|pa|خَبَر|sclang=1}} * {{desc|te|కబురు|bor=1}} 9v3wz57c2l8v7e12grqdf8km271x89l বিষয়শ্রেণী:আরবি 14 168988 510609 2026-06-11T02:51:54Z Hiyuune 11971 Hiyuune [[বিষয়শ্রেণী:আরবি]] পাতাটিকে [[বিষয়শ্রেণী:আরবি ভাষা]] শিরোনামে পুনর্নির্দেশনার মাধ্যমে স্থানান্তর করেছেন 510609 wikitext text/x-wiki #পুনর্নির্দেশ [[:বিষয়শ্রেণী:আরবি ভাষা]] olidhy9ir1z2mlay40dxotvezirg3ah 0 168989 510632 2026-06-11T08:00:28Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L642752-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510632 wikitext text/x-wiki {{লে|L642752}} sfgqejy1f885iub40zwj7fb9n8saf9z おかあさん 0 168990 510634 2026-06-11T08:01:03Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L405867-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510634 wikitext text/x-wiki {{লে|L405867}} dhpuzxte98wiloxpacu4jt044pc5wz0 mudjer 0 168991 510635 2026-06-11T08:01:12Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L646248-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510635 wikitext text/x-wiki {{লে|L646248}} pby2r8zu8s5839zfxsokekotiy3uz5w gegat 0 168992 510636 2026-06-11T08:01:32Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1448777-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510636 wikitext text/x-wiki {{লে|L1448777}} b8kg03yfxxk65txygt0y9m00pjv1oxh épouse 0 168993 510638 2026-06-11T08:03:22Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L19835-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510638 wikitext text/x-wiki {{লে|L19835}} 2rv8dm0t6ysidzh758m4uudn1faz8gd bini 0 168994 510639 2026-06-11T08:04:00Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1133625-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510639 wikitext text/x-wiki {{লে|L1133625}} lwwi2kw7z1jebna9jc2vy8cwq7pkcfi commiseration 0 168995 510640 2026-06-11T08:04:18Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L318370-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510640 wikitext text/x-wiki {{লে|L318370}} k118x52rjb6w8n53k54ew3ule8fu943 quixotic 0 168996 510641 2026-06-11T08:04:28Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L339697-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510641 wikitext text/x-wiki {{লে|L339697}} lvfj3hsnf6xf1glquw09lu0gq9jugqk کتابخانه 0 168997 510642 2026-06-11T08:05:15Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510642 wikitext text/x-wiki {{লে|L6797}} 64h4khu8udpxx61b1tssl0iaptaw5na kitobxona 0 168998 510643 2026-06-11T08:05:18Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510643 wikitext text/x-wiki {{লে|L6797}} 64h4khu8udpxx61b1tssl0iaptaw5na китобхона 0 168999 510644 2026-06-11T08:05:19Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510644 wikitext text/x-wiki {{লে|L6797}} 64h4khu8udpxx61b1tssl0iaptaw5na su 0 169000 510645 2026-06-11T08:05:21Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510645 wikitext text/x-wiki {{লে|L8412}} {{লে|L8237}} cobtsfzhc7lti4f9knco3jcv0o54x5b صو 0 169001 510646 2026-06-11T08:05:24Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510646 wikitext text/x-wiki {{লে|L8412}} tgugoh7vrni447vhw4551non1uveoxx رح࣪ڠۡگ࣪ࢬ 0 169002 510647 2026-06-11T08:05:25Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510647 wikitext text/x-wiki {{লে|L1333555}} g2nt6o3e64cckuu67zu99411vmzu15a 𐴌𐴟𐴇𐴝𐴥𐴚𐴒𐴙𐴝 0 169003 510648 2026-06-11T08:05:26Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510648 wikitext text/x-wiki {{লে|L1333555}} g2nt6o3e64cckuu67zu99411vmzu15a 𐴀𐴠𐴌𐴝𐴊𐴝 0 169004 510649 2026-06-11T08:05:28Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510649 wikitext text/x-wiki {{লে|L1340523}} hkne0lh6wnksviwgow56u2o4pawttww اࣦرد 0 169005 510650 2026-06-11T08:05:29Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510650 wikitext text/x-wiki {{লে|L1340523}} hkne0lh6wnksviwgow56u2o4pawttww су 0 169006 510651 2026-06-11T08:05:31Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510651 wikitext text/x-wiki {{লে|L8237}} b65ehozti1l31866qhu59xqm19hezyf سۇ 0 169007 510652 2026-06-11T08:05:32Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510652 wikitext text/x-wiki {{লে|L8237}} b65ehozti1l31866qhu59xqm19hezyf سۉو 0 169008 510653 2026-06-11T08:05:32Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510653 wikitext text/x-wiki {{লে|L8410}} 39zx24pedyutkmut2rx6byxaofgha81 suw 0 169009 510654 2026-06-11T08:05:33Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510654 wikitext text/x-wiki {{লে|L8410}} 39zx24pedyutkmut2rx6byxaofgha81 سوو 0 169010 510655 2026-06-11T08:05:35Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510655 wikitext text/x-wiki {{লে|L8410}} {{লে|L8416}} kmxiiz350yl8ik0pmzyafxukuqomub3 сув 0 169011 510656 2026-06-11T08:05:39Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510656 wikitext text/x-wiki {{লে|L8410}} 39zx24pedyutkmut2rx6byxaofgha81 औरत 0 169012 510657 2026-06-11T08:05:40Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510657 wikitext text/x-wiki {{লে|L641469}} {{লে|L1093223}} q34y47600dzkzfm9djjioh185qppep8 عورت 0 169013 510658 2026-06-11T08:05:42Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510658 wikitext text/x-wiki {{লে|L641469}} {{লে|L1093203}} {{লে|L1093223}} pv16jn1ol7wfv0wl0hfccc9ka5kbiob 𐴒𐴡𐴌𐴡𐴔 0 169014 510659 2026-06-11T08:05:46Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510659 wikitext text/x-wiki {{লে|L1337429}} 4pgltywoynw2olsjgwbdnyxaxi6xvhj گࣤرࣤمۡ 0 169015 510660 2026-06-11T08:05:47Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510660 wikitext text/x-wiki {{লে|L1337429}} 4pgltywoynw2olsjgwbdnyxaxi6xvhj 𐴎𐴡𐴔𐴝 0 169016 510661 2026-06-11T08:05:48Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510661 wikitext text/x-wiki {{লে|L1338022}} sxaiv04ibqotosqn100iuoy9iaooizo زࣤم 0 169017 510662 2026-06-11T08:05:50Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510662 wikitext text/x-wiki {{লে|L1338022}} sxaiv04ibqotosqn100iuoy9iaooizo سݳ 0 169018 510663 2026-06-11T08:05:52Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510663 wikitext text/x-wiki {{লে|L846070}} 3i75f061sjlonw97kpcyhazhg8hyda2 بࣤل 0 169019 510664 2026-06-11T08:05:55Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510664 wikitext text/x-wiki {{লে|L1333564}} 74i46689q0qwwqvd93nh5qjvxdzirdp 𐴁𐴡𐴓𐴞 0 169020 510665 2026-06-11T08:05:55Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510665 wikitext text/x-wiki {{লে|L1333564}} 74i46689q0qwwqvd93nh5qjvxdzirdp аврат 0 169021 510666 2026-06-11T08:05:56Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510666 wikitext text/x-wiki {{লে|L1093203}} imqk4bp80y73oh21z0bbp6zr76guja5 بزرۡ 0 169022 510667 2026-06-11T08:05:58Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510667 wikitext text/x-wiki {{লে|L1410205}} 919hwxv3wuwp22v097z60u2wbec9v8c 𐴁𐴝𐴎𐴝𐴌 0 169023 510668 2026-06-11T08:05:59Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510668 wikitext text/x-wiki {{লে|L1410205}} 919hwxv3wuwp22v097z60u2wbec9v8c ـك 0 169024 510669 2026-06-11T08:06:00Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510669 wikitext text/x-wiki {{লে|L1551412}} ai6ge0ai75v41oy9vrpradkm4d2byxv suv 0 169025 510670 2026-06-11T08:06:01Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510670 wikitext text/x-wiki {{লে|L8416}} 72td4vk5skitblm9s50r4k7uivmpijl сув‍ 0 169026 510671 2026-06-11T08:06:05Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510671 wikitext text/x-wiki {{লে|L8416}} 72td4vk5skitblm9s50r4k7uivmpijl किताब 0 169027 510672 2026-06-11T08:06:11Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510672 wikitext text/x-wiki {{লে|L619330}} jcjmi5h9luu0bxbcuo3xak1cjj94zxf об 0 169028 510673 2026-06-11T08:06:14Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510673 wikitext text/x-wiki {{লে|L8290}} 00ck9gi8xpwdyps91pv8gvf6m68a7jc ob 0 169029 510674 2026-06-11T08:06:22Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510674 wikitext text/x-wiki {{লে|L8290}} 00ck9gi8xpwdyps91pv8gvf6m68a7jc אָב 0 169030 510675 2026-06-11T08:06:35Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510675 wikitext text/x-wiki {{লে|L8290}} 00ck9gi8xpwdyps91pv8gvf6m68a7jc כתאב 0 169031 510676 2026-06-11T08:06:44Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510676 wikitext text/x-wiki {{লে|L226813}} h2bfj0hglo4gx7jo7n8ssz56dk4tdlr kitob 0 169032 510677 2026-06-11T08:06:47Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510677 wikitext text/x-wiki {{লে|L226813}} h2bfj0hglo4gx7jo7n8ssz56dk4tdlr китоб 0 169033 510678 2026-06-11T08:06:50Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510678 wikitext text/x-wiki {{লে|L226813}} h2bfj0hglo4gx7jo7n8ssz56dk4tdlr جمع 0 169034 510679 2026-06-11T08:06:52Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510679 wikitext text/x-wiki {{লে|L1003213}} 1zblecu1f5mvu7320ujsbz4cffwo8ez ҷамъ 0 169035 510680 2026-06-11T08:06:53Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510680 wikitext text/x-wiki {{লে|L1003213}} 1zblecu1f5mvu7320ujsbz4cffwo8ez גׄמע 0 169036 510681 2026-06-11T08:06:53Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510681 wikitext text/x-wiki {{লে|L1003213}} 1zblecu1f5mvu7320ujsbz4cffwo8ez çamʼ 0 169037 510682 2026-06-11T08:06:54Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510682 wikitext text/x-wiki {{লে|L1003213}} 1zblecu1f5mvu7320ujsbz4cffwo8ez آل 0 169038 510683 2026-06-11T08:06:54Z LexemeBot 14414 উইকিউপাত্ত লেক্সিমের জন্য একটি নতুন ভুক্তি তৈরি করছি 510683 wikitext text/x-wiki {{লে|L1484204}} fub4fzpkyym6b02eoke04y4080crij5