Mô đun:Thống kê Wiktionary

Từ điển mở Wiktionary
Bước tới điều hướng Bước tới tìm kiếm
Tài liệu mô đun[tạo]
---Các hàm có liên quan đến thống kê của dự án Wiktionary tiếng Việt.
local p = {}
local viet = require "Module:Quốc ngữ"
local stats = mw.site.stats
local lang = mw.getContentLanguage()

local categoryPrefix = "Mục từ "

---Dữ liệu các thể loại ngôn ngữ.
p.categoriesByCode = {
	["alu"] = {name = "tiếng 'Are'are", templates = 2},
    ["egy"] = {name = "tiếng Ai Cập", templates = 2},
    ["ara"] = {short = "ar", name = "tiếng Ả Rập", templates = 2},
    ["acw"] = {name = "tiếng Ả Rập Hijazi", templates = 2},
    ["arz"] = {name = "tiếng Ả Rập tại Ai Cập", templates = 2},
    ["aas"] = {name = "tiếng Aasax", templates = 2},
    ["aau"] = {name = "tiếng Abau", templates = 2},
    ["abq"] = {name = "tiếng Abaza", templates = 2},
    ["abk"] = {name = "tiếng Abkhaz", templates = 2},
	["ady"] = {name = "tiếng Adygea", templates = 2},
	["aar"] = {short = "aa", name = "tiếng Afar", templates = 2},
    ["afr"] = {short = "af", name = "tiếng Afrikaans", templates = 2},
    ["aho"] = {name = "tiếng Ahom", templates = 2},
    ["ain"] = {name = "tiếng Ainu", templates = 2},
    ["akk"] = {name = "tiếng Akkad", templates = 2},
    ["sqi"] = {short = "sq", name = "tiếng Albani", templates = 2},
    ["alr"] = {name = "tiếng Alutor", templates = 2},
    ["amh"] = {short = "am", name = "tiếng Amhara", templates = 2},
    ["amu"] = {name = "tiếng Amuzgo", templates = 2},
    ["eng"] = {short = "en", name = "tiếng Anh", templates = 2},
    ["ang"] = {name = "tiếng Anh cổ", templates = 2},
    ["enm"] = {name = "tiếng Anh trung đại", templates = 2},
    ["arg"] = {short = "an", name = "tiếng Aragon", templates = 2},
    ["aem"] = {name = "tiếng Arem", templates = 2},
    ["hye"] = {short = "hy", name = "tiếng Armenia", templates = 2},
    ["asm"] = {short = "as", name = "tiếng Assam", templates = 2},
    ["ast"] = {name = "tiếng Asturias", templates = 2},
    ["aib"] = {name = "tiếng Äynu", templates = 2},
    ["aze"] = {short = "az", name = "tiếng Azerbaijan", templates = 2},
    ["pol"] = {short = "pl", name = "tiếng Ba Lan", templates = 2},
	["bdq"] = {name = "tiếng Ba Na", templates = 2},
    ["fas"] = {short = "fa", name = "tiếng Ba Tư", templates = 2},
	["ban"] = {name = "tiếng Bali", templates = 2},
	["bax-o"] = {name = "tiếng Bamum cổ", templates = 2},
	["peh"] = {name = "tiếng Bảo An", templates = 2},
    ["bak"] = {short = "ba", name = "tiếng Bashkir", templates = 2},
    ["eus"] = {short = "eu", name = "tiếng Basque", templates = 2},
    ["atv"] = {name = "tiếng Bắc Altai", templates = 2},
	["non"] = {name = "tiếng Bắc Âu cổ", templates = 2},
	["nod"] = {name = "tiếng Bắc Thái", templates = 2},
	["ykg"] = {name = "tiếng Bắc Yukaghir", templates = 2},
    ["isl"] = {short = "is", name = "tiếng Băng Đảo", templates = 2},
    ["bej"] = {name = "tiếng Beja", templates = 2},
    ["bel"] = {short = "be", name = "tiếng Belarus", templates = 2},
    ["blc"] = {name = "tiếng Bella Coola", templates = 2},
    ["ben"] = {short = "bn", name = "tiếng Bengal", templates = 2},
    ["byn"] = {name = "tiếng Bilen", templates = 2},
	["bnl"] = {name = "tiếng Boon", templates = 2},
    ["bos"] = {short = "bs", name = "tiếng Bosnia", templates = 2},	
    ["por"] = {short = "pt", name = "tiếng Bồ Đào Nha", templates = 2},
    ["roa-ptg"] = {name = "tiếng Bồ Đào Nha cổ", templates = 2},
    ["ina"] = {short = "ia", name = "tiếng Bổ trợ Quốc tế", templates = 2},
    ["pcc"] = {name = "tiếng Bố Y", templates = 2},
    ["bre"] = {short = "br", name = "tiếng Breton", templates = 2},
    ["bru"] = {name = "tiếng Bru", templates = 2},
    ["xbo"] = {name = "tiếng Bulgar", templates = 2},
    ["bul"] = {short = "bg", name = "tiếng Bulgari", templates = 2},
    ["bua"] = {name = "tiếng Buryat", templates = 2},
    ["chl"] = {name = "tiếng Cahuilla", templates = 2},
    ["crx"] = {name = "tiếng Carrier", templates = 2},
    ["cat"] = {short = "ca", name = "tiếng Catalan", templates = 2},
    ["chg"] = {name = "tiếng Chagatai", templates = 2},
    ["cha"] = {short = "ch", name = "tiếng Chamorro", templates = 2},
    ["chr"] = {name = "tiếng Cherokee", templates = 2},
    ["chy"] = {name = "tiếng Cheyenne", templates = 2},
    ["chb"] = {name = "tiếng Chibcha", templates = 2},
    ["clw"] = {name = "tiếng Chulym", templates = 2},
    ["xcv"] = {name = "tiếng Chuvan", templates = 2},
    ["chv"] = {short = "cv", name = "tiếng Chuvash", templates = 2},
    ["scb"] = {name = "tiếng Chứt", templates = 2},
    ["cos"] = {short = "co", name = "tiếng Corse", templates = 2},
    ["cnc"] = {name = "tiếng Cống", templates = 2},
    ["hrv"] = {short = "hr", name = "tiếng Croatia", templates = 2},
    ["dal"] = {name = "tiếng Dahalo", templates = 2},
    ["dta"] = {name = "tiếng Daur", templates = 2},
	["div"] = {short = "dv", name = "tiếng Dhivehi", templates = 2},
	["rom"] = {name = "tiếng Digan", templates = 2},
	["heb"] = {short = "he", name = "tiếng Do Thái", templates = 2},
	["dgr"] = {name = "tiếng Dogrib", templates = 2},
    ["dlg"] = {name = "tiếng Dolgan", templates = 2},
    ["trk-dkh"] = {name = "tiếng Dukha", templates = 2},
    ["oui"] = {name = "tiếng Duy Ngô Nhĩ cổ", templates = 2},
    ["sce"] = {name = "tiếng Đông Hương", templates = 2},
    ["yuy"] = {name = "tiếng Đông Yugur", templates = 2},
    ["dan"] = {short = "da", name = "tiếng Đan Mạch", templates = 2},
    ["deu"] = {short = "de", name = "tiếng Đức", templates = 2},
    ["est"] = {short = "et", name = "tiếng Estonia", templates = 2},
    ["evn"] = {name = "tiếng Evenk", templates = 2},
    ["eya"] = {name = "tiếng Eyak", templates = 2},
    ["rad"] = {name = "tiếng Ê Đê", templates = 2},
    ["fao"] = {short = "fo", name = "tiếng Faroe", templates = 2},
    ["fry"] = {short = "fy", name = "tiếng Frysk", templates = 2},
    ["gla"] = {short = "gd", name = "tiếng Gaelic tại Scotland", templates = 2},
    ["glg"] = {short = "gl", name = "tiếng Galicia", templates = 2},
    ["grt"] = {name = "tiếng Garo", templates = 2},
    ["gez"] = {name = "tiếng Geʽez", templates = 2},
    ["jra"] = {name = "tiếng Gia Rai", templates = 2},
    ["got"] = {name = "tiếng Goth", templates = 2},
    ["kat"] = {short = "ka", name = "tiếng Gruzia", templates = 2},
    ["grn"] = {short = "gn", name = "tiếng Guaraní", templates = 2},
    ["guk"] = {name = "tiếng Gumuz", templates = 2},
    ["nds"] = {name = "tiếng Hạ Đức", templates = 2},
    ["nld"] = {short = "nl", name = "tiếng Hà Lan", templates = 2},
    ["dsb"] = {name = "tiếng Hạ Sorb", templates = 2},
    ["hat"] = {short = "ht", name = "tiếng Haiti", templates = 2},
    ["hnn"] = {name = "tiếng Hanunoo", templates = 2},
    ["haw"] = {name = "tiếng Hawaii", templates = 2},
    ["hin"] = {short = "hi", name = "tiếng Hindi", templates = 2},
    ["hit"] = {name = "tiếng Hitti", templates = 2},
    ["hoc"] = {name = "tiếng Ho", templates = 2},
    ["hun"] = {short = "hu", name = "tiếng Hungary", templates = 2},
    ["ell"] = {short = "el", name = "tiếng Hy Lạp", templates = 2},
    ["grc"] = {name = "tiếng Hy Lạp cổ", templates = 2},
    ["gmy"] = {name = "tiếng Hy Lạp thời Mycenae", templates = 2},
    ["ido"] = {short = "io", name = "tiếng Ido", templates = 2},
    ["ili"] = {name = "tiếng Ili Turki", templates = 2},
    ["ind"] = {short = "id", name = "tiếng Indonesia", templates = 2},
    ["izh"] = {name = "tiếng Ingria", templates = 2},
    ["iku"] = {short = "iu", name = "tiếng Inuktitut", templates = 2},
    ["irk"] = {name = "tiếng Iraqw", templates = 2},
    ["gle"] = {short = "ga", name = "tiếng Ireland", templates = 2},
    ["sga"] = {name = "tiếng Ireland cổ", templates = 2},
    ["jje"] = {name = "tiếng Jeju", templates = 2},
    ["kpm"] = {name = "tiếng K'Ho", templates = 2},
    ["kbd"] = {name = "tiếng Kabardia", templates = 2},
    ["xal"] = {name = "tiếng Kalmyk", templates = 2},
    ["rmf"] = {name = "tiếng Kalo tại Phần Lan", templates = 2},
    ["kan"] = {short = "kn", name = "tiếng Kannada", templates = 2},
    ["kxs"] = {name = "tiếng Kangjia", templates = 2},
    ["kaa"] = {name = "tiếng Karakalpak", templates = 2},
    ["xqa"] = {name = "tiếng Karakhanid", templates = 2},
    ["krl"] = {name = "tiếng Karelia", templates = 2},
    ["csb"] = {name = "tiếng Kaszëb", templates = 2},
    ["kaz"] = {name = "tiếng Kazakh", templates = 2},
    ["kjh"] = {name = "tiếng Khakas", templates = 2},
    ["klj"] = {name = "tiếng Khalaj", templates = 2},
    ["zkz"] = {name = "tiếng Khazar", templates = 2},
    ["zkt"] = {name = "tiếng Khiết Đan", templates = 2},
    ["khm"] = {short = "km", name = "tiếng Khmer", templates = 2},
    ["khv"] = {name = "tiếng Khvarshi", templates = 2},
    ["kpv"] = {name = "tiếng Komi-Zyrian", templates = 2},
    ["kur"] = {short = "ku", name = "tiếng Kurd", templates = 2},
    ["wka"] = {name = "tiếng Kw'adza", templates = 2},
    ["tuw-kkl"] = {name = "tiếng Kyakala", templates = 2},
    ["kir"] = {name = "tiếng Kyrgyz", templates = 2},
    ["trk-fyk"] = {name = "tiếng Kyrgyz Phú Dụ", templates = 2},
    ["lld"] = {name = "tiếng Ladin", templates = 2},
    ["lkt"] = {name = "tiếng Lakota", templates = 2},
    ["lao"] = {short = "lo", name = "tiếng Lào", templates =2},
    ["lsi"] = {name = "tiếng Lashi", templates = 2},
    ["lat"] = {short = "la", name = "tiếng Latinh", templates = 2},
    ["lav"] = {short = "lv", name = "tiếng Latvia", templates = 2},
    ["lij"] = {name = "tiếng Liguria", templates = 2},
    ["lit"] = {short = "lt", name = "tiếng Litva", templates = 2},
    ["jbo"] = {name = "tiếng Lojban", templates = 2},
    ["iii"] = {short = "ii", name = "tiếng Lô Lô", templates = 2},
    ["lut"] = {name = "tiếng Lushootseed", templates = 2},
    ["luv"] = {name = "tiếng Luwati", templates = 2},
    ["khb"] = {name = "tiếng Lự", templates = 2},
    ["xlc"] = {name = "tiếng Lycia", templates = 2},
    ["msa"] = {short = "ms", name = "tiếng Mã Lai", templates = 2},
    ["zlm"] = {short = "ms", name = "tiếng Mã Lai", templates = 2},
    ["mas"] = {name = "tiếng Maasai", templates = 2},
    ["ymm"] = {name = "tiếng Maay", templates = 2},
    ["mkd"] = {short = "mk", name = "tiếng Macedoni", templates = 2},
    ["mlg"] = {short = "mg", name = "tiếng Malagasy", templates = 2},
    ["mlt"] = {short = "mt", name = "tiếng Malta", templates = 2},
    ["glv"] = {short = "gv", name = "tiếng Man", templates = 2},
    ["mnc"] = {name = "tiếng Mãn Châu", templates = 2},
    ["zng"] = {name = "tiếng Mảng", templates = 2},
    ["mri"] = {short = "mi", name = "tiếng Maori", templates = 2},
    ["mrw"] = {name = "tiếng Maranao", templates = 2},
    ["mar"] = {short = "mr", name = "tiếng Marathi", templates = 2},
    ["mya"] = {short = "my", name = "tiếng Miến Điện", templates = 2},
    ["mhj"] = {name = "tiếng Mogholi", templates = 2},
    ["mjg"] = {name = "tiếng Monguor", templates = 2},
    ["mnw"] = {name = "tiếng Môn", templates = 2},
    ["hmn"] = {name = "tiếng Mông", templates = 2},
    ["mon"] = {short = "mn", name = "tiếng Mông Cổ", templates = 2},
    ["mww"] = {name = "tiếng Mông Trắng", templates = 2},
    ["hnj"] = {name = "tiếng Mông Xanh", templates = 2},
    ["xgn-kha"] = {name = "tiếng Mông Cổ Khamnigan", templates = 2},
    ["mtq"] = {name = "tiếng Mường", templates = 2},
    ["nor"] = {short = "no", names = {"tiếng Na Uy", "tiếng Na Uy (Bokmål)", "tiếng Na Uy (Nynorsk)"}, templates = 2 + 2 + 2},
    ["nci"] = {name = "tiếng Nahuatl cổ điển", templates = 2},
    ["alt"] = {name = "tiếng Nam Altai", templates = 2},
    ["sma"] = {name = "tiếng Nam Sami", templates = 2},
    ["yux"] = {name = "tiếng Nam Yukaghir", templates = 2},
    ["gld"] = {name = "tiếng Nanai", templates = 2},
    ["nap"] = {name = "tiếng Naples", templates = 2},
    ["nav"] = {short = "nv", name = "tiếng Navajo", templates = 2},
    ["nep"] = {short = "ne", name = "tiếng Nepal", templates = 2},
    ["new"] = {name = "tiếng Newa", templates = 2},
    ["niu"] = {name = "tiếng Niue", templates = 2},
    ["nog"] = {name = "tiếng Nogai", templates = 2},
    ["nrf"] = {name = "tiếng Norman", templates = 2},
    ["rus"] = {short = "ru", name = "tiếng Nga", templates = 2},
    ["nuo"] = {name = "tiếng Nguồn", templates = 2},
    ["jpn"] = {short = "ja", name = "tiếng Nhật", templates = 3},
    ["nut"] = {name = "tiếng Nùng", templates = 2},
    ["juc"] = {name = "tiếng Nữ Chân", templates = 2},
    ["oci"] = {short = "oc", name = "tiếng Oc", templates = 2},
    ["xwo"] = {name = "tiếng Oirat", templates = 2},
    ["omk"] = {name = "tiếng Omok", templates = 2},
    ["orm"] = {short = "om", name = "tiếng Oromo", templates = 2},
    ["osa"] = {name = "tiếng Osage", templates = 2},
    ["oss"] = {short = "os", name = "tiếng Ossetia", templates = 2},
    ["ovd"] = {name = "tiếng Övdal", templates = 2},
	["tyh"] = {name = "tiếng Ơ Đu", templates = 2},
    ["pac"] = {name = "tiếng Pa Kô", templates = 2},
    ["pli"] = {short = "pi", name = "tiếng Pali", templates = 2},
    ["pap"] = {name = "tiếng Papiamento", templates = 2},
    ["san"] = {short = "sa", name = "tiếng Phạn", templates = 2},
    ["fin"] = {short = "fi", name = "tiếng Phần Lan", templates = 2},
    ["fra"] = {short = "fr", name = "tiếng Pháp", templates = 2},
    ["pbv"] = {name = "tiếng Pnar", templates = 2},
    ["pox"] = {name = "tiếng Polabia", templates = 2},
    ["poi"] = {name = "tiếng Popoluca cao nguyên", templates = 2},
    ["apq"] = {name = "tiếng Pucikwar", templates = 2},
    ["pan"] = {name = "tiếng Punjab", templates = 2},
    ["qya"] = {name = "tiếng Quenya", templates = 2},
    ["epo"] = {short = "eo", name = "Quốc tế ngữ", templates = 2},
    ["rap"] = {name = "tiếng Rapa Nui", templates = 2},
    ["rhg"] = {name = "tiếng Rohingya", templates = 2},
    ["rgn"] = {name = "tiếng Romagnol", templates = 2},
    ["roh"] = {short = "rm", name = "tiếng Romansh", templates = 2},
    ["ron"] = {short = "ro", name = "tiếng Rumani", templates = 2},    
    ["str"] = {name = "tiếng Saanich", templates = 2},
    ["slr"] = {name = "tiếng Salar", templates = 2},
    ["sco"] = {name = "tiếng Scots", templates = 2},
    ["ces"] = {short = "cs", name = "tiếng Séc", templates = 2},
    ["hbs"] = {short = "sh", name = "tiếng Serbia-Croatia", templates = 2},
    ["shn"] = {name = "tiếng Shan", templates = 2},
    ["sna"] = {name = "tiếng Shona", templates = 2},
    ["cjs"] = {name = "tiếng Shor", templates = 2},
    ["snd"] = {short = "sd", name = "tiếng Sindh", templates = 2},
    ["sin"] = {short = "si", name = "tiếng Sinhala", templates = 2},
    ["slk"] = {short = "sk", name = "tiếng Slovak", templates = 2},
    ["slv"] = {short = "sl", name = "tiếng Slovene", templates = 2},
    ["sog"] = {name = "tiếng Sogdia", templates = 2},
    ["ckb"] = {name = "tiếng Soran", templates = 2},
    ["trk-soy"] = {name = "tiếng Soyot", templates = 2},
    ["sux"] = {name = "tiếng Sumer", templates = 2},
    ["sun"] = {short = "su", name = "tiếng Sunda", templates = 2},
    ["swa"] = {short = "sw", name = "tiếng Swahili", templates = 2},
    ["syc"] = {name = "tiếng Syria", templates = 2},
    ["tgl"] = {short = "tl", name = "tiếng Tagalog", templates = 2},
    ["tzm"] = {name = "tiếng Tamazight Trung Atlas", templates = 2},
    ["tam"] = {short = "ta", name = "tiếng Tamil", templates = 2},
    ["tat"] = {short = "tt", name = "tiếng Tatar", templates = 2},
    ["crh"] = {name = "tiếng Tatar Crưm", templates = 2},
    ["tyj"] = {name = "tiếng Tay Dọ", templates = 2},
    ["tyz"] = {name = "tiếng Tày", templates = 2},
    ["spa"] = {short = "es", name = "tiếng Tây Ban Nha", templates = 2},
    ["ybe"] = {name = "tiếng Tây Yugur", templates = 2},
    ["thm"] = {name = "tiếng Thavưng", templates = 2},
    ["tha"] = {short = "th", name = "tiếng Thái", templates = 2},
    ["blt"] = {name = "tiếng Thái Đen", templates = 2},
    ["tou"] = {name = "tiếng Thổ", templates = 2},
    ["tur"] = {short = "tr", name = "tiếng Thổ Nhĩ Kỳ", templates = 2},
    ["swe"] = {short = "sv", name = "tiếng Thụy Điển", templates = 2},
    ["hsb"] = {name = "tiếng Thượng Sorb", templates = 2},
    ["tir"] = {name = "tiếng Tigrinya", templates = 2},
	["sjo"] = {name = "tiếng Tích Bá", templates = 2},
    ["tli"] = {name = "tiếng Tlingit", templates = 2},
    ["kim"] = {name = "tiếng Tofa", templates = 2},
    ["tpi"] = {name = "tiếng Tok Pisin", templates = 2},
    ["zha"] = {name = "tiếng Tráng", templates = 2},
    ["kor"] = {short = "ko", name = "tiếng Triều Tiên", templates = 2},
    ["gan"] = {name = "tiếng Cám", templates = 2, isChinese = true},
    ["dng"] = {name = "tiếng Đông Can", templates = 2, isChinese = true},
    ["czh"] = {name = "tiếng Huy", templates = 2, isChinese = true},
    ["hak"] = {name = "tiếng Khách Gia", templates = 2, isChinese = true},
    ["mnp"] = {name = "tiếng Mân Bắc", templates = 2, isChinese = true},
    ["cdo"] = {name = "tiếng Mân Đông", templates = 2, isChinese = true},
    ["nan"] = {short = "zh-min-nan", name = "tiếng Mân Nam", templates = 2, isChinese = true},
    ["czo"] = {name = "tiếng Mân Trung", templates = 2, isChinese = true},
    ["wuu"] = {name = "tiếng Ngô", templates = 2, isChinese = true},
    ["cpx"] = {name = "tiếng Phổ Hiền", templates = 2, isChinese = true},
    ["cmn"] = {short = "zh-cmn", name = "tiếng Quan Thoại", templates = 2, isChinese = true},
    ["yue"] = {short = "zh-yue", name = "tiếng Quảng Đông", templates = 2, isChinese = true},
    ["txg"] = {name = "tiếng Tangut", templates = 2, isChinese = true},
    ["cjy"] = {name = "tiếng Tấn", templates = 2, isChinese = true},
    ["zho"] = {short = "zh", name = "tiếng Trung Quốc", templates = 2, isChinese = true},
    ["hsn"] = {name = "tiếng Tương", templates = 2, isChinese = true},
    ["tpn"] = {name = "tiếng Tupi", templates = 2},
    ["otk"] = {name = "tiếng Turk cổ", templates = 2},
    ["zkh"] = {name = "tiếng Turk Khorezm", templates = 2},
    ["tuk"] = {short = "tk", name = "tiếng Turkmen", templates = 2},
    ["tyv"] = {name = "tiếng Tuva", templates = 2},
    ["ukr"] = {short = "uk", name = "tiếng Ukraina", templates = 2},
    ["uum"] = {name = "tiếng Urum", templates = 2},
    ["uzb"] = {short = "uz", name = "tiếng Uzbek", templates = 2},
    ["ium"] = {name = "tiếng Ưu Miền", templates = 2},
    ["vai"] = {name = "tiếng Vai", templates = 2},
    ["vie"] = {short = "vi", names = {"tiếng Việt", "tiếng Việt trung cổ", "chữ Nôm"}, templates = 3 + 2 + 3},
    ["vol"] = {short = "vo", name = "tiếng Volapük", templates = 2},
    ["vot"] = {name = "tiếng Vot", templates = 2},
    ["wbl"] = {name = "tiếng Wakhi", templates = 2},
    ["cym"] = {short = "cy", name = "tiếng Wales", templates = 2},
    ["wnw"] = {name = "tiếng Wintu", templates = 2},
    ["ita"] = {short = "it", name = "tiếng Ý", templates = 2},
    ["muu"] = {name = "tiếng Yaaku", templates = 2},
    ["sah"] = {name = "tiếng Yakut", templates = 2},
    ["yid"] = {short = "yi", name = "tiếng Yiddish", templates = 2},
    ["yii"] = {name = "tiếng Yidiny", templates = 2},
    ["ase"] = {name = "ngôn ngữ ký hiệu Mỹ", templates = 2},
    ["dje"] = {name = "tiếng Zarma", templates = 2},
    ["zza"] = {name = "tiếng Zazaki", templates = 2},
    ["mul"] = {name = "đa ngữ", templates = 2},
    ["und"] = {name = "không xác định ngôn ngữ", templates = 2},
    ["nmn"] = {name = "tiếng ǃXóõ", templates = 2},
}

p["số ngôn ngữ"] = function (frame)
    if p.numberOfLanguages then return p.numberOfLanguages end
    local count = 0
    for i, entry in pairs(p.categoriesByCode) do count = count + 1 end
    p.numberOfLanguages = count
    return p.numberOfLanguages
end

---Xây dựng ánh xạ sắp xếp từ các mã ngôn ngữ ISO 639-2 đến các tên ngôn ngữ.
function p._buildNamedCodes()
    if p.namedCodes then return end
    
    p.namedCodes = {}
    for code, category in pairs(p.categoriesByCode) do
        local name = category.name or category.names[1]
        name = lang:ucfirst(mw.ustring.gsub(
            mw.ustring.gsub(name, "^tiếng ", "", 1), "^chữ ", "", 1))
        table.insert(p.namedCodes, {code, name})
    end
    table.sort(p.namedCodes, function (namedCode1, namedCode2)
        return viet.comp(namedCode1[2], namedCode2[2])
    end)
end

---Tính các mã ngôn ngữ ISO 639-2 của các ngôn ngữ Trung Quốc.
function p._buildChineseCodes()
    if p.chineseCodes then return end
    
    p.chineseCodes = {}
    for code, category in pairs(p.categoriesByCode) do
        if category.isChinese then
            local name = category.name or category.names[1]
            name = lang:ucfirst(mw.ustring.gsub(
                mw.ustring.gsub(name, "^tiếng ", "", 1), "^chữ ", "", 1))
            table.insert(p.chineseCodes, {code, name})
        end
    end
    table.sort(p.chineseCodes, function (namedCode1, namedCode2)
        return viet.comp(namedCode1[2], namedCode2[2])
    end)
end

function p.entriesForLanguage(code)
    local category = p.categoriesByCode[code]
    if category.name then
        local entries = stats.pagesInCategory(categoryPrefix .. category.name, "pages")
        return entries - category.templates
    end
    
    assert(category.names,
        "Mục ngôn ngữ trong bảng p.categoriesByCode không định rõ tên thể loại.")
    
    local total = 0
    for i, name in ipairs(category.names) do
        local entries = stats.pagesInCategory(categoryPrefix .. name, "pages")
        total = total + entries
    end
    return total - category.templates
end

---Tính tổng số mục từ tại wiki này.
-- Theo hàm này, một từ có trong hơn một ngôn ngữ có thể có hơn một mục từ ở
-- cùng một trang.
function p.entryCount(onlyCode)
    if onlyCode == "ZHO" then return p.numChineseEntries() end
    if onlyCode and #onlyCode > 0 then
        return p.entriesForLanguage(onlyCode)
    end
    
    local total = 0
    for code, category in pairs(p.categoriesByCode) do
        local entries = p.entriesForLanguage(code)
        total = total + entries
    end
    return total
end
p["số mục từ"] = function (frame)
    return p.entryCount(frame and frame.args[1])
end

---Tính tổng số mục từ trong các ngôn ngữ Trung Quốc.
function p.numChineseEntries()
    p._buildChineseCodes()
    local total = 0
    for i, code in ipairs(p.chineseCodes) do
        total = total + p.entriesForLanguage(code[1])
    end
    return total
end

function p.languageLinks(categoryNames)
    local sortKey
    local links = {}
    for i, categoryName in ipairs(categoryNames) do
        local languageName = lang:ucfirst(
            mw.ustring.gsub(
                mw.ustring.gsub(categoryName, "^tiếng ", "", 1),
            "^chữ ", "", 1))
        if not sortKey then sortKey = languageName end
        table.insert(links, string.format("[[:Thể loại:%s%s|%s]]",
            categoryPrefix, categoryName, languageName))
    end
    return table.concat(links, ", "), sortKey
end

p["bảng số mục từ"] = function (frame)
    local args = frame.args
    local expandChinese = args.subset == "zho"
    local subsetCodes = nil
    if expandChinese then
        p._buildChineseCodes()
        subsetCodes = p.chineseCodes
    else
        p._buildNamedCodes()
        subsetCodes = p.namedCodes
    end
    
    local rows = {}
    for i, namedCode in ipairs(subsetCodes) do
        category = p.categoriesByCode[namedCode[1]]
        if expandChinese or (namedCode[1] == "zho" or not category.isChinese) then
            local categoryLinks =
                p.languageLinks(category.names or {category.name})
            
            local entries
            if namedCode[1] == "zho" and not expandChinese then
                entries = p.numChineseEntries()
            else
                entries = p.entriesForLanguage(namedCode[1])
            end
            
            local entriesLink = args["chi tiết " .. namedCode[1]]
            if entriesLink then
                entries = string.format("[[%s|%s]]", entriesLink, entries)
            end
            table.insert(rows, string.format([=[
|-
| data-sort-value="%s" | %s || %s || style="text-align: right;" | %s
]=], namedCode[2], categoryLinks, namedCode[1], entries))
        end
    end
    
    local total
    if expandChinese then
        total = p.numChineseEntries()
    else
        total = p.entryCount()
    end
    
    return mw.ustring.format([=[
{| class="wikitable sortable"
|-
! Ngôn ngữ !! Mã ISO !! data-sort-type="number" | Số mục từ
%s
|- class="sortbottom" style="font-weight: bold;"
! scope="row" colspan="2" | Tổng số
| style="text-align: right;" |
%s
|}
]=], table.concat(rows), total)
end

return p