Module:Wt/sas/lang
Appearance
Documentation for this module may be created at Module:Wt/sas/lang/doc
-- Tebait dari Wt/bew. Nyeken tekerisaq [2025-07-22]
local p = {}
local langNames = {
["mul"] = "Kelapuq base",
-- Kode basa hurup dua (ISO 639-1)
["aa"] = "Apar",
["ab"] = "Abasian",
["ae"] = "Apéstan",
["af"] = "Aprikan",
["ak"] = "Akan",
["am"] = "Amharik",
["an"] = "Aragon",
["ar"] = "Arab",
["as"] = "Asamis",
["av"] = "Awarik",
["ae"] = "Awéstan",
["ay"] = "Aymara",
["az"] = "Asérbaijan",
["ba"] = "Baskir",
["bm"] = "Bambara",
["be"] = "Bélarusia",
["bg"] = "Bulgari",
["bh"] = "Bihari",
["bi"] = "Bislama",
["bm"] = "Bambara",
["bn"] = "Benggala",
["bo"] = "Tibet",
["br"] = "Bréton",
-- ["bs"] = "Bosni", gabung ke [sh]
["ca"] = "Katalan",
["ce"] = "Cécén",
["ch"] = "Camoro",
["co"] = "Korsikan",
-- ["cr"] = "Kri", kudu dimasupin per logat
["cs"] = "Cék",
["cv"] = "Cuwas",
["cy"] = "Wéles",
["da"] = "Dénmak",
["de"] = "Jérman",
["dv"] = "Diwéhi",
["dz"] = "Jongka",
["ee"] = "Éwé",
["el"] = "Yunani",
["en"] = "Inggris",
["eo"] = "éspéranto",
["es"] = "Spanyol",
["et"] = "éstonia",
["eu"] = "Basken",
["fa"] = "Parsi",
["ff"] = "Pula",
["fi"] = "Pinlan",
["fj"] = "Piji",
["fo"] = "Péronés",
["fr"] = "Prancis",
["fy"] = "Prisan Bat",
["ga"] = "Irlan",
["gd"] = "Gaélik Skotlan",
["gl"] = "Galisi",
["gn"] = "Guarani",
["gu"] = "Gujarati",
["gv"] = "Mang",
["ha"] = "Hausa",
["he"] = "Ibrani",
["hi"] = "Hindi",
["ho"] = "Hiri Motu",
-- ["hr"] = "Kroasi", gabung ama [sh]
["ht"] = "Anakn Haiti",
["hu"] = "Hungaria",
["hy"] = "Arménia",
["hz"] = "Héréro",
["ia"] = "Interlingua",
["id"] = "Indonésa",
["ie"] = "Interlingué",
["ig"] = "Igbo",
["ii"] = "Nuosu",
["ik"] = "Inupiak",
["io"] = "Ido",
["is"] = "Islan",
["it"] = "Itali",
["iu"] = "Inuktitut",
["ja"] = "Jepun",
["jv"] = "Jawe",
["ka"] = "Géorgia",
["kg"] = "Kongo",
["ki"] = "Kikuyu",
["kj"] = "Kuanyama",
["kk"] = "Kasaktan",
["kl"] = "Grinlan",
["km"] = "Kemboja",
["kn"] = "Kanada",
["ko"] = "Koréa",
["kr"] = "Kanuri",
["ks"] = "Kasmir",
["ku"] = "Kurdi",
["kw"] = "Kornis",
["ky"] = "Kirgis",
["la"] = "Latin",
["lb"] = "Leksembereh",
["lg"] = "Luganda",
["li"] = "Limbereh",
["ln"] = "Lingala",
["lo"] = "Laos",
["lt"] = "Litowen",
["lu"] = "Luba-Katanga",
["lv"] = "Létvia",
["mg"] = "Madagaskar",
["mh"] = "Malagasi",
["mi"] = "Maori",
["mk"] = "Makédoni",
["ml"] = "Malayalam",
["mn"] = "Mongol",
["mr"] = "Marati",
["ms"] = "Melayu",
["mt"] = "Malta",
["my"] = "Birma",
["na"] = "Nauru",
["nb"] = "Bokmal",
["nd"] = "Ndébélé Daye",
["ne"] = "Népal",
["ng"] = "Ndonga",
["nl"] = "Belande",
["nn"] = "Norwégia Baru",
["no"] = "Norwégia",
["nr"] = "Ndébélé Lauq",
["nv"] = "Nabaho",
["ny"] = "Nyanja",
["oc"] = "Oksitan",
["oj"] = "Ojibwé",
["om"] = "Oromo",
["or"] = "Odia",
["os"] = "Oséti",
["pa"] = "Panjabi",
["pi"] = "Pali",
["pl"] = "Polandia",
["ps"] = "Pastun",
["pt"] = "Portugis",
["qu"] = "Kécua",
["rm"] = "Roma",
["ro"] = "Rumania",
["ru"] = "Rusia",
["rw"] = "Kinyarwanda",
["sa"] = "Sangsekerta",
["sc"] = "Sardéni",
["sd"] = "Sindi",
["se"] = "Sami Daye",
["sg"] = "Sango",
["sh"] = "Sérwi-Kroasi",
["si"] = "Singala",
["sk"] = "Slowak",
["sl"] = "Slowén",
["sm"] = "Samoa",
["sn"] = "Sona",
["so"] = "Somali",
["sq"] = "Albani",
["ss"] = "Swasi",
["st"] = "Soto",
["su"] = "Sunda",
["sv"] = "Swédia",
["sw"] = "Swahili",
["ta"] = "Tamil",
["te"] = "Telugu",
["tg"] = "Tajik",
["th"] = "Siam",
["ti"] = "Tigrinya",
["tk"] = "Turkemén",
["tl"] = "Tegalog",
["tn"] = "Cuana",
["to"] = "Tonga",
["tr"] = "Turki",
["ts"] = "Conga",
["tt"] = "Tatar",
["ty"] = "Taiti",
["ug"] = "Uygur",
["uk"] = "Ukrain",
["ur"] = "Urdu",
["uz"] = "Usbék",
["ve"] = "Wénda",
["vi"] = "Piétnam",
["vo"] = "Wolapek",
["wa"] = "Walon",
["wo"] = "Wolop",
["xh"] = "Ngkosa",
["yi"] = "Yédi",
["yo"] = "Yoruba",
["za"] = "Cueng",
["zh"] = "Cine",
["zu"] = "Julu",
-- Kode basa hurup tiga (ISO 639-3)
["abl"] = "Lampung Nyo",
["abq"] = "Abasa",
["abs"] = "Ambon",
["abz"] = "Abui",
["ace"] = "Acéh",
["ady"] = "Adigé",
["aho"] = "Ahom",
["ain"] = "Ainu",
["aiw"] = "Aari",
["akb"] = "Angkola",
["akl"] = "Aklanon",
["alp"] = "Aluné",
["ami"] = "Amis",
["aoz"] = "Méto",
["arz"] = "Arab Mesir",
["ast"] = "Asturi",
["bac"] = "Baduy",
["ban"] = "Bali",
["bbc"] = "Toba",
["bcl"] = "Bikol Tenga",
["bdq"] = "Bahnar",
["bdr"] = "Bajo Pesisir Kulon",
["bew"] = "Betawi",
["bgz"] = "Banggai",
["bhp"] = "Mbojo",
["bhw"] = "Biak",
["bjn"] = "Banjar",
["bkr"] = "Bekumpé",
["blj"] = "Bulungan",
["blz"] = "Belantak",
["bnd"] = "Bandan",
["bnn"] = "Bunun",
["bpz"] = "Bilba",
["bsb"] = "Bisaya Bruné",
["bts"] = "Simelungun",
["btx"] = "Karo",
["bug"] = "Bugis",
["bve"] = "Bero",
["ceb"] = "Sébu",
["cia"] = "Cia-Cia",
["cje"] = "Ceru",
["cjm"] = "Cam Wétan",
["crh"] = "Tatar Krim",
["dbn"] = "Duriankari",
["dru"] = "Rukay",
["dun"] = "Dayak Déah",
["duo"] = "Agta Dupaningan",
["ert"] = "Eritay",
["fon"] = "Pon",
["fos"] = "Siraya",
["frm"] = "Prancis Tengaq",
["gag"] = "Gagaos",
["gal"] = "Galoli",
["gay"] = "Gayo",
["gbi"] = "Galéla",
["gor"] = "Gorontalo",
["hak"] = "Khé'",
["haw"] = "Hawai",
["iba"] = "Iban",
["ill"] = "Iranun",
["ilo"] = "Iloko",
["itd"] = "Tidung Lauq",
["izh"] = "Ingri",
["jax"] = "Jambi",
["jmd"] = "Yamdéna",
["kem"] = "Kemak",
["kge"] = "Kumering",
["kkv"] = "Kangéan",
["kmk"] = "Kalinga Limos",
["kmr"] = "Kurdi Daye",
["knb"] = "Kalinga Lubuagan",
["knx"] = "Kendayan",
["kxd"] = "Melayu Bruné",
["kzp"] = "Kaidipang-Bolangitang",
["ljl"] = "Lio",
["ljp"] = "Lampung Api",
["lkj"] = "Remun",
["lmo"] = "Lombardi",
["lti"] = "Léti",
["mad"] = "Medura",
["mak"] = "Mengkasar",
["max"] = "Melayu Maluku Daye",
["mba"] = "Higonon",
["mbb"] = "Manobo Bukidnon Kulon",
["mbf"] = "Melayu Baba",
["mbt"] = "Manobo Matigsalug",
["mdh"] = "Magindano",
["mdr"] = "Mandar",
["min"] = "Minangkabo",
["mkn"] = "Melayu Kupang",
["mqg"] = "Kuté Kota Bangun",
["mqy"] = "Manggarai",
["mui"] = "Musi",
["mvp"] = "Duri",
["mvv"] = "Murut Tagal",
["nia"] = "Nias",
["nij"] = "Ngaju",
["pag"] = "Pengasinan",
["pam"] = "Papanggo",
["pap"] = "Papiaméntu",
["pey"] = "Peco",
["plh"] = "Paulohi",
["plm"] = "Pelémbang", --aselinya udah apkir, cuming masing kita paké
["pmf"] = "Pamona",
["pms"] = "Pimontés",
["pmy"] = "Melayu Papua",
["ppu"] = "Papora",
["pse"] = "Melayu Tenga",
["ptu"] = "Bambam",
["pwn"] = "Paiwan",
["rej"] = "Rejang",
["rob"] = "Taé'",
["sas"] = "Sasaq",
["scn"] = "Sisili",
["sda"] = "Toraja",
["slr"] = "Salar",
["smr"] = "Simelur",
["smw"] = "Sumbawa",
["sxn"] = "Sangir",
["szy"] = "Sakijaya",
["tao"] = "Yami",
["tay"] = "Atayal",
["tby"] = "Tabaru",
["tes"] = "Tengger",
["tet"] = "Tétun",
["tnt"] = "Tontemboan",
["tok"] = "Toki Pona",
["tpi"] = "Tok Pisin",
["trv"] = "Taroko",
["tsg"] = "Suluk",
["tvl"] = "Tuwalu",
["tvx"] = "Tayboan",
["txn"] = "Tarangan Kulon",
["vkt"] = "Kuté Tenggarong",
["vot"] = "Wot",
["wlo"] = "Wolio",
["wod"] = "Wolani",
["xmm"] = "Menado",
["xxt"] = "Tambora",
["yka"] = "Yakan",
["yue"] = "Kanton",
-- Kode basa bikinan en.wt
-- ["ms-cla"] = "Melayu Tinggi",
-- ["nan-hbl"] = "Hokkién",
-- Kode basa lama
["cu"] = "Slawik Geréja Laéq",
["kaw"] = "Jawa Laéq",
["osn"] = "Sunda Laéq",
["ota"] = "Turki Usmani",
-- Kode base pongkol (protolanguage)
["ine-pro"] = "Keluarga Hindi-éropa",
["map-pro"] = "Keluarga Ostronésia",
["poz-pro"] = "Keluarga Melayu-Polinésia",
["poz-mly-pro"] = "Keluarga Kemelayuan",
-- Rumpun base
["ine"] = "Hindi-éropa",
["map"] = "Ostronésia",
["poz"] = "Melayu-Polinésia",
["poz-mly"] = "Kemelayuan"
}
local protoLangs = {
["ine-pro"] = true,
["map-pro"] = true,
["poz-pro"] = true,
["poz-mly-pro"] = true
}
local langFamilies = {
["ine"] = true,
["map"] = true,
["ms-eit"] = true,
["poz"] = true,
["poz-mly"] = true
}
-- Interwiki table
local interwikis = {
aa = true, ab = true, af = true, ak = true, am = true, an = true, ang = true,
ar = true, as = true, ast = true, av = true, ay = true, az = true, bcl = true,
be = true, bew = true, bg = true, bh = true, bi = true, bjn = true, blk = true,
bm = true, bn = true, bo = true, br = true, bs = true, btm = true, ca = true,
ch = true, chr = true, ckb = true, co = true, cr = true, cs = true, csb = true,
cy = true, da = true, de = true, diq = true, dv = true, dz = true, el = true,
en = true, eo = true, es = true, et = true, eu = true, fa = true, fi = true,
fj = true, fo = true, fr = true, fy = true, ga = true, gd = true, gl = true,
gn = true, gom = true, gor = true, gu = true, guw = true, gv = true, ha = true,
he = true, hi = true, hif = true, hr = true, hsb = true, hu = true, hy = true,
ia = true, ie = true, ig = true, ik = true, ["io"] = true, ["is"] = true, it = true,
iu = true, ja = true, jbo = true, jv = true, ka = true, kaa = true, kbd = true,
kcg = true, kk = true, kl = true, km = true, kn = true, ko = true, ks = true,
ku = true, kw = true, ky = true, la = true, lb = true, li = true, lmo = true,
ln = true, lo = true, lt = true, lv = true, mad = true, mg = true, mh = true,
mi = true, ["min"] = true, mk = true, ml = true, mn = true, mni = true, mnw = true,
mr = true, ms = true, mt = true, my = true, na = true, nah = true, nds = true,
ne = true, nia = true, nl = true, nn = true, no = true, oc = true, om = true,
["or"] = true, pa = true, pi = true, pl = true, pnb = true, ps = true, pt = true,
qu = true, rm = true, rn = true, ro = true, ru = true, rw = true, sa = true,
sat = true, sc = true, scn = true, sd = true, sg = true, sh = true, shn = true,
shy = true, si = true, sk = true, skr = true, sl = true, sm = true, sn = true,
so = true, sq = true, sr = true, ss = true, st = true, su = true, sv = true,
sw = true, ta = true, tcy = true, te = true, tg = true, th = true, ti = true,
tk = true, tl = true, tn = true, to = true, tpi = true, tr = true, ts = true,
tt = true, tw = true, ug = true, uk = true, ur = true, uz = true, vec = true,
vi = true, vo = true, wa = true, wo = true, xh = true, yi = true, yo = true,
za = true, zh = true, zu = true, ["id"] = true,
-- Mapped codes
mly = "ms", msa = "ms", msi = "ms", zlm = "ms", zsm = "ms"
}
-- Return interwiki link
function p.getInterwikiLink(lang, title)
local targetLang = interwikis[lang]
if targetLang == nil then
return lang
elseif targetLang == true then
return string.format("[[:%s:%s|%s]]", lang, title, lang)
else
return string.format("[[:%s:%s|%s]]", targetLang, title, lang)
end
end
-- Get full language name (returns nil if invalid)
function p.getLangName(frame)
local args = frame.args
local code = mw.text.trim(args[1] or "")
local nocap = args.nocap or ""
local name = langNames[code]
if not name then return nil end
local prefix = ""
if langFamilies[code] then
prefix = "Rumpun base "
elseif code ~= "mul" then
prefix = "Base "
end
local fullName = prefix .. name
if nocap == "1" and mw.ustring.len(fullName) > 0 then
local first = mw.ustring.sub(fullName, 1, 1)
local rest = mw.ustring.sub(fullName, 2)
fullName = mw.ustring.lower(first) .. rest
end
return fullName
end
function p.getLangNameByCode(code, nocap)
code = mw.text.trim(code or "")
nocap = nocap or ""
local name = langNames[code]
if not name then return nil end
local prefix = ""
if langFamilies[code] then
prefix = "Rumpun bahasa "
elseif code ~= "mul" then
prefix = "Bahasa "
end
local fullName = prefix .. name
if nocap == "1" and mw.ustring.len(fullName) > 0 then
local first = mw.ustring.sub(fullName, 1, 1)
local rest = mw.ustring.sub(fullName, 2)
fullName = mw.ustring.lower(first) .. rest
end
return fullName
end
-- Get language code (returns nil if invalid)
function p.getLangCode(frame)
local code = mw.text.trim((frame.args and frame.args[1]) or "")
if langNames[code] then
return code
else
return nil
end
end
function p.getLangCodeByCode(code)
code = mw.text.trim(code or "")
if langNames[code] then
return code
end
return nil
end
-- Expose tables
p.langFamilies = langFamilies
p.protoLangs = protoLangs
p.langNames = langNames
p.interwikis = interwikis
return p