ဝိက်ရှေန်နရဳ
mnwwiktionary
https://mnw.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%80%80%E1%80%BA%E1%80%9B%E1%80%BE%E1%80%B1%E1%80%94%E1%80%BA%E1%80%94%E1%80%9B%E1%80%B3:%E1%80%99%E1%80%AF%E1%80%80%E1%80%BA%E1%80%9C%E1%80%AD%E1%80%80%E1%80%BA%E1%80%90%E1%80%99%E1%80%BA
MediaWiki 1.47.0-wmf.10
case-sensitive
မဳဒဳယာ
တၟေင်
ဓရီုကျာ
ညးလွပ်
ညးလွပ် ဓရီုကျာ
ဝိက်ရှေန်နရဳ
ဝိက်ရှေန်နရဳ ဓရီုကျာ
ဝှာင်
ဝှာင် ဓရီုကျာ
မဳဒဳယာဝဳကဳ
မဳဒဳယာဝဳကဳ ဓရီုကျာ
ထာမ်ပလိက်
ထာမ်ပလိက် ဓရီုကျာ
ရီု
ရီု ဓရီုကျာ
ကဏ္ဍ
ကဏ္ဍ ဓရီုကျာ
အဆက်လက္ကရဴ
အဆက်လက္ကရဴ ဓရီုကျာ
ကာရန်
ကာရန် ဓရီုကျာ
အဘိဓာန်
အဘိဓာန် ဓရီုကျာ
ဗီုပြၚ်သိုၚ်တၟိ
ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ
TimedText
TimedText talk
မဝ်ဂျူ
မဝ်ဂျူ ဓရီုကျာ
Event
Event talk
မဝ်ဂျူ:languages/data/3/c
828
655
398114
393549
2026-07-10T02:41:42Z
咽頭べさ
33
398114
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["caa"] = {
"ချာတ်အ်တိအ်",
35177,
"myn",
"Latn",
}
m["cab"] = {
"Garifuna",
35490,
"awd-taa",
"Latn",
ancestors = "crb",
}
m["cac"] = {
"ချုတ်ဂျ်",
35233,
"myn",
"Latn",
}
m["cad"] = {
"Caddo",
56756,
"cdd",
"Latn",
}
m["cae"] = {
"Laalaa",
35564,
"alv-cng",
"Latn",
}
m["caf"] = {
"Southern Carrier",
12953426,
"ath-nor",
"Latn",
}
m["cag"] = {
"Nivaclé",
3182557,
"sai-mtc",
"Latn",
}
m["cah"] = {
"Cahuarano",
2933175,
"sai-zap",
"Latn",
}
m["caj"] = {
"Chané",
56721,
"awd",
"Latn",
}
m["cak"] = {
"Kaqchikel",
35115,
"myn",
"Latn",
}
m["cal"] = {
"Carolinian",
28427,
"poz-mic",
"Latn",
}
m["cam"] = {
"Cèmuhî",
3009690,
"poz-cln",
"Latn",
}
m["can"] = {
"Chambri",
5069707,
"paa-lsp",
"Latn",
}
m["cao"] = {
"Chácobo",
2591202,
"sai-pan",
"Latn",
}
m["cap"] = {
"Chipaya",
35235,
"sai-ucp",
"Latn",
}
m["caq"] = {
"Car Nicobarese",
35156,
"aav-nic",
"Latn",
}
m["car"] = {
"ဂါလဳဗဳကာရေတ်",
56611,
"sai-gui",
"Latn",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. "`" .. "'%-%s"},
entry_name = {
remove_diacritics = c.acute,
from = {"â", "ê", "î", "ô", "û", "ŷ"},
to = {"à", "è", "ì", "ò", "ù", "ỳ"}
},
}
m["cas"] = {
"Tsimané",
35950,
"qfa-iso",
"Latn",
}
m["cav"] = {
"Cavineña",
524102,
"sai-tac",
"Latn",
}
m["caw"] = {
"Kallawaya",
266417,
"qfa-mix",
"Latn",
}
m["cax"] = {
"Chiquitano",
1844993,
"qfa-iso",
"Latn",
}
m["cay"] = {
"Cayuga",
32967,
"iro-nor",
"Latn",
}
m["caz"] = {
"Canichana",
2936374,
"qfa-iso",
"Latn",
}
m["cbb"] = {
"Cabiyarí",
3450660,
"awd-nwk",
"Latn",
}
m["cbc"] = {
"Carapana",
924405,
"sai-tuc",
"Latn",
}
m["cbd"] = {
"ကာရဳဂျိုနာ",
3446655,
"sai-tar",
"Latn",
}
m["cbg"] = {
"Chimila",
2963680,
"cba",
"Latn",
}
m["cbi"] = {
"ချာချဳ",
2591329,
"sai-bar",
"Latn",
}
m["cbj"] = {
"Ede Cabe",
33112829,
"alv-ede",
"Latn",
}
m["cbk"] = {
"ချာဗာကာနဝ်",
33281,
"crp",
"Latn",
ancestors = "es",
entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer}},
sort_key = {
Latn = {
from = {"ch", "ll", "ñ", "r"},
to = {"c" .. p[1], "l" .. p[1], "n" .. p[1], "r" .. p[1]}
},
},
standardChars = {
Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnÑñOoPpQqRrSsTtUuVvWwXxYyZz",
c.punc
},
}
m["cbl"] = {
"Bualkhaw Chin",
9229830,
"tbq-kuk",
"Latn",
}
m["cbn"] = {
"ညးဂူ",
116849,
"mkh-mnc",
"Thai",
ancestors = "omx",
sort_key = "Thai-sortkey",
}
m["cbo"] = {
"Izora",
3915454,
"nic-jer",
"Latn",
}
m["cbq"] = {
"Tsucuba",
62603062,
"nic-knj",
"Latn",
}
m["cbr"] = {
"Cashibo-Cacataibo",
5359560,
"sai-pan",
"Latn",
}
m["cbs"] = {
"Cashinahua",
2591230,
"sai-pan",
"Latn",
}
m["cbt"] = {
"Chayahuita",
1526525,
"sai-cah",
"Latn",
}
m["cbu"] = {
"Candoshi-Shapra",
642843,
"qfa-iso",
"Latn",
}
m["cbv"] = {
"Cacua",
3192052,
"sai-nad",
"Latn",
ancestors = "mbr",
}
m["cbw"] = {
"Kinabalian",
6410324,
"phi",
"Latn",
}
m["cby"] = {
"Carabayo",
3441762,
"sai-tyu",
"Latn",
}
m["cca"] = {
"Cauca",
5054242,
"sai-chc",
"Latn",
}
m["ccc"] = {
"ချာမိခူရဝ်",
2155119,
"awd",
"Latn",
}
m["ccd"] = {
"Cafundó",
3331506,
"roa-ibe",
"Latn",
ancestors = "pt",
}
m["cce"] = {
"Chopi",
3437616,
"bnt-bso",
"Latn",
}
m["ccg"] = {
"Chamba Daka",
33120805,
"nic-dak",
"Latn",
}
m["cch"] = {
"Atsam",
34794,
"nic-kne",
"Latn",
}
m["ccj"] = {
"Kasanga",
35542,
"alv-nyn",
"Latn",
}
m["ccl"] = {
"Cutchi-Swahili",
5196729,
"crp",
"Latn",
ancestors = "sw",
}
m["ccm"] = {
"မလေဝ် မလပ်ကာန် ခရဳအဝ်လ်",
12636092,
"crp",
"Latn",
ancestors = "ms",
}
m["cco"] = {
"Comaltepec Chinantec",
2963735,
"omq-chi",
"Latn",
}
m["ccp"] = {
"ချေန်ကမာ",
32952,
"inc-bas",
"Cakm, Beng, Latn",
ancestors = "inc-obn",
translit = {
Cakm = "Cakm-translit",
--Beng = "Beng-translit",
},
}
m["ccr"] = {
"Cacaopera",
3438338,
"nai-min",
"Latn",
}
m["cda"] = {
"Choni",
2964447,
"sit-tib",
}
m["cde"] = {
"Chenchu",
32981,
"dra-tel",
"Telu",
}
m["cdf"] = {
"Chiru",
5102016,
"tbq-kuk",
"Latn, Beng",
}
m["cdh"] = {
"ဆာန်ဗဳယျာလဳ",
12953424,
"him",
"Deva, Takr",
translit = {Deva = "hi-translit"},
}
m["cdi"] = {
"Chodri",
5103788,
"inc-bhi",
"Gujr",
}
m["cdj"] = {
"ချူရာဟဳ",
12629039,
"him",
"Deva, Takr",
translit = {Deva = "hi-translit"},
}
m["cdm"] = {
"ချက်ခ်ဖံၚ်",
5091700,
"sit-gma",
"Deva",
}
m["cdn"] = {
"Chaudangsi",
5088056,
"sit-alm",
}
m["cdo"] = {
"မေန်လ္ပာ်ဗၟံက်",
36455,
"zhx-com",
"Hants",
generate_forms = "zh-generateforms",
translit = "zh-translit",
sort_key = "Hani-sortkey",
}
m["cdr"] = {
"Cinda-Regi-Tiyal",
35596,
"nic-kmk",
"Latn",
}
m["cds"] = {
"Chadian Sign Language",
10322099,
"sgn",
"Latn", -- when documented
}
m["cdy"] = {
"Chadong",
926742,
"qfa-kms",
}
m["cdz"] = {
"Koda",
6425038,
"mun",
"Beng",
}
m["cea"] = {
"Lower Chehalis",
6693377,
"sal",
"Latn",
}
m["ceb"] = {
"သဲၜေါအ်အာနဝ်",
33239,
"phi",
"Latn, Tglg",
translit = {
Tglg = "ceb-translit"
},
override_translit = true,
entry_name = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.circ
}
},
standardChars = {
Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy",
c.punc
},
sort_key = {Latn = "tl-sortkey"},
}
m["ceg"] = {
"Chamacoco",
3436637,
"sai-zam",
"Latn",
}
m["cen"] = {
"Cen",
12628777,
"nic-plc",
"Latn",
ancestors = "izr",
}
m["cet"] = {
"Centúúm",
33608,
"qfa-iso",
"Latn",
}
m["cfa"] = {
"Dijim-Bwilim",
3438350,
"alv-wjk",
"Latn",
}
m["cfd"] = {
"Cara",
35048,
"nic-beo",
"Latn",
}
m["cfg"] = {
"Como Karim",
35304,
"nic-jkn",
"Latn",
}
m["cfm"] = {
"Falam Chin",
56815,
"tbq-kuk",
"Beng, Latn",
}
m["cga"] = {
"Changriwa",
5072105,
"paa-yua",
"Latn",
}
m["cgc"] = {
"Kagayanen",
6346422,
"mno",
"Latn",
}
m["cgg"] = {
"Rukiga",
3270727,
"bnt-nyg",
"Latn",
}
m["cgk"] = {
"Chocangaca",
56604,
"sit-tib",
"Tibt",
ancestors = "xct",
translit = "Tibt-translit",
override_translit = true,
display_text = s["Tibt-displaytext"],
entry_name = s["Tibt-entryname"],
sort_key = "Tibt-sortkey",
}
m["chb"] = {
"ချေတ်ချာ",
2356431,
"cba",
}
m["chc"] = {
"Catawba",
5051602,
"nai-cat",
"Latn",
}
m["chd"] = {
"Highland Oaxaca Chontal",
2964457,
"nai-tqn",
"Latn",
}
m["chf"] = {
"Tabasco Chontal",
35175,
"myn",
"Latn",
}
m["chg"] = {
"ချာကထိုၚ်",
36831,
"trk-kar",
"Arab",
ancestors = "zkh",
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["chh"] = {
"Chinook",
6693380,
"nai-ckn",
"Latn",
}
m["chj"] = {
"Ojitlán Chinantec",
5100110,
"omq-chi",
"Latn",
}
m["chk"] = {
"ချေူခဳ",
33161,
"poz-mic",
"Latn",
}
m["chl"] = {
"ခဝ်ဝဳယျာ",
56438,
"azc-cup",
"Latn",
entry_name = {remove_diacritics = c.acute .. c.macron},
}
-- chm "Mari" is not recognized as a language, but it is a family code
m["chn"] = {
"ဃှသ်နေဝ် ဂျာတ်ကေါမ်",
35173,
"crp",
"Latn, Dupl",
ancestors = "chh, nuk",
}
m["cho"] = {
"ချံက်ထံက်",
32979,
"nai-mus",
"Latn",
sort_key = {remove_diacritics = c.macronbelow .. "-"},
entry_name = {remove_diacritics = c.acute .. c.dotbelow},
}
m["chp"] = {
"ချေပ်ပါယ်ဝဳယွာန်",
27692,
"ath-nor",
"Latn, Cans",
}
m["chq"] = {
"Quiotepec Chinantec",
5758709,
"omq-chi",
"Latn",
}
m["chr"] = {
"ချေဝ်ရဝ်ကဳ",
33388,
"iro",
"Cher",
translit = "Cher-translit",
}
m["cht"] = {
"Cholón",
2591243,
nil,
"Latn",
}
m["chw"] = {
"Chuabo",
5118412,
"bnt-mak",
"Latn",
}
m["chx"] = {
"Chantyal",
4926344,
"sit-tam",
"Deva",
}
m["chy"] = {
"သျှေန်အာန်",
33265,
"alg",
"Latn",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.macron .. c.dotabove .. "-"},
standardChars = "AaÁáÀàĀāȦȧEeÉéÈèĒēĖėHhKkMmNnOoÓóÒòŌōȮȯPpSsŠšTtVvXx" .. c.punc, --umlaut and circumflex not allowed
}
m["chz"] = {
"Ozumacín Chinantec",
5100111,
"omq-chi",
"Latn",
}
m["cia"] = {
"Cia-Cia",
35284,
"poz-mun",
"Hang, Latn, Arab",
}
m["cib"] = {
"Ci Gbe",
12952445,
"alv-gbe",
"Latn",
}
m["cic"] = {
"ချဳကာသော",
33192,
"nai-mus",
"Latn",
}
m["cid"] = {
"Chimariko",
1294251,
"qfa-iso",
"Latn",
}
m["cie"] = {
"Cineni",
56243,
"cdc-cbm",
"Latn",
}
m["cih"] = {
"Chinali",
11855245,
"inc",
"Deva",
ancestors = "sa",
}
m["cik"] = {
"Chitkuli Kinnauri",
15615982,
"sit-kin",
}
m["cim"] = {
"သေန်ဗရေန်",
37053,
"gmw-hgm",
"Latn",
ancestors = "bar",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove .. c.caron},
}
m["cin"] = {
"Cinta Larga",
5121095,
"tup",
"Latn",
}
m["cip"] = {
"Chiapanec",
3364475,
"omq",
"Latn",
}
m["cir"] = {
"တေန်ရေန်",
7862281,
"poz-cln",
"Latn",
}
m["ciy"] = {
"Chaima",
12628867,
"sai-ven",
"Latn",
}
m["cja"] = {
"ကျေန်လ္ပာ်ဖာပလိုတ်",
12645578,
"cmc",
"Latn, Arab, Khmr", -- Western Cham script is not yet available. Also, Arabic script is missing some glyphs.
}
m["cje"] = {
"Chru",
2967321,
"cmc",
"Latn",
}
m["cjh"] = {
"Upper Chehalis",
2962074,
"sal",
"Latn",
}
m["cji"] = {
"ချာမာလာန်",
56567,
"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["cjk"] = {
"Chokwe",
2422065,
"bnt-clu",
"Latn",
}
m["cjm"] = {
"ကျေန်လ္ပာ်ဖာဗၟံက်",
2948019,
"cmc",
"Latn, Cham",
}
m["cjn"] = {
"Chenapian",
5091044,
"paa-spk",
"Latn",
}
m["cjo"] = {
"Ashéninka Pajonal",
3450481,
"awd",
"Latn",
}
m["cjp"] = {
"Cabécar",
27878,
"cba",
"Latn",
}
m["cjs"] = {
"သျှိ",
34139,
"trk-ssb",
"Cyrl",
}
m["cjv"] = {
"Chuave",
5115226,
"ngf",
"Latn",
}
m["cjy"] = {
"စေံ",
56479,
"zhx",
"Hants",
ancestors = "ltc",
generate_forms = "zh-generateforms",
translit = "zh-translit",
sort_key = "Hani-sortkey",
}
m["ckb"] = {
"ခဝ်ဒေတ် ဗဟဵု",
36811,
"ku",
"ku-Arab",
translit = "ckb-translit",
entry_name = {remove_diacritics = c.kasra .. c.sukun},
}
m["ckh"] = {
"Chak",
12628870,
"sit-luu",
"Latn",
ancestors = "kdv",
}
m["ckl"] = {
"Cibak",
56279,
"cdc-cbm",
"Latn",
}
m["ckn"] = {
"Kaang Chin",
6343432,
"tbq-kuk",
"Latn",
}
m["cko"] = {
"Anufo",
34845,
"alv-ctn",
"Latn",
}
m["ckq"] = {
"Kajakse",
3440422,
"cdc-est",
"Latn",
}
m["ckr"] = {
"Kairak",
3503002,
"paa-bng",
"Latn",
}
m["cks"] = {
"Tayo",
1133089,
"crp",
"Latn",
ancestors = "fr",
sort_key = s["roa-oil-sortkey"],
}
m["ckt"] = {
"Chukchi",
33170,
"qfa-ckn",
"Cyrl",
entry_name = {
from = {"['’]"},
to = {"ʼ"}
},
sort_key = {
from = {"ё", "ӄ", "ԓ", "ӈ"},
to = {"е" .. p[1], "к" .. p[1], "л" .. p[1], "н" .. p[1]}
},
}
m["cku"] = {
"Koasati",
35162,
"nai-mus",
"Latn",
}
m["ckv"] = {
"ခါဝါလာန်",
716627,
"map",
"Latn",
}
m["ckx"] = {
"Caka",
5018037,
"nic-tvc",
"Latn",
}
m["cky"] = {
"Cakfem-Mushere",
3441199,
"cdc-wst",
"Latn",
}
m["ckz"] = {
"Kaqchikel-K'iche' Mixed Language",
5054550,
"qfa-mix",
"Latn",
ancestors = "cak, quc"
}
m["cla"] = {
"Ron",
3440432,
"cdc-wst",
"Latn",
}
m["clc"] = {
"Chilcotin",
28535,
"ath-nor",
"Latn",
}
m["cld"] = {
"Chaldean Neo-Aramaic",
33236,
"sem-are",
"Syrc",
entry_name = "Syrc-entryname",
}
m["cle"] = {
"Lealao Chinantec",
6509365,
"omq-chi",
"Latn",
}
m["clh"] = {
"Chilisso",
3250629,
"inc-koh",
}
m["cli"] = {
"Chakali",
35206,
"nic-gnw",
"Latn",
}
m["clj"] = {
"Laitu Chin",
6474196,
"tbq-kuk",
}
m["clk"] = {
"Idu",
56412,
"sit-gsi",
"Tibt, 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["cll"] = {
"Chala",
35190,
"nic-gne",
"Latn",
}
m["clm"] = {
"Klallam",
33404,
"sal",
"Latn",
}
m["clo"] = {
"Lowland Oaxaca Chontal",
2964450,
"nai-tqn",
"Latn",
}
m["clt"] = {
"Lautu Chin",
6502107,
"tbq-kuk",
}
m["clu"] = {
"Caluyanun",
32964,
"phi",
"Latn",
}
m["clw"] = {
"Chulym",
33125,
"trk-ssb",
"Latn, Cyrl",
}
m["cly"] = {
"Eastern Highland Chatino",
12642078,
"omq-cha",
"Latn",
}
m["cma"] = {
"Mạ",
12953680,
"mkh-ban",
"Latn",
}
m["cme"] = {
"Cerma",
35074,
"nic-gur",
"Latn",
}
m["cmg"] = {
"မန်ဂဝ်လဳယျာ ဝၚ်ဂန္ထ",
5128303,
"xgn-cen",
"Mong, Soyo, Zanb",
translit = {Mong = "Mong-translit"},
display_text = {Mong = s["Mong-displaytext"]},
entry_name = {Mong = s["Mong-entryname"]},
}
m["cmi"] = {
"Emberá-Chamí",
3052042,
"sai-chc",
"Latn",
}
m["cml"] = {
"Campalagian",
5027893,
"poz-ssw",
"Latn",
}
m["cmm"] = {
"Michigamea",
12636809,
"sio-msv",
"Latn",
}
m["cmn"] = {
"မာန်ဒါရေဝ်",
9192,
"zhx-man",
"Hants, Latn, Bopo",
wikimedia_codes = "zh",
generate_forms = "zh-generateforms",
translit = {
Hani = "zh-translit",
Bopo = "zh-translit",
},
sort_key = {
Hani = "Hani-sortkey",
Latn = {
from = {
-- Sort terms with tone numbers immediately after equivalent terms with diacritics.
"[aeiouv][" .. c.circ .. c.diaer .. "]?[nr]?g?[0-5]",
-- Add temporary breaks between syllables.
"([aeiouvmn][" .. c.circ .. c.diaer .. "]?[" .. c.macron .. c.acute .. c.caron .. c.grave .. "]?n?ŋ?g?r?)([bpmfdtnlgkhjqxzcsywrv']h?[aeiouvmn ])", p[1] .. "([ngr])$", p[1] .. "([ngr][%s%-'" .. p[1] .. "])",
-- Substitute diacritics for syllable-final tone numbers, and add tone 0 where necessary.
c.macron, c.acute, c.caron, c.grave, "([1-4])([^%s%p" .. p[1] .. "]+)", "([^0-5])%f[%z%s%p" .. p[1] .. "]",
-- Substitute "v" shorthand for "ü" for a temporary placeholder, so that the (very rare) "v" initial is not affected by the later shorthand substitutions.
"([^ " .. p[1] .. "])v",
-- Remove temporary breaks.
p[1],
-- Substitute shorthands for full forms, and sort them immediately after equivalent terms.
"%S*[csz]" .. c.circ .. "%S*", "%S*[ŋ" .. p[2] .. "]%S*", "ĉ", "ŝ", "ŋ", p[2], "ẑ",
-- "ê" comes after "e", "ü" comes after "u" and apostrophes are removed (as their function is replaced by tone numbers).
"[" .. c.circ .. c.diaer .. "]", "'",
-- Sort numbered tone 5 after tone 0.
"5!"
},
to = {
"%0!",
"%1" .. p[1] .. "%2", "%1", "%1",
"1", "2", "3", "4", "%2%1", "%10",
"%1" .. p[2],
"",
"%0\"", "%0\"", "ch", "sh", "ng", "ü", "zh",
p[1], "",
"0!!"
}
},
},
}
m["cmo"] = {
"Central Mnong",
33369881,
"mkh-ban",
}
m["cmr"] = {
"Mro Chin",
16889978,
"tbq-kuk",
}
m["cms"] = {
"Messapic",
36383,
"ine",
"Latn, Ital, Grek",
}
m["cmt"] = {
"Camtho",
10441336,
"crp",
"Latn",
ancestors = "fly, zu"
}
m["cna"] = {
"Changthang",
12952322,
"sit-lab",
"Tibt",
translit = "Tibt-translit",
override_translit = true,
display_text = s["Tibt-displaytext"],
entry_name = s["Tibt-entryname"],
sort_key = "Tibt-sortkey",
}
m["cnb"] = {
"Chinbon Chin",
12952327,
"tbq-kuk",
}
m["cnc"] = {
"Cốông",
5202780,
"tbq-bis",
"Latn",
}
m["cng"] = {
"Northern Qiang",
56559,
"sit-qia",
}
m["cnh"] = {
"ချေၚ်",
3250286,
"tbq-kuk",
}
m["cni"] = {
"Asháninka",
3437230,
"awd",
"Latn",
}
m["cnk"] = {
"ခူမဳချေၚ်",
56308,
"tbq-kuk",
}
m["cnl"] = {
"Lalana Chinantec",
12953437,
"omq-chi",
"Latn",
}
m["cno"] = {
"Con",
3440883,
"mkh-pal",
}
m["cnp"] = {
"ဖေန်ဝှါ လ္ပာ်သၟဝ်ကျာ",
84302463,
"zhx-pin",
"Hants",
generate_forms = "zh-generateforms",
sort_key = "Hani-sortkey",
}
m["cns"] = {
"အာက်သမေတ် မဇ္ဇျိမ",
11732048,
"ngf",
"Latn",
}
m["cnt"] = {
"Tepetotutla Chinantec",
5100113,
"omq-chi",
"Latn",
}
m["cnu"] = {
"ချဲနဝ်အာ",
33276,
"ber",
}
m["cnw"] = {
"Ngawn Chin",
6583675,
"tbq-kuk",
}
m["cnx"] = {
"ခမ်နေတ် အဒေါဝ်",
12642603,
"cel-brs",
"Latn",
ancestors = "oco",
}
m["coa"] = {
"Cocos Islands Malay",
3441699,
"crp",
"Latn",
ancestors = "ms",
}
m["cob"] = {
"Chicomuceltec",
3307204,
"myn",
"Latn",
}
m["coc"] = {
"Cocopa",
33044,
"nai-yuc",
"Latn",
}
m["cod"] = {
"Cocama",
33317,
"tup",
"Latn",
}
m["coe"] = {
"Koreguaje",
3198924,
"sai-tuc",
"Latn",
}
m["cof"] = {
"Tsafiki",
2567055,
"sai-bar",
"Latn",
}
m["cog"] = {
"ချံန်",
3914630,
"mkh-pea",
"Thai, Khmr",
sort_key = {Thai = "Thai-sortkey"},
}
m["coh"] = {
"Chichonyi-Chidzihana-Chikauma",
12629011,
"bnt-mij",
"Latn",
}
m["coj"] = {
"Cochimi",
3915551,
"nai-yuc",
"Latn",
}
m["cok"] = {
"Santa Teresa Cora",
12641754,
"azc",
"Latn",
}
m["col"] = {
"Columbia-Wenatchi",
3324744,
"sal",
"Latn",
}
m["com"] = {
"Comanche",
32972,
"azc-num",
"Latn",
}
m["con"] = {
"Cofán",
2669254,
"qfa-iso",
"Latn",
}
m["coo"] = {
"Comox",
13583746,
"sal",
"Latn",
}
m["cop"] = {
"ခ္ဍက်ပတေတ်",
36155,
"egx",
"Copt",
translit = "Copt-translit",
ancestors = "egx-dem",
entry_name = {remove_diacritics = c.grave .. c.macron .. c.overline .. c.diaer .. "ˋ"},
sort_key = "cop-sortkey",
}
m["coq"] = {
"Coquille",
12953452,
"ath-pco",
"Latn",
}
m["cot"] = {
"Caquinte",
3915557,
"awd",
"Latn",
}
m["cou"] = {
"Wamey",
36935,
"alv-ten",
"Latn",
}
m["cov"] = {
"Cao Miao",
2936935,
"qfa-tak",
}
m["cow"] = {
"Cowlitz",
3001877,
"sal",
"Latn",
}
m["cox"] = {
"Nanti",
15342275,
"awd",
"Latn",
}
m["coy"] = {
"Coyaima",
56450,
"sai-car",
"Latn",
}
m["coz"] = {
"Chochotec",
2964262,
"omq-pop",
"Latn",
}
m["cpa"] = {
"Palantla Chinantec",
5100112,
"omq-chi",
"Latn",
}
m["cpb"] = {
"Ucayali-Yurúa Ashéninka",
3501858,
"awd",
"Latn",
}
m["cpc"] = {
"Ajyíninka Apurucayali",
3327405,
"awd",
"Latn",
}
m["cpg"] = {
"ဂရေတ် ခေါတ်ပဒဝ်ဃှေန်",
853414,
"grk",
"Grek, fa-Arab",
ancestors = "gkm",
translit = {Grek = "el-translit"},
entry_name = {Grek = {remove_diacritics = c.caron .. c.diaerbelow .. c.brevebelow}},
sort_key = {Grek = s["Grek-sortkey"]},
}
m["cpi"] = {
"ဖေါန်ဂျေန်ကြုက်ဗီုပြၚ်အၚ်္ဂလိက်",
3435078,
"crp",
"Latn, Hant",
ancestors = "en",
sort_key = {Hant = "Hani-sortkey"},
}
m["cpn"] = {
"Cherepon",
35181,
"alv-gng",
"Latn",
}
m["cpo"] = {
"Kpee",
6435722,
"dmn-jje",
}
m["cps"] = {
"Capiznon",
2937525,
"phi",
"Latn",
}
m["cpu"] = {
"Pichis Ashéninka",
7190661,
"awd",
"Latn",
}
m["cpx"] = {
"မေန် ဖေတ်သဳယာန်",
56583,
"zhx-com",
"Hants",
generate_forms = "zh-generateforms",
sort_key = "Hani-sortkey",
}
m["cpy"] = {
"South Ucayali Ashéninka",
3501868,
"awd",
"Latn",
}
m["cqd"] = {
"Chuanqiandian Cluster Miao",
121627627,
"hmn",
"Latn, Plrd",
}
m["cra"] = {
"Chara",
5073694,
"omv",
"Latn",
}
m["crb"] = {
"Kalinago",
3450735,
"awd-taa",
"Latn",
}
m["crc"] = {
"Lonwolwol",
3259216,
"poz-vnc",
"Latn",
}
m["crd"] = {
"Coeur d'Alene",
32915,
"sal",
"Latn",
}
m["crf"] = {
"Caramanta",
3504195,
"sai-chc",
"Latn",
}
m["crg"] = {
"Michif",
13315,
"qfa-mix",
"Latn",
ancestors = "cr, fr",
}
m["crh"] = {
"ခရိုၚ်မာၚ်တတာ",
33357,
"trk-kcu",
"Latn, Cyrl",
dotted_dotless_i = true,
sort_key = {
Latn = {
from = {
"[ıi]" .. c.breve, -- Convert ĭ into PUA so that the decomposed form does not get caught by the next step. Also cover decomposed forms with ı and i, as decomposed Ĭ is converted to ı + ̆ due to the dotted dotless I logic).
"i", -- Ensure "i" comes after "ı".
"â", "ç", "ğ", "ı", p[3], "ñ", "ö", "ş", "ü"
},
to = {
p[3],
"i" .. p[1],
"a", "c" .. p[1], "g" .. p[1], "i", "i" .. p[2], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1],
}
},
Cyrl = {
from = {"гъ", "ё", "къ", "нъ", "дж"},
to = {"г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "ч" .. p[1]}
},
},
}
m["cri"] = {
"Sãotomense",
36536,
"crp",
"Latn",
ancestors = "pt",
}
m["crj"] = {
"ခရေဝ် လ္ပာ်ဗၟံက်ဒိုဟ်သမၠုၚ်ကျာ",
12953464,
"alg",
"Latn, Cans",
ancestors = "cr",
translit = {Cans = "cr-translit"},
}
m["crk"] = {
"ခရေဝ် တိဗ္လး",
56699,
"alg",
"Latn, Cans",
ancestors = "cr",
}
m["crl"] = {
"ခရေဝ် လ္ပာ်ဗၟံက်သၟဝ်ကျာ",
12642195,
"alg",
"Latn, Cans",
ancestors = "cr",
translit = {Cans = "cr-translit"},
}
m["crm"] = {
"ခရေဝ် မေူာသ်",
3446671,
"alg",
"Latn, Cans",
ancestors = "cr",
}
m["crn"] = {
"ခါဝ်ရာ",
12953454,
"azc",
"Latn",
}
m["cro"] = {
"ခရဝ်",
1207611,
"sio-mor",
"Latn",
}
m["crq"] = {
"Iyo'wujwa Chorote",
3540927,
"sai-mtc",
"Latn",
}
m["crr"] = {
"Carolina Algonquian",
16113723,
"alg-eas",
"Latn",
}
m["crs"] = {
"သေသျှလွာ ခရဳအဝ်လ်",
34015,
"crp",
"Latn",
ancestors = "fr",
sort_key = s["roa-oil-sortkey"],
}
m["crt"] = {
"Iyojwa'ja Chorote",
3504118,
"sai-mtc",
"Latn",
}
m["crv"] = {
"Chaura",
2605680,
"aav-nic",
}
m["crw"] = {
"Chrau",
5105629,
"mkh-ban",
"Latn",
}
m["crx"] = {
"Carrier",
12953431,
"ath-nor",
"Latn, Cans",
}
m["cry"] = {
"Cori",
35204,
"nic-plc",
"Latn",
}
m["crz"] = {
"Cruzeño",
2967636,
"nai-chu",
"Latn",
}
m["csa"] = {
"Chiltepec Chinantec",
12953435,
"omq-chi",
"Latn",
}
m["csb"] = {
"ကသှုဗဳယာန်",
33690,
"zlw-pom",
"Latn",
}
m["csc"] = {
"Catalan Sign Language",
35768,
"sgn",
"Latn", -- when documented
}
m["csd"] = {
"Chiangmai Sign Language",
5095211,
"sgn",
}
m["cse"] = {
"Czech Sign Language",
5201809,
"sgn",
"Latn", -- when documented
}
m["csf"] = {
"Cuban Sign Language",
5192046,
"sgn",
"Latn", -- when documented
}
m["csg"] = {
"Chilean Sign Language",
3322112,
"sgn",
"Latn", -- when documented
}
m["csh"] = {
"Asho Chin",
12627282,
"tbq-kuk",
}
m["csi"] = {
"Coast Miwok",
2981109,
"nai-you",
"Latn",
}
m["csj"] = {
"Songlai Chin",
7561280,
"tbq-kuk",
}
m["csk"] = {
"Jola-Kasa",
3446622,
"alv-jol",
"Latn",
}
m["csl"] = {
"Chinese Sign Language",
1094190,
"sgn",
}
m["csm"] = {
"Central Sierra Miwok",
2944443,
"nai-you",
"Latn",
}
m["csn"] = {
"Colombian Sign Language",
2748229,
"sgn",
"Latn", -- when documented
}
m["cso"] = {
"Sochiapam Chinantec",
7550388,
"omq-chi",
"Latn",
}
m["csp"] = {
"ဖါတ်သဳယာန် မေန်",
84302019,
"zhx-pin",
"Hants",
generate_forms = "zh-generateforms",
translit = "zh-translit",
sort_key = "Hani-sortkey",
}
m["csq"] = {
"Croatian Sign Language",
3507506,
"sgn",
}
m["csr"] = {
"Costa Rican Sign Language",
5174901,
"sgn",
"Latn", -- when documented
}
m["css"] = {
"Southern Ohlone",
25559664,
"nai-you",
"Latn",
}
m["cst"] = {
"အဝ်ဠဝ်နဳ လ္ပာ်သၟဝ်ကျာ",
25559666,
"nai-you",
"Latn",
}
m["csv"] = {
"Sumtu Chin",
7638087,
"tbq-kuk",
}
m["csw"] = {
"ခရေဝ် သဝါမ်ပဳ",
56696,
"alg",
"Latn, Cans",
ancestors = "cr",
}
m["csy"] = {
"Siyin Chin",
7533375,
"tbq-kuk",
}
m["csz"] = {
"Coos",
3126783,
"nai-coo",
"Latn",
}
m["cta"] = {
"ထာထံက်ထာဲဗဝ် ချေန်တဳနဝ်",
7687853,
"omq-cha",
"Latn",
}
m["ctc"] = {
"Chetco-Tolowa",
12628946,
"ath-pco",
"Latn",
}
m["ctd"] = {
"ချေၚ်တဳတိန်",
56357,
"tbq-kuk",
"Latn, Pauc",
}
m["cte"] = {
"Tepinapa Chinantec",
12953443,
"omq-chi",
"Latn",
}
m["ctg"] = {
"ချေတ်တေတ်ဂိုဝ်နဳယာန်",
33173,
"inc-bas",
"Beng",
ancestors = "inc-obn",
}
m["cth"] = {
"Thaiphum Chin",
16912048,
"tbq-kuk",
}
m["ctl"] = {
"Tlacoatzintepec Chinantec",
12643657,
"omq-chi",
"Latn",
}
m["ctm"] = {
"Chitimacha",
1294227,
"qfa-iso",
"Latn",
}
m["ctn"] = {
"Chhintange",
32994,
"sit-kie",
"Deva",
}
m["cto"] = {
"Emberá-Catío",
3052039,
"sai-chc",
"Latn",
}
m["ctp"] = {
"Western Highland Chatino",
32861734,
"omq-cha",
"Latn",
entry_name = {remove_diacritics = "¹²³⁴⁵"},
sort_key = {remove_diacritics = c.acute},
}
m["cts"] = {
"Northern Catanduanes Bicolano",
7130477,
"phi",
"Latn",
}
m["ctt"] = {
"Wayanad Chetti",
7975850,
"dra-mal",
"Taml",
}
m["ctu"] = {
"Chol",
35179,
"myn",
"Latn",
}
m["ctz"] = {
"ဇာကာတေပေတ် ချေတ်တဳနဝ်",
8063754,
"omq-cha",
"Latn",
}
m["cua"] = {
"Cua",
3441115,
"mkh-ban",
"Latn",
}
m["cub"] = {
"Cubeo",
3006705,
"sai-tuc",
"Latn",
}
m["cuc"] = {
"Usila Chinantec",
7901979,
"omq-chi",
"Latn",
}
m["cug"] = {
"Cung",
35194,
"nic-bbe",
"Latn",
}
m["cuh"] = {
"Chuka",
12952344,
"bnt-kka",
"Latn",
}
m["cui"] = {
"Cuiba",
2980421,
"sai-guh",
"Latn",
}
m["cuj"] = {
"Mashco Piro",
3446596,
"awd",
"Latn",
}
m["cuk"] = {
"Kuna",
12953659,
"cba",
"Latn",
}
m["cul"] = {
"Culina",
2475442,
"auf",
"Latn",
}
m["cuo"] = {
"Cumanagoto",
5193784,
"sai-cpc",
"Latn",
}
m["cup"] = {
"ခူပေညဝ်",
143130,
"azc-cup",
"Latn",
}
m["cuq"] = {
"Cun",
2475478,
"qfa-lic",
"Latn",
}
m["cur"] = {
"Chhulung",
5116126,
"sit-kie",
"Deva",
}
m["cut"] = {
"Teutila Cuicatec",
12953453,
"omq-cui",
"Latn",
}
m["cuu"] = {
"Tai Ya",
3441122,
"qfa-tak",
"Latn",
}
m["cuv"] = {
"Cuvok",
3515056,
"cdc-cbm",
"Latn",
}
m["cuw"] = {
"Chukwa",
12629033,
"sit-kic",
}
m["cux"] = {
"Tepeuxila Cuicatec",
20527242,
"omq-cui",
"Latn",
}
m["cuy"] = {
"Cuitlatec",
2030998,
"qfa-iso",
"Latn",
}
m["cvg"] = {
"Chug",
47683644,
"sit-khb",
}
m["cvn"] = {
"Valle Nacional Chinantec",
12953442,
"omq-chi",
"Latn",
}
m["cwa"] = {
"Kabwa",
6344537,
"bnt-lok",
"Latn",
}
m["cwb"] = {
"Maindo",
11002891,
"bnt-mak",
"Latn",
ancestors = "chw",
}
m["cwd"] = {
"Woods Cree",
56305,
"alg",
"Latn, Cans",
ancestors = "cr",
}
m["cwe"] = {
"Kwere",
779632,
"bnt-ruv",
"Latn",
}
m["cwg"] = {
"Chewong",
646718,
"mkh-asl",
"Latn",
}
m["cwt"] = {
"Kuwaataay",
35699,
"alv-jol",
"Latn",
}
m["cya"] = {
"Nopala Chatino",
15616302,
"omq-cha",
"Latn",
}
m["cyb"] = {
"Cayubaba",
3183382,
"qfa-iso",
"Latn",
}
m["cyo"] = {
"ခူယူနန်",
33153,
"phi",
"Latn",
}
m["czh"] = {
"ဟုဲဂျုဝ်",
56546,
"zhx",
"Hants", -- ?
ancestors = "ltc",
generate_forms = "zh-generateforms",
sort_key = "Hani-sortkey",
}
m["czk"] = {
"Knaanic",
56384,
"zlw",
"Hebr",
ancestors = "zlw-ocs",
entry_name = {Hebr = {remove_diacritics = u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7) .. c.CGJ}},
}
m["czn"] = {
"Zenzontepec Chatino",
603106,
"omq-cha",
"Latn",
}
m["czo"] = {
"မေန် ဗဟဵု",
56435,
"zhx-inm",
"Hants",
generate_forms = "zh-generateforms",
sort_key = "Hani-sortkey",
}
m["czt"] = {
"Zotung Chin",
8074599,
"tbq-kuk",
"Latn",
}
return require("Module:languages").finalizeData(m, "language")
gsdagknro7qldlun5905f37169yz9u3
မဝ်ဂျူ:gem-decl-noun
828
21250
398075
30534
2026-07-09T16:21:09Z
咽頭べさ
33
398075
Scribunto
text/plain
local export = {}
local m_pron = require("Module:gem-pronunc")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("gem-pro")
local i_muts = m_pron.i_mutations
local decl_data = require("Module:gem-decl-noun/data")
local decl_data_irreg = require("Module:gem-decl-noun/data/irreg")
local endings = {
["az"] = "a-m", ["ą"] = "a-n", ["iz"] = "i-mf", ["i"] = "i-n", ["ī"] = "ijo-f", ["į̄"] = "in-f",
["ǭ"] = "n-f", ["ō"] = "o-f", ["ēr"] = "r-mf", ["uz"] = "u-mf", ["u"] = "u-n"
}
local endings_reverse = {
["a-m"] = "az", ["a-n"] = "ą", ["cons-n"] = "", ["i-mf"] = "iz", ["i-m"] = "iz", ["i-f"] = "iz", ["i-n"] = "i",
["ijo-f"] = "ī", ["in-f"] = "į̄", ["n-m"] = "ô", ["n-n"] = "ô", ["n-f"] = "ǭ", ["o-f"] = "ō", ["r-mf"] = "ēr", ["r-m"] = "ēr",
["r-f"] = "ēr", ["u-mf"] = "uz", ["u-m"] = "uz", ["u-f"] = "uz", ["u-n"] = "u", ["z-n"] = "az",
}
local function detect_decl(word, stem, gender)
if stem and gender then
local decl = stem .. "-" .. gender
return decl, {mw.ustring.sub(word, 1, -(mw.ustring.len(endings_reverse[decl]) + 1))}
elseif stem == "z" and mw.ustring.sub(word, -2) == "az" then -- z-stem
return "z-n", {mw.ustring.sub(word, 1, -3)}
elseif mw.ustring.find(word, "ô$") then -- an-stem
if gender then
return "n-" .. gender, {mw.ustring.sub(word, 1, -2)}
else
error("Gender must be specified for an-stems.")
end
else
for ending, decl in pairs(endings) do
if mw.ustring.find(word, ending .. "$") then
return decl, {mw.ustring.sub(word, 1, -(mw.ustring.len(ending) + 1))}
end
end
-- No matches, assume consonant stem. Now check for s-stems
local stem = ""
if mw.ustring.sub(word, -1, -1) == "s" and not mw.ustring.find(mw.ustring.sub(word, -2, -2), "[fhkptþ]") then
stem = word
else
stem = mw.ustring.sub(word, 1, -2)
end
return (gender and "cons-" .. gender or "cons-mf"), {stem}
end
end
local function add_asterisks(forms, data)
for _, form in ipairs(forms) do
for i, subform in ipairs(data.forms[form]) do
data.forms[form][i] = "*" .. subform
end
end
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local parent_args = frame:getParent().args
if mw.title.getCurrentTitle().nsText ~= "ဗီုပြၚ်သိုၚ်တၟိ" then return end
local stems = nil
local decl_type = {}
local word = mw.loadData("Module:headword/data").pagename
local args = {}
if not decl_data_irreg[word] then
if frame.args.decl then
decl_type = frame.args.decl
else
if parent_args.stem and parent_args.g and parent_args[1] then
decl_type = parent_args.stem .. "-" .. parent_args.g
stems = {parent_args[1]}
else
decl_type, stems = detect_decl(word, parent_args.stem, parent_args.g)
end
end
if not decl_type then
error("Unknown declension '" .. decl_type .. "'")
end
args = require("Module:parameters").process(parent_args, decl_data[decl_type].params, true)
if stems then
for i, stem in ipairs(stems) do
args[i] = stem
end
end
end
local data = {forms = {}, categories = {}}
data.head = parent_args["head"] or nil
-- Generate the forms
if decl_data_irreg[word] then
-- table.insert(data.categories, "Proto-Germanic irregular nouns")
decl_data_irreg[word](parent_args, data)
else
decl_data[decl_type](args, data)
end
-- Make the table
return make_table(data)
end
function make_table(data)
local function show_form(form)
if not form then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
if mw.ustring.find(subform, "[iīįǐj]") or mw.ustring.find(subform, "e[mn]") then
subform = i_muts(subform)
end
if subform ~= "—" then
subform = "*" .. subform
end
table.insert(ret, subform)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "decl_type" then
return data.decl_type
elseif param == "title" then
return "*" .. data.forms.nom_sg[1]
else
return show_form(data.forms[param])
end
end
local function make_cases(data)
local cases = {"ပရေၚ်ပ္တိုန်စရၚ်ယၟု", "ပရေၚ်ဂယိုၚ်လမျီု", "ကမ္မကာရက", "ဗဳဇဂကူ", "ပြကမ္မကာရက", "တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်"}
local ret = {}
for _, case in ipairs(cases) do
local case_short = mw.ustring.sub(case, 1, 3)
-- assert(false, case_short)
table.insert(ret, "|- \n! | " .. case .. "\n")
table.insert(ret, "| " .. show_form(data.forms[case_short .. "_sg"]) .. "\n")
if data.forms[case_short .. "_pl"] then
table.insert(ret, "| " .. show_form(data.forms[case_short .. "_pl"]) .. "\n")
end
end
return table.concat(ret)
end
local no_plural = data.forms.nom_pl == nil
local table_top = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု <span lang="gem-pro">{{{title}}}</span> ({{{decl_type}}})',
palette = 'orange',
tall = 'yes',
}
}
local table_bottom = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom'
}
local wikicode = table_top .. [=[
! class="outer" |
! class="outer" | singular ]=] .. (no_plural and "\n" or [=[
! class="outer" | plural
]=]) .. make_cases(data) .. [=[
]=] .. table_bottom
return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang)
end
return export
930xgjubw55592gmrd5s0n8uk0wd3fi
398077
398075
2026-07-09T23:55:00Z
咽頭べさ
33
398077
Scribunto
text/plain
local export = {}
local m_pron = require("Module:gem-pronunc")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("gem-pro")
local i_muts = m_pron.i_mutations
local decl_data = require("Module:gem-decl-noun/data")
local decl_data_irreg = require("Module:gem-decl-noun/data/irreg")
local endings = {
["az"] = "a-m", ["ą"] = "a-n", ["iz"] = "i-mf", ["i"] = "i-n", ["ī"] = "ijo-f", ["į̄"] = "in-f",
["ǭ"] = "n-f", ["ō"] = "o-f", ["ēr"] = "r-mf", ["uz"] = "u-mf", ["u"] = "u-n"
}
local endings_reverse = {
["a-m"] = "az", ["a-n"] = "ą", ["cons-n"] = "", ["i-mf"] = "iz", ["i-m"] = "iz", ["i-f"] = "iz", ["i-n"] = "i",
["ijo-f"] = "ī", ["in-f"] = "į̄", ["n-m"] = "ô", ["n-n"] = "ô", ["n-f"] = "ǭ", ["o-f"] = "ō", ["r-mf"] = "ēr", ["r-m"] = "ēr",
["r-f"] = "ēr", ["u-mf"] = "uz", ["u-m"] = "uz", ["u-f"] = "uz", ["u-n"] = "u", ["z-n"] = "az",
}
local function detect_decl(word, stem, gender)
if stem and gender then
local decl = stem .. "-" .. gender
return decl, {mw.ustring.sub(word, 1, -(mw.ustring.len(endings_reverse[decl]) + 1))}
elseif stem == "z" and mw.ustring.sub(word, -2) == "az" then -- z-stem
return "z-n", {mw.ustring.sub(word, 1, -3)}
elseif mw.ustring.find(word, "ô$") then -- an-stem
if gender then
return "n-" .. gender, {mw.ustring.sub(word, 1, -2)}
else
error("Gender must be specified for an-stems.")
end
else
for ending, decl in pairs(endings) do
if mw.ustring.find(word, ending .. "$") then
return decl, {mw.ustring.sub(word, 1, -(mw.ustring.len(ending) + 1))}
end
end
-- No matches, assume consonant stem. Now check for s-stems
local stem = ""
if mw.ustring.sub(word, -1, -1) == "s" and not mw.ustring.find(mw.ustring.sub(word, -2, -2), "[fhkptþ]") then
stem = word
else
stem = mw.ustring.sub(word, 1, -2)
end
return (gender and "cons-" .. gender or "cons-mf"), {stem}
end
end
local function add_asterisks(forms, data)
for _, form in ipairs(forms) do
for i, subform in ipairs(data.forms[form]) do
data.forms[form][i] = "*" .. subform
end
end
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local parent_args = frame:getParent().args
if mw.title.getCurrentTitle().nsText ~= "ဗီုပြၚ်သိုၚ်တၟိ" then return end
local stems = nil
local decl_type = {}
local word = mw.loadData("Module:headword/data").pagename
local args = {}
if not decl_data_irreg[word] then
if frame.args.decl then
decl_type = frame.args.decl
else
if parent_args.stem and parent_args.g and parent_args[1] then
decl_type = parent_args.stem .. "-" .. parent_args.g
stems = {parent_args[1]}
else
decl_type, stems = detect_decl(word, parent_args.stem, parent_args.g)
end
end
if not decl_type then
error("Unknown declension '" .. decl_type .. "'")
end
args = require("Module:parameters").process(parent_args, decl_data[decl_type].params, true)
if stems then
for i, stem in ipairs(stems) do
args[i] = stem
end
end
end
local data = {forms = {}, categories = {}}
data.head = parent_args["head"] or nil
-- Generate the forms
if decl_data_irreg[word] then
-- table.insert(data.categories, "Proto-Germanic irregular nouns")
decl_data_irreg[word](parent_args, data)
else
decl_data[decl_type](args, data)
end
-- Make the table
return make_table(data)
end
function make_table(data)
local function show_form(form)
if not form then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
if mw.ustring.find(subform, "[iīįǐj]") or mw.ustring.find(subform, "e[mn]") then
subform = i_muts(subform)
end
if subform ~= "—" then
subform = "*" .. subform
end
table.insert(ret, subform)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "decl_type" then
return data.decl_type
elseif param == "title" then
return "*" .. data.forms.nom_sg[1]
else
return show_form(data.forms[param])
end
end
local function make_cases(data)
local cases = {"ပရေၚ်ပ္တိုန်စရၚ်ယၟု", "ပရေၚ်ဂယိုၚ်လမျီု", "ကမ္မကာရက", "ဗဳဇဂကူ", "ပြကမ္မကာရက", "တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်"}
local ret = {}
for _, case in ipairs(cases) do
local case_short = mw.ustring.sub(case, 1, 3)
-- assert(false, case_short)
table.insert(ret, "|- \n! | " .. case .. "\n")
table.insert(ret, "| " .. show_form(data.forms[case_short .. "_sg"]) .. "\n")
if data.forms[case_short .. "_pl"] then
table.insert(ret, "| " .. show_form(data.forms[case_short .. "_pl"]) .. "\n")
end
end
return table.concat(ret)
end
local no_plural = data.forms.nom_pl == nil
local table_top = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု <span lang="gem-pro">{{{title}}}</span> ({{{decl_type}}})',
palette = 'orange',
tall = 'yes',
}
}
local table_bottom = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom'
}
local wikicode = table_top .. [=[
! class="outer" |
! class="outer" | ကိုန်ဨကဝုစ် ]=] .. (no_plural and "\n" or [=[
! class="outer" | ကိုန်ဗဟုဝစ်
]=]) .. make_cases(data) .. [=[
]=] .. table_bottom
return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang)
end
return export
fqwfl6oybgqxpxr0by72po2rn4f2lr3
ကဏ္ဍ:ထာမ်ပလိက်လာၚ်က္ဍိုပ်မအရေဝ်ချက်ခ်တြေံဂမၠိုၚ်
14
68048
398021
165588
2026-07-09T13:06:07Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံလေန်မနွံကဵုပၟိက်ဂမၠိုၚ်]] ဇရေင် [[ကဏ္ဍ:ထာမ်ပလိက်လာၚ်က္ဍိုပ်မအရေဝ်ချက်ခ်တြေံဂမၠိုၚ်]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင်
162713
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံဂမၠိုၚ်]]
gjpaausnmzh2lq3zvxbok4ba1eu48by
krev
0
296539
398015
2026-07-09T12:53:55Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ခမ်နေတ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|kw|crev}} ===နိရုတ်=== {{root|kw|ine-pro|*krep-}} ဝေါဟာကၠုၚ်နူ {{inh|kw|cnx|creff,cref}}၊ နကဵုအဆက်နူ {{inh|kw|oco|crif}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|kw|cel-bry-pro|*krɨβ̃}}၊ နူအဆက်နကဵု {{inh|kw|cel-pro|*kriɸmos}} ====နာ..."
398015
wikitext
text/x-wiki
==ခမ်နေတ်==
===ပွံၚ်နဲတၞဟ်===
* {{alt|kw|crev}}
===နိရုတ်===
{{root|kw|ine-pro|*krep-}}
ဝေါဟာကၠုၚ်နူ {{inh|kw|cnx|creff,cref}}၊ နကဵုအဆက်နူ {{inh|kw|oco|crif}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|kw|cel-bry-pro|*krɨβ̃}}၊ နူအဆက်နကဵု {{inh|kw|cel-pro|*kriɸmos}}
====နာမဝိသေသန====
{{kw-adj|krevva|krevva}}
# ထတ်မ္ၚိုဟ်။
#: {{syn|kw|stout|tooth}}
# မဇၞော်ဗိုန်ခိုၚ်။
#: {{syn|kw|gallosek}}
# အစောံဇြဟတ်။
#: {{syn|kw|freth|men}}
==ချက်ခ်==
{{wp|cs:}}
===ဗွဟ်ရမ္သာၚ်===
* {{cs-IPA}}
* {{audio|cs|Cs-krev.ogg}}
* {{hyphenation|cs|krev}}
* {{rhymes|cs|ɛv}}
===နာမ်===
{{cs-noun|f}}
# ဆီ။
====လဟုတ်စှ်ေ====
{{cs-ndecl|f.*}}
==နဝ်ဝေ ဗော်ခ်မဝ်==
===ကြိယာ===
{{head|nb|verb form}}
# {{inflection of|nb|kreve||imp}}
==နဝ်ဝေ နဳနိုတ်==
===ကြိယာ===
{{head|nn|verb form}}
# {{infl of|nn|krevja||pres|;|imp}}
==ချက်ခ်တြေံ==
===ဗွဟ်ရမ္သာၚ်===
* {{zlw-ocs-IPA}}
===နာမ်===
{{zlw-ocs-noun|f}}
# ဆီ။
====လဟုတ်စှ်ေ====
{{zlw-ocs-ndecl|f}}
===မဒုၚ်လွဳစ===
* {{desc|cs|krev}}
nnxhnhllbxy41s0trwksjnjtoob6mmm
ထာမ်ပလိက်:kw-adj
10
296540
398016
2026-07-09T12:56:36Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{head|kw|နာမဝိသေသန|head={{{head|}}}<!-- -->|{{#if:{{{1|}}}|{{lg|ပတဝ်ပတုပ်}}}}<!-- -->|{{#switch:{{{1|}}}<!-- --> |a={{kw-gem|{{kw-shorto|{{pagename}}}}}}a//{{{com2|}}}<!-- --> |m=[[{{pagename}}|moy {{pagename}}]]//{{{com2|}}}<!-- --> |am={{kw-gem|{{kw-shorto|{{pagename}}}}}}a//[[{{pagename}}|moy {{pagename}}]]//{{{com2|}}}<!-- --> |{{{1|}}}//{{{com2|}}}<!-- -->}}<!-- -->|{{#if:{{..."
398016
wikitext
text/x-wiki
{{head|kw|နာမဝိသေသန|head={{{head|}}}<!--
-->|{{#if:{{{1|}}}|{{lg|ပတဝ်ပတုပ်}}}}<!--
-->|{{#switch:{{{1|}}}<!--
--> |a={{kw-gem|{{kw-shorto|{{pagename}}}}}}a//{{{com2|}}}<!--
--> |m=[[{{pagename}}|moy {{pagename}}]]//{{{com2|}}}<!--
--> |am={{kw-gem|{{kw-shorto|{{pagename}}}}}}a//[[{{pagename}}|moy {{pagename}}]]//{{{com2|}}}<!--
--> |{{{1|}}}//{{{com2|}}}<!--
-->}}<!--
-->|{{#if:{{{2|}}}|{{lg|သဒ္ဒာ}}}}<!--
-->|{{#switch:{{{2|}}}<!--
--> |a={{l|kw|{{kw-gem|{{kw-shorto|{{pagename}}}}}}a|{{#if: {{{no-an|}}} | {{kw-gem|{{kw-shorto|{{pagename}}}}}}a | an {{kw-gem|{{kw-shorto|{{pagename}}}}}}a }} }}//{{{sup2|}}}<!--
--> |m=[[{{pagename}}|{{#if: {{{no-an|}}} | moyha {{pagename}} | an moyha {{pagename}} }}]]//{{{sup2|}}}<!--
--> |{{l|kw|{{{2|}}}|{{#if: {{{no-an|}}} | {{{2|}}} | an {{{2|}}} }} }}//{{{sup2|}}}<!--
-->}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
64nm0p0o64bm3mdg8ofehucflkmnfgp
ထာမ်ပလိက်:kw-adj/documentation
10
296541
398017
2026-07-09T12:58:17Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ===Usage=== <pre>{{kw-adj|comparative|superlative}}</pre> * use <code>a</code> in first and second parameters if the comparative and superlative forms are formed by adding {{l|kw|-a}} * use <code>m</code> in first and second parameters if the comparative and superlative forms are formed by preceding with {{l|kw|moy}}/{{l|kw|moyha}} * add <code>no-an=1</code> if the superlative form does not..."
398017
wikitext
text/x-wiki
{{documentation subpage}}
===Usage===
<pre>{{kw-adj|comparative|superlative}}</pre>
* use <code>a</code> in first and second parameters if the comparative and superlative forms are formed by adding {{l|kw|-a}}
* use <code>m</code> in first and second parameters if the comparative and superlative forms are formed by preceding with {{l|kw|moy}}/{{l|kw|moyha}}
* add <code>no-an=1</code> if the superlative form does not require the definite article
{{hwcat}}
1wqnog9325fxnj06chak2zudm1gm0h9
ကဏ္ဍ:ထာမ်ပလိက်လာၚ်က္ဍိုပ်မအရေဝ်ခမ်နေတ်ဂမၠိုၚ်
14
296542
398018
2026-07-09T12:59:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ခမ်နေတ်ဂမၠိုၚ်]][[ကဏ္ဍ:လာၚ်က္ဍိုပ်မအရေဝ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]"
398018
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ခမ်နေတ်ဂမၠိုၚ်]][[ကဏ္ဍ:လာၚ်က္ဍိုပ်မအရေဝ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
fs3e9pxb5nsrclohcuvgc01bz2kllb9
ထာမ်ပလိက်:zlw-ocs-noun
10
296543
398019
2026-07-09T13:01:52Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:cs-sk-headword|show|နာမ်|lang=zlw-ocs}}<noinclude>{{documentation}}</noinclude>"
398019
wikitext
text/x-wiki
{{#invoke:cs-sk-headword|show|နာမ်|lang=zlw-ocs}}<noinclude>{{documentation}}</noinclude>
30gdumr9xkuvu9xn30infxlzamvkirj
ထာမ်ပလိက်:zlw-ocs-noun/documentation
10
296544
398020
2026-07-09T13:04:58Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{uses lua|Module:cs-sk-headword}} {{hwcat}}"
398020
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
{{uses lua|Module:cs-sk-headword}}
{{hwcat}}
11g9a5soc68rbn9kn03qj1v04zig69a
ထာမ်ပလိက်:zlw-ocs-ndecl
10
296545
398022
2026-07-09T13:07:14Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "<includeonly>{{#invoke:zlw-ocs-noun|show}}</includeonly><noinclude>{{documentation}}</noinclude>"
398022
wikitext
text/x-wiki
<includeonly>{{#invoke:zlw-ocs-noun|show}}</includeonly><noinclude>{{documentation}}</noinclude>
cir0m6w8xb17t7lojp0jc5k0d7c4hgq
ထာမ်ပလိက်:zlw-ocs-ndecl/documentation
10
296546
398023
2026-07-09T13:09:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|ndecl]] </includeonly>"
398023
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|ndecl]]
</includeonly>
3fnqaag31m3tlbb87tilvgj843hcm88
ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်
14
296547
398024
2026-07-09T13:11:00Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]"
398024
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
7bf2d66t1uhchb5z46ht0zl3fs0u1js
ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်
14
296548
398025
2026-07-09T13:12:49Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]"
398025
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
stpom6ilf8gid3mvlp7t0uprjfprqj1
မဝ်ဂျူ:zlw-ocs-noun
828
296549
398026
2026-07-09T13:31:23Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} --[=[ Authorship: Zhnka, heavily based on [[Module:cs-noun]] by Benwing ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/number. Example slot names for nouns are "gen_s" (genitive singular) and "voc_p" (vocative plural). Each slot is filled with zero or more forms. -- "form" = The declined Czech form representing the value of a given slot. -- "lemma" = The dictionary f..."
398026
Scribunto
text/plain
local export = {}
--[=[
Authorship: Zhnka, heavily based on [[Module:cs-noun]] by Benwing
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular combination of case/number.
Example slot names for nouns are "gen_s" (genitive singular) and
"voc_p" (vocative plural). Each slot is filled with zero or more forms.
-- "form" = The declined Czech form representing the value of a given slot.
-- "lemma" = The dictionary form of a given Czech term. Generally the nominative
masculine singular, but may occasionally be another form if the nominative
masculine singular is missing.
]=]
local lang = require("Module:languages").getByCode("zlw-ocs")
local m_table = require("Module:table")
local m_links = require("Module:links")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local m_para = require("Module:parameters")
local com = require("Module:zlw-ocs-common")
local en_utilities_module = "Module:en-utilities"
local current_title = mw.title.getCurrentTitle()
local NAMESPACE = current_title.nsText
local PAGENAME = current_title.text
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rgmatch = mw.ustring.gmatch
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local usub = mw.ustring.sub
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local force_cat = false -- set to true to make categories appear in non-mainspace pages, for testing
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
local function track(track_id)
require("Module:debug/track")("zlw-ocs-noun/" .. track_id)
return true
end
local output_noun_slots = {
nom_s = "nom|s",
gen_s = "gen|s",
dat_s = "dat|s",
acc_s = "acc|s",
voc_s = "voc|s",
loc_s = "loc|s",
ins_s = "ins|s",
nom_d = "nom|d",
gen_d = "gen|d",
dat_d = "dat|d",
acc_d = "acc|d",
voc_d = "voc|d",
loc_d = "loc|d",
ins_d = "ins|d",
nom_p = "nom|p",
gen_p = "gen|p",
dat_p = "dat|p",
acc_p = "acc|p",
voc_p = "voc|p",
loc_p = "loc|p",
ins_p = "ins|p",
}
local function get_output_noun_slots(alternant_multiword_spec)
-- FIXME: To save memory we modify the table in-place. This won't work if we ever end up with multiple calls to
-- this module in the same Lua invocation, and we would need to clone the table.
if alternant_multiword_spec.actual_number ~= "allthree" then
for slot, accel_form in pairs(output_noun_slots) do
output_noun_slots[slot] = accel_form:gsub("|[sp]$", "")
end
end
return output_noun_slots
end
local potential_lemma_slots = {"nom_s", "nom_p", "gen_s"}
local cases = {
nom = true,
gen = true,
dat = true,
acc = true,
voc = true,
loc = true,
ins = true,
}
local clitic_cases = {
gen = true,
dat = true,
acc = true,
}
local function dereduce(base, stem)
local dereduced_stem = com.dereduce(base, stem)
if not dereduced_stem then
error("Unable to dereduce stem '" .. stem .. "'")
end
return dereduced_stem
end
local function apply_special_cases(base, slot, stem, ending)
local palatalize_voc
if base.c_as_k and rfind(ending, "^[aouyáóúůý]") then
local k_stem = rsub(stem, "c$", "k")
stem = {stem, k_stem}
elseif slot == "voc_s" and ending == "e" and base.palatalize_voc then
stem = com.apply_first_palatalization(stem)
elseif rfind(ending, "^[ěií]") or slot == "loc_s" and ending == "e" then
-- loc_s of hard masculines is sometimes -e/ě; the user might indicate this as -e, which we should handle
-- correctly
stem = com.apply_second_palatalization(stem)
end
return stem, ending
end
local function skip_slot(number, slot)
return number == "sg" and rfind(slot, "_p$") or
number == "pl" and rfind(slot, "_s$")
end
-- Basic function to combine stem(s) and ending(s) and insert the result into the appropriate slot. `stems` is either
-- the `stems` object passed into the declension functions (containing the various stems; see below) or a string to
-- override the stem. (NOTE: If you pass a string in as `stems`, you should pass the value of `stems.footnotes` as the
-- value of `footnotes` as it will be lost otherwise. If you need to supply your own footnote in addition, use
-- iut.combine_footnotes() to combine any user-specified footnote(s) with your footnote(s).) `endings` is either a
-- string specifying a single ending or a list of endings. If `endings` is nil, no forms are inserted. If an ending is
-- "-", the value of `stems` is ignored and the lemma is used instead as the stem; this is important in case the user
-- used `decllemma:` to specify a declension lemma different from the actual lemma, or specified '.foreign' (which has
-- a similar effect).
local function add(base, slot, stems, endings, footnotes)
if not endings then
return
end
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
return
end
local stems_footnotes = type(stems) == "table" and stems.footnotes or nil
footnotes = iut.combine_footnotes(iut.combine_footnotes(base.footnotes, stems_footnotes), footnotes)
if type(endings) == "string" then
endings = {endings}
end
for _, ending in ipairs(endings) do
-- Compute the stem. If ending is "-", use the lemma regardless. Otherwise if `stems` is a string, use it.
-- Otherwise `stems` is an object containing four stems (vowel-vs-non-vowel cross regular-vs-oblique);
-- compute the appropriate stem based on the slot and whether the ending begins with a vowel.
local stem
if ending == "-" then
stem = base.actual_lemma
ending = ""
elseif type(stems) == "string" then
stem = stems
else
local is_vowel_ending = rfind(ending, "^" .. com.vowel_c)
if stems.oblique_slots == "all" or
(stems.oblique_slots == "gen_p" or stems.oblique_slots == "all-oblique") and slot == "gen_p" or
stems.oblique_slots == "all-oblique" and (slot == "ins_s" or slot == "dat_p" or slot == "loc_p" or slot == "ins_p") then
if is_vowel_ending then
stem = stems.oblique_vowel_stem
else
stem = stems.oblique_nonvowel_stem
end
elseif is_vowel_ending then
stem = stems.vowel_stem
else
stem = stems.nonvowel_stem
end
end
-- Maybe apply the first or second Slavic palatalization.
stem, ending = apply_special_cases(base, slot, stem, ending)
ending = iut.combine_form_and_footnotes(ending, footnotes)
local function combine_stem_ending(stem, ending)
return com.combine_stem_ending(base, slot, stem, ending)
end
iut.add_forms(base.forms, slot, stem, ending, combine_stem_ending)
end
end
local function process_slot_overrides(base, do_slot)
for slot, overrides in pairs(base.overrides) do
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
error("Override specified for invalid slot '" .. slot .. "' due to '" .. base.number .. "' number restriction")
end
if do_slot(slot) then
base.slot_overridden[slot] = true
base.forms[slot] = nil
for _, override in ipairs(overrides) do
for _, value in ipairs(override.values) do
local form = value.form
local combined_notes = iut.combine_footnotes(base.footnotes, value.footnotes)
if override.full then
if form ~= "" then
iut.insert_form(base.forms, slot, {form = form, footnotes = combined_notes})
end
else
-- Convert a null ending to "-" in the acc/voc sg slots so that e.g. [[Kerberos]] declared as
-- <m.sg.foreign.gena:u.acc-:a> works correctly and generates accusative 'Kerberos/Kerbera' not
-- #'Kerber/Kerbera'.
if (slot == "acc_s" or slot == "voc_s") and form == "" then
form = "-"
end
for _, stems in ipairs(base.stem_sets) do
add(base, slot, stems, form, combined_notes)
end
end
end
end
end
end
end
local function add_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nom_d, gen_d, dat_d,
nom_p, gen_p, dat_p, acc_p, loc_p, ins_p, nom_s, footnotes
)
add(base, "nom_s", stems, "-", footnotes)
add(base, "gen_s", stems, gen_s, footnotes)
add(base, "dat_s", stems, dat_s, footnotes)
add(base, "acc_s", stems, acc_s, footnotes)
add(base, "voc_s", stems, voc_s, footnotes)
add(base, "loc_s", stems, loc_s, footnotes)
add(base, "ins_s", stems, ins_s, footnotes)
add(base, "nom_d", stems, nom_d, footnotes)
add(base, "gen_d", stems, gen_d, footnotes)
add(base, "dat_d", stems, dat_d, footnotes)
if base.number == "pl" then
-- If this is a plurale tantum noun and we're processing the nominative plural, use the user-specified lemma
-- rather than generating the plural from the synthesized singular, which may not match the specified lemma
-- (e.g. [[tvargle]] "Olomouc cheese" using <m.pl.mixed> would try to generate 'tvargle/tvargly', and [[peníze]]
-- "money" using <m.pl.#ě.genpl-> would try to generate 'peněze').
local acc_p_like_nom = m_table.deepEquals(nom_p, acc_p)
nom_p = "-"
if acc_p_like_nom then
acc_p = "-"
end
end
add(base, "nom_p", stems, nom_p, footnotes)
add(base, "gen_p", stems, gen_p, footnotes)
add(base, "dat_p", stems, dat_p, footnotes)
add(base, "acc_p", stems, acc_p, footnotes)
add(base, "loc_p", stems, loc_p, footnotes)
add(base, "ins_p", stems, ins_p, footnotes)
add(base, "nom_s", stems, nom_s, footnotes)
end
local function add_sg_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s, footnotes
)
add_decl(base, stems, gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nil, nil, nil,
nil, nil, nil, nil, nil, nil, footnotes)
end
local function add_du_only_decl(base, stems,
gen_d, dat_d, footnotes
)
add_decl(base, stems, nil, nil, nil, nil, nil, nil,
"-", gen_d, dat_d,
nil, nil, nil, nil, nil, nil, footnotes)
end
local function add_pl_only_decl(base, stems,
gen_p, dat_p, acc_p, loc_p, ins_p, footnotes
)
add_decl(base, stems, nil, nil, nil, nil, nil, nil,
nil, nil, nil,
"-", gen_p, dat_p, acc_p, loc_p, ins_p, footnotes)
end
local function handle_derived_slots_and_overrides(base)
local function is_non_derived_slot(slot)
return slot ~= "voc_p" and slot ~= "acc_s" and slot ~= "clitic_acc_s"
end
local function is_derived_slot(slot)
return not is_non_derived_slot(slot)
end
base.slot_overridden = {}
-- Handle overrides for the non-derived slots. Do this before generating the derived
-- slots so overrides of the source slots (e.g. nom_p) propagate to the derived slots.
process_slot_overrides(base, is_non_derived_slot)
-- Generate the remaining slots that are derived from other slots.
if not base.pron and not base.det then
-- Pronouns don't have a vocative (singular or plural).
iut.insert_forms(base.forms, "voc_p", base.forms.nom_p)
end
if not base.forms.acc_s and not base.slot_overridden.acc_s then
iut.insert_forms(base.forms, "acc_s", base.forms[base.animacy == "inan" and "nom_s" or base.animacy == "pr" and "gen_s"])
end
if not base.forms.clitic_acc_s and not base.slot_overridden.clitic_acc_s then
iut.insert_forms(base.forms, "clitic_acc_s", base.forms[base.animacy == "inan" and "nom_s" or "clitic_gen_s"])
end
-- Handle overrides for derived slots, to allow them to be overridden.
process_slot_overrides(base, is_derived_slot)
-- Compute linked versions of potential lemma slots, for use in {{zlw-ocs-noun}}.
-- We substitute the original lemma (before removing links) for forms that
-- are the same as the lemma, if the original lemma has links.
for _, slot in ipairs(potential_lemma_slots) do
iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form)
if form == base.orig_lemma_no_links and rfind(base.orig_lemma, "%[%[") then
return base.orig_lemma
else
return form
end
end))
end
end
-- Table mapping declension types to functions to decline the noun. The function takes two arguments, `base` and
-- `stems`; the latter specifies the computed stems (vowel vs. non-vowel, singular vs. plural) and whether the noun
-- is reducible and/or has vowel alternations in the stem. Most of the specifics of determining which stem to use
-- and how to modify it for the given ending are handled in add_decl(); the declension functions just need to generate
-- the appropriate endings.
local decls = {}
-- Table specifying additional properties for declension types. Every declension type must have such a table, which
-- specifies which category or categories to add and what annotation to show in the title bar of the declension table.
--
-- * Only the `cat` property of this table is mandatory; there is also a `desc` property to specify the annotation, but
-- this can be omitted and the annotation will then be computed from the `cat` property. The `cat` property is either
-- a string, a list of strings or a function (of two arguments, `base` and `stems` as above) returning a string or
-- list of strings. The string can contain the keywords GENDER to substitute the gender (and animacy for masculine
-- nouns) and POS (to substitute the pluralized part of speech). The keyword GENPOS is equivalent to 'GENDER POS'. If
-- no keyword is present, ' GENPOS' is added onto the end. If only GENDER is present, ' POS' is added onto the end.
-- In all cases, the language name is added onto the beginning to form the full category name.
-- * The `desc` property is of the same form as the `cat` property and specifies the annotation to display in the title
-- bar (which may have the same format as the category minus the part of speech, or may be abbreviated). The value
-- may not be a list of strings, as only one annotation is displayed. If omitted, it is derived from the category
-- spec(s) by taking the last category (if more than one is given) and removing ' POS' before keyword substitution.
local declprops = {}
decls["hard-m"] = function(base, stems)
base.palatalize_voc = not rfind(stems.vowel_stem, "c$")
local gen_s = base.animacy == "pr" and "a" or {"a", "u"}
local dat_s = base.animacy == "inan" and {"u"} or {"u", "ovi"}
local loc_s = base.animacy == "inan" and rfind(base.lemma, "l$") and {"e", "u"} or base.animacy == "inan" and {"ě", "u"} or base.animacy == "anml" and rfind(base.lemma, "l$") and {"e", "u", "ovi"} or base.animacy == "anml" and {"ě", "u", "ovi"} or {"u", "ovi"}
local voc_s = velar and {"e", "u"} or "e"
local loc_p = rfind(base.lemma, "l$") and "éch" or "iech"
local acc_s = base.animacy == "anml" and {"", "a"}
add_decl(base, stems, gen_s, dat_s, acc_s, voc_s, loc_s, "em",
"y", "ú", "oma",
{"i", "ové"}, "óv", "óm", "y", loc_p, "y")
end
declprops["hard-m"] = {
desc = function(base, stems)
return "hard o-stem"
end,
cat = function(base, stems)
return "hard masculine o-stem"
end
}
decls["soft-m"] = function(base, stems)
if rfind(base.lemma, "l$") then
local dat_s = base.animacy == "inan" and "u" or {"u", "ovi"}
local loc_s = base.animacy == "inan" and {"i", "u"} or base.animacy == "anml" and {"i", "u", "ovi"} or {"u", "ovi"}
local nom_p = rfind(base.lemma, "tel") and {"é", "i"} or {"i"}
local gen_p = rfind(base.lemma, "tel") and "" or nil
local acc_s = base.animacy == "anml" and {"", "e"}
add_decl(base, stems, "e", {}, acc_s, {}, {}, "em",
"e", {}, {},
nom_p, gen_p, {}, "e", "ích", "i")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, dat_s, nil, "u", loc_s, nil,
nil, "ú", "oma",
"ové", "óv", "óm"
)
elseif rfind(base.lemma, "[bpfvm]$") then
local dat_s = base.animacy == "inan" and "u" or {"u", "ovi"}
local loc_s = base.animacy == "inan" and "i" or base.animacy == "anml" and "i"
local loc_s2 = base.animacy == "inan" and "u" or base.animacy == "anml" or {"u", "ovi"}
local acc_s = base.animacy == "anml" and {"", "ě"}
add_decl(base, stems, "ě", {}, acc_s, {}, loc_s, "em",
"ě", {}, {},
nom_p, gen_p, {}, "ě", "ích", "i")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, dat_s, nil, "u", loc_s2, nil,
nil, "ú", "oma",
"ové", "óv", "óm"
)
elseif rfind(base.lemma, "z$") then
local dat_s = base.animacy == "inan" and "u" or {"u", "ovi"}
local loc_s = base.animacy == "inan" and {"i", "u"} or {"u", "ovi"}
add_decl(base, stems, "ě", dat_s, nil, {}, loc_s, "em",
"ě", "ú", "oma",
{"i", "ové"}, "óv", "óm", "ě", "ích", "i")
add_decl(base, com.apply_first_palatalization(stem, "is soft"), {}, {}, {}, "e")
else
base.palatalize_voc = true
local dat_s = base.animacy == "inan" and "u" or {"u", "ovi"}
local loc_s = base.animacy == "inan" and {"i", "u"} or base.animacy == "anml" and {"i", "u", "ovi"} or {"u", "ovi"}
local voc_s = base.animacy == "pr" and rfind(base.lemma, "ec$") and stems.reducible and "e" or base.animacy == "pr" and rfind(base.lemma, "z$") and "e" or "u"
local nom_p = rfind(base.lemma, "ař") and {"é", "ové"} or {"i", "ové"}
local acc_s = base.animacy == "anml" and {"", "ě"}
add_decl(base, stems, "ě", dat_s, acc_s, voc_s, loc_s, "em",
"ě", "ú", "oma",
nom_p, "óv", "óm", "ě", "ích", "i")
end
end
declprops["soft-m"] = {
desc = function(base, stems)
return "soft o-stem"
end,
cat = function(base, stems)
return "soft masculine o-stem"
end
}
decls["ěnín-m"] = function(base, stems)
local loc_p = base.animacy == "inan" and {"ěniech", "ás"} or "ěniech"
add_decl(base, stems, "ěnína", {"ěnínu", "ěnínovi"}, "ěnína", "ěníne", {"ěnínu", "ěnínovi"}, "ěnínem",
"ěníny", "ěnínú", "ěnínoma",
{"ěné", "anové"}, {"an", "anóv"}, "anóm", "any", loc_p, "any")
end
declprops["ěnín-m"] = {
desc = function(base, stems)
return "hard o-stem"
end,
cat = function(base, stems)
return "hard masculine o-stem"
end
}
decls["enín-m"] = function(base, stems)
local loc_p = base.animacy == "inan" and {"eniech", "ás"} or "eniech"
add_decl(base, stems, "enína", {"enínu", "enínovi"}, "enína", "eníne", {"enínu", "enínovi"}, "enínem",
"eníny", "enínú", "enínoma",
{"ené", "anové"}, {"an", "anóv"}, "anóm", "any", loc_p, "any")
end
declprops["enín-m"] = {
desc = function(base, stems)
return "hard o-stem"
end,
cat = function(base, stems)
return "hard masculine o-stem"
end
}
decls["u-m"] = function(base, stems)
base.palatalize_voc = true
local gen_s = base.animacy == "inan" and "u" or base.animacy == "anml" and {"u", "a"} or "u"
local acc_s = base.animacy == "inan" and "-" or base.animacy == "anml" and {"-", "a"} or "a"
local loc_p = rfind(base.lemma, "l$") and "éch" or "iech"
add_decl(base, stems, gen_s, {"ovi", "u"}, acc_s, "e", "u", "em",
"y", "ú", "oma",
{"ové", "i"}, "óv", "óm", "y", loc_p, "y")
end
declprops["u-m"] = {
desc = function(base, stems)
return "u-stem"
end,
cat = function(base, stems)
return "u-stem"
end
}
decls["a-m"] = function(base, stems)
local it_ist = rfind(stems.vowel_stem, "is?t$") or rfind(stems.vowel_stem, "ast$")
add_decl(base, stems, "y", "ě", "u", "o", "ě", "ú",
"ě", "ú", "ama",
"y", "", "ám", "y", "ách", "ami")
end
declprops["a-m"] = {
desc = function(base, stems)
return "hard a-stem"
end,
cat = function(base, stems)
return "hard masculine a-stem"
end
}
decls["ě-m"] = function(base, stems)
add_decl(base, stems, "ě", "i", {}, {}, "i", {},
"i", {}, "ěma",
"ě", "í", "iem", "ě", "iech", "ěmi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", "e", nil, "ú", nil, "ú")
end
declprops["ě-m"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft masculine a-stem"
end
}
decls["e-m"] = function(base, stems)
add_decl(base, stems, "e", "i", {}, {}, "i", {},
"i", {}, "ema",
"e", "í", "ém", "e", "éch", "emi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", "e", nil, "ú", nil, "ú")
end
declprops["e-m"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft masculine a-stem"
end
}
decls["ijo-m"] = function(base, stems)
if rfind(base.lemma, "lí$") then
local acc_s = base.animacy == "inan" and "í" or {"é", "í"}
add_decl(base, stems, "é", {}, acc_s, {}, "í", "ím",
"é", {}, "íma",
"í", "í", "ím", "é", "ích", "ími")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "ú", nil, "ú", nil, nil, nil, "ú")
else
local acc_s = base.animacy == "inan" and "í" or {"ie", "í"}
add_decl(base, stems, "ie", {}, acc_s, {}, "í", "ím",
"ie", {}, "íma",
"í", "í", "ím", "ie", "ích", "ími")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "ú", nil, "ú", nil, nil, nil, "ú")
end
end
declprops["ijo-m"] = {
desc = function(base, stems)
return "soft o-stem"
end,
cat = function(base, stems)
return "soft masculine o-stem"
end
}
decls["ija-m"] = function(base, stems)
if rfind(base.lemma, "l[íé]") then
add_decl(base, stems, "é", "í", {}, "í", "í", "ím",
"í", {}, "éma",
"é", "í", "ém", "é", "éch", "iemi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "ú", nil, nil, nil, nil, "ú")
else
add_decl(base, stems, "ie", "í", {}, "í", "í", "ím",
"í", {}, "iema",
"ie", "í", "iem", "ie", "iech", "iemi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "ú", nil, nil, nil, nil, "ú")
end
end
declprops["ija-m"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft masculine a-stem"
end
}
decls["istem-m"] = function(base, stems)
acc_s = base.animacy == "inan" and "" or {"", "i"}
add_decl(base, stems, "i", "i", acc_s, "i", "i", "em",
"i", {}, "ma",
"ie", "í", "em", "i", "ech", "mi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, nil, nil, nil, nil, nil, "ú")
end
declprops["istem-m"] = {
desc = function(base, stems)
return "i-stem"
end,
cat = function(base, stems)
return "masculine i-stem"
end
}
decls["n-m"] = function(base, stems)
add_decl(base, stems, "e", "i", "-", "i", "i", "em",
"y", "ú", "oma",
{"i", "ové"}, "óv", "óm", "y", "iech", "y")
end
declprops["n-m"] = {
desc = function(base, stems)
return "n-stem"
end,
cat = function(base, stems)
return "masculine n-stem"
end
}
decls["tstem-m"] = function(base, stems)
add_decl(base, stems, "te", "ti", "et", "te", "ti", "tem",
"ty", "tú", "toma",
{"ti", "tové"}, "tóv", "tóm", "ty", "tiech", "ty")
end
declprops["tstem-m"] = {
desc = function(base, stems)
return "t-stem"
end,
cat = function(base, stems)
return "masculine t-stem"
end
}
decls["hard-f"] = function(base, stems)
base.no_palatalize_c = true
if rfind(base.lemma, "la$") then
add_decl(base, stems, "y", "e", "u", "o", "e", "ú",
"e", "ú", "ama",
"y", "", "ám", "y", "ách", "ami")
else
add_decl(base, stems, "y", "ě", "u", "o", "ě", "ú",
"ě", "ú", "ama",
"y", "", "ám", "y", "ách", "ami")
end
end
declprops["hard-f"] = {
cat = "hard"
}
declprops["hard-f"] = {
desc = function(base, stems)
return "hard a-stem"
end,
cat = function(base, stems)
return "hard feminine a-stem"
end
}
decls["soft-f"] = function(base, stems)
local gen_p = rfind(base.lemma, "icě$") and "" or "í"
add_decl(base, stems, "ě", "i", {}, {}, "i", {},
"i", {}, "ěma",
"ě", gen_p, "iem", "ě", "iech", "ěmi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", nil, nil, "ú", nil, "ú")
add_decl(base, com.onlyndt(stems.oblique_vowel_stem), nil, nil, nil, "e", nil, nil, nil, nil, nil, nil, "")
end
declprops["soft-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["e-f"] = function(base, stems)
add_decl(base, stems, "e", "i", {}, "e", "i", {},
"i", {}, "ema",
"e", {"í", ""}, "ém", "e", "éch", "emi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", nil, nil, "ú", nil, "ú")
end
declprops["e-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["cons-f"] = function(base, stems)
if rfind(base.lemma, "l$") then
add_decl(base, stems, "e", "i", {}, {}, "i", {},
"i", {}, "ema",
"e", "í", "ém", "e", "ích", "emi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", "e", nil, "ú",
nil, "ú")
else
add_decl(base, stems, "ě", "i", "u", "e", "i", "ú",
"i", "ú", "ěma",
"ě", "í", "iem", "ě", "ích", "ěmi")
end
end
declprops["cons-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["v-f"] = function(base, stems)
add_decl(base, stems, "ve", "vi", "ev", "vi", "vi", "v́ú",
"vi", "v́ú", "vema",
"ve", "ví", "vem", "ve", "vech", "vemi")
end
declprops["v-f"] = {
desc = function(base, stems)
return "v-stem"
end,
cat = function(base, stems)
return "v-stem"
end
}
decls["r-f"] = function(base, stems)
if base.lemma == "máti" then
stem = "mat"
end
add_decl(base, stem, "eře", "eři", "eř", "-", "eři", "eřú",
"eři", "eřú", "eřma",
"ery", "er", "erám", "ery", "erách", "erami")
end
declprops["r-f"] = {
desc = function(base, stems)
return "r-stem"
end,
cat = function(base, stems)
return "r-stem"
end
}
decls["istem-f"] = function(base, stems)
local acc_s = rfind(base.lemma, "i$") and "i" or "-"
add_decl(base, stems, "i", "i", acc_s, "i", "i", {},
"i", {}, "ma",
"i", "í", "em", "i", "ech", "mi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, nil, nil, nil, "ú", nil, "ú")
end
declprops["istem-f"] = {
desc = function(base, stems)
return "i-stem"
end,
cat = function(base, stems)
return "feminine i-stem"
end
}
decls["i-f"] = function(base, stems)
add_decl(base, stems, "ě", "i", {}, {}, "i", {},
"i", {}, "ěma",
"ě", {}, "iem", "ě", "iech", "ěmi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "u", "e", nil, "ú", nil, "ú", nil, nil, "")
end
declprops["i-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["í-f"] = function(base, stems)
if rfind(stem, "l$") then
add_decl(base, stems, "é", "í", {}, "í", "í", {},
"í", {}, "éma",
"é", "í", "ém", "é", "éch", "émi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "ú", nil, nil, "ú", nil, "ú")
else
local voc_s = rfind(base.lemma, "ie$") and "ie" or "í"
add_decl(base, stems, "ie", "í", {}, voc_s, "í", {},
"í", {}, "iema",
"ie", "í", "iem", "ie", "iech", "iemi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "ú", nil, nil, "ú", nil, "ú")
end
end
declprops["í-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["é-f"] = function(base, stems)
add_decl(base, stems, "é", "í", {}, "í", "í", {},
"í", {}, "éma",
"é", "í", "ém", "ie", "éch", "émi")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, nil, "ú", nil, nil, "ú", nil, "ú")
end
declprops["é-f"] = {
desc = function(base, stems)
return "soft a-stem"
end,
cat = function(base, stems)
return "soft feminine a-stem"
end
}
decls["hard-n"] = function(base, stems)
if rfind(base.lemma, "lo$") then
add_decl(base, stems, "a", "u", "-", "-", {"e", "u"}, "em",
"e", "ú", "oma",
"a", "", "óm", "a", "éch", "y")
else
add_decl(base, stems, "a", "u", "-", "-", {"ě", "u"}, "em",
"ě", "ú", "oma",
"a", "", "óm", "a", "iech", "y")
end
end
declprops["hard-n"] = {
desc = function(base, stems)
return "hard o-stem"
end,
cat = function(base, stems)
return "hard neuter o-stem"
end
}
decls["soft-n"] = function(base, stems)
local gen_p = rfind(base.vowel_stem, "išč$") and "" or "í"
if rfind(base.lemma, "le$") then
add_decl(base, stems, "e", {}, "-", "-", "i", "em",
"i", {}, {},
"e", "í", {}, "e", "ích", "i")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "u", nil, nil, "u", nil, nil, "ú", "oma", nil, nil, "óm")
else
add_decl(base, stems, "ě", {}, "-", "-", "i", "em",
"i", {}, {},
"ě", gen_p, {}, "ě", "ích", "i")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "u", nil, nil, "u", nil, nil, "ú", "oma", nil, nil, "óm")
end
end
declprops["soft-n"] = {
desc = function(base, stems)
return "soft o-stem"
end,
cat = function(base, stems)
return "soft neuter o-stem"
end
}
decls["ie-n"] = function(base, stems)
add_decl(base, stems, "ie", {}, "ie", "ie", "í", "ím",
"í", {}, "íma",
"ie", "í", "ím", "ie", "ích", "ími")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "ú", nil, nil, "ú", nil, nil, "ú")
end
declprops["ie-n"] = {
desc = function(base, stems)
return "soft o-stem"
end,
cat = function(base, stems)
return "soft neuter o-stem"
end
}
decls["é-n"] = function(base, stems)
add_decl(base, stems, "é", {}, "é", "é", "í", "ím",
"í", {}, "íma",
"é", "í", "ím", "é", "ích", "ími")
add_decl(base, com.convert_paired_plain_to_palatal(stems.oblique_vowel_stem), nil, "ú", nil, nil, "ú", nil, nil, "ú")
end
declprops["é-n"] = {
desc = function(base, stems)
return "soft o-stem"
end,
cat = function(base, stems)
return "soft neuter o-stem"
end
}
decls["n-n"] = function(base, stems)
add_decl(base, stems, "ene", "eni", "-", "-", "eni", "enem",
{"eni", "eně"}, "enú", "enoma",
"ena", "en", "enóm", "ena", "eniech", "eny")
end
declprops["n-n"] = {
desc = function(base, stems)
return "n-stem"
end,
cat = function(base, stems)
return "neuter n-stem"
end
}
decls["tstem-n"] = function(base, stems)
add_decl(base, stems, "ěte", "ěti", "-", "-", "ěti", "ětem",
"ětě", "atú", "atma",
"ata", "at", "atóm", "ata", "ětech", "aty")
end
declprops["tstem-n"] = {
desc = function(base, stems)
return "t-stem"
end,
cat = function(base, stems)
return "neuter t-stem"
end
}
decls["e-tstem-n"] = function(base, stems)
add_decl(base, stems, "ete", "eti", "-", "-", "eti", "etem",
"etě", "atú", "atma",
"ata", "at", "atóm", "ata", "etech", "aty")
end
declprops["e-tstem-n"] = {
desc = function(base, stems)
return "t-stem"
end,
cat = function(base, stems)
return "neuter t-stem"
end
}
decls["adj"] = function(base, stems)
local props = {}
local propspec = table.concat(props, ".")
if propspec ~= "" then
propspec = "<" .. propspec .. ">"
end
local adj_alternant_multiword_spec = require("Module:zlw-ocs-adjective").do_generate_forms({base.lemma .. propspec})
local function copy(from_slot, to_slot)
base.forms[to_slot] = adj_alternant_multiword_spec.forms[from_slot]
end
if base.number ~= "pl" then
if base.gender == "m" then
copy("nom_m", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
elseif base.gender == "f" then
copy("nom_f", "nom_s")
copy("gen_f", "gen_s")
copy("dat_f", "dat_s")
copy("acc_f", "acc_s")
copy("loc_f", "loc_s")
copy("ins_f", "ins_s")
else
copy("nom_n", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("acc_n", "acc_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
end
if not base.forms.voc_s then
iut.insert_forms(base.forms, "voc_s", base.forms.nom_s)
end
end
if base.number ~= "sg" then
if base.gender == "m" then
copy("nom_mp", "nom_p")
copy("acc_mfp", "acc_p")
copy("nom_md", "nom_d")
elseif base.gender == "f" then
copy("nom_fp", "nom_p")
copy("acc_mfp", "acc_p")
copy("nom_fnd", "nom_d")
else
copy("nom_np", "nom_p")
copy("acc_np", "acc_p")
copy("nom_fnd", "nom_d")
end
copy("gen_p", "gen_p")
copy("dat_p", "dat_p")
copy("ins_p", "ins_p")
copy("loc_p", "loc_p")
copy("gen_d", "gen_d")
copy("dat_d", "dat_d")
end
end
local function get_stemtype(base)
if rfind(base.lemma, "ý$") then
return "hard"
elseif rfind(base.lemma, "í$") then
return "soft"
else
return "possessive"
end
end
declprops["adj"] = {
cat = function(base, stems)
return {"adjectival POS", get_stemtype(base) .. " GENDER adjectival POS"}
end,
}
decls["indecl"] = function(base, stems)
-- Indeclinable. Note that fully indeclinable nouns should not have a table at all rather than one all of whose forms
-- are the same; but having an indeclinable declension is useful for nouns that may or may not be indeclinable, e.g.
-- [[desatero]] "group of ten" or the plural of [[peso]], which may be indeclinable 'pesos'.
add_decl(base, stems, "-", "-", "-", "-", "-", "-",
"-", "-", "-", "-", "-", "-")
end
declprops["indecl"] = {
cat = function(base, stems)
if base.adj then
return {"adjectival POS", "indeclinable adjectival POS", "indeclinable GENDER adjectival POS"}
else
return {"indeclinable POS", "indeclinable GENPOS"}
end
end
}
decls["manual"] = function(base, stems)
-- Anything declined manually using overrides. We don't set any declensions except the nom_s (or nom_p if plurale
-- tantum).
add(base, base.number == "pl" and "nom_p" or "nom_s", stems, "-")
end
declprops["manual"] = {
desc = "GENDER",
cat = {},
}
local function set_pron_defaults(base)
if base.gender or base.lemma ~= "ona" and base.number or base.animacy then
error("Can't specify gender, number or animacy for pronouns")
end
local function pron_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
if base.lemma == "kto" then
return "none", "sg", "pr", false
elseif base.lemma == "čso" then
return "none", "sg", "inan", false
else
error(("Unrecognized pronoun '%s'"):format(base.lemma))
end
end
local gender, number, animacy, has_clitic = pron_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_pronoun_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with pronouns")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "pron"
end
decls["pron"] = function(base, stems)
if base.lemma == "kto" then
add_decl(base, stems, "koho", "komu", nil, nil, "kom", "kým")
elseif base.lemma == "čso" then
add_decl(base, stems, {"čeho", "čso"}, "čemu", nil, nil, "čem", "čím")
else
error(("Internal error: Unrecognized pronoun lemma '%s'"):format(base.lemma))
end
end
declprops["pron"] = {
desc = "GENDER pronoun",
cat = {},
}
local function set_num_defaults(base)
if base.gender or base.animacy then
error("Can't specify gender, number or animacy for numeral")
end
local function num_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", base.lemma == "dva" and "du" or base.lemma == "dvě" and "du" or base.lemma == "desát" and "sg" or base.lemma == "jeden" and "sg" or "pl", "none", false
end
local gender, number, animacy, has_clitic = num_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_numeral_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with numerals")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "num"
end
decls["num"] = function(base, stems)
local after_prep_footnote = "[after a preposition]"
if base.lemma == "jeden" then
add_decl(base, "", "jednoho", "jednomu", "-", "-", "jednom", "jedniem")
elseif base.lemma == "dva" or base.lemma == "dvě" then
-- in compound numbers; stem is dv-
add_du_only_decl(base, stems, "ú", "ěma", "-", "ú", "ěma")
elseif base.lemma == "tři" or base.lemma == "čtyři" then
local is_three = base.lemma == "tři"
add_pl_only_decl(base, stems, is_three and "í" or "", "em", "-", "ech", "mi")
elseif base.lemma == "devět" then
add_pl_only_decl(base, "", {"devieti", "devěti"}, {"devieti", "devěti"}, "-", {"devieti", "devěti"}, {"devieti", "devěti"}, stems.footnotes)
elseif base.lemma == "desět" then
add_pl_only_decl(base, "", {"desieti", "desěti"}, {"desieti", "desěti"}, "-", {"desieti", "desěti"}, {"desieti", "desěti"}, stems.footnotes)
elseif base.lemma == "sta" or base.lemma == "stě" or base.lemma == "set" then
add_pl_only_decl(base, "", "set", "stóm", "-", "stech", "sty", stems.footnotes)
elseif rfind(base.lemma, "esát$") then
-- [[patdesát]] [[pětidsát]] [[pěťúdsát]]
local begin = rmatch(base.lemma, "^(.*)esát$")
add_decl(base, begin, "sát", "sát", "-", "sát", "sát", "sát", stems.footnotes)
else
add_pl_only_decl(base, stems, "i", "i", "-", "i", "i")
end
end
declprops["num"] = {
desc = "GENDER numeral",
cat = {},
}
local function set_det_defaults(base)
if base.gender or base.number or base.animacy then
error("Can't specify gender, number or animacy for determiner")
end
local function det_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", "none", "none", false
end
local gender, number, animacy, has_clitic = det_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_determiner_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with determiners")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "det"
end
decls["det"] = function(base, stems)
add_sg_decl(base, stems, "a", "a", "-", nil, "a", "a")
end
declprops["det"] = {
desc = "GENDER determiner",
cat = {},
}
local function fetch_footnotes(separated_group)
local footnotes
for j = 2, #separated_group - 1, 2 do
if separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'")
end
if not footnotes then
footnotes = {}
end
table.insert(footnotes, separated_group[j])
end
return footnotes
end
--[=[
Parse a single override spec (e.g. 'nomplé:ové' or 'ins:autodráhou:autodrahou[rare]') and return
two values: the slot(s) the override applies to, and an object describing the override spec.
The input is actually a list where the footnotes have been separated out; for example,
given the spec 'inspl:čobotami:čobotámi[rare]:čobitmi[archaic]', the input will be a list
{"inspl:čobotami:čobotámi", "[rare]", ":čobitmi", "[archaic]", ""}. The object returned
for 'ins:autodráhou:autodrahou[rare]' looks like this:
{
full = true,
values = {
{
form = "autodráhou"
},
{
form = "autodrahou",
footnotes = {"[rare]"}
}
}
}
The object returned for 'nomplé:ové' looks like this:
{
values = {
{
form = "é",
},
{
form = "ové",
}
}
}
]=]
local function parse_override(segments)
local retval = {values = {}}
local part = segments[1]
local slots = {}
while true do
local case = usub(part, 1, 3)
if cases[case] then
-- ok
else
error(("Unrecognized case '%s' in override: '%s'"):format(case, table.concat(segments)))
end
part = usub(part, 4)
local slot
if rfind(part, "^pl") then
part = usub(part, 3)
slot = case .. "_p"
elseif rfind(part, "^du") then
part = usub(part, 3)
slot = case .. "_d"
else
slot = case .. "_s"
end
table.insert(slots, slot)
if rfind(part, "^%+") then
part = usub(part, 2)
else
break
end
end
if rfind(part, "^:") then
retval.full = true
part = usub(part, 2)
end
segments[1] = part
local colon_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, ":")
for i, colon_separated_group in ipairs(colon_separated_groups) do
local value = {}
local form = colon_separated_group[1]
if form == "" then
error(("Use - to indicate an empty ending for slot%s '%s': '%s'"):format(#slots > 1 and "s" or "", table.concat(slots), table.concat(segments)))
elseif form == "-" then
value.form = ""
else
value.form = form
end
value.footnotes = fetch_footnotes(colon_separated_group)
table.insert(retval.values, value)
end
return slots, retval
end
--[=[
Parse an indicator spec (text consisting of angle brackets and zero or more
dot-separated indicators within them). Return value is an object of the form
{
overrides = {
SLOT = {OVERRIDE, OVERRIDE, ...}, -- as returned by parse_override()
...
},
forms = {}, -- forms for a single spec alternant; see `forms` below
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
stems = { -- may be missing
{
reducible = TRUE_OR_FALSE,
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
-- The following fields are filled in by determine_stems()
vowel_stem = "STEM",
nonvowel_stem = "STEM",
oblique_slots = one of {nil, "gen_p", "all", "all-oblique"},
oblique_vowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
oblique_nonvowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
},
...
},
gender = "GENDER", -- "m", "f", "n"
number = "NUMBER", -- "sg", "pl"; may be missing
animacy = "ANIMACY", -- "inan", "an"; may be missing
hard = true, -- may be missing
soft = true, -- may be missing
mixed = true, -- may be missing
surname = true, -- may be missing
istem = true, -- may be missing
["-istem"] = true, -- may be missing
tstem = true, -- may be missing
nstem = true, -- may be missing
tech = true, -- may be missing
foreign = true, -- may be missing
mostlyindecl = true, -- may be missing
indecl = true, -- may be missing
manual = true, -- may be missing
adj = true, -- may be missing
decllemma = "DECLENSION-LEMMA", -- may be missing
declgender = "DECLENSION-GENDER", -- may be missing
declnumber = "DECLENSION-NUMBER", -- may be missing
-- The following additional fields are added by other functions:
orig_lemma = "ORIGINAL-LEMMA", -- as given by the user
orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed
lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural and lowercase if all-uppercase
forms = {
SLOT = {
{
form = "FORM",
footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing
},
...
},
...
},
decl = "DECL", -- declension, e.g. "hard-m"
vowel_stem = "VOWEL-STEM", -- derived from vowel-ending lemmas
nonvowel_stem = "NONVOWEL-STEM", -- derived from non-vowel-ending lemmas
}
]=]
local function parse_indicator_spec(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local base = {overrides = {}, forms = {}}
if inside ~= "" then
local segments = put.parse_balanced_segment_run(inside, "[", "]")
local dot_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, "%.")
for i, dot_separated_group in ipairs(dot_separated_groups) do
local part = dot_separated_group[1]
local case_prefix = usub(part, 1, 3)
if cases[case_prefix] then
local slots, override = parse_override(dot_separated_group)
for _, slot in ipairs(slots) do
if base.overrides[slot] then
error(("Two overrides specified for slot '%s'"):format(slot))
else
base.overrides[slot] = {override}
end
end
elseif part == "" then
if #dot_separated_group == 1 then
error("Blank indicator: '" .. inside .. "'")
end
base.footnotes = fetch_footnotes(dot_separated_group)
elseif rfind(part, "^[-*#ě]*$") or rfind(part, "^[-*#ě]*,") then
if base.stem_sets then
error("Can't specify reducible/vowel-alternant indicator twice: '" .. inside .. "'")
end
local comma_separated_groups = put.split_alternating_runs_and_strip_spaces(dot_separated_group, ",")
local stem_sets = {}
for i, comma_separated_group in ipairs(comma_separated_groups) do
local pattern = comma_separated_group[1]
local orig_pattern = pattern
local reducible, vowelalt, oblique_slots
if pattern == "-" then
-- default reducible, no vowel alt
else
local before, after
before, reducible, after = rmatch(pattern, "^(.-)(%-?%*)(.-)$")
if before then
pattern = before .. after
reducible = reducible == "*"
end
if pattern ~= "" then
if not rfind(pattern, "^##?ě?$") then
error("Unrecognized vowel-alternation pattern '" .. pattern .. "', should be one of #, ##, #ě or ##ě: '" .. inside .. "'")
end
if pattern == "#ě" or pattern == "##ě" then
vowelalt = "quant-ě"
else
vowelalt = "quant"
end
-- `oblique_slots` will be later changed to "all" if the lemma ends in a consonant.
if pattern == "##" or pattern == "##ě" then
oblique_slots = "all-oblique"
else
oblique_slots = "gen_p"
end
end
end
table.insert(stem_sets, {
reducible = reducible,
vowelalt = vowelalt,
oblique_slots = oblique_slots,
footnotes = fetch_footnotes(comma_separated_group)
})
end
base.stem_sets = stem_sets
elseif #dot_separated_group > 1 then
error("Footnotes only allowed with slot overrides, reducible or vowel alternation specs or by themselves: '" .. table.concat(dot_separated_group) .. "'")
elseif part == "m" or part == "f" or part == "n" then
if base.gender then
error("Can't specify gender twice: '" .. inside .. "'")
end
base.gender = part
elseif part == "sg" or part == "du" or part == "pl" then
if base.number then
error("Can't specify number twice: '" .. inside .. "'")
end
base.number = part
elseif part == "pr" or part == "anml" or part == "inan" then
if base.animacy then
error("Can't specify animacy twice: '" .. inside .. "'")
end
base.animacy = part
elseif part == "hard" or part == "soft" or part == "mixed" or part == "ija" or part == "ustem" or part == "vstem" or part == "rstem" or part == "istem" or
part == "-istem" or part == "tstem" or part == "nstem" or part == "tech" or part == "foreign" or
part == "indecl" or part == "pron" or part == "det" or part == "num" or
part == "collapse_ee" or part == "persname" or part == "c_as_k" then
if base[part] then
error("Can't specify '" .. part .. "' twice: '" .. inside .. "'")
end
base[part] = true
elseif part == "+" then
if base.adj then
error("Can't specify '+' twice: '" .. inside .. "'")
end
base.adj = true
elseif part == "!" then
if base.manual then
error("Can't specify '!' twice: '" .. inside .. "'")
end
base.manual = true
elseif rfind(part, "^mixedistem:") then
if base.mixedistem then
error("Can't specify 'mixedistem:' twice: '" .. inside .. "'")
end
base.mixedistem = rsub(part, "^mixedistem:", "")
elseif rfind(part, "^decllemma:") then
if base.decllemma then
error("Can't specify 'decllemma:' twice: '" .. inside .. "'")
end
base.decllemma = rsub(part, "^decllemma:", "")
elseif rfind(part, "^declgender:") then
if base.declgender then
error("Can't specify 'declgender:' twice: '" .. inside .. "'")
end
base.declgender = rsub(part, "^declgender:", "")
elseif rfind(part, "^declnumber:") then
if base.declnumber then
error("Can't specify 'declnumber:' twice: '" .. inside .. "'")
end
base.declnumber = rsub(part, "^declnumber:", "")
else
error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'")
end
end
end
return base
end
local function is_regular_noun(base)
return not base.adj and not base.pron and not base.det and not base.num
end
local function process_declnumber(base)
base.actual_number = base.number
if base.declnumber then
if base.declnumber == "sg" or base.declnumber == "du" or base.declnumber == "pl" then
base.number = base.declnumber
else
error(("Unrecognized value '%s' for 'declnumber', should be 'sg' or 'pl'"):format(base.declnumber))
end
end
end
local function set_defaults_and_check_bad_indicators(base)
-- Set default values.
local regular_noun = is_regular_noun(base)
if base.pron then
set_pron_defaults(base)
elseif base.det then
set_det_defaults(base)
elseif base.num then
set_num_defaults(base)
elseif not base.adj then
if not base.gender then
if base.manual then
base.gender = "none"
else
error("For nouns, gender must be specified")
end
end
base.number = base.number or "allthree"
process_declnumber(base)
base.animacy = base.animacy or "inan"
base.actual_gender = base.gender
base.actual_animacy = base.animacy
if base.declgender then
if base.declgender == "m-pr" then
base.gender = "m"
base.animacy = "pr"
elseif base.declgender == "m-anml" then
base.gender = "m"
base.animacy = "anml"
elseif base.declgender == "m-in" then
base.gender = "m"
base.animacy = "inan"
elseif base.declgender == "f" or base.declgender == "n" then
base.gender = base.declgender
else
error(("Unrecognized value '%s' for 'declgender', should be 'm-an', 'm-in', 'f' or 'n'"):format(base.declgender))
end
end
end
-- Check for bad indicator combinations.
if (base.hard and 1 or 0) + (base.soft and 1 or 0) + (base.mixed and 1 or 0) > 1 then
error("At most one of 'hard', 'soft' and 'mixed' can be specified")
end
if base.istem and base["-istem"] then
error("'istem' and '-istem' cannot be specified together")
end
if (base.istem or base["-istem"]) then
if not regular_noun then
error("'istem' and '-istem' can only be specified with regular nouns")
end
end
if base.declgender and not regular_noun then
error("'declgender' can only be specified with regular nouns")
end
end
local function set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
local is_multiword = #alternant_multiword_spec.alternant_or_word_specs > 1
iut.map_word_specs(alternant_multiword_spec, function(base)
set_defaults_and_check_bad_indicators(base)
base.multiword = is_multiword -- FIXME: not currently used; consider deleting
alternant_multiword_spec.has_clitic = alternant_multiword_spec.has_clitic or base.has_clitic
if base.pron then
alternant_multiword_spec.saw_pron = true
else
alternant_multiword_spec.saw_non_pron = true
end
if base.det then
alternant_multiword_spec.saw_det = true
else
alternant_multiword_spec.saw_non_det = true
end
if base.num then
alternant_multiword_spec.saw_num = true
else
alternant_multiword_spec.saw_non_num = true
end
end)
end
local function undo_second_palatalization(base, word, is_adjective)
local function try(from, to)
local stem = rmatch(word, "^(.*)" .. from .. "$")
if stem then
return stem .. to
end
return nil
end
return is_adjective and try("št", "sk") or
is_adjective and try("čt", "ck") or
try("c", "k") or -- FIXME, this could be wrong and c correct
try("ř", "r") or
try("z", "h") or -- FIXME, this could be wrong and z or g correct
try("š", "ch") or
word
end
-- For a plural-only lemma, synthesize a likely singular lemma. It doesn't have to be
-- theoretically correct as long as it generates all the correct plural forms.
local function synthesize_singular_lemma(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
local lemma_determined
-- Loop over all stem sets in case the user specified multiple ones (e.g. '*,-*'). If we try to reconstruct
-- different lemmas for different stem sets, we'll throw an error below.
for _, stems in ipairs(base.stem_sets) do
local stem, lemma
while true do
if base.indecl then
-- If specified as indeclinable, leave it alone; e.g. 'pesos' indeclinable plural of [[peso]].
lemma = base.lemma
break
elseif base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
if base.soft then
-- [[Blíženci]] "Gemini"
-- Since the nominative singular has no ending.
lemma = com.convert_paired_plain_to_palatal(stem, ending)
else
lemma = undo_second_palatalization(base, stem)
end
else
stem = rmatch(base.lemma, "^(.*)ové$") or rmatch(base.lemma, "^(.*)[éyě]$") or rmatch(base.lemma, "^(.*)ie$")
if stem then
-- [[manželé]] "married couple", [[Velšané]] "Welsh people"
lemma = stem
else
error(("Masculine plural-only lemma '%s' should end in -i, -ové or -é"):format(base.lemma))
end
end
if stems.reducible == nil then
if rfind(lemma, com.cons_c .. "[ck]$") and not com.is_monosyllabic(base.lemma) then
stems.reducible = true
end
if stems.reducible then
lemma = dereduce(base, lemma)
end
end
break
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)y$")
if stem then
lemma = stem .. "a"
break
end
stem = rmatch(base.lemma, "^(.*)[eě]$")
if stem then
lemma = base.lemma
break
end
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
-- i-stems.
lemma = stem
base.istem = true
break
end
error(("Feminine plural-only lemma '%s' should end in -y, -ě, -e or -i"):format(base.lemma))
elseif base.gender == "n" then
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
lemma = stem .. "o"
break
end
stem = rmatch(base.lemma, "^(.*)[eěí]$")
if stem then
-- singular lemma also in -e, -ě or -í; e.g. [[věčná loviště]] "[[happy hunting ground]]"
lemma = base.lemma
break
end
error(("Neuter plural-only lemma '%s' should end in -a, -í, -ě or -e"):format(base.lemma))
else
error(("Internal error: Unrecognized gender '%s'"):format(base.gender))
end
end
if lemma_determined and lemma_determined ~= lemma then
error(("Attempt to set two different singular lemmas '%s' and '%s'"):format(lemma_determined, lemma))
end
lemma_determined = lemma
end
base.lemma = lemma_determined
end
-- For an adjectival lemma, synthesize the masc singular form.
local function synthesize_adj_lemma(base)
local stem
if base.indecl then
base.decl = "indecl"
stem = base.lemma
else
local gender, number
local function sub_ov(stem)
stem = stem:gsub("ov$", "óv")
return stem
end
while true do
if base.number == "pl" then
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
if base.soft then
-- nothing to do
else
if base.animacy ~= "pr" then
error(("Masculine plural-only adjectival lemma '%s' ending in -í can only be animate unless '.soft' is specified"):
format(base.lemma))
end
base.lemma = undo_second_palatalization(base, stem, "is adjective") .. "ý"
end
break
end
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
if base.animacy == "pr" then
error(("Masculine plural-only adjectival lemma '%s' ending in -é must be inanimate"):
format(base.lemma))
end
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*ov)i$") or rmatch(base.lemma, "^(.*in)i$")
if stem then
if base.animacy ~= "pr" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -i must be animate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$")
if stem then
if base.animacy == "pr" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -y must be inanimate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
if base.animacy == "pr" then
error(("Animate masculine plural-only adjectival lemma '%s' should end in -í, -ovi or -ini"):
format(base.lemma))
elseif base.soft then
error(("Soft masculine plural-only adjectival lemma '%s' should end in -í"):format(base.lemma))
else
error(("Inanimate masculine plural-only adjectival lemma '%s' should end in -é, -ovy or -iny"):
format(base.lemma))
end
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)é$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine plural-only adjectival lemma '%s' should end in -é, -í, -ovy or -iny"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)á$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter plural-only adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
end
else
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)[ýí]$") or rmatch(base.lemma, "^(.*)óv$") or rmatch(base.lemma, "^(.*)in$")
if stem then
break
end
error(("Masculine adjectival lemma '%s' should end in -ý, -í, -óv or -in"):format(base.lemma))
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)á$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)ie$")
if stem then
base.lemma = stem .. "í"
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)ie$")
if stem then
base.lemma = stem .. "í"
break
end
stem = rmatch(base.lemma, "^(.*ov)o$") or rmatch(base.lemma, "^(.*in)o$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter adjectival lemma '%s' should end in -é, -í, -ovo or -ino"):format(base.lemma))
end
end
end
base.decl = "adj"
end
-- Now set the stem sets if not given.
-- Now set the stem sets if not given.
if not base.stem_sets then
base.stem_sets = {{reducible = false}}
end
for _, stems in ipairs(base.stem_sets) do
-- Set the stems.
stems.vowel_stem = stem
stems.nonvowel_stem = stem
end
end
-- Determine the declension based on the lemma, gender and number. The declension is set in base.decl. In the process,
-- we set either base.vowel_stem (if the lemma ends in a vowel) or base.nonvowel_stem (if the lemma does not end in a
-- vowel), which is used by determine_stems(). In some cases (specifically with certain foreign nouns), we set
-- base.lemma to a new value; this is as if the user specified 'decllemma:'.
local function determine_declension(base)
if base.indecl then
base.decl = "indecl"
base.nonvowel_stem = base.lemma
return
end
-- Determine declension
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
if base.gender == "m" then
if base.animacy ~= "pr" then
error("Masculine lemma in -a must be animate")
end
base.decl = "a-m"
elseif base.gender == "f" then
base.decl = "hard-f"
elseif base.gender == "n" then
if rfind(stem, "m$") then
base.decl = "ma-n"
else
error("Lemma ending in -a and neuter must end in -ma")
end
end
base.vowel_stem = stem
return
end
local ending
stem, ending = rmatch(base.lemma, "^(.*)ěnín$")
if stem then
if base.gender == "m" then
base.decl = "ěnín-m"
end
base.vowel_stem = stem
return
end
stem, ending = rmatch(base.lemma, "^(.*)enín$")
if stem then
if base.gender == "m" then
base.decl = "enín-m"
end
base.vowel_stem = stem
return
end
stem, ending = rmatch(base.lemma, "^(.*)ie$")
if stem then
if base.gender == "m" then
base.decl = "ija-m"
elseif base.gender == "f" then
base.decl = "í-f"
elseif base.gender == "n" then
base.decl = "ie-n"
end
base.vowel_stem = stem
return
end
stem, ending = rmatch(base.lemma, "^(.*)e$")
if stem then
if base.gender == "m" then
if rfind(stem, "i") then
base.decl = "ie-m"
return
else
base.decl = "e-m"
end
elseif base.gender == "f" then
base.decl = "e-f"
else
if base.tstem then
base.decl = "e-tstem-n"
else
base.decl = "soft-n"
end
end
base.vowel_stem = stem
return
end
stem, ending = rmatch(base.lemma, "^(.*)ě$")
if stem then
if base.gender == "m" then
base.decl = "ě-m"
elseif base.gender == "f" then
base.decl = "soft-f"
else
if base.nstem then
base.decl = "n-n"
else
stem = com.onlyndt(stem)
base.decl = "tstem-n"
end
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*)o$")
if stem then
base.decl = "hard-n"
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*[iy])$")
if stem then
if base.gender == "m" then
base.decl = "i-m"
elseif base.gender == "f" then
if base.istem then
base.decl = "istem-f"
elseif base.rstem then
base.decl = "r-f"
else
base.decl = "i-f"
end
if stem:find("i$") then
stem = stem:gsub("i$", "")
else
error("Feminine nouns in -y are either soft or indeclinable; use '.soft' or '.indecl' as needed")
end
else
error("Neuter nouns in -i are indeclinable; use '.indecl' if needed")
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
if base.gender == "m" then
if base.ija then
base.decl = "ija-m"
else
base.decl = "ijo-m"
end
elseif base.gender == "f" then
base.decl = "í-f"
else
base.decl = "í-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
if base.gender == "m" then
base.decl = "é-m"
elseif base.gender == "f" then
base.decl = "é-f"
else
base.decl = "é-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
if base.gender == "m" then
if base.tstem then
stem = rmatch(base.lemma, "^(.*)et$")
base.decl = "tstem-m"
elseif base.ustem then
base.decl = "u-m"
elseif base.nstem then
base.decl = "n-m"
elseif base.hard then
base.decl = "hard-m"
elseif base.soft then
base.decl = "soft-m"
elseif rfind(base.lemma, com.inherently_soft_c .. "$") or rfind(base.lemma, "tel$") then
base.decl = "soft-m"
elseif base.istem then
base.decl = "istem-m"
else
base.decl = "hard-m"
end
elseif base.gender == "f" then
if base.soft then
base.decl = "cons-f"
elseif base.vstem or rfind(base.lemma, "ev$") then
base.decl = "v-f"
stem = rmatch(stem, "(.*)ev$")
else
base.decl = "istem-f"
end
elseif base.gender == "n" then
if base.foreign then
stem = rmatch(base.lemma, "^(.*)um$") or rmatch(base.lemma, "^(.*)on$")
if not stem then
error("Unrecognized neuter foreign ending, should be -um or -on")
end
base.decl = "hard-n"
-- set the lemma here as if decllemma: were given
base.lemma = stem .. "o"
base.vowel_stem = stem
return
else
error("Neuter nouns ending in a consonant should use '.foreign' or '.decllemma:...'")
end
end
base.nonvowel_stem = stem
return
end
error("Unrecognized ending for lemma: '" .. base.lemma .. "'")
end
-- Determine the default value for the 'reducible' flag.
local function determine_default_reducible(base)
-- Nouns in vowels other than -a/o as well as masculine nouns ending in all vowels don't have null endings so not
-- reducible. Note, we are never called on adjectival nouns.
if rfind(base.lemma, "[iyuíeě]$") or base.gender == "m" and rfind(base.lemma, "[ao]$") or base.tstem then
base.default_reducible = false
return
end
local stem
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
-- When analyzing existing manual declensions in -ec and -ek, 290 were reducible vs. 23 non-reducible. Of these
-- 23, 15 were monosyllabic (and none of the 290 reducible nouns were monosyllabic) -- and two of these were
-- actually reducible but irregularly: [[švec]] "shoemaker" (gen sg 'ševce') and [[žnec]] "reaper (person)"
-- (gen sg. 'žence'). Of the remaining 8 multisyllabic non-reducible words, two were actually reducible but
-- irregularly: [[stařec]] "old man" (gen sg 'starce') and [[tkadlec]] "weaver" (gen sg 'tkalce'). The remaining
-- six consisted of 5 compounds of monosyllabic words: [[dotek]], [[oblek]], [[kramflek]], [[pucflek]],
-- [[pokec]], plus [[česnek]], which should be reducible but would lead to an impossible consonant cluster.
if base.gender == "m" and rfind(stem, "e[ck]$") and not com.is_monosyllabic(stem) then
base.default_reducible = true
elseif base.gender == "f" and rfind(stem, "eň$") then
-- [[pochodeň]] "torch", [[píseň]] "leather", [[žeň]] "harvest"; not [[reveň]] "rhubarb" or [[dřeň]] "pulp",
-- which need an override.
base.default_reducible = true
else
base.default_reducible = false
end
return
end
if base.number == "sg" then
base.default_reducible = false
return
end
if rfind(base.lemma, "isko$") then
-- e.g. [[středisko]]
base.default_reducible = "mixed"
return
end
stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$")
if not stem then
error(("Internal error: Something wrong, lemma '%s' doesn't end in consonant or vowel"):format(base.lemma))
end
-- Substitute 'ch' with a single character to make the following code simpler.
stem = stem:gsub("ch", com.TEMP_CH)
if rfind(stem, com.cons_c .. "[lr]" .. com.cons_c .. "$") then
-- [[vrba]], [[vlha]]; not reducible. (But note [[jablko]], reducible; needs override.)
base.default_reducible = false
elseif not base.foreign and (rfind(stem, com.cons_c .. "[bkhlrmnv]$") or base.c_as_k and rfind(stem, com.cons_c .. "c$")) then
-- [[ayahuasca]] has gen pl 'ayahuasek'
base.default_reducible = true
elseif base.foreign and rfind(stem, com.cons_c .. "r$") then
-- Foreign nouns in -CCum seem generally non-reducible in the gen pl except for those in -Crum like [[centrum]],
-- Examples: [[album]], [[verbum]], [[signum]], [[interregnum]], [[sternum]]. [[infernum]] has gen pl 'infern/inferen'.
base.default_reducible = true
else
base.default_reducible = false
end
end
-- Determine the stems to use for each stem set: vowel and nonvowel stems, for singular
-- and plural. We assume that one of base.vowel_stem or base.nonvowel_stem has been
-- set in determine_declension(), depending on whether the lemma ends in
-- a vowel. We construct all the rest given the reducibility, vowel alternation spec and
-- any explicit stems given. We store the determined stems inside of the stem-set objects
-- in `base.stem_sets`, meaning that if the user gave multiple reducible or vowel-alternation
-- patterns, we will compute multiple sets of stems. The reason is that the stems may vary
-- depending on the reducibility and vowel alternation.
local function determine_stems(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
-- Set default reducible and check for default mixed reducible, which needs to be expanded into two entries.
local default_mixed_reducible = false
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == nil then
stems.reducible = base.default_reducible
end
if stems.reducible == "mixed" then
default_mixed_reducible = true
end
end
if default_mixed_reducible then
local new_stem_sets = {}
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == "mixed" then
local non_reducible_copy = m_table.shallowCopy(stems)
non_reducible_copy.reducible = false
stems.reducible = true
table.insert(new_stem_sets, stems)
table.insert(new_stem_sets, non_reducible_copy)
else
table.insert(new_stem_sets, stems)
end
end
base.stem_sets = new_stem_sets
end
-- Now determine all the stems for each stem set.
for _, stems in ipairs(base.stem_sets) do
local lemma_is_vowel_stem = not not base.vowel_stem
if base.vowel_stem then
stems.vowel_stem = base.vowel_stem
stems.nonvowel_stem = stems.vowel_stem
-- Apply vowel alternation first in cases like jádro -> jader; apply_vowel_alternation() will throw an error
-- if the vowel being modified isn't the last vowel in the stem.
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.nonvowel_stem = dereduce(base, stems.nonvowel_stem)
stems.oblique_nonvowel_stem = dereduce(base, stems.oblique_nonvowel_stem)
end
else
stems.nonvowel_stem = base.nonvowel_stem
-- The user specified #, #ě, ## or ##ě and we're dealing with a term like masculine [[bóh]] or feminine
-- [[sól]] that ends in a consonant. In this case, all slots except the nom_s and maybe acc_s have vowel
-- alternation.
if stems.oblique_slots then
stems.oblique_slots = "all"
end
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.vowel_stem = com.reduce(base.nonvowel_stem)
if not stems.vowel_stem then
error("Unable to reduce stem '" .. base.nonvowel_stem .. "'")
end
else
stems.vowel_stem = base.nonvowel_stem
end
end
stems.oblique_vowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.vowel_stem)
end
end
local function detect_indicator_spec(base)
if base.pron then
determine_pronoun_stems(base)
elseif base.det then
determine_determiner_stems(base)
elseif base.num then
determine_numeral_stems(base)
elseif base.adj then
process_declnumber(base)
synthesize_adj_lemma(base)
elseif base.manual then
if base.stem_sets then
-- FIXME, maybe this should be allowed?
error("Reducible and vowel alternation specs cannot be given with manual declensions")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "manual"
else
if base.number == "pl" then
synthesize_singular_lemma(base)
end
determine_declension(base)
determine_default_reducible(base)
determine_stems(base)
end
end
local function detect_all_indicator_specs(alternant_multiword_spec)
-- Keep track of all genders seen in the singular and plural so we can determine whether to add the term to
-- [[:Category:Czech nouns that change gender in the plural]].
alternant_multiword_spec.sg_genders = {}
alternant_multiword_spec.pl_genders = {}
iut.map_word_specs(alternant_multiword_spec, function(base)
detect_indicator_spec(base)
if base.number ~= "pl" then
alternant_multiword_spec.sg_genders[base.actual_gender] = true
end
if base.number ~= "sg" then
-- All t-stem masculines are neuter in the plural.
local plgender
plgender = base.actual_gender
alternant_multiword_spec.pl_genders[plgender] = true
end
end)
if (alternant_multiword_spec.saw_pron and 1 or 0) + (alternant_multiword_spec.saw_det and 1 or 0) + (alternant_multiword_spec.saw_num and 1 or 0) > 1 then
error("Can't combine pronouns, determiners and/or numerals")
end
end
local propagate_multiword_properties
local function propagate_alternant_properties(alternant_spec, property, mixed_value, nouns_only)
local seen_property
for _, multiword_spec in ipairs(alternant_spec.alternants) do
propagate_multiword_properties(multiword_spec, property, mixed_value, nouns_only)
if seen_property == nil then
seen_property = multiword_spec[property]
elseif multiword_spec[property] and seen_property ~= multiword_spec[property] then
seen_property = mixed_value
end
end
alternant_spec[property] = seen_property
end
propagate_multiword_properties = function(multiword_spec, property, mixed_value, nouns_only)
local seen_property = nil
local last_seen_nounal_pos = 0
local word_specs = multiword_spec.alternant_or_word_specs or multiword_spec.word_specs
for i = 1, #word_specs do
local is_nounal
if word_specs[i].alternants then
propagate_alternant_properties(word_specs[i], property, mixed_value)
is_nounal = not not word_specs[i][property]
elseif nouns_only then
is_nounal = is_regular_noun(word_specs[i])
else
is_nounal = not not word_specs[i][property]
end
if is_nounal then
if not word_specs[i][property] then
error("Internal error: noun-type word spec without " .. property .. " set")
end
for j = last_seen_nounal_pos + 1, i - 1 do
word_specs[j][property] = word_specs[j][property] or word_specs[i][property]
end
last_seen_nounal_pos = i
if seen_property == nil then
seen_property = word_specs[i][property]
elseif seen_property ~= word_specs[i][property] then
seen_property = mixed_value
end
end
end
if last_seen_nounal_pos > 0 then
for i = last_seen_nounal_pos + 1, #word_specs do
word_specs[i][property] = word_specs[i][property] or word_specs[last_seen_nounal_pos][property]
end
end
multiword_spec[property] = seen_property
end
local function propagate_properties_downward(alternant_multiword_spec, property, default_propval)
local function set_and_fetch(obj, default)
local retval
if obj[property] then
retval = obj[property]
else
obj[property] = default
retval = default
end
if not obj["actual_" .. property] then
obj["actual_" .. property] = retval
end
return retval
end
local propval1 = set_and_fetch(alternant_multiword_spec, default_propval)
for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
local propval2 = set_and_fetch(alternant_or_word_spec, propval1)
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
local propval3 = set_and_fetch(multiword_spec, propval2)
for _, word_spec in ipairs(multiword_spec.word_specs) do
local propval4 = set_and_fetch(word_spec, propval3)
if propval4 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(word_spec, propval4)
end
end
else
if propval2 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(alternant_or_word_spec, propval2)
end
end
end
--[=[
Propagate `property` (one of "animacy", "gender" or "number") from nouns to adjacent
adjectives. We proceed as follows:
1. We assume the properties in question are already set on all nouns. This should happen in
set_defaults_and_check_bad_indicators().
2. We first propagate properties upwards and sideways. We recurse downwards from the top. When we encounter a multiword
spec, we proceed left to right looking for a noun. When we find a noun, we fetch its property (recursing if the noun
is an alternant), and propagate it to any adjectives to its left, up to the next noun to the left. When we have
processed the last noun, we also propagate its property value to any adjectives to the right (to handle e.g.
[[anděl strážný]] "guardian angel", where the adjective [[strážný]] should inherit the 'masculine' and 'animate'
properties of [[anděl]]). Finally, we set the property value for the multiword spec itself by combining all the
non-nil properties of the individual elements. If all non-nil properties have the same value, the result is that
value, otherwise it is `mixed_value` (which is "mixed" for animacy and gender, but "allthree" for number).
3. When we encounter an alternant spec in this process, we recursively process each alternant (which is a multiword
spec) using the previous step, and combine any non-nil properties we encounter the same way as for multiword specs.
4. The effect of steps 2 and 3 is to set the property of each alternant and multiword spec based on its children or its
neighbors.
]=]
local function propagate_properties(alternant_multiword_spec, property, default_propval, mixed_value)
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, "nouns only")
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, false)
propagate_properties_downward(alternant_multiword_spec, property, default_propval)
end
local function determine_noun_status(alternant_multiword_spec)
for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
if alternant_or_word_spec.alternants then
local is_noun = false
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
for j, word_spec in ipairs(multiword_spec.word_specs) do
if is_regular_noun(word_spec) then
multiword_spec.first_noun = j
is_noun = true
break
end
end
end
if is_noun then
alternant_multiword_spec.first_noun = i
end
elseif is_regular_noun(alternant_or_word_spec) then
alternant_multiword_spec.first_noun = i
return
end
end
end
-- Set the part of speech based on properties of the individual words.
local function set_pos(alternant_multiword_spec)
if alternant_multiword_spec.args.pos then
alternant_multiword_spec.pos = alternant_multiword_spec.args.pos
elseif alternant_multiword_spec.saw_pron and not alternant_multiword_spec.saw_non_pron then
alternant_multiword_spec.pos = "pronoun"
elseif alternant_multiword_spec.saw_det and not alternant_multiword_spec.saw_non_det then
alternant_multiword_spec.pos = "determiner"
elseif alternant_multiword_spec.saw_num and not alternant_multiword_spec.saw_non_num then
alternant_multiword_spec.pos = "numeral"
else
alternant_multiword_spec.pos = "noun"
end
alternant_multiword_spec.plpos = require(en_utilities_module).pluralize(alternant_multiword_spec.pos)
end
local function normalize_all_lemmas(alternant_multiword_spec, pagename)
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.lemma == "" then
base.lemma = pagename
end
base.orig_lemma = base.lemma
base.orig_lemma_no_links = m_links.remove_links(base.lemma)
local lemma = base.orig_lemma_no_links
-- If the lemma is all-uppercase, lowercase it but note this, so that later in combine_stem_ending() we convert it
-- back to uppercase. This allows us to handle all-uppercase acronyms without a lot of extra complexity.
-- FIXME: This may not make sense at all.
if uupper(lemma) == lemma then
base.all_uppercase = true
lemma = ulower(lemma)
end
base.actual_lemma = lemma
base.lemma = base.decllemma or lemma
end)
end
local function decline_noun(base)
for _, stems in ipairs(base.stem_sets) do
if not decls[base.decl] then
error("Internal error: Unrecognized declension type '" .. base.decl .. "'")
end
decls[base.decl](base, stems)
end
handle_derived_slots_and_overrides(base)
local function copy(from_slot, to_slot)
base.forms[to_slot] = base.forms[from_slot]
end
copy("nom_d", "acc_d")
copy("nom_d", "voc_d")
copy("gen_d", "loc_d")
copy("dat_d", "ins_d")
if base.actual_number ~= base.number then
local source_num = base.number == "sg" and "_s" or base.number == "du" and "_d" or "_p"
local dest_num = base.number == "sg" and {"_p", "_d"} or base.number == "du" and {"_s", "_p"} or {"_s", "_d"}
for case, _ in pairs(cases) do
copy(case .. source_num, case .. dest_num)
copy("nom" .. source_num .. "_linked", "nom" .. dest_num .. "_linked")
end
if base.actual_number ~= "allthree" then
local erase_num = base.actual_number == "sg" and {"_d", "_p"} or base.actual_number == "du" and {"_s", "_p"} or {"_s", "_d"}
for case, _ in pairs(cases) do
base.forms[case .. erase_num] = nil
end
base.forms["nom" .. erase_num .. "_linked"] = nil
end
end
end
local function get_variants(form)
return nil
--[=[
FIXME
return
form:find(com.VAR1) and "var1" or
form:find(com.VAR2) and "var2" or
form:find(com.VAR3) and "var3" or
nil
]=]
end
-- Compute the categories to add the noun to, as well as the annotation to display in the
-- declension title bar. We combine the code to do these functions as both categories and
-- title bar contain similar information.
local function compute_categories_and_annotation(alternant_multiword_spec)
local all_cats = {}
local function insert(cattype)
-- m_table.insertIfNot(all_cats, "Old Czech " .. cattype)
end
if alternant_multiword_spec.pos == "noun" or alternant_multiword_spec == "numeral" then
if alternant_multiword_spec.actual_number == "sg" then
-- insert("uncountable nouns")
elseif alternant_multiword_spec.actual_number == "du" then
-- insert("dualia tantum")
elseif alternant_multiword_spec.actual_number == "pl" then
-- insert("pluralia tantum")
end
end
local annotation
local annparts = {}
local decldescs = {}
local vowelalts = {}
local foreign = {}
local irregs = {}
local stemspecs = {}
local reducible = nil
local function get_genanim(gender, animacy)
local gender_code_to_desc = {
m = "ပုလ္လိၚ်",
f = "ဣတ္တိလိၚ်",
n = "နပုလ္လိၚ်",
none = nil,
}
local animacy_code_to_desc = {
pr = "personal",
anml = "animal",
inan = "inanimate",
none = nil,
}
local descs = {}
table.insert(descs, gender_code_to_desc[gender])
if gender ~= "f" and gender ~= "n" then
-- masculine or "none" (e.g. certain pronouns and numerals)
table.insert(descs, animacy_code_to_desc[animacy])
end
return table.concat(descs, " ")
end
local function trim(text)
text = text:gsub(" +", " ")
return mw.text.trim(text)
end
local function do_word_spec(base)
local actual_genanim = get_genanim(base.actual_gender, base.actual_animacy)
local declined_genanim = get_genanim(base.gender, base.animacy)
local genanim
if base.actual_gender ~= base.gender then
genanim = ("%s (declined as %s)"):format(actual_genanim, declined_genanim)
-- insert("nouns with actual gender different from declined gender")
else
genanim = actual_genanim
end
if base.actual_gender == "m" then
-- Insert a category for 'Czech masculine animate nouns' or 'Czech masculine inanimate nouns'; the base categories
-- [[:Category:Czech masculine nouns]], [[:Czech animate nouns]] are auto-inserted.
insert(actual_genanim .. " " .. alternant_multiword_spec.plpos)
end
for _, stems in ipairs(base.stem_sets) do
local props = declprops[base.decl]
local cats = props.cat
if type(cats) == "function" then
cats = cats(base, stems)
end
if type(cats) == "string" then
cats = {cats}
end
local default_desc
for i, cat in ipairs(cats) do
if not cat:find("GENDER") and not cat:find("GENPOS") and not cat:find("POS") then
cat = cat
end
cat = cat:gsub("GENPOS", "GENDER POS")
if not cat:find("POS") then
cat = cat .. " POS"
end
if i == #cats then
default_desc = cat:gsub(" POS", "")
end
cat = cat:gsub("GENDER", actual_genanim)
cat = cat:gsub("POS", alternant_multiword_spec.plpos)
-- Need to trim `cat` because actual_genanim may be an empty string.
insert(trim(cat))
end
local desc = props.desc
if type(desc) == "function" then
desc = desc(base, stems)
end
desc = desc or default_desc
desc = desc:gsub("GENDER", genanim)
-- Need to trim `desc` because genanim may be an empty string.
m_table.insertIfNot(decldescs, trim(desc))
local vowelalt
if stems.vowelalt == "quant" then
vowelalt = "quant-alt"
-- insert("nouns with quantitative vowel alternation")
elseif stems.vowelalt == "quant-ě" then
vowelalt = "í-ě-alt"
-- insert("nouns with í-ě alternation")
end
if vowelalt then
m_table.insertIfNot(vowelalts, vowelalt)
end
if reducible == nil then
reducible = stems.reducible
elseif reducible ~= stems.reducible then
reducible = "mixed"
end
if stems.reducible then
-- insert("nouns with reducible stem")
end
if base.foreign then
m_table.insertIfNot(foreign, "foreign")
if not base.decllemma then
-- NOTE: there are nouns that use both 'foreign' and 'decllemma', e.g. [[Zeus]].
insert("nouns with regular foreign declension")
end
end
-- User-specified 'decllemma:' indicates irregular stem. Don't consider foreign nouns in -us/-os/-es, -um/-on or
-- silent -e (e.g. [[software]]) where this ending is simply dropped in oblique and plural forms as irregular;
-- there are too many of these and they are already categorized above as 'nouns with regular foreign declension'.
if base.decllemma then
m_table.insertIfNot(irregs, "irreg-stem")
insert("nouns with irregular stem")
end
m_table.insertIfNot(stemspecs, stems.vowel_stem)
end
end
local key_entry = alternant_multiword_spec.first_noun or 1
if #alternant_multiword_spec.alternant_or_word_specs >= key_entry then
local alternant_or_word_spec = alternant_multiword_spec.alternant_or_word_specs[key_entry]
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
key_entry = multiword_spec.first_noun or 1
if #multiword_spec.word_specs >= key_entry then
do_word_spec(multiword_spec.word_specs[key_entry])
end
end
else
do_word_spec(alternant_or_word_spec)
end
end
if alternant_multiword_spec.actual_number == "sg" or alternant_multiword_spec.actual_number == "pl" or alternant_multiword_spec.actual_number == "du" then
-- not "allthree" or "none" (for [[sebe]])
table.insert(annparts, alternant_multiword_spec.actual_number == "sg" and "sg-only" or alternant_multiword_spec.actual_number == "du" and "du-only" or "pl-only")
end
if #decldescs == 0 then
table.insert(annparts, "indecl")
else
table.insert(annparts, table.concat(decldescs, " // "))
end
if #vowelalts > 0 then
table.insert(annparts, table.concat(vowelalts, "/"))
end
if reducible == "mixed" then
table.insert(annparts, "mixed-reducible")
elseif reducible then
table.insert(annparts, "reducible")
end
if #foreign > 0 then
table.insert(annparts, table.concat(foreign, " // "))
end
if #irregs > 0 then
table.insert(annparts, table.concat(irregs, " // "))
end
alternant_multiword_spec.annotation = table.concat(annparts, " ")
if #stemspecs > 1 then
insert("nouns with multiple stems")
end
if alternant_multiword_spec.actual_number == "allthree" and not m_table.deepEquals(alternant_multiword_spec.sg_genders, alternant_multiword_spec.pl_genders) then
insert("nouns that change gender in the plural")
end
alternant_multiword_spec.categories = all_cats
end
local function show_forms(alternant_multiword_spec)
local lemmas = {}
for _, slot in ipairs(potential_lemma_slots) do
if alternant_multiword_spec.forms[slot] then
for _, formobj in ipairs(alternant_multiword_spec.forms[slot]) do
-- FIXME, now can support footnotes as qualifiers in headwords?
table.insert(lemmas, formobj.form)
end
break
end
end
local props = {
lemmas = lemmas,
slot_table = alternant_multiword_spec.output_noun_slots,
lang = lang,
canonicalize = function(form)
-- return com.remove_variant_codes(form)
return form
end,
}
iut.show_forms(alternant_multiword_spec.forms, props)
end
local function make_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local function template_prelude(min_width)
return rsub([=[
<div>
<div class="NavFrame" style="max-width: MINWIDTHem">
<div class="NavHead" style="background:var(--wikt-palette-lighterblue)">{title}{annotation}</div>
<div class="NavContent">
{\op}| style="background:var(--wikt-palette-palecyan);text-align:center;display:table;width:100%" class="inflection-table"
|-
]=], "MINWIDTH", min_width)
end
local function template_postlude()
return [=[
|{\cl}{notes_clause}
This table shows the most common forms around the 13th century.</div></div></div>]=]
end
local table_spec_allthree = template_prelude("45") .. [=[
! style="width:33%;background:var(--wikt-palette-lightblue)" |
! style="background:var(--wikt-palette-lightblue)" | ကိုန်ဨကဝုစ်
! style="background:var(--wikt-palette-lightblue)" | ၜါလ္ပာ်
! style="background:var(--wikt-palette-lightblue)" | ကိုန်ဗဟုဝစ်
|-
!style="background:var(--wikt-palette-lighterblue)"|မဒုၚ်ယၟု
| {nom_s}
| {nom_d}
| {nom_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|ဗဳဇဂကူ
| {gen_s}
| {gen_d}
| {gen_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပြကမ္မကာရက
| {dat_s}
| {dat_d}
| {dat_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|ကမ္မကာရက
| {acc_s}
| {acc_d}
| {acc_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပရေၚ်ဂယိုၚ်လမျီု
| {voc_s}
| {voc_d}
| {voc_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|ခၞံဗဒှ်ဌာန်မတန်တဴ
| {loc_s}
| {loc_d}
| {loc_p}
|-
!style="background:var(--wikt-palette-lighterblue)"|တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {ins_s}
| {ins_d}
| {ins_p}
]=] .. template_postlude()
local function get_table_spec_one_number(number, numcode)
local table_spec_one_number = [=[
! style="width:33%;background:var(--wikt-palette-lightblue)" |
! style="background:var(--wikt-palette-lightblue)" | NUMBER
|-
!style="background:var(--wikt-palette-lighterblue)"|မဒုၚ်ယၟု
| {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ဗဳဇဂကူ
| {gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပြကမ္မကာရက
| {dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ကမ္မကာရက
| {acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပရေၚ်ဂယိုၚ်လမျီု
| {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ခၞံဗဒှ်ဌာန်မတန်တဴ
| {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {ins_CODE}
]=]
return template_prelude("30") .. table_spec_one_number:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local function get_table_spec_one_number_clitic(number, numcode)
local table_spec_one_number_clitic = [=[
! rowspan=2 style="width:33%;background:var(--wikt-palette-lightblue)"|
! colspan=2 style="background:var(--wikt-palette-lightblue)" | NUMBER
|-
! style="width:33%;background:var(--wikt-palette-lightblue)" | သ္ပလဝ်ဇြိုဟ်ဇြိုဟ်နက်နက်
! style="background:var(--wikt-palette-lightblue)" | ကလေတ်တေတ်
|-
!style="background:var(--wikt-palette-lighterblue)"|မဒုၚ်ယၟု
| colspan=2 | {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ဗဳဇဂကူ
| {gen_CODE}
| {clitic_gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပြကမ္မကာရက
| {dat_CODE}
| {clitic_dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ကမ္မကာရက
| {acc_CODE}
| {clitic_acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ပရေၚ်ဂယိုၚ်လမျီု
| colspan=2 | {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|ခၞံဗဒှ်ဌာန်မတန်တဴ
| colspan=2 | {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue)"|တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| colspan=2 | {ins_CODE}
]=]
return template_prelude("40") .. table_spec_one_number_clitic:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local notes_template = [=[
<div style="width:100%;text-align:left;background:var(--wikt-palette-lightblue)">
<div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em">
{footnote}
</div></div>
]=]
if alternant_multiword_spec.title then
forms.title = alternant_multiword_spec.title
else
forms.title = 'မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု <i lang="zlw-ocs">' .. forms.lemma .. '</i>'
end
local annotation = alternant_multiword_spec.annotation
if annotation == "" then
forms.annotation = ""
else
forms.annotation = " (<span style=\"font-size: smaller;\">" .. annotation .. "</span>)"
end
local number, numcode
if alternant_multiword_spec.actual_number == "sg" then
number, numcode = "singular", "s"
elseif alternant_multiword_spec.actual_number == "du" then
number, numcode = "dual", "d"
elseif alternant_multiword_spec.actual_number == "pl" then
number, numcode = "plural", "p"
elseif alternant_multiword_spec.actual_number == "none" then -- used for [[sebe]]
number, numcode = "", "s"
end
local table_spec =
alternant_multiword_spec.actual_number == "allthree" and table_spec_allthree or
alternant_multiword_spec.has_clitic and get_table_spec_one_number_clitic(number, numcode) or
get_table_spec_one_number(number, numcode)
forms.notes_clause = forms.footnote ~= "" and
m_string_utilities.format(notes_template, forms) or ""
return m_string_utilities.format(table_spec, forms)
end
local function compute_headword_genders(alternant_multiword_spec)
local genders = {}
local number
if alternant_multiword_spec.actual_number == "pl" then
number = "-p"
elseif alternant_multiword_spec.actual_number == "du" then
number = "-d"
else
number = ""
end
iut.map_word_specs(alternant_multiword_spec, function(base)
local animacy = base.animacy
if animacy == "inan" then
animacy = "in"
end
m_table.insertIfNot(genders, base.gender .. "-" .. animacy .. number)
end)
return genders
end
-- Externally callable function to parse and decline a noun given user-specified arguments.
-- Return value is ALTERNANT_MULTIWORD_SPEC, an object where the declined forms are in
-- `ALTERNANT_MULTIWORD_SPEC.forms` for each slot. If there are no values for a slot, the
-- slot key will be missing. The value for a given slot is a list of objects
-- {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms(parent_args, from_headword)
local params = {
[1] = {required = true, default = "bóh<m.pr.#>"},
title = {},
pagename = {},
json = {type = "boolean"},
pos = {},
}
if from_headword then
params["head"] = {list = true}
params["lemma"] = {list = true}
params["g"] = {list = true}
params["f"] = {list = true}
params["m"] = {list = true}
params["adj"] = {list = true}
params["dim"] = {list = true}
params["id"] = {}
end
local args = m_para.process(parent_args, params)
local parse_props = {
parse_indicator_spec = parse_indicator_spec,
angle_brackets_omittable = true,
allow_blank_lemma = true,
}
local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props)
alternant_multiword_spec.title = args.title
alternant_multiword_spec.args = args
local pagename = args.pagename or from_headword and args.head[1] or mw.loadData("Module:headword/data").pagename
normalize_all_lemmas(alternant_multiword_spec, pagename)
set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
-- These need to happen before detect_all_indicator_specs() so that adjectives get their genders and numbers set
-- appropriately, which are needed to correctly synthesize the adjective lemma.
propagate_properties(alternant_multiword_spec, "animacy", "inan", "mixed")
propagate_properties(alternant_multiword_spec, "number", "allthree", "allthree")
-- FIXME, the default value (third param) used to be 'm' with a comment indicating that this applied only to
-- plural adjectives, where it didn't matter; but in Czech, plural adjectives are distinguished for gender and
-- animacy. Make sure 'mixed' works.
propagate_properties(alternant_multiword_spec, "gender", "mixed", "mixed")
detect_all_indicator_specs(alternant_multiword_spec)
-- Propagate 'actual_number' after calling detect_all_indicator_specs(), which sets 'actual_number' for adjectives.
propagate_properties(alternant_multiword_spec, "actual_number", "allthree", "allthree")
determine_noun_status(alternant_multiword_spec)
set_pos(alternant_multiword_spec)
alternant_multiword_spec.output_noun_slots = get_output_noun_slots(alternant_multiword_spec)
local inflect_props = {
skip_slot = function(slot)
return skip_slot(alternant_multiword_spec.actual_number, slot)
end,
slot_table = alternant_multiword_spec.output_noun_slots,
get_variants = get_variants,
inflect_word_spec = decline_noun,
}
iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)
compute_categories_and_annotation(alternant_multiword_spec)
alternant_multiword_spec.genders = compute_headword_genders(alternant_multiword_spec)
if args.json then
alternant_multiword_spec.args = nil
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Entry point for {{zlw-ocs-ndecl}}. Template-callable function to parse and decline a noun given
-- user-specified arguments and generate a displayable table of the declined forms.
function export.show(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms(parent_args)
if type(alternant_multiword_spec) == "string" then
-- JSON return value
return alternant_multiword_spec
end
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) ..
require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat)
end
return export
hcb7v4yr0tk1hylfjv6hvjk6hgbw04o
မဝ်ဂျူ:zlw-ocs-common/doc
828
296550
398027
2026-07-09T13:35:36Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|zlw-ocs}} </includeonly>"
398027
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|zlw-ocs}}
</includeonly>
0pcevpkbalm4klnl6k49e3xzn9dt0gh
မဝ်ဂျူ:zlw-ocs-noun/doc
828
296551
398028
2026-07-09T13:36:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|zlw-ocs}} </includeonly>"
398028
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|zlw-ocs}}
</includeonly>
0pcevpkbalm4klnl6k49e3xzn9dt0gh
ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲချက်ခ်တြေံဂမၠိုၚ်
14
296552
398029
2026-07-09T13:38:19Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူချက်ခ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]"
398029
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူချက်ခ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ချက်ခ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
a3ubd0pynrwmitll7nfx05syyn8mti3
မဝ်ဂျူ:zlw-ocs-adjective
828
296553
398030
2026-07-09T13:56:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} --[=[ Authorship: Zhnka, heavily based on [[Module:cs-adjective]] by Benwing ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/gender/number. Example slot names for adjectives are "gen_f" (genitive feminine singular) and "nom_mp" (animate nominative masculine plural). Each slot is filled with zero or more forms. -- "form" = The declined Old Czech form representing the va..."
398030
Scribunto
text/plain
local export = {}
--[=[
Authorship: Zhnka, heavily based on [[Module:cs-adjective]] by Benwing
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular combination of case/gender/number.
Example slot names for adjectives are "gen_f" (genitive feminine singular) and
"nom_mp" (animate nominative masculine plural). Each slot is filled with zero or more forms.
-- "form" = The declined Old Czech form representing the value of a given slot.
-- "lemma" = The dictionary form of a given Old Czech term. Generally the nominative
masculine singular, but may occasionally be another form if the nominative
masculine singular is missing.
]=]
local lang = require("Module:languages").getByCode("zlw-ocs")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local com = require("Module:zlw-ocs-common")
local en_utilities_module = "Module:en-utilities"
local current_title = mw.title.getCurrentTitle()
local NAMESPACE = current_title.nsText
local PAGENAME = current_title.text
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rgmatch = mw.ustring.gmatch
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local uupper = mw.ustring.upper
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
-- All slots that are used by any of the different tables. The key is the slot and the value is a list of the tables
-- that use the slot. "" = regular, "plonly" = special=plonly in {{zlw-ocs-adecl-manual}}, "dva" = special=dva in
-- {{zlw-ocs-adecl-manual}}.
local input_adjective_slots = {
nom_m = {""},
nom_f = {""},
nom_n = {""},
nom_md = {"", "duonly"},
nom_fnd = {"", "duonly"},
nom_mp = {"", "plonly"},
nom_fp = {"", "plonly"},
nom_np = {"", "plonly"},
gen_mn = {""},
gen_f = {""},
gen_d = {"", "duonly"},
gen_p = {"", "plonly"},
dat_mn = {""},
dat_f = {""},
dat_d = {"", "duonly"},
dat_p = {"", "plonly"},
acc_m_an = {""},
acc_m_in = {""},
acc_f = {""},
acc_n = {""},
acc_md = {"", "duonly"},
acc_fnd = {"", "duonly"},
acc_mfp = {"", "plonly"},
acc_np = {"", "plonly"},
ins_mn = {""},
ins_f = {""},
ins_d = {"", "duonly"},
ins_p = {"", "plonly"},
loc_mn = {""},
loc_f = {""},
loc_d = {"", "duonly"},
loc_p = {"", "plonly"},
}
local output_adjective_slots = {
nom_m = "nom|m|s",
nom_f = "nom|f|s",
nom_n = "nom|n|s",
nom_md = "nom|m|d",
nom_fnd = "nom|f//n|d",
nom_mp = "nom|m|p",
nom_fp = "nom|f|p",
nom_np = "nom|n|p",
nom_mp = "nom|m|p",
nom_fnp = "nom|f//n|p",
gen_mn = "gen|m//n|s",
gen_f = "gen|f|s",
gen_d = "gen|d",
gen_p = "gen|p",
dat_mn = "dat|m//n|s",
dat_f = "dat|f|s",
dat_d = "dat|d",
dat_p = "dat|p",
acc_m_an = "an|acc|m|s",
acc_m_in = "in|acc|m|s",
acc_f = "acc|f|s",
acc_n = "acc|n|s",
acc_md = "acc|m|d",
acc_fnd = "acc|f//n|d",
acc_mfp = "acc|m//f|p",
acc_np = "acc|n|p",
acc_mp = "acc|m|p",
acc_fnp = "acc|f//n|p",
ins_mn = "ins|m//n|s",
ins_f = "ins|f|s",
ins_d = "ins|d",
ins_p = "ins|p",
loc_mn = "loc|m//n|s",
loc_f = "loc|f|s",
loc_d = "loc|d",
loc_p = "loc|p",
}
local function get_output_adjective_slots(alternant_multiword_spec)
return output_adjective_slots
end
local function combine_stem_ending(stem, ending)
if stem == "?" then
return "?"
else
return stem .. ending
end
end
local function add(base, slot, stems, endings, footnote)
if stems then
stems = iut.combine_form_and_footnotes(stems, footnote)
end
iut.add_forms(base.forms, slot, stems, endings, combine_stem_ending)
end
local function add_normal_decl(base, stems,
nom_m, nom_f, nom_n, nom_md, nom_fnd, nom_mp, nom_fp, nom_np,
gen_mn, gen_f, gen_d, gen_p,
dat_mn, dat_f, dat_d, dat_p,
acc_f,
loc_mn, loc_f, loc_d, loc_p,
ins_mn, ins_f, ins_d, ins_p,
footnote, acc_m_an)
if stems then
stems = iut.combine_form_and_footnotes(stems, footnote)
end add(base, "nom_m", stems, nom_m)
add(base, "nom_f", stems, nom_f)
add(base, "nom_n", stems, nom_n)
add(base, "nom_md", stems, nom_md)
add(base, "nom_fnd", stems, nom_fnd)
add(base, "nom_mp", stems, nom_mp)
add(base, "nom_fp", stems, nom_fp)
add(base, "nom_np", stems, nom_np)
add(base, "gen_mn", stems, gen_mn)
add(base, "gen_f", stems, gen_f)
add(base, "gen_d", stems, gen_d)
add(base, "gen_p", stems, gen_p)
add(base, "dat_mn", stems, dat_mn)
add(base, "dat_f", stems, dat_f)
add(base, "dat_d", stems, dat_d)
add(base, "dat_p", stems, dat_p)
add(base, "acc_f", stems, acc_f)
add(base, "loc_mn", stems, loc_mn)
add(base, "loc_f", stems, loc_f)
add(base, "loc_d", stems, loc_d)
add(base, "loc_p", stems, loc_p)
add(base, "ins_mn", stems, ins_mn)
add(base, "ins_f", stems, ins_f)
add(base, "ins_d", stems, ins_d)
add(base, "ins_p", stems, ins_p)
add(base, "acc_m_an", stems, acc_m_an)
end
local decls = {}
decls["normal"] = function(base)
local stem, suffix
-- hard in -ý
stem, suffix = rmatch(base.lemma, "^(.*)(ý)$")
if stem then
if vowel_alt ~= nil then
add_normal_decl(base, com.apply_second_palatalization(vowel_alt, "is adj"), nil, nil, nil, nil, nil, "í")
if not rfind(base.lemma, ".*lý$") then
add_normal_decl(base, com.apply_second_palatalization(vowel_alt, "is adj"), nil, nil, nil, nil, "iej", nil, nil, nil, nil, nil, nil, nil, nil, "iej", nil, nil, nil, "iem", "iej")
else
add_normal_decl(base, vowel_alt, nil, nil, nil, nil, "éj", nil, nil, nil, nil, nil, nil, nil, nil, "éj", nil, nil, nil, "ém", "éj")
end
add_normal_decl(base, stem,
"ý", "á", "é", "á", "éj", {}, "é", "á",
"ého", "é", "ú", "ých",
"ému", "éj", "ýma", "ým",
"ú",
"ém", "éj", "ú", "ých",
"ým", "ú", "ýma", "ými"
)
return
else
add_normal_decl(base, com.apply_second_palatalization(stem, "is adj"), nil, nil, nil, nil, nil, "í")
if not rfind(base.lemma, ".*lý$") then
add_normal_decl(base, com.apply_second_palatalization(stem, "is adj"), nil, nil, nil, nil, "iej", nil, nil, nil, nil, nil, nil, nil, nil, "iej", nil, nil, nil, "iem", "iej")
end
add_normal_decl(base, stem,
"ý", "á", "é", "á", "éj", {}, "é", "á",
"ého", "é", "ú", "ých",
"ému", "éj", "ýma", "ým",
"ú",
"ém", "éj", "ú", "ých",
"ým", "ú", "ýma", "ými"
)
return
end
end
if base.comp then
stem, suffix = rmatch(base.lemma, "(.*)(í)$")
if stem then
add_normal_decl(base, stem,
"í", "ši", "še", "še", "še", "še", "še", "še",
"šě", "šě", nil, nil,
"šu", "ši", nil, nil,
"šu",
"ši", "ši", nil, nil,
"šem", "šú")
return
end
else
-- soft in -í
stem, suffix = rmatch(base.lemma, "^(.*)(í)$")
if stem then
add_normal_decl(base, stem,
"í", {}, {}, {}, "í", "í", {}, {},
{}, {}, {}, "ích",
{}, "í", "íma", "ím",
{},
{}, "í", {}, "ích",
"ím", {}, "íma", "ími"
)
add_normal_decl(base, com.convert_paired_plain_to_palatal(stem, ending), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "ú", nil, nil, nil, nil, nil, "ú", nil, nil, "ú", nil, nil, "ú")
if rfind(base.lemma, ".*lí$") then
add_normal_decl(base, stem, nil, "é", "é", "é", "éj", nil, "é", "é", "ého", "é", nil, nil, "ému", "éj", nil, nil, nil, "ém", "éj")
else
add_normal_decl(base, stem, nil, "ie", "ie", "ie", "iej", nil, "ie", "ie", "ieho", "ie", nil, nil, "iemu", "iej", nil, nil, nil, "iem", "iej")
end
return
end
-- nt-participle
stem, suffix = rmatch(base.lemma, "^(.*)(a)$")
if stem then
acc_single = true
nt_participle = true
add_normal_decl(base, stem,
"a", "úci", {"a", "úci"}, "úce", "úce", "úce", "úce", "úce",
nil, nil, nil, nil,
"úcu", nil, nil, nil,
nil,
nil, nil, nil, nil,
nil, nil, nil, nil, nil, "úc"
)
return
end
stem, suffix = rmatch(base.lemma, "^(.*)([ěe])$")
if stem then
acc_single = true
nt_participle = true
if base.ntpartie then
add_normal_decl(base, stem,
"ě", "ieci", {"ě", "ieci"}, "iece", "iece", "iece", "iece", "iece",
nil, nil, nil, nil,
"iecu", nil, nil, nil,
nil,
nil, nil, nil, nil,
nil, nil, nil, nil, nil, "iec"
)
return
else
add_normal_decl(base, stem,
"ě", "úci", {"ě", "úci"}, "úce", "úce", "úce", "úce", "úce",
nil, nil, nil, nil,
"úcu", nil, nil, nil,
nil,
nil, nil, nil, nil,
nil, nil, nil, nil, nil, "úc"
)
return
end
end
if base.spart then
acc_single = true
nt_participle = true
add_normal_decl(base, base.lemma,
"", "ši", {"", "ši"}, "še", "še", "še", "še", "še"
)
return
end
-- possessive in -óv
stem, suffix = rmatch(base.lemma, "^(.*)(óv)$")
if stem then
add_normal_decl(base, stem,
"óv", "ova", "ovo", "ova", "ově", "ovi", "ovy", "ova",
"ova", "ovy", "ovú", "ových",
"ovu", "ově", "ovýma", "ovým",
"ovu",
{"ově", "ovu"}, "ově", "ovú", "ových",
"ovem", "ovú", "ovýma", "ovými"
)
return
end
-- possessive in -in
stem, suffix = rmatch(base.lemma, "^(.*)(in)$")
if stem then
add_normal_decl(base, stem,
"in", "ina", "ino", "ina", "ině", "ini", "iny", "ina",
"ina", "iny", "inú", "iných",
"inu", "ině", "inýma", "iným",
"inu",
{"ině", "inu"}, "ině", "inú", "iných",
"inem", "inú", "inýma", "inými"
)
return
end
if base.num then
stem, suffix = rmatch(base.lemma, "^(.*)" .. com.inherently_soft_c)
if not stem then
add_normal_decl(base, base.lemma, "")
add_normal_decl(base, base.red == true and com.reduce(base.lemma) or base.lemma,
nil, "a", "o", nil, nil, {}, "y", "a",
"a", "y", nil, "ých",
"u", {}, nil, "ým",
"u",
{}, {}, nil, "ých",
"em", "ú", nil, "ými"
)
add_normal_decl(base, base.red == true and com.reduce( com.apply_second_palatalization(base.lemma, "is adj")) or com.apply_second_palatalization(base.lemma, "is adj"), nil, nil, nil, nil, nil, "i", nil, nil, nil, nil, nil, nil, nil, "ě", nil, nil, nil, "ě", "ě")
return
end
stem, suffix = rmatch(base.lemma, "^(.*)(ój)$")
if stem then
add_normal_decl(base, stem,
"ój", "ojě", {"oje", "é"}, "ojě", "oji", "oji", "ojě", "ojě",
{"ojeho", "ého"}, "ojie", "ojú", {"ojich", "ých"},
{"ojemu", "ému"}, "ojí", {"ojima", "ýma"}, {"ojim", "ým"},
"oju",
{"ojem", "ém"}, "ojí", "ojú", {"ojich", "ých"},
{"ojím", "ým"}, "ojú", {"ojima", "ýma"}, {"ojimi", "ými"}
)
return
end
end
-- short soft
stem, suffix = rmatch(base.lemma, "^(.*)" .. com.inherently_soft_c .. "$")
if stem then
add_normal_decl(base, base.lemma,
"", {}, "e", {}, {}, {}, {}, {},
{}, {}, nil, nil,
"u", {}, nil, nil,
"u",
nil, nil, nil, nil,
nil, nil, nil, nil
)
add_normal_decl(base, com.convert_paired_palatal_to_plain(base.lemma, ending), nil, "ě", nil, "ě", "i", "i", "ě", "ě", "ě", "ě", nil, nil, nil, "i", nil, nil, nil, nil, nil, nil, nil, nil, nil)
return
end
-- short hard
stem, suffix = rmatch(base.lemma, "^(.*)" .. com.cons_c)
if stem then
if not rfind(base.lemma, ".*l$") then
add_normal_decl(base, base.lemma, "")
add_normal_decl(base, base.red == true and com.reduce(base.lemma) or base.lemma,
nil, "a", "o", "a", {}, {}, "y", "a",
"a", "y", nil, nil,
"u", {}, nil, nil,
"u",
{}, {}, nil, nil,
"em", "ú", nil, nil
)
add_normal_decl(base, base.red == true and com.reduce( com.apply_second_palatalization(base.lemma, "is adj")) or com.apply_second_palatalization(base.lemma, "is adj"), nil, nil, nil, nil, "ě", "i", nil, nil, nil, nil, nil, nil, nil, "ě", nil, nil, nil, "ě", "ě")
else
add_normal_decl(base, base.lemma, "")
add_normal_decl(base, base.red == true and com.reduce(base.lemma) or base.lemma,
nil, "a", "o", "a", "e", "i", "y", "a",
"a", "y", nil, nil,
"u", "e", nil, nil,
"u",
"e", "e", nil, nil,
"em", "ú", nil, nil
)
end
return
end
end
error("Unrecognized adjective lemma: '" .. base.lemma .. "'")
end
decls["irreg"] = function(base)
local stem, suffix
-- determiner like mój
stem, suffix = rmatch(base.lemma, "^(.*)(ój)$")
if stem then
add_normal_decl(base, stem,
"ój", {"á", "ojě"}, {"é", "oje"}, "á", "oji", "oji", {"é", "ojě"}, {"á", "ojě"},
"ého", "é", {"ú", "ojú"}, "ých",
"ému", {"éj", "ej"}, "ýma", "ým",
{"ú", "oju"},
"ém", {"éj", "ej"}, {"ú", "ojú"}, "ých",
"ým", "ú", "ýma", "ými"
)
return
end
if base.lemma == "veš" then
add_normal_decl(base, "",
"veš", "všě", "vše", nil, nil, "vši", "všě", "všě",
"všeho", "všie", nil, "všěch",
"všemu", {"vší", "všiej"}, nil, "všěm",
"všu",
"všem", {"vší", "všiej"}, nil, "všěch",
"všiem", "všú", nil, "všěmi"
)
return
end
if base.lemma == "sen" then
add_normal_decl(base, "",
"sen", "sie", "se", nil, nil, "si", nil, nil,
"seho", "sie", nil, "sich",
"semu", {"sí", "siej"}, "sima", "sim",
"śú",
"sem", {"sí", "siej"}, nil, "sich",
"sím", "śú", "sima", "simi"
)
return
end
if base.lemma == "jen" then
local preposition_footnote = "the leading letter ''j-'' is changed to ''n-'' when the pronoun is preceded by a preposition, e.g. {{m|cs|[[s]] [[nímž]]}}, {{m|cs|[[k]] [[němuž]]}}, {{m|cs|[[bez]] [[ňúž]]}}"
preposition_footnote = "[" .. mw.getCurrentFrame():preprocess(preposition_footnote) .. "]"
-- Add the non-prepositional forms.
add_normal_decl(base, "",
"jen", "jě", "je", "jě", "ji", "ji", "jě", "jě",
"jeho", "jie", "jú", "jich",
"jemu", {"jí", "jiej"}, "jima", "jim",
"ju",
nil, nil, nil, nil,
"jím", "jú", "jima", "jimi"
)
-- Add the prepositional forms. (FIXME: Maybe should go in a separate column in a special table.)
add_normal_decl(base, "",
nil, nil, nil, nil, nil, nil, nil, nil,
"ňeho", "nie", "ňú", "nich",
"ňemu", {"ní", "niej"}, "nima", "nim",
"ňu",
"ňem", {"ní", "niej"}, "ňú", "nich",
"ním", "ňú", "nima", "nimi",
preposition_footnote
)
add(base, "acc_m_an", "", {"jej", "jen", "ji", "jeho"})
add(base, "acc_m_in", "", {"-ň", "ňej", "ňen", "ni", "něho"},
preposition_footnote)
return
end
-- determiner like [[ten]], [[tento]], [[onen]], [[jeden]]
stem, suffix = rmatch(base.lemma, "^(.*)(en)$")
if stem then
local nom_stem = stem .. suffix
if nom_stem == "jeden" then
stem = "jedn"
end
add_normal_decl(base, nom_stem, "")
add_normal_decl(base, stem,
nil, "a", "o", "a", "ě", "i", "y", "a",
"oho", "é", "ú", "ěch",
"omu", {"éj", "ej"}, "ěma", "ěm",
"u",
"om", {"éj", "ej"}, "ú", "ěch",
"iem", "ú", "ěma", "ěmi"
)
return
end
-- [[náš]], [[váš]]
stem, suffix = rmatch(base.lemma, "^(.*)(áš)$")
if stem then
local nom_stem = stem .. suffix
stem = stem .. "aš"
add_normal_decl(base, nom_stem,
"", "ě", "e", "ě", "i", "i", "ě", "ě",
"eho", "ie", "ú", "ich",
"emu", {"í", "iej"}, "ima", "im",
"u",
"em", {"í", "iej"}, "ú", "ich",
"ím", "ú", "ima", "imi"
)
add_normal_decl(base, stem,
nil, "ě", "e", "ě", "i", "i", "ě", "ě",
"eho", "ie", "ú", "ich",
"emu", {"í", "iej"}, "ima", "im",
"u",
"em", {"í", "iej"}, "ú", "ich",
"ím", "ú", "ima", "imi"
)
return
end
if base.lemma == "sám" then
-- This mixes long and short endings.
add_normal_decl(base, "sám", "")
add_normal_decl(base, "sam",
nil, "a", "o", "a", "ě", "i", "y", "a",
{"oho", "a"}, "é", "ú", "ěch",
{"omu", "u"}, {"ej", "éj"}, "ěma", "ěm",
"u",
"om", {"ej", "éj"}, "ú", "ěch",
"iem", "ú", "ěma", "ěmi"
)
return
end
error("Unrecognized irregular lemma '" .. base.lemma .. "'")
end
local function fetch_footnotes(separated_group)
local footnotes
for j = 2, #separated_group - 1, 2 do
if separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'")
end
if not footnotes then
footnotes = {}
end
table.insert(footnotes, separated_group[j])
end
return footnotes
end
local function parse_indicator_spec(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local base = {forms = {}}
if inside ~= "" then
local parts = rsplit(inside, ".", true)
for _, part in ipairs(parts) do
if part == "irreg" then
base.irreg = true
elseif part == "*" then
base.red = true
elseif part == "comp" then
base.comp = true
elseif part == "num" then
base.num = true
elseif part == "ntpartie" then
base.ntpartie = true
elseif part == "spart" then
base.spart = true
else
error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'")
end
end
end
return base
end
local function normalize_all_lemmas(alternant_multiword_spec, pagename)
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.lemma == "" then
base.lemma = pagename
end
base.orig_lemma = base.lemma
base.orig_lemma_no_links = m_links.remove_links(base.lemma)
base.lemma = base.orig_lemma_no_links
end)
end
local function detect_indicator_spec(base)
if base.irreg then
base.decl = "irreg"
else
base.decl = "normal"
end
end
local function detect_all_indicator_specs(alternant_multiword_spec)
iut.map_word_specs(alternant_multiword_spec, function(base)
detect_indicator_spec(base)
end)
end
local function decline_adjective(base)
if not decls[base.decl] then
error("Internal error: Unrecognized declension type '" .. base.decl .. "'")
end
decls[base.decl](base)
-- handle_derived_slots_and_overrides(base)
end
-- Process override for the arguments in `args`, storing the results into `forms`. If `do_acc`, only do accusative
-- slots; otherwise, don't do accusative slots.
local function process_overrides(forms, args, do_acc)
for slot, _ in pairs(input_adjective_slots) do
if args[slot] and not not do_acc == not not slot:find("^acc") then
forms[slot] = nil
if args[slot] ~= "-" and args[slot] ~= "—" then
local segments = put.parse_balanced_segment_run(args[slot], "[", "]")
local comma_separated_groups = put.split_alternating_runs(segments, "%s*,%s*")
for _, comma_separated_group in ipairs(comma_separated_groups) do
local formobj = {
form = comma_separated_group[1],
footnotes = fetch_footnotes(comma_separated_group),
}
iut.insert_form(forms, slot, formobj)
end
end
end
end
end
local function check_allowed_overrides(alternant_multiword_spec, args)
local special = alternant_multiword_spec.special or alternant_multiword_spec.surname and "surname" or ""
for slot, types in pairs(input_adjective_slots) do
if args[slot] then
local allowed = false
for _, typ in ipairs(types) do
if typ == special then
allowed = true
break
end
end
if not allowed then
error(("Override %s= not allowed for %s"):format(slot, special == "" and "regular declension" or
"special=" .. special))
end
end
end
end
local function set_accusative(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local function copy_if(from_slot, to_slot)
if not forms[to_slot] then
iut.insert_forms(forms, to_slot, forms[from_slot])
end
end
if not nt_participle then
copy_if("nom_n", "acc_n")
copy_if("gen_mn", "acc_m_an")
copy_if("nom_m", "acc_m_in")
copy_if("nom_fp", "acc_mfp")
copy_if("nom_np", "acc_np")
copy_if("nom_md", "acc_md")
copy_if("nom_fnd", "acc_fnd")
end
end
local function add_categories(alternant_multiword_spec)
local cats = {}
local plpos = require(en_utilities_module).pluralize(alternant_multiword_spec.pos or "adjective")
local function insert(cattype)
m_table.insertIfNot(cats, "Old Czech " .. cattype .. " " .. plpos)
end
if not alternant_multiword_spec.manual then
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.decl == "irreg" then
insert("irregular")
elseif rfind(base.lemma, "ý$") then
insert("hard")
elseif rfind(base.lemma, "í$") then
insert("soft")
elseif base.num then
insert("number")
elseif rfind(base.lemma, "óv$") then
insert("possessive")
elseif rfind(base.lemma, "in$") then
insert("possessive")
elseif rfind(base.lemma, "^(.*)" .. com.inherently_soft_c .. "$") then
insert("short soft")
elseif rfind(base.lemma, "^(.*)" .. com.cons_c .. "$") then
insert("short hard")
end
end)
end
alternant_multiword_spec.categories = cats
end
local function show_forms(alternant_multiword_spec)
local lemmas = {}
local lemmaform = alternant_multiword_spec.forms.nom_m or alternant_multiword_spec.forms.nom_mp
if lemmaform then
for _, form in ipairs(lemmaform) do
table.insert(lemmas, form.form)
end
end
local props = {
lemmas = lemmas,
slot_table = get_output_adjective_slots(alternant_multiword_spec),
lang = lang,
}
iut.show_forms(alternant_multiword_spec.forms, props)
end
local function make_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local function template_prelude()
return mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = '{title}{annotation}',
palette = 'blue',
tall = 'yes',
}
}
end
local function template_postlude()
return mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '{notes_clause}' or nil
}
}
end
if acc_single == true then
table_spec_acc = [=[
| {acc_m_an}|]=]
else
table_spec_acc = [=[
| {acc_m_in}<sup style="cursor:help" title="nonpersonalq">inan+anml</sup> or<br/>{acc_m_an}<sup style="cursor:help" title="animate">pers+anml</sup>|]=]
end
local table_spec_sg = [=[
! colspan=5 class="outer" | ကိုန်ဨကဝုစ်
|-
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်
! နပုလ္လိၚ်
|-
! မဒုၚ်ယၟု
| {nom_m}
| {nom_f}
| {nom_n}
|-
! ဗဳဇဂကူ
| {gen_mn}
| {gen_f}
| {gen_mn}
|-
! ပြကမ္မကာရက
| {dat_mn}
| {dat_f}
| {dat_mn}
|-
! ကမ္မကာရက
]=]..table_spec_acc..[=[
| {acc_f}
| {acc_n}
|-
! ခၞံဗဒှ်ဌာန်မတန်တဴ
| {loc_mn}
| {loc_f}
| {loc_mn}
|-
! တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {ins_mn}
| {ins_f}
| {ins_mn}
]=]
local table_spec_du = [=[
! colspan=5 class="outer" | ၜါလ္ပာ်
|-
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်
! နပုလ္လိၚ်
|-
! မဒုၚ်ယၟု
| {nom_md}
| colspan=2 | {nom_fnd}
|-
! ဗဳဇဂကူ
| colspan=3 | {gen_d}
|-
! ပြကမ္မကာရက
| colspan=3 | {dat_d}
|-
! ကမ္မကာရက
| {acc_md}
| colspan=2 | {acc_fnd}
|-
! ခၞံဗဒှ်ဌာန်မတန်တဴ
| colspan=3 | {loc_d}
|-
! တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| colspan=3 | {ins_d}
]=]
local table_spec_pl = [=[
! colspan=5 class="outer" | plural
|-
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်
! နပုလ္လိၚ်
|-
! မဒုၚ်ယၟု
| {nom_mp}
| {nom_fp}
| {nom_np}
|-
! ဗဳဇဂကူ
| colspan=3 | {gen_p}
|-
! ပြကမ္မကာရက
| colspan=3 | {dat_p}
|-
! ကမ္မကာရက
| colspan=2 | {acc_mfp}
| {acc_np}
|-
! ခၞံဗဒှ်ဌာန်မတန်တဴ
| colspan=3 | {loc_p}
|-
! တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| colspan=3 | {ins_p}
]=]
local table_spec = template_prelude("55") .. table_spec_sg .. "|-\n" .. table_spec_du .. "|-\n" .. table_spec_pl .. template_postlude()
local table_spec_plonly = template_prelude("55") .. table_spec_pl .. template_postlude()
local table_spec_nodual = template_prelude("55") .. table_spec_sg .. "|-\n" .. table_spec_pl .. template_postlude()
local table_spec_duonly = template_prelude("40") .. [=[
! colspan=4 class="outer" | ၜါလ္ပာ်
|-
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်/နပုလ္လိၚ်
|-
! မဒုၚ်ယၟု
| {nom_md}
| {nom_fnd}
|-
! ဗဳဇဂကူ
| colspan="2" | {gen_d}
|-
! ပြကမ္မကာရက
| colspan="2" | {dat_d}
|-
! ကမ္မကာရက
| {acc_md}
| {acc_fnd}
|-
! ခၞံဗဒှ်ဌာန်မတန်တဴ
| colspan="2" | {loc_d}
|-
! တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| colspan="2" | {ins_d}
]=] .. template_postlude()
if alternant_multiword_spec.title then
forms.title = alternant_multiword_spec.title
else
forms.title = 'မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု <i lang="zlw-ocs">' .. forms.lemma .. '</i>'
end
if alternant_multiword_spec.manual then
forms.annotation = ""
else
local ann_parts = {}
local decls = {}
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.decl == "irreg" then
if rfind(base.lemma, "^(.*)(ój)$") then
m_table.insertIfNot(decls,"contracted pronominal")
elseif base.lemma == "jenž" or rfind(base.lemma, "^(.*)(áš)$") then
m_table.insertIfNot(decls,"soft pronominal")
elseif base.lemma == "veš" then
m_table.insertIfNot(decls,"mixed pronominal")
elseif base.lemma == "sen" then
m_table.insertIfNot(decls,"irregular pronominal")
else
m_table.insertIfNot(decls,"hard pronominal")
end
elseif rfind(base.lemma, "ý$") then
m_table.insertIfNot(decls, "hard")
elseif base.comp then
m_table.insertIfNot(decls, "short comparative")
elseif rfind(base.lemma, "í$") then
m_table.insertIfNot(decls, "soft")
elseif base.num then
if rfind(base.lemma, "^(.*)(ój)$") then
m_table.insertIfNot(decls,"soft pronominal (sometimes contracted)")
else
m_table.insertIfNot(decls,"short hard")
end
elseif base.spart then
m_table.insertIfNot(decls,"s-participle")
elseif rfind(base.lemma, "[aěe]$") then
m_table.insertIfNot(decls, "nt-participle")
elseif rfind(base.lemma, "óv$") or rfind(base.lemma, "in$") then
m_table.insertIfNot(decls, "mixed short-long")
elseif rfind(base.lemma, "^(.*)" .. com.inherently_soft_c .. "$") then
m_table.insertIfNot(decls, "short soft")
elseif rfind(base.lemma, "^(.*)" .. com.cons_c .. "$") then
m_table.insertIfNot(decls, "short hard")
end
end)
table.insert(ann_parts, table.concat(decls, " // "))
forms.annotation = " (" .. table.concat(ann_parts, ", ") .. ")"
end
forms.notes_clause = forms.footnote ~= "" and forms.footnote or ""
return m_string_utilities.format(
alternant_multiword_spec.special == "plonly" and table_spec_plonly or
alternant_multiword_spec.special == "duonly" and table_spec_duonly or
alternant_multiword_spec.special == "nodual" and table_spec_nodual or
table_spec, forms
)
end
-- Externally callable function to parse and decline an adjective given
-- user-specified arguments. Return value is WORD_SPEC, an object where the
-- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values
-- for a slot, the slot key will be missing. The value for a given slot is a
-- list of objects {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms(parent_args, pos, from_headword, def)
local params = {
[1] = {},
vowel_alt = {},
pos = {},
json = {type = "boolean"}, -- for use with bots
title = {},
pagename = {},
}
for slot, _ in pairs(input_adjective_slots) do
params[slot] = {}
end
-- Only default param 1 when displaying the template.
local args = require("Module:parameters").process(parent_args, params)
local SUBPAGE = mw.loadData("Module:headword/data").pagename
local pagename = args.pagename or SUBPAGE
vowel_alt = args.vowel_alt
if not args[1] then
if SUBPAGE == "zlw-ocs-adecl" then
args[1] = "měkký"
else
args[1] = pagename
end
end
local parse_props = {
parse_indicator_spec = parse_indicator_spec,
allow_default_indicator = true,
allow_blank_lemma = true,
}
local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props)
alternant_multiword_spec.pos = args.pos
alternant_multiword_spec.title = args.title
alternant_multiword_spec.forms = {}
normalize_all_lemmas(alternant_multiword_spec, pagename)
detect_all_indicator_specs(alternant_multiword_spec)
check_allowed_overrides(alternant_multiword_spec, args)
local inflect_props = {
slot_table = get_output_adjective_slots(alternant_multiword_spec),
inflect_word_spec = decline_adjective,
}
iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)
-- Do non-accusative overrides so they get copied to the accusative forms appropriately.
process_overrides(alternant_multiword_spec.forms, args)
set_accusative(alternant_multiword_spec)
-- Do accusative overrides after copying the accusative forms.
process_overrides(alternant_multiword_spec.forms, args, "do acc")
add_categories(alternant_multiword_spec)
if args.json and not from_headword then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Externally callable function to parse and decline an adjective where all
-- forms are given manually. Return value is WORD_SPEC, an object where the
-- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values
-- for a slot, the slot key will be missing. The value for a given slot is a
-- list of objects {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms_manual(parent_args, pos, from_headword, def)
local params = {
pos = {},
special = {},
json = {type = "boolean"}, -- for use with bots
title = {},
}
for slot, _ in pairs(input_adjective_slots) do
params[slot] = {}
end
local args = require("Module:parameters").process(parent_args, params)
local alternant_multiword_spec = {
pos = args.pos,
special = args.special,
title = args.title,
forms = {},
manual = true,
}
check_allowed_overrides(alternant_multiword_spec, args)
-- Do non-accusative overrides so they get copied to the accusative forms appropriately.
process_overrides(alternant_multiword_spec.forms, args)
set_accusative(alternant_multiword_spec)
-- Do accusative overrides after copying the accusative forms.
process_overrides(alternant_multiword_spec.forms, args, "do acc")
add_categories(alternant_multiword_spec)
if args.json and not from_headword then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Entry point for {{zlw-ocs-adecl}}. Template-callable function to parse and decline
-- an adjective given user-specified arguments and generate a displayable table
-- of the declined forms.
function export.show(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms(parent_args)
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang)
end
-- Entry point for {{zlw-ocs-adecl-manual}}. Template-callable function to parse and
-- decline an adjective given manually-specified inflections and generate a
-- displayable table of the declined forms.
function export.show_manual(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms_manual(parent_args)
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang)
end
return export
iiq20d63c679da9tfrcgcx9rwkpvh5z
မဝ်ဂျူ:zlw-ocs-adjective/doc
828
296554
398031
2026-07-09T13:58:10Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|zlw-ocs}} </includeonly>"
398031
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|zlw-ocs}}
</includeonly>
0pcevpkbalm4klnl6k49e3xzn9dt0gh
ကဏ္ဍ:နာမ်ဣတ္တိလိၚ်ချက်ခ်တြေံဂမၠိုၚ်
14
296555
398032
2026-07-09T14:02:12Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်|ချက်ခ်]] » :ကဏ္ဍ:ဝေါဟ..."
398032
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်|ချက်ခ်]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကချက်ခ်ဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ချက်ခ်ဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] » [[:ကဏ္ဍ:နာမ်ချက်ခ်ဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဗက်အလိုက်လိၚ်ဂမၠိုၚ်]] »'''ဣတ္တိလိၚ်ဂမၠိုၚ်'''
:နာမ်ချက်ခ်မဆေၚ်စပ်ကဵုလိၚ်ဗြဴ၊ ဥပမာ ဆေၚ်စပ်ကဵုကဏ္ဍလုပ်အဝေါၚ်လိၚ်အတေံ (အကြာတၞဟ်ခြာအရာမွဲမွဲအဂှ်) မက္တဵုဒှ်ဣတ္တိလိၚ်ဂမၠိုၚ်။
[[ကဏ္ဍ:နာမ်ချက်ခ်ဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဣ]][[ကဏ္ဍ:နာမ်ဣတ္တိလိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
iq9fxjldnehc7mpn2ai4arflnfjfvtk
398033
398032
2026-07-09T14:05:19Z
咽頭べさ
33
398033
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်တြေံ|ချက်ခ်တြေံ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကချက်ခ်တြေံဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ချက်ခ်တြေံဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] » [[:ကဏ္ဍ:နာမ်ချက်ခ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဗက်အလိုက်လိၚ်ဂမၠိုၚ်]] »'''ဣတ္တိလိၚ်ဂမၠိုၚ်'''
:နာမ်ချက်ခ်တြေံမဆေၚ်စပ်ကဵုလိၚ်ဗြဴ၊ ဥပမာ ဆေၚ်စပ်ကဵုကဏ္ဍလုပ်အဝေါၚ်လိၚ်အတေံ (အကြာတၞဟ်ခြာအရာမွဲမွဲအဂှ်) မက္တဵုဒှ်ဣတ္တိလိၚ်ဂမၠိုၚ်။
[[ကဏ္ဍ:နာမ်ချက်ခ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဣ]][[ကဏ္ဍ:နာမ်ဣတ္တိလိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
jd5m1cgdbwz8vdrbevsyooo2s993chr
ကဏ္ဍ:နာမ်ချက်ခ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်
14
296556
398034
2026-07-09T14:06:39Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်တြေံ|ချက်ခ်တြေံ]] » :..."
398034
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်တြေံ|ချက်ခ်တြေံ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကချက်ခ်တြေံဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ချက်ခ်တြေံဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] »'''ဗက်အလိုက်လိၚ်ဂမၠိုၚ်'''
:နာမ်ချက်ခ်တြေံမဂကောံလဝ်နူကဵုဆေၚ်စပ်ကဵုလိၚ်ပွမတုဲဒှ်နကဵုအတေံ။
[[ကဏ္ဍ:နာမ်ချက်ခ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:နာမ်နူကဵုလိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ခ]]
dc99eq1uzpvrvlh7nu4vbgc1uag3fft
ကဏ္ဍ:ကာရန်:ချက်ခ်/ɛv
14
296557
398035
2026-07-09T14:12:01Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်|ချက်ခ်]] » :ကဏ္ဍ:ကာရန..."
398035
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာချက်ခ်|ချက်ခ်]] » [[:ကဏ္ဍ:ကာရန်:ချက်ခ်|ကာရန်ဂမၠိုၚ်]] » -ɛv
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာချက်ခ်|ချက်ခ်]]မနွံကာရန် ɛv ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:ချက်ခ်|ɛv]]
cfsxsh5w5evbvyc049uiie1c5thayhn
ကဏ္ဍ:ဝေါဟာခမ်နေတ်ကၠုၚ်နူဝေါဟာခမ်နေတ် အဒေါဝ်ဂမၠိုၚ်
14
296558
398036
2026-07-09T14:13:57Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]"
398036
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]
ncldm8jo59yamd47lrt7d7djgm2uomw
ကဏ္ဍ:ဝေါဟာခမ်နေတ်ဂွံလဝ်အာဲကၟာဲနူဝေါဟာခမ်နေတ် အဒေါဝ်ဂမၠိုၚ်
14
296559
398037
2026-07-09T14:14:59Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]"
398037
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]
ncldm8jo59yamd47lrt7d7djgm2uomw
ကဏ္ဍ:ဝေါဟာခမ်နေတ်မဆက်ဆေန်စှ်ေကၠုၚ်နူတံရိုဟ်အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာနကဵုအဆက်ဝေါဟာ *krep-
14
296560
398038
2026-07-09T14:16:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]"
398038
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာခမ်နေတ်]]
ncldm8jo59yamd47lrt7d7djgm2uomw
krevva
0
296561
398039
2026-07-09T14:19:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ခမ်နေတ်== ====နာမဝိသေသန==== {{head|kw|ဗီုပြင်နာမဝိသေသန}} # {{comparative of|kw|krev}}"
398039
wikitext
text/x-wiki
==ခမ်နေတ်==
====နာမဝိသေသန====
{{head|kw|ဗီုပြင်နာမဝိသေသန}}
# {{comparative of|kw|krev}}
qxhsoi8zylg59miehreloywcffjgqn7
398040
398039
2026-07-09T14:20:37Z
咽頭べさ
33
398040
wikitext
text/x-wiki
==ခမ်နေတ်==
====နာမဝိသေသန====
{{head|kw|ဗီုပြၚ်နာမဝိသေသန}}
# {{comparative of|kw|krev}}
hvaubg090unw0edev2j1zgvecdnh2tm
ကဏ္ဍ:ဗီုပြၚ်နာမဝိသေသနခမ်နေတ်ဂမၠိုၚ်
14
296562
398041
2026-07-09T14:22:58Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာခမ်နေတ်|ခမ်နေတ်]] » :ကဏ္ဍ:ဗီ..."
398041
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာခမ်နေတ်|ခမ်နေတ်]] » [[:ကဏ္ဍ:ဗီုပြၚ်အပြံၚ်အလှာဲခမ်နေတ်ဂမၠိုၚ်|ဗီုပြၚ်ဝေါဟာတံသ္ဇိုၚ်]] » '''ဗီုပြၚ်နာမဝိသေသနဂမၠိုၚ်'''
:နာမဝိသေသနခမ်နေတ်မပြံၚ်လှာဲနကဵုအဆက်အဆေန်မဆေၚ်စပ်ကဵုမဓမံက်ထ္ၜးသဒ္ဒာဗီုပြၚ်အဓိကတၞဟ်ဂမၠိုၚ်။
[[ကဏ္ဍ:ဘာသာခမ်နေတ်]][[ကဏ္ဍ:နာမဝိသေသနခမ်နေတ်ဂမၠိုၚ်]][[ကဏ္ဍ:ဗီုပြၚ်နာမဝိသေသနဗက်အလိုက်အရေဝ်ဘာသာ|ခ]]
dlqjbpx77p7vcljfl8xcqisgrg2kas9
crev
0
296563
398042
2026-07-09T14:24:35Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ခမ်နေတ်== ====နာမဝိသေသန==== {{head|kw|adjective}} # {{alternative spelling of|kw|krev}}"
398042
wikitext
text/x-wiki
==ခမ်နေတ်==
====နာမဝိသေသန====
{{head|kw|adjective}}
# {{alternative spelling of|kw|krev}}
5li00h3l6a0n8gy6hlvkkqugq1diyr3
ဗီုပြၚ်သိုၚ်တၟိ:သဲလ်တေတ်-အခိုက်ကၞာ/kriɸmos
118
296564
398043
2026-07-09T14:26:39Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==သဲလ်တေတ်-အခိုက်ကၞာ== ===နာမ်=== {{cel-noun|f}} # {{alt form|cel-pro|*krixs}}"
398043
wikitext
text/x-wiki
{{reconstructed}}
==သဲလ်တေတ်-အခိုက်ကၞာ==
===နာမ်===
{{cel-noun|f}}
# {{alt form|cel-pro|*krixs}}
oumadlem83kiq2cnxpt5esq3qgk5n5g
ဗီုပြၚ်သိုၚ်တၟိ:သဲလ်တေတ်-အခိုက်ကၞာ/krixs
118
296565
398044
2026-07-09T14:29:53Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==သဲလ်တေတ်-အခိုက်ကၞာ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|cel-pro|ine-pro|*krep-}} ===နာမ်=== {{cel-noun|f}} # ဇကုဇကောဝ်။ ====ပရေၚ်ကၠောံ==== {{cel-decl-noun-cons-mf|kriɸ}} ===မဒုၚ်လွဳစ=== * {{desc|mga|crí|qq=poetic}}"
398044
wikitext
text/x-wiki
{{reconstructed}}
==သဲလ်တေတ်-အခိုက်ကၞာ==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{der|cel-pro|ine-pro|*krep-}}
===နာမ်===
{{cel-noun|f}}
# ဇကုဇကောဝ်။
====ပရေၚ်ကၠောံ====
{{cel-decl-noun-cons-mf|kriɸ}}
===မဒုၚ်လွဳစ===
* {{desc|mga|crí|qq=poetic}}
4ax17elg2mj23s5162hhp1rjbqphnbv
ထာမ်ပလိက်:cel-decl-noun-cons-mf
10
296566
398045
2026-07-09T14:30:31Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:cel-nouns|cons-mf}}<noinclude>{{documentation}}</noinclude>"
398045
wikitext
text/x-wiki
{{#invoke:cel-nouns|cons-mf}}<noinclude>{{documentation}}</noinclude>
1y38p3ibzcvsnbhz69gby624j1dn721
ထာမ်ပလိက်:cel-decl-noun-cons-mf/documentation
10
296567
398046
2026-07-09T14:32:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်သဲလ်တေတ်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|cons-mf]] </includeonly>"
398046
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်သဲလ်တေတ်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|cons-mf]]
</includeonly>
c8r7elozb39nfidommur0qzh9c96d7w
ကဏ္ဍ:နာမ်သဲလ်တေတ်-အခိုက်ကၞာနကဵုဝေါဟာမစှ်ေအလိုက်ဂမၠိုၚ်
14
296568
398047
2026-07-09T14:33:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသဲလ်တေတ်-အခိုက်ကၞာ]]"
398047
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသဲလ်တေတ်-အခိုက်ကၞာ]]
rr73q27b4j1nz9ofisvbi8ouvw8up11
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/krep-
118
296569
398048
2026-07-09T14:35:47Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/kerp-}} {{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{ine-root}} # ဇကုဇကောဝ်။ ===ပွံၚ်နဲတၞဟ်=== * {{alt|ine-pro|*ḱrep-}}"
398048
wikitext
text/x-wiki
{{also|ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/kerp-}}
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{ine-root}}
# ဇကုဇကောဝ်။
===ပွံၚ်နဲတၞဟ်===
* {{alt|ine-pro|*ḱrep-}}
f32nnt8qxnu05rlwi9k6876rlaz08cb
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/ḱrep-
118
296570
398049
2026-07-09T14:36:57Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{ine-root}} # {{alt form|ine-pro|*krep-}}"
398049
wikitext
text/x-wiki
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{ine-root}}
# {{alt form|ine-pro|*krep-}}
sgjzq2dhlp7mwk71z6ek03q6ykfmi8m
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/kerp-
118
296571
398050
2026-07-09T14:46:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/krep-}} {{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{ine-root}} # သကဵုကုတ်ပ္တိတ်၊ နိၚ်။ # သကဵုလပှ်တိုန်၊ ခ္ၜၚ်၊..."
398050
wikitext
text/x-wiki
{{also|ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/krep-}}
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{ine-root}}
# သကဵုကုတ်ပ္တိတ်၊ နိၚ်။
# သကဵုလပှ်တိုန်၊ ခ္ၜၚ်၊ သကဵုကေတ် ကဵု ယိုက်ဏာဒၞာဲဇမ္ၚောဲတေံ။
# သကဵုၜှ်၊ ပလှ်။
# သကဵုရတ်၊ ရတ်သြောံ။
jay6u4fd0kqf13g63ht2sx2234jz68i
ဗီုပြၚ်သိုၚ်တၟိ:ပရေတ်တိုန်နေတ်-အခိုက်ကၞာ/krɨβ̃
118
296572
398051
2026-07-09T14:50:05Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==ပရေတ်တိုန်နေတ်-အခိုက်ကၞာ== ===နိရုတ်=== {{root|cel-bry-pro|ine-pro|*krep-}} ဝေါဟာကၠုၚ်နူ {{inh|cel-bry-pro|cel-pro|*kriɸmos}} ====နာမဝိသေသန==== {{cel-bry-adj}} # ထတ်မ္ၚိုဟ်။ ===မဒုၚ်လွဳစ=== * {{desc|xbm|creff}} ** {{desc|br|kreñv}} * {{desc|oco|crif}} **..."
398051
wikitext
text/x-wiki
{{reconstructed}}
==ပရေတ်တိုန်နေတ်-အခိုက်ကၞာ==
===နိရုတ်===
{{root|cel-bry-pro|ine-pro|*krep-}}
ဝေါဟာကၠုၚ်နူ {{inh|cel-bry-pro|cel-pro|*kriɸmos}}
====နာမဝိသေသန====
{{cel-bry-adj}}
# ထတ်မ္ၚိုဟ်။
===မဒုၚ်လွဳစ===
* {{desc|xbm|creff}}
** {{desc|br|kreñv}}
* {{desc|oco|crif}}
** {{desc|cnx|creff|cref}}
*** {{desc|kw|krev|crev|cref}}
* {{desc|wlm|cryf}}
** {{desc|cy|cryf}}
83brqvvy38252c72gso3zf920lbupdy
crif
0
296573
398052
2026-07-09T14:52:24Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ခမ်နေတ်တြေံ== ====နာမဝိသေသန==== {{head|oco|နာမဝိသေသန}} # ထတ်မ္ၚိုဟ်။"
398052
wikitext
text/x-wiki
==ခမ်နေတ်တြေံ==
====နာမဝိသေသန====
{{head|oco|နာမဝိသေသန}}
# ထတ်မ္ၚိုဟ်။
kvmba5jro1fh0v2759s8vxfww1jnzwk
creff
0
296574
398053
2026-07-09T14:57:12Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ယဝ်လာ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|yol|enm|craft|creft}}၊ နကဵုအဆက်နူ {{inh|yol|ang|cræft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|yol|gmw-pro|*kraftu}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|yol|/kre̞f/}} ===နာမ်=== {{head|yol|noun}} # ပၞော်ဗၠံ။"
398053
wikitext
text/x-wiki
==ယဝ်လာ==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|yol|enm|craft|creft}}၊ နကဵုအဆက်နူ {{inh|yol|ang|cræft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|yol|gmw-pro|*kraftu}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|yol|/kre̞f/}}
===နာမ်===
{{head|yol|noun}}
# ပၞော်ဗၠံ။
g0tzbr1rocko0h8mbel80hzyosf4257
ဗီုပြၚ်သိုၚ်တၟိ:ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ/kraftu
118
296575
398054
2026-07-09T15:03:50Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|gmw-pro|gem-pro|*kraftuz}} ===နာမ်=== {{head|gmw-pro|noun|g=m}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ # ပရေၚ်စိုန်သ္ကီု။ ====ပရေၚ်ကၠောံ==== {{gmw-infl-noun-u}} ===မဒုၚ..."
398054
wikitext
text/x-wiki
{{reconstructed}}
==ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|gmw-pro|gem-pro|*kraftuz}}
===နာမ်===
{{head|gmw-pro|noun|g=m}}
# ဇြဟတ်ဇၟူ၊ ဇြဟတ်။
# ပရေၚ်စိုန်သ္ကီု။
====ပရေၚ်ကၠောံ====
{{gmw-infl-noun-u}}
===မဒုၚ်လွဳစ===
* {{desctree|ang|cræft|g=m}}
* {{desc|ofs|kreft|kraft|g2=f}}
** {{desc|stq|Kraft}}
** {{desc|fy|krêft}}
* {{desctree|osx|kraft|g=m,f|noalts=1}}
* {{desctree|odt|craft|g=f,m|noalts=1}}
* {{desc|goh|kraft|g=f,m}}
** {{desc|gmh|kraft}}
*** {{desc|bar|Kråft}}
*** {{desc|de|Kraft}}
*** {{desc|hrx|Kraft}}
*** {{desc|lb|Kraaft}}
*** {{desc|mhn|kròft}}
*** {{desc|wym|kraoft}}
*** {{desc|yi|קראַפֿט}}
7hcbltlqe4yh9yu1lmjmv1t3k4bu0qz
ထာမ်ပလိက်:gmw-infl-noun-u
10
296576
398055
2026-07-09T15:04:40Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:gmw-noun|u}}<noinclude>{{documentation}}</noinclude>"
398055
wikitext
text/x-wiki
{{#invoke:gmw-noun|u}}<noinclude>{{documentation}}</noinclude>
32mkxuavcnz1w15tot6prxncx4m7i0e
မဝ်ဂျူ:gmw-noun
828
296577
398056
2026-07-09T15:34:42Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} local lang = require("Module:languages").getByCode("gmw-pro") local insert = table.insert local ugsub = mw.ustring.gsub local ufind = mw.ustring.find local umatch = mw.ustring.match local ulen = mw.ustring.len local genders = { ["m"] = "ပုလ္လိၚ်", ["f"] = "ဣတ္တိလိၚ်", ["n"] = "နပုလ္လိၚ်", } local n_param = {set = {"s", "p"}} local function i..."
398056
Scribunto
text/plain
local export = {}
local lang = require("Module:languages").getByCode("gmw-pro")
local insert = table.insert
local ugsub = mw.ustring.gsub
local ufind = mw.ustring.find
local umatch = mw.ustring.match
local ulen = mw.ustring.len
local genders = {
["m"] = "ပုလ္လိၚ်",
["f"] = "ဣတ္တိလိၚ်",
["n"] = "နပုလ္လိၚ်",
}
local n_param = {set = {"s", "p"}}
local function inscat(data, cat)
-- insert(data.categories, lang:getCanonicalName() .. " " .. cat)
end
local function detect_j(stem)
-- match long vowel or diphthong followed by consonants
local rest, nucleus, coda = umatch(stem, "^(.-)([āēīōūąįųĀĒĪŌŪ]?̄?[aeiouAEIOU]*)([bdfghjklmnprʀstþwBDFGHJKLMNPRSTÞW]+)$")
if not rest or nucleus == "" then
error("Stem does not end in a vowel or diphthong followed by consonants")
elseif ulen(coda) > 1 or ufind(nucleus, "^[āēīōūąįųĀĒĪŌŪ]̄?$") or ufind(nucleus, "^[aeiouAEIOU][aeiouAEIOU]$") then
return "ij"
elseif ufind(rest, "^[bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*$") then
return "j"
else
error("Stem consists of multiple syllables or its weight cannot be otherwise be determined")
end
end
local function geminate(stem)
stem = stem:gsub("w$", "uw")
stem = ugsub(stem, "([bdghklmnpstþ])$", "%1%1")
return stem
end
-- Inflection functions
function export.a(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
g = {required = true, set = {"m", "n"}, template_default = "m"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local function insgendercat(cat)
-- inscat(data, genders[args.g] .. " " .. cat)
end
local stem, suffix = umatch(lemma, "^(.-)([iīu])$")
local stem_u
local nom_sg
if suffix == "ī" then
stem = stem .. "ij"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "i" then
stem = geminate(stem) .. "j"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "u" then
stem_u = stem
stem = stem .. "w"
data.info = "''wa''-stem"
-- insgendercat("wa-stem nouns")
else
stem = lemma
data.info = "''a''-stem"
-- insgendercat("a-stem nouns")
end
nom_sg = {lemma, stem .. "a"}
stem_u = stem_u or stem
data.info = genders[args.g] .. " " .. data.info
data.forms["nom|s"] = nom_sg
data.forms["acc|s"] = nom_sg
data.forms["gen|s"] = {stem .. "as"}
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ōs"}
data.forms["acc|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.an(frame)
local params = {
[1] = {template_default = "{{{1}}}ō"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local stem, suffix = umatch(lemma, "^(.-)([āō])$")
local g
if suffix == "ā" then
g = "n"
elseif suffix == "ō" then
g = "m"
else
error("an-stems must end in -ō or -ā")
end
local data = {
forms = {},
info = genders[g] .. " ''an''-stem",
categories = {},
}
-- inscat(data, genders[g] .. " an-stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = g == "n" and {lemma} or {stem .. "an"}
data.forms["gen|s"] = {stem_weak .. "ini", stem_weak .. "an"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = g == "n" and {stem .. "ōn"} or {stem .. "an"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "anō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.cons(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "consonant stem",
categories = {},
}
-- inscat(data, "consonant stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = lemma
end
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = {args.ns or lemma .. "u"}
data.forms["gen|s"] = {stem_weak .. "i"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {lemma .. "i"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "ō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.i(frame)
local params = {
[1] = {template_default = "{{{1}}}i"},
j = {template_default = "ij"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(i)$")
local stem_j, stem_weak_j
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem_j = stem .. "ij"
stem_weak_j = stem_weak .. "ij"
else
stem_j = geminate(stem) .. "j"
stem_weak_j = geminate(stem_weak) .. "j"
end
else
error("i-stems must end in -i")
end
data.info = "''i''-stem"
-- inscat(data, "i-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_weak .. "ī"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem .. "ī"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak_j .. "ō"}
data.forms["dat|p"] = {stem_weak .. "im", stem_weak_j .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
export["in"] = function(frame)
local params = {
[1] = {template_default = "{{{1}}}ī"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''īn''-stem",
categories = {},
}
-- inscat(data, "īn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ī)$")
if suffix ~= "ī" then
error("īn-stems must end in -ī")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "īn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
postprocess(args, data)
return make_table(data)
end
function export.o(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
j = true,
n = n_param,
w = {type = "boolean"},
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)([iu])$")
local stem_u
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem = stem .. "ij"
elseif umatch(stem, "^(.-)([bdfghjklmnprʀstþw-]+)(in)$") then
stem = ugsub(stem, "in$", "unn") .. "j"
else
stem = geminate(stem) .. "j"
end
data.info = "''ī''/''jō''-stem"
-- inscat(data, "ī/jō-stem nouns")
elseif suffix == "u" then
if args.w then
stem_u = stem
stem = stem .. "w"
data.info = "''wō''-stem"
-- inscat(data, "wō-stem nouns")
else
data.info = "''ō''-stem"
-- inscat(data, "ō-stem nouns")
end
else
error("ō-stems must end in -i or -u")
end
stem_u = stem_u or stem
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ā"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = {stem .. "ō"}
data.forms["acc|p"] = {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem .. "ōm", stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.on(frame)
local params = {
[1] = {template_default = "{{{1}}}ā"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''ōn''-stem",
categories = {},
}
inscat(data, "ōn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ā)$")
if suffix ~= "ā" then
error("ōn-stems must end in -ā")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ōn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
data.forms["nom|p"] = data.forms["acc|s"]
data.forms["acc|p"] = data.forms["acc|s"]
data.forms["gen|p"] = {stem .. "ōnō"}
data.forms["dat|p"] = {stem .. "ōm", stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.r(frame)
local params = {
[1] = {template_default = "{{{1}}}er"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "r-stem",
categories = {},
}
-- inscat(data, "r-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(er)$")
if suffix ~= "er" then
error("r-stems must end in -er")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ar"}
data.forms["gen|s"] = {stem .. "ur"}
data.forms["dat|s"] = {stem .. "ri"}
data.forms["ins|s"] = data.forms["dat|s"]
data.forms["nom|p"] = {stem .. "ar"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem .. "rō"}
data.forms["dat|p"] = {stem .. "rum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.u(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(u)$")
if suffix ~= "u" then
error("u-stems must end in -u")
end
data.info = "''u''-stem"
-- inscat(data, "u-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem .. "ō"}
data.forms["dat|s"] = {stem .. "iwi", stem .. "ō"}
data.forms["ins|s"] = {stem .. "u"}
data.forms["nom|p"] = {stem .. "iwi", stem .. "ō"}
data.forms["acc|p"] = {stem .. "ū"}
data.forms["gen|p"] = {stem .. "iwō"}
data.forms["dat|p"] = {stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.z(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''z''-stem",
categories = {},
}
-- inscat(data, "z-stem nouns")
local stem_i = ugsub(lemma, "e(u?[bdfghklmnprʀstþw]*)$", "i%1")
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_i .. "iʀi"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem_i .. "iʀu"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_i .. "iʀō"}
data.forms["dat|p"] = {stem_i .. "iʀum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function postprocess(args, data)
data.n = args.n
if args.n == "p" then
-- inscat(data, "pluralia tantum")
elseif args.n == "s" then
-- inscat(data, "singularia tantum")
elseif args.n then
error("Internal error: args= must be \"s\" or \"p\".")
end
for key, form in pairs(data.forms) do
-- Do not show singular or plural forms for nominals that don't have them
if (args.n == "p" and key:find("|s$")) or (args.n == "s" and key:find("|p$")) then
form = nil
end
data.forms[key] = form
end
end
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return mw.getContentLanguage():ucfirst(data.info or "")
end
local forms = data.forms[param]
if not forms then
return "—"
end
local ret = {}
for key, subform in ipairs(forms) do
-- i-umlaut
if ufind(subform, "[iīįǐj]") then
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])e(u?)([bdfghjklmnprʀstþw]+)([iīįj])", "%1i%2%3%4")
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])o([bdfghjklmnprʀstþw]+)([iīįj])", "%1u%2%3")
end
-- *u[+stress] > *o /{C,#}_C[-nasal]V[+back]
if ufind(subform, "u") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]+)u([bdfghklprʀstþw]+)([aoāōą])", "%1o%2%3")
end
-- *w > ∅ /V́_*u
if ufind(subform, "[aeiouāēīōūAEIOUĀĒĪŌŪ]wu") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)uwu", "%1ū")
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)([aeiouāēīōūAEIOUĀĒĪŌŪ])w(u)", "%1%2%3")
end
-- Mahlow's Law (*ōu > *ō / _C{#,V})
if ufind(subform, "ō[uw]") then
subform = ugsub(subform, "(ō)[uw]", "%1")
end
if ufind(subform, "ū[uw]") then
subform = ugsub(subform, "(ū)[uw]", "%1")
end
-- C[+plosive -voice] > CC /_LV (Ringe 2014:54)
if ufind(subform, "[ptkh][lr]") then
subform = ugsub(subform, "([aeiouāēīōūAEIOUĀĒĪŌŪ])([ptkh])([lr][aeiouāēīōūąįų])", "%1%2%2%3")
end
insert(ret, require("Module:links").full_link({lang = lang, alt = "*" .. subform}))
end
return table.concat(ret, ", ")
end
local wikicode = {}
insert(wikicode, [=[
{| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: solid 1px var(--wikt-palette-grey-4, #CCCCCC);"
|- style="background: var(--wikt-palette-grey-3, #CCCCCC); text-align: left;"
! class="vsToggleElement" colspan="3" | {{{info}}}
|- class="vsShow"
! style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" colspan="2" | ကိုန်ဨကဝုစ်
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| colspan="2" | {{{nom|s}}}
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| colspan="2" | {{{gen|s}}}
|- class="vsHide"
| style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဨကဝုစ်
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဗဟုဝစ်
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| {{{nom|s}}}
| {{{nom|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ကမ္မကာရက
| {{{acc|s}}}
| {{{acc|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| {{{gen|s}}}
| {{{gen|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ပြကမ္မကာရက
| {{{dat|s}}}
| {{{dat|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {{{ins|s}}}
| {{{ins|p}}}
|}]=])
return ugsub(table.concat(wikicode), "{{{([#!]?[a-z0-9|]+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang)
end
return export
ml5x1kkwyk7p9iaot33ewmhvnzahwcq
398058
398056
2026-07-09T15:39:02Z
咽頭べさ
33
398058
Scribunto
text/plain
local export = {}
local lang = require("Module:languages").getByCode("gmw-pro")
local insert = table.insert
local ugsub = mw.ustring.gsub
local ufind = mw.ustring.find
local umatch = mw.ustring.match
local ulen = mw.ustring.len
local genders = {
["m"] = "ပုလ္လိၚ်",
["f"] = "ဣတ္တိလိၚ်",
["n"] = "နပုလ္လိၚ်",
}
local n_param = {set = {"s", "p"}}
local function inscat(data, cat)
-- insert(data.categories, lang:getCanonicalName() .. " " .. cat)
end
local function detect_j(stem)
-- match long vowel or diphthong followed by consonants
local rest, nucleus, coda = umatch(stem, "^(.-)([āēīōūąįųĀĒĪŌŪ]?̄?[aeiouAEIOU]*)([bdfghjklmnprʀstþwBDFGHJKLMNPRSTÞW]+)$")
if not rest or nucleus == "" then
error("Stem does not end in a vowel or diphthong followed by consonants")
elseif ulen(coda) > 1 or ufind(nucleus, "^[āēīōūąįųĀĒĪŌŪ]̄?$") or ufind(nucleus, "^[aeiouAEIOU][aeiouAEIOU]$") then
return "ij"
elseif ufind(rest, "^[bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*$") then
return "j"
else
error("Stem consists of multiple syllables or its weight cannot be otherwise be determined")
end
end
local function geminate(stem)
stem = stem:gsub("w$", "uw")
stem = ugsub(stem, "([bdghklmnpstþ])$", "%1%1")
return stem
end
-- Inflection functions
function export.a(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
g = {required = true, set = {"m", "n"}, template_default = "m"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local function insgendercat(cat)
-- inscat(data, genders[args.g] .. " " .. cat)
end
local stem, suffix = umatch(lemma, "^(.-)([iīu])$")
local stem_u
local nom_sg
if suffix == "ī" then
stem = stem .. "ij"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "i" then
stem = geminate(stem) .. "j"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "u" then
stem_u = stem
stem = stem .. "w"
data.info = "''wa''-stem"
-- insgendercat("wa-stem nouns")
else
stem = lemma
data.info = "''a''-stem"
-- insgendercat("a-stem nouns")
end
nom_sg = {lemma, stem .. "a"}
stem_u = stem_u or stem
data.info = genders[args.g] .. " " .. data.info
data.forms["nom|s"] = nom_sg
data.forms["acc|s"] = nom_sg
data.forms["gen|s"] = {stem .. "as"}
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ōs"}
data.forms["acc|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.an(frame)
local params = {
[1] = {template_default = "{{{1}}}ō"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local stem, suffix = umatch(lemma, "^(.-)([āō])$")
local g
if suffix == "ā" then
g = "n"
elseif suffix == "ō" then
g = "m"
else
error("an-stems must end in -ō or -ā")
end
local data = {
forms = {},
info = genders[g] .. " ''an''-stem",
categories = {},
}
-- inscat(data, genders[g] .. " an-stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = g == "n" and {lemma} or {stem .. "an"}
data.forms["gen|s"] = {stem_weak .. "ini", stem_weak .. "an"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = g == "n" and {stem .. "ōn"} or {stem .. "an"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "anō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.cons(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "consonant stem",
categories = {},
}
-- inscat(data, "consonant stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = lemma
end
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = {args.ns or lemma .. "u"}
data.forms["gen|s"] = {stem_weak .. "i"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {lemma .. "i"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "ō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.i(frame)
local params = {
[1] = {template_default = "{{{1}}}i"},
j = {template_default = "ij"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(i)$")
local stem_j, stem_weak_j
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem_j = stem .. "ij"
stem_weak_j = stem_weak .. "ij"
else
stem_j = geminate(stem) .. "j"
stem_weak_j = geminate(stem_weak) .. "j"
end
else
error("i-stems must end in -i")
end
data.info = "''i''-stem"
-- inscat(data, "i-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_weak .. "ī"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem .. "ī"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak_j .. "ō"}
data.forms["dat|p"] = {stem_weak .. "im", stem_weak_j .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
export["in"] = function(frame)
local params = {
[1] = {template_default = "{{{1}}}ī"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''īn''-stem",
categories = {},
}
-- inscat(data, "īn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ī)$")
if suffix ~= "ī" then
error("īn-stems must end in -ī")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "īn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
postprocess(args, data)
return make_table(data)
end
function export.o(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
j = true,
n = n_param,
w = {type = "boolean"},
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)([iu])$")
local stem_u
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem = stem .. "ij"
elseif umatch(stem, "^(.-)([bdfghjklmnprʀstþw-]+)(in)$") then
stem = ugsub(stem, "in$", "unn") .. "j"
else
stem = geminate(stem) .. "j"
end
data.info = "''ī''/''jō''-stem"
-- inscat(data, "ī/jō-stem nouns")
elseif suffix == "u" then
if args.w then
stem_u = stem
stem = stem .. "w"
data.info = "''wō''-stem"
-- inscat(data, "wō-stem nouns")
else
data.info = "''ō''-stem"
-- inscat(data, "ō-stem nouns")
end
else
error("ō-stems must end in -i or -u")
end
stem_u = stem_u or stem
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ā"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = {stem .. "ō"}
data.forms["acc|p"] = {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem .. "ōm", stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.on(frame)
local params = {
[1] = {template_default = "{{{1}}}ā"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''ōn''-stem",
categories = {},
}
-- inscat(data, "ōn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ā)$")
if suffix ~= "ā" then
error("ōn-stems must end in -ā")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ōn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
data.forms["nom|p"] = data.forms["acc|s"]
data.forms["acc|p"] = data.forms["acc|s"]
data.forms["gen|p"] = {stem .. "ōnō"}
data.forms["dat|p"] = {stem .. "ōm", stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.r(frame)
local params = {
[1] = {template_default = "{{{1}}}er"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "r-stem",
categories = {},
}
-- inscat(data, "r-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(er)$")
if suffix ~= "er" then
error("r-stems must end in -er")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ar"}
data.forms["gen|s"] = {stem .. "ur"}
data.forms["dat|s"] = {stem .. "ri"}
data.forms["ins|s"] = data.forms["dat|s"]
data.forms["nom|p"] = {stem .. "ar"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem .. "rō"}
data.forms["dat|p"] = {stem .. "rum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.u(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(u)$")
if suffix ~= "u" then
error("u-stems must end in -u")
end
data.info = "''u''-stem"
-- inscat(data, "u-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem .. "ō"}
data.forms["dat|s"] = {stem .. "iwi", stem .. "ō"}
data.forms["ins|s"] = {stem .. "u"}
data.forms["nom|p"] = {stem .. "iwi", stem .. "ō"}
data.forms["acc|p"] = {stem .. "ū"}
data.forms["gen|p"] = {stem .. "iwō"}
data.forms["dat|p"] = {stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.z(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "''z''-stem",
categories = {},
}
-- inscat(data, "z-stem nouns")
local stem_i = ugsub(lemma, "e(u?[bdfghklmnprʀstþw]*)$", "i%1")
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_i .. "iʀi"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem_i .. "iʀu"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_i .. "iʀō"}
data.forms["dat|p"] = {stem_i .. "iʀum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function postprocess(args, data)
data.n = args.n
if args.n == "p" then
-- inscat(data, "pluralia tantum")
elseif args.n == "s" then
-- inscat(data, "singularia tantum")
elseif args.n then
error("Internal error: args= must be \"s\" or \"p\".")
end
for key, form in pairs(data.forms) do
-- Do not show singular or plural forms for nominals that don't have them
if (args.n == "p" and key:find("|s$")) or (args.n == "s" and key:find("|p$")) then
form = nil
end
data.forms[key] = form
end
end
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return mw.getContentLanguage():ucfirst(data.info or "")
end
local forms = data.forms[param]
if not forms then
return "—"
end
local ret = {}
for key, subform in ipairs(forms) do
-- i-umlaut
if ufind(subform, "[iīįǐj]") then
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])e(u?)([bdfghjklmnprʀstþw]+)([iīįj])", "%1i%2%3%4")
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])o([bdfghjklmnprʀstþw]+)([iīįj])", "%1u%2%3")
end
-- *u[+stress] > *o /{C,#}_C[-nasal]V[+back]
if ufind(subform, "u") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]+)u([bdfghklprʀstþw]+)([aoāōą])", "%1o%2%3")
end
-- *w > ∅ /V́_*u
if ufind(subform, "[aeiouāēīōūAEIOUĀĒĪŌŪ]wu") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)uwu", "%1ū")
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)([aeiouāēīōūAEIOUĀĒĪŌŪ])w(u)", "%1%2%3")
end
-- Mahlow's Law (*ōu > *ō / _C{#,V})
if ufind(subform, "ō[uw]") then
subform = ugsub(subform, "(ō)[uw]", "%1")
end
if ufind(subform, "ū[uw]") then
subform = ugsub(subform, "(ū)[uw]", "%1")
end
-- C[+plosive -voice] > CC /_LV (Ringe 2014:54)
if ufind(subform, "[ptkh][lr]") then
subform = ugsub(subform, "([aeiouāēīōūAEIOUĀĒĪŌŪ])([ptkh])([lr][aeiouāēīōūąįų])", "%1%2%2%3")
end
insert(ret, require("Module:links").full_link({lang = lang, alt = "*" .. subform}))
end
return table.concat(ret, ", ")
end
local wikicode = {}
insert(wikicode, [=[
{| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: solid 1px var(--wikt-palette-grey-4, #CCCCCC);"
|- style="background: var(--wikt-palette-grey-3, #CCCCCC); text-align: left;"
! class="vsToggleElement" colspan="3" | {{{info}}}
|- class="vsShow"
! style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" colspan="2" | ကိုန်ဨကဝုစ်
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| colspan="2" | {{{nom|s}}}
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| colspan="2" | {{{gen|s}}}
|- class="vsHide"
| style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဨကဝုစ်
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဗဟုဝစ်
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| {{{nom|s}}}
| {{{nom|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ကမ္မကာရက
| {{{acc|s}}}
| {{{acc|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| {{{gen|s}}}
| {{{gen|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ပြကမ္မကာရက
| {{{dat|s}}}
| {{{dat|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {{{ins|s}}}
| {{{ins|p}}}
|}]=])
return ugsub(table.concat(wikicode), "{{{([#!]?[a-z0-9|]+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang)
end
return export
et6jew2jo0u6hafjnde7t7a8mqu6jgg
398061
398058
2026-07-09T15:50:21Z
咽頭べさ
33
398061
Scribunto
text/plain
local export = {}
local lang = require("Module:languages").getByCode("gmw-pro")
local insert = table.insert
local ugsub = mw.ustring.gsub
local ufind = mw.ustring.find
local umatch = mw.ustring.match
local ulen = mw.ustring.len
local genders = {
["m"] = "ပုလ္လိၚ်",
["f"] = "ဣတ္တိလိၚ်",
["n"] = "နပုလ္လိၚ်",
}
local n_param = {set = {"s", "p"}}
local function inscat(data, cat)
-- insert(data.categories, lang:getCanonicalName() .. " " .. cat)
end
local function detect_j(stem)
-- match long vowel or diphthong followed by consonants
local rest, nucleus, coda = umatch(stem, "^(.-)([āēīōūąįųĀĒĪŌŪ]?̄?[aeiouAEIOU]*)([bdfghjklmnprʀstþwBDFGHJKLMNPRSTÞW]+)$")
if not rest or nucleus == "" then
error("Stem does not end in a vowel or diphthong followed by consonants")
elseif ulen(coda) > 1 or ufind(nucleus, "^[āēīōūąįųĀĒĪŌŪ]̄?$") or ufind(nucleus, "^[aeiouAEIOU][aeiouAEIOU]$") then
return "ij"
elseif ufind(rest, "^[bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*$") then
return "j"
else
error("Stem consists of multiple syllables or its weight cannot be otherwise be determined")
end
end
local function geminate(stem)
stem = stem:gsub("w$", "uw")
stem = ugsub(stem, "([bdghklmnpstþ])$", "%1%1")
return stem
end
-- Inflection functions
function export.a(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
g = {required = true, set = {"m", "n"}, template_default = "m"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local function insgendercat(cat)
-- inscat(data, genders[args.g] .. " " .. cat)
end
local stem, suffix = umatch(lemma, "^(.-)([iīu])$")
local stem_u
local nom_sg
if suffix == "ī" then
stem = stem .. "ij"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "i" then
stem = geminate(stem) .. "j"
data.info = "''ja''-stem"
-- insgendercat("ja-stem nouns")
elseif suffix == "u" then
stem_u = stem
stem = stem .. "w"
data.info = "''wa''-stem"
-- insgendercat("wa-stem nouns")
else
stem = lemma
data.info = "''a''-stem"
-- insgendercat("a-stem nouns")
end
nom_sg = {lemma, stem .. "a"}
stem_u = stem_u or stem
data.info = genders[args.g] .. " " .. data.info
data.forms["nom|s"] = nom_sg
data.forms["acc|s"] = nom_sg
data.forms["gen|s"] = {stem .. "as"}
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ōs"}
data.forms["acc|p"] = args.g == "n" and {stem_u .. "u"} or {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.an(frame)
local params = {
[1] = {template_default = "{{{1}}}ō"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local stem, suffix = umatch(lemma, "^(.-)([āō])$")
local g
if suffix == "ā" then
g = "n"
elseif suffix == "ō" then
g = "m"
else
error("an-stems must end in -ō or -ā")
end
local data = {
forms = {},
info = genders[g] .. " ''an''-stem",
categories = {},
}
-- inscat(data, genders[g] .. " an-stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = g == "n" and {lemma} or {stem .. "an"}
data.forms["gen|s"] = {stem_weak .. "ini", stem_weak .. "an"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = g == "n" and {stem .. "ōn"} or {stem .. "an"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "anō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.cons(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "consonant stem",
categories = {},
}
-- inscat(data, "consonant stem nouns")
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = lemma
end
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = {args.ns or lemma .. "u"}
data.forms["gen|s"] = {stem_weak .. "i"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {lemma .. "i"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak .. "ō"}
data.forms["dat|p"] = {stem_weak .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.i(frame)
local params = {
[1] = {template_default = "{{{1}}}i"},
j = {template_default = "ij"},
n = n_param,
wk = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(i)$")
local stem_j, stem_weak_j
if args.wk then
stem_weak = args.wk
-- inscat(data, "irregular nouns")
else
stem_weak = stem
end
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem_j = stem .. "ij"
stem_weak_j = stem_weak .. "ij"
else
stem_j = geminate(stem) .. "j"
stem_weak_j = geminate(stem_weak) .. "j"
end
else
error("i-stems must end in -i")
end
data.info = "''i''-stem"
-- inscat(data, "i-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_weak .. "ī"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem .. "ī"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_weak_j .. "ō"}
data.forms["dat|p"] = {stem_weak .. "im", stem_weak_j .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
export["in"] = function(frame)
local params = {
[1] = {template_default = "{{{1}}}ī"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "တံမအရေဝ်-''īn''",
categories = {},
}
-- inscat(data, "īn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ī)$")
if suffix ~= "ī" then
error("īn-stems must end in -ī")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "īn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
postprocess(args, data)
return make_table(data)
end
function export.o(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
j = true,
n = n_param,
w = {type = "boolean"},
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)([iu])$")
local stem_u
if suffix == "i" then
if (args.j or detect_j(stem)) == "ij" then
stem = stem .. "ij"
elseif umatch(stem, "^(.-)([bdfghjklmnprʀstþw-]+)(in)$") then
stem = ugsub(stem, "in$", "unn") .. "j"
else
stem = geminate(stem) .. "j"
end
data.info = "''ī''/''jō''-stem"
-- inscat(data, "ī/jō-stem nouns")
elseif suffix == "u" then
if args.w then
stem_u = stem
stem = stem .. "w"
data.info = "''wō''-stem"
-- inscat(data, "wō-stem nouns")
else
data.info = "''ō''-stem"
-- inscat(data, "ō-stem nouns")
end
else
error("ō-stems must end in -i or -u")
end
stem_u = stem_u or stem
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ā"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = {stem .. "ē"}
data.forms["ins|s"] = {stem_u .. "u"}
data.forms["nom|p"] = {stem .. "ō"}
data.forms["acc|p"] = {stem .. "ā"}
data.forms["gen|p"] = {stem .. "ō"}
data.forms["dat|p"] = {stem .. "ōm", stem_u .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.on(frame)
local params = {
[1] = {template_default = "{{{1}}}ā"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "တံမအရေဝ်-''ōn''",
categories = {},
}
-- inscat(data, "ōn-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(ā)$")
if suffix ~= "ā" then
error("ōn-stems must end in -ā")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ōn"}
data.forms["gen|s"] = data.forms["acc|s"]
data.forms["dat|s"] = data.forms["acc|s"]
data.forms["ins|s"] = data.forms["acc|s"]
data.forms["nom|p"] = data.forms["acc|s"]
data.forms["acc|p"] = data.forms["acc|s"]
data.forms["gen|p"] = {stem .. "ōnō"}
data.forms["dat|p"] = {stem .. "ōm", stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.r(frame)
local params = {
[1] = {template_default = "{{{1}}}er"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "r-stem",
categories = {},
}
-- inscat(data, "r-stem nouns")
local stem, suffix = umatch(lemma, "^(.-)(er)$")
if suffix ~= "er" then
error("r-stems must end in -er")
end
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = {stem .. "ar"}
data.forms["gen|s"] = {stem .. "ur"}
data.forms["dat|s"] = {stem .. "ri"}
data.forms["ins|s"] = data.forms["dat|s"]
data.forms["nom|p"] = {stem .. "ar"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem .. "rō"}
data.forms["dat|p"] = {stem .. "rum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.u(frame)
local params = {
[1] = {template_default = "{{{1}}}u"},
n = n_param,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = nil,
categories = {},
}
local stem, suffix = umatch(lemma, "^(.-)(u)$")
if suffix ~= "u" then
error("u-stems must end in -u")
end
data.info = "တံမအရေဝ်-''u''"
-- inscat(data, "u-stem nouns")
data.forms["nom|s"] = {lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem .. "ō"}
data.forms["dat|s"] = {stem .. "iwi", stem .. "ō"}
data.forms["ins|s"] = {stem .. "u"}
data.forms["nom|p"] = {stem .. "iwi", stem .. "ō"}
data.forms["acc|p"] = {stem .. "ū"}
data.forms["gen|p"] = {stem .. "iwō"}
data.forms["dat|p"] = {stem .. "um"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function export.z(frame)
local params = {
[1] = {template_default = "{{{1}}}"},
n = n_param,
ns = true,
pagename = true,
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lemma = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
forms = {},
info = "တံမအရေဝ်-''z''",
categories = {},
}
-- inscat(data, "z-stem nouns")
local stem_i = ugsub(lemma, "e(u?[bdfghklmnprʀstþw]*)$", "i%1")
if args.ns then
-- inscat(data, "irregular nouns")
end
data.forms["nom|s"] = {args.ns or lemma}
data.forms["acc|s"] = data.forms["nom|s"]
data.forms["gen|s"] = {stem_i .. "iʀi"}
data.forms["dat|s"] = data.forms["gen|s"]
data.forms["ins|s"] = data.forms["gen|s"]
data.forms["nom|p"] = {stem_i .. "iʀu"}
data.forms["acc|p"] = data.forms["nom|p"]
data.forms["gen|p"] = {stem_i .. "iʀō"}
data.forms["dat|p"] = {stem_i .. "iʀum"}
data.forms["ins|p"] = data.forms["dat|p"]
postprocess(args, data)
return make_table(data)
end
function postprocess(args, data)
data.n = args.n
if args.n == "p" then
-- inscat(data, "pluralia tantum")
elseif args.n == "s" then
-- inscat(data, "singularia tantum")
elseif args.n then
error("Internal error: args= must be \"s\" or \"p\".")
end
for key, form in pairs(data.forms) do
-- Do not show singular or plural forms for nominals that don't have them
if (args.n == "p" and key:find("|s$")) or (args.n == "s" and key:find("|p$")) then
form = nil
end
data.forms[key] = form
end
end
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return mw.getContentLanguage():ucfirst(data.info or "")
end
local forms = data.forms[param]
if not forms then
return "—"
end
local ret = {}
for key, subform in ipairs(forms) do
-- i-umlaut
if ufind(subform, "[iīįǐj]") then
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])e(u?)([bdfghjklmnprʀstþw]+)([iīįj])", "%1i%2%3%4")
subform = ugsub(subform, "([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW])o([bdfghjklmnprʀstþw]+)([iīįj])", "%1u%2%3")
end
-- *u[+stress] > *o /{C,#}_C[-nasal]V[+back]
if ufind(subform, "u") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]+)u([bdfghklprʀstþw]+)([aoāōą])", "%1o%2%3")
end
-- *w > ∅ /V́_*u
if ufind(subform, "[aeiouāēīōūAEIOUĀĒĪŌŪ]wu") then
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)uwu", "%1ū")
subform = ugsub(subform, "^([bdfghjklmnprʀstþwBDFGHJKLMNPRƦSTÞW]*)([aeiouāēīōūAEIOUĀĒĪŌŪ])w(u)", "%1%2%3")
end
-- Mahlow's Law (*ōu > *ō / _C{#,V})
if ufind(subform, "ō[uw]") then
subform = ugsub(subform, "(ō)[uw]", "%1")
end
if ufind(subform, "ū[uw]") then
subform = ugsub(subform, "(ū)[uw]", "%1")
end
-- C[+plosive -voice] > CC /_LV (Ringe 2014:54)
if ufind(subform, "[ptkh][lr]") then
subform = ugsub(subform, "([aeiouāēīōūAEIOUĀĒĪŌŪ])([ptkh])([lr][aeiouāēīōūąįų])", "%1%2%2%3")
end
insert(ret, require("Module:links").full_link({lang = lang, alt = "*" .. subform}))
end
return table.concat(ret, ", ")
end
local wikicode = {}
insert(wikicode, [=[
{| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: solid 1px var(--wikt-palette-grey-4, #CCCCCC);"
|- style="background: var(--wikt-palette-grey-3, #CCCCCC); text-align: left;"
! class="vsToggleElement" colspan="3" | {{{info}}}
|- class="vsShow"
! style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" colspan="2" | ကိုန်ဨကဝုစ်
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| colspan="2" | {{{nom|s}}}
|- class="vsShow"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| colspan="2" | {{{gen|s}}}
|- class="vsHide"
| style="width: 9em;" |
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဨကဝုစ်
! style="width: 15em; background: var(--wikt-palette-grey-2, #DDDDDD);" | ကိုန်ဗဟုဝစ်
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | မဒုၚ်ယၟု
| {{{nom|s}}}
| {{{nom|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ကမ္မကာရက
| {{{acc|s}}}
| {{{acc|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ဗဳဇဂကူ
| {{{gen|s}}}
| {{{gen|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | ပြကမ္မကာရက
| {{{dat|s}}}
| {{{dat|p}}}
|- class="vsHide"
! style="background: var(--wikt-palette-grey-1, #EEEEEE)" | တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်
| {{{ins|s}}}
| {{{ins|p}}}
|}]=])
return ugsub(table.concat(wikicode), "{{{([#!]?[a-z0-9|]+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang)
end
return export
b8urdic3tfnnhi07apiqpgkh9rwgzwe
မဝ်ဂျူ:gmw-noun/doc
828
296578
398057
2026-07-09T15:38:29Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|gmw-pro}} </includeonly>"
398057
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|gmw-pro}}
</includeonly>
4sf9whnll42px7xu7j1qcaeox16ht0c
ကဏ္ဍ:မဝ်ဂျူဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်
14
296579
398059
2026-07-09T15:41:38Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာဂျာမာန်နေတ်လက္ကရဴ-အခိုက်..."
398059
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ|ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ]] » '''မဝ်ဂျူဂမၠိုၚ်'''
:[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။
[[ကဏ္ဍ:ဘာသာဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
33qr61vhmttj34a0utnb69aw6o33fto
ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်
14
296580
398060
2026-07-09T15:43:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]]ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှ..."
398060
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
3tdr8368tm2s8by8hrhqwln8m57f2yg
ထာမ်ပလိက်:gmw-infl-noun-u/documentation
10
296581
398062
2026-07-09T15:51:13Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|u]] </includeonly>"
398062
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|u]]
</includeonly>
suwpcgg5omc6a3rdi6vbt07s8g6ypjb
ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်
14
296582
398063
2026-07-09T15:52:38Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
398063
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
hymqvhkp9c5vo7sntfu87lder1okl65
ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်
14
296583
398064
2026-07-09T15:54:01Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
398064
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်နေတ်လက္ကရဴ-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
ka0iod165jis3smw8zaaoyki48f8nh3
ဗီုပြၚ်သိုၚ်တၟိ:ဂျာမာန်-အခိုက်ကၞာ/kraftuz
118
296584
398065
2026-07-09T15:58:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==ဂျာမာန်-အခိုက်ကၞာ== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|gem-pro|/ˈkrɑɸ.tuz/}} ===နာမ်=== {{gem-noun|f}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အစောံသတ္တိ။ #: {{syn|gem-pro|*mahtiz}} ====ပရေၚ်ကၠောံ==== {{gem-decl-noun}} ===ပွံၚ်နဲတၞဟ်=== * {{alter|gem-pro|alt=*kraftiz..."
398065
wikitext
text/x-wiki
{{reconstructed}}
==ဂျာမာန်-အခိုက်ကၞာ==
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|gem-pro|/ˈkrɑɸ.tuz/}}
===နာမ်===
{{gem-noun|f}}
# ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အစောံသတ္တိ။
#: {{syn|gem-pro|*mahtiz}}
====ပရေၚ်ကၠောံ====
{{gem-decl-noun}}
===ပွံၚ်နဲတၞဟ်===
* {{alter|gem-pro|alt=*kraftiz}}
* {{alter|gem-pro|alt=*kraftaz}}
===မဒုၚ်လွဳစ===
* {{desctree|gmw-pro|*kraftu}}
* {{desctree|non|kraptr}}
tnyogwnvn2tr1u3acjtejer4ycn74ai
ထာမ်ပလိက်:gem-decl-noun
10
296585
398066
2026-07-09T15:59:41Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:gem-decl-noun|show}}<!-- --><noinclude>{{documentation}}</noinclude>"
398066
wikitext
text/x-wiki
{{#invoke:gem-decl-noun|show}}<!--
--><noinclude>{{documentation}}</noinclude>
4jkmu1vnoswk63rgnvmj4pwdy9ubj5q
မဝ်ဂျူ:gem-decl-noun/data
828
296586
398067
2026-07-09T16:04:32Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local decl_data = {} decl_data["a-m"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["a-m"], {__call = function(self, args, data) local stem = args[1] local stem_i = "" if mw.ustring.sub(stem, -2) == "ij" then stem_i = mw.ustring.sub(stem, 1, -3) .. "ī" data.decl_type = "masculine ja-stem" -- table.insert(data.categories, "Proto-Germanic ja-stem nouns") elseif mw.ustring.sub(stem..."
398067
Scribunto
text/plain
local decl_data = {}
decl_data["a-m"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["a-m"], {__call = function(self, args, data)
local stem = args[1]
local stem_i = ""
if mw.ustring.sub(stem, -2) == "ij" then
stem_i = mw.ustring.sub(stem, 1, -3) .. "ī"
data.decl_type = "masculine ja-stem"
-- table.insert(data.categories, "Proto-Germanic ja-stem nouns")
elseif mw.ustring.sub(stem, -1) == "j" then
stem_i = mw.ustring.sub(stem, 1, -2) .. "i"
data.decl_type = "masculine ja-stem"
-- table.insert(data.categories, "Proto-Germanic ja-stem nouns")
else
stem_i = stem
data.decl_type = "masculine a-stem"
-- table.insert(data.categories, "Proto-Germanic a-stem nouns")
end
data.forms["nom_sg"] = {stem .. "az"}
data.forms["voc_sg"] = {stem_i == stem and stem or stem_i}
data.forms["acc_sg"] = {stem .. "ą"}
data.forms["gen_sg"] = {stem .. "as", stem_i .. (stem_i == stem and "is" or "s")}
data.forms["dat_sg"] = {stem .. "ai"}
data.forms["ins_sg"] = {stem .. "ō"}
if not args.nopl then
data.forms["nom_pl"] = {stem .. "ōz", args[1] .. "ōs"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {stem .. "anz"}
data.forms["gen_pl"] = {stem .. "ǫ̂"}
data.forms["dat_pl"] = {stem .. "amaz"}
data.forms["ins_pl"] = {stem .. "amiz"}
end
end
})
decl_data["a-n"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["a-n"], {__call = function(self, args, data)
decl_data["a-m"](args, data)
data.decl_type = data.decl_type:gsub("masculine", "neuter")
data.forms["nom_sg"] = data.forms["acc_sg"]
data.forms["voc_sg"] = data.forms["acc_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "ō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {args[1] .. "ǫ̂"}
data.forms["dat_pl"] = {args[1] .. "amaz"}
data.forms["ins_pl"] = {args[1] .. "amiz"}
end
end
})
decl_data["acoll-n"] = {
params = {
[1] = {},
[2] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["acoll-n"], {__call = function(self, args, data)
decl_data["a-m"](args, data)
data.decl_type = data.decl_type:gsub("masculine", "neuter")
data.forms["nom_sg"] = data.forms["acc_sg"]
data.forms["voc_sg"] = data.forms["acc_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[2] .. "ō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {args[2] .. "ǫ̂"}
data.forms["dat_pl"] = {args[2] .. "amaz"}
data.forms["ins_pl"] = {args[2] .. "amiz"}
end
end
})
decl_data["cons-mf"] = {
params = {
[1] = {},
["nopl"] = {},
["nomsg"] = {},
["vocsg"] = {},
},
}
setmetatable(decl_data["cons-mf"], {__call = function(self, args, data)
local pagename = mw.loadData("Module:headword/data").pagename
local s = mw.ustring.sub(pagename, -1, -1)
-- Check for s-stems
if mw.ustring.sub(pagename, -1, -1) == "s" and not mw.ustring.find(mw.ustring.sub(pagename, -2, -2), "[fhkptþ]") then
s = ""
end
-- (mw.ustring.find(mw.ustring.sub(args[1], -1, -1), "[fhkptþ]") and "s" or "z")
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {args.nomsg or (args[1] .. s)}
data.forms["voc_sg"] = {args.vocsg or args[1]}
data.forms["acc_sg"] = {args[1] .. "ų"}
data.forms["gen_sg"] = {args[1] .. "iz"}
data.forms["dat_sg"] = {args[1] .. "i"}
data.forms["ins_sg"] = {args[1] .. "ē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "iz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "unz"}
data.forms["gen_pl"] = {args[1] .. "ǫ̂"}
data.forms["dat_pl"] = {args[1] .. "umaz"}
data.forms["ins_pl"] = {args[1] .. "umiz"}
end
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
})
decl_data["cons-n"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["cons-n"], {__call = function(self, args, data)
decl_data["cons-mf"](args, data)
data.decl_type = "neuter consonant stem"
data.forms["nom_sg"] = {args[1]}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[1]}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
end
end
})
decl_data["i-mf"] = {
params = {
[1] = {},
["nopl"] = {},
["j"] = {},
},
}
setmetatable(decl_data["i-mf"], {__call = function(self, args, data)
data.decl_type = "i-stem"
local j = args.j or require("Module:gem-pronunc").determine_sievers(args[1])
data.forms["nom_sg"] = {args[1] .. "iz"}
data.forms["voc_sg"] = {args[1] .. "i"}
data.forms["acc_sg"] = {args[1] .. "į"}
data.forms["gen_sg"] = {args[1] .. "īz"}
data.forms["dat_sg"] = {args[1] .. "ī"}
data.forms["ins_sg"] = {args[1] .. "ī"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "īz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "inz"}
data.forms["gen_pl"] = {args[1] .. (j or "") .. "ǫ̂"}
data.forms["dat_pl"] = {args[1] .. "imaz"}
data.forms["ins_pl"] = {args[1] .. "imiz"}
end
-- table.insert(data.categories, "Proto-Germanic i-stem nouns")
end
})
decl_data["tis-f"] = {
params = {
[1] = {},
[2] = {},
["nopl"] = {},
["j"] = {},
},
}
setmetatable(decl_data["tis-f"], {__call = function(self, args, data)
data.decl_type = "feminine i-stem"
local j = args.j or require("Module:gem-pronunc").determine_sievers(args[2])
data.forms["nom_sg"] = {args[1] .. "iz"}
data.forms["voc_sg"] = {args[1] .. "i"}
data.forms["acc_sg"] = {args[1] .. "į"}
data.forms["gen_sg"] = {args[2] .. "īz"}
data.forms["dat_sg"] = {args[2] .. "ī"}
data.forms["ins_sg"] = {args[2] .. "ī"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "īz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "inz"}
data.forms["gen_pl"] = {args[2] .. (j or "") .. "ǫ̂"}
data.forms["dat_pl"] = {args[2] .. "imaz"}
data.forms["ins_pl"] = {args[2] .. "imiz"}
end
-- table.insert(data.categories, "Proto-Germanic i-stem nouns")
end
})
decl_data["i-n"] = {
params = {
[1] = {},
["nopl"] = {},
["j"] = {},
},
}
setmetatable(decl_data["i-n"], {__call = function(self, args, data)
decl_data["i-mf"](args, data)
data.decl_type = "neuter i-stem"
data.forms["nom_sg"] = data.forms["voc_sg"]
data.forms["acc_sg"] = data.forms["voc_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "ī"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
end
end
})
decl_data["ijo-f"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["ijo-f"], {__call = function(self, args, data)
data.decl_type = "ī/jō-stem"
local stem = args[1] .. require("Module:gem-pronunc").determine_sievers(args[1])
data.forms["nom_sg"] = {args[1] .. "ī"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {stem .. "ǭ"}
data.forms["gen_sg"] = {stem.. "ōz"}
data.forms["dat_sg"] = {stem .. "ōi"}
data.forms["ins_sg"] = {stem .. "ō"}
if not args.nopl then
data.forms["nom_pl"] = {stem .. "ôz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {stem .. "ōz"}
data.forms["gen_pl"] = {stem .. "ǫ̂"}
data.forms["dat_pl"] = {stem .. "ōmaz"}
data.forms["ins_pl"] = {stem .. "ōmiz"}
end
-- table.insert(data.categories, "Proto-Germanic ī/jō-stem nouns")
end
})
decl_data["n-f"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["n-f"], {__call = function(self, args, data)
data.decl_type = "ōn-stem"
data.forms["nom_sg"] = {args[1] .. "ǭ"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {args[1] .. "ōnų"}
data.forms["gen_sg"] = {args[1] .. "ōniz"}
data.forms["dat_sg"] = {args[1] .. "ōni"}
data.forms["ins_sg"] = {args[1] .. "ōnē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "ōniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "ōnunz"}
data.forms["gen_pl"] = {args[1] .. "ōnǫ̂"}
data.forms["dat_pl"] = {args[1] .. "ōmaz"}
data.forms["ins_pl"] = {args[1] .. "ōmiz"}
end
-- table.insert(data.categories, "Proto-Germanic ōn-stem nouns")
end
})
decl_data["n-m"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["n-m"], {__call = function(self, args, data)
data.decl_type = "masculine an-stem"
data.forms["nom_sg"] = {args[1] .. "ô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {args[1] .. "anų"}
data.forms["gen_sg"] = {args[1].. "iniz"}
data.forms["dat_sg"] = {args[1] .. "ini"}
data.forms["ins_sg"] = {args[1] .. "inē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "aniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "anunz"}
data.forms["gen_pl"] = {args[1] .. "anǫ̂"}
data.forms["dat_pl"] = {args[1] .. "ammaz"}
data.forms["ins_pl"] = {args[1] .. "ammiz"}
end
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
})
decl_data["namphi-m"] = {
params = {
[1] = {},
[2] = {},
[3] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["namphi-m"], {__call = function(self, args, data)
data.decl_type = "masculine an-stem"
data.forms["nom_sg"] = {args[1] .. "ô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {args[1] .. "anų"}
data.forms["gen_sg"] = {args[2].. "az"}
data.forms["dat_sg"] = {args[3] .. "ini"}
data.forms["ins_sg"] = {args[2] .. "ē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "aniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[2] .. "unz"}
data.forms["gen_pl"] = {args[2] .. "ǫ̂"}
data.forms["dat_pl"] = {args[3] .. "ummaz"}
data.forms["ins_pl"] = {args[3] .. "ummiz"}
end
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
})
decl_data["n-n"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["n-n"], {__call = function(self, args, data)
decl_data["n-m"](args, data)
data.decl_type = "neuter an-stem"
data.forms["acc_sg"] = data.forms["nom_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "ōnō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
end
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
})
decl_data["in-f"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["in-f"], {__call = function(self, args, data)
data.decl_type = "īn-stem"
data.forms["nom_sg"] = {args[1] .. "į̄"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {args[1] .. "īnų"}
data.forms["gen_sg"] = {args[1] .. "īniz"}
data.forms["dat_sg"] = {args[1] .. "īni"}
data.forms["ins_sg"] = {args[1] .. "īnē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "īniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "īnunz"}
data.forms["gen_pl"] = {args[1] .. "īnǫ̂"}
data.forms["dat_pl"] = {args[1] .. "īmaz"}
data.forms["ins_pl"] = {args[1] .. "īmiz"}
end
-- table.insert(data.categories, "Proto-Germanic īn-stem nouns")
end
})
decl_data["o-f"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["o-f"], {__call = function(self, args, data)
data.decl_type = "ō-stem"
data.forms["nom_sg"] = {args[1] .. "ō"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {args[1] .. "ǭ"}
data.forms["gen_sg"] = {args[1] .. "ōz"}
data.forms["dat_sg"] = {args[1] .. "ōi"}
data.forms["ins_sg"] = data.forms["nom_sg"]
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "ôz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "ōz"}
data.forms["gen_pl"] = {args[1] .. "ǫ̂"}
data.forms["dat_pl"] = {args[1] .. "ōmaz"}
data.forms["ins_pl"] = {args[1] .. "ōmiz"}
end
-- table.insert(data.categories, "Proto-Germanic ō-stem nouns")
end
})
decl_data["r-mf"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["r-mf"], {__call = function(self, args, data)
data.decl_type = "r-stem"
data.forms["nom_sg"] = {args[1] .. "ēr"}
data.forms["voc_sg"] = {args[1] .. "er"}
data.forms["acc_sg"] = {args[1] .. "erų"}
data.forms["gen_sg"] = {args[1] .. "urz"}
data.forms["dat_sg"] = {args[1] .. "ri"}
data.forms["ins_sg"] = {args[1] .. "rē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "riz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "runz"}
data.forms["gen_pl"] = {args[1] .. "rǫ̂"}
data.forms["dat_pl"] = {args[1] .. "rumaz"}
data.forms["ins_pl"] = {args[1] .. "rumiz"}
end
-- table.insert(data.categories, "Proto-Germanic r-stem nouns")
end
})
decl_data["u-mf"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["u-mf"], {__call = function(self, args, data)
data.decl_type = "u-stem"
data.forms["nom_sg"] = {args[1] .. "uz"}
data.forms["voc_sg"] = {args[1] .. "u"}
data.forms["acc_sg"] = {args[1] .. "ų"}
data.forms["gen_sg"] = {args[1] .. "auz"}
data.forms["dat_sg"] = {args[1] .. "iwi"}
data.forms["ins_sg"] = {args[1] .. "ū"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "iwiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "unz"}
data.forms["gen_pl"] = {args[1] .. "iwǫ̂"}
data.forms["dat_pl"] = {args[1] .. "umaz"}
data.forms["ins_pl"] = {args[1] .. "umiz"}
end
-- table.insert(data.categories, "Proto-Germanic u-stem nouns")
end
})
decl_data["u-n"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["u-n"], {__call = function(self, args, data)
decl_data["u-mf"](args, data)
data.decl_type = "neuter u-stem"
data.forms["nom_sg"] = data.forms["voc_sg"]
data.forms["acc_sg"] = data.forms["voc_sg"]
if not args.nopl then
data.forms["nom_pl"] = data.forms["ins_sg"]
data.forms["voc_pl"] = data.forms["ins_sg"]
data.forms["acc_pl"] = data.forms["ins_sg"]
end
end
})
decl_data["z-n"] = {
params = {
[1] = {},
["nopl"] = {},
},
}
setmetatable(decl_data["z-n"], {__call = function(self, args, data)
data.decl_type = "z-stem"
data.forms["nom_sg"] = {args[1] .. "az"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {args[1] .. "iziz"}
data.forms["dat_sg"] = {args[1] .. "izi"}
data.forms["ins_sg"] = {args[1] .. "izē"}
if not args.nopl then
data.forms["nom_pl"] = {args[1] .. "izō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {args[1] .. "izǫ̂"}
data.forms["dat_pl"] = {args[1] .. "izumaz"}
data.forms["ins_pl"] = {args[1] .. "izumiz"}
end
-- table.insert(data.categories, "Proto-Germanic z-stem nouns")
end
})
decl_data["irreg"] = {}
setmetatable(decl_data["irreg"], {__call = function(self, args, data)
local word = mw.loadData("Module:headword/data").pagename
irreg_data = require("Module:gem-decl-noun/data/irreg")
if irreg_data.irreg[word] then
irreg_data.irreg[word](args, data)
else
error("Irregular inflection not found. Please check Module:gem-decl-noun/data.")
end
-- table.insert(data.categories, "Proto-Germanic irregular nouns")
end
})
return decl_data
1lukgcwztch5ksqvpk3lxs1uloda27k
မဝ်ဂျူ:gem-decl-noun/data/doc
828
296587
398068
2026-07-09T16:06:10Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|gem-pro}} </includeonly>"
398068
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|gem-pro}}
</includeonly>
9hf1bbr2nw5zr481phve10i1uh9npwm
ကဏ္ဍ:မဝ်ဂျူဒေတာဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်
14
296588
398069
2026-07-09T16:07:36Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာတြေံဂမၠိုၚ်|စ]][[ကဏ္ဍ:မဝ်ဂျူစရၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
398069
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာတြေံဂမၠိုၚ်|စ]][[ကဏ္ဍ:မဝ်ဂျူစရၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
oo3qou7syyxv5dt3dg02dgfkc1w4gs7
398070
398069
2026-07-09T16:08:00Z
咽頭べさ
33
398070
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်|စ]][[ကဏ္ဍ:မဝ်ဂျူစရၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
mhwlvghsf3rlj4kcano0fk5s5fq78a8
မဝ်ဂျူ:gem-decl-noun/data/irreg
828
296589
398071
2026-07-09T16:11:14Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "irreg_data = {} ------ Consonant stems ------ irreg_data["aigin"] = function(args, data) data.decl_type = "neuter consonant stem" data.forms["nom_sg"] = {"aigin"} data.forms["voc_sg"] = data.forms["nom_sg"] data.forms["acc_sg"] = data.forms["nom_sg"] data.forms["gen_sg"] = {"aiginþiz"} data.forms["dat_sg"] = {"aiginþi"} data.forms["ins_sg"] = {"aiginþē"} data.forms["nom_pl"] = {"aiginþ"} data.forms[..."
398071
Scribunto
text/plain
irreg_data = {}
------ Consonant stems ------
irreg_data["aigin"] = function(args, data)
data.decl_type = "neuter consonant stem"
data.forms["nom_sg"] = {"aigin"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"aiginþiz"}
data.forms["dat_sg"] = {"aiginþi"}
data.forms["ins_sg"] = {"aiginþē"}
data.forms["nom_pl"] = {"aiginþ"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"aiginþǫ̂"}
data.forms["dat_pl"] = {"aiginþumaz"}
data.forms["ins_pl"] = {"aiginþumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["alu"] = function(args, data)
data.decl_type = "neuter consonant stem"
data.forms["nom_sg"] = {"alu"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"aluþiz"}
data.forms["dat_sg"] = {"aluþi"}
data.forms["ins_sg"] = {"aluþē"}
data.forms["nom_pl"] = {"aluþ"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"aluþǫ̂"}
data.forms["dat_pl"] = {"aluþumaz"}
data.forms["ins_pl"] = {"aluþumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["asunz"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"asunz"}
data.forms["voc_sg"] = {"asų"}
data.forms["acc_sg"] = {"asnų"}
data.forms["gen_sg"] = {"asniz"}
data.forms["dat_sg"] = {"asni"}
data.forms["ins_sg"] = {"asnē"}
data.forms["nom_pl"] = {"asniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"asnunz"}
data.forms["gen_pl"] = {"asnǫ̂"}
data.forms["dat_pl"] = {"asnumaz"}
data.forms["ins_pl"] = {"asnumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["berô"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"berô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"bernų"}
data.forms["gen_sg"] = {"berniz"}
data.forms["dat_sg"] = {"berni"}
data.forms["ins_sg"] = {"bernē"}
data.forms["nom_pl"] = {"berniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"bernunz"}
data.forms["gen_pl"] = {"bernǫ̂"}
data.forms["dat_pl"] = {"bernumaz"}
data.forms["ins_pl"] = {"bernumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["ēbanþs"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"ēbanþs"}
data.forms["voc_sg"] = {"ēbanþ"}
data.forms["acc_sg"] = {"ēbanþų"}
data.forms["gen_sg"] = {"ēbundiz"}
data.forms["dat_sg"] = {"ēbundi"}
data.forms["ins_sg"] = {"ēbundē"}
data.forms["nom_pl"] = {"ēbanþiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"ēbanþunz"}
data.forms["gen_pl"] = {"ēbundǫ̂"}
data.forms["dat_pl"] = {"ēbundumaz"}
data.forms["ins_pl"] = {"ēbundumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["ili"] = function(args, data)
data.decl_type = "neuter consonant stem"
data.forms["nom_sg"] = {"ili"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"iliþiz"}
data.forms["dat_sg"] = {"iliþi"}
data.forms["ins_sg"] = {"iliþē"}
data.forms["nom_pl"] = {"iliþ"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"iliþǫ̂"}
data.forms["dat_pl"] = {"iliþumaz"}
data.forms["ins_pl"] = {"iliþumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["kōz"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"kōz"}
data.forms["voc_sg"] = {"kō"}
data.forms["acc_sg"] = {"kōǭ"}
data.forms["gen_sg"] = {"kūiz"}
data.forms["dat_sg"] = {"kūī"}
data.forms["ins_sg"] = {"kūē"}
data.forms["nom_pl"] = {"kōiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"kōnz"}
data.forms["gen_pl"] = {"kūǫ̂"}
data.forms["dat_pl"] = {"kūmaz"}
data.forms["ins_pl"] = {"kūmiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["mann-"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"mann-", "manô", "mannô"}
data.forms["voc_sg"] = {"mann"}
data.forms["acc_sg"] = {"mannų"}
data.forms["gen_sg"] = {"manniz"}
data.forms["dat_sg"] = {"manni"}
data.forms["ins_sg"] = {"mannē"}
data.forms["nom_pl"] = {"manniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"mannunz"}
data.forms["gen_pl"] = {"mannǫ̂"}
data.forms["dat_pl"] = {"mannumaz"}
data.forms["ins_pl"] = {"mannumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["gawjamann-"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"gawjamann-", "gawjamanô", "gawjamannô"}
data.forms["voc_sg"] = {"gawjamann"}
data.forms["acc_sg"] = {"gawjamannų"}
data.forms["gen_sg"] = {"gawjamanniz"}
data.forms["dat_sg"] = {"gawjamanni"}
data.forms["ins_sg"] = {"gawjamannē"}
data.forms["nom_pl"] = {"gawjamanniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"gawjamannunz"}
data.forms["gen_pl"] = {"gawjamannǫ̂"}
data.forms["dat_pl"] = {"gawjamannumaz"}
data.forms["ins_pl"] = {"gawjamannumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["kaupamann-"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"kaupamann-", "kaupamanô", "kaupamannô"}
data.forms["voc_sg"] = {"kaupamann"}
data.forms["acc_sg"] = {"kaupamannų"}
data.forms["gen_sg"] = {"kaupamanniz"}
data.forms["dat_sg"] = {"kaupamanni"}
data.forms["ins_sg"] = {"kaupamannē"}
data.forms["nom_pl"] = {"kaupamanniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"kaupamannunz"}
data.forms["gen_pl"] = {"kaupamannǫ̂"}
data.forms["dat_pl"] = {"kaupamannumaz"}
data.forms["ins_pl"] = {"kaupamannumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["skipamann-"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"skipamann-", "skipamanô", "skipamannô"}
data.forms["voc_sg"] = {"skipamann"}
data.forms["acc_sg"] = {"skipamannų"}
data.forms["gen_sg"] = {"skipamanniz"}
data.forms["dat_sg"] = {"skipamanni"}
data.forms["ins_sg"] = {"skipamannē"}
data.forms["nom_pl"] = {"skipamanniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"skipamannunz"}
data.forms["gen_pl"] = {"skipamannǫ̂"}
data.forms["dat_pl"] = {"skipamannumaz"}
data.forms["ins_pl"] = {"skipamannumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["harjamann-"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"harjamann-", "harjamanô", "harjamannô"}
data.forms["voc_sg"] = {"harjamann"}
data.forms["acc_sg"] = {"harjamannų"}
data.forms["gen_sg"] = {"harjamanniz"}
data.forms["dat_sg"] = {"harjamanni"}
data.forms["ins_sg"] = {"harjamannē"}
data.forms["nom_pl"] = {"harjamanniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"harjamannunz"}
data.forms["gen_pl"] = {"harjamannǫ̂"}
data.forms["dat_pl"] = {"harjamannumaz"}
data.forms["ins_pl"] = {"harjamannumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["metaþs"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"metaþs"}
data.forms["voc_sg"] = {"metaþ"}
data.forms["acc_sg"] = {"metaþų"}
data.forms["gen_sg"] = {"metadiz"}
data.forms["dat_sg"] = {"metadi"}
data.forms["ins_sg"] = {"metadē"}
data.forms["nom_pl"] = {"metaþiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"metaþunz"}
data.forms["gen_pl"] = {"metadǫ̂"}
data.forms["dat_pl"] = {"metadumaz"}
data.forms["ins_pl"] = {"metadumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["mili"] = function(args, data)
data.decl_type = "neuter consonant stem"
data.forms["nom_sg"] = {"mili"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"milidiz"}
data.forms["dat_sg"] = {"milidi"}
data.forms["ins_sg"] = {"milidē"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["stuþs"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"stuþs"}
data.forms["voc_sg"] = {"stuþ"}
data.forms["acc_sg"] = {"stuþų"}
data.forms["gen_sg"] = {"studiz"}
data.forms["dat_sg"] = {"studi"}
data.forms["ins_sg"] = {"studē"}
data.forms["nom_pl"] = {"stuþiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"stuþunz"}
data.forms["gen_pl"] = {"studǫ̂"}
data.forms["dat_pl"] = {"studumaz"}
data.forms["ins_pl"] = {"studumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["sūz"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"sūz"}
data.forms["voc_sg"] = {"sū"}
data.forms["acc_sg"] = {"suwų"}
data.forms["gen_sg"] = {"suwiz"}
data.forms["dat_sg"] = {"suwi"}
data.forms["ins_sg"] = {"sūē"}
data.forms["nom_pl"] = {"suwiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"suwunz"}
data.forms["gen_pl"] = {"sūǫ̂"}
data.forms["dat_pl"] = {"suwumaz"}
data.forms["ins_pl"] = {"suwumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["tanþs"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"tanþs"}
data.forms["voc_sg"] = {"tanþ"}
data.forms["acc_sg"] = {"tanþų"}
data.forms["gen_sg"] = {"tundiz"}
data.forms["dat_sg"] = {"tundi"}
data.forms["ins_sg"] = {"tundē"}
data.forms["nom_pl"] = {"tanþiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"tanþunz"}
data.forms["gen_pl"] = {"tundǫ̂"}
data.forms["dat_pl"] = {"tundumaz"}
data.forms["ins_pl"] = {"tundumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
irreg_data["wrōts"] = function(args, data)
data.decl_type = "consonant stem"
data.forms["nom_sg"] = {"wrōts"}
data.forms["voc_sg"] = {"wrōt"}
data.forms["acc_sg"] = {"wrōtų"}
data.forms["gen_sg"] = {"wurtiz"}
data.forms["dat_sg"] = {"wurti"}
data.forms["ins_sg"] = {"wurtē"}
data.forms["nom_pl"] = {"wrōtiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"wrōtunz"}
data.forms["gen_pl"] = {"wurtǫ̂"}
data.forms["dat_pl"] = {"wurtumaz"}
data.forms["ins_pl"] = {"wurtumiz"}
-- table.insert(data.categories, "Proto-Germanic consonant stem nouns")
end
------ i-stems ------
irreg_data["burþiz"] = function(args, data)
if not args[1] then
irreg_data["burþiz"]({""}, data)
return
end
data.decl_type = "i-stem"
data.forms["nom_sg"] = {args[1] .. "burþiz"}
data.forms["voc_sg"] = {args[1] .. "burþi"}
data.forms["acc_sg"] = {args[1] .. "burþį"}
data.forms["gen_sg"] = {args[1] .. "burdīz"}
data.forms["dat_sg"] = {args[1] .. "burdī"}
data.forms["ins_sg"] = {args[1] .. "burdī"}
data.forms["nom_pl"] = {args[1] .. "burþīz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {args[1] .. "burþīnz"}
data.forms["gen_pl"] = {args[1] .. "burdijǫ̂"}
data.forms["dat_pl"] = {args[1] .. "burdimaz"}
data.forms["ins_pl"] = {args[1] .. "burdimiz"}
-- table.insert(data.categories, "Proto-Germanic i-stem nouns")
end
irreg_data["fraburþiz"] = function(args, data)
irreg_data["burþiz"]({"fra"}, data)
end
irreg_data["gaburþiz"] = function(args, data)
irreg_data["burþiz"]({"ga"}, data)
end
irreg_data["kinþiz"] = function(args, data)
data.decl_type = "i-stem"
data.forms["nom_sg"] = {"kinþiz"}
data.forms["voc_sg"] = {"kinþi"}
data.forms["acc_sg"] = {"kinþį"}
data.forms["gen_sg"] = {"kundīz"}
data.forms["dat_sg"] = {"kundī"}
data.forms["ins_sg"] = {"kundī"}
data.forms["nom_pl"] = {"kinþīz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"kinþīnz"}
data.forms["gen_pl"] = {"kundijǫ̂"}
data.forms["dat_pl"] = {"kundimaz"}
data.forms["ins_pl"] = {"kundimiz"}
-- table.insert(data.categories, "Proto-Germanic i-stem nouns")
end
irreg_data["kumþiz"] = function(args, data)
data.decl_type = "i-stem"
data.forms["nom_sg"] = {"kumþiz"}
data.forms["voc_sg"] = {"kumþi"}
data.forms["acc_sg"] = {"kumþį"}
data.forms["gen_sg"] = {"kundīz"}
data.forms["dat_sg"] = {"kundī"}
data.forms["ins_sg"] = {"kundī"}
data.forms["nom_pl"] = {"kumþīz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"kumþīnz"}
data.forms["gen_pl"] = {"kundijǫ̂"}
data.forms["dat_pl"] = {"kundimaz"}
data.forms["ins_pl"] = {"kundimiz"}
-- table.insert(data.categories, "Proto-Germanic i-stem nouns")
end
------ u-stems ------
irreg_data["grunduz"] = function(args, data)
data.decl_type = "u-stem"
data.forms["nom_sg"] = {"grumþuz"}
data.forms["voc_sg"] = {"grumþu"}
data.forms["acc_sg"] = {"grumþų"}
data.forms["gen_sg"] = {"grundauz"}
data.forms["dat_sg"] = {"grundiwi"}
data.forms["ins_sg"] = {"grundū"}
data.forms["nom_pl"] = {"grumþiwiz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"grumþunz"}
data.forms["gen_pl"] = {"grundiwǫ̂"}
data.forms["dat_pl"] = {"grundumaz"}
data.forms["ins_pl"] = {"grundumiz"}
-- table.insert(data.categories, "Proto-Germanic u-stem nouns")
end
------ i/jo stems ------
irreg_data["akwisī"] = function(args, data)
data.decl_type = "ī/jō-stem"
data.forms["nom_sg"] = {"akwisī"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"akuzijǭ"}
data.forms["gen_sg"] = {"akuzijōz"}
data.forms["dat_sg"] = {"akuzijōi"}
data.forms["ins_sg"] = {"akuzijō"}
data.forms["nom_pl"] = {"akuzijôz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"akuzijōz"}
data.forms["gen_pl"] = {"akuzijǫ̂"}
data.forms["dat_pl"] = {"akuzijōmaz"}
data.forms["ins_pl"] = {"akuzijōmiz"}
-- table.insert(data.categories, "Proto-Germanic ī/jō-stem nouns")
end
------ n-stems ------
irreg_data["abô"] = function(args, data)
data.decl_type = "masculine an-stem"
data.forms["nom_sg"] = {"abô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"abanų"}
data.forms["gen_sg"] = {"abniz"}
data.forms["dat_sg"] = {"abni"}
data.forms["ins_sg"] = {"abnē"}
data.forms["nom_pl"] = {"abniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"abnuz"}
data.forms["gen_pl"] = {"abnǫ̂"}
data.forms["dat_pl"] = {"abnamaz"}
data.forms["ins_pl"] = {"abnamiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["arô"] = function(args, data)
data.decl_type = "masculine an-stem"
data.forms["nom_sg"] = {"arô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"arnų"}
data.forms["gen_sg"] = {"arniz"}
data.forms["dat_sg"] = {"arni"}
data.forms["ins_sg"] = {"arnē"}
data.forms["nom_pl"] = {"arniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"arnunz"}
data.forms["gen_pl"] = {"arnǫ̂"}
data.forms["dat_pl"] = {"arnumaz"}
data.forms["ins_pl"] = {"arnumiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["hersô"] = function(args, data)
data.decl_type = "neuter an-stem"
data.forms["nom_sg"] = {"hersô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"hersnų"}
data.forms["gen_sg"] = {"hirzniz"}
data.forms["dat_sg"] = {"hirzni"}
data.forms["ins_sg"] = {"hirznē"}
data.forms["nom_pl"] = {"hersnō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"herznǫ̂"}
data.forms["dat_pl"] = {"herznamaz"}
data.forms["ins_pl"] = {"herznamiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["namô"] = function(args, data)
data.decl_type = "neuter an-stem"
data.forms["nom_sg"] = {"namô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"namniz"}
data.forms["dat_sg"] = {"namni"}
data.forms["ins_sg"] = {"namnē"}
data.forms["nom_pl"] = {"namnō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"namnǫ̂"}
data.forms["dat_pl"] = {"namnamaz"}
data.forms["ins_pl"] = {"namnamiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["sēmô"] = function(args, data)
data.decl_type = "neuter an-stem"
data.forms["nom_sg"] = {"sēmô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"sēmniz"}
data.forms["dat_sg"] = {"sēmni"}
data.forms["ins_sg"] = {"sēmnē"}
data.forms["nom_pl"] = {"sēmnō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"sēmnǫ̂"}
data.forms["dat_pl"] = {"sēmnamaz"}
data.forms["ins_pl"] = {"sēmnamiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["uhsô"] = function(args, data)
data.decl_type = "masculine an-stem"
data.forms["nom_sg"] = {"uhsô"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"uhsanų"}
data.forms["gen_sg"] = {"uhsniz"}
data.forms["dat_sg"] = {"uhsni"}
data.forms["ins_sg"] = {"uhsnē"}
data.forms["nom_pl"] = {"uhsniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"uhsnuz"}
data.forms["gen_pl"] = {"uhsnǫ̂"}
data.forms["dat_pl"] = {"uhsnamaz"}
data.forms["ins_pl"] = {"uhsnamiz"}
-- table.insert(data.categories, "Proto-Germanic an-stem nouns")
end
irreg_data["bijǭ"] = function(args, data)
data.decl_type = "feminine on-stem"
data.forms["nom_sg"] = {"bijǭ"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"bijōnų"}
data.forms["gen_sg"] = {"biniz"}
data.forms["dat_sg"] = {"binini"}
data.forms["ins_sg"] = {"binē"}
data.forms["nom_pl"] = {"bijōniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"binunz"}
data.forms["gen_pl"] = {"binǫ̂"}
data.forms["dat_pl"] = {"bijummiz"}
data.forms["ins_pl"] = {"binōmiz"}
-- table.insert(data.categories, "Proto-Germanic irregular nouns")
end
irreg_data["rīgǭ"] = function(args, data)
data.decl_type = "feminine on-stem"
data.forms["nom_sg"] = {"rīgǭ"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = {"rīgōnų"}
data.forms["gen_sg"] = {"rikkiz"}
data.forms["dat_sg"] = {"rikkini"}
data.forms["ins_sg"] = {"rikkē"}
data.forms["nom_pl"] = {"rīgōniz"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = {"rikkunz"}
data.forms["gen_pl"] = {"rikkǫ̂"}
data.forms["dat_pl"] = {"rīgummiz"}
data.forms["ins_pl"] = {"rikkōmiz"}
-- table.insert(data.categories, "Proto-Germanic irregular nouns")
end
------ Miscellaneous ------
irreg_data["fōr"] = function(args, data)
data.decl_type = "paradigm " .. args[1]
data.forms["nom_sg"] = {"fōr"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
if args[1] == "1" then
data.forms["gen_sg"] = {"funiz"}
data.forms["dat_sg"] = {"funi"}
data.forms["ins_sg"] = {"funē"}
elseif args[1] == "2" then
data.forms["gen_sg"] = {"fuiniz"}
data.forms["dat_sg"] = {"fuini"}
data.forms["ins_sg"] = {"fuinē"}
elseif args[1] == "3" then
data.forms["gen_sg"] = {"funiniz"}
data.forms["dat_sg"] = {"funini"}
data.forms["ins_sg"] = {"funinē"}
end
end
irreg_data["watōr"] = function(args, data)
data.decl_type = "heteroclitic, irregular"
data.forms["nom_sg"] = {"watōr"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"watiniz"}
data.forms["dat_sg"] = {"watini"}
data.forms["ins_sg"] = {"watinē"}
data.forms["nom_pl"] = {"watnō"}
data.forms["voc_pl"] = data.forms["nom_pl"]
data.forms["acc_pl"] = data.forms["nom_pl"]
data.forms["gen_pl"] = {"watnǫ̂"}
data.forms["dat_pl"] = {"watnamaz"}
data.forms["ins_pl"] = {"watnamiz"}
end
irreg_data["eudur"] = function(args, data)
data.decl_type = "heteroclitic, irregular"
data.forms["nom_sg"] = {"eudur"}
data.forms["voc_sg"] = data.forms["nom_sg"]
data.forms["acc_sg"] = data.forms["nom_sg"]
data.forms["gen_sg"] = {"ūdraz"}
data.forms["dat_sg"] = {"ūdiri"}
data.forms["ins_sg"] = {"ūdrē"}
end
return irreg_data
dipucdi19dbdffujcn5fo6t8qyjtthh
မဝ်ဂျူ:gem-decl-noun/data/irreg/doc
828
296590
398072
2026-07-09T16:12:27Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|gem-pro}} </includeonly>"
398072
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|gem-pro}}
</includeonly>
9hf1bbr2nw5zr481phve10i1uh9npwm
ထာမ်ပလိက်:gem-decl-noun/documentation
10
296591
398073
2026-07-09T16:14:24Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template is used to generate inflection tables for Proto-Germanic nouns. It implements [[Module:gem-decl-noun]] as its back-end. ==Parameters== Note that most of the time, no arguments are needed, as the module can figure out the declension class and stem from the page name. ; {{para|1}} : The word stem, minus the ending. Only required if this differs from what would be expected from th..."
398073
wikitext
text/x-wiki
{{documentation subpage}}
This template is used to generate inflection tables for Proto-Germanic nouns. It implements [[Module:gem-decl-noun]] as its back-end.
==Parameters==
Note that most of the time, no arguments are needed, as the module can figure out the declension class and stem from the page name.
; {{para|1}}
: The word stem, minus the ending. Only required if this differs from what would be expected from the subpage name. If this argument is used, the class and gender must also be manually specified.
; {{para|stem}}
: The stem class, one of <code>a, cons, i, in, ijo, n, o, r, u, z, namphi, acoll</code>. If this argument is used, the stem and gender must also be manually specified.
; {{para|g}}
: The word's gender, one of <code>m, f, n</code>. See [[Appendix:Proto-Germanic nouns]] for a list of declension classes. Attempting to use a class that doesn't exist (e.g. <code>o-m</code>) will produce an error. If this argument is used, the stem and class must also be manually specified.
; {{para|j}}
: One of <code>j, ij</code>. In a few i-stems, the [[w:Sievers' law|Sievers' law]] alternant in the genitive plural is not what would be expected, due to compounding. This argument is used to override the default calculated value.
; {{para|nopl}}
: If non-zero, hides the plural inflections. Typically used with names.
; {{para|nosg}}
; {{para|2}}
: If {{para|stem|namphi}}, the genitive singular stem goes here. If {{para|stem|acoll}}, the plural stem goes here.
; {{para|3}}
: If {{para|stem|namphi}}, the dative singular stem goes here.
<includeonly>[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| ]]</includeonly>
j6edngmi0tqcw98m5jvn5plynuz0a8c
ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်
14
296592
398074
2026-07-09T16:15:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
398074
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
15he499udnm07hflq3uvl5sp8jfcmj7
မဝ်ဂျူ:gem-decl-noun/doc
828
296593
398076
2026-07-09T16:23:16Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "Called by {{temp|gem-decl-noun}}. Do not use directly. <includeonly> {{module cat|gem-pro}} </includeonly>"
398076
wikitext
text/x-wiki
Called by {{temp|gem-decl-noun}}. Do not use directly.
<includeonly>
{{module cat|gem-pro}}
</includeonly>
f56wcjnwyha6svd7u86e0h1mc9oxxns
cræft
0
296594
398078
2026-07-10T00:07:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|-cræft}} ==အၚ်္ဂလိက်တြေံ== ===ဗွဟ်ရမ္သာၚ်=== * {{ang-IPA|cræft}} ===နာမ်=== {{ang-noun|m}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ # အစောံဇြဟတ်၊ အစောံစရာဲ။ # ပရေၚ်စိုန်သ္ကီု။ # ကွတ်။ # ကမၠောန်ဂယိုၚ်လမျီု။ # အၚ်္ဂ..."
398078
wikitext
text/x-wiki
{{also|-cræft}}
==အၚ်္ဂလိက်တြေံ==
===ဗွဟ်ရမ္သာၚ်===
* {{ang-IPA|cræft}}
===နာမ်===
{{ang-noun|m}}
# ဇြဟတ်ဇၟူ၊ ဇြဟတ်။
# အစောံဇြဟတ်၊ အစောံစရာဲ။
# ပရေၚ်စိုန်သ္ကီု။
# ကွတ်။
# ကမၠောန်ဂယိုၚ်လမျီု။
# အၚ်္ဂဂုန်မသၠုၚ်ပြဲ။
# အစဳအဇန်၊ ဗွဲတၟေၚ်ဆေၚ်စပ်ကဵုကွတ်အ္စာမှဝ်။
# ပရေၚ်လီစၞာဲ၊ ပရေၚ်ပၠီလီ။
====လဟုတ်စှ်ေ====
{{ang-decl-noun-a-m|cræft}}
===မဒုၚ်လွဳစ===
* {{desctree|enm|craft}}
qwaipiok3qwxi6kahst0717l2965dtd
ထာမ်ပလိက်:ang-decl-noun-a-m
10
296595
398079
2026-07-10T00:09:49Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|error}}<!-- Validate template parameters -->{{ang-decl-noun<!-- -->|type=စောံထတ်တံမအရေဝ်-''a''<!-- -->|1={{{nomsg|{{{1}}}}}}<!-- -->|3={{{nomsg|{{{1}}}}}}<!-- -->|5={{{1}}}{{#if:{{{vowel|}}}||e}}s<!-- -->|7={{{datsg|{{{1}}}{{#if:{{{vowel|}}}||e}}}}}<!-- -->|2={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||a}}s<!-- -->|4={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||a}}s<!-- -->|6={{{2|{{..."
398079
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{ang-decl-noun<!--
-->|type=စောံထတ်တံမအရေဝ်-''a''<!--
-->|1={{{nomsg|{{{1}}}}}}<!--
-->|3={{{nomsg|{{{1}}}}}}<!--
-->|5={{{1}}}{{#if:{{{vowel|}}}||e}}s<!--
-->|7={{{datsg|{{{1}}}{{#if:{{{vowel|}}}||e}}}}}<!--
-->|2={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||a}}s<!--
-->|4={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||a}}s<!--
-->|6={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}|n}}a<!--
-->|8={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}m{{#if:{{{vowel|}}}|,{{{2|{{{1}}}}}}um}}<!--
-->|num={{{num|}}}<!--
-->|title={{{title|}}}<!--
-->}}<!--
--><!--
--><noinclude>{{documentation}}</noinclude>
grr4j5dzre21gaks5z8tnjxpzlo3tke
ထာမ်ပလိက်:ang-decl-noun
10
296596
398080
2026-07-10T00:10:40Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:ang-noun|make_table}}<!-- --><noinclude>{{documentation}}</noinclude>"
398080
wikitext
text/x-wiki
{{#invoke:ang-noun|make_table}}<!--
--><noinclude>{{documentation}}</noinclude>
hs3z8byefav9f7spfhd975yslulzz9v
မဝ်ဂျူ:ang-noun
828
296597
398081
2026-07-10T00:14:18Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local m_links = require("Module:links") local strutils = require("Module:string utilities") local lang = require("Module:languages").getByCode("ang") local export = {} local cases = { "nom", "acc", "gen", "dat" } local numbers = { "sg", "pl" } local slots_to_accel_form = {} for _, case in ipairs(cases) do for _, number in ipairs(numbers) do slots_to_accel_form[case .. "_" .. number] = case .. "|" .. number:sub(1..."
398081
Scribunto
text/plain
local m_links = require("Module:links")
local strutils = require("Module:string utilities")
local lang = require("Module:languages").getByCode("ang")
local export = {}
local cases = { "nom", "acc", "gen", "dat" }
local numbers = { "sg", "pl" }
local slots_to_accel_form = {}
for _, case in ipairs(cases) do
for _, number in ipairs(numbers) do
slots_to_accel_form[case .. "_" .. number] = case .. "|" .. number:sub(1, 1)
end
end
local slots_to_args = {
nom_sg = 1,
nom_pl = 2,
acc_sg = 3,
acc_pl = 4,
gen_sg = 5,
gen_pl = 6,
dat_sg = 7,
dat_pl = 8,
}
function export.make_table(frame)
local parent_args = frame:getParent().args
local params = {
["title"] = true, -- To be removed.
["type"] = true,
["width"] = true,
["style"] = true,
["num"] = true,
["g"] = true,
["gender"] = {alias_of = "g"},
}
for slot, arg in pairs(slots_to_args) do
params[arg] = {list = slot}
end
local args = require("Module:parameters").process(parent_args, params)
local table_args = {
style = args.style == "right" and "float:right; clear:right;" or "",
width = args.width or "30",
}
local accel_lemma_sg = args[slots_to_args.nom_sg][1]
local accel_lemma_pl = args[slots_to_args.nom_pl][1]
local accel_lemma =
accel_lemma_sg and accel_lemma_sg ~= "—" and accel_lemma_sg ~= "-" and accel_lemma_sg:gsub(",.*", "") or
accel_lemma_pl and accel_lemma_pl ~= "—" and accel_lemma_pl ~= "-" and accel_lemma_pl:gsub(",.*", "") or
nil
for slot, accel_form in pairs(slots_to_accel_form) do
local form_args = args[slots_to_args[slot]]
if #form_args == 0 then
form_args = {"—"}
end
local forms = {}
for _, form_arg in ipairs(form_args) do
for _, form in ipairs(mw.text.split(form_arg, ", *")) do
table.insert(forms, form)
end
end
local table_arg = {}
for _, form in ipairs(forms) do
table.insert(table_arg, form == "—" and form or m_links.full_link{
lang = lang, term = form, accel = {
form = accel_form,
lemma = accel_lemma,
}
})
table_args[slot] = table.concat(table_arg, ", ")
end
end
if args.num == "pl" then
table_args.nom_sg = "—"
table_args.acc_sg = "—"
table_args.gen_sg = "—"
table_args.dat_sg = "—"
elseif args.num == "sg" then
table_args.nom_pl = "—"
table_args.acc_pl = "—"
table_args.gen_pl = "—"
table_args.dat_pl = "—"
end
local type = ''
if args["type"] then
type = type .. (args["type"]:gsub("^%l", string.upper))
end
if args.g then
type = type .. " (" .. (
args.g == "m" and "ပုလ္လိၚ်" or
args.g == "f" and "ဣတ္တိလိၚ်" or
args.g == "n" and "နပုလ္လိၚ်" or
error("Unrecognized gender '" .. args.g .. "'")
) .. ")"
end
type = type .. ':'
local table = type .. (type and '\n')
table = table .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = '-',
palette = 'indigo'
}
}
table = table .. [=[
!
! ကိုန်ဨကဝုစ်
! ကိုန်ဗဟုဝစ်
|-
! [[nominative case|မဒုၚ်ယၟု]]
| data-accel-col=1 | {nom_sg}
| data-accel-col=2 | {nom_pl}
|-
! [[accusative case|ကမ္မကာရက]]
| data-accel-col=1 | {acc_sg}
| data-accel-col=2 | {acc_pl}
|-
! [[genitive case|ဗဳဇဂကူ]]
| data-accel-col=1 | {gen_sg}
| data-accel-col=2 | {gen_pl}
|-
! [[dative case|ပြကမ္မကာရက]]
| data-accel-col=1 | {dat_sg}
| data-accel-col=2 | {dat_pl}
]=]
table = table .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
return strutils.format(table, table_args)
end
return export
-- For Vim, so we get 4-space tabs
-- vim: set ts=4 sw=4 noet:
6nnjc8w6oiqa2on2n8aq37v3kpcwvxd
မဝ်ဂျူ:ang-noun/doc
828
296598
398082
2026-07-10T00:15:32Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|ang}} </includeonly>"
398082
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|ang}}
</includeonly>
mpz68dq7e1wywwxz1itgr7pu6bnm1zg
ကဏ္ဍ:မဝ်ဂျူအၚ်္ဂလိက်တြေံဂမၠိုၚ်
14
296599
398083
2026-07-10T00:17:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်တြေံ|အၚ်္ဂလိက်တ..."
398083
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်တြေံ|အၚ်္ဂလိက်တြေံ]] » '''မဝ်ဂျူဂမၠိုၚ်'''
:[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာအၚ်္ဂလိက်တြေံ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။
[[ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်တြေံ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]
58faxfdmfrm6xqpmzm0htrg37y8oj6p
ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲအၚ်္ဂလိက်တြေံဂမၠိုၚ်
14
296600
398084
2026-07-10T00:18:27Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူအၚ်္ဂလိက်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]]ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမ..."
398084
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူအၚ်္ဂလိက်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]
8ei9pq26j5s2g935zwhr127f0vs3vnt
ထာမ်ပလိက်:ang-decl-noun/documentation
10
296601
398085
2026-07-10T00:20:35Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ===Usage=== This template is designed to show the full inflection of Old English nouns, including proper nouns. It should be used directly under the ====Declension==== header. It takes the following parameters ; {{para|1}} : Nominative singular ; {{para|2}} : Nominative plural ; {{para|3}} : Accusative singular ; {{para|4}} : Accusative plural ; {{para|5}} : Genitive singular ; {{para|6}} :..."
398085
wikitext
text/x-wiki
{{documentation subpage}}
===Usage===
This template is designed to show the full inflection of Old English nouns, including proper nouns. It should be used directly under the ====Declension==== header. It takes the following parameters
; {{para|1}}
: Nominative singular
; {{para|2}}
: Nominative plural
; {{para|3}}
: Accusative singular
; {{para|4}}
: Accusative plural
; {{para|5}}
: Genitive singular
; {{para|6}}
: Genitive plural
; {{para|7}}
: Dative singular
; {{para|8}}
: Dative plural
; {{para|g|opt=1}} or {{para|gender|opt=1}}
: Gender (<code>m</code>, <code>f</code> or <code>n</code>)
; {{para|num|opt=1}}
: Number restriction (<code>sg</code> or <code>pl</code>)
Multiple forms can be specified by separating them with a comma, and they will be properly linked. Thus, wikilinks (<nowiki>[[]]</nowiki>) should not be used.
===See also===
* [[:ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်]]
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| ]]
</includeonly>
aboyxfb3xwtmt1srm1zufrpmn6wf91l
ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်
14
296602
398086
2026-07-10T00:21:39Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]"
398086
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]
7eeuk3mmdl87xnmp5npbbihz21h9ium
ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်
14
296603
398087
2026-07-10T00:23:05Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]"
398087
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]
o3co4tym88gp4js9unhlppykbe6y84d
ထာမ်ပလိက်:ang-decl-noun-a-m/documentation
10
296604
398088
2026-07-10T00:24:42Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|a-m]] </includeonly>"
398088
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|a-m]]
</includeonly>
aie4qg5wrgdvbkid1ci5gmyviepvwgx
-cræft
0
296605
398089
2026-07-10T00:29:41Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|cræft}} ==အၚ်္ဂလိက်တြေံ== ===ဗွဟ်ရမ္သာၚ်=== * {{ang-IPA|cræft}} ===အဆက်လက္ကရဴ=== {{head|ang|suffix|g=m}} # ထ္ၜးလက်သန်အပ္ဍဲကွတ် ဝါ ကွတ်ပညာ။ ====လဟုတ်စှ်ေ==== {{ang-decl-noun-a-m|-cræft}} ===မဒုၚ်လွဳစ=== * {{desc|enm|-craft|-creft}} ** {{desc|en|..."
398089
wikitext
text/x-wiki
{{also|cræft}}
==အၚ်္ဂလိက်တြေံ==
===ဗွဟ်ရမ္သာၚ်===
* {{ang-IPA|cræft}}
===အဆက်လက္ကရဴ===
{{head|ang|suffix|g=m}}
# ထ္ၜးလက်သန်အပ္ဍဲကွတ် ဝါ ကွတ်ပညာ။
====လဟုတ်စှ်ေ====
{{ang-decl-noun-a-m|-cræft}}
===မဒုၚ်လွဳစ===
* {{desc|enm|-craft|-creft}}
** {{desc|en|-craft}}
fcvlb61p6lxzkun0tyudjqpalus0zuj
ကဏ္ဍ:အဆက်လက္ကရဴပုလ္လိၚ်အၚ်္ဂလိက်တြေံဂမၠိုၚ်
14
296606
398090
2026-07-10T00:30:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်တြေံ]]"
398090
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်တြေံ]]
tgbapn5x5wqwtlm03qlf66fr52zaogu
craft
0
296607
398091
2026-07-10T01:35:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|-craft|Craft}} =={{=en=}}== {{wikipedia|lang=en}} ===နိရုတ်=== {{inh+|en|enm|craft}}၊ နကဵုအဆက်နူ {{inh|en|ang|cræft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|en|gmw-pro|*kraftu}}၊ နူအဆက်နကဵု {{inh|en|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|en|/ˈkɹɑːft/|a=RP,ZA}} * {{IPA|en|/ˈkɹäːft/|/ˈkɹɐ̞ːft..."
398091
wikitext
text/x-wiki
{{also|-craft|Craft}}
=={{=en=}}==
{{wikipedia|lang=en}}
===နိရုတ်===
{{inh+|en|enm|craft}}၊ နကဵုအဆက်နူ {{inh|en|ang|cræft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|en|gmw-pro|*kraftu}}၊ နူအဆက်နကဵု {{inh|en|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|en|/ˈkɹɑːft/|a=RP,ZA}}
* {{IPA|en|/ˈkɹäːft/|/ˈkɹɐ̞ːft/|a=AU,NZ}}
*: {{rhymes|en|ɑːft|s=1}}
* {{IPA|en|/ˈkɹæft/|a=GA,[[w:en:Standard Canadian English|ခေန်နာဒါတိုၚ်ခဳ]]}}
** {{audio|en|en-us-craft.ogg|a=US}}
*: {{rhymes|en|æft|s=1}}
* {{hyph|en|craft}}
===နာမ်===
{{en-noun|~|*|s}}
# {{lb|en|uncountable|obsolete}} ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အနုဘဴ၊ အစောံဇြဟတ် (ပွိုၚ်ကၠံသၞာံမရနုက်၉)။
#: {{syn|en|potence|strength|Thesaurus:power}}
# ကွတ်၊ ကွတ်တဲ။
# ဥပ္ပာဲ၊ စၞာဲ၊ ညာန်အလီ၊ ညာန်စၞုက်စၞာဲ။
# ယာန်။
==အၚ်္ဂလိက် အဒေါဝ်==
===ပွံၚ်နဲတၞဟ်===
* {{alter|enm|carft|craf|creft}}
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|enm|ang|cræft}}၊ နကဵုအဆက်နူ {{inh|enm|gmw-pro|*kraftu}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|enm|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|enm|/kraft/}}
===နာမ်===
{{enm-noun|craftes}}
# ဂကောံကၟိန်ဍုၚ်ကမၠောန်သွံရာန်ဗၞိက် ဝါ ပရေၚ်ကောံစန်ဒက်။
# ပရေၚ်စိုန်သ္ကီု။
===မဒုၚ်လွဳစ===
* {{desc|en|craft}}
* {{desc|sco|craft}}
* {{desc|yol|creff}}
==ဒါတ်တြေံ==
===ပွံၚ်နဲတၞဟ်===
* {{alter|odt|kraft|creft}}
===နိရုတ်===
{{dercat|odt|gem-pro|inh=1}}
ဝေါဟာကၠုၚ်နူ {{inh|odt|gmw-pro|*kraftu}}
===နာမ်===
{{odt-noun|f}}
# ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အစောံဇြဟတ်။
====ပရေၚ်ကၠောံ====
{{odt-decl-noun-i|craft|g=f|w=h}}
===မဒုၚ်လွဳစ===
* {{desctree|dum|cracht}}
h3r3ptkdih0iyprhdvceby79lzt70x7
398096
398091
2026-07-10T01:51:29Z
咽頭べさ
33
398096
wikitext
text/x-wiki
{{also|-craft|Craft}}
=={{=en=}}==
{{wikipedia|lang=en}}
===နိရုတ်===
{{inh+|en|enm|craft}}၊ နကဵုအဆက်နူ {{inh|en|ang|cræft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|en|gmw-pro|*kraftu}}၊ နူအဆက်နကဵု {{inh|en|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|en|/ˈkɹɑːft/|a=RP,ZA}}
* {{IPA|en|/ˈkɹäːft/|/ˈkɹɐ̞ːft/|a=AU,NZ}}
*: {{rhymes|en|ɑːft|s=1}}
* {{IPA|en|/ˈkɹæft/|a=GA,[[w:en:Standard Canadian English|ခေန်နာဒါတိုၚ်ခဳ]]}}
** {{audio|en|en-us-craft.ogg|a=US}}
*: {{rhymes|en|æft|s=1}}
* {{hyph|en|craft}}
===နာမ်===
{{en-noun|~|*|s}}
# {{lb|en|uncountable|obsolete}} ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အနုဘဴ၊ အစောံဇြဟတ် (ပွိုၚ်ကၠံသၞာံမရနုက်၉)။
#: {{syn|en|potence|strength|Thesaurus:power}}
# ကွတ်၊ ကွတ်တဲ။
# ဥပ္ပာဲ၊ စၞာဲ၊ ညာန်အလီ၊ ညာန်စၞုက်စၞာဲ။
# ယာန်။
===ကြိယာ===
{{en-verb}}
# သကဵုကၠောန်သ္ပနကဵုတဲ ကဵု မၞုံကဵုဗွဲမဂၠိုၚ်ပရေၚ်စိုန်သ္ကီု။
# သကဵုခၞံဗဒှ်၊ မရာၚ်ဆာဲတိုန်အရာမွဲမွဲ (ညံၚ်ရဴသၟာကမၠောန်မစိုန်သ္ကီုလဝ်ကွတ်ကမၠောန်မွဲသာ်)။
==အၚ်္ဂလိက် အဒေါဝ်==
===ပွံၚ်နဲတၞဟ်===
* {{alter|enm|carft|craf|creft}}
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|enm|ang|cræft}}၊ နကဵုအဆက်နူ {{inh|enm|gmw-pro|*kraftu}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|enm|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|enm|/kraft/}}
===နာမ်===
{{enm-noun|craftes}}
# ဂကောံကၟိန်ဍုၚ်ကမၠောန်သွံရာန်ဗၞိက် ဝါ ပရေၚ်ကောံစန်ဒက်။
# ပရေၚ်စိုန်သ္ကီု။
===မဒုၚ်လွဳစ===
* {{desc|en|craft}}
* {{desc|sco|craft}}
* {{desc|yol|creff}}
==ဒါတ်တြေံ==
===ပွံၚ်နဲတၞဟ်===
* {{alter|odt|kraft|creft}}
===နိရုတ်===
{{dercat|odt|gem-pro|inh=1}}
ဝေါဟာကၠုၚ်နူ {{inh|odt|gmw-pro|*kraftu}}
===နာမ်===
{{odt-noun|f}}
# ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ အစောံဇြဟတ်။
====ပရေၚ်ကၠောံ====
{{odt-decl-noun-i|craft|g=f|w=h}}
===မဒုၚ်လွဳစ===
* {{desctree|dum|cracht}}
bitv7wkdjamrometuouivg0vfo4jjp3
ထာမ်ပလိက်:odt-decl-noun-i
10
296608
398092
2026-07-10T01:36:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:odt-decl-noun|show|decl=i}}<!-- --><noinclude>{{documentation}} {{tcat|ndecl}}</noinclude>"
398092
wikitext
text/x-wiki
{{#invoke:odt-decl-noun|show|decl=i}}<!--
--><noinclude>{{documentation}}
{{tcat|ndecl}}</noinclude>
67n88a7gvpq0yu93wuvgv8r4is5ktrs
ကဏ္ဍ:နာမ်ဣတ္တိလိၚ်ဒါတ်တြေံဂမၠိုၚ်
14
296609
398093
2026-07-10T01:39:34Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » :ကဏ္ဍ:..."
398093
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကဒါတ်တြေံဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ဒါတ်တြေံဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] » [[:ကဏ္ဍ:နာမ်ဒါတ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဗက်အလိုက်လိၚ်ဂမၠိုၚ်]] »'''ဣတ္တိလိၚ်ဂမၠိုၚ်'''
:နာမ်ဒါတ်တြေံမဆေၚ်စပ်ကဵုလိၚ်ဗြဴ၊ ဥပမာ ဆေၚ်စပ်ကဵုကဏ္ဍလုပ်အဝေါၚ်လိၚ်အတေံ (အကြာတၞဟ်ခြာအရာမွဲမွဲအဂှ်) မက္တဵုဒှ်ဣတ္တိလိၚ်ဂမၠိုၚ်။
[[ကဏ္ဍ:နာမ်ဒါတ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဣ]][[ကဏ္ဍ:နာမ်ဣတ္တိလိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]]
61tu5sm6tabdicvuptxltx8buw3zpya
ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်/æft
14
296610
398094
2026-07-10T01:42:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » :ကဏ..."
398094
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » [[:ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ကာရန်ဂမၠိုၚ်]] » -æft
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]]မနွံကာရန် [[ကာရန်:အၚ်္ဂလိက်/æft|-æft]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|æft]]
neuq81v4k7ftfp9g651hxj4ys48tz5t
ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်/ɑːft
14
296611
398095
2026-07-10T01:44:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » :ကဏ..."
398095
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » [[:ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ကာရန်ဂမၠိုၚ်]] » -ɑːft
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]]မနွံကာရန် [[ကာရန်:အၚ်္ဂလိက်/ɑːft|-ɑːft]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ɑːft]]
2p231oczpaqul80i1aa4zfiijkzpgkm
crafts
0
296612
398097
2026-07-10T01:52:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|Crafts|-crafts}} =={{=en=}}== ===နာမ်=== {{head|en|noun form}} # {{plural of|en|craft}} ===ကြိယာ=== {{head|en|verb form}} # {{infl of|en|craft||s-verb-form}} ===ဝေါဟာလွာ=== * {{anagrams|en|a=acfrst|fracts}}"
398097
wikitext
text/x-wiki
{{also|Crafts|-crafts}}
=={{=en=}}==
===နာမ်===
{{head|en|noun form}}
# {{plural of|en|craft}}
===ကြိယာ===
{{head|en|verb form}}
# {{infl of|en|craft||s-verb-form}}
===ဝေါဟာလွာ===
* {{anagrams|en|a=acfrst|fracts}}
8gdhmzrt15laqljushctcya490ku2lj
Crafts
0
296613
398098
2026-07-10T01:53:34Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|crafts|-crafts}} =={{=en=}}== ===နာမ်မကိတ်ညဳ=== {{en-proper noun|es}} # {{surname|en}}"
398098
wikitext
text/x-wiki
{{also|crafts|-crafts}}
=={{=en=}}==
===နာမ်မကိတ်ညဳ===
{{en-proper noun|es}}
# {{surname|en}}
ca89mli5qooxtuzdu0jun40tco6xu0d
Craftses
0
296614
398099
2026-07-10T01:53:58Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=en=}}== ===နာမ်မကိတ်ညဳ=== {{head|en|proper noun form}} # {{plural of|en|Crafts}}"
398099
wikitext
text/x-wiki
=={{=en=}}==
===နာမ်မကိတ်ညဳ===
{{head|en|proper noun form}}
# {{plural of|en|Crafts}}
3izh9p6610fs89t5c8nm6t6w6l44lge
-crafts
0
296615
398100
2026-07-10T01:54:55Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|crafts|Crafts}} =={{=en=}}== ===အဆက်လက္ကရဴ=== {{head|en|suffix form}} # {{plural of|en|-craft}} ===ဝေါဟာလွာ=== * {{anagrams|en|a=acfrst|fracts}}"
398100
wikitext
text/x-wiki
{{also|crafts|Crafts}}
=={{=en=}}==
===အဆက်လက္ကရဴ===
{{head|en|suffix form}}
# {{plural of|en|-craft}}
===ဝေါဟာလွာ===
* {{anagrams|en|a=acfrst|fracts}}
6jwad7mjffj6yoa0a7tp69l1uh3eshw
-craft
0
296616
398101
2026-07-10T01:58:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|craft|Craft}} =={{=en=}}== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|en|enm|-craft}}, {{m|enm|-creft}}၊ နူကဵုဝေါဟာ {{inh|en|ang|-cræft}} ===အဆက်လက္ကရဴ=== {{en-noun|-|s}} # ပရေၚ်စိုန်သ္ကီုဆေၚ်စပ်ကဵုဗဳဇမချိုတ်ပၠိုတ်။"
398101
wikitext
text/x-wiki
{{also|craft|Craft}}
=={{=en=}}==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|en|enm|-craft}}, {{m|enm|-creft}}၊ နူကဵုဝေါဟာ {{inh|en|ang|-cræft}}
===အဆက်လက္ကရဴ===
{{en-noun|-|s}}
# ပရေၚ်စိုန်သ္ကီုဆေၚ်စပ်ကဵုဗဳဇမချိုတ်ပၠိုတ်။
3ty7d4f48k8pgrwnihj859pzoxctvzh
Craft
0
296617
398102
2026-07-10T01:59:42Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|craft|-craft}} =={{=en=}}== ===ပွံၚ်နဲတၞဟ်=== * {{l|en|Kraft}} ===နာမ်မကိတ်ညဳ=== {{en-proper noun}} # {{surname|en}}"
398102
wikitext
text/x-wiki
{{also|craft|-craft}}
=={{=en=}}==
===ပွံၚ်နဲတၞဟ်===
* {{l|en|Kraft}}
===နာမ်မကိတ်ညဳ===
{{en-proper noun}}
# {{surname|en}}
al3vf1o2buahsmlfhyjm5oceqp2i43b
Kraft
0
296618
398103
2026-07-10T02:08:04Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|kraft}} =={{=en=}}== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|en|de|-}}၊ သီုကဵု {{der|en|sv|-}} ကဵု ယၟုဂကူဘာသာ{{der|en|da|-}}။ ===နာမ်မကိတ်ညဳ=== {{en-proper noun}} # {{surname|en}} ==ဂျာမာန်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|de|gmh|kraft}}၊ နကဵုအဆက်..."
398103
wikitext
text/x-wiki
{{also|kraft}}
=={{=en=}}==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{der|en|de|-}}၊ သီုကဵု {{der|en|sv|-}} ကဵု ယၟုဂကူဘာသာ{{der|en|da|-}}။
===နာမ်မကိတ်ညဳ===
{{en-proper noun}}
# {{surname|en}}
==ဂျာမာန်==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|de|gmh|kraft}}၊ နကဵုအဆက်နူ {{inh|de|goh|kraft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|de|gmw-pro|*kraftu}}၊ နူအဆက်နကဵု {{inh|de|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|de|/kʁaft/}}
* {{audio|de|De-Kraft.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{audio|de|De-at-Kraft.ogg|a=Austria}}
* {{rhymes|de|aft|s=1}}
===နာမ်===
{{de-noun|f,^e}}
# ဇြဟတ်၊ ဇြဟတ်ဇၟူ၊ အစောံဇြဟတ်။
# အသိၚ်။
====လဟုတ်စှ်ေ====
{{de-ndecl|f,^e}}
===မဒုၚ်လွဳစ===
* {{desc|csb|krafy|bor=1}}
==ဟာန်သဝေတ်==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|hrx|gmh|kraft}}၊ နကဵုအဆက်နူ {{inh|hrx|goh|kraft}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|hrx|gmw-pro|*kraftu}}၊ နူအဆက်နကဵု {{inh|hrx|gem-pro|*kraftuz}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|hrx|/kraft/}}
===နာမ်===
{{hrx-noun|f|pl=Kreft}}
# ဇြဟတ်ဇၟူ၊ အစောံဇြဟတ်။
64paaxkqt90p9bixqhgymyyxwo0ioof
ကဏ္ဍ:ဝေါဟာဟာန်သဝေတ်ဂွံလဝ်အာဲကၟာဲနူဝေါဟာဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်
14
296619
398104
2026-07-10T02:09:07Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာဟာန်သဝေတ်]]"
398104
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာဟာန်သဝေတ်]]
j841mprl1f3z9davi80c3t094owq95b
ကဏ္ဍ:ကာရန်:ဂျာမာန်/aft
14
296620
398105
2026-07-10T02:11:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]] » :ကဏ္ဍ:ကာ..."
398105
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]] » [[:ကဏ္ဍ:ကာရန်:ဂျာမာန်|ကာရန်ဂမၠိုၚ်]] » -aft
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]]မနွံကာရန် [[ကာရန်:ဂျာမာန်/aft|-aft]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:ဂျာမာန်|aft]]
bace892g2kxeuvpx77urzry6d3nw8e9
ကာရန်:ဂျာမာန်/aft
106
296621
398106
2026-07-10T02:12:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|de|a|ft}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|de|/-aft̩/}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|de|Haft}} * {{l|de|klafft}} * {{l|de|Kraft}} * {{l|de|Saft}} * {{l|de|schafft}} * {{l|de|Schaft}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|de|Wirtschaft}} {{rhyme-bottom}} ===ဝဏ္ဏပိ=== {{rhyme-top}} * {{l|de|Kr..."
398106
wikitext
text/x-wiki
{{rhymes nav|de|a|ft}}
==ဗွဟ်ရမ္သာၚ်==
* {{IPA|de|/-aft̩/}}
==ကာရန်ဂမၠိုၚ်==
===ဝဏ္ဏမွဲ===
{{rhyme-top}}
* {{l|de|Haft}}
* {{l|de|klafft}}
* {{l|de|Kraft}}
* {{l|de|Saft}}
* {{l|de|schafft}}
* {{l|de|Schaft}}
{{rhyme-bottom}}
===ဝဏ္ဏၜါ===
{{rhyme-top}}
* {{l|de|Wirtschaft}}
{{rhyme-bottom}}
===ဝဏ္ဏပိ===
{{rhyme-top}}
* {{l|de|Kriegswirtschaft}}
* {{l|de|Zeugenschaft}}
{{rhyme-bottom}}
qnax7xtrtzqi2mfb7g9fohyajaar5bm
Kräfte
0
296622
398107
2026-07-10T02:14:40Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=de=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|de|/ˈkʁɛftə/}} * {{audio|de|De-Kräfte.ogg|a=<<Germany>> (<<Berlin>>)}} * {{audio|de|De-at-Kräfte.ogg|a=Austria}} * {{hyph|de|Kräf|te}} * {{rhymes|de|ɛftə|s=2}} ===နာမ်=== {{head|de|noun form|g=p}} # {{inflection of|de|Kraft||nom//acc//gen|p}}"
398107
wikitext
text/x-wiki
=={{=de=}}==
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|de|/ˈkʁɛftə/}}
* {{audio|de|De-Kräfte.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{audio|de|De-at-Kräfte.ogg|a=Austria}}
* {{hyph|de|Kräf|te}}
* {{rhymes|de|ɛftə|s=2}}
===နာမ်===
{{head|de|noun form|g=p}}
# {{inflection of|de|Kraft||nom//acc//gen|p}}
5gb1qpj5weg40fajoxrhyaok4ico6jw
ကဏ္ဍ:ကာရန်:ဂျာမာန်/ɛftə
14
296623
398108
2026-07-10T02:15:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]] » :ကဏ္ဍ:ကာ..."
398108
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]] » [[:ကဏ္ဍ:ကာရန်:ဂျာမာန်|ကာရန်ဂမၠိုၚ်]] » -ɛftə
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာဂျာမာန်|ဂျာမာန်]]မနွံကာရန် [[ကာရန်:ဂျာမာန်/ɛftə|-ɛftə]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:ဂျာမာန်|ɛftə]]
jq4r6rv574mm9hyzwabu2ykhv76ohmx
ကာရန်:ဂျာမာန်/ɛftə
106
296624
398109
2026-07-10T02:17:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|de|ɛ|ftə}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|de|/-ɛftə/}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|de|Hefte}} * {{l|de|Kräfte}} * {{l|de|Säfte}} * {{l|de|Schäfte}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|de|entkräfte}} * {{l|de|Fruchtsäfte}} * {{l|de|Geschäfte}} * {{l|de|Obstsäfte}} * {{l|de|Schulhefte}} * {{l..."
398109
wikitext
text/x-wiki
{{rhymes nav|de|ɛ|ftə}}
==ဗွဟ်ရမ္သာၚ်==
* {{IPA|de|/-ɛftə/}}
==ကာရန်ဂမၠိုၚ်==
===ဝဏ္ဏမွဲ===
{{rhyme-top}}
* {{l|de|Hefte}}
* {{l|de|Kräfte}}
* {{l|de|Säfte}}
* {{l|de|Schäfte}}
{{rhyme-bottom}}
===ဝဏ္ဏၜါ===
{{rhyme-top}}
* {{l|de|entkräfte}}
* {{l|de|Fruchtsäfte}}
* {{l|de|Geschäfte}}
* {{l|de|Obstsäfte}}
* {{l|de|Schulhefte}}
* {{l|de|Speerschäfte}}
{{rhyme-bottom}}
===ဝဏ္ဏပိ===
{{rhyme-top}}
* {{l|de|Apfelsäfte}}
* {{l|de|Birnensäfte}}
* {{l|de|Fachgeschäfte}}
* {{l|de|Fischgeschäfte}}
* {{l|de|Gerstensäfte}}
* {{l|de|Hustensäfte}}
* {{l|de|Lesehefte}}
* {{l|de|Magensäfte}}
* {{l|de|Milchgeschäfte}}
* {{l|de|Möhrensäfte}}
* {{l|de|Pflanzensäfte}}
* {{l|de|Pflaumensäfte}}
{{rhyme-bottom}}
===ဝဏ္ဏပန်===
{{rhyme-top}}
* {{l|de|Ananassäfte}}
* {{l|de|Bananensäfte}}
* {{l|de|Blumengeschäfte}}
* {{l|de|Gemüsesäfte}}
* {{l|de|Orangensäfte}}
* {{l|de|Plattengeschäfte}}
* {{l|de|Zitronensäfte}}
{{rhyme-bottom}}
===ဝဏ္ဏမသုန်===
{{rhyme-top}}
* {{l|de|Apfelsinensäfte}}
* {{l|de|Aprikosensäfte }}
* {{l|de|Bekleidungsgeschäfte}}
* {{l|de|Gemüsegeschäfte}}
{{rhyme-bottom}}
===ဝဏ္ဏတရဴ===
{{rhyme-top}}
* {{l|de|Haushaltswarengeschäfte}}
* {{l|de|Lebensmittelgeschäfte}}
{{rhyme-bottom}}
nc94qp6xa10pmvtfm5l6muqz80w864w
Kreft
0
296625
398110
2026-07-10T02:20:28Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|kreft}} =={{=en=}}== ===နာမ်မကိတ်ညဳ=== {{en-proper noun|s}} # {{surname|en}} ==ဟာန်သဝေတ်== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|hrx|/kreft/}} ===နာမ်=== {{head|hrx|noun form|g=f}} # {{plural of|hrx|Kraft}}"
398110
wikitext
text/x-wiki
{{also|kreft}}
=={{=en=}}==
===နာမ်မကိတ်ညဳ===
{{en-proper noun|s}}
# {{surname|en}}
==ဟာန်သဝေတ်==
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|hrx|/kreft/}}
===နာမ်===
{{head|hrx|noun form|g=f}}
# {{plural of|hrx|Kraft}}
148u6h26xj6jloskgyn1nc21xc0ej6u
Krefts
0
296626
398111
2026-07-10T02:20:56Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=en=}}== ===နာမ်မကိတ်ညဳ=== {{head|en|proper noun form}} # {{plural of|en|Kreft}}"
398111
wikitext
text/x-wiki
=={{=en=}}==
===နာမ်မကိတ်ညဳ===
{{head|en|proper noun form}}
# {{plural of|en|Kreft}}
cesrsmole6w23djwqj13q57kp3l6w9m
kreft
0
296627
398112
2026-07-10T02:27:34Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|Kreft|krêft}} ==နဝ်ဝေ ဗော်ခ်မဝ်== {{wp|no:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nb|gml|kreft}}, {{m|gml|krevet}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|nb|/kreft/|[kɾɛft]}} ===နာမ်=== {{head|nb|noun|g=m|ကိုန်ဨကဝုစ်ချိုတ်ပၠိုတ်|kreften}} # ယဲရိုဟ်။ ==နဝ်ဝေ..."
398112
wikitext
text/x-wiki
{{also|Kreft|krêft}}
==နဝ်ဝေ ဗော်ခ်မဝ်==
{{wp|no:}}
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{der|nb|gml|kreft}}, {{m|gml|krevet}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|nb|/kreft/|[kɾɛft]}}
===နာမ်===
{{head|nb|noun|g=m|ကိုန်ဨကဝုစ်ချိုတ်ပၠိုတ်|kreften}}
# ယဲရိုဟ်။
==နဝ်ဝေ နဳနိုတ်==
{{wp|nn:}}
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{der|nn|gml|kreft}}, {{m|gml|krevet}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|nn|/kreft/|[kɾɛft]}}
===နာမ်===
{{head|nn|noun|g=m|ကိုန်ဨကဝုစ်ချိုတ်ပၠိုတ်|kreften}}
# ယဲရိုဟ်။
rvbfg7qc2uswmnjpf2b8gn2nylzzir0
kreften
0
296628
398113
2026-07-10T02:28:46Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ===နာမ်=== {{head|nb|noun form|g=m}} # {{inflection of|nb|kreft||definite|s}} ==နဝ်ဝေ နဳနိုတ်== ===နာမ်=== {{head|nn|noun form|g=m}} # {{inflection of|nn|kreft||def|s}}"
398113
wikitext
text/x-wiki
==နဝ်ဝေ ဗော်ခ်မဝ်==
===နာမ်===
{{head|nb|noun form|g=m}}
# {{inflection of|nb|kreft||definite|s}}
==နဝ်ဝေ နဳနိုတ်==
===နာမ်===
{{head|nn|noun form|g=m}}
# {{inflection of|nn|kreft||def|s}}
eyo10u2kuyo753642vfz1azg7sa3fwt
krevet
0
296629
398115
2026-07-10T02:42:23Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မဝ်ရေတ်ဃှေန် ခရဳအဝ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|mfe|fr|crevette}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|mfe|/kɰevet/}} ===နာမ်=== {{head|mfe|noun}} # ၚုဲ၊ ၚုဲဒဂေါၚ်။ ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevde||simple past|}}..."
398115
wikitext
text/x-wiki
==မဝ်ရေတ်ဃှေန် ခရဳအဝ်==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|mfe|fr|crevette}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|mfe|/kɰevet/}}
===နာမ်===
{{head|mfe|noun}}
# ၚုဲ၊ ၚုဲဒဂေါၚ်။
==နဝ်ဝေ ဗော်ခ်မဝ်==
===ပွံၚ်နဲတၞဟ်===
* {{alt|nb|krevde||simple past|}}
* {{alt|nn|krevd||past participle|}}
===ကြိယာ===
{{head|nb|verb form}}
# {{inflection of|nb|kreve||simple past|;|past|part}}
==သာဗ်ခြဝ်ဨရှဳယာန်==
===နိရုတ်===
{{bor+|sh|ota|كروت|tr=kerevet}}၊ နကဵုအဆက်နူ {{der|sh|el|κρεβάτι}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{der|sh|grc|κράββατος}}၊ နူအဆက်နကဵု {{der|sh|xmk|*γράβος|tr=grabos}}
===ဗွဟ်ရမ္သာၚ်===
* {{sh-IPA|krèvet}}
* {{hyphenation|sh|kre|vet}}
===နာမ်===
{{sh-noun|krèvet|m-in}}
# ဖုန်။
#: {{syn|sh|pȍstelja}}
====လဟုတ်စှ်ေ====
{{sh-decl-noun
|krèvet|kreveti
|kreveta|krȅvētā
|krevetu|krevetima
|krevet|krevete
|krevete|kreveti
|krevetu|krevetima
|krevetom|krevetima
}}
==သေသျှလွာ ခရဳအဝ်လ်==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{der|crs|fr|crevette}}
===နာမ်===
{{head|crs|noun}}
# ၚုဲ၊ ၚုဲဒဂေါၚ်။
lkw91fvrjl64426txcov6dufs94dd7e
ကဏ္ဍ:နာမ်သေသျှလွာ ခရဳအဝ်လ်ဂမၠိုၚ်
14
296630
398116
2026-07-10T02:53:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်|သေသျှလွ..."
398116
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်|သေသျှလွာ ခရဳအဝ်လ်]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကသေသျှလွာ ခရဳအဝ်လ်ဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » '''နာမ်ဂမၠိုၚ်'''
:ဝေါဟာသေသျှလွာ ခရဳအဝ်လ်ပွမစၞောန်ထ္ၜးပူဂဵုအတေံ၊ မက္တဵုဒှ်ဂမၠိုၚ်၊ ဌာန်ဒတန်ဂမၠိုၚ်၊ ဥပပါတ်ဂမၠိုၚ်၊ ကဆံၚ်ဂုန်သတ္တိ ဝါ ကိုန်စဳရေၚ်ဂမၠိုၚ်။
[[ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်]][[ကဏ္ဍ:နာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]
j7w2h538dwn4d41fhpy8smrsbas0r2o
ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်
14
296631
398117
2026-07-10T02:54:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:အရေဝ်ဘာသာ|သ]][[ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|သ]]"
398117
wikitext
text/x-wiki
[[ကဏ္ဍ:အရေဝ်ဘာသာ|သ]][[ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|သ]]
onvwhxmjbylk8axjmspe7w8i01xm3md
ကဏ္ဍ:ဝေါဟာအဓိကသေသျှလွာ ခရဳအဝ်လ်ဂမၠိုၚ်
14
296632
398118
2026-07-10T02:56:01Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်|သေသျှလွ..."
398118
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်|သေသျှလွာ ခရဳအဝ်လ်]] » '''ဝေါဟာတံသ္ဇိုၚ်ဂမၠိုၚ်'''
:ဝေါဟာတံသ္ဇိုၚ်ဘာသာသေသျှလွာ ခရဳအဝ်လ်၊ ကဏ္ဍနူကဵုမပါ်ပရံဒကုတ်မဆေၚ်စပ်ကဵုမအရေဝ်ဝေါဟာ။
[[ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်]][[ကဏ္ဍ:ဝေါဟာအဓိကဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]
o87yppllk6a4bmlfam555qkk17hr4sk
ကဏ္ဍ:ဝေါဟာသေသျှလွာ ခရဳအဝ်လ်ကၠုၚ်နူဝေါဟာပြၚ်သေတ်ဂမၠိုၚ်
14
296633
398119
2026-07-10T02:57:22Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်]]"
398119
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသေသျှလွာ ခရဳအဝ်လ်]]
7przuo9z5ad1cna1hx8k1hu4dxq4gg3
ကဏ္ဍ:ဝေါဟာသာဗ်ခြဝ်ဨရှဳယာန်ကၠုၚ်နူဝေါဟာမက်သဳဒဝ်နဳယျာခေတ်တြေံဂမၠိုၚ်
14
296634
398120
2026-07-10T02:59:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]"
398120
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]
90bo813jxfrnu418zph0eb9fkd8nq4f
ကဏ္ဍ:ဝေါဟာသာဗ်ခြဝ်ဨရှဳယာန်ကၠုၚ်နူဝေါဟာဂရေတ်တြေံဂမၠိုၚ်
14
296635
398121
2026-07-10T02:59:58Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]"
398121
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]
90bo813jxfrnu418zph0eb9fkd8nq4f
ကဏ္ဍ:ဝေါဟာသာဗ်ခြဝ်ဨရှဳယာန်ကၠုၚ်နူဝေါဟာဂရေတ်ဂမၠိုၚ်
14
296636
398122
2026-07-10T03:00:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]"
398122
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသာဗ်ခြဝ်ဨရှဳယာန်]]
90bo813jxfrnu418zph0eb9fkd8nq4f
ကဏ္ဍ:ဝေါဟာမဝ်ရေတ်ဃှေန် ခရဳအဝ်ဂွံလဝ်အာဲကၟာဲနူဝေါဟာပြၚ်သေတ်ဂမၠိုၚ်
14
296637
398123
2026-07-10T03:01:46Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာမဝ်ရေတ်ဃှေန် ခရဳအဝ်]]"
398123
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာမဝ်ရေတ်ဃှေန် ခရဳအဝ်]]
9m77i70ky3z5pr5hyg21otrh72yeyzy
кревет
0
296638
398124
2026-07-10T03:06:01Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မက်သဳဒဝ်နဳယျာ== ===နိရုတ်=== {{bor+|mk|ota|كروت|tr=kerevet|sc=ota-Arab}}၊ နကဵုအဆက်နူ {{der|mk|el|κρεβάτι}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{der|mk|grc|κράββατος}} ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} * {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-кревет.wav}} ===နာမ်=== {{mk-noun|m|кр..."
398124
wikitext
text/x-wiki
==မက်သဳဒဝ်နဳယျာ==
===နိရုတ်===
{{bor+|mk|ota|كروت|tr=kerevet|sc=ota-Arab}}၊ နကဵုအဆက်နူ {{der|mk|el|κρεβάτι}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{der|mk|grc|κράββατος}}
===ဗွဟ်ရမ္သာၚ်===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-кревет.wav}}
===နာမ်===
{{mk-noun|m|кревети|креветче|adj=креветен}}
# ဖုန်။
====လဟုတ်စှ်ေ====
{{mk-decl-noun-m}}
==သာဗ်ခြဝ်ဨရှဳယာန်==
===နိရုတ်===
{{bor+|sh|ota|كروت|tr=kerevet}}၊ နကဵုအဆက်နူ {{der|sh|el|κρεβάτι}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{der|sh|grc|κράββατος}}
===ဗွဟ်ရမ္သာၚ်===
* {{sh-IPA|krèvet}}
* {{hyphenation|sh|кре|вет}}
===နာမ်===
{{sh-noun|крѐвет|m-in}}
# ဖုန်။
#: {{syn|sh|pȍstelja}}
====လဟုတ်စှ်ေ====
{{sh-decl-noun
|крѐвет|кревети
|кревета|кре̏ве̄та̄
|кревету|креветима
|кревет|кревете
|кревете|кревети
|кревету|креветима
|креветом|креветима
}}
nuj66x75mj1mdccz6ym9nu1sgc3pd99
ထာမ်ပလိက်:mk-decl-noun-m
10
296639
398125
2026-07-10T03:08:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{mk-decl-noun-table{{#if:{{{n|}}}|-single}}{{#if:{{{col|}}}|-collective}}<!-- -->|n={{{n|}}}<!-- -->|ind_sg={{pagename}}<!-- -->|def_unsp_sg={{pagename}}от|accel-gender=m<!-- -->|def_prox_sg={{pagename}}ов<!-- -->|def_dist_sg={{pagename}}он<!-- -->|voc_sg={{#if:{{{3|}}}|{{{3}}}|{{pagename}}у}}<!-- -->|voc_sg2={{{voc_sg2|}}}<!-- -->|col_sg={{#if:..."
398125
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
-->{{mk-decl-noun-table{{#if:{{{n|}}}|-single}}{{#if:{{{col|}}}|-collective}}<!--
-->|n={{{n|}}}<!--
-->|ind_sg={{pagename}}<!--
-->|def_unsp_sg={{pagename}}от|accel-gender=m<!--
-->|def_prox_sg={{pagename}}ов<!--
-->|def_dist_sg={{pagename}}он<!--
-->|voc_sg={{#if:{{{3|}}}|{{{3}}}|{{pagename}}у}}<!--
-->|voc_sg2={{{voc_sg2|}}}<!--
-->|col_sg={{#if:{{{4|}}}|{{{4}}}е|{{pagename}}је}}<!--
-->|col_sg2={{{col_sg2|}}}<!--
-->|ind_pl={{#if:{{{nopl|}}}||{{#if:{{{els|}}}|{{{2}}}ј|{{#if:{{{2|}}}|{{{2}}}и|{{pagename}}и}}}}}}<!--
-->|def_unsp_pl={{#if:{{{nopl|}}}||{{#if:{{{els|}}}|{{{2}}}јте|{{#if:{{{2|}}}|{{{2}}}ите|{{pagename}}ите}}}}}}<!--
-->|def_prox_pl={{#if:{{{nopl|}}}||{{#if:{{{els|}}}|{{{2}}}јве|{{#if:{{{2|}}}|{{{2}}}иве|{{pagename}}иве}}}}}}<!--
-->|def_dist_pl={{#if:{{{nopl|}}}||{{#if:{{{els|}}}|{{{2}}}јне|{{#if:{{{2|}}}|{{{2}}}ине|{{pagename}}ине}}}}}}<!--
-->|voc_pl={{#if:{{{nopl|}}}||{{#if:{{{els|}}}|{{{2}}}ј|{{#if:{{{2|}}}|{{{2}}}и|{{pagename}}и}}}}}}<!--
-->|count={{#if:{{{nopl|}}}||{{#if:{{{count|}}}|{{{count}}}|{{pagename}}}}а}}<!--
-->|col_pl={{#if:{{{colpl|}}}|{{#if:{{{col_pl|}}}|{{{col_pl}}}|{{#if:{{{4|}}}|{{{4}}}а|{{pagename}}ја}}}}|}}<!--
-->|col_pl2={{{col_pl2|}}}<!--
-->}}<!--
-->{{#if:{{{p|}}}| |}}<!--
-->{{#if:{{{pov|}}}| |}}<!--
-->{{#if:{{{pev|}}}| |}}<!--
-->{{#if:{{{fa|}}}| |}}<!--
-->{{#if:{{{fe|}}}| |}}<!--
-->{{#if:{{{fo|}}}| |}}<!--
-->{{#if:{{{fc|}}}| |}}<!--
-->{{#ifeq:{{{n|}}}|sg| |}}<!--
--><noinclude>{{documentation}}</noinclude>
kfjat197bqguqvnjzdebzn9pplnhbx3
ထာမ်ပလိက်:mk-decl-noun-m/documentation
10
296640
398126
2026-07-10T03:09:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template provides the inflection of Macedonian masculine nouns that end in a consonant, with a plural in {{m|mk||-и|tr=-}}. ==Parameters== ; <code>|1=</code> : The singular form, which is identical to the page name, such that this parameter should be left blank. ; <code>|2=</code> : The plural stem without the final '''-и''', e.g. "'''парков'''" for {{l|mk|парк|tr=-}}, "'''..."
398126
wikitext
text/x-wiki
{{documentation subpage}}
This template provides the inflection of Macedonian masculine nouns that end in a consonant, with a plural in {{m|mk||-и|tr=-}}.
==Parameters==
; <code>|1=</code>
: The singular form, which is identical to the page name, such that this parameter should be left blank.
; <code>|2=</code>
: The plural stem without the final '''-и''', e.g. "'''парков'''" for {{l|mk|парк|tr=-}}, "'''знац'''" for {{l|mk|знак|tr=-}}, and "'''светц'''" for {{l|mk|светец|tr=-}}. If the plural does not affect the stem, as in the case of {{l|mk|коњ|tr=-}}, this parameter should be left blank.
; <code>|3=</code>
: The vocative form. By default, a vocative in '''-у''' is generated, but one can use this parameter to supply a vocative in '''-е''', e.g. "пријателе" for {{l|mk|пријател|tr=-}}. One needs to write out the full vocative form rather than just its stem. If one wishes to add a vocative in '''-е''' ''in addition to'' the one in '''-у''' rather than instead of it, one uses <code>|voc_sg2</code>, as in the entry for {{l|mk|зет|tr=-}}.
; <code>|4=</code>
: The collective stem, e.g "'''лисј'''" for "'''лисје'''". If left empty, the pagename is used by default.
; <code>|n=</code>
: The number of the noun. Leave this empty for normal countable nouns. For singular-only nouns, use <code>|n=sg</code>, and for plural-only nouns, use <code>|n=pl</code>.
; <code>|col=</code>
: Used to display collective forms. To only display a singular collective form, only use <code>|col=1</code>. To display a plural collective form as well, also add <code>|colpl=1</code>. To manually add the plural collective form use <code>|col_pl=</code>. To display a second singular collective form, use <code>|col_sg2=</code> (as in the entry for {{l|mk|прат|tr=-}}). To display a second plural collective form use <code>|col_pl2=</code>.
; <code>|els=</code>
: For dialectal or poetic plural endings in '''-ој''' and '''-еј'''. To generate such forms, write <code>|els=1</code> inside the template and provide the plural stem minus the '''-ј''' in the second parameter, e.g. "'''зборо'''" to generate "'''зборој'''".<br /><br />
'''These parameters are used to place the noun in the proper category:'''
; <code>|pov=1</code>
: Places the noun in [[:Category:Macedonian masculine nouns with plurals in -ови]].
; <code>|pev=1</code>
: Places the noun in [[:Category:Macedonian masculine nouns with plurals in -еви]].
; <code>|p=1</code>
: Places the noun in [[:Category:Macedonian nouns with final palatalization in their plural forms]].
; <code>|fa=1</code>
: Places the noun in [[:Category:Macedonian nouns with a fleeting а]].
; <code>|fe=1</code>
: Places the noun in [[:Category:Macedonian nouns with a fleeting е]].
; <code>|fo=1</code>
: Places the noun in [[:Category:Macedonian nouns with a fleeting о]].
; <code>|fc=1</code>
: Places the noun in [[:Category:Macedonian masculine nouns with a fleeting suffix]]. Used for nouns which lose the suffix {{m|mk|-ец|tr=-}} or {{m|mk|-ин|tr=-}} in their plurals.
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|m]]
</includeonly>
3l168k7dnowioz6fe715apktw0pt91k
ကဏ္ဍ:နာမ်ပုလ္လိၚ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်
14
296641
398127
2026-07-10T03:12:06Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ|မက်သဳဒဝ်နဳ..."
398127
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ|မက်သဳဒဝ်နဳယျာ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကမက်သဳဒဝ်နဳယျာဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] » [[:ကဏ္ဍ:နာမ်မက်သဳဒဝ်နဳယျာဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဗက်အလိုက်လိၚ်ဂမၠိုၚ်]] »'''ပုလ္လိၚ်ဂမၠိုၚ်'''
:နာမ်မက်သဳဒဝ်နဳယျာမဆေၚ်စပ်ကဵုလိၚ်တြုံ၊ ဥပမာ ဆေၚ်စပ်ကဵုကဏ္ဍလုပ်အဝေါၚ်လိၚ်အတေံ (အကြာတၞဟ်ခြာအရာမွဲမွဲအဂှ်) မက္တဵုဒှ်ပုလ္လိၚ်ဂမၠိုၚ်။
[[ကဏ္ဍ:နာမ်မက်သဳဒဝ်နဳယျာဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ပ]][[ကဏ္ဍ:နာမ်ပုလ္လိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]
0hxuut6xea2dpo1lnmanr9if9y67h6u
ကဏ္ဍ:ဝေါဟာမက်သဳဒဝ်နဳယျာကၠုၚ်နူဝေါဟာဂရေတ်တြေံဂမၠိုၚ်
14
296642
398128
2026-07-10T03:12:55Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]]"
398128
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]]
pn8i4qxbw2vc0y25bi3bs2tgytwo1yw
ကဏ္ဍ:ဝေါဟာမက်သဳဒဝ်နဳယျာကၠုၚ်နူဝေါဟာဂရေတ်ဂမၠိုၚ်
14
296643
398129
2026-07-10T03:13:39Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]]"
398129
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]]
pn8i4qxbw2vc0y25bi3bs2tgytwo1yw
كروت
0
296644
398130
2026-07-10T03:16:07Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|كروب}} ==တူရကဳအောက်ဒဝ်မာန်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|ota|քէրէվէթ||Armeno-Turkish}} ===နိရုတ်=== {{bor+|ota|el|κρεβάτι}}၊ နူကဵုဝေါဟာ {{der|ota|grc|κράββατος}} ===နာမ်=== {{ota-noun|tr=kerevet}} # ဖုန်။ #: {{syn|ota|قاریولا|tr1=karyola|یاتاقلق|tr2=yataklık}}..."
398130
wikitext
text/x-wiki
{{also|كروب}}
==တူရကဳအောက်ဒဝ်မာန်==
===ပွံၚ်နဲတၞဟ်===
* {{alt|ota|քէրէվէթ||Armeno-Turkish}}
===နိရုတ်===
{{bor+|ota|el|κρεβάτι}}၊ နူကဵုဝေါဟာ {{der|ota|grc|κράββατος}}
===နာမ်===
{{ota-noun|tr=kerevet}}
# ဖုန်။
#: {{syn|ota|قاریولا|tr1=karyola|یاتاقلق|tr2=yataklık}}
===မဒုၚ်လွဳစ===
* {{desc|tr|kerevet}}
* {{desc|hy|քերեվեթ|bor=1}}
* {{desc|ar|كَرَوِيتَة|tr=karawēta|bor=1}} {{q|dialects}}
* {{desc|bg|креве́т|bor=1}} {{q|obsolete}}, {{l|bg|крева́т}}
* {{desc|hu|kerevet|bor=1}}
* {{desc|mk|кревет|bor=1}}
* {{desc|sh|-|bor=1}}
*: {{desc|sh|крѐвет|sclang=1}}
*: {{desc|sh|krèvet|sclang=1}}
7gvwij99jizp77o7f8vk6gtw2wa6bmi
ကဏ္ဍ:ဝေါဟာတူရကဳအောက်ဒဝ်မာန်ကၠုၚ်နူဝေါဟာဂရေတ်ဂမၠိုၚ်
14
296645
398131
2026-07-10T03:16:55Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာတူရကဳအောက်ဒဝ်မာန်]]"
398131
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာတူရကဳအောက်ဒဝ်မာန်]]
19wzyq5biohsb6gd0ejnz7r0ux18la3
ကဏ္ဍ:ဝေါဟာတူရကဳအောက်ဒဝ်မာန်လွဳလဝ် နူဝေါဟာဂရေတ်ဂမၠိုၚ်
14
296646
398132
2026-07-10T03:17:32Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာတူရကဳအောက်ဒဝ်မာန်]]"
398132
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာတူရကဳအောက်ဒဝ်မာန်]]
19wzyq5biohsb6gd0ejnz7r0ux18la3
քէրէվէթ
0
296647
398133
2026-07-10T03:19:08Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==တူရကဳအောက်ဒဝ်မာန်== ===နာမ်=== {{ota-noun|tr=kerevet}} # {{alt form|ota|كروت}}"
398133
wikitext
text/x-wiki
==တူရကဳအောက်ဒဝ်မာန်==
===နာမ်===
{{ota-noun|tr=kerevet}}
# {{alt form|ota|كروت}}
bf295hkcxlqbervpaw4zsd3f2zz8d2q
كروب
0
296648
398134
2026-07-10T03:20:21Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|كروت}} =={{=ar=}}== ===နာမ်=== {{ar-head|nounf|كُرُوب|m-p}} # {{plural of|ar|كَرْب}}"
398134
wikitext
text/x-wiki
{{also|كروت}}
=={{=ar=}}==
===နာမ်===
{{ar-head|nounf|كُرُوب|m-p}}
# {{plural of|ar|كَرْب}}
9wjjolgoox8t04zb7t3huq492tj40fp