ဝိၵ်ႇသျိၼ်ႇၼရီႇ
shnwiktionary
https://shn.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%81%B5%E1%80%BA%E1%82%87%E1%80%9E%E1%80%BB%E1%80%AD%E1%81%BC%E1%80%BA%E1%82%87%E1%81%BC%E1%80%9B%E1%80%AE%E1%82%87:%E1%81%BC%E1%82%83%E1%82%88%E1%82%81%E1%80%B0%E1%80%9D%E1%80%BA%E1%82%81%E1%82%85%E1%81%B5%E1%80%BA%E1%82%88
MediaWiki 1.47.0-wmf.20
case-sensitive
သိုဝ်ႇၶၢဝ်ႇ
ၶိုၵ်ႉတွၼ်း
ဢုပ်ႇၵုမ်
ၽူႈၸႂ်ႉတိုဝ်း
ဢုပ်ႇၵုမ် ၽူႈၸႂ်ႉတိုဝ်း
ဝိၵ်ႇသျိၼ်ႇၼရီႇ
လွင်ႈဢုပ်ႇဢူဝ်း ဝိၵ်ႇသျိၼ်ႇၼရီႇ
ၾၢႆႇ
ဢုပ်ႇၵုမ် ၾၢႆႇ
မီႇတီႇယႃႇဝီႇၶီႇ
ဢုပ်ႇၵုမ် မီႇတီႇယႃႇဝီႇၶီႇ
ထႅမ်းပလဵတ်ႉ
ဢုပ်ႇၵုမ် ထႅမ်းပလဵတ်ႉ
လွင်ႈၸွႆႈထႅမ်
ဢုပ်ႇၵုမ် လွင်ႈၸွႆႈထႅမ်
ပိူင်ထၢၼ်ႈ
ဢုပ်ႇၵုမ် ပိူင်ထၢၼ်ႈ
ၵိူၼ်ႇတူ
ဢုပ်ႇၵုမ် ၵိူၼ်ႇတူ
တွၼ်ႈၸပ်းႁၢင်
ဢုပ်ႇၵုမ် တွၼ်ႈၸပ်းႁၢင်
တူၼ်းၸၢပ်ႈလႅပ်ႈ
ဢုပ်ႇၵုမ် တူၼ်းၸၢပ်ႈလႅပ်ႈ
ၶိုၼ်းၵေႃႇသၢင်ႈ
ဢုပ်ႇၵုမ် ၶိုၼ်းၵေႃႇသၢင်ႈ
TimedText
TimedText talk
မေႃႇၵျူး
ဢုပ်ႇၵုမ် မေႃႇၵျူး
Event
Event talk
မေႃႇၵျူး:headword/data
828
20462
292871
292227
2026-09-19T03:59:26Z
Saimawnkham
9
292871
Scribunto
text/plain
local headword_page_module = "Module:headword/page"
local list_to_set = require("Module:table").listToSet
local data = {}
------ 1. Lists which are converted into sets. ------
-- Large pages where we diable label tracking, red link checking and similar.
data.large_pages = list_to_set {
-- pages that consistently hit timeouts
"a",
-- pages that sometimes hit timeouts
"baba",
"de",
"e",
"i",
"o",
"u",
"и",
"山",
"子",
"月",
"一",
"人",
}
-- Zero-plurals (i.e. invariable plurals).
local irregular_plurals = list_to_set({
"cmavo",
"cmene",
"fu'ivla",
"gismu",
"Han tu",
"hanja",
"hanzi",
"jyutping",
"kana",
"kanji",
"lujvo",
"ပပ်ႉပွင်ႈၵႂၢမ်း",
"pinyin",
"rafsi",
"ပိူင်ၽၢင်ႁိၵ်ႈ",
"ပိူင်ၽၢင်ႁိၵ်ႈသုၼ်ႇလဵဝ်",
"ပိူင်ၽၢင်သၢင်ႈ",
"ႁိၵ်ႈ",
"ႁိၵ်ႈတၢင်",
"ႁိၵ်ႈသုၼ်ႇလဵဝ်",
"သၢင်ႈ",
"ၵမ်ႉသၢင်ႈ",
"ၵမ်ႉႁိၵ်ႈ",
"ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ",
"ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ",
"ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉသၢင်ႈ",
"ၶေႃႈသုင်သုတ်း ၵမ်ႉသၢင်ႈ",
"တိုၼ်ႇ",
"ၵပ်း",
"ႁဵင်း",
"တူဝ်ၼပ်ႉ",
"ၶေႃႈၵၢမ်းလင်",
"တူဝ်မႄႈလိၵ်ႈ",
"ပွင်ႈၵႂၢမ်း",
"တူဝ်ၼမ်းၼႃႈ",
}, function(_, item)
return item
end)
-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
mora = "morae"
} do
irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end
data.irregular_plurals = irregular_plurals
data.lemmas = list_to_set{
"abbreviations",
"acronyms",
"ၵမ်ႉႁိၵ်ႈ",
"adnominals",
"adpositions",
"ၵမ်ႉသၢင်ႈ",
"affixes",
"ambipositions",
"articles",
"circumfixes",
"circumpositions",
"classifiers",
"cmavo",
"cmavo clusters",
"cmene",
"combining forms",
"ၵပ်း",
"counters",
"determiners",
"diacritical marks",
"digraphs",
"equative adjectives",
"fu'ivla",
"gismu",
"Han characters",
"Han tu",
"hanja",
"hanzi",
"ideophones",
"idioms",
"infixes",
"initialisms",
"iteration marks",
"interfixes",
"တိုၼ်ႇ",
"kana",
"kanji",
"letters",
"ligatures",
"logograms",
"lujvo",
"morae",
"morphemes",
"non-constituents",
"ႁိၵ်ႈ",
"numbers",
"numeral symbols",
"numerals",
"particles",
"ပွင်ႈၵႂၢမ်း",
"postpositions",
"ပွင်ႈၵႂၢမ်းႁဵင်း",
"predicatives",
"တူဝ်ၼမ်းၼႃႈ",
"ပွင်ႈၵႂၢမ်းႁဵင်း",
"ႁဵင်း",
"preverbs",
"pronominal adverbs",
"ႁိၵ်ႈတၢင်",
"ႁိၵ်ႈသုၼ်ႇလဵဝ်",
"proverbs",
"punctuation marks",
"relatives",
"roots",
"stems",
"suffixes",
"syllables",
"symbols",
"သၢင်ႈ",
}
data.nonlemmas = list_to_set{
"active participle forms",
"active participles",
"adjectival participles",
"adjective case forms",
"ပိူင်ၽၢင်ၵမ်ႉႁိၵ်ႈ",
"adjective feminine forms",
"adjective plural forms",
"ပိူင်ၽၢင်ၵမ်ႉသၢင်ႈ",
"adverbial participles",
"agent participles",
"article forms",
"circumfix forms",
"combined forms",
"comparative adjective forms",
"ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ",
"comparative adverb forms",
"comparative adverbs",
"conjunction forms",
"contractions",
"converbs",
"determiner comparative forms",
"determiner forms",
"determiner superlative forms",
"diminutive nouns",
"elative adjectives",
"equative adjective forms",
"equative adjectives",
"future participles",
"gerunds",
"infinitive forms",
"infinitives",
"interjection forms",
"jyutping",
"တူဝ်လိၵ်ႈၽိတ်း",
"negative participles",
"nominal participles",
"noun case forms",
"noun construct forms",
"noun dual forms",
"ပိူင်ၽၢင်ႁိၵ်ႈ",
"noun paucal forms",
"noun plural forms",
"noun possessive forms",
"noun singulative forms",
"numeral forms",
"participles",
"participle forms",
"particle forms",
"passive participles",
"past active participles",
"past adverbial participles",
"past participles",
"past participle forms",
"past passive participles",
"perfect active participles",
"perfect participles",
"perfect passive participles",
"pinyin",
"plurals",
"postposition forms",
"prefix forms",
"preposition contractions",
"preposition forms",
"prepositional pronouns",
"present active participles",
"present adverbial participles",
"present participles",
"present passive participles",
"preverb forms",
"pronoun forms",
"pronoun possessive forms",
"proper noun forms",
"proper noun plural forms",
"rafsi",
"romanizations",
"root forms",
"singulatives",
"suffix forms",
"superlative adjective forms",
"superlative adjectives",
"superlative adverb forms",
"superlative adverbs",
"verb forms",
"verb form",
"ပိူင်ၽၢင်သၢင်ႈ",
"verbal nouns",
}
-- These langauges will not have links to separate parts of the headword.
data.no_multiword_links = list_to_set{
"zh",
}
-- These languages will not have "LANG multiword terms" categories added.
data.no_multiword_cat = list_to_set{
-------- Languages without spaces between words (sometimes spaces between phrases) --------
"blt", -- တႆးလမ်
"ja", -- ၵျႃႇပၢၼ်ႇ
"khb", -- လိုဝ်ႉ
"km", -- ၶမဵၼ်
"lo", -- လၢဝ်း
"mnw", -- မွၼ်း
"my", -- မၢၼ်ႈ
"nan", -- မိၼ်းၼၼ် (some words in Latin script; hyphens between syllables)
"nan-hbl", -- ႁွၵ်ႉၵဵၼ်း (some words in Latin script; hyphens between syllables)
"nod", -- လၢၼ်ႉၼႃး
"ojp", -- Old Japanese
"shn", -- တႆး
"sou", -- ထႆးပွတ်းၸၢၼ်း
"tdd", -- တႆးၼိူဝ်
"th", -- ထႆး
"tts", -- ဢီႇသၢၼ်
"twh", -- Tai Dón
"txg", -- Tangut
"zh", -- ၶႄႇ (all varieties with Chinese characters)
"zkt", -- Khitan
-------- Languages with spaces between syllables --------
"ahk", -- Akha
"aou", -- A'ou
"atb", -- Zaiwa
"byk", -- Biao
"cdy", -- Chadong
--"duu", -- Drung; not sure
--"hmx-pro", -- Proto-Hmong-Mien
--"hnj", -- Green Hmong; not sure
"huq", -- Tsat
"ium", -- Iu Mien
--"lis", -- Lisu; not sure
"mtq", -- Muong
--"mww", -- White Hmong; not sure
"onb", -- Lingao
--"sit-gkh", -- Gokhy; not sure
--"swi", -- Sui; not sure
"tbq-lol-pro", -- Proto-Loloish
"tdh", -- Thulung
"ukk", -- Muak Sa-aak
"vi", -- Vietnamese
"yig", -- Wusa Nasu
"zng", -- Mang
-------- Languages with ~ with surrounding spaces used to separate variants --------
"mkh-ban-pro", -- Proto-Bahnaric
"sit-pro", -- Proto-Sino-Tibetan; listed above
-------- Other weirdnesses --------
"mul", -- Translingual; gestures, Morse code, etc.
"aot", -- Atong (India); bullet is a letter
-------- All sign languages --------
"ads",
"aed",
"aen",
"afg",
"ase",
"asf",
"asp",
"asq",
"asw",
"bfi",
"bfk",
"bog",
"bqn",
"bqy",
"bvl",
"bzs",
"cds",
"csc",
"csd",
"cse",
"csf",
"csg",
"csl",
"csn",
"csq",
"csr",
"doq",
"dse",
"dsl",
"ecs",
"esl",
"esn",
"eso",
"eth",
"fcs",
"fse",
"fsl",
"fss",
"gds",
"gse",
"gsg",
"gsm",
"gss",
"gus",
"hab",
"haf",
"hds",
"hks",
"hos",
"hps",
"hsh",
"hsl",
"icl",
"iks",
"ils",
"inl",
"ins",
"ise",
"isg",
"isr",
"jcs",
"jhs",
"jls",
"jos",
"jsl",
"jus",
"kgi",
"kvk",
"lbs",
"lls",
"lsl",
"lso",
"lsp",
"lst",
"lsy",
"lws",
"mdl",
"mfs",
"mre",
"msd",
"msr",
"mzc",
"mzg",
"mzy",
"nbs",
"ncs",
"nsi",
"nsl",
"nsp",
"nsr",
"nzs",
"okl",
"pgz",
"pks",
"prl",
"prz",
"psc",
"psd",
"psg",
"psl",
"pso",
"psp",
"psr",
"pys",
"rms",
"rsl",
"rsm",
"sdl",
"sfb",
"sfs",
"sgg",
"sgx",
"slf",
"sls",
"sqk",
"sqs",
"ssp",
"ssr",
"svk",
"swl",
"syy",
"tse",
"tsm",
"tsq",
"tss",
"tsy",
"tza",
"ugn",
"ugy",
"ukl",
"uks",
"vgt",
"vsi",
"vsl",
"vsv",
"xki",
"xml",
"xms",
"ygs",
"ysl",
"zib",
"zsl",
}
-- In these languages, the hyphen is not considered a word separator for the "multiword terms" category.
data.hyphen_not_multiword_sep = list_to_set{
"akk", -- Akkadian; hyphens between syllables
"akl", -- Aklanon; hyphens for mid-word glottal stops
"ber-pro", -- Proto-Berber; morphemes separated by hyphens
"ceb", -- Cebuano; hyphens for mid-word glottal stops
"cnk", -- Khumi Chin; hyphens used in single words
"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
"de", -- too many false positives
"esx-esk-pro", -- hyphen used to separate morphemes
"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
"hil", -- Hiligaynon; hyphens for mid-word glottal stops
"hnn", -- Hanunoo; too many false positives
"ilo", -- Ilocano; hyphens for mid-word glottal stops
"kne", -- Kankanaey; hyphens for mid-word glottal stops
"lcp", -- Western Lawa; dash as syllable joiner
"lwl", -- Eastern Lawa; dash as syllable joiner
"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
"msb", -- Masbatenyo; too many false positives
"tl", -- Tagalog; too many false positives
"war", -- Waray-Waray; too many false positives
"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}
-- These languages will not have "LANG masculine nouns" and similar categories added.
data.no_gender_cat = list_to_set{
-- Languages without gender but which use the gender field for other purposes
"ja",
"th",
}
data.notranslit = list_to_set{
"ams",
"az",
"bbc",
"bug",
"cdo",
"cia",
"cjm",
"cjy",
"cmn",
"cnp",
"cpi",
"cpx",
"csp",
"czh",
"czo",
"gan",
"hak",
"hnm",
"hsn",
"ja",
"kzg",
"lad",
"ltc",
"luh",
"lzh",
"mnp",
"ms",
"mul",
"mvi",
"nan",
"nan-dat",
"nan-hbl",
"nan-hlh",
"nan-lnx",
"nan-tws",
"nan-zhe",
"nan-zsh",
"och",
"oj",
"okn",
"ryn",
"rys",
"ryu",
"sh",
"sjc",
"tgt",
"th",
"tkn",
"tly",
"txg",
"und",
"vi",
"wuu",
"xug",
"yoi",
"yox",
"yue",
"za",
"zh",
"zhx-sic",
"zhx-tai",
}
-- Script codes for which a script-tagged display title will be added.
data.toBeTagged = list_to_set{
"Ahom",
"Arab",
"fa-Arab",
"glk-Arab",
"kk-Arab",
"ks-Arab",
"ku-Arab",
"mzn-Arab",
"ms-Arab",
"ota-Arab",
"pa-Arab",
"ps-Arab",
"sd-Arab",
"tt-Arab",
"ug-Arab",
"ur-Arab",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Batk",
"Beng",
"as-Beng",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Egyd",
"Egyp",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Grek",
"Polyt",
"polytonic",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hebr",
"Hira",
"Hluw",
"Ital",
"Java",
"Kali",
"Kana",
"Khar",
"Khmr",
"Knda",
"Kthi",
"Lana",
"Laoo",
"Latn",
"Latf",
"Latg",
"Latnx",
"Latinx",
"pjt-Latn",
"Lepc",
"Limb",
"Linb",
"Lisu",
"Lyci",
"Lydi",
"Mand",
"Mani",
"Marc",
"Merc",
"Mero",
"Mlym",
"Mong",
"mnc-Mong",
"sjo-Mong",
"xwo-Mong",
"Mtei",
"Mymr",
"Narb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Ougr",
"Palm",
"Phag",
"Phli",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Rjng",
"Runr",
"Samr",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Tagb",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Ugar",
"Vaii",
"Xpeo",
"Xsux",
"Yiii",
"Zmth",
"Zsym",
"Ipach",
"Music",
"Rumin",
}
-- Parts of speech which will not be categorised in categories like "English terms spelled with É" if
-- the term is the character in question (e.g. the letter entry for English [[é]]). This contrasts with
-- entries like the French adjective [[m̂]], which is a one-letter word spelled with the letter.
data.pos_not_spelled_with_self = list_to_set{
"diacritical marks",
"Han characters",
"Han tu",
"hanja",
"hanzi",
"iteration marks",
"kana",
"kanji",
"letters",
"ligatures",
"logograms",
"morae",
"numeral symbols",
"numerals",
"punctuation marks",
"syllables",
"symbols",
}
------ 2. Lists not converted into sets. ------
-- Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
-- pluralized) form. It is singular so that the same table can be used in [[Module:form of]] for the p=/POS= param
-- and [[Module:links]] for the pos= param.
data.pos_aliases = {
a = "ၵမ်ႉႁိၵ်ႈ",
adj = "ၵမ်ႉႁိၵ်ႈ",
adv = "ၵမ်ႉသၢင်ႈ",
art = "article",
aug = "augmentative",
det = "determiner",
dim = "diminutive",
compadj = "comparative adjective",
compadv = "comparative adverb",
conj = "ၵပ်း",
contr = "contraction",
conv = "converb",
int = "တိုၼ်ႇ",
interj = "တိုၼ်ႇ",
intj = "တိုၼ်ႇ",
n = "ႁိၵ်ႈ",
-- the next two support Algonquian languages; see also vii/vai/vti/vta below
na = "animate noun",
ni = "inanimate noun",
num = "numeral",
part = "participle",
pcl = "particle",
phr = "ပွင်ႈၵႂၢမ်း",
pn = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
postp = "postposition",
pref = "prefix",
prep = "ႁဵင်း",
prepphr = "ပွင်ႈၵႂၢမ်းႁဵင်း",
pron = "ႁိၵ်ႈတၢင်",
prop = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
proper = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
propn = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
rom = "romanization",
romanisation = "romanization",
romanisations = "romanization",
suf = "suffix",
supadj = "superlative adjective",
supadv = "superlative adverb",
sym = "symbol",
v = "သၢင်ႈ",
vb = "သၢင်ႈ",
vi = "intransitive verb",
vt = "transitive verb",
-- the next four support Algonquian languages
vii = "inanimate intransitive verb",
vai = "animate intransitive verb",
vti = "transitive inanimate verb",
vta = "transitive animate verb",
["verb form"] = "ပိူင်ၽၢင်သၢင်ႈ",
["verb forms"] = "ပိူင်ၽၢင်သၢင်ႈ",
["noun form"] = "ပိူင်ၽၢင်ႁိၵ်ႈ",
["noun forms"] = "ပိူင်ၽၢင်ႁိၵ်ႈ",
["adjective form"] = "ပိူင်ၽၢင်ၵမ်ႉႁိၵ်ႈ",
["adjective forms"] = "ပိူင်ၽၢင်ၵမ်ႉႁိၵ်ႈ",
["adverb form"] = "ပိူင်ၽၢင်ၵမ်ႉသၢင်ႈ",
["adverb forms"] = "ပိူင်ၽၢင်ၵမ်ႉသၢင်ႈ",
}
-- Parts of speech for which categories like "German masculine nouns" or "Russian imperfective verbs"
-- will be generated if the headword is of the appropriate gender/number.
data.pos_for_gender_number_cat = {
["nouns"] = "ႁိၵ်ႈ",
["proper nouns"] = "ႁိၵ်ႈ",
["suffixes"] = "suffixes",
-- We include verbs because impf and pf are valid "genders".
["verbs"] = "သၢင်ႈ",
}
-- Lower limit for a "long" word in a particular language.
-- Used to categorize terms into e.g. [[:Category:Long English words]] automatically.
-- Languages with no mapping here do not get categorized.
data.long_word_thresholds = {
["af"] = 20,
["bg"] = 20,
["cy"] = 25,
["de"] = 20,
["en"] = 25,
["es"] = 20,
["fr"] = 20,
["ka"] = 20,
["sv"] = 20,
["tl"] = 25,
}
------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Fuckme, random references to data.pagename and data.encoded_pagename are scattered throughout the codebase. FIXME!
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename
return data
if52go7hsbexf42qlaa4rhcoqknpnzm
မေႃႇၵျူး:headword
828
20546
292874
255758
2026-09-19T04:24:02Z
Saimawnkham
9
292874
Scribunto
text/plain
local export = {}
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local gender_and_number_module = "Module:gender and number"
local headword_data_module = "Module:headword/data"
local headword_page_module = "Module:headword/page"
local links_module = "Module:links"
local load_module = "Module:load"
local pages_module = "Module:pages"
local palindromes_module = "Module:palindromes"
local pron_qualifier_module = "Module:pron qualifier"
local scripts_module = "Module:scripts"
local scripts_data_module = "Module:scripts/data"
local script_utilities_module = "Module:script utilities"
local script_utilities_data_module = "Module:script utilities/data"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local utilities_module = "Module:utilities"
local concat = table.concat
local dump = mw.dumpObject
local insert = table.insert
local ipairs = ipairs
local max = math.max
local new_title = mw.title.new
local pairs = pairs
local require = require
local toNFC = mw.ustring.toNFC
local toNFD = mw.ustring.toNFD
local type = type
local ufind = mw.ustring.find
local ugmatch = mw.ustring.gmatch
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
-- Loaders for functions in other modules
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function encode_entities(...)
encode_entities = require(string_utilities_module).encode_entities
return encode_entities(...)
end
local function extend(...)
extend = require(table_module).extend
return extend(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_genders(...)
format_genders = require(gender_and_number_module).format_genders
return format_genders(...)
end
local function format_pron_qualifiers(...)
format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers
return format_pron_qualifiers(...)
end
local function full_link(...)
full_link = require(links_module).full_link
return full_link(...)
end
local function get_current_L2(...)
get_current_L2 = require(pages_module).get_current_L2
return get_current_L2(...)
end
local function get_link_page(...)
get_link_page = require(links_module).get_link_page
return get_link_page(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function is_palindrome(...)
is_palindrome = require(palindromes_module).is_palindrome
return is_palindrome(...)
end
local function language_link(...)
language_link = require(links_module).language_link
return language_link(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function pattern_escape(...)
pattern_escape = require(string_utilities_module).pattern_escape
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_page(...)
process_page = require(headword_page_module).process_page
return process_page(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function trim(...)
trim = require(string_utilities_module).trim
return trim(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local m_data
local function get_data()
m_data = load_data(headword_data_module)
return m_data
end
local script_data
local function get_script_data()
script_data = load_data(scripts_data_module)
return script_data
end
local script_utilities_data
local function get_script_utilities_data()
script_utilities_data = load_data(script_utilities_data_module)
return script_utilities_data
end
local test_force_categories = false
local function track(track_id, lang)
local tracking_page = "headword/" .. track_id
if lang and lang:hasType("etymology-only") then
debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(),
tracking_page .. "/" .. lang:getFullCode()}
elseif lang then
debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()}
else
debug_track(tracking_page)
end
return true
end
local function text_in_script(text, script_code)
local sc = get_script(script_code)
if not sc then
error("Internal error: Bad script code " .. script_code)
end
local characters = sc.characters
local out
if characters then
text = ugsub(text, "%W", "")
out = ufind(text, "[" .. characters .. "]")
end
if out then
return true
else
return false
end
end
local spacingPunctuation = "[%s%p]+"
local wordPunc = "-#%%&@־׳״'.·*’᠊"
local notWordPunc = "[^" .. wordPunc .. "]+"
local function format_term_with_qualifiers_and_refs(lang, part, formatted, j)
local function part_non_empty(field)
local list = part[field]
if not list then
return nil
end
if type(list) ~= "table" then
error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list)))
end
return list[1]
end
if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or
part_non_empty("ll") or part_non_empty("refs") then
formatted = format_pron_qualifiers {
lang = lang,
text = formatted,
q = part.q,
qq = part.qq,
l = part.l,
ll = part.ll,
refs = part.refs,
}
end
local separator = part.separator or j > 1 and " <i>or</i> "
if separator then
formatted = separator .. formatted
end
return formatted
end
function export.head_is_multiword(head)
for possibleWordBreak in ugmatch(head, spacingPunctuation) do
if umatch(possibleWordBreak, notWordPunc) then
return true
end
end
return false
end
do
local function workaround_to_exclude_chars(s)
return (ugsub(s, notWordPunc, "\2%1\1"))
end
function export.add_multiword_links(head, default)
head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2"
if default then
head = head
:gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2")
:gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2")
end
head = encode_entities(head, "[]", true, true)
return (head
:gsub("\1\2", "")
:gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"}))
end
end
local function non_categorizable(full_raw_pagename)
return full_raw_pagename:find("^Appendix:Gestures/") or
(full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`"))
end
local function tag_text_and_add_quals_and_refs(data, head, formatted, j)
formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil)
return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j)
end
local function format_headword(data)
local has_translits = false
local has_manual_translits = false
local head_parts = {}
local unique_head_parts = {}
local has_multiple_heads = not not data.heads[2]
for j, head in ipairs(data.heads) do
if head.tr or head.ts then
has_translits = true
end
if head.tr and head.tr_manual or head.ts then
has_manual_translits = true
end
local formatted
if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then
formatted = language_link{term = head.term, lang = data.lang}
else
formatted = data.lang:makeDisplayText(head.term, head.sc, true)
end
local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j)
insert(head_parts, head_part)
if has_multiple_heads then
local unique_head_part
if j == 1 then
unique_head_part = head_part
else
unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1)
end
unique_head_parts[unique_head_part] = true
end
end
local set_size = 0
if has_multiple_heads then
for _ in pairs(unique_head_parts) do
set_size = set_size + 1
end
end
if set_size == 1 then
head_parts = head_parts[1]
else
head_parts = concat(head_parts)
end
if has_manual_translits then
track("manual-tr", data.lang)
end
local translits_formatted
if has_translits then
local translit_parts = {}
for _, head in ipairs(data.heads) do
if head.tr or head.ts then
local this_parts = {}
if head.tr then
insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual))
if head.ts then
insert(this_parts, " ")
end
end
if head.ts then
insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/")
end
insert(translit_parts, concat(this_parts))
end
end
translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")"
local langname = data.lang:getCanonicalName()
local transliteration_page = new_title(langname .. " transliteration", "Wiktionary")
local saw_translit_page = false
if transliteration_page and transliteration_page:getContent() then
translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted
saw_translit_page = true
end
if not saw_translit_page and data.lang:hasType("etymology-only") then
langname = data.lang:getFullName()
transliteration_page = new_title(langname .. " transliteration", "Wiktionary")
if transliteration_page and transliteration_page:getContent() then
translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted
end
end
else
translits_formatted = ""
end
local lemma_gloss
if data.gloss then
lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>'
else
lemma_gloss = ""
end
return head_parts .. translits_formatted .. lemma_gloss
end
local function format_headword_genders(data)
local retval = ""
if data.genders and data.genders[1] then
if data.gloss then
retval = ","
end
local pos_for_cat
if not data.nogendercat then
local no_gender_cat = (m_data or get_data()).no_gender_cat
if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then
pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")]
end
end
local text, cats = format_genders(data.genders, data.lang, pos_for_cat)
if cats then
extend(data.categories, cats)
end
retval = retval .. " " .. text
end
return retval
end
local format_inflections
local function format_inflection_parts(data, parts)
for j, part in ipairs(parts) do
if type(part) ~= "table" then
part = {term = part}
end
local partaccel = part.accel
local face = part.face or "bold"
if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then
error("The face `" .. face .. "` " .. (
(script_utilities_data or get_script_utilities_data()).faces[face] and
"should not be used for non-headword terms on the headword line." or
"is invalid."
))
end
local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or (
data.nolink and track("nolink") or data.nolinkinfl)
local formatted
if part.label then
formatted = "<i>" .. part.label .. "</i>"
else
local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil
if part.translit then
error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit")
end
if part.transcription then
error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription")
end
local postprocess_annotations
if part.inflections then
postprocess_annotations = function(infldata)
insert(infldata.annotations, format_inflections(data, part.inflections))
end
end
formatted = full_link(
{
term = not nolinkinfl and part.term or nil,
alt = part.alt or (nolinkinfl and part.term or nil),
lang = part.lang or data.lang,
sc = part.sc or parts.sc or nil,
gloss = part.gloss,
pos = part.pos,
lit = part.lit,
id = part.id,
genders = part.genders,
tr = tr,
ts = part.ts,
accel = partaccel or parts.accel,
postprocess_annotations = postprocess_annotations,
},
face
)
end
parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part,
formatted, j)
end
local parts_output
if parts[1] then
parts_output = (parts.label and " " or "") .. concat(parts)
elseif parts.request then
parts_output = " <small>[please provide]</small>"
insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries")
else
parts_output = ""
end
local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or ""
return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1)
end
format_inflections = function(data, inflections)
if inflections and inflections[1] then
for key, infl in ipairs(inflections) do
inflections[key] = format_inflection_parts(data, infl)
end
return concat(inflections, ", ")
else
return ""
end
end
local function format_top_level_inflections(data)
local result = format_inflections(data, data.inflections)
if result ~= "" then
return " (" .. result .. ")"
else
return result
end
end
function export.pluralize_pos(pos)
return (m_data or get_data()).irregular_plurals[pos] or
pos:sub(-1) == "s" and pos or
pluralize(pos)
end
function export.pos_lemma_or_nonlemma(plpos, best_guess)
local m_headword_data = m_data or get_data()
local isLemma = m_headword_data.lemmas
if isLemma[plpos] then
return "ၶေႃႈတင်ႈ"
end
local plpos_no_recon = plpos:gsub("^reconstructed ", "")
if isLemma[plpos_no_recon] then
return "ၶေႃႈတင်ႈ"
end
local isNonLemma = m_headword_data.nonlemmas
if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then
return "ဢမ်ႇၸႂ်ႈပိူင်ၶေႃႈတင်ႈ"
end
local plpos_no_mut = plpos:gsub("^mutated ", "")
if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then
return "ဢမ်ႇၸႂ်ႈပိူင်ၶေႃႈတင်ႈ"
elseif best_guess then
return plpos:find(" forms$") and "non-lemma form" or "lemma"
else
return nil
end
end
function export.canonicalize_pos(pos)
if pos == "pre" then
error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'")
end
if pos == "pro" or pos == "prof" then
error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'")
end
local m_headword_data = m_data or get_data()
if m_headword_data.pos_aliases[pos] then
pos = m_headword_data.pos_aliases[pos]
elseif pos:sub(-1) == "f" then
pos = pos:sub(1, -2)
pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms"
end
return export.pluralize_pos(pos)
end
local function init_and_find_maximum_index(data, element, allow_blank_string)
local maxind = 0
if not data[element] then
data[element] = {}
end
local typ = type(data[element])
if typ ~= "table" then
error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ))
end
for k, v in pairs(data[element]) do
if k ~= "maxindex" then
if type(k) ~= "number" then
error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element))
end
if k > maxind then
maxind = k
end
if v then
if type(v) ~= "string" then
error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v)))
end
if not allow_blank_string and v == "" then
error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element))
end
end
end
end
return maxind
end
do
local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
sortkey = sortkey or lang:makeSortKey(page.pagename)
if tbl == true then
if page.raw_defaultsort ~= sortkey then
insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys")
end
return
end
local redundant, different
for k in pairs(tbl) do
if k == sortkey then
redundant = true
else
different = true
end
end
if redundant then
insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys")
end
if different then
insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys")
end
return sortkey
end
function export.maintenance_cats(page, lang, lang_cats, page_cats)
extend(page_cats, page.cats)
lang = lang:getFull()
local canonical = lang:getCanonicalName()
local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()]
if tbl then
sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
insert(lang_cats, canonical .. " entries with topic categories using raw markup")
end
tbl = page.wikitext_langname_cat[canonical]
if tbl then
handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
insert(lang_cats, canonical .. " entries with language name categories using raw markup")
end
if get_current_L2() ~= canonical then
insert(lang_cats, canonical .. " entries with incorrect language header")
track("incorrect language header", lang)
end
end
end
function export.full_headword(data)
local data = shallow_copy(data)
if data.getCanonicalName then
error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object")
end
if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then
error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object")
end
if data.id and type(data.id) ~= "string" then
error("Internal error: The id in the data table should be a string.")
end
local langcode = data.lang:getCode()
local full_langcode = data.lang:getFullCode()
local langname = data.lang:getCanonicalName()
local full_langname = data.lang:getFullName()
local raw_pagename = data.pagename
local page
local m_headword_data = m_data or get_data()
if raw_pagename and raw_pagename ~= m_headword_data.pagename then
local actual_namespace = m_headword_data.page.namespace
local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or
actual_namespace == "Module"
page = process_page(raw_pagename, no_fetch_content)
else
page = m_headword_data.page
end
local namespace = page.namespace
if type(data.heads) == "table" and type(data.heads[1]) == "table" then
if data.translits or data.transcriptions then
error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given")
end
else
local maxind = max(
init_and_find_maximum_index(data, "heads"),
init_and_find_maximum_index(data, "translits", true),
init_and_find_maximum_index(data, "transcriptions", true)
)
for i = 1, maxind do
data.heads[i] = {
term = data.heads[i],
tr = data.translits[i],
ts = data.transcriptions[i],
}
end
end
if not data.heads[1] then
data.heads[1] = {}
end
if data.altform then
data.noposcat = true
end
init_and_find_maximum_index(data, "categories")
init_and_find_maximum_index(data, "whole_page_categories")
local pos_category_already_present = false
if data.categories[1] then
local escaped_langname = pattern_escape(full_langname)
local matches_lang_pattern = "^" .. escaped_langname .. " "
for _, cat in ipairs(data.categories) do
if not cat:find(matches_lang_pattern) then
track("no lang category", data.lang)
end
end
if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then
data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "")
pos_category_already_present = true
end
end
-- လွင်ႈႁဵတ်း Mapping တႃႇ ဢဝ် ၸိုဝ်ႈ POS Category လႄႈ Alias ၸိူဝ်းၼႆႉ လၢႆႈၸူးၽႃႇသႃႇတႆး
if data.pos_category then
data.pos_category = export.canonicalize_pos(data.pos_category)
end
if not data.pos_category then
error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in "
.. "`data.categories`. Either specify the plural part of speech in `data.pos_category` "
.. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the "
.. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")."
)
end
if not pos_category_already_present and not data.noposcat then
local pos_category = data.pos_category .. full_langname
if pos_category ~= "Translingual Han characters" then
insert(data.categories, 1, pos_category)
end
end
local postype = export.pos_lemma_or_nonlemma(data.pos_category)
if not postype then
track("unrecognized pos", data.lang)
track("unrecognized pos/pos/" .. data.pos_category, data.lang)
elseif not data.noposcat then
insert(data.categories, 1, postype .. full_langname)
end
if data.altform then
insert(data.categories, 1, " ပိူင်ၽၢင်တၢင်ႇဢၼ်" .. full_langname)
end
local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!")
local lang_reconstructed = data.lang:hasType("reconstructed")
if is_anti_asterisk then
if not lang_reconstructed then
error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages")
end
lang_reconstructed = false
end
local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed
local default_head = page.pagename
if not (is_reconstructed or data.nolinkhead) then
local no_links = m_headword_data.no_multiword_links
if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then
default_head = export.add_multiword_links(default_head, true)
end
end
if is_reconstructed then
default_head = "*" .. default_head
end
if namespace == "" then
if lang_reconstructed then
error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace")
elseif data.lang:hasType("appendix-constructed") then
error("Entries in " .. langname .. " must be placed in the Appendix: namespace")
end
elseif namespace == "Citations" or namespace == "Thesaurus" then
error("Headword templates should not be used in the " .. namespace .. ": namespace.")
end
local any_script_has_spaces = false
local has_redundant_head_param = false
for _, head in ipairs(data.heads) do
if not head.term then
head.term = default_head
elseif head.term == default_head then
has_redundant_head_param = true
elseif is_anti_asterisk and head.term == "!!" then
head.term = "!!" .. default_head
elseif head.term:find("^[!?]$") then
head.term = default_head .. head.term
end
head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term
if is_reconstructed then
local head_term = head.term
if head_term:find("%[%[") then
head_term = remove_links(head_term)
end
if head_term:sub(1, 1) ~= "*" then
error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.")
end
end
local auto_sc = data.lang:findBestScript(head.term)
if (
auto_sc:getCode() == "None" and
find_best_script_without_lang(head.term):getCode() ~= "None"
) then
insert(data.categories, full_langname .. " terms in nonstandard scripts")
end
if not (head.sc or data.sc) then
head.sc = auto_sc
else
if not head.sc then
head.sc = data.sc
end
if head.sc:getCode() == auto_sc:getCode() then
insert(data.categories, full_langname .. " terms with redundant script codes")
else
insert(data.categories, full_langname .. " terms with non-redundant manual script codes")
end
end
if head.sc:hasNormalizationFixes() == true then
local composed_head = toNFC(head.term)
if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then
insert(data.whole_page_categories, "Pages using discouraged character sequences")
end
end
any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces()
head.tr_manual = nil
if head.tr == "-" then
head.tr = nil
else
local notranslit = m_headword_data.notranslit
if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then
head.tr_manual = not not head.tr
local text = head.term_no_initial_bang_bang
if not data.lang:link_tr(head.sc) then
text = remove_links(text)
end
local automated_tr = data.lang:transliterate(text, head.sc)
if automated_tr then
local manual_tr = head.tr
if manual_tr then
if remove_links(manual_tr) == remove_links(automated_tr) then
insert(data.categories, full_langname .. " terms with redundant transliterations")
else
insert(data.categories, full_langname .. " terms with non-redundant manual transliterations")
end
end
if not manual_tr then
head.tr = automated_tr
end
end
if not head.tr then
head.tr = "<small>transliteration needed</small>"
insert(data.categories, "တုၵ်းယွၼ်း တွၼ်ႈတႃႇ လွင်ႈပိၼ်ႇသဵင်ဢွၵ်ႇ ၶေႃႈၵႂၢမ်း" .. full_langname)
else
head.tr = trim(head.tr)
end
end
end
if head.tr and data.lang:link_tr(head.sc) then
head.tr = full_link{
term = head.tr,
lang = data.lang,
sc = get_script("Latn"),
tr = "-"
}
end
end
local display_title
local dt_script = data.heads[1].sc
local dt_script_code = dt_script:getCode()
local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$")
local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "")
if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then
display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>'
elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code]
or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana")))
or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then
display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>'
elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then
display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>'
elseif namespace == "Reconstruction" then
local matched
display_title, matched = ugsub(
page.full_raw_pagename,
"^(Reconstruction:[^/]+/)(.+)$",
function(before, term)
return before .. tag_text(term, data.lang, dt_script)
end
)
if matched == 0 then
display_title = nil
end
end
if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then
display_title = nil
end
if display_title then
mw.getCurrentFrame():callParserFunction(
"DISPLAYTITLE",
display_title
)
end
if data.force_cat_output then
track("force cat output")
end
if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then
local no_multiword_cat = m_headword_data.no_multiword_cat
if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then
local no_hyphen = m_headword_data.hyphen_not_multiword_sep
local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s%%-]." or ".[%s%-፡]."
local is_multiword = umatch(page.pagename, checkpattern)
if is_multiword and not non_categorizable(page.full_raw_pagename) then
insert(data.categories, "ၶေႃႈၵႂၢမ်းလၢႆၶေႃႈၽႃႇသႃႇ" .. full_langname)
elseif not is_multiword then
local long_word_threshold = m_headword_data.long_word_thresholds[langcode]
if long_word_threshold and ulen(page.pagename) >= long_word_threshold then
insert(data.categories, "Long " .. full_langname .. " words")
end
end
end
end
if data.sccat then
for _, head in ipairs(data.heads) do
insert(data.categories, full_langname .. " " .. data.pos_category .. " in " ..
head.sc:getDisplayForm())
end
end
if namespace ~= "Reconstruction" then
local characters_to_ignore = {
["aaq"] = "αάὰ", ["acy"] = "δθ", ["aez"] = "β", ["anc"] = "γ", ["aou"] = "χ",
["art-blk"] = "ч", ["awg"] = "β", ["az"] = "ь", ["ba"] = "ь", ["bhp"] = "β",
["bjz"] = "β", ["byk"] = "θ", ["cdy"] = "θ", ["chp"] = "θ", ["cjh"] = "χ",
["clm"] = "χ", ["col"] = "χ", ["coo"] = "χθ", ["crx"] = "θ", ["ets"] = "θ",
["ett"] = "χ", ["fla"] = "χ", ["grt"] = "་", ["gmw-gts"] = "χ", ["hur"] = "χθ",
["itc-psa"] = "f", ["izh"] = "ь", ["kic"] = "θ", ["kk"] = "ь", ["ky"] = "ь",
["lil"] = "χ", ["lsi"] = "ꓹ", ["mhz"] = "β", ["mqn"] = "β", ["neg"]= "ӡā",
["oka"] = "χ", ["ole"] = "θ", ["oui"] = "γβ", ["pox"] = "χ", ["rif"] = "ε",
["rom"] = "Θθ", ["rpn"] = "β", ["sah"] = "ь", ["sit-jap"] = "χ", ["sjw"] = "θ",
["squ"] = "χ", ["str"] = "χθ", ["teh"] = "χ", ["tep"] = "η", ["thp"] = "χ",
["tk"] = "ь", ["tt"] = "ь", ["twa"] = "χ", ["wbl"] = "ы", ["xbc"] = "ϸ",
["yha"] = "θ", ["za"] = "зч", ["zlw-slv"] = "χђћ", ["zng"] = "θ", ["ztp"] = "θ",
}
local seen_scripts = {}
local num_seen_scripts = 0
local num_loops = 0
local canon_pagename = page.pagename
local ch_to_ignore = characters_to_ignore[full_langcode]
if ch_to_ignore then
canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "")
end
while true do
if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then
break
end
num_loops = num_loops + 1
local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort")
local script_chars = pagename_script.characters
if not script_chars then
break
end
local script_code = pagename_script:getCode()
local replaced
canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "")
if (
replaced and
script_code ~= "Zmth" and
(script_data or get_script_data())[script_code] and
script_data[script_code].character_category ~= false
) then
script_code = script_code:gsub("^.-%-", "")
if not seen_scripts[script_code] then
seen_scripts[script_code] = true
num_seen_scripts = num_seen_scripts + 1
end
end
end
if num_seen_scripts > 1 then
insert(data.categories, full_langname .. " terms written in multiple scripts")
end
end
local standard = data.lang:getStandardCharacters()
if standard and not non_categorizable(page.full_raw_pagename) then
local function char_category(char)
local specials = {
["#"] = "number sign",
["("] = "parentheses",
[")"] = "parentheses",
["<"] = "angle brackets",
[">"] = "angle brackets",
["["] = "square brackets",
["]"] = "square brackets",
["_"] = "underscore",
["{"] = "braces",
["|"] = "vertical line",
["}"] = "braces",
["ß"] = "ẞ",
["\205\133"] = "",
["\239\191\189"] = "replacement character",
}
char = toNFD(char)
:gsub(".[\128-\191]*", function(m)
local new_m = specials[m]
new_m = new_m or m:uupper()
return new_m
end)
return toNFC(char)
end
if full_langcode ~= "hi" and full_langcode ~= "lo" then
local standard_chars_scripts = {}
for _, head in ipairs(data.heads) do
standard_chars_scripts[head.sc:getCode()] = true
end
for code in pairs(standard_chars_scripts) do
local sc_standard = data.lang:getStandardCharacters(code)
if sc_standard then
if page.pagename_len > 1 then
local explode_standard = {}
local function explode(char)
explode_standard[char] = true
return ""
end
local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode)
sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode)
:gsub(".[\128-\191]*", explode)
local num_cat_inserted
for char in pairs(page.explode_pagename) do
if not explode_standard[char] then
if char:find("[0-9]") then
if not num_cat_inserted then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. "ဢၼ်လေႃးဝႆႉတင်း တူဝ်ၼပ်ႉ")
num_cat_inserted = true
end
elseif ufind(char, page.emoji_pattern) then
nsert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း ဢီမူဝ်းၵျိ")
else
local upper = char_category(char)
if not explode_standard[upper] then
char = upper
end
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း " .. char)
end
end
end
end
sc_standard = toNFD(sc_standard)
for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do
if not umatch(sc_standard, diacritic) then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း ◌" .. diacritic)
end
end
for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do
if not umatch(sc_standard, diacritic) then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname " ဢၼ်လေႃးဝႆႉတင်း ◌" .. diacritic .. "◌")
end
end
end
end
elseif ulen(page.pagename) ~= 1 then
for character in ugmatch(page.pagename, "([^" .. standard .. "])") do
local upper = char_category(character)
if not umatch(upper, "[" .. standard .. "]") then
character = upper
end
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း " .. character)
end
end
end
if data.heads[1].sc:isSystem("alphabet") then
local pagename, i = page.pagename:ulower(), 2
while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do
i = i + 1
insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter")
end
end
if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2
and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then
insert(data.categories, " ပႃႇလိၼ်ႇထရူမ်း " .. full_langname)
end
if namespace == "" and not lang_reconstructed then
for _, head in ipairs(data.heads) do
if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then
track("pagename spelling mismatch", data.lang)
break
end
end
end
export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories)
local text = '<span class="headword-line">' ..
format_headword(data) ..
format_headword_genders(data) ..
format_top_level_inflections(data) .. '</span>'
local cats = format_categories(
data.categories, data.lang, data.sort_key, page.encoded_pagename,
data.force_cat_output or test_force_categories, data.heads[1].sc
)
local whole_page_cats = format_categories(
data.whole_page_categories, nil, "-"
)
return text .. cats .. whole_page_cats
end
return export
l5xp5zvjh2n0yuqemfs372plsx5tib6
292875
292874
2026-09-19T04:24:43Z
Saimawnkham
9
[[Special:Contributions/Saimawnkham|Saimawnkham]] ([[User talk:Saimawnkham|ဢုပ်ႇဢူဝ်း]]) ၵေႃႉ ၶိုၼ်ၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ [[Special:Diff/292874|292874]]
292875
Scribunto
text/plain
local export = {}
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local gender_and_number_module = "Module:gender and number"
local headword_data_module = "Module:headword/data"
local headword_page_module = "Module:headword/page"
local links_module = "Module:links"
local load_module = "Module:load"
local pages_module = "Module:pages"
local palindromes_module = "Module:palindromes"
local pron_qualifier_module = "Module:pron qualifier"
local scripts_module = "Module:scripts"
local scripts_data_module = "Module:scripts/data"
local script_utilities_module = "Module:script utilities"
local script_utilities_data_module = "Module:script utilities/data"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local utilities_module = "Module:utilities"
local concat = table.concat
local dump = mw.dumpObject
local insert = table.insert
local ipairs = ipairs
local max = math.max
local new_title = mw.title.new
local pairs = pairs
local require = require
local toNFC = mw.ustring.toNFC
local toNFD = mw.ustring.toNFD
local type = type
local ufind = mw.ustring.find
local ugmatch = mw.ustring.gmatch
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
--[==[
Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==]
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function encode_entities(...)
encode_entities = require(string_utilities_module).encode_entities
return encode_entities(...)
end
local function extend(...)
extend = require(table_module).extend
return extend(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_genders(...)
format_genders = require(gender_and_number_module).format_genders
return format_genders(...)
end
local function format_pron_qualifiers(...)
format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers
return format_pron_qualifiers(...)
end
local function full_link(...)
full_link = require(links_module).full_link
return full_link(...)
end
local function get_current_L2(...)
get_current_L2 = require(pages_module).get_current_L2
return get_current_L2(...)
end
local function get_link_page(...)
get_link_page = require(links_module).get_link_page
return get_link_page(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function is_palindrome(...)
is_palindrome = require(palindromes_module).is_palindrome
return is_palindrome(...)
end
local function language_link(...)
language_link = require(links_module).language_link
return language_link(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function pattern_escape(...)
pattern_escape = require(string_utilities_module).pattern_escape
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_page(...)
process_page = require(headword_page_module).process_page
return process_page(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function trim(...)
trim = require(string_utilities_module).trim
return trim(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
--[==[
Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==]
local m_data
local function get_data()
m_data = load_data(headword_data_module)
return m_data
end
local script_data
local function get_script_data()
script_data = load_data(scripts_data_module)
return script_data
end
local script_utilities_data
local function get_script_utilities_data()
script_utilities_data = load_data(script_utilities_data_module)
return script_utilities_data
end
-- If set to true, categories always appear, even in non-mainspace pages
local test_force_categories = false
-- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier
-- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the
-- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property
-- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]].
--
-- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is
-- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id`
-- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to
-- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang`
-- references at etymology-only language, both that language's code and its full parent's code are tracked.
local function track(track_id, lang)
local tracking_page = "headword/" .. track_id
if lang and lang:hasType("etymology-only") then
debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(),
tracking_page .. "/" .. lang:getFullCode()}
elseif lang then
debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()}
else
debug_track(tracking_page)
end
return true
end
local function text_in_script(text, script_code)
local sc = get_script(script_code)
if not sc then
error("Internal error: Bad script code " .. script_code)
end
local characters = sc.characters
local out
if characters then
text = ugsub(text, "%W", "")
out = ufind(text, "[" .. characters .. "]")
end
if out then
return true
else
return false
end
end
local spacingPunctuation = "[%s%p]+"
--[[ List of punctuation or spacing characters that are found inside of words.
Used to exclude characters from the regex above. ]]
local wordPunc = "-#%%&@־׳״'.·*’་•:᠊"
local notWordPunc = "[^" .. wordPunc .. "]+"
-- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references
-- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should
-- optionally contain:
-- * left qualifiers in `q`, an array of strings;
-- * right qualifiers in `qq`, an array of strings;
-- * left labels in `l`, an array of strings;
-- * right labels in `ll`, an array of strings;
-- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text`
-- (formatted reference text) and optionally `name` and/or `group`;
-- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "".
-- `formatted` is the formatted version of the term itself, and `j` is the index of the term.
local function format_term_with_qualifiers_and_refs(lang, part, formatted, j)
local function part_non_empty(field)
local list = part[field]
if not list then
return nil
end
if type(list) ~= "table" then
error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list)))
end
return list[1]
end
if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or
part_non_empty("ll") or part_non_empty("refs") then
formatted = format_pron_qualifiers {
lang = lang,
text = formatted,
q = part.q,
qq = part.qq,
l = part.l,
ll = part.ll,
refs = part.refs,
}
end
local separator = part.separator or j > 1 and " <i>or</i> " -- use "" to request no separator
if separator then
formatted = separator .. formatted
end
return formatted
end
--[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==]
function export.head_is_multiword(head)
for possibleWordBreak in ugmatch(head, spacingPunctuation) do
if umatch(possibleWordBreak, notWordPunc) then
return true
end
end
return false
end
do
local function workaround_to_exclude_chars(s)
return (ugsub(s, notWordPunc, "\2%1\1"))
end
--[==[Add links to a multiword head.]==]
function export.add_multiword_links(head, default)
head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2"
if default then
head = head
:gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2")
:gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2")
end
--Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]").
head = encode_entities(head, "[]", true, true)
--[=[
use this when workaround is no longer needed:
head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]"
Remove any empty links, which could have been created above
at the beginning or end of the string.
]=]
return (head
:gsub("\1\2", "")
:gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"}))
end
end
local function non_categorizable(full_raw_pagename)
return full_raw_pagename:find("^Appendix:Gestures/") or
-- Unsupported titles with descriptive names.
(full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`"))
end
local function tag_text_and_add_quals_and_refs(data, head, formatted, j)
-- Add language and script wrapper.
formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil)
-- Add qualifiers, labels, references and separator.
return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j)
end
-- Format a headword with transliterations.
local function format_headword(data)
-- Are there non-empty transliterations?
local has_translits = false
local has_manual_translits = false
------ Format the headwords. ------
local head_parts = {}
local unique_head_parts = {}
local has_multiple_heads = not not data.heads[2]
for j, head in ipairs(data.heads) do
if head.tr or head.ts then
has_translits = true
end
if head.tr and head.tr_manual or head.ts then
has_manual_translits = true
end
local formatted
-- Apply processing to the headword, for formatting links and such.
if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then
formatted = language_link{term = head.term, lang = data.lang}
else
formatted = data.lang:makeDisplayText(head.term, head.sc, true)
end
local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j)
insert(head_parts, head_part)
-- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively
-- rerun the text tagging and addition of qualifiers and references, using 1 for all indices.
if has_multiple_heads then
local unique_head_part
if j == 1 then
unique_head_part = head_part
else
unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1)
end
unique_head_parts[unique_head_part] = true
end
end
local set_size = 0
if has_multiple_heads then
for _ in pairs(unique_head_parts) do
set_size = set_size + 1
end
end
if set_size == 1 then
head_parts = head_parts[1]
else
head_parts = concat(head_parts)
end
if has_manual_translits then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]]
track("manual-tr", data.lang)
end
------ Format the transliterations and transcriptions. ------
local translits_formatted
if has_translits then
local translit_parts = {}
for _, head in ipairs(data.heads) do
if head.tr or head.ts then
local this_parts = {}
if head.tr then
insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual))
if head.ts then
insert(this_parts, " ")
end
end
if head.ts then
insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/")
end
insert(translit_parts, concat(this_parts))
end
end
translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")"
local langname = data.lang:getCanonicalName()
local transliteration_page = new_title(langname .. " transliteration", "Wiktionary")
local saw_translit_page = false
if transliteration_page and transliteration_page:getContent() then
translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted
saw_translit_page = true
end
-- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the
-- full parent.
if not saw_translit_page and data.lang:hasType("etymology-only") then
langname = data.lang:getFullName()
transliteration_page = new_title(langname .. " transliteration", "Wiktionary")
if transliteration_page and transliteration_page:getContent() then
translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted
end
end
else
translits_formatted = ""
end
------ Paste heads and transliterations/transcriptions. ------
local lemma_gloss
if data.gloss then
lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>'
else
lemma_gloss = ""
end
return head_parts .. translits_formatted .. lemma_gloss
end
local function format_headword_genders(data)
local retval = ""
if data.genders and data.genders[1] then
if data.gloss then
retval = ","
end
local pos_for_cat
if not data.nogendercat then
local no_gender_cat = (m_data or get_data()).no_gender_cat
if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then
pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")]
end
end
local text, cats = format_genders(data.genders, data.lang, pos_for_cat)
if cats then
extend(data.categories, cats)
end
retval = retval .. " " .. text
end
return retval
end
-- Forward reference
local format_inflections
local function format_inflection_parts(data, parts)
for j, part in ipairs(parts) do
if type(part) ~= "table" then
part = {term = part}
end
local partaccel = part.accel
local face = part.face or "bold"
if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then
error("The face `" .. face .. "` " .. (
(script_utilities_data or get_script_utilities_data()).faces[face] and
"should not be used for non-headword terms on the headword line." or
"is invalid."
))
end
-- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true'
-- right into the 'data' table to disable inflection links of the entire headword
-- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin
local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or (
data.nolink and track("nolink") or data.nolinkinfl)
local formatted
if part.label then
-- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable.
formatted = "<i>" .. part.label .. "</i>"
else
-- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is
-- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e.
-- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections,
-- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with
-- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages
-- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it
-- to be enabled in languages with more complex scripts (e.g. Arabic).
--
-- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the
-- nested inflections structure?
local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil
-- FIXME: Temporary errors added 2025-10-03. Remove after a month or so.
if part.translit then
error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit")
end
if part.transcription then
error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription")
end
local postprocess_annotations
if part.inflections then
postprocess_annotations = function(infldata)
insert(infldata.annotations, format_inflections(data, part.inflections))
end
end
formatted = full_link(
{
term = not nolinkinfl and part.term or nil,
alt = part.alt or (nolinkinfl and part.term or nil),
lang = part.lang or data.lang,
sc = part.sc or parts.sc or nil,
gloss = part.gloss,
pos = part.pos,
lit = part.lit,
id = part.id,
genders = part.genders,
tr = tr,
ts = part.ts,
accel = partaccel or parts.accel,
postprocess_annotations = postprocess_annotations,
},
face
)
end
parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part,
formatted, j)
end
local parts_output
if parts[1] then
parts_output = (parts.label and " " or "") .. concat(parts)
elseif parts.request then
parts_output = " <small>[please provide]</small>"
insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries")
else
parts_output = ""
end
local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or ""
return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1)
end
-- Format the inflections following the headword or nested after a given inflection.
format_inflections = function(data, inflections)
if inflections and inflections[1] then
-- Format each inflection individually.
for key, infl in ipairs(inflections) do
inflections[key] = format_inflection_parts(data, infl)
end
return concat(inflections, ", ")
else
return ""
end
end
-- Format the top-level inflections following the headword. Currently this just adds parens around the
-- formatted comma-separated inflections in `data.inflections`.
local function format_top_level_inflections(data)
local result = format_inflections(data, data.inflections)
if result ~= "" then
return " (" .. result .. ")"
else
return result
end
end
--[==[
Returns the plural form of `pos`, a raw part of speech input, which could be singular or
plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to
"kanji").
]==]
function export.pluralize_pos(pos)
-- Make the plural form of the part of speech
return (m_data or get_data()).irregular_plurals[pos] or
pos:sub(-1) == "s" and pos or
pluralize(pos)
end
--[==[
Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil
if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.).
If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it
in a smart fashion that knows when to add "-s" and when to add "-es", and also takes
into account any irregular plurals.
If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess
based on whether it ends in " forms"; otherwise, return nil.
]==]
function export.pos_lemma_or_nonlemma(plpos, best_guess)
local m_headword_data = m_data or get_data()
local isLemma = m_headword_data.lemmas
-- Is it a lemma category?
if isLemma[plpos] then
return "ၶေႃႈတင်ႈ"
end
local plpos_no_recon = plpos:gsub("^reconstructed ", "")
if isLemma[plpos_no_recon] then
return "ၶေႃႈတင်ႈ"
end
-- Is it a nonlemma category?
local isNonLemma = m_headword_data.nonlemmas
if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then
return "ဢမ်ႇၸႂ်ႈပိူင်ၶေႃႈတင်ႈ"
end
local plpos_no_mut = plpos:gsub("^mutated ", "")
if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then
return "ဢမ်ႇၸႂ်ႈပိူင်ၶေႃႈတင်ႈ"
elseif best_guess then
return plpos:find(" forms$") and "non-lemma form" or "lemma"
else
return nil
end
end
--[==[
Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form
aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural.
]==]
function export.canonicalize_pos(pos)
-- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away.
if pos == "pre" then
-- Don't throw error on 'pref' as it's an alias for "prefix".
error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'")
end
-- Likewise for pro = pronoun.
if pos == "pro" or pos == "prof" then
error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'")
end
local m_headword_data = m_data or get_data()
if m_headword_data.pos_aliases[pos] then
pos = m_headword_data.pos_aliases[pos]
elseif pos:sub(-1) == "f" then
pos = pos:sub(1, -2)
pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms"
end
return export.pluralize_pos(pos)
end
-- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a
-- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by
-- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given,
-- no blank (zero-length) strings are present.
local function init_and_find_maximum_index(data, element, allow_blank_string)
local maxind = 0
if not data[element] then
data[element] = {}
end
local typ = type(data[element])
if typ ~= "table" then
error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ))
end
for k, v in pairs(data[element]) do
if k ~= "maxindex" then
if type(k) ~= "number" then
error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element))
end
if k > maxind then
maxind = k
end
if v then
if type(v) ~= "string" then
error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v)))
end
if not allow_blank_string and v == "" then
error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element))
end
end
end
end
return maxind
end
--[==[
-- Add the page to various maintenance categories for the language and the
-- whole page. These are placed in the headword somewhat arbitrarily, but
-- mainly because headword templates are mandatory for entries (meaning that
-- in theory it provides full coverage).
--
-- This is provided as an external entry point so that modules which transclude
-- information from other entries (such as {{tl|ja-see}}) can take advantage
-- of this feature as well, because they are used in place of a conventional
-- headword template.]==]
do
-- Handle any manual sortkeys that have been specified in raw categories
-- by tracking if they are the same or different from the automatically-
-- generated sortkey, so that we can track them in maintenance
-- categories.
local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
sortkey = sortkey or lang:makeSortKey(page.pagename)
-- If there are raw categories with no sortkey, then they will be
-- sorted based on the default MediaWiki sortkey, so we check against
-- that.
if tbl == true then
if page.raw_defaultsort ~= sortkey then
insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys")
end
return
end
local redundant, different
for k in pairs(tbl) do
if k == sortkey then
redundant = true
else
different = true
end
end
if redundant then
insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys")
end
if different then
insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys")
end
return sortkey
end
function export.maintenance_cats(page, lang, lang_cats, page_cats)
extend(page_cats, page.cats)
lang = lang:getFull() -- since we are just generating categories
local canonical = lang:getCanonicalName()
local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()]
if tbl then
sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
insert(lang_cats, canonical .. " entries with topic categories using raw markup")
end
tbl = page.wikitext_langname_cat[canonical]
if tbl then
handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats)
insert(lang_cats, canonical .. " entries with language name categories using raw markup")
end
if get_current_L2() ~= canonical then
insert(lang_cats, canonical .. " entries with incorrect language header")
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]]
track("incorrect language header", lang)
end
end
end
--[==[This is the primary external entry point.
{{lua|full_headword(data)}}
This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line.
See [[#Further explanations for full_headword()]]
]==]
function export.full_headword(data)
-- Prevent data from being destructively modified.
local data = shallow_copy(data)
------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------
if data.getCanonicalName then
error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object")
end
if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then
error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object")
end
if data.id and type(data.id) ~= "string" then
error("Internal error: The id in the data table should be a string.")
end
------------ 2. Initialize pagename etc. ------------
local langcode = data.lang:getCode()
local full_langcode = data.lang:getFullCode()
local langname = data.lang:getCanonicalName()
local full_langname = data.lang:getFullName()
local raw_pagename = data.pagename
local page
local m_headword_data = m_data or get_data()
if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc.
-- data.pagename is often set on documentation and test pages through the pagename= parameter of various
-- templates, to emulate running on that page. Having a large number of such test templates on a single
-- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However,
-- we don't really need to do that and can function fine without fetching and parsing the contents of a
-- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser
-- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to
-- be found and where actual content does not live (User, Template, Module).
local actual_namespace = m_headword_data.page.namespace
local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or
actual_namespace == "Module"
page = process_page(raw_pagename, no_fetch_content)
else
page = m_headword_data.page
end
local namespace = page.namespace
------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------
if type(data.heads) == "table" and type(data.heads[1]) == "table" then
-- new-style
if data.translits or data.transcriptions then
error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given")
end
else
-- convert old-style `heads`, `translits` and `transcriptions` to new-style
local maxind = max(
init_and_find_maximum_index(data, "heads"),
init_and_find_maximum_index(data, "translits", true),
init_and_find_maximum_index(data, "transcriptions", true)
)
for i = 1, maxind do
data.heads[i] = {
term = data.heads[i],
tr = data.translits[i],
ts = data.transcriptions[i],
}
end
end
-- Make sure there's at least one head.
if not data.heads[1] then
data.heads[1] = {}
end
------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------
-- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]]
if data.altform then
data.noposcat = true
end
init_and_find_maximum_index(data, "categories")
init_and_find_maximum_index(data, "whole_page_categories")
local pos_category_already_present = false
if data.categories[1] then
local escaped_langname = pattern_escape(full_langname)
local matches_lang_pattern = "^" .. escaped_langname .. " "
for _, cat in ipairs(data.categories) do
-- Does the category begin with the language name? If not, tag it with a tracking category.
if not cat:find(matches_lang_pattern) then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]]
track("no lang category", data.lang)
end
end
-- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we
-- throw an error below.
if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then
data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "")
-- Optimization to avoid inserting category already present.
pos_category_already_present = true
end
end
if not data.pos_category then
error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in "
.. "`data.categories`. Either specify the plural part of speech in `data.pos_category` "
.. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the "
.. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")."
)
end
-- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given.
if not pos_category_already_present and not data.noposcat then
local pos_category = data.pos_category .. full_langname
-- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment.
if pos_category ~= "Translingual Han characters" then
insert(data.categories, 1, pos_category)
end
end
-- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out,
-- add an appropriate category.
local postype = export.pos_lemma_or_nonlemma(data.pos_category)
if not postype then
-- We don't know what this category is, so tag it with a tracking category.
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]]
track("unrecognized pos", data.lang)
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]]
track("unrecognized pos/pos/" .. data.pos_category, data.lang)
elseif not data.noposcat then
insert(data.categories, 1, postype .. full_langname)
end
-- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]]
if data.altform then
insert(data.categories, 1, " ပိူင်ၽၢင်တၢင်ႇဢၼ်" .. full_langname)
end
------------ 5. Create a default headword, and add links to multiword page names. ------------
-- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be
-- reconstructed.
local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!")
local lang_reconstructed = data.lang:hasType("reconstructed")
if is_anti_asterisk then
if not lang_reconstructed then
error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages")
end
lang_reconstructed = false
end
-- Determine if term is reconstructed
local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed
-- Create a default headword based on the pagename, which is determined in
-- advance by the data module so that it only needs to be done once.
local default_head = page.pagename
-- Add links to multi-word page names when appropriate
if not (is_reconstructed or data.nolinkhead) then
local no_links = m_headword_data.no_multiword_links
if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then
default_head = export.add_multiword_links(default_head, true)
end
end
if is_reconstructed then
default_head = "*" .. default_head
end
------------ 6. Check the namespace against the language type. ------------
if namespace == "" then
if lang_reconstructed then
error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace")
elseif data.lang:hasType("appendix-constructed") then
error("Entries in " .. langname .. " must be placed in the Appendix: namespace")
end
elseif namespace == "Citations" or namespace == "Thesaurus" then
error("Headword templates should not be used in the " .. namespace .. ": namespace.")
end
------------ 7. Fill in missing values in `data.heads`. ------------
-- True if any script among the headword scripts has spaces in it.
local any_script_has_spaces = false
-- True if any term has a redundant head= param.
local has_redundant_head_param = false
for _, head in ipairs(data.heads) do
------ 7a. If missing head, replace with default head.
if not head.term then
head.term = default_head
elseif head.term == default_head then
has_redundant_head_param = true
elseif is_anti_asterisk and head.term == "!!" then
-- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head.
head.term = "!!" .. default_head
elseif head.term:find("^[!?]$") then
-- If explicit head= just consists of ! or ?, add it to the end of the default head.
head.term = default_head .. head.term
end
head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term
if is_reconstructed then
local head_term = head.term
if head_term:find("%[%[") then
head_term = remove_links(head_term)
end
if head_term:sub(1, 1) ~= "*" then
error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.")
end
end
------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence,
------ otherwise fall back to the overall script if given. If neither given, autodetect the script.
local auto_sc = data.lang:findBestScript(head.term)
if (
auto_sc:getCode() == "None" and
find_best_script_without_lang(head.term):getCode() ~= "None"
) then
insert(data.categories, full_langname .. " terms in nonstandard scripts")
end
if not (head.sc or data.sc) then -- No script code given, so use autodetected script.
head.sc = auto_sc
else
if not head.sc then -- Overall script code given.
head.sc = data.sc
end
-- Track uses of sc parameter.
if head.sc:getCode() == auto_sc:getCode() then
insert(data.categories, full_langname .. " terms with redundant script codes")
else
insert(data.categories, full_langname .. " terms with non-redundant manual script codes")
end
end
-- If using a discouraged character sequence, add to maintenance category.
if head.sc:hasNormalizationFixes() == true then
local composed_head = toNFC(head.term)
if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then
insert(data.whole_page_categories, "Pages using discouraged character sequences")
end
end
any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces()
------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given
------ (provided automatic translit is available, e.g. not in Persian or Hebrew).
-- Make transliterations
head.tr_manual = nil
-- Try to generate a transliteration if necessary
if head.tr == "-" then
head.tr = nil
else
local notranslit = m_headword_data.notranslit
if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then
head.tr_manual = not not head.tr
local text = head.term_no_initial_bang_bang
if not data.lang:link_tr(head.sc) then
text = remove_links(text)
end
local automated_tr = data.lang:transliterate(text, head.sc)
if automated_tr then
local manual_tr = head.tr
if manual_tr then
if remove_links(manual_tr) == remove_links(automated_tr) then
insert(data.categories, full_langname .. " terms with redundant transliterations")
else
insert(data.categories, full_langname .. " terms with non-redundant manual transliterations")
end
end
if not manual_tr then
head.tr = automated_tr
end
end
-- There is still no transliteration?
-- Add the entry to a cleanup category.
if not head.tr then
head.tr = "<small>transliteration needed</small>"
-- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar.
-- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]].
insert(data.categories, "တုၵ်းယွၼ်း တွၼ်ႈတႃႇ လွင်ႈပိၼ်ႇသဵင်ဢွၵ်ႇ ၶေႃႈၵႂၢမ်း" .. full_langname)
else
-- Otherwise, trim it.
head.tr = trim(head.tr)
end
end
end
-- Link to the transliteration entry for languages that require this.
if head.tr and data.lang:link_tr(head.sc) then
head.tr = full_link{
term = head.tr,
lang = data.lang,
sc = get_script("Latn"),
tr = "-"
}
end
end
------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------
-- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace.
-- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.)
-- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII
-- might need to be expanded to a check for any Latin characters and whitespace or punctuation.
local display_title
-- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to
-- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be
-- about the best we can do (alternatively we could potentially do script detection on the pagename).
local dt_script = data.heads[1].sc
local dt_script_code = dt_script:getCode()
local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$")
local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "")
if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then
display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>'
elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code]
or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana")))
or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then
display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>'
-- Keep Han entries region-neutral in the display title.
elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then
display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>'
elseif namespace == "Reconstruction" then
local matched
display_title, matched = ugsub(
page.full_raw_pagename,
"^(Reconstruction:[^/]+/)(.+)$",
function(before, term)
return before .. tag_text(term, data.lang, dt_script)
end
)
if matched == 0 then
display_title = nil
end
end
-- FIXME: Generalize this.
-- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab
-- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title
-- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other
-- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word
-- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages.
-- FIXME: This is checking for more than one language on the page but instead needs to check if there are any
-- languages using scripts other than the ones just mentioned.
if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then
display_title = nil
end
if display_title then
mw.getCurrentFrame():callParserFunction(
"DISPLAYTITLE",
display_title
)
end
------------ 9. Insert additional categories. ------------
if data.force_cat_output then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]]
track("force cat output")
end
if has_redundant_head_param then
if not data.no_redundant_head_cat then
-- This is not the right way to go about this; too many exceptions and problems due to language-specific headword
-- handling customization. If we want this, it should be opt-in by a given language passing in the default headword.
-- insert(data.categories, full_langname .. " terms with redundant head parameter")
end
end
-- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms".
if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then
local no_multiword_cat = m_headword_data.no_multiword_cat
if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then
-- Check for spaces or hyphens, but exclude prefixes and suffixes.
-- Use the pagename, not the head= value, because the latter may have extra
-- junk in it, e.g. superscripted text that throws off the algorithm.
local no_hyphen = m_headword_data.hyphen_not_multiword_sep
-- Exclude hyphens if the data module states that they should for this language.
local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]."
local is_multiword = umatch(page.pagename, checkpattern)
if is_multiword and not non_categorizable(page.full_raw_pagename) then
insert(data.categories, "ၶေႃႈၵႂၢမ်းလၢႆၶေႃႈၽႃႇသႃႇ" .. full_langname)
elseif not is_multiword then
local long_word_threshold = m_headword_data.long_word_thresholds[langcode]
if long_word_threshold and ulen(page.pagename) >= long_word_threshold then
insert(data.categories, "Long " .. full_langname .. " words")
end
end
end
end
if data.sccat then
for _, head in ipairs(data.heads) do
insert(data.categories, full_langname .. " " .. data.pos_category .. " in " ..
head.sc:getDisplayForm())
end
end
-- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated.
if namespace ~= "Reconstruction" then
-- Map from languages to a string containing the characters to ignore when considering whether a term has
-- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic
-- values.
local characters_to_ignore = {
["aaq"] = "αάὰ", -- Penobscot (Algonquian)
["acy"] = "δθ", -- Cypriot Arabic
["aez"] = "β", -- Aeka (Trans-New Guinea)
["anc"] = "γ", -- Ngas (Chadic/Afroasiatic)
["aou"] = "χ", -- A'ou (Kra-Dai)
["art-blk"] = "ч", -- Bolak (conlang)
["awg"] = "β", -- Anguthimri (Pama-Nyungan)
["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["bhp"] = "β", -- Bima (Austronesian)
["bjz"] = "β", -- Baruga (Trans-New Guinea)
["byk"] = "θ", -- Biao (Kra-Dai)
["cdy"] = "θ", -- Chadong (Kra-Dai)
["chp"] = "θ", -- Chipewyan (Athabaskan)
["cjh"] = "χ", -- Upper Chehalis (Salishan)
["clm"] = "χ", -- Klallam (Salishan)
["col"] = "χ", -- Colombia-Wenatchi (Salishan)
["coo"] = "χθ", -- Comox (Salishan)
["crx"] = "θ", -- Carrier (Athabaskan)
["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo)
["ett"] = "χ", -- Etruscan (isolate; in romanizations)
["fla"] = "χ", -- Montana Salish (Salishan)
["grt"] = "་", -- Garo (South Asian Sino-Tibetan)
["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia)
["hur"] = "χθ", -- Halkomelem (Salishan)
["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek)
["izh"] = "ь", -- Ingrian (Finnic)
["kic"] = "θ", -- Kickapoo (Algonquian)
["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["lil"] = "χ", -- Lillooet (Salishan)
["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop)
["mhz"] = "β", -- Mor (Austronesian)
["mqn"] = "β", -- Moronene (Austronesian)
["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic)
["oka"] = "χ", -- Okanagan (Salishan)
["ole"] = "θ", -- Olekha (Sino-Tibetan)
["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?)
["pox"] = "χ", -- Polabian (West Slavic)
["rif"] = "ε", -- Tarifit (Berber)
["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???)
["rpn"] = "β", -- Repanbitip (Austronesian)
["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling)
["sit-jap"] = "χ", -- Japhug (Sino-Tibetan)
["sjw"] = "θ", -- Shawnee (Algonquian)
["squ"] = "χ", -- Squamish (Salishan)
["str"] = "χθ", -- Saanich (Salishan)
["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina)
["tep"] = "η", -- Tepecano (Uto-Aztecan)
["thp"] = "χ", -- Thompson (Salishan)
["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938)
["twa"] = "χ", -- Twana (Salishan)
["wbl"] = "ы", -- Wakhi (Iranian)
["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek)
["yha"] = "θ", -- Baha (Kra-Dai)
["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like
-- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin)
["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure
-- the currect characters are being chosen in the entry names)
["zng"] = "θ", -- Mang (Mon-Khmer)
["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan)
}
-- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude
-- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a
-- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific
-- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them
-- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng).
local seen_scripts = {}
local num_seen_scripts = 0
local num_loops = 0
local canon_pagename = page.pagename
local ch_to_ignore = characters_to_ignore[full_langcode]
if ch_to_ignore then
canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "")
end
while true do
if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then
break
end
-- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]]
num_loops = num_loops + 1
local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort")
local script_chars = pagename_script.characters
if not script_chars then
-- we are stuck; this happens with None
break
end
local script_code = pagename_script:getCode()
local replaced
canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "")
if (
replaced and
script_code ~= "Zmth" and
(script_data or get_script_data())[script_code] and
script_data[script_code].character_category ~= false
) then
script_code = script_code:gsub("^.-%-", "")
if not seen_scripts[script_code] then
seen_scripts[script_code] = true
num_seen_scripts = num_seen_scripts + 1
end
end
end
if num_seen_scripts > 1 then
insert(data.categories, full_langname .. " terms written in multiple scripts")
end
end
-- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics.
local standard = data.lang:getStandardCharacters()
if standard and not non_categorizable(page.full_raw_pagename) then
local function char_category(char)
local specials = {
["#"] = "number sign",
["("] = "parentheses",
[")"] = "parentheses",
["<"] = "angle brackets",
[">"] = "angle brackets",
["["] = "square brackets",
["]"] = "square brackets",
["_"] = "underscore",
["{"] = "braces",
["|"] = "vertical line",
["}"] = "braces",
["ß"] = "ẞ",
["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ)
["\239\191\189"] = "replacement character",
}
char = toNFD(char)
:gsub(".[\128-\191]*", function(m)
local new_m = specials[m]
new_m = new_m or m:uupper()
return new_m
end)
return toNFC(char)
end
if full_langcode ~= "hi" and full_langcode ~= "lo" then
local standard_chars_scripts = {}
for _, head in ipairs(data.heads) do
standard_chars_scripts[head.sc:getCode()] = true
end
-- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters).
for code in pairs(standard_chars_scripts) do
local sc_standard = data.lang:getStandardCharacters(code)
if sc_standard then
if page.pagename_len > 1 then
local explode_standard = {}
local function explode(char)
explode_standard[char] = true
return ""
end
local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode)
sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode)
:gsub(".[\128-\191]*", explode)
local num_cat_inserted
for char in pairs(page.explode_pagename) do
if not explode_standard[char] then
if char:find("[0-9]") then
if not num_cat_inserted then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. "ဢၼ်လေႃးဝႆႉတင်း တူဝ်ၼပ်ႉ")
num_cat_inserted = true
end
elseif ufind(char, page.emoji_pattern) then
nsert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း ဢီမူဝ်းၵျိ")
else
local upper = char_category(char)
if not explode_standard[upper] then
char = upper
end
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း " .. char)
end
end
end
end
-- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally.
sc_standard = toNFD(sc_standard)
for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do
if not umatch(sc_standard, diacritic) then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း ◌" .. diacritic)
end
end
for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do
if not umatch(sc_standard, diacritic) then
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname " ဢၼ်လေႃးဝႆႉတင်း ◌" .. diacritic .. "◌")
end
end
end
end
-- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them).
elseif ulen(page.pagename) ~= 1 then
for character in ugmatch(page.pagename, "([^" .. standard .. "])") do
local upper = char_category(character)
if not umatch(upper, "[" .. standard .. "]") then
character = upper
end
insert(data.categories, "ၶေႃႈၵႂၢမ်း" .. full_langname .. " ဢၼ်လေႃးဝႆႉတင်း " .. character)
end
end
end
if data.heads[1].sc:isSystem("alphabet") then
local pagename, i = page.pagename:ulower(), 2
while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do
i = i + 1
insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter")
end
end
-- Categorise for palindromes
if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2
-- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of
-- multiple scripts?
and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then
insert(data.categories, " ပႃႇလိၼ်ႇထရူမ်း " .. full_langname)
end
if namespace == "" and not lang_reconstructed then
for _, head in ipairs(data.heads) do
if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]]
track("pagename spelling mismatch", data.lang)
break
end
end
end
-- Add to various maintenance categories.
export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories)
------------ 10. Format and return headwords, genders, inflections and categories. ------------
-- Format and return all the gathered information. This may add more categories (e.g. gender/number categories),
-- so make sure we do it before evaluating `data.categories`.
local text = '<span class="headword-line">' ..
format_headword(data) ..
format_headword_genders(data) ..
format_top_level_inflections(data) .. '</span>'
-- Language-specific categories.
local cats = format_categories(
data.categories, data.lang, data.sort_key, page.encoded_pagename,
data.force_cat_output or test_force_categories, data.heads[1].sc
)
-- Language-agnostic categories.
local whole_page_cats = format_categories(
data.whole_page_categories, nil, "-"
)
return text .. cats .. whole_page_cats
end
return export
o26zc0omnbn2rpxwmja3ns016evhvj4
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹəʊ
106
28064
293130
72673
2026-09-19T09:57:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293130
wikitext
text/x-wiki
{{rhymes nav|en|æ|ɹəʊ}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ărō}}, {{IPA|en|/-ærəʊ/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
* [[Arrow]]
* [[arrow]]
* [[Barrow]]
* [[barrow]]
* [[Faeroe]]
* [[Faroe]]
* Farrow (''surname - see especially'' [[w:Mia Farrow|Mia Farrow]])
* [[farrow]]
* [[Garo]]
* [[w:Harrow|Harrow]]
* [[harrow]]
* [[Jarrow]]
* [[marrow]]
* [[narrow]]
* [[pharaoh]] {{q|one pronunciation}}
* [[sparrow]]
* [[taro]]
* [[tarot]]
* [[Yarrow]]
* [[yarrow]]
rwtafsco0323a0nqjk35ygd47nqdyom
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɒnɪks
106
29988
293060
83974
2026-09-19T09:45:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293060
wikitext
text/x-wiki
{{rhymes nav|en|ɒ|nɪks}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ŏnĭks}}, {{IPA|en|/-ɒnɪks/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
# For more rhymes, add ''s'' or ''<nowiki>'</nowiki>s'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɒnɪk|{{IPAchar|/-ɒnɪk/}}]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
* {{l|en|onyx}}
* {{l|en|phonics}} {{q|one pronunciation}}
* {{l|en|sonics}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|bionics}}
* {{l|en|cryonics}}
* {{l|en|Ebonics}}, {{l|en|ebonics}}
* {{l|en|gnomonics}}
* {{l|en|harmonics}}
* {{l|en|mnemonics}}
* {{l|en|photonics}}
* {{l|en|plasmonics}}
* {{l|en|psionics}}
* {{l|en|sermonics}}
* {{l|en|spintronics}}
* {{l|en|tectonics}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|aeroponics}}
* {{l|en|aquaponics}}
* {{l|en|avionics}}
* {{l|en|electronics}}
* {{l|en|histrionics}}
* {{l|en|holophonics}}
* {{l|en|hydroponics}}
* {{l|en|hypersonics}}
* {{l|en|infrasonics}}
* {{l|en|plunderphonics}}
* {{l|en|quadraphonics}}, {{l|en|quadrophonics}}
* {{l|en|supersonics}}
* {{l|en|thermionics}}
* {{l|en|ultrasonics}}
{{rhyme-bottom}}
===ႁႃႈသဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
* {{l|en|animatronics}}
* {{l|en|geotectonics}}
* {{l|en|polaritonics}}
* {{l|en|radiophonics}}
===ႁူၵ်းသဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|bioelectronics}}
* {{l|en|microelectronics}}
* {{l|en|nanoelectronics}}
* {{l|en|optoelectronics}}
* {{l|en|photoelectronics}}
* {{l|en|physiognomonics}}
{{rhyme-bottom}}
gdhgbzqtwd1rwgiqodry17khxu6ehiu
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəs
106
31929
293076
77349
2026-09-19T09:48:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293076
wikitext
text/x-wiki
{{rhymes nav|en|əʊ|niəs}}
==သဵင်ဢွၵ်ႇ==
-ōniəs, /-əʊniəs/, /<tt>-@Uni@s</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#For more rhymes, follow some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊni|/-əʊni/]] with "us".
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the ANTEPENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|nonius}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the ANTEPENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|Antonius}}
* {{l|en|euphonious}}
* {{l|en|felonious}}
* {{l|en|harmonious}}
* {{l|en|Petronius}}
* {{l|en|Polonius}}
{{rhyme-bottom}}
===ႁႃႈသဵင်===
{{rhyme-top}}
* {{l|en|acrimonious}}
* {{l|en|ceremonious}}
* {{l|en|disharmonious}}
* {{l|en|inharmonious}}
* {{l|en|parsimonious}}
* {{l|en|sanctimonious}}
{{rhyme-bottom}}
===ႁူၵ်းသဵင်===
{{rhyme-top}}
* {{l|en|unceremonious}}
{{rhyme-bottom}}
leuz4dye076dubnc72kjcetbkc8r96p
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsəl
106
33488
293192
79187
2026-09-19T10:09:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293192
wikitext
text/x-wiki
{{rhymes nav|en|æ|səl}}
==သဵင်ဢွၵ်ႇ==
-ăsəl, /-æsəl/, /<tt>-{s@l</tt>/
===ၶေႃႈမၢႆတွင်း===
# For more rhymes, add ''’ll'' (“shall”, “will”) to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æs|/-æs/]] (for example, ''lass’ll'').
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|assle}}
* {{l|en|brastle}}
* {{l|en|Cassel}}
* {{l|en|castle}}
* {{l|en|hassle}}
* {{l|en|Kassel}}
* {{l|en|passel}}
* {{l|en|rassle}}, {{l|en|wrassle}}, {{l|en|wrastle}}
* {{l|en|tassel}}
* {{l|en|vassal}}
* {{l|en|wassail}} {{qualifier|one pronunciation}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|betassel}}
* {{l|en|envassal}}, {{l|en|invassal}}
* {{l|en|thalassal}}
{{rhyme-bottom}}
314892mpxdufs9l8ejyu6k3hqhm7hwu
မေႃႇၵျူး:accel
828
33931
292869
106983
2026-09-19T03:39:19Z
Saimawnkham
9
update from en
292869
Scribunto
text/plain
local export = {}
local form_of_module = "Module:form of"
local form_of_data_module = "Module:form of/data"
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local append = m_table.append
local assert = assert
local concat = table.concat
local contains = m_table.contains
local deep_copy = m_table.deepCopy
local deep_equals = require("Module:table/deepEquals")
local extend = m_table.extend
local insert = table.insert
local insert_if_not = m_table.insertIfNot
local list_to_set = m_table.listToSet
local remove = table.remove
local split = m_str_utils.split
local safe_require = require("Module:load").safe_require
local size = m_table.size
local u = m_str_utils.char
local MARK_CONJOINED_SHORTCUT = u(0xFFF0)
local split_term_regex = "%*~!"
--[=[
The purpose of the acceleration code is to auto-generate pages for non-lemma forms (inflections) of a given lemma.
The way it works is approximately as follows:
1. When you have the accelerator gadget in [[MediaWiki:Gadget-AcceleratedFormCreation.js]] enabled, and you click on a
green link, the JavaScript code gathers all the green links on the page that have the same language and pagename as
the clicked-on green link and sends them to the generate_JSON() function in this module, which is a thin wrapper
around the generate() function. Each individual green link maps to an "entry" and has associated accelerator
properties that were specified by the `accel` object passed into full_link() in [[Module:links]]. Note that there can
-- be multiple entries passed to a single generate() call for various reasons, e.g.:
(1) Inside of a single inflection table there is syncretism, with two different inflections having the same form;
e.g. the same Latin form ''bonī'' occurs in three different inflections of the lemma [[bonus]]: the masculine
genitive singular, neuter genitive singular and masculine nominative plural. Hence there will be three entries.
(2) Inside of a single inflection table there are inflections that are spelled differently but map to the same
pagename due to diacritic removal; e.g. Latin ''bona'' (occurring in five different inflections: the feminine
nominative and vocative singular and the neuter nominative, accusative and vocative plural) and Latin ''bonā''
(the feminine ablative singular) will be merged together into a single call to generate() with six entries.
(3) There are two or more inflection tables, partly or completely duplicative. E.g. if a given lemma has
Etymology 1 and Etymology 2 sections, and the inflection of each separate etymology is the same and associated
with its own table, then clicking on any green link will result in (at least) two entries.
2. The generate() function is invoked like a template call, meaning all its arguments come as strings and need to be
parsed. It does the following steps:
(1) Parse its arguments.
(2) Convert each set of per-entry parameters into a `params` object.
(3) For each `params` object, generate a default entry, then, if there is a language-specific accelerator submodule,
call that module to customize the entry.
(4) Merge duplicate entries. This not only looks for completely duplicated entries but tries to merge entries that
differ only in the definition. In general, this will result in multiple definition lines under a single entry,
but definition lines that consist of calls to {{infl of}} will be further merged. For example, for the
example above with ''bona'' and ''bonā'', the five inflections of ''bona'' will be merged into a single entry
with a single call to {{infl of}} that looks something like this:
# {{infl of|la|bonus||nom//voc|f|s|;|nom//acc//voc|n|p}}
In other words, not only are the inflections combined into a single call to {{infl of}}, but inflections
with partly shared tags are further merged.
(5) Generate the Pronunciation and Etymology sections that go at the top, above all the entries. This is done either
by calling custom generate functions in the language-specific accelerator submodule, or (if those aren't given)
by merging the individual pronunciation and etymology lines, removing duplicates. Note that the default entry
generated in step (3) has no pronunciation or etymology (which are generated only by a language-specific
submodule), so by default there will be no Pronunciation or Etymology section.
(6) Assemble the parts of each entry into a string and paste all the strings together, along with any combined
Pronunciation and Etymology sections, to form the text of the entire per-language L2 section. Note that if you
have enabled the OrangeLinks gadget, accelerator entries can be created on already-existing pages, as long as
there's no L2 section for the language of the entries.
]=]
-- A simple implementation of an ordered set.
local function create_ordered_set()
return {
array = {},
set = {},
}
end
-- Add an item to the ordered set. `squashed_item` is a representation of the item as a string or number, so that we
-- can use it as the key in a set. `orig_item` is the original item and can be omitted if it's the same as
-- `squashed_item`.
local function add_item(ordered_set, squashed_item, orig_item)
if not ordered_set.set[squashed_item] then
insert(ordered_set.array, orig_item or squashed_item)
ordered_set.set[squashed_item] = true
end
end
-- Generate the default entry
function export.default_entry(params)
local function make_head(pos, default_gender)
local gender = params.gender or default_gender
local genderspec = ""
if gender then
local genders = split(gender, ",", true)
for i, g in ipairs(genders) do
if i == 1 then
genders[i] = "|g=" .. g
else
genders[i] = "|g" .. i .. "=" .. g
end
end
genderspec = concat(genders)
end
local parts = {}
insert(parts, "{{head|" .. params.lang:getCode() .. "|" .. pos)
for i, target in ipairs(params.targets) do
local paramnum = i == 1 and "" or tostring(i)
if target.term ~= params.target_pagename then
insert(parts, ("|head%s=%s"):format(paramnum, target.term))
end
if target.tr then
insert(parts, ("|tr%s=%s"):format(paramnum, target.tr))
end
end
insert(parts, genderspec .. "}}")
return concat(parts)
end
local function make_def(tempname, extra_params)
local parts = {}
insert(parts, "{{" .. tempname .. "|" .. params.lang:getCode())
for i, origin in ipairs(params.origins) do
local termparam, trparam
if i == 1 then
termparam = ""
trparam = "tr="
else
termparam = "term" .. i .. "="
trparam = "tr" .. i .. "="
end
insert(parts, ("|%s%s"):format(termparam, origin.term))
if origin.tr then
insert(parts, ("|%s%s"):format(trparam, origin.tr))
end
end
insert(parts, (extra_params or "") .. "}}")
return concat(parts)
end
local function no_rule_error(params)
-- FIXME, verify the 2 below (number of stack frames to pop off); may be wrong now that we moved this function
-- underneath default_entry().
return error(('No rule for "%s" in language "%s" ("%s").')
:format(params.form, params.lang:getCode(), params.lang:getCanonicalName()), 2)
end
local entry = {
etymology = nil,
pronunc = nil,
pos_header = mw.getContentLanguage():ucfirst(params.pos),
head = make_head(params.pos .. " form"),
def = make_def("infl of", "||" .. params.form),
inflection = nil,
declension = nil,
conjugation = nil,
mutation = nil,
altforms = nil,
-- also pass in functions
make_head = make_head,
make_def = make_def,
no_rule_error = no_rule_error,
}
-- Exceptions for some forms
local templates = {
["p"] = "plural of",
["f"] = "feminine of",
["f|s"] = "feminine singular of",
["m|p"] = "masculine plural of",
["f|p"] = "feminine plural of",
["pejorative"] = "pejorative of",
}
if params.form == "comparative" or params.form == "superlative" or params.form == "equative" then
entry.head = make_head(params.form .. " " .. params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "adjective" and "|POS=" .. params.pos or "")
elseif params.form == "diminutive" or params.form == "augmentative" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "noun" and "|POS=" .. params.pos or "")
elseif params.form == "f" and params.pos == "noun" then
entry.head = make_head(params.pos, "f")
entry.def = make_def("female equivalent of")
elseif (params.form == "past|part" or params.form == "past|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("past participle")
elseif (params.form == "perf|part" or params.form == "perf|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("perfect participle")
elseif (params.form == "pres|part" or params.form == "pres|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("present participle")
elseif (params.form == "abstract noun" or params.form == "verbal noun") and params.pos == "noun" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of")
elseif templates[params.form] then
entry.def = make_def(templates[params.form])
end
return entry
end
-- Canonicalize multipart shortcuts (e.g. "123" -> "1//2//3") and non-conjoined list shortcuts (e.g. "1s" ->
-- {"1", "s"}); leave others alone, including conjoined shortcuts. The purpose of canonicalizing list shortcuts is so
-- that e.g. we can combine '1s|pres|ind' with '2|s|pres|ind'. However, conjoined shortcuts like "e-form" ->
-- {"pl", ";", "def", "s", "attr"} would require significantly more logic to handle correctly, and it's highly unlikely
-- we could find another similar enough tag to combine with (if it even makes sense to do so at all).
local function canonicalize_multipart_and_list_shortcuts(tags, lang)
local result = {}
for _, tag in ipairs(tags) do
local expansion = require(form_of_module).lookup_shortcut(tag, lang)
if type(expansion) == "string" and not expansion:find("//", nil, true) then
expansion = tag
end
if type(expansion) == "table" then
if contains(expansion, ";") then
insert(result, tag)
else
extend(result, expansion)
end
else
insert(result, expansion)
end
end
return result
end
-- Split a multipart tag into component tags, normalize each component, and return the resulting list. If
-- MAP_TO_CANONICAL_SHORTCUT is given, attempt to map each normalized component tag to its "canonical shortcut", i.e.
-- the first shortcut listed among its shortcuts.
--
-- If given a two-level multipart tag such as "1:sg//3:pl", the resulting return value will be {"first:singular",
-- "third:plural"}, or {"1:s", "3:p"} if MAP_TO_CANONICAL_SHORTCUT is given.
local function split_and_normalize_tag(tag, lang, map_to_canonical_shortcut)
local m_form_of = require(form_of_module)
local normalized = m_form_of.normalize_tag_set({tag}, lang)
if #normalized > 1 then
-- Tag is a conjoined shortcut. We leave these in their non-canonicalized form; see comment above
-- canonicalize_multipart_and_list_shortcuts(). But we mark them with a special character so we know that
-- they are non-normalized conjoined shortcuts, and later remove the mark.
return {tag .. MARK_CONJOINED_SHORTCUT}
end
normalized = normalized[1]
assert(#normalized == 1, "Internal error: Encountered list tag " .. tag .. ", which should have been canonicalized earlier")
local multipart = normalized[1]
if type(multipart) == "string" then
multipart = {multipart}
end
if map_to_canonical_shortcut then
local function get_canonical_shortcut(tag, lang)
local tagobj = m_form_of.lookup_tag(tag, lang)
local tag_shortcuts = tagobj and tagobj[require(form_of_data_module).SHORTCUTS]
if tag_shortcuts and type(tag_shortcuts) == "table" then
tag_shortcuts = tag_shortcuts[1]
end
return tag_shortcuts or tag
end
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
for j, single_tag in ipairs(mpart) do
mpart[j] = get_canonical_shortcut(single_tag, lang)
end
multipart[i] = concat(mpart, ":")
else
multipart[i] = get_canonical_shortcut(mpart, lang)
end
end
else
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
multipart[i] = concat(mpart, ":")
end
end
end
return multipart
end
-- Given a normalized tag, return its tag type, or "unknown" if a tag type
-- cannot be located (either the tag isn't recognized or for some reason
-- it doesn't specify a tag type).
local function get_normalized_tag_type(tag, lang)
-- Make sure to return 'unknown' for non-normalized conjoined shortcuts as well as URL's and parts of two-level
-- multipart tags (both of the latter two have colons in them). NOTE: In practice, the presence of the
-- MARK_CONJOINED_SHORTCUT means we won't find a normalized tag having the same name even if one would exist in the
-- absence of this mark, so this is more of an optimization.
if tag:find(MARK_CONJOINED_SHORTCUT) or tag:find(":") then
return "unknown"
end
local m_form_of = require(form_of_module)
local tagobj = m_form_of.lookup_tag(tag, lang)
return tagobj and tagobj[require(form_of_data_module).TAG_TYPE] or "unknown"
end
--[=[
Combine multiple semicolon-separated tag sets into multipart tags if possible. We combine tag sets that differ in
only one tag in a given dimension, and repeat this until no changes in case we can reduce along multiple dimensions,
e.g.
{{infl of|la|canus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
{{infl of|la|canus||dat//abl|m//f//n|p}}
`tag_sets` is a list of objects of the form {tags = {"TAG", "TAG", ...}, labels = {"LABEL", "LABEL", ...}}, i.e. of the
same format as `data.tag_sets` as passed to tagged_inflections() in [[Module:form of]]. Also accepted is an "old-style"
list of strings, one element per tag, with tag sets separated by a semicolon, the same as in {{infl of}}.
The return value is in the same format as was passed into `tag_sets`. If an old-style tag list was passed in, and
labels are present, they are attached to the last tag in a tag set using an inline modifier.
]=]
function export.combine_tag_sets_into_multipart(tag_sets, lang, POS)
if type(tag_sets) ~= "table" then
error("`tag_sets` should be a table but is a(n) `" .. type(tag_sets) .. "`")
end
if not tag_sets[1] then
error("Expected at least one item in `tag_sets`")
end
local old_style_tags = false
if type(tag_sets[1]) == "string" then
old_style_tags = true
end
-- First, as an optimization, make sure there are multiple tag sets. Otherwise, do nothing.
if old_style_tags then
local found_semicolon = false
for _, tag in ipairs(tag_sets) do
if tag == ";" then
found_semicolon = true
break
end
end
if not found_semicolon then
return tag_sets
end
elseif #tag_sets == 1 then
return tag_sets
end
local m_form_of = require(form_of_module)
-- If old-style tags (list of strings), convert to list of tag set objects.
if old_style_tags then
tag_sets = m_form_of.split_tag_set(tag_sets)
for i, tag_set in ipairs(tag_sets) do
tag_sets[i] = m_form_of.parse_tag_set_properties(tag_set)
end
else
-- Otherwise, make a copy as we may modify the list in-place.
tag_sets = deep_copy(tag_sets)
end
-- Repeat until no changes can be made.
while true do
-- First, determine the auto-generated label for each tag set and append to any user-specified labels.
-- Best to do this on the raw tag sets, before canonicalize_multipart_and_list_shortcuts(). Then canonicalize
-- 1s etc. into 1|s.
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = tag_set.labels and deep_copy(tag_set.labels) or {}
local normalized_tag_sets = m_form_of.normalize_tag_set(tag_set.tags, lang)
for _, normalized_tag_set in ipairs(normalized_tag_sets) do
local this_labels = select(2, m_form_of.fetch_categories_and_labels(normalized_tag_set, lang, POS))
extend(tag_set.labels_with_auto, this_labels)
end
tag_set.tags = canonicalize_multipart_and_list_shortcuts(tag_set.tags, lang)
end
local canonicalized_tag_sets = tag_sets
local old_canonicalized_tag_sets = canonicalized_tag_sets
-- Try combining in two different styles ("adjacent-first" = do two passes, where the first pass only combines
-- adjacent tag sets, while the second pass combines nonadjacent tag sets; "all-first" = do one pass combining
-- nonadjacent tag sets). Sometimes one is better, sometimes the other.
--
-- An example where adjacent-first is better:
--
-- {{infl of|la|medius||m|acc|s|;|n|nom|s|;|n|acc|s|;|n|voc|s}}
--
-- all-first results in
--
-- {{infl of|la|medius||m//n|acc|s|;|n|nom//voc|s}}
--
-- which isn't ideal.
--
-- If we do adjacent-first, we get
--
-- {{infl of|la|medius||m|acc|s|;|n|nom//acc//voc|s}}
--
-- which is much better.
--
-- The opposite happens in
--
-- {{infl of|grc|βουλόμενος||n|nom|s|;|m|acc|s|;|n|acc|s|;|n|voc|s}}
--
-- where all-first results in
--
-- {{infl of|grc|βουλόμενος||n|nom//acc//voc|s|;|m|acc|s}}
--
-- which is better than the result from adjacent-first, which is
--
-- {{infl of|grc|βουλόμενος||n|nom//voc|s|;|m//n|acc|s}}
--
-- To handle this conundrum, we try both, and look to see which one results in fewer "combinations" (where a
-- tag with // in it counts as a combination). If both are different but have the same # of combinations, we
-- prefer adjacent-first, we seems generally a better approach.
local tag_sets_by_style = {}
for _, combine_style in ipairs({"adjacent-first", "all-first"}) do
-- Now, we do two passes. The first pass only combines adjacent tag sets, while the second pass combines
-- nonadjacent tag sets. Copy canonicalized_tag_sets, since we destructively modify the list.
local this_tag_sets = deep_copy(canonicalized_tag_sets)
local combine_passes
if combine_style == "adjacent-first" then
combine_passes = {"adjacent", "all"}
else
combine_passes = {"all"}
end
for _, combine_pass in ipairs(combine_passes) do
local tag_ind = 1
while tag_ind <= #this_tag_sets do
local from, to
if combine_pass == "adjacent" then
if tag_ind == 1 then
from = 1
to = 0
else
from = tag_ind - 1
to = tag_ind - 1
end
else
from = 1
to = tag_ind - 1
end
local inner_broken = false
for prev_tag_ind = from, to do
local cur_tag_set = this_tag_sets[prev_tag_ind]
local tag_set = this_tag_sets[tag_ind]
if #cur_tag_set.tags == #tag_set.tags and
deep_equals(cur_tag_set.labels_with_auto, tag_set.labels_with_auto) then
local mismatch_ind = nil
local innermost_broken = false
for i = 1, #tag_set.tags do
local tag1 = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local tag2 = split_and_normalize_tag(tag_set.tags[i], lang)
if not deep_equals(list_to_set(tag1), list_to_set(tag2)) then
if mismatch_ind then
innermost_broken = true
break
end
local combined_dims = {}
for _, tag in ipairs(tag1) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
for _, tag in ipairs(tag2) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
if size(combined_dims) == 1 and not combined_dims["unknown"] then
mismatch_ind = i
else
innermost_broken = true
break
end
end
end
if not innermost_broken then
-- No break, we either match perfectly or are combinable
if not mismatch_ind then
-- Two identical tag sets
remove(this_tag_sets, tag_ind)
inner_broken = true
break
else
-- Combine tag sets at mismatch_ind, using the canonical shortcuts.
local tag1 = split_and_normalize_tag(cur_tag_set.tags[mismatch_ind], lang, true)
local tag2 = split_and_normalize_tag(tag_set.tags[mismatch_ind], lang, true)
-- Combine the normalized tags and remove the special MARK_CONJOINED_SHORTCUT mark
-- on conjoined shortcuts so we have normal tags again.
local combined_tag =
concat(append(tag1, tag2), "//"):gsub(MARK_CONJOINED_SHORTCUT, "")
local new_tag_set = {}
for i = 1, #cur_tag_set.tags do
if i == mismatch_ind then
insert(new_tag_set, combined_tag)
else
local cur_canon_tag = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local canon_tag = split_and_normalize_tag(tag_set.tags[i], lang)
assert(deep_equals(list_to_set(cur_canon_tag), list_to_set(canon_tag)))
insert(new_tag_set, cur_tag_set.tags[i])
end
end
this_tag_sets[prev_tag_ind].tags = new_tag_set
remove(this_tag_sets, tag_ind)
inner_broken = true
break
end
end
end
end
if not inner_broken then
-- No break from inner for-loop. Break from that loop indicates that we found that the current
-- tag set can be combined with a preceding tag set, did the combination and deleted the
-- current tag set. The next iteration then processes the same numbered tag set again (which is
-- actually the following tag set, because we deleted the tag set before it). No break
-- indicates that we couldn't combine the current tag set with any preceding tag set, and need
-- to advance to the next one.
tag_ind = tag_ind + 1
end
end
end
tag_sets_by_style[combine_style] = this_tag_sets
end
if not deep_equals(tag_sets_by_style["adjacent-first"], tag_sets_by_style["all-first"]) then
local function num_combinations(group)
local num_combos = 0
for _, tag_set in ipairs(group) do
for _, tag in ipairs(tag_set.tags) do
if tag:find("//") then
num_combos = num_combos + 1
end
end
end
return num_combos
end
local num_adjacent_first_combos = num_combinations(tag_sets_by_style["adjacent-first"])
local num_all_first_combos = num_combinations(tag_sets_by_style["all-first"])
if num_adjacent_first_combos < num_all_first_combos then
tag_sets = tag_sets_by_style["adjacent-first"]
elseif num_all_first_combos < num_adjacent_first_combos then
tag_sets = tag_sets_by_style["all-first"]
else
tag_sets = tag_sets_by_style["adjacent-first"]
end
else
-- Both are the same, pick either one
tag_sets = tag_sets_by_style["adjacent-first"]
end
if deep_equals(tag_sets, old_canonicalized_tag_sets) then
break
end
-- FIXME, we should consider reversing the transformation 1s -> 1|s,
-- but it's complicated to figure out when the transformation occurred;
-- not really important as both are equivalent
end
if old_style_tags then
local retval = {}
for _, tag_set in ipairs(tag_sets) do
if tag_set.labels and #tag_set.labels > 0 then
tag_set.tags[#tag_set.tags] =
tag_set.tags[#tag_set.tags] .. "<lb:" .. concat(tag_set.labels, ",") .. ">"
end
if #retval > 0 then
insert(retval, ";")
end
extend(retval, tag_set.tags)
end
return retval
else
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = nil
end
return tag_sets
end
end
-- Test function, callable externally.
function export.test_combine_tag_sets_into_multipart(frame)
local iparams = {
[1] = {list = true, required = true},
lang = {required = true},
}
local args = require("Module:parameters").process(frame.args, iparams)
local lang = require("Module:languages").getByCode(args.lang, true)
local combined_tags = export.combine_tag_sets_into_multipart(args[1], lang)
return concat(combined_tags, "|")
end
local function can_merge(entry, candidate)
for _, key in ipairs{"pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"} do
if not deep_equals(entry[key], candidate[key]) then
return false
end
end
return true
end
-- Check whether `entry` (an object describing a given non-lemma form, with properties such as `pronunc` for
-- pronunciation, `def` for definition, etc.) can be merged with any of the existing entries listed in `candidates`.
-- "Can be merged" means that all relevant properties (basically, everything but the definition) can are the same.
-- Return the first such candidate found, or nil if no candidates match `entry`.
local function find_mergeable(entry, candidates)
for _, candidate in ipairs(candidates) do
if can_merge(entry, candidate) then
return candidate
end
end
return nil
end
-- Merge multiple entries into one if they differ only in the definition, with all other
-- properties the same. The combined entry has multiple definition lines. We then do
-- further frobbing of {{infl of}} lines:
--
-- 1. Convert lang= param to param 1 (there shouldn't be any remaining cases of accelerator
-- modules generating {{infl of}} templates with lang=, but we do this just in case).
-- 2. Combine adjacent {{infl of}} lines that differ only in the tags, e.g.:
--
-- # {{infl of|la|bonus||nom|m|s}}
-- # {{infl of|la|bonus||nom|n|s}}
-- # {{infl of|la|bonus||acc|n|s}}
-- # {{infl of|la|bonus||voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- 3. Further group {{infl of}} lines with multiple tag sets (as may be generated b y
-- the previous step) using multipart tags, e.g. for the Latin entry ''bonum'',
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom//acc//voc|n|s}}
--
-- This grouping can group across multiple dimensions, e.g. for the Latin entry ''bonīs'',
--
-- # {{infl of|la|bonus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
--
-- becomes
--
-- # {{infl of|la|bonus||dat//abl|m//f//n|p}}
--
-- Another complex real-world example, for the Old English weak adjective form ''dēorenan'':
--
-- # {{infl of|ang|dēoren||wk|acc|m|sg|;|wk|acc|f|sg|;|wk|gen|m|sg|;|wk|gen|f|sg|;|wk|gen|n|sg|;|wk|dat|m|sg|;|wk|dat|f|sg|;|wk|dat|n|sg|;|wk|ins|m|sg|;|wk|ins|f|sg|;|wk|ins|n|sg|;|wk|nom|m|pl|;|wk|nom|f|pl|;|wk|nom|n|pl|;|wk|acc|m|pl|;|wk|acc|f|pl|;|wk|acc|n|pl}}
--
-- becomes
--
-- # {{infl of|ang|dēoren||wk|acc|m//f|sg|;|wk|gen//dat//ins|m//f//n|sg|;|wk|nom//acc|m//f//n|pl}}
--
-- Here, 17 separate tag sets are combined down into 3.
local function merge_entries(entries_obj)
local entries_new = {}
-- First, if overrides are supplied, try to eliminate entries with duplicate overrides.
local saw_override = false
for _, entry in ipairs(entries_obj.entries) do
if entry.override then
saw_override = true
break
end
end
if saw_override then
for _, entry in ipairs(entries_obj.entries) do
-- If some entries have an override and some don't, only deduplicate the ones with an override and
-- include all the ones without an override. FIXME: Deduplicate the non-overridden ones using the
-- algorithm below, and provide a custom function for deduplicating overrides.
if not entry.override then
insert(entries_new, entry)
else
insert_if_not(entries_new, entry, {
key = function(entry) return entry.override end,
})
end
end
entries_obj.entries = entries_new
return
end
-- First rewrite {{infl of|...|lang=LANG}} to {{infl of|LANG|...}}
for _, entry in ipairs(entries_obj.entries) do
local params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not params then
params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if params then
params = split(params, "|", true)
local new_params = {}
for _, param in ipairs(params) do
local lang = param:match("^lang=(.*)$")
if lang then
insert(new_params, 1, lang)
else
insert(new_params, param)
end
end
entry.def = "{{infl of|" .. concat(new_params, "|") .. "}}"
end
end
-- Merge entries that match in all of the following properties:
-- "pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"
-- This will merge any two mergeable entries even if non-consecutive.
-- The definitions of the merged entries do not have to match, but any matching
-- definitions will be deduped.
for _, entry in ipairs(entries_obj.entries) do
-- See if this entry can be merged with any previous entry.
local merge_entry = find_mergeable(entry, entries_new)
if merge_entry then
local duplicate_def = false
-- If we can merge, check whether the definition of the new entry is
-- the same as any previous definitions.
for _, def in ipairs(merge_entry.defs) do
if def == entry.def then
duplicate_def = true
break
end
end
if not duplicate_def then
insert(merge_entry.defs, entry.def)
end
else
entry.defs = {entry.def}
insert(entries_new, entry)
end
end
-- FIXME: Use the template parser for this.
-- Combine the definitions for each entries, merging all {{infl of}} calls
-- into one such call with multiple tag sets.
for _, entry in ipairs(entries_new) do
local existing_defs = {}
for _, new_def in ipairs(entry.defs) do
local did_merge = false
local new_params = new_def:match("^{{infl of|([^{}]+)}}$")
if not new_params then
new_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if new_params then
-- The new definition is {{infl of}}. See if there is an
-- {{infl of}} among the definitions seen so far.
for i, existing_def in ipairs(existing_defs) do
local existing_params = existing_def:match("^{{infl of|([^{}]+)}}$")
if not existing_params then
existing_params = existing_def:match("^{{inflection of|([^{}]+)}}$")
end
if existing_params then
-- Merge the existing and new {{infl of}} calls.
-- Find the last unnamed parameter of the first template.
existing_params = split(existing_params, "|", true)
local last_numbered_index
for j, param in ipairs(existing_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Add grammar tags of the second template
new_params = split(new_params, "|", true)
local tags = {}
local n = 0
for _, param in ipairs(new_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters,
-- which don't indicate grammar tags
if n >= 4 then
-- Now append the tags
insert(tags, param)
end
end
end
-- Add the new parameters after the existing ones
existing_params[last_numbered_index] = existing_params[last_numbered_index] .. "|;|" .. concat(tags, "|")
existing_defs[i] = "{{infl of|" .. concat(existing_params, "|") .. "}}"
did_merge = true
break
end
end
end
if not did_merge then
insert(existing_defs, new_def)
end
end
entry.def = concat(existing_defs, "\n# ")
end
-- Now combine tag sets inside a multiple-tag-set {{infl of}} call
for _, entry in ipairs(entries_new) do
local infl_of_params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not infl_of_params then
infl_of_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if infl_of_params then
infl_of_params = split(infl_of_params, "|", true)
-- Find the last unnamed parameter
local last_numbered_index
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Split the params in three:
-- (1) Params before the inflection tags, and any named params mixed in with the tags
-- (2) The tags themselves
-- (3) Named params after the tags
local pre_tag_params = {}
local tags = {}
local post_tag_params = {}
local n = 0
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters, which don't indicate grammar tags
if n >= 4 then
insert(tags, param)
else
insert(pre_tag_params, param)
end
elseif n >= last_numbered_index then
insert(post_tag_params, param)
else
insert(pre_tag_params, param)
end
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Now combine tag sets.
tags = export.combine_tag_sets_into_multipart(tags, entries_obj.lang)
-- Put the template back together.
local combined_params = append(pre_tag_params, tags, post_tag_params)
entry.def = "{{infl of|" .. concat(combined_params, "|") .. "}}"
end
end
entries_obj.entries = entries_new
end
local function merge_field(entries, field)
local seen_fields = create_ordered_set()
for _, entry in ipairs(entries) do
local fieldval = entry[field]
if fieldval then
if type(fieldval) == "table" then
-- already a table
else
fieldval = split(fieldval, "\n", true)
end
for _, val in ipairs(fieldval) do
if val ~= "" then -- skip newlines, including if there's a final newline when split
add_item(seen_fields, val)
end
end
end
end
return seen_fields.array
end
local function default_merge_pronunciation(entries_obj)
local pronuncs = merge_field(entries_obj.entries, "pronunc")
if #pronuncs > 0 then
return concat(pronuncs, "\n")
else
return nil
end
end
local function generate_merged_pronunciation(entries_obj, lang_module)
entries_obj.pronunciation = (lang_module and lang_module.generate_pronunciation or default_merge_pronunciation)(entries_obj)
end
local function default_merge_etymology(entries_obj)
local etyms = merge_field(entries_obj.entries, "etymology")
if #etyms > 1 then
-- Hack! If multiple etymology entries, put a * before each one so they don't run together.
-- In such a case we may be better off using a custom merge function.
for i, item in ipairs(etyms) do
etyms[i] = "* " .. item
end
end
if #etyms > 0 then
return concat(etyms, "\n")
else
return nil
end
end
local function generate_merged_etymology(entries_obj, lang_module)
entries_obj.etymology = (lang_module and lang_module.generate_etymology or default_merge_etymology)(entries_obj)
end
local function entries_to_text(entries_obj)
for i, entry in ipairs(entries_obj.entries) do
if entry.override then
entry = "\n" ..(entry.override or "")
else
entry =
"\n\n" ..
"===" .. entry.pos_header .. "===\n" ..
entry.head .. "\n\n" ..
"# " .. entry.def ..
(entry.inflection and "\n\n====Inflection====\n" .. entry.inflection or "") ..
(entry.declension and "\n\n====Declension====\n" .. entry.declension or "") ..
(entry.conjugation and "\n\n====Conjugation====\n" .. entry.conjugation or "") ..
(entry.altforms and "\n\n====Alternative forms====\n" .. entry.altforms or "") ..
-- FIXME, if there are multiple entries, there should either be only one merged L3 Mutation or several
-- L4 Mutation sections. Not yet implemented.
(entry.mutation and "\n\n===Mutation===\n" .. entry.mutation or "")
end
entries_obj.entries[i] = entry
end
return "==" .. entries_obj.lang:getCanonicalName() .. "==" ..
(entries_obj.etymology and "\n\n===Etymology===\n" .. entries_obj.etymology or "") ..
(entries_obj.pronunciation and "\n\n===Pronunciation===\n" .. entries_obj.pronunciation or "") ..
concat(entries_obj.entries)
end
local function split_and_zip_term_and_tr(encoded_term, encoded_tr)
local terms = split(encoded_term, split_term_regex)
local trs = encoded_tr and split(encoded_tr, split_term_regex) or {}
if #trs > #terms then
error(("Saw %s translits, which is > the %s terms seen: encoded_term=%s, encoded_tr=%s"):
format(#trs, #terms, encoded_term, encoded_tr))
end
local result = {}
for i, term in ipairs(terms) do
local tr = trs[i]
if tr == "" then
tr = nil
end
insert(result, {term = term, tr = tr})
end
return result
end
local function paste_term_tr(termobj)
if termobj.tr then
return termobj.term .. "//" .. termobj.tr
else
return termobj.term
end
end
function export.generate(frame)
local required = {required = true}
local list_allow_holes = {list = true, allow_holes = true}
local fparams = {
lang = {required = true, type = "language"},
origin_pagename = required,
target_pagename = required,
num = {required = true, type = "number"},
pos = list_allow_holes,
form = list_allow_holes,
gender = list_allow_holes,
transliteration = list_allow_holes,
origin = list_allow_holes,
origin_transliteration = list_allow_holes,
-- I'm pretty sure this is actually required and must have args.num entries in it.
target = list_allow_holes,
}
local args = require("Module:parameters").process(frame.args, fparams, nil, "accel", "generate")
local lang = args.lang
-- Try to use a language-specific module, if one exists.
local module_lang, lang_module = lang
while module_lang do
lang_module = safe_require("Module:accel/" .. module_lang:getCode())
if lang_module ~= nil then
break
end
module_lang = module_lang:getParent()
end
local entries = {}
-- Generate each entry
local seen_origins = create_ordered_set()
local seen_targets = create_ordered_set()
local params_list = {}
for i = 1, args.num do
local params = {
lang = lang,
origin_pagename = args.origin_pagename,
target_pagename = args.target_pagename,
pos = args.pos[i] or error("The argument \"pos\" is missing for entry " .. i),
form = args.form[i] or error("The argument \"form\" is missing for entry " .. i),
gender = args.gender[i],
origin = args.origin[i] or error("The argument \"origin\" is missing for entry " .. i),
origin_transliteration = args.origin_transliteration[i],
target = args.target[i],
transliteration = args.transliteration[i],
num_entries = args.num,
}
params.form = params.form:gsub("|", "|")
params.targets = split_and_zip_term_and_tr(params.target, params.transliteration)
params.origins = split_and_zip_term_and_tr(params.origin, params.origin_transliteration)
for _, origin in ipairs(params.origins) do
add_item(seen_origins, paste_term_tr(origin), origin)
end
for _, target in ipairs(params.targets) do
add_item(seen_targets, paste_term_tr(target), target)
end
insert(params_list, params)
end
-- Generate entries.
for _, params in ipairs(params_list) do
-- Add overall stats to all params objects.
params.seen_origins = seen_origins
params.seen_targets = seen_targets
-- Make a default entry.
local entry = export.default_entry(params)
if lang_module then
lang_module.generate(params, entry)
end
-- Add it to the list.
insert(entries, entry)
end
local entries_obj = {
entries = entries,
lang = lang,
lang_module = lang_module,
seen_origins = seen_origins,
seen_targets = seen_targets,
}
-- Merge entries if possible.
merge_entries(entries_obj)
-- Now generate merged pronunciation and etymology, either using a custom generation function or by merging the
-- individually specified pronunciation and etymology lines.
generate_merged_pronunciation(entries_obj, lang_module)
generate_merged_etymology(entries_obj, lang_module)
return entries_to_text(entries_obj)
end
function export.generate_JSON(frame)
local success, entries = pcall(export.generate, frame)
-- If success is false, entries is an error message.
-- It appears we need to specify `messages` or nothing will be displayed.
local ret = { [success and "entries" or "error"] = entries, messages = require("Module:array")()}
return require("Module:JSON").toJSON(ret)
end
return export
o72vbd2o82eoddnzhayo2bi2n2akpn8
292870
292869
2026-09-19T03:48:04Z
Saimawnkham
9
292870
Scribunto
text/plain
local export = {}
local form_of_module = "Module:form of"
local form_of_data_module = "Module:form of/data"
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local append = m_table.append
local assert = assert
local concat = table.concat
local contains = m_table.contains
local deep_copy = m_table.deepCopy
local deep_equals = require("Module:table/deepEquals")
local extend = m_table.extend
local insert = table.insert
local insert_if_not = m_table.insertIfNot
local list_to_set = m_table.listToSet
local remove = table.remove
local split = m_str_utils.split
local safe_require = require("Module:load").safe_require
local size = m_table.size
local u = m_str_utils.char
local MARK_CONJOINED_SHORTCUT = u(0xFFF0)
local split_term_regex = "%*~!"
--[=[
The purpose of the acceleration code is to auto-generate pages for non-lemma forms (inflections) of a given lemma.
The way it works is approximately as follows:
1. When you have the accelerator gadget in [[MediaWiki:Gadget-AcceleratedFormCreation.js]] enabled, and you click on a
green link, the JavaScript code gathers all the green links on the page that have the same language and pagename as
the clicked-on green link and sends them to the generate_JSON() function in this module, which is a thin wrapper
around the generate() function. Each individual green link maps to an "entry" and has associated accelerator
properties that were specified by the `accel` object passed into full_link() in [[Module:links]]. Note that there can
-- be multiple entries passed to a single generate() call for various reasons, e.g.:
(1) Inside of a single inflection table there is syncretism, with two different inflections having the same form;
e.g. the same Latin form ''bonī'' occurs in three different inflections of the lemma [[bonus]]: the masculine
genitive singular, neuter genitive singular and masculine nominative plural. Hence there will be three entries.
(2) Inside of a single inflection table there are inflections that are spelled differently but map to the same
pagename due to diacritic removal; e.g. Latin ''bona'' (occurring in five different inflections: the feminine
nominative and vocative singular and the neuter nominative, accusative and vocative plural) and Latin ''bonā''
(the feminine ablative singular) will be merged together into a single call to generate() with six entries.
(3) There are two or more inflection tables, partly or completely duplicative. E.g. if a given lemma has
Etymology 1 and Etymology 2 sections, and the inflection of each separate etymology is the same and associated
with its own table, then clicking on any green link will result in (at least) two entries.
2. The generate() function is invoked like a template call, meaning all its arguments come as strings and need to be
parsed. It does the following steps:
(1) Parse its arguments.
(2) Convert each set of per-entry parameters into a `params` object.
(3) For each `params` object, generate a default entry, then, if there is a language-specific accelerator submodule,
call that module to customize the entry.
(4) Merge duplicate entries. This not only looks for completely duplicated entries but tries to merge entries that
differ only in the definition. In general, this will result in multiple definition lines under a single entry,
but definition lines that consist of calls to {{infl of}} will be further merged. For example, for the
example above with ''bona'' and ''bonā'', the five inflections of ''bona'' will be merged into a single entry
with a single call to {{infl of}} that looks something like this:
# {{infl of|la|bonus||nom//voc|f|s|;|nom//acc//voc|n|p}}
In other words, not only are the inflections combined into a single call to {{infl of}}, but inflections
with partly shared tags are further merged.
(5) Generate the Pronunciation and Etymology sections that go at the top, above all the entries. This is done either
by calling custom generate functions in the language-specific accelerator submodule, or (if those aren't given)
by merging the individual pronunciation and etymology lines, removing duplicates. Note that the default entry
generated in step (3) has no pronunciation or etymology (which are generated only by a language-specific
submodule), so by default there will be no Pronunciation or Etymology section.
(6) Assemble the parts of each entry into a string and paste all the strings together, along with any combined
Pronunciation and Etymology sections, to form the text of the entire per-language L2 section. Note that if you
have enabled the OrangeLinks gadget, accelerator entries can be created on already-existing pages, as long as
there's no L2 section for the language of the entries.
]=]
-- A simple implementation of an ordered set.
local function create_ordered_set()
return {
array = {},
set = {},
}
end
-- Add an item to the ordered set. `squashed_item` is a representation of the item as a string or number, so that we
-- can use it as the key in a set. `orig_item` is the original item and can be omitted if it's the same as
-- `squashed_item`.
local function add_item(ordered_set, squashed_item, orig_item)
if not ordered_set.set[squashed_item] then
insert(ordered_set.array, orig_item or squashed_item)
ordered_set.set[squashed_item] = true
end
end
-- Generate the default entry
function export.default_entry(params)
local function make_head(pos, default_gender)
local gender = params.gender or default_gender
local genderspec = ""
if gender then
local genders = split(gender, ",", true)
for i, g in ipairs(genders) do
if i == 1 then
genders[i] = "|g=" .. g
else
genders[i] = "|g" .. i .. "=" .. g
end
end
genderspec = concat(genders)
end
local parts = {}
insert(parts, "{{head|" .. params.lang:getCode() .. "|" .. pos)
for i, target in ipairs(params.targets) do
local paramnum = i == 1 and "" or tostring(i)
if target.term ~= params.target_pagename then
insert(parts, ("|head%s=%s"):format(paramnum, target.term))
end
if target.tr then
insert(parts, ("|tr%s=%s"):format(paramnum, target.tr))
end
end
insert(parts, genderspec .. "}}")
return concat(parts)
end
local function make_def(tempname, extra_params)
local parts = {}
insert(parts, "{{" .. tempname .. "|" .. params.lang:getCode())
for i, origin in ipairs(params.origins) do
local termparam, trparam
if i == 1 then
termparam = ""
trparam = "tr="
else
termparam = "term" .. i .. "="
trparam = "tr" .. i .. "="
end
insert(parts, ("|%s%s"):format(termparam, origin.term))
if origin.tr then
insert(parts, ("|%s%s"):format(trparam, origin.tr))
end
end
insert(parts, (extra_params or "") .. "}}")
return concat(parts)
end
local function no_rule_error(params)
-- FIXME, verify the 2 below (number of stack frames to pop off); may be wrong now that we moved this function
-- underneath default_entry().
return error(('No rule for "%s" in language "%s" ("%s").')
:format(params.form, params.lang:getCode(), params.lang:getCanonicalName()), 2)
end
local entry = {
etymology = nil,
pronunc = nil,
pos_header = mw.getContentLanguage():ucfirst(params.pos),
head = make_head(params.pos .. " form"),
def = make_def("infl of", "||" .. params.form),
inflection = nil,
declension = nil,
conjugation = nil,
mutation = nil,
altforms = nil,
-- also pass in functions
make_head = make_head,
make_def = make_def,
no_rule_error = no_rule_error,
}
-- Exceptions for some forms
local templates = {
["p"] = "plural of",
["f"] = "feminine of",
["f|s"] = "feminine singular of",
["m|p"] = "masculine plural of",
["f|p"] = "feminine plural of",
["pejorative"] = "pejorative of",
}
if params.form == "comparative" or params.form == "superlative" or params.form == "equative" then
entry.head = make_head(params.form .. " " .. params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "adjective" and "|POS=" .. params.pos or "")
elseif params.form == "diminutive" or params.form == "augmentative" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "noun" and "|POS=" .. params.pos or "")
elseif params.form == "f" and params.pos == "noun" then
entry.head = make_head(params.pos, "f")
entry.def = make_def("female equivalent of")
elseif (params.form == "past|part" or params.form == "past|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("past participle")
elseif (params.form == "perf|part" or params.form == "perf|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("perfect participle")
elseif (params.form == "pres|part" or params.form == "pres|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("present participle")
elseif (params.form == "abstract noun" or params.form == "verbal noun") and params.pos == "noun" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of")
elseif templates[params.form] then
entry.def = make_def(templates[params.form])
end
return entry
end
-- Canonicalize multipart shortcuts (e.g. "123" -> "1//2//3") and non-conjoined list shortcuts (e.g. "1s" ->
-- {"1", "s"}); leave others alone, including conjoined shortcuts. The purpose of canonicalizing list shortcuts is so
-- that e.g. we can combine '1s|pres|ind' with '2|s|pres|ind'. However, conjoined shortcuts like "e-form" ->
-- {"pl", ";", "def", "s", "attr"} would require significantly more logic to handle correctly, and it's highly unlikely
-- we could find another similar enough tag to combine with (if it even makes sense to do so at all).
local function canonicalize_multipart_and_list_shortcuts(tags, lang)
local result = {}
for _, tag in ipairs(tags) do
local expansion = require(form_of_module).lookup_shortcut(tag, lang)
if type(expansion) == "string" and not expansion:find("//", nil, true) then
expansion = tag
end
if type(expansion) == "table" then
if contains(expansion, ";") then
insert(result, tag)
else
extend(result, expansion)
end
else
insert(result, expansion)
end
end
return result
end
-- Split a multipart tag into component tags, normalize each component, and return the resulting list. If
-- MAP_TO_CANONICAL_SHORTCUT is given, attempt to map each normalized component tag to its "canonical shortcut", i.e.
-- the first shortcut listed among its shortcuts.
--
-- If given a two-level multipart tag such as "1:sg//3:pl", the resulting return value will be {"first:singular",
-- "third:plural"}, or {"1:s", "3:p"} if MAP_TO_CANONICAL_SHORTCUT is given.
local function split_and_normalize_tag(tag, lang, map_to_canonical_shortcut)
local m_form_of = require(form_of_module)
local normalized = m_form_of.normalize_tag_set({tag}, lang)
if #normalized > 1 then
-- Tag is a conjoined shortcut. We leave these in their non-canonicalized form; see comment above
-- canonicalize_multipart_and_list_shortcuts(). But we mark them with a special character so we know that
-- they are non-normalized conjoined shortcuts, and later remove the mark.
return {tag .. MARK_CONJOINED_SHORTCUT}
end
normalized = normalized[1]
assert(#normalized == 1, "Internal error: Encountered list tag " .. tag .. ", which should have been canonicalized earlier")
local multipart = normalized[1]
if type(multipart) == "string" then
multipart = {multipart}
end
if map_to_canonical_shortcut then
local function get_canonical_shortcut(tag, lang)
local tagobj = m_form_of.lookup_tag(tag, lang)
local tag_shortcuts = tagobj and tagobj[require(form_of_data_module).SHORTCUTS]
if tag_shortcuts and type(tag_shortcuts) == "table" then
tag_shortcuts = tag_shortcuts[1]
end
return tag_shortcuts or tag
end
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
for j, single_tag in ipairs(mpart) do
mpart[j] = get_canonical_shortcut(single_tag, lang)
end
multipart[i] = concat(mpart, ":")
else
multipart[i] = get_canonical_shortcut(mpart, lang)
end
end
else
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
multipart[i] = concat(mpart, ":")
end
end
end
return multipart
end
-- Given a normalized tag, return its tag type, or "unknown" if a tag type
-- cannot be located (either the tag isn't recognized or for some reason
-- it doesn't specify a tag type).
local function get_normalized_tag_type(tag, lang)
-- Make sure to return 'unknown' for non-normalized conjoined shortcuts as well as URL's and parts of two-level
-- multipart tags (both of the latter two have colons in them). NOTE: In practice, the presence of the
-- MARK_CONJOINED_SHORTCUT means we won't find a normalized tag having the same name even if one would exist in the
-- absence of this mark, so this is more of an optimization.
if tag:find(MARK_CONJOINED_SHORTCUT) or tag:find(":") then
return "unknown"
end
local m_form_of = require(form_of_module)
local tagobj = m_form_of.lookup_tag(tag, lang)
return tagobj and tagobj[require(form_of_data_module).TAG_TYPE] or "unknown"
end
--[=[
Combine multiple semicolon-separated tag sets into multipart tags if possible. We combine tag sets that differ in
only one tag in a given dimension, and repeat this until no changes in case we can reduce along multiple dimensions,
e.g.
{{infl of|la|canus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
{{infl of|la|canus||dat//abl|m//f//n|p}}
`tag_sets` is a list of objects of the form {tags = {"TAG", "TAG", ...}, labels = {"LABEL", "LABEL", ...}}, i.e. of the
same format as `data.tag_sets` as passed to tagged_inflections() in [[Module:form of]]. Also accepted is an "old-style"
list of strings, one element per tag, with tag sets separated by a semicolon, the same as in {{infl of}}.
The return value is in the same format as was passed into `tag_sets`. If an old-style tag list was passed in, and
labels are present, they are attached to the last tag in a tag set using an inline modifier.
]=]
function export.combine_tag_sets_into_multipart(tag_sets, lang, POS)
if type(tag_sets) ~= "table" then
error("`tag_sets` should be a table but is a(n) `" .. type(tag_sets) .. "`")
end
if not tag_sets[1] then
error("Expected at least one item in `tag_sets`")
end
local old_style_tags = false
if type(tag_sets[1]) == "string" then
old_style_tags = true
end
-- First, as an optimization, make sure there are multiple tag sets. Otherwise, do nothing.
if old_style_tags then
local found_semicolon = false
for _, tag in ipairs(tag_sets) do
if tag == ";" then
found_semicolon = true
break
end
end
if not found_semicolon then
return tag_sets
end
elseif #tag_sets == 1 then
return tag_sets
end
local m_form_of = require(form_of_module)
-- If old-style tags (list of strings), convert to list of tag set objects.
if old_style_tags then
tag_sets = m_form_of.split_tag_set(tag_sets)
for i, tag_set in ipairs(tag_sets) do
tag_sets[i] = m_form_of.parse_tag_set_properties(tag_set)
end
else
-- Otherwise, make a copy as we may modify the list in-place.
tag_sets = deep_copy(tag_sets)
end
-- Repeat until no changes can be made.
while true do
-- First, determine the auto-generated label for each tag set and append to any user-specified labels.
-- Best to do this on the raw tag sets, before canonicalize_multipart_and_list_shortcuts(). Then canonicalize
-- 1s etc. into 1|s.
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = tag_set.labels and deep_copy(tag_set.labels) or {}
local normalized_tag_sets = m_form_of.normalize_tag_set(tag_set.tags, lang)
for _, normalized_tag_set in ipairs(normalized_tag_sets) do
local this_labels = select(2, m_form_of.fetch_categories_and_labels(normalized_tag_set, lang, POS))
extend(tag_set.labels_with_auto, this_labels)
end
tag_set.tags = canonicalize_multipart_and_list_shortcuts(tag_set.tags, lang)
end
local canonicalized_tag_sets = tag_sets
local old_canonicalized_tag_sets = canonicalized_tag_sets
-- Try combining in two different styles ("adjacent-first" = do two passes, where the first pass only combines
-- adjacent tag sets, while the second pass combines nonadjacent tag sets; "all-first" = do one pass combining
-- nonadjacent tag sets). Sometimes one is better, sometimes the other.
--
-- An example where adjacent-first is better:
--
-- {{infl of|la|medius||m|acc|s|;|n|nom|s|;|n|acc|s|;|n|voc|s}}
--
-- all-first results in
--
-- {{infl of|la|medius||m//n|acc|s|;|n|nom//voc|s}}
--
-- which isn't ideal.
--
-- If we do adjacent-first, we get
--
-- {{infl of|la|medius||m|acc|s|;|n|nom//acc//voc|s}}
--
-- which is much better.
--
-- The opposite happens in
--
-- {{infl of|grc|βουλόμενος||n|nom|s|;|m|acc|s|;|n|acc|s|;|n|voc|s}}
--
-- where all-first results in
--
-- {{infl of|grc|βουλόμενος||n|nom//acc//voc|s|;|m|acc|s}}
--
-- which is better than the result from adjacent-first, which is
--
-- {{infl of|grc|βουλόμενος||n|nom//voc|s|;|m//n|acc|s}}
--
-- To handle this conundrum, we try both, and look to see which one results in fewer "combinations" (where a
-- tag with // in it counts as a combination). If both are different but have the same # of combinations, we
-- prefer adjacent-first, we seems generally a better approach.
local tag_sets_by_style = {}
for _, combine_style in ipairs({"adjacent-first", "all-first"}) do
-- Now, we do two passes. The first pass only combines adjacent tag sets, while the second pass combines
-- nonadjacent tag sets. Copy canonicalized_tag_sets, since we destructively modify the list.
local this_tag_sets = deep_copy(canonicalized_tag_sets)
local combine_passes
if combine_style == "adjacent-first" then
combine_passes = {"adjacent", "all"}
else
combine_passes = {"all"}
end
for _, combine_pass in ipairs(combine_passes) do
local tag_ind = 1
while tag_ind <= #this_tag_sets do
local from, to
if combine_pass == "adjacent" then
if tag_ind == 1 then
from = 1
to = 0
else
from = tag_ind - 1
to = tag_ind - 1
end
else
from = 1
to = tag_ind - 1
end
local inner_broken = false
for prev_tag_ind = from, to do
local cur_tag_set = this_tag_sets[prev_tag_ind]
local tag_set = this_tag_sets[tag_ind]
if #cur_tag_set.tags == #tag_set.tags and
deep_equals(cur_tag_set.labels_with_auto, tag_set.labels_with_auto) then
local mismatch_ind = nil
local innermost_broken = false
for i = 1, #tag_set.tags do
local tag1 = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local tag2 = split_and_normalize_tag(tag_set.tags[i], lang)
if not deep_equals(list_to_set(tag1), list_to_set(tag2)) then
if mismatch_ind then
innermost_broken = true
break
end
local combined_dims = {}
for _, tag in ipairs(tag1) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
for _, tag in ipairs(tag2) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
if size(combined_dims) == 1 and not combined_dims["unknown"] then
mismatch_ind = i
else
innermost_broken = true
break
end
end
end
if not innermost_broken then
-- No break, we either match perfectly or are combinable
if not mismatch_ind then
-- Two identical tag sets
remove(this_tag_sets, tag_ind)
inner_broken = true
break
else
-- Combine tag sets at mismatch_ind, using the canonical shortcuts.
local tag1 = split_and_normalize_tag(cur_tag_set.tags[mismatch_ind], lang, true)
local tag2 = split_and_normalize_tag(tag_set.tags[mismatch_ind], lang, true)
-- Combine the normalized tags and remove the special MARK_CONJOINED_SHORTCUT mark
-- on conjoined shortcuts so we have normal tags again.
local combined_tag =
concat(append(tag1, tag2), "//"):gsub(MARK_CONJOINED_SHORTCUT, "")
local new_tag_set = {}
for i = 1, #cur_tag_set.tags do
if i == mismatch_ind then
insert(new_tag_set, combined_tag)
else
local cur_canon_tag = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local canon_tag = split_and_normalize_tag(tag_set.tags[i], lang)
assert(deep_equals(list_to_set(cur_canon_tag), list_to_set(canon_tag)))
insert(new_tag_set, cur_tag_set.tags[i])
end
end
this_tag_sets[prev_tag_ind].tags = new_tag_set
remove(this_tag_sets, tag_ind)
inner_broken = true
break
end
end
end
end
if not inner_broken then
-- No break from inner for-loop. Break from that loop indicates that we found that the current
-- tag set can be combined with a preceding tag set, did the combination and deleted the
-- current tag set. The next iteration then processes the same numbered tag set again (which is
-- actually the following tag set, because we deleted the tag set before it). No break
-- indicates that we couldn't combine the current tag set with any preceding tag set, and need
-- to advance to the next one.
tag_ind = tag_ind + 1
end
end
end
tag_sets_by_style[combine_style] = this_tag_sets
end
if not deep_equals(tag_sets_by_style["adjacent-first"], tag_sets_by_style["all-first"]) then
local function num_combinations(group)
local num_combos = 0
for _, tag_set in ipairs(group) do
for _, tag in ipairs(tag_set.tags) do
if tag:find("//") then
num_combos = num_combos + 1
end
end
end
return num_combos
end
local num_adjacent_first_combos = num_combinations(tag_sets_by_style["adjacent-first"])
local num_all_first_combos = num_combinations(tag_sets_by_style["all-first"])
if num_adjacent_first_combos < num_all_first_combos then
tag_sets = tag_sets_by_style["adjacent-first"]
elseif num_all_first_combos < num_adjacent_first_combos then
tag_sets = tag_sets_by_style["all-first"]
else
tag_sets = tag_sets_by_style["adjacent-first"]
end
else
-- Both are the same, pick either one
tag_sets = tag_sets_by_style["adjacent-first"]
end
if deep_equals(tag_sets, old_canonicalized_tag_sets) then
break
end
-- FIXME, we should consider reversing the transformation 1s -> 1|s,
-- but it's complicated to figure out when the transformation occurred;
-- not really important as both are equivalent
end
if old_style_tags then
local retval = {}
for _, tag_set in ipairs(tag_sets) do
if tag_set.labels and #tag_set.labels > 0 then
tag_set.tags[#tag_set.tags] =
tag_set.tags[#tag_set.tags] .. "<lb:" .. concat(tag_set.labels, ",") .. ">"
end
if #retval > 0 then
insert(retval, ";")
end
extend(retval, tag_set.tags)
end
return retval
else
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = nil
end
return tag_sets
end
end
-- Test function, callable externally.
function export.test_combine_tag_sets_into_multipart(frame)
local iparams = {
[1] = {list = true, required = true},
lang = {required = true},
}
local args = require("Module:parameters").process(frame.args, iparams)
local lang = require("Module:languages").getByCode(args.lang, true)
local combined_tags = export.combine_tag_sets_into_multipart(args[1], lang)
return concat(combined_tags, "|")
end
local function can_merge(entry, candidate)
for _, key in ipairs{"pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"} do
if not deep_equals(entry[key], candidate[key]) then
return false
end
end
return true
end
-- Check whether `entry` (an object describing a given non-lemma form, with properties such as `pronunc` for
-- pronunciation, `def` for definition, etc.) can be merged with any of the existing entries listed in `candidates`.
-- "Can be merged" means that all relevant properties (basically, everything but the definition) can are the same.
-- Return the first such candidate found, or nil if no candidates match `entry`.
local function find_mergeable(entry, candidates)
for _, candidate in ipairs(candidates) do
if can_merge(entry, candidate) then
return candidate
end
end
return nil
end
-- Merge multiple entries into one if they differ only in the definition, with all other
-- properties the same. The combined entry has multiple definition lines. We then do
-- further frobbing of {{infl of}} lines:
--
-- 1. Convert lang= param to param 1 (there shouldn't be any remaining cases of accelerator
-- modules generating {{infl of}} templates with lang=, but we do this just in case).
-- 2. Combine adjacent {{infl of}} lines that differ only in the tags, e.g.:
--
-- # {{infl of|la|bonus||nom|m|s}}
-- # {{infl of|la|bonus||nom|n|s}}
-- # {{infl of|la|bonus||acc|n|s}}
-- # {{infl of|la|bonus||voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- 3. Further group {{infl of}} lines with multiple tag sets (as may be generated b y
-- the previous step) using multipart tags, e.g. for the Latin entry ''bonum'',
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom//acc//voc|n|s}}
--
-- This grouping can group across multiple dimensions, e.g. for the Latin entry ''bonīs'',
--
-- # {{infl of|la|bonus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
--
-- becomes
--
-- # {{infl of|la|bonus||dat//abl|m//f//n|p}}
--
-- Another complex real-world example, for the Old English weak adjective form ''dēorenan'':
--
-- # {{infl of|ang|dēoren||wk|acc|m|sg|;|wk|acc|f|sg|;|wk|gen|m|sg|;|wk|gen|f|sg|;|wk|gen|n|sg|;|wk|dat|m|sg|;|wk|dat|f|sg|;|wk|dat|n|sg|;|wk|ins|m|sg|;|wk|ins|f|sg|;|wk|ins|n|sg|;|wk|nom|m|pl|;|wk|nom|f|pl|;|wk|nom|n|pl|;|wk|acc|m|pl|;|wk|acc|f|pl|;|wk|acc|n|pl}}
--
-- becomes
--
-- # {{infl of|ang|dēoren||wk|acc|m//f|sg|;|wk|gen//dat//ins|m//f//n|sg|;|wk|nom//acc|m//f//n|pl}}
--
-- Here, 17 separate tag sets are combined down into 3.
local function merge_entries(entries_obj)
local entries_new = {}
-- First, if overrides are supplied, try to eliminate entries with duplicate overrides.
local saw_override = false
for _, entry in ipairs(entries_obj.entries) do
if entry.override then
saw_override = true
break
end
end
if saw_override then
for _, entry in ipairs(entries_obj.entries) do
-- If some entries have an override and some don't, only deduplicate the ones with an override and
-- include all the ones without an override. FIXME: Deduplicate the non-overridden ones using the
-- algorithm below, and provide a custom function for deduplicating overrides.
if not entry.override then
insert(entries_new, entry)
else
insert_if_not(entries_new, entry, {
key = function(entry) return entry.override end,
})
end
end
entries_obj.entries = entries_new
return
end
-- First rewrite {{infl of|...|lang=LANG}} to {{infl of|LANG|...}}
for _, entry in ipairs(entries_obj.entries) do
local params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not params then
params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if params then
params = split(params, "|", true)
local new_params = {}
for _, param in ipairs(params) do
local lang = param:match("^lang=(.*)$")
if lang then
insert(new_params, 1, lang)
else
insert(new_params, param)
end
end
entry.def = "{{infl of|" .. concat(new_params, "|") .. "}}"
end
end
-- Merge entries that match in all of the following properties:
-- "pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"
-- This will merge any two mergeable entries even if non-consecutive.
-- The definitions of the merged entries do not have to match, but any matching
-- definitions will be deduped.
for _, entry in ipairs(entries_obj.entries) do
-- See if this entry can be merged with any previous entry.
local merge_entry = find_mergeable(entry, entries_new)
if merge_entry then
local duplicate_def = false
-- If we can merge, check whether the definition of the new entry is
-- the same as any previous definitions.
for _, def in ipairs(merge_entry.defs) do
if def == entry.def then
duplicate_def = true
break
end
end
if not duplicate_def then
insert(merge_entry.defs, entry.def)
end
else
entry.defs = {entry.def}
insert(entries_new, entry)
end
end
-- FIXME: Use the template parser for this.
-- Combine the definitions for each entries, merging all {{infl of}} calls
-- into one such call with multiple tag sets.
for _, entry in ipairs(entries_new) do
local existing_defs = {}
for _, new_def in ipairs(entry.defs) do
local did_merge = false
local new_params = new_def:match("^{{infl of|([^{}]+)}}$")
if not new_params then
new_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if new_params then
-- The new definition is {{infl of}}. See if there is an
-- {{infl of}} among the definitions seen so far.
for i, existing_def in ipairs(existing_defs) do
local existing_params = existing_def:match("^{{infl of|([^{}]+)}}$")
if not existing_params then
existing_params = existing_def:match("^{{inflection of|([^{}]+)}}$")
end
if existing_params then
-- Merge the existing and new {{infl of}} calls.
-- Find the last unnamed parameter of the first template.
existing_params = split(existing_params, "|", true)
local last_numbered_index
for j, param in ipairs(existing_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Add grammar tags of the second template
new_params = split(new_params, "|", true)
local tags = {}
local n = 0
for _, param in ipairs(new_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters,
-- which don't indicate grammar tags
if n >= 4 then
-- Now append the tags
insert(tags, param)
end
end
end
-- Add the new parameters after the existing ones
existing_params[last_numbered_index] = existing_params[last_numbered_index] .. "|;|" .. concat(tags, "|")
existing_defs[i] = "{{infl of|" .. concat(existing_params, "|") .. "}}"
did_merge = true
break
end
end
end
if not did_merge then
insert(existing_defs, new_def)
end
end
entry.def = concat(existing_defs, "\n# ")
end
-- Now combine tag sets inside a multiple-tag-set {{infl of}} call
for _, entry in ipairs(entries_new) do
local infl_of_params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not infl_of_params then
infl_of_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if infl_of_params then
infl_of_params = split(infl_of_params, "|", true)
-- Find the last unnamed parameter
local last_numbered_index
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Split the params in three:
-- (1) Params before the inflection tags, and any named params mixed in with the tags
-- (2) The tags themselves
-- (3) Named params after the tags
local pre_tag_params = {}
local tags = {}
local post_tag_params = {}
local n = 0
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters, which don't indicate grammar tags
if n >= 4 then
insert(tags, param)
else
insert(pre_tag_params, param)
end
elseif n >= last_numbered_index then
insert(post_tag_params, param)
else
insert(pre_tag_params, param)
end
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Now combine tag sets.
tags = export.combine_tag_sets_into_multipart(tags, entries_obj.lang)
-- Put the template back together.
local combined_params = {}
for _, v in ipairs(pre_tag_params) do table.insert(combined_params, v) end
for _, v in ipairs(tags) do table.insert(combined_params, v) end
for _, v in ipairs(post_tag_params) do table.insert(combined_params, v) end
entry.def = "{{infl of|" .. table.concat(combined_params, "|") .. "}}"
end
end
entries_obj.entries = entries_new
end
local function merge_field(entries, field)
local seen_fields = create_ordered_set()
for _, entry in ipairs(entries) do
local fieldval = entry[field]
if fieldval then
if type(fieldval) == "table" then
-- already a table
else
fieldval = split(fieldval, "\n", true)
end
for _, val in ipairs(fieldval) do
if val ~= "" then -- skip newlines, including if there's a final newline when split
add_item(seen_fields, val)
end
end
end
end
return seen_fields.array
end
local function default_merge_pronunciation(entries_obj)
local pronuncs = merge_field(entries_obj.entries, "pronunc")
if #pronuncs > 0 then
return concat(pronuncs, "\n")
else
return nil
end
end
local function generate_merged_pronunciation(entries_obj, lang_module)
entries_obj.pronunciation = (lang_module and lang_module.generate_pronunciation or default_merge_pronunciation)(entries_obj)
end
local function default_merge_etymology(entries_obj)
local etyms = merge_field(entries_obj.entries, "etymology")
if #etyms > 1 then
-- Hack! If multiple etymology entries, put a * before each one so they don't run together.
-- In such a case we may be better off using a custom merge function.
for i, item in ipairs(etyms) do
etyms[i] = "* " .. item
end
end
if #etyms > 0 then
return concat(etyms, "\n")
else
return nil
end
end
local function generate_merged_etymology(entries_obj, lang_module)
entries_obj.etymology = (lang_module and lang_module.generate_etymology or default_merge_etymology)(entries_obj)
end
local function entries_to_text(entries_obj)
for i, entry in ipairs(entries_obj.entries) do
if entry.override then
entry = "\n" ..(entry.override or "")
else
entry =
"\n\n" ..
"===" .. entry.pos_header .. "===\n" ..
entry.head .. "\n\n" ..
"# " .. entry.def ..
(entry.inflection and "\n\n====Inflection====\n" .. entry.inflection or "") ..
(entry.declension and "\n\n====Declension====\n" .. entry.declension or "") ..
(entry.conjugation and "\n\n====Conjugation====\n" .. entry.conjugation or "") ..
(entry.altforms and "\n\n====Alternative forms====\n" .. entry.altforms or "") ..
-- FIXME, if there are multiple entries, there should either be only one merged L3 Mutation or several
-- L4 Mutation sections. Not yet implemented.
(entry.mutation and "\n\n===Mutation===\n" .. entry.mutation or "")
end
entries_obj.entries[i] = entry
end
return "==" .. entries_obj.lang:getCanonicalName() .. "==" ..
(entries_obj.etymology and "\n\n===Etymology===\n" .. entries_obj.etymology or "") ..
(entries_obj.pronunciation and "\n\n===Pronunciation===\n" .. entries_obj.pronunciation or "") ..
concat(entries_obj.entries)
end
local function split_and_zip_term_and_tr(encoded_term, encoded_tr)
local terms = split(encoded_term, split_term_regex)
local trs = encoded_tr and split(encoded_tr, split_term_regex) or {}
if #trs > #terms then
error(("Saw %s translits, which is > the %s terms seen: encoded_term=%s, encoded_tr=%s"):
format(#trs, #terms, encoded_term, encoded_tr))
end
local result = {}
for i, term in ipairs(terms) do
local tr = trs[i]
if tr == "" then
tr = nil
end
insert(result, {term = term, tr = tr})
end
return result
end
local function paste_term_tr(termobj)
if termobj.tr then
return termobj.term .. "//" .. termobj.tr
else
return termobj.term
end
end
function export.generate(frame)
local required = {required = true}
local list_allow_holes = {list = true, allow_holes = true}
local fparams = {
lang = {required = true, type = "language"},
origin_pagename = required,
target_pagename = required,
num = {required = true, type = "number"},
pos = list_allow_holes,
form = list_allow_holes,
gender = list_allow_holes,
transliteration = list_allow_holes,
origin = list_allow_holes,
origin_transliteration = list_allow_holes,
-- I'm pretty sure this is actually required and must have args.num entries in it.
target = list_allow_holes,
}
local args = require("Module:parameters").process(frame.args, fparams, nil, "accel", "generate")
local lang = args.lang
-- Try to use a language-specific module, if one exists.
local module_lang, lang_module = lang
while module_lang do
lang_module = safe_require("Module:accel/" .. module_lang:getCode())
if lang_module ~= nil then
break
end
module_lang = module_lang:getParent()
end
local entries = {}
-- Generate each entry
local seen_origins = create_ordered_set()
local seen_targets = create_ordered_set()
local params_list = {}
for i = 1, args.num do
local params = {
lang = lang,
origin_pagename = args.origin_pagename,
target_pagename = args.target_pagename,
pos = args.pos[i] or error("The argument \"pos\" is missing for entry " .. i),
form = args.form[i] or error("The argument \"form\" is missing for entry " .. i),
gender = args.gender[i],
origin = args.origin[i] or error("The argument \"origin\" is missing for entry " .. i),
origin_transliteration = args.origin_transliteration[i],
target = args.target[i],
transliteration = args.transliteration[i],
num_entries = args.num,
}
params.form = params.form:gsub("|", "|")
params.targets = split_and_zip_term_and_tr(params.target, params.transliteration)
params.origins = split_and_zip_term_and_tr(params.origin, params.origin_transliteration)
for _, origin in ipairs(params.origins) do
add_item(seen_origins, paste_term_tr(origin), origin)
end
for _, target in ipairs(params.targets) do
add_item(seen_targets, paste_term_tr(target), target)
end
insert(params_list, params)
end
-- Generate entries.
for _, params in ipairs(params_list) do
-- Add overall stats to all params objects.
params.seen_origins = seen_origins
params.seen_targets = seen_targets
-- Make a default entry.
local entry = export.default_entry(params)
if lang_module then
lang_module.generate(params, entry)
end
-- Add it to the list.
insert(entries, entry)
end
local entries_obj = {
entries = entries,
lang = lang,
lang_module = lang_module,
seen_origins = seen_origins,
seen_targets = seen_targets,
}
-- Merge entries if possible.
merge_entries(entries_obj)
-- Now generate merged pronunciation and etymology, either using a custom generation function or by merging the
-- individually specified pronunciation and etymology lines.
generate_merged_pronunciation(entries_obj, lang_module)
generate_merged_etymology(entries_obj, lang_module)
return entries_to_text(entries_obj)
end
function export.generate_JSON(frame)
local success, entries = pcall(export.generate, frame)
-- If success is false, entries is an error message.
-- It appears we need to specify `messages` or nothing will be displayed.
local ret = { [success and "entries" or "error"] = entries, messages = require("Module:array")()}
return require("Module:JSON").toJSON(ret)
end
return export
cnkrigijhei7t4hbc83eerfxyahhgay
292872
292870
2026-09-19T04:05:41Z
Saimawnkham
9
292872
Scribunto
text/plain
local export = {}
local form_of_module = "Module:form of"
local form_of_data_module = "Module:form of/data"
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local append = m_table.append
local assert = assert
local concat = table.concat
local contains = m_table.contains
local deep_copy = m_table.deepCopy
local deep_equals = require("Module:table/deepEquals")
local extend = m_table.extend
local insert = table.insert
local insert_if_not = m_table.insertIfNot
local list_to_set = m_table.listToSet
local remove = table.remove
local split = m_str_utils.split
local safe_require = require("Module:load").safe_require
local size = m_table.size
local u = m_str_utils.char
local MARK_CONJOINED_SHORTCUT = u(0xFFF0)
local split_term_regex = "%*~!"
--[=[
The purpose of the acceleration code is to auto-generate pages for non-lemma forms (inflections) of a given lemma.
The way it works is approximately as follows:
1. When you have the accelerator gadget in [[MediaWiki:Gadget-AcceleratedFormCreation.js]] enabled, and you click on a
green link, the JavaScript code gathers all the green links on the page that have the same language and pagename as
the clicked-on green link and sends them to the generate_JSON() function in this module, which is a thin wrapper
around the generate() function. Each individual green link maps to an "entry" and has associated accelerator
properties that were specified by the `accel` object passed into full_link() in [[Module:links]]. Note that there can
-- be multiple entries passed to a single generate() call for various reasons, e.g.:
(1) Inside of a single inflection table there is syncretism, with two different inflections having the same form;
e.g. the same Latin form ''bonī'' occurs in three different inflections of the lemma [[bonus]]: the masculine
genitive singular, neuter genitive singular and masculine nominative plural. Hence there will be three entries.
(2) Inside of a single inflection table there are inflections that are spelled differently but map to the same
pagename due to diacritic removal; e.g. Latin ''bona'' (occurring in five different inflections: the feminine
nominative and vocative singular and the neuter nominative, accusative and vocative plural) and Latin ''bonā''
(the feminine ablative singular) will be merged together into a single call to generate() with six entries.
(3) There are two or more inflection tables, partly or completely duplicative. E.g. if a given lemma has
Etymology 1 and Etymology 2 sections, and the inflection of each separate etymology is the same and associated
with its own table, then clicking on any green link will result in (at least) two entries.
2. The generate() function is invoked like a template call, meaning all its arguments come as strings and need to be
parsed. It does the following steps:
(1) Parse its arguments.
(2) Convert each set of per-entry parameters into a `params` object.
(3) For each `params` object, generate a default entry, then, if there is a language-specific accelerator submodule,
call that module to customize the entry.
(4) Merge duplicate entries. This not only looks for completely duplicated entries but tries to merge entries that
differ only in the definition. In general, this will result in multiple definition lines under a single entry,
but definition lines that consist of calls to {{infl of}} will be further merged. For example, for the
example above with ''bona'' and ''bonā'', the five inflections of ''bona'' will be merged into a single entry
with a single call to {{infl of}} that looks something like this:
# {{infl of|la|bonus||nom//voc|f|s|;|nom//acc//voc|n|p}}
In other words, not only are the inflections combined into a single call to {{infl of}}, but inflections
with partly shared tags are further merged.
(5) Generate the Pronunciation and Etymology sections that go at the top, above all the entries. This is done either
by calling custom generate functions in the language-specific accelerator submodule, or (if those aren't given)
by merging the individual pronunciation and etymology lines, removing duplicates. Note that the default entry
generated in step (3) has no pronunciation or etymology (which are generated only by a language-specific
submodule), so by default there will be no Pronunciation or Etymology section.
(6) Assemble the parts of each entry into a string and paste all the strings together, along with any combined
Pronunciation and Etymology sections, to form the text of the entire per-language L2 section. Note that if you
have enabled the OrangeLinks gadget, accelerator entries can be created on already-existing pages, as long as
there's no L2 section for the language of the entries.
]=]
-- A simple implementation of an ordered set.
local function create_ordered_set()
return {
array = {},
set = {},
}
end
-- Add an item to the ordered set. `squashed_item` is a representation of the item as a string or number, so that we
-- can use it as the key in a set. `orig_item` is the original item and can be omitted if it's the same as
-- `squashed_item`.
local function add_item(ordered_set, squashed_item, orig_item)
if not ordered_set.set[squashed_item] then
insert(ordered_set.array, orig_item or squashed_item)
ordered_set.set[squashed_item] = true
end
end
-- Generate the default entry
function export.default_entry(params)
local function make_head(pos, default_gender)
local gender = params.gender or default_gender
local genderspec = ""
if gender then
local genders = split(gender, ",", true)
for i, g in ipairs(genders) do
if i == 1 then
genders[i] = "|g=" .. g
else
genders[i] = "|g" .. i .. "=" .. g
end
end
genderspec = concat(genders)
end
local parts = {}
insert(parts, "{{head|" .. params.lang:getCode() .. "|" .. pos)
for i, target in ipairs(params.targets) do
local paramnum = i == 1 and "" or tostring(i)
if target.term ~= params.target_pagename then
insert(parts, ("|head%s=%s"):format(paramnum, target.term))
end
if target.tr then
insert(parts, ("|tr%s=%s"):format(paramnum, target.tr))
end
end
insert(parts, genderspec .. "}}")
return concat(parts)
end
local function make_def(tempname, extra_params)
local parts = {}
insert(parts, "{{" .. tempname .. "|" .. params.lang:getCode())
for i, origin in ipairs(params.origins) do
local termparam, trparam
if i == 1 then
termparam = ""
trparam = "tr="
else
termparam = "term" .. i .. "="
trparam = "tr" .. i .. "="
end
insert(parts, ("|%s%s"):format(termparam, origin.term))
if origin.tr then
insert(parts, ("|%s%s"):format(trparam, origin.tr))
end
end
insert(parts, (extra_params or "") .. "}}")
return concat(parts)
end
local function no_rule_error(params)
-- FIXME, verify the 2 below (number of stack frames to pop off); may be wrong now that we moved this function
-- underneath default_entry().
return error(('No rule for "%s" in language "%s" ("%s").')
:format(params.form, params.lang:getCode(), params.lang:getCanonicalName()), 2)
end
local pos_form_map = {
["verb"] = "ပိူင်ၽၢင်သၢင်ႈ",
["noun"] = "ပိူင်ၽၢင်ႁိၵ်ႈ",
["adjective"] = "ပိူင်ၽၢင်ၵမ်ႉႁိၵ်ႈ",
["adverb"] = "ပိူင်ၽၢင်ၵမ်ႉသၢင်ႈ",
["proper noun"] = "ပိူင်ၽၢင်ႁိၵ်ႈသုၼ်ႇလဵဝ်",
}
local head_pos = pos_form_map[params.pos] or (params.pos .. " form")
local entry = {
etymology = nil,
pronunc = nil,
pos_header = mw.getContentLanguage():ucfirst(params.pos),
head = make_head(head_pos),
def = make_def("infl of", "||" .. params.form),
inflection = nil,
declension = nil,
conjugation = nil,
mutation = nil,
altforms = nil,
-- also pass in functions
make_head = make_head,
make_def = make_def,
no_rule_error = no_rule_error,
}
-- Exceptions for POS translations
local pos_headers = {
["verb"] = "သၢင်ႈ",
["noun"] = "ႁိၵ်ႈ",
["adjective"] = "ၵမ်ႉႁိၵ်ႈ",
["adverb"] = "ၵမ်ႉသၢင်ႈ",
["proper noun"] = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
["pronoun"] = "ႁိၵ်ႈတၢင်",
}
if pos_headers[params.pos] then
entry.pos_header = pos_headers[params.pos]
end
-- Exceptions for some forms
local templates = {
["p"] = "plural of",
["f"] = "feminine of",
["f|s"] = "feminine singular of",
["m|p"] = "masculine plural of",
["f|p"] = "feminine plural of",
["pejorative"] = "pejorative of",
}
if params.form == "comparative" or params.form == "superlative" or params.form == "equative" then
entry.head = make_head(params.form .. " " .. params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "adjective" and "|POS=" .. params.pos or "")
elseif params.form == "diminutive" or params.form == "augmentative" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "noun" and "|POS=" .. params.pos or "")
elseif params.form == "f" and params.pos == "noun" then
entry.head = make_head(params.pos, "f")
entry.def = make_def("female equivalent of")
elseif (params.form == "past|part" or params.form == "past|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("past participle")
elseif (params.form == "perf|part" or params.form == "perf|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("perfect participle")
elseif (params.form == "pres|part" or params.form == "pres|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("present participle")
elseif (params.form == "abstract noun" or params.form == "verbal noun") and params.pos == "noun" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of")
elseif templates[params.form] then
entry.def = make_def(templates[params.form])
end
return entry
end
-- Canonicalize multipart shortcuts (e.g. "123" -> "1//2//3") and non-conjoined list shortcuts (e.g. "1s" ->
-- {"1", "s"}); leave others alone, including conjoined shortcuts. The purpose of canonicalizing list shortcuts is so
-- that e.g. we can combine '1s|pres|ind' with '2|s|pres|ind'. However, conjoined shortcuts like "e-form" ->
-- {"pl", ";", "def", "s", "attr"} would require significantly more logic to handle correctly, and it's highly unlikely
-- we could find another similar enough tag to combine with (if it even makes sense to do so at all).
local function canonicalize_multipart_and_list_shortcuts(tags, lang)
local result = {}
for _, tag in ipairs(tags) do
local expansion = require(form_of_module).lookup_shortcut(tag, lang)
if type(expansion) == "string" and not expansion:find("//", nil, true) then
expansion = tag
end
if type(expansion) == "table" then
if contains(expansion, ";") then
insert(result, tag)
else
extend(result, expansion)
end
else
insert(result, expansion)
end
end
return result
end
-- Split a multipart tag into component tags, normalize each component, and return the resulting list. If
-- MAP_TO_CANONICAL_SHORTCUT is given, attempt to map each normalized component tag to its "canonical shortcut", i.e.
-- the first shortcut listed among its shortcuts.
--
-- If given a two-level multipart tag such as "1:sg//3:pl", the resulting return value will be {"first:singular",
-- "third:plural"}, or {"1:s", "3:p"} if MAP_TO_CANONICAL_SHORTCUT is given.
local function split_and_normalize_tag(tag, lang, map_to_canonical_shortcut)
local m_form_of = require(form_of_module)
local normalized = m_form_of.normalize_tag_set({tag}, lang)
if #normalized > 1 then
-- Tag is a conjoined shortcut. We leave these in their non-canonicalized form; see comment above
-- canonicalize_multipart_and_list_shortcuts(). But we mark them with a special character so we know that
-- they are non-normalized conjoined shortcuts, and later remove the mark.
return {tag .. MARK_CONJOINED_SHORTCUT}
end
normalized = normalized[1]
assert(#normalized == 1, "Internal error: Encountered list tag " .. tag .. ", which should have been canonicalized earlier")
local multipart = normalized[1]
if type(multipart) == "string" then
multipart = {multipart}
end
if map_to_canonical_shortcut then
local function get_canonical_shortcut(tag, lang)
local tagobj = m_form_of.lookup_tag(tag, lang)
local tag_shortcuts = tagobj and tagobj[require(form_of_data_module).SHORTCUTS]
if tag_shortcuts and type(tag_shortcuts) == "table" then
tag_shortcuts = tag_shortcuts[1]
end
return tag_shortcuts or tag
end
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
for j, single_tag in ipairs(mpart) do
mpart[j] = get_canonical_shortcut(single_tag, lang)
end
multipart[i] = concat(mpart, ":")
else
multipart[i] = get_canonical_shortcut(mpart, lang)
end
end
else
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
multipart[i] = concat(mpart, ":")
end
end
end
return multipart
end
-- Given a normalized tag, return its tag type, or "unknown" if a tag type
-- cannot be located (either the tag isn't recognized or for some reason
-- it doesn't specify a tag type).
local function get_normalized_tag_type(tag, lang)
-- Make sure to return 'unknown' for non-normalized conjoined shortcuts as well as URL's and parts of two-level
-- multipart tags (both of the latter two have colons in them). NOTE: In practice, the presence of the
-- MARK_CONJOINED_SHORTCUT means we won't find a normalized tag having the same name even if one would exist in the
-- absence of this mark, so this is more of an optimization.
if tag:find(MARK_CONJOINED_SHORTCUT) or tag:find(":") then
return "unknown"
end
local m_form_of = require(form_of_module)
local tagobj = m_form_of.lookup_tag(tag, lang)
return tagobj and tagobj[require(form_of_data_module).TAG_TYPE] or "unknown"
end
--[=[
Combine multiple semicolon-separated tag sets into multipart tags if possible. We combine tag sets that differ in
only one tag in a given dimension, and repeat this until no changes in case we can reduce along multiple dimensions,
e.g.
{{infl of|la|canus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
{{infl of|la|canus||dat//abl|m//f//n|p}}
`tag_sets` is a list of objects of the form {tags = {"TAG", "TAG", ...}, labels = {"LABEL", "LABEL", ...}}, i.e. of the
same format as `data.tag_sets` as passed to tagged_inflections() in [[Module:form of]]. Also accepted is an "old-style"
list of strings, one element per tag, with tag sets separated by a semicolon, the same as in {{infl of}}.
The return value is in the same format as was passed into `tag_sets`. If an old-style tag list was passed in, and
labels are present, they are attached to the last tag in a tag set using an inline modifier.
]=]
function export.combine_tag_sets_into_multipart(tag_sets, lang, POS)
if type(tag_sets) ~= "table" then
error("`tag_sets` should be a table but is a(n) `" .. type(tag_sets) .. "`")
end
if not tag_sets[1] then
error("Expected at least one item in `tag_sets`")
end
local old_style_tags = false
if type(tag_sets[1]) == "string" then
old_style_tags = true
end
-- First, as an optimization, make sure there are multiple tag sets. Otherwise, do nothing.
if old_style_tags then
local found_semicolon = false
for _, tag in ipairs(tag_sets) do
if tag == ";" then
found_semicolon = true
break
end
end
if not found_semicolon then
return tag_sets
end
elseif #tag_sets == 1 then
return tag_sets
end
local m_form_of = require(form_of_module)
-- If old-style tags (list of strings), convert to list of tag set objects.
if old_style_tags then
tag_sets = m_form_of.split_tag_set(tag_sets)
for i, tag_set in ipairs(tag_sets) do
tag_sets[i] = m_form_of.parse_tag_set_properties(tag_set)
end
else
-- Otherwise, make a copy as we may modify the list in-place.
tag_sets = deep_copy(tag_sets)
end
-- Repeat until no changes can be made.
while true do
-- First, determine the auto-generated label for each tag set and append to any user-specified labels.
-- Best to do this on the raw tag sets, before canonicalize_multipart_and_list_shortcuts(). Then canonicalize
-- 1s etc. into 1|s.
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = tag_set.labels and deep_copy(tag_set.labels) or {}
local normalized_tag_sets = m_form_of.normalize_tag_set(tag_set.tags, lang)
for _, normalized_tag_set in ipairs(normalized_tag_sets) do
local this_labels = select(2, m_form_of.fetch_categories_and_labels(normalized_tag_set, lang, POS))
extend(tag_set.labels_with_auto, this_labels)
end
tag_set.tags = canonicalize_multipart_and_list_shortcuts(tag_set.tags, lang)
end
local canonicalized_tag_sets = tag_sets
local old_canonicalized_tag_sets = canonicalized_tag_sets
-- Try combining in two different styles ("adjacent-first" = do two passes, where the first pass only combines
-- adjacent tag sets, while the second pass combines nonadjacent tag sets; "all-first" = do one pass combining
-- nonadjacent tag sets). Sometimes one is better, sometimes the other.
--
-- An example where adjacent-first is better:
--
-- {{infl of|la|medius||m|acc|s|;|n|nom|s|;|n|acc|s|;|n|voc|s}}
--
-- all-first results in
--
-- {{infl of|la|medius||m//n|acc|s|;|n|nom//voc|s}}
--
-- which isn't ideal.
--
-- If we do adjacent-first, we get
--
-- {{infl of|la|medius||m|acc|s|;|n|nom//acc//voc|s}}
--
-- which is much better.
--
-- The opposite happens in
--
-- {{infl of|grc|βουλόμενος||n|nom|s|;|m|acc|s|;|n|acc|s|;|n|voc|s}}
--
-- where all-first results in
--
-- {{infl of|grc|βουλόμενος||n|nom//acc//voc|s|;|m|acc|s}}
--
-- which is better than the result from adjacent-first, which is
--
-- {{infl of|grc|βουλόμενος||n|nom//voc|s|;|m//n|acc|s}}
--
-- To handle this conundrum, we try both, and look to see which one results in fewer "combinations" (where a
-- tag with // in it counts as a combination). If both are different but have the same # of combinations, we
-- prefer adjacent-first, we seems generally a better approach.
local tag_sets_by_style = {}
for _, combine_style in ipairs({"adjacent-first", "all-first"}) do
-- Now, we do two passes. The first pass only combines adjacent tag sets, while the second pass combines
-- nonadjacent tag sets. Copy canonicalized_tag_sets, since we destructively modify the list.
local this_tag_sets = deep_copy(canonicalized_tag_sets)
local combine_passes
if combine_style == "adjacent-first" then
combine_passes = {"adjacent", "all"}
else
combine_passes = {"all"}
end
for _, combine_pass in ipairs(combine_passes) do
local tag_ind = 1
while tag_ind <= #this_tag_sets do
local from, to
if combine_pass == "adjacent" then
if tag_ind == 1 then
from = 1
to = 0
else
from = tag_ind - 1
to = tag_ind - 1
end
else
from = 1
to = tag_ind - 1
end
local inner_broken = false
for prev_tag_ind = from, to do
local cur_tag_set = this_tag_sets[prev_tag_ind]
local tag_set = this_tag_sets[tag_ind]
if #cur_tag_set.tags == #tag_set.tags and
deep_equals(cur_tag_set.labels_with_auto, tag_set.labels_with_auto) then
local mismatch_ind = nil
local innermost_broken = false
for i = 1, #tag_set.tags do
local tag1 = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local tag2 = split_and_normalize_tag(tag_set.tags[i], lang)
if not deep_equals(list_to_set(tag1), list_to_set(tag2)) then
if mismatch_ind then
innermost_broken = true
break
end
local combined_dims = {}
for _, tag in ipairs(tag1) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
for _, tag in ipairs(tag2) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
if size(combined_dims) == 1 and not combined_dims["unknown"] then
mismatch_ind = i
else
innermost_broken = true
break
end
end
end
if not innermost_broken then
-- No break, we either match perfectly or are combinable
if not mismatch_ind then
-- Two identical tag sets
remove(this_tag_sets, tag_ind)
inner_broken = true
break
else
-- Combine tag sets at mismatch_ind, using the canonical shortcuts.
local tag1 = split_and_normalize_tag(cur_tag_set.tags[mismatch_ind], lang, true)
local tag2 = split_and_normalize_tag(tag_set.tags[mismatch_ind], lang, true)
-- Combine the normalized tags and remove the special MARK_CONJOINED_SHORTCUT mark
-- on conjoined shortcuts so we have normal tags again.
local combined_tag =
concat(append(tag1, tag2), "//"):gsub(MARK_CONJOINED_SHORTCUT, "")
local new_tag_set = {}
for i = 1, #cur_tag_set.tags do
if i == mismatch_ind then
insert(new_tag_set, combined_tag)
else
local cur_canon_tag = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local canon_tag = split_and_normalize_tag(tag_set.tags[i], lang)
assert(deep_equals(list_to_set(cur_canon_tag), list_to_set(canon_tag)))
insert(new_tag_set, cur_tag_set.tags[i])
end
end
this_tag_sets[prev_tag_ind].tags = new_tag_set
remove(this_tag_sets, tag_ind)
inner_broken = true
break
end
end
end
end
if not inner_broken then
-- No break from inner for-loop. Break from that loop indicates that we found that the current
-- tag set can be combined with a preceding tag set, did the combination and deleted the
-- current tag set. The next iteration then processes the same numbered tag set again (which is
-- actually the following tag set, because we deleted the tag set before it). No break
-- indicates that we couldn't combine the current tag set with any preceding tag set, and need
-- to advance to the next one.
tag_ind = tag_ind + 1
end
end
end
tag_sets_by_style[combine_style] = this_tag_sets
end
if not deep_equals(tag_sets_by_style["adjacent-first"], tag_sets_by_style["all-first"]) then
local function num_combinations(group)
local num_combos = 0
for _, tag_set in ipairs(group) do
for _, tag in ipairs(tag_set.tags) do
if tag:find("//") then
num_combos = num_combos + 1
end
end
end
return num_combos
end
local num_adjacent_first_combos = num_combinations(tag_sets_by_style["adjacent-first"])
local num_all_first_combos = num_combinations(tag_sets_by_style["all-first"])
if num_adjacent_first_combos < num_all_first_combos then
tag_sets = tag_sets_by_style["adjacent-first"]
elseif num_all_first_combos < num_adjacent_first_combos then
tag_sets = tag_sets_by_style["all-first"]
else
tag_sets = tag_sets_by_style["adjacent-first"]
end
else
-- Both are the same, pick either one
tag_sets = tag_sets_by_style["adjacent-first"]
end
if deep_equals(tag_sets, old_canonicalized_tag_sets) then
break
end
-- FIXME, we should consider reversing the transformation 1s -> 1|s,
-- but it's complicated to figure out when the transformation occurred;
-- not really important as both are equivalent
end
if old_style_tags then
local retval = {}
for _, tag_set in ipairs(tag_sets) do
if tag_set.labels and #tag_set.labels > 0 then
tag_set.tags[#tag_set.tags] =
tag_set.tags[#tag_set.tags] .. "<lb:" .. concat(tag_set.labels, ",") .. ">"
end
if #retval > 0 then
insert(retval, ";")
end
extend(retval, tag_set.tags)
end
return retval
else
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = nil
end
return tag_sets
end
end
-- Test function, callable externally.
function export.test_combine_tag_sets_into_multipart(frame)
local iparams = {
[1] = {list = true, required = true},
lang = {required = true},
}
local args = require("Module:parameters").process(frame.args, iparams)
local lang = require("Module:languages").getByCode(args.lang, true)
local combined_tags = export.combine_tag_sets_into_multipart(args[1], lang)
return concat(combined_tags, "|")
end
local function can_merge(entry, candidate)
for _, key in ipairs{"pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"} do
if not deep_equals(entry[key], candidate[key]) then
return false
end
end
return true
end
-- Check whether `entry` (an object describing a given non-lemma form, with properties such as `pronunc` for
-- pronunciation, `def` for definition, etc.) can be merged with any of the existing entries listed in `candidates`.
-- "Can be merged" means that all relevant properties (basically, everything but the definition) can are the same.
-- Return the first such candidate found, or nil if no candidates match `entry`.
local function find_mergeable(entry, candidates)
for _, candidate in ipairs(candidates) do
if can_merge(entry, candidate) then
return candidate
end
end
return nil
end
-- Merge multiple entries into one if they differ only in the definition, with all other
-- properties the same. The combined entry has multiple definition lines. We then do
-- further frobbing of {{infl of}} lines:
--
-- 1. Convert lang= param to param 1 (there shouldn't be any remaining cases of accelerator
-- modules generating {{infl of}} templates with lang=, but we do this just in case).
-- 2. Combine adjacent {{infl of}} lines that differ only in the tags, e.g.:
--
-- # {{infl of|la|bonus||nom|m|s}}
-- # {{infl of|la|bonus||nom|n|s}}
-- # {{infl of|la|bonus||acc|n|s}}
-- # {{infl of|la|bonus||voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- 3. Further group {{infl of}} lines with multiple tag sets (as may be generated b y
-- the previous step) using multipart tags, e.g. for the Latin entry ''bonum'',
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom//acc//voc|n|s}}
--
-- This grouping can group across multiple dimensions, e.g. for the Latin entry ''bonīs'',
--
-- # {{infl of|la|bonus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
--
-- becomes
--
-- # {{infl of|la|bonus||dat//abl|m//f//n|p}}
--
-- Another complex real-world example, for the Old English weak adjective form ''dēorenan'':
--
-- # {{infl of|ang|dēoren||wk|acc|m|sg|;|wk|acc|f|sg|;|wk|gen|m|sg|;|wk|gen|f|sg|;|wk|gen|n|sg|;|wk|dat|m|sg|;|wk|dat|f|sg|;|wk|dat|n|sg|;|wk|ins|m|sg|;|wk|ins|f|sg|;|wk|ins|n|sg|;|wk|nom|m|pl|;|wk|nom|f|pl|;|wk|nom|n|pl|;|wk|acc|m|pl|;|wk|acc|f|pl|;|wk|acc|n|pl}}
--
-- becomes
--
-- # {{infl of|ang|dēoren||wk|acc|m//f|sg|;|wk|gen//dat//ins|m//f//n|sg|;|wk|nom//acc|m//f//n|pl}}
--
-- Here, 17 separate tag sets are combined down into 3.
local function merge_entries(entries_obj)
local entries_new = {}
-- First, if overrides are supplied, try to eliminate entries with duplicate overrides.
local saw_override = false
for _, entry in ipairs(entries_obj.entries) do
if entry.override then
saw_override = true
break
end
end
if saw_override then
for _, entry in ipairs(entries_obj.entries) do
-- If some entries have an override and some don't, only deduplicate the ones with an override and
-- include all the ones without an override. FIXME: Deduplicate the non-overridden ones using the
-- algorithm below, and provide a custom function for deduplicating overrides.
if not entry.override then
insert(entries_new, entry)
else
insert_if_not(entries_new, entry, {
key = function(entry) return entry.override end,
})
end
end
entries_obj.entries = entries_new
return
end
-- First rewrite {{infl of|...|lang=LANG}} to {{infl of|LANG|...}}
for _, entry in ipairs(entries_obj.entries) do
local params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not params then
params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if params then
params = split(params, "|", true)
local new_params = {}
for _, param in ipairs(params) do
local lang = param:match("^lang=(.*)$")
if lang then
insert(new_params, 1, lang)
else
insert(new_params, param)
end
end
entry.def = "{{infl of|" .. concat(new_params, "|") .. "}}"
end
end
-- Merge entries that match in all of the following properties:
-- "pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"
-- This will merge any two mergeable entries even if non-consecutive.
-- The definitions of the merged entries do not have to match, but any matching
-- definitions will be deduped.
for _, entry in ipairs(entries_obj.entries) do
-- See if this entry can be merged with any previous entry.
local merge_entry = find_mergeable(entry, entries_new)
if merge_entry then
local duplicate_def = false
-- If we can merge, check whether the definition of the new entry is
-- the same as any previous definitions.
for _, def in ipairs(merge_entry.defs) do
if def == entry.def then
duplicate_def = true
break
end
end
if not duplicate_def then
insert(merge_entry.defs, entry.def)
end
else
entry.defs = {entry.def}
insert(entries_new, entry)
end
end
-- FIXME: Use the template parser for this.
-- Combine the definitions for each entries, merging all {{infl of}} calls
-- into one such call with multiple tag sets.
for _, entry in ipairs(entries_new) do
local existing_defs = {}
for _, new_def in ipairs(entry.defs) do
local did_merge = false
local new_params = new_def:match("^{{infl of|([^{}]+)}}$")
if not new_params then
new_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if new_params then
-- The new definition is {{infl of}}. See if there is an
-- {{infl of}} among the definitions seen so far.
for i, existing_def in ipairs(existing_defs) do
local existing_params = existing_def:match("^{{infl of|([^{}]+)}}$")
if not existing_params then
existing_params = existing_def:match("^{{inflection of|([^{}]+)}}$")
end
if existing_params then
-- Merge the existing and new {{infl of}} calls.
-- Find the last unnamed parameter of the first template.
existing_params = split(existing_params, "|", true)
local last_numbered_index
for j, param in ipairs(existing_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Add grammar tags of the second template
new_params = split(new_params, "|", true)
local tags = {}
local n = 0
for _, param in ipairs(new_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters,
-- which don't indicate grammar tags
if n >= 4 then
-- Now append the tags
insert(tags, param)
end
end
end
-- Add the new parameters after the existing ones
existing_params[last_numbered_index] = existing_params[last_numbered_index] .. "|;|" .. concat(tags, "|")
existing_defs[i] = "{{infl of|" .. concat(existing_params, "|") .. "}}"
did_merge = true
break
end
end
end
if not did_merge then
insert(existing_defs, new_def)
end
end
entry.def = concat(existing_defs, "\n# ")
end
-- Now combine tag sets inside a multiple-tag-set {{infl of}} call
for _, entry in ipairs(entries_new) do
local infl_of_params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not infl_of_params then
infl_of_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if infl_of_params then
infl_of_params = split(infl_of_params, "|", true)
-- Find the last unnamed parameter
local last_numbered_index
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Split the params in three:
-- (1) Params before the inflection tags, and any named params mixed in with the tags
-- (2) The tags themselves
-- (3) Named params after the tags
local pre_tag_params = {}
local tags = {}
local post_tag_params = {}
local n = 0
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters, which don't indicate grammar tags
if n >= 4 then
insert(tags, param)
else
insert(pre_tag_params, param)
end
elseif n >= last_numbered_index then
insert(post_tag_params, param)
else
insert(pre_tag_params, param)
end
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Now combine tag sets.
tags = export.combine_tag_sets_into_multipart(tags, entries_obj.lang)
-- Put the template back together.
local combined_params = {}
for _, v in ipairs(pre_tag_params) do table.insert(combined_params, v) end
for _, v in ipairs(tags) do table.insert(combined_params, v) end
for _, v in ipairs(post_tag_params) do table.insert(combined_params, v) end
entry.def = "{{infl of|" .. table.concat(combined_params, "|") .. "}}"
end
end
entries_obj.entries = entries_new
end
local function merge_field(entries, field)
local seen_fields = create_ordered_set()
for _, entry in ipairs(entries) do
local fieldval = entry[field]
if fieldval then
if type(fieldval) == "table" then
-- already a table
else
fieldval = split(fieldval, "\n", true)
end
for _, val in ipairs(fieldval) do
if val ~= "" then -- skip newlines, including if there's a final newline when split
add_item(seen_fields, val)
end
end
end
end
return seen_fields.array
end
local function default_merge_pronunciation(entries_obj)
local pronuncs = merge_field(entries_obj.entries, "pronunc")
if #pronuncs > 0 then
return concat(pronuncs, "\n")
else
return nil
end
end
local function generate_merged_pronunciation(entries_obj, lang_module)
entries_obj.pronunciation = (lang_module and lang_module.generate_pronunciation or default_merge_pronunciation)(entries_obj)
end
local function default_merge_etymology(entries_obj)
local etyms = merge_field(entries_obj.entries, "etymology")
if #etyms > 1 then
-- Hack! If multiple etymology entries, put a * before each one so they don't run together.
-- In such a case we may be better off using a custom merge function.
for i, item in ipairs(etyms) do
etyms[i] = "* " .. item
end
end
if #etyms > 0 then
return concat(etyms, "\n")
else
return nil
end
end
local function generate_merged_etymology(entries_obj, lang_module)
entries_obj.etymology = (lang_module and lang_module.generate_etymology or default_merge_etymology)(entries_obj)
end
local function entries_to_text(entries_obj)
for i, entry in ipairs(entries_obj.entries) do
if entry.override then
entry = "\n" ..(entry.override or "")
else
entry =
"\n\n" ..
"===" .. entry.pos_header .. "===\n" ..
entry.head .. "\n\n" ..
"# " .. entry.def ..
(entry.inflection and "\n\n====Inflection====\n" .. entry.inflection or "") ..
(entry.declension and "\n\n====Declension====\n" .. entry.declension or "") ..
(entry.conjugation and "\n\n====Conjugation====\n" .. entry.conjugation or "") ..
(entry.altforms and "\n\n====Alternative forms====\n" .. entry.altforms or "") ..
-- FIXME, if there are multiple entries, there should either be only one merged L3 Mutation or several
-- L4 Mutation sections. Not yet implemented.
(entry.mutation and "\n\n===Mutation===\n" .. entry.mutation or "")
end
entries_obj.entries[i] = entry
end
return "==" .. entries_obj.lang:getCanonicalName() .. "==" ..
(entries_obj.etymology and "\n\n===Etymology===\n" .. entries_obj.etymology or "") ..
(entries_obj.pronunciation and "\n\n===Pronunciation===\n" .. entries_obj.pronunciation or "") ..
concat(entries_obj.entries)
end
local function split_and_zip_term_and_tr(encoded_term, encoded_tr)
local terms = split(encoded_term, split_term_regex)
local trs = encoded_tr and split(encoded_tr, split_term_regex) or {}
if #trs > #terms then
error(("Saw %s translits, which is > the %s terms seen: encoded_term=%s, encoded_tr=%s"):
format(#trs, #terms, encoded_term, encoded_tr))
end
local result = {}
for i, term in ipairs(terms) do
local tr = trs[i]
if tr == "" then
tr = nil
end
insert(result, {term = term, tr = tr})
end
return result
end
local function paste_term_tr(termobj)
if termobj.tr then
return termobj.term .. "//" .. termobj.tr
else
return termobj.term
end
end
function export.generate(frame)
local required = {required = true}
local list_allow_holes = {list = true, allow_holes = true}
local fparams = {
lang = {required = true, type = "language"},
origin_pagename = required,
target_pagename = required,
num = {required = true, type = "number"},
pos = list_allow_holes,
form = list_allow_holes,
gender = list_allow_holes,
transliteration = list_allow_holes,
origin = list_allow_holes,
origin_transliteration = list_allow_holes,
-- I'm pretty sure this is actually required and must have args.num entries in it.
target = list_allow_holes,
}
local args = require("Module:parameters").process(frame.args, fparams, nil, "accel", "generate")
local lang = args.lang
-- Try to use a language-specific module, if one exists.
local module_lang, lang_module = lang
while module_lang do
lang_module = safe_require("Module:accel/" .. module_lang:getCode())
if lang_module ~= nil then
break
end
module_lang = module_lang:getParent()
end
local entries = {}
-- Generate each entry
local seen_origins = create_ordered_set()
local seen_targets = create_ordered_set()
local params_list = {}
for i = 1, args.num do
local params = {
lang = lang,
origin_pagename = args.origin_pagename,
target_pagename = args.target_pagename,
pos = args.pos[i] or error("The argument \"pos\" is missing for entry " .. i),
form = args.form[i] or error("The argument \"form\" is missing for entry " .. i),
gender = args.gender[i],
origin = args.origin[i] or error("The argument \"origin\" is missing for entry " .. i),
origin_transliteration = args.origin_transliteration[i],
target = args.target[i],
transliteration = args.transliteration[i],
num_entries = args.num,
}
params.form = params.form:gsub("|", "|")
params.targets = split_and_zip_term_and_tr(params.target, params.transliteration)
params.origins = split_and_zip_term_and_tr(params.origin, params.origin_transliteration)
for _, origin in ipairs(params.origins) do
add_item(seen_origins, paste_term_tr(origin), origin)
end
for _, target in ipairs(params.targets) do
add_item(seen_targets, paste_term_tr(target), target)
end
insert(params_list, params)
end
-- Generate entries.
for _, params in ipairs(params_list) do
-- Add overall stats to all params objects.
params.seen_origins = seen_origins
params.seen_targets = seen_targets
-- Make a default entry.
local entry = export.default_entry(params)
if lang_module then
lang_module.generate(params, entry)
end
-- Add it to the list.
insert(entries, entry)
end
local entries_obj = {
entries = entries,
lang = lang,
lang_module = lang_module,
seen_origins = seen_origins,
seen_targets = seen_targets,
}
-- Merge entries if possible.
merge_entries(entries_obj)
-- Now generate merged pronunciation and etymology, either using a custom generation function or by merging the
-- individually specified pronunciation and etymology lines.
generate_merged_pronunciation(entries_obj, lang_module)
generate_merged_etymology(entries_obj, lang_module)
return entries_to_text(entries_obj)
end
function export.generate_JSON(frame)
local success, entries = pcall(export.generate, frame)
-- If success is false, entries is an error message.
-- It appears we need to specify `messages` or nothing will be displayed.
local ret = { [success and "entries" or "error"] = entries, messages = require("Module:array")()}
return require("Module:JSON").toJSON(ret)
end
return export
7m8eay64418axoypltjweqfmulzsvy8
292873
292872
2026-09-19T04:09:49Z
Saimawnkham
9
292873
Scribunto
text/plain
local export = {}
local form_of_module = "Module:form of"
local form_of_data_module = "Module:form of/data"
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local append = m_table.append
local assert = assert
local concat = table.concat
local contains = m_table.contains
local deep_copy = m_table.deepCopy
local deep_equals = require("Module:table/deepEquals")
local extend = m_table.extend
local insert = table.insert
local insert_if_not = m_table.insertIfNot
local list_to_set = m_table.listToSet
local remove = table.remove
local split = m_str_utils.split
local safe_require = require("Module:load").safe_require
local size = m_table.size
local u = m_str_utils.char
local MARK_CONJOINED_SHORTCUT = u(0xFFF0)
local split_term_regex = "%*~!"
--[=[
The purpose of the acceleration code is to auto-generate pages for non-lemma forms (inflections) of a given lemma.
The way it works is approximately as follows:
1. When you have the accelerator gadget in [[MediaWiki:Gadget-AcceleratedFormCreation.js]] enabled, and you click on a
green link, the JavaScript code gathers all the green links on the page that have the same language and pagename as
the clicked-on green link and sends them to the generate_JSON() function in this module, which is a thin wrapper
around the generate() function. Each individual green link maps to an "entry" and has associated accelerator
properties that were specified by the `accel` object passed into full_link() in [[Module:links]]. Note that there can
-- be multiple entries passed to a single generate() call for various reasons, e.g.:
(1) Inside of a single inflection table there is syncretism, with two different inflections having the same form;
e.g. the same Latin form ''bonī'' occurs in three different inflections of the lemma [[bonus]]: the masculine
genitive singular, neuter genitive singular and masculine nominative plural. Hence there will be three entries.
(2) Inside of a single inflection table there are inflections that are spelled differently but map to the same
pagename due to diacritic removal; e.g. Latin ''bona'' (occurring in five different inflections: the feminine
nominative and vocative singular and the neuter nominative, accusative and vocative plural) and Latin ''bonā''
(the feminine ablative singular) will be merged together into a single call to generate() with six entries.
(3) There are two or more inflection tables, partly or completely duplicative. E.g. if a given lemma has
Etymology 1 and Etymology 2 sections, and the inflection of each separate etymology is the same and associated
with its own table, then clicking on any green link will result in (at least) two entries.
2. The generate() function is invoked like a template call, meaning all its arguments come as strings and need to be
parsed. It does the following steps:
(1) Parse its arguments.
(2) Convert each set of per-entry parameters into a `params` object.
(3) For each `params` object, generate a default entry, then, if there is a language-specific accelerator submodule,
call that module to customize the entry.
(4) Merge duplicate entries. This not only looks for completely duplicated entries but tries to merge entries that
differ only in the definition. In general, this will result in multiple definition lines under a single entry,
but definition lines that consist of calls to {{infl of}} will be further merged. For example, for the
example above with ''bona'' and ''bonā'', the five inflections of ''bona'' will be merged into a single entry
with a single call to {{infl of}} that looks something like this:
# {{infl of|la|bonus||nom//voc|f|s|;|nom//acc//voc|n|p}}
In other words, not only are the inflections combined into a single call to {{infl of}}, but inflections
with partly shared tags are further merged.
(5) Generate the Pronunciation and Etymology sections that go at the top, above all the entries. This is done either
by calling custom generate functions in the language-specific accelerator submodule, or (if those aren't given)
by merging the individual pronunciation and etymology lines, removing duplicates. Note that the default entry
generated in step (3) has no pronunciation or etymology (which are generated only by a language-specific
submodule), so by default there will be no Pronunciation or Etymology section.
(6) Assemble the parts of each entry into a string and paste all the strings together, along with any combined
Pronunciation and Etymology sections, to form the text of the entire per-language L2 section. Note that if you
have enabled the OrangeLinks gadget, accelerator entries can be created on already-existing pages, as long as
there's no L2 section for the language of the entries.
]=]
-- A simple implementation of an ordered set.
local function create_ordered_set()
return {
array = {},
set = {},
}
end
-- Add an item to the ordered set. `squashed_item` is a representation of the item as a string or number, so that we
-- can use it as the key in a set. `orig_item` is the original item and can be omitted if it's the same as
-- `squashed_item`.
local function add_item(ordered_set, squashed_item, orig_item)
if not ordered_set.set[squashed_item] then
insert(ordered_set.array, orig_item or squashed_item)
ordered_set.set[squashed_item] = true
end
end
-- Generate the default entry
-- Generate the default entry
function export.default_entry(params)
local function make_head(pos, default_gender)
local gender = params.gender or default_gender
local genderspec = ""
if gender then
local genders = split(gender, ",", true)
for i, g in ipairs(genders) do
if i == 1 then
genders[i] = "|g=" .. g
else
genders[i] = "|g" .. i .. "=" .. g
end
end
genderspec = concat(genders)
end
local parts = {}
insert(parts, "{{head|" .. params.lang:getCode() .. "|" .. pos)
for i, target in ipairs(params.targets) do
local paramnum = i == 1 and "" or tostring(i)
if target.term ~= params.target_pagename then
insert(parts, ("|head%s=%s"):format(paramnum, target.term))
end
if target.tr then
insert(parts, ("|tr%s=%s"):format(paramnum, target.tr))
end
end
insert(parts, genderspec .. "}}")
return concat(parts)
end
local function make_def(tempname, extra_params)
local parts = {}
insert(parts, "{{" .. tempname .. "|" .. params.lang:getCode())
for i, origin in ipairs(params.origins) do
local termparam, trparam
if i == 1 then
termparam = ""
trparam = "tr="
else
termparam = "term" .. i .. "="
trparam = "tr" .. i .. "="
end
insert(parts, ("|%s%s"):format(termparam, origin.term))
if origin.tr then
insert(parts, ("|%s%s"):format(trparam, origin.tr))
end
end
insert(parts, (extra_params or "") .. "}}")
return concat(parts)
end
local function no_rule_error(params)
return error(('No rule for "%s" in language "%s" ("%s").')
:format(params.form, params.lang:getCode(), params.lang:getCanonicalName()), 2)
end
local pos_form_map = {
["verb"] = "ပိူင်ၽၢင်သၢင်ႈ",
["noun"] = "ပိူင်ၽၢင်ႁိၵ်ႈ",
["adjective"] = "ပိူင်ၽၢင်ၵမ်ႉႁိၵ်ႈ",
["adverb"] = "ပိူင်ၽၢင်ၵမ်ႉသၢင်ႈ",
["proper noun"] = "ပိူင်ၽၢင်ႁိၵ်ႈသုၼ်ႇလဵဝ်",
}
local head_pos = pos_form_map[params.pos] or (params.pos .. " form")
local entry = {
etymology = nil,
pronunc = nil,
pos_header = mw.getContentLanguage():ucfirst(params.pos),
head = make_head(head_pos),
def = make_def("infl of", "||" .. params.form),
inflection = nil,
declension = nil,
conjugation = nil,
mutation = nil,
altforms = nil,
-- also pass in functions
make_head = make_head,
make_def = make_def,
no_rule_error = no_rule_error,
}
-- Exceptions for some forms
local templates = {
["p"] = "plural of",
["f"] = "feminine of",
["f|s"] = "feminine singular of",
["m|p"] = "masculine plural of",
["f|p"] = "feminine plural of",
["pejorative"] = "pejorative of",
}
if params.form == "comparative" or params.form == "superlative" or params.form == "equative" then
entry.head = make_head(params.form .. " " .. params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "adjective" and "|POS=" .. params.pos or "")
elseif params.form == "diminutive" or params.form == "augmentative" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of", params.pos ~= "noun" and "|POS=" .. params.pos or "")
elseif params.form == "f" and params.pos == "noun" then
entry.head = make_head(params.pos, "f")
entry.def = make_def("female equivalent of")
elseif (params.form == "past|part" or params.form == "past|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("past participle")
elseif (params.form == "perf|part" or params.form == "perf|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("perfect participle")
elseif (params.form == "pres|part" or params.form == "pres|ptcp") and params.pos == "verb" then
entry.pos_header = "Participle"
entry.head = make_head("present participle")
elseif (params.form == "abstract noun" or params.form == "verbal noun") and params.pos == "noun" then
entry.head = make_head(params.pos)
entry.def = make_def(params.form .. " of")
elseif templates[params.form] then
entry.def = make_def(templates[params.form])
end
-- Global POS translations for header ===...=== (ဝႆႉ တီႈၼႆႈ တႃႇ Override)
local pos_headers = {
["verb"] = "သၢင်ႈ",
["noun"] = "ႁိၵ်ႈ",
["adjective"] = "ၵမ်ႉႁိၵ်ႈ",
["adverb"] = "ၵမ်ႉသၢင်ႈ",
["proper noun"] = "ႁိၵ်ႈသုၼ်ႇလဵဝ်",
["pronoun"] = "ႁိၵ်ႈတၢင်",
}
if pos_headers[params.pos] then
entry.pos_header = pos_headers[params.pos]
end
return entry
end
-- Canonicalize multipart shortcuts (e.g. "123" -> "1//2//3") and non-conjoined list shortcuts (e.g. "1s" ->
-- {"1", "s"}); leave others alone, including conjoined shortcuts. The purpose of canonicalizing list shortcuts is so
-- that e.g. we can combine '1s|pres|ind' with '2|s|pres|ind'. However, conjoined shortcuts like "e-form" ->
-- {"pl", ";", "def", "s", "attr"} would require significantly more logic to handle correctly, and it's highly unlikely
-- we could find another similar enough tag to combine with (if it even makes sense to do so at all).
local function canonicalize_multipart_and_list_shortcuts(tags, lang)
local result = {}
for _, tag in ipairs(tags) do
local expansion = require(form_of_module).lookup_shortcut(tag, lang)
if type(expansion) == "string" and not expansion:find("//", nil, true) then
expansion = tag
end
if type(expansion) == "table" then
if contains(expansion, ";") then
insert(result, tag)
else
extend(result, expansion)
end
else
insert(result, expansion)
end
end
return result
end
-- Split a multipart tag into component tags, normalize each component, and return the resulting list. If
-- MAP_TO_CANONICAL_SHORTCUT is given, attempt to map each normalized component tag to its "canonical shortcut", i.e.
-- the first shortcut listed among its shortcuts.
--
-- If given a two-level multipart tag such as "1:sg//3:pl", the resulting return value will be {"first:singular",
-- "third:plural"}, or {"1:s", "3:p"} if MAP_TO_CANONICAL_SHORTCUT is given.
local function split_and_normalize_tag(tag, lang, map_to_canonical_shortcut)
local m_form_of = require(form_of_module)
local normalized = m_form_of.normalize_tag_set({tag}, lang)
if #normalized > 1 then
-- Tag is a conjoined shortcut. We leave these in their non-canonicalized form; see comment above
-- canonicalize_multipart_and_list_shortcuts(). But we mark them with a special character so we know that
-- they are non-normalized conjoined shortcuts, and later remove the mark.
return {tag .. MARK_CONJOINED_SHORTCUT}
end
normalized = normalized[1]
assert(#normalized == 1, "Internal error: Encountered list tag " .. tag .. ", which should have been canonicalized earlier")
local multipart = normalized[1]
if type(multipart) == "string" then
multipart = {multipart}
end
if map_to_canonical_shortcut then
local function get_canonical_shortcut(tag, lang)
local tagobj = m_form_of.lookup_tag(tag, lang)
local tag_shortcuts = tagobj and tagobj[require(form_of_data_module).SHORTCUTS]
if tag_shortcuts and type(tag_shortcuts) == "table" then
tag_shortcuts = tag_shortcuts[1]
end
return tag_shortcuts or tag
end
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
for j, single_tag in ipairs(mpart) do
mpart[j] = get_canonical_shortcut(single_tag, lang)
end
multipart[i] = concat(mpart, ":")
else
multipart[i] = get_canonical_shortcut(mpart, lang)
end
end
else
for i, mpart in ipairs(multipart) do
if type(mpart) == "table" then
-- two-level multipart
multipart[i] = concat(mpart, ":")
end
end
end
return multipart
end
-- Given a normalized tag, return its tag type, or "unknown" if a tag type
-- cannot be located (either the tag isn't recognized or for some reason
-- it doesn't specify a tag type).
local function get_normalized_tag_type(tag, lang)
-- Make sure to return 'unknown' for non-normalized conjoined shortcuts as well as URL's and parts of two-level
-- multipart tags (both of the latter two have colons in them). NOTE: In practice, the presence of the
-- MARK_CONJOINED_SHORTCUT means we won't find a normalized tag having the same name even if one would exist in the
-- absence of this mark, so this is more of an optimization.
if tag:find(MARK_CONJOINED_SHORTCUT) or tag:find(":") then
return "unknown"
end
local m_form_of = require(form_of_module)
local tagobj = m_form_of.lookup_tag(tag, lang)
return tagobj and tagobj[require(form_of_data_module).TAG_TYPE] or "unknown"
end
--[=[
Combine multiple semicolon-separated tag sets into multipart tags if possible. We combine tag sets that differ in
only one tag in a given dimension, and repeat this until no changes in case we can reduce along multiple dimensions,
e.g.
{{infl of|la|canus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
{{infl of|la|canus||dat//abl|m//f//n|p}}
`tag_sets` is a list of objects of the form {tags = {"TAG", "TAG", ...}, labels = {"LABEL", "LABEL", ...}}, i.e. of the
same format as `data.tag_sets` as passed to tagged_inflections() in [[Module:form of]]. Also accepted is an "old-style"
list of strings, one element per tag, with tag sets separated by a semicolon, the same as in {{infl of}}.
The return value is in the same format as was passed into `tag_sets`. If an old-style tag list was passed in, and
labels are present, they are attached to the last tag in a tag set using an inline modifier.
]=]
function export.combine_tag_sets_into_multipart(tag_sets, lang, POS)
if type(tag_sets) ~= "table" then
error("`tag_sets` should be a table but is a(n) `" .. type(tag_sets) .. "`")
end
if not tag_sets[1] then
error("Expected at least one item in `tag_sets`")
end
local old_style_tags = false
if type(tag_sets[1]) == "string" then
old_style_tags = true
end
-- First, as an optimization, make sure there are multiple tag sets. Otherwise, do nothing.
if old_style_tags then
local found_semicolon = false
for _, tag in ipairs(tag_sets) do
if tag == ";" then
found_semicolon = true
break
end
end
if not found_semicolon then
return tag_sets
end
elseif #tag_sets == 1 then
return tag_sets
end
local m_form_of = require(form_of_module)
-- If old-style tags (list of strings), convert to list of tag set objects.
if old_style_tags then
tag_sets = m_form_of.split_tag_set(tag_sets)
for i, tag_set in ipairs(tag_sets) do
tag_sets[i] = m_form_of.parse_tag_set_properties(tag_set)
end
else
-- Otherwise, make a copy as we may modify the list in-place.
tag_sets = deep_copy(tag_sets)
end
-- Repeat until no changes can be made.
while true do
-- First, determine the auto-generated label for each tag set and append to any user-specified labels.
-- Best to do this on the raw tag sets, before canonicalize_multipart_and_list_shortcuts(). Then canonicalize
-- 1s etc. into 1|s.
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = tag_set.labels and deep_copy(tag_set.labels) or {}
local normalized_tag_sets = m_form_of.normalize_tag_set(tag_set.tags, lang)
for _, normalized_tag_set in ipairs(normalized_tag_sets) do
local this_labels = select(2, m_form_of.fetch_categories_and_labels(normalized_tag_set, lang, POS))
extend(tag_set.labels_with_auto, this_labels)
end
tag_set.tags = canonicalize_multipart_and_list_shortcuts(tag_set.tags, lang)
end
local canonicalized_tag_sets = tag_sets
local old_canonicalized_tag_sets = canonicalized_tag_sets
-- Try combining in two different styles ("adjacent-first" = do two passes, where the first pass only combines
-- adjacent tag sets, while the second pass combines nonadjacent tag sets; "all-first" = do one pass combining
-- nonadjacent tag sets). Sometimes one is better, sometimes the other.
--
-- An example where adjacent-first is better:
--
-- {{infl of|la|medius||m|acc|s|;|n|nom|s|;|n|acc|s|;|n|voc|s}}
--
-- all-first results in
--
-- {{infl of|la|medius||m//n|acc|s|;|n|nom//voc|s}}
--
-- which isn't ideal.
--
-- If we do adjacent-first, we get
--
-- {{infl of|la|medius||m|acc|s|;|n|nom//acc//voc|s}}
--
-- which is much better.
--
-- The opposite happens in
--
-- {{infl of|grc|βουλόμενος||n|nom|s|;|m|acc|s|;|n|acc|s|;|n|voc|s}}
--
-- where all-first results in
--
-- {{infl of|grc|βουλόμενος||n|nom//acc//voc|s|;|m|acc|s}}
--
-- which is better than the result from adjacent-first, which is
--
-- {{infl of|grc|βουλόμενος||n|nom//voc|s|;|m//n|acc|s}}
--
-- To handle this conundrum, we try both, and look to see which one results in fewer "combinations" (where a
-- tag with // in it counts as a combination). If both are different but have the same # of combinations, we
-- prefer adjacent-first, we seems generally a better approach.
local tag_sets_by_style = {}
for _, combine_style in ipairs({"adjacent-first", "all-first"}) do
-- Now, we do two passes. The first pass only combines adjacent tag sets, while the second pass combines
-- nonadjacent tag sets. Copy canonicalized_tag_sets, since we destructively modify the list.
local this_tag_sets = deep_copy(canonicalized_tag_sets)
local combine_passes
if combine_style == "adjacent-first" then
combine_passes = {"adjacent", "all"}
else
combine_passes = {"all"}
end
for _, combine_pass in ipairs(combine_passes) do
local tag_ind = 1
while tag_ind <= #this_tag_sets do
local from, to
if combine_pass == "adjacent" then
if tag_ind == 1 then
from = 1
to = 0
else
from = tag_ind - 1
to = tag_ind - 1
end
else
from = 1
to = tag_ind - 1
end
local inner_broken = false
for prev_tag_ind = from, to do
local cur_tag_set = this_tag_sets[prev_tag_ind]
local tag_set = this_tag_sets[tag_ind]
if #cur_tag_set.tags == #tag_set.tags and
deep_equals(cur_tag_set.labels_with_auto, tag_set.labels_with_auto) then
local mismatch_ind = nil
local innermost_broken = false
for i = 1, #tag_set.tags do
local tag1 = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local tag2 = split_and_normalize_tag(tag_set.tags[i], lang)
if not deep_equals(list_to_set(tag1), list_to_set(tag2)) then
if mismatch_ind then
innermost_broken = true
break
end
local combined_dims = {}
for _, tag in ipairs(tag1) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
for _, tag in ipairs(tag2) do
combined_dims[get_normalized_tag_type(tag, lang)] = true
end
if size(combined_dims) == 1 and not combined_dims["unknown"] then
mismatch_ind = i
else
innermost_broken = true
break
end
end
end
if not innermost_broken then
-- No break, we either match perfectly or are combinable
if not mismatch_ind then
-- Two identical tag sets
remove(this_tag_sets, tag_ind)
inner_broken = true
break
else
-- Combine tag sets at mismatch_ind, using the canonical shortcuts.
local tag1 = split_and_normalize_tag(cur_tag_set.tags[mismatch_ind], lang, true)
local tag2 = split_and_normalize_tag(tag_set.tags[mismatch_ind], lang, true)
-- Combine the normalized tags and remove the special MARK_CONJOINED_SHORTCUT mark
-- on conjoined shortcuts so we have normal tags again.
local combined_tag =
concat(append(tag1, tag2), "//"):gsub(MARK_CONJOINED_SHORTCUT, "")
local new_tag_set = {}
for i = 1, #cur_tag_set.tags do
if i == mismatch_ind then
insert(new_tag_set, combined_tag)
else
local cur_canon_tag = split_and_normalize_tag(cur_tag_set.tags[i], lang)
local canon_tag = split_and_normalize_tag(tag_set.tags[i], lang)
assert(deep_equals(list_to_set(cur_canon_tag), list_to_set(canon_tag)))
insert(new_tag_set, cur_tag_set.tags[i])
end
end
this_tag_sets[prev_tag_ind].tags = new_tag_set
remove(this_tag_sets, tag_ind)
inner_broken = true
break
end
end
end
end
if not inner_broken then
-- No break from inner for-loop. Break from that loop indicates that we found that the current
-- tag set can be combined with a preceding tag set, did the combination and deleted the
-- current tag set. The next iteration then processes the same numbered tag set again (which is
-- actually the following tag set, because we deleted the tag set before it). No break
-- indicates that we couldn't combine the current tag set with any preceding tag set, and need
-- to advance to the next one.
tag_ind = tag_ind + 1
end
end
end
tag_sets_by_style[combine_style] = this_tag_sets
end
if not deep_equals(tag_sets_by_style["adjacent-first"], tag_sets_by_style["all-first"]) then
local function num_combinations(group)
local num_combos = 0
for _, tag_set in ipairs(group) do
for _, tag in ipairs(tag_set.tags) do
if tag:find("//") then
num_combos = num_combos + 1
end
end
end
return num_combos
end
local num_adjacent_first_combos = num_combinations(tag_sets_by_style["adjacent-first"])
local num_all_first_combos = num_combinations(tag_sets_by_style["all-first"])
if num_adjacent_first_combos < num_all_first_combos then
tag_sets = tag_sets_by_style["adjacent-first"]
elseif num_all_first_combos < num_adjacent_first_combos then
tag_sets = tag_sets_by_style["all-first"]
else
tag_sets = tag_sets_by_style["adjacent-first"]
end
else
-- Both are the same, pick either one
tag_sets = tag_sets_by_style["adjacent-first"]
end
if deep_equals(tag_sets, old_canonicalized_tag_sets) then
break
end
-- FIXME, we should consider reversing the transformation 1s -> 1|s,
-- but it's complicated to figure out when the transformation occurred;
-- not really important as both are equivalent
end
if old_style_tags then
local retval = {}
for _, tag_set in ipairs(tag_sets) do
if tag_set.labels and #tag_set.labels > 0 then
tag_set.tags[#tag_set.tags] =
tag_set.tags[#tag_set.tags] .. "<lb:" .. concat(tag_set.labels, ",") .. ">"
end
if #retval > 0 then
insert(retval, ";")
end
extend(retval, tag_set.tags)
end
return retval
else
for _, tag_set in ipairs(tag_sets) do
tag_set.labels_with_auto = nil
end
return tag_sets
end
end
-- Test function, callable externally.
function export.test_combine_tag_sets_into_multipart(frame)
local iparams = {
[1] = {list = true, required = true},
lang = {required = true},
}
local args = require("Module:parameters").process(frame.args, iparams)
local lang = require("Module:languages").getByCode(args.lang, true)
local combined_tags = export.combine_tag_sets_into_multipart(args[1], lang)
return concat(combined_tags, "|")
end
local function can_merge(entry, candidate)
for _, key in ipairs{"pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"} do
if not deep_equals(entry[key], candidate[key]) then
return false
end
end
return true
end
-- Check whether `entry` (an object describing a given non-lemma form, with properties such as `pronunc` for
-- pronunciation, `def` for definition, etc.) can be merged with any of the existing entries listed in `candidates`.
-- "Can be merged" means that all relevant properties (basically, everything but the definition) can are the same.
-- Return the first such candidate found, or nil if no candidates match `entry`.
local function find_mergeable(entry, candidates)
for _, candidate in ipairs(candidates) do
if can_merge(entry, candidate) then
return candidate
end
end
return nil
end
-- Merge multiple entries into one if they differ only in the definition, with all other
-- properties the same. The combined entry has multiple definition lines. We then do
-- further frobbing of {{infl of}} lines:
--
-- 1. Convert lang= param to param 1 (there shouldn't be any remaining cases of accelerator
-- modules generating {{infl of}} templates with lang=, but we do this just in case).
-- 2. Combine adjacent {{infl of}} lines that differ only in the tags, e.g.:
--
-- # {{infl of|la|bonus||nom|m|s}}
-- # {{infl of|la|bonus||nom|n|s}}
-- # {{infl of|la|bonus||acc|n|s}}
-- # {{infl of|la|bonus||voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- 3. Further group {{infl of}} lines with multiple tag sets (as may be generated b y
-- the previous step) using multipart tags, e.g. for the Latin entry ''bonum'',
--
-- # {{infl of|la|bonus||nom|m|s|;|nom|n|s|;|acc|n|s|;|voc|n|s}}
--
-- becomes
--
-- # {{infl of|la|bonus||nom|m|s|;|nom//acc//voc|n|s}}
--
-- This grouping can group across multiple dimensions, e.g. for the Latin entry ''bonīs'',
--
-- # {{infl of|la|bonus||dat|m|p|;|dat|f|p|;|dat|n|p|;|abl|m|p|;|abl|f|p|;|abl|n|p}}
--
-- becomes
--
-- # {{infl of|la|bonus||dat//abl|m//f//n|p}}
--
-- Another complex real-world example, for the Old English weak adjective form ''dēorenan'':
--
-- # {{infl of|ang|dēoren||wk|acc|m|sg|;|wk|acc|f|sg|;|wk|gen|m|sg|;|wk|gen|f|sg|;|wk|gen|n|sg|;|wk|dat|m|sg|;|wk|dat|f|sg|;|wk|dat|n|sg|;|wk|ins|m|sg|;|wk|ins|f|sg|;|wk|ins|n|sg|;|wk|nom|m|pl|;|wk|nom|f|pl|;|wk|nom|n|pl|;|wk|acc|m|pl|;|wk|acc|f|pl|;|wk|acc|n|pl}}
--
-- becomes
--
-- # {{infl of|ang|dēoren||wk|acc|m//f|sg|;|wk|gen//dat//ins|m//f//n|sg|;|wk|nom//acc|m//f//n|pl}}
--
-- Here, 17 separate tag sets are combined down into 3.
local function merge_entries(entries_obj)
local entries_new = {}
-- First, if overrides are supplied, try to eliminate entries with duplicate overrides.
local saw_override = false
for _, entry in ipairs(entries_obj.entries) do
if entry.override then
saw_override = true
break
end
end
if saw_override then
for _, entry in ipairs(entries_obj.entries) do
-- If some entries have an override and some don't, only deduplicate the ones with an override and
-- include all the ones without an override. FIXME: Deduplicate the non-overridden ones using the
-- algorithm below, and provide a custom function for deduplicating overrides.
if not entry.override then
insert(entries_new, entry)
else
insert_if_not(entries_new, entry, {
key = function(entry) return entry.override end,
})
end
end
entries_obj.entries = entries_new
return
end
-- First rewrite {{infl of|...|lang=LANG}} to {{infl of|LANG|...}}
for _, entry in ipairs(entries_obj.entries) do
local params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not params then
params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if params then
params = split(params, "|", true)
local new_params = {}
for _, param in ipairs(params) do
local lang = param:match("^lang=(.*)$")
if lang then
insert(new_params, 1, lang)
else
insert(new_params, param)
end
end
entry.def = "{{infl of|" .. concat(new_params, "|") .. "}}"
end
end
-- Merge entries that match in all of the following properties:
-- "pronunc", "etymology", "pos_header", "head", "inflection", "declension", "conjugation", "altforms"
-- This will merge any two mergeable entries even if non-consecutive.
-- The definitions of the merged entries do not have to match, but any matching
-- definitions will be deduped.
for _, entry in ipairs(entries_obj.entries) do
-- See if this entry can be merged with any previous entry.
local merge_entry = find_mergeable(entry, entries_new)
if merge_entry then
local duplicate_def = false
-- If we can merge, check whether the definition of the new entry is
-- the same as any previous definitions.
for _, def in ipairs(merge_entry.defs) do
if def == entry.def then
duplicate_def = true
break
end
end
if not duplicate_def then
insert(merge_entry.defs, entry.def)
end
else
entry.defs = {entry.def}
insert(entries_new, entry)
end
end
-- FIXME: Use the template parser for this.
-- Combine the definitions for each entries, merging all {{infl of}} calls
-- into one such call with multiple tag sets.
for _, entry in ipairs(entries_new) do
local existing_defs = {}
for _, new_def in ipairs(entry.defs) do
local did_merge = false
local new_params = new_def:match("^{{infl of|([^{}]+)}}$")
if not new_params then
new_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if new_params then
-- The new definition is {{infl of}}. See if there is an
-- {{infl of}} among the definitions seen so far.
for i, existing_def in ipairs(existing_defs) do
local existing_params = existing_def:match("^{{infl of|([^{}]+)}}$")
if not existing_params then
existing_params = existing_def:match("^{{inflection of|([^{}]+)}}$")
end
if existing_params then
-- Merge the existing and new {{infl of}} calls.
-- Find the last unnamed parameter of the first template.
existing_params = split(existing_params, "|", true)
local last_numbered_index
for j, param in ipairs(existing_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Add grammar tags of the second template
new_params = split(new_params, "|", true)
local tags = {}
local n = 0
for _, param in ipairs(new_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters,
-- which don't indicate grammar tags
if n >= 4 then
-- Now append the tags
insert(tags, param)
end
end
end
-- Add the new parameters after the existing ones
existing_params[last_numbered_index] = existing_params[last_numbered_index] .. "|;|" .. concat(tags, "|")
existing_defs[i] = "{{infl of|" .. concat(existing_params, "|") .. "}}"
did_merge = true
break
end
end
end
if not did_merge then
insert(existing_defs, new_def)
end
end
entry.def = concat(existing_defs, "\n# ")
end
-- Now combine tag sets inside a multiple-tag-set {{infl of}} call
for _, entry in ipairs(entries_new) do
local infl_of_params = entry.def:match("^{{infl of|([^{}]+)}}$")
if not infl_of_params then
infl_of_params = entry.def:match("^{{inflection of|([^{}]+)}}$")
end
if infl_of_params then
infl_of_params = split(infl_of_params, "|", true)
-- Find the last unnamed parameter
local last_numbered_index
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Split the params in three:
-- (1) Params before the inflection tags, and any named params mixed in with the tags
-- (2) The tags themselves
-- (3) Named params after the tags
local pre_tag_params = {}
local tags = {}
local post_tag_params = {}
local n = 0
for j, param in ipairs(infl_of_params) do
if not param:find("=", nil, true) then
n = n + 1
-- Skip the first three unnamed parameters, which don't indicate grammar tags
if n >= 4 then
insert(tags, param)
else
insert(pre_tag_params, param)
end
elseif n >= last_numbered_index then
insert(post_tag_params, param)
else
insert(pre_tag_params, param)
end
if not param:find("=", nil, true) then
last_numbered_index = j
end
end
-- Now combine tag sets.
tags = export.combine_tag_sets_into_multipart(tags, entries_obj.lang)
-- Put the template back together.
local combined_params = {}
for _, v in ipairs(pre_tag_params) do table.insert(combined_params, v) end
for _, v in ipairs(tags) do table.insert(combined_params, v) end
for _, v in ipairs(post_tag_params) do table.insert(combined_params, v) end
entry.def = "{{infl of|" .. table.concat(combined_params, "|") .. "}}"
end
end
entries_obj.entries = entries_new
end
local function merge_field(entries, field)
local seen_fields = create_ordered_set()
for _, entry in ipairs(entries) do
local fieldval = entry[field]
if fieldval then
if type(fieldval) == "table" then
-- already a table
else
fieldval = split(fieldval, "\n", true)
end
for _, val in ipairs(fieldval) do
if val ~= "" then -- skip newlines, including if there's a final newline when split
add_item(seen_fields, val)
end
end
end
end
return seen_fields.array
end
local function default_merge_pronunciation(entries_obj)
local pronuncs = merge_field(entries_obj.entries, "pronunc")
if #pronuncs > 0 then
return concat(pronuncs, "\n")
else
return nil
end
end
local function generate_merged_pronunciation(entries_obj, lang_module)
entries_obj.pronunciation = (lang_module and lang_module.generate_pronunciation or default_merge_pronunciation)(entries_obj)
end
local function default_merge_etymology(entries_obj)
local etyms = merge_field(entries_obj.entries, "etymology")
if #etyms > 1 then
-- Hack! If multiple etymology entries, put a * before each one so they don't run together.
-- In such a case we may be better off using a custom merge function.
for i, item in ipairs(etyms) do
etyms[i] = "* " .. item
end
end
if #etyms > 0 then
return concat(etyms, "\n")
else
return nil
end
end
local function generate_merged_etymology(entries_obj, lang_module)
entries_obj.etymology = (lang_module and lang_module.generate_etymology or default_merge_etymology)(entries_obj)
end
local function entries_to_text(entries_obj)
for i, entry in ipairs(entries_obj.entries) do
if entry.override then
entry = "\n" ..(entry.override or "")
else
entry =
"\n\n" ..
"===" .. entry.pos_header .. "===\n" ..
entry.head .. "\n\n" ..
"# " .. entry.def ..
(entry.inflection and "\n\n====Inflection====\n" .. entry.inflection or "") ..
(entry.declension and "\n\n====Declension====\n" .. entry.declension or "") ..
(entry.conjugation and "\n\n====Conjugation====\n" .. entry.conjugation or "") ..
(entry.altforms and "\n\n====Alternative forms====\n" .. entry.altforms or "") ..
-- FIXME, if there are multiple entries, there should either be only one merged L3 Mutation or several
-- L4 Mutation sections. Not yet implemented.
(entry.mutation and "\n\n===Mutation===\n" .. entry.mutation or "")
end
entries_obj.entries[i] = entry
end
return "==" .. entries_obj.lang:getCanonicalName() .. "==" ..
(entries_obj.etymology and "\n\n===Etymology===\n" .. entries_obj.etymology or "") ..
(entries_obj.pronunciation and "\n\n===Pronunciation===\n" .. entries_obj.pronunciation or "") ..
concat(entries_obj.entries)
end
local function split_and_zip_term_and_tr(encoded_term, encoded_tr)
local terms = split(encoded_term, split_term_regex)
local trs = encoded_tr and split(encoded_tr, split_term_regex) or {}
if #trs > #terms then
error(("Saw %s translits, which is > the %s terms seen: encoded_term=%s, encoded_tr=%s"):
format(#trs, #terms, encoded_term, encoded_tr))
end
local result = {}
for i, term in ipairs(terms) do
local tr = trs[i]
if tr == "" then
tr = nil
end
insert(result, {term = term, tr = tr})
end
return result
end
local function paste_term_tr(termobj)
if termobj.tr then
return termobj.term .. "//" .. termobj.tr
else
return termobj.term
end
end
function export.generate(frame)
local required = {required = true}
local list_allow_holes = {list = true, allow_holes = true}
local fparams = {
lang = {required = true, type = "language"},
origin_pagename = required,
target_pagename = required,
num = {required = true, type = "number"},
pos = list_allow_holes,
form = list_allow_holes,
gender = list_allow_holes,
transliteration = list_allow_holes,
origin = list_allow_holes,
origin_transliteration = list_allow_holes,
-- I'm pretty sure this is actually required and must have args.num entries in it.
target = list_allow_holes,
}
local args = require("Module:parameters").process(frame.args, fparams, nil, "accel", "generate")
local lang = args.lang
-- Try to use a language-specific module, if one exists.
local module_lang, lang_module = lang
while module_lang do
lang_module = safe_require("Module:accel/" .. module_lang:getCode())
if lang_module ~= nil then
break
end
module_lang = module_lang:getParent()
end
local entries = {}
-- Generate each entry
local seen_origins = create_ordered_set()
local seen_targets = create_ordered_set()
local params_list = {}
for i = 1, args.num do
local params = {
lang = lang,
origin_pagename = args.origin_pagename,
target_pagename = args.target_pagename,
pos = args.pos[i] or error("The argument \"pos\" is missing for entry " .. i),
form = args.form[i] or error("The argument \"form\" is missing for entry " .. i),
gender = args.gender[i],
origin = args.origin[i] or error("The argument \"origin\" is missing for entry " .. i),
origin_transliteration = args.origin_transliteration[i],
target = args.target[i],
transliteration = args.transliteration[i],
num_entries = args.num,
}
params.form = params.form:gsub("|", "|")
params.targets = split_and_zip_term_and_tr(params.target, params.transliteration)
params.origins = split_and_zip_term_and_tr(params.origin, params.origin_transliteration)
for _, origin in ipairs(params.origins) do
add_item(seen_origins, paste_term_tr(origin), origin)
end
for _, target in ipairs(params.targets) do
add_item(seen_targets, paste_term_tr(target), target)
end
insert(params_list, params)
end
-- Generate entries.
for _, params in ipairs(params_list) do
-- Add overall stats to all params objects.
params.seen_origins = seen_origins
params.seen_targets = seen_targets
-- Make a default entry.
local entry = export.default_entry(params)
if lang_module then
lang_module.generate(params, entry)
end
-- Add it to the list.
insert(entries, entry)
end
local entries_obj = {
entries = entries,
lang = lang,
lang_module = lang_module,
seen_origins = seen_origins,
seen_targets = seen_targets,
}
-- Merge entries if possible.
merge_entries(entries_obj)
-- Now generate merged pronunciation and etymology, either using a custom generation function or by merging the
-- individually specified pronunciation and etymology lines.
generate_merged_pronunciation(entries_obj, lang_module)
generate_merged_etymology(entries_obj, lang_module)
return entries_to_text(entries_obj)
end
function export.generate_JSON(frame)
local success, entries = pcall(export.generate, frame)
-- If success is false, entries is an error message.
-- It appears we need to specify `messages` or nothing will be displayed.
local ret = { [success and "entries" or "error"] = entries, messages = require("Module:array")()}
return require("Module:JSON").toJSON(ret)
end
return export
86eun0edau2mj2hhnqjauadmbrmp5ek
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mɪŋ
106
34026
293047
79812
2026-09-19T09:42:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293047
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(r)mɪŋ}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ä(r)mĭng}}, {{IPA|en|/-ɑː(r)mɪŋ/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
# In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːmɪŋ|/-ɑːmɪŋ/]] are also rhymes for words on this page.
# For more rhymes, add ''ing'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(r)m|/-ɑː(r)m/]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add present participles or gerunds to this page unless they have other meanings-->
* [[charming]]<!--adjective, as in "a charming village", and ironically, as in "Well, that's charming!"-->
* [[farming]]<!--noun, as in "factory farming"; modifier, as in "farming methods"-->
* {{l|en|harming}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add present participles or gerunds to this page unless they have other meanings-->
* [[disarming]]<!--adjective, as in "a disarming smile"-->
iexqkx13ct9ixrpnls3tnmro7sa5g09
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/iːʃ
106
37530
293181
84203
2026-09-19T10:07:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293181
wikitext
text/x-wiki
{{rhymes nav|en|iː|ʃ}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ēsh}}, {{IPA|en|/-iːʃ/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၼိုင်ႈသဵင်===
{{rhyme-top}}
* {{l|en|Briche}}
* {{l|en|Chiche}}
* {{l|en|Cliche}}
* {{l|en|creesh}}, {{l|en|creish}} {{qualifier|one pronunciation}}
* {{l|en|fiche}} {{qualifier|UK and one US pronunciation}}
* {{l|en|Fliche}}
* {{l|en|guiche}}
* {{l|en|Laoighis}}, {{l|en|Laois}}, {{l|en|Leix}}<!--sic-->
* {{l|en|leash}}
* {{l|en|leish}}
* {{l|en|Neish}}
* {{l|en|niche}} {{qualifier|UK and one US pronunciation}}
* {{l|en|quiche}}
* {{l|en|Reaiche}}
* {{l|en|Riche}} {{qualifier|one pronunciation}}
* {{l|en|sheesh}}
* {{l|en|sneesh}}
* {{l|en|Suiche}}
* {{l|en|Teish}}
* {{l|en|yeesh}}, {{l|en|yiish}}
{{rhyme-bottom}}
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the FINAL syllable.-->
{{rhyme-top}}
* {{l|en|Abish}} {{qualifier|Indian given name}}
* {{l|en|Ablish}}
* {{l|en|affiche}}
* {{l|en|Aniche}}
* {{l|en|Anish}} {{qualifier|given name}}
* {{l|en|Aouchiche}}
* {{l|en|ʻArish}}
* {{l|en|babiche}}
* {{l|en|baksheesh}} {{qualifier|one pronunciation}}
* {{l|en|bardiche}}
* {{l|en|Batish}}
* {{l|en|benish}}
* {{l|en|Berriche}}
* {{l|en|Bibiche}}
* {{l|en|Boniche}}
* {{l|en|Borniche}}
* {{l|en|Campiche}}
* {{l|en|capisce}}, {{l|en|coppish}} {{qualifier|and various other spellings}}
* {{l|en|Castrisch}}
* {{l|en|chancliche}}
* {{l|en|Corniche}}
* {{l|en|corniche}}
* {{l|en|Dagleish}}, {{l|en|Daglish}}
* {{l|en|Dalgleish}}, {{l|en|Dalgliesh}}, {{l|en|Dalglish}}
* {{l|en|Darniche}}
* {{l|en|Darwish}} {{qualifier|one pronunciation}}
* {{l|en|el-ʻArīsh}}
* {{l|en|enniche}} {{qualifier|one pronunciation}}
* {{l|en|flamiche}}
* {{l|en|Galmiche}}
* {{l|en|Gireesh}}, {{l|en|Girish}}
* {{l|en|gribiche}}
* {{l|en|Guariche}}
* {{l|en|Halliche}}
* {{l|en|Hammiche}}
* {{l|en|Harish}}
* {{l|en|Havish}}
* {{l|en|Jagdish}}
* {{l|en|kabish}}
* {{l|en|Kadish}} {{qualifier|one pronunciation}}
* {{l|en|kamish}}
* {{l|en|Kechiche}}
* {{l|en|Labiche}}
* {{l|en|La Friche}}
* {{l|en|La Riche}}
* {{l|en|Leriche}}, {{l|en|Le Riche}}
* [[w:Ma Biche|Ma Biche]]<!--leave linked to Wikipedia-->
* {{l|en|MacLeish}}, {{l|en|McLeish}}
* {{l|en|MacNeish}}, {{l|en|McNeish}}
* {{l|en|Maneesh}}, {{l|en|Manish}}
* [[w:Maniche|Maniche]]<!--pseudonym; leave linked to Wikipedia-->
* {{l|en|McGleish}}
* {{l|en|Meziche}}
* {{l|en|pastiche}}
* {{l|en|Peniche}}
* {{l|en|peniche}}
* ''[[w:Poliche|Poliche]]''<!--movie; leave linked to Wikipedia-->
* {{l|en|postiche}}
* {{l|en|potiche}}
* {{l|en|Rejiche}}
* {{l|en|rime riche}}
* {{l|en|Sathish}}, {{l|en|Satish}}
* {{l|en|schottische}} {{qualifier|one pronunciation}}
* {{l|en|shankleesh}}, {{l|en|shanklish}}
* {{l|en|Shaweesh}}, {{l|en|Shawish}}
* {{l|en|shinklish}}
* {{l|en|Shirish}}
* {{l|en|Songish}}
* {{l|en|sub-niche}} {{qualifier|UK and one US pronunciation}}
* {{l|en|Tajrish}}
* {{l|en|Tanish}}
* {{l|en|tchaviche}}
* {{l|en|unleash}}
* {{l|en|vieux riche}}
* {{l|en|Yaish}}
* {{l|en|Yamiche}}
* {{l|en|Yatish}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the FINAL syllable.-->
{{rhyme-top}}
* {{l|en|Jagadish}}
* {{l|en|Lac la Biche}}
* {{l|en|Moyer-Gleich}}
* {{l|en|manakish}}, {{l|en|manaqish}}
* {{l|en|multiniche}}
* {{l|en|nouveau riche}}
* {{l|en|w:OrbusNeich|OrbusNeich}}<!--company name; leave linked to Wikipedia-->
* {{l|en|ouananiche}}
* {{l|en|Oued Koriche}}
* {{l|en|Porto-Riche}}
* {{l|en|Yamachiche}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the FINAL syllable.-->
{{rhyme-top}}
* {{l|en|Audun-le-Tiche}}
* {{l|en|pied-de-biche}}
* {{l|en|Souzy-la-Briche}}
{{rhyme-bottom}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ ပဵၼ်ပွတ်းပဵၼ်တွၼ်ႈ==
{{partrhyme}}
===သွင်သဵင်===
{{rhyme-top}}
* [[w:Bakchich (internet)|Bakchich]]<!--website; leave linked to Wikipedia-->
{{rhyme-bottom}}
===သၢမ်သဵင်===
{{rhyme-top}}
* {{l|en|econiche}} {{qualifier|one US pronunciation}}
* {{l|en|Firmenich}} {{qualifier||one pronunciation}}
* {{l|en|macroniche}} {{qualifier|one pronunciation}}
* {{l|en|meganiche}} {{qualifier|one US pronunciation}}
* {{l|en|microniche}} {{qualifier|one US pronunciation}}
* {{l|en|superfiche}}
* {{l|en|ultrafiche}}
* {{l|en|waydelich}}
{{rhyme-bottom}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ ပဵၼ်ပွတ်းပဵၼ်တွၼ်ႈ==
{{partrhyme}}
===သွင်သဵင်===
{{rhyme-top}}
* {{l|en|baksheesh}} {{qualifier|and other spellings; one pronunciation}}
* {{l|en|hasheesh}}, {{l|en|hashish}} {{qualifier|one pronunciation}}
* {{l|en|Mohnish}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
{{rhyme-top}}
* {{l|en|microfiche}}
{{rhyme-bottom}}
enzbz49vcnmyax8okykqvs9d1p64f9p
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p
106
37594
293097
84274
2026-09-19T09:51:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293097
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)p}}
==သဵင်ဢွၵ်ႇ==
-ä(r)p, {{IPAchar|/-ɑː(ɹ)p/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
# In non-rhotic accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːp|/-ɑːp/]] are rhymes for words on this page.
===ၼိုင်ႈသဵင်===
{{rhyme-top}}
* {{l|en|carp}}
* [[w:The World According to Garp|Garp]]
* {{l|en|harp}}
* {{l|en|jarp}}
* {{l|en|LARP}}
* {{l|en|parp}}
* {{l|en|scarp}}
* {{l|en|sharp}}
* {{l|en|tarp}}
* {{l|en|Zarp}}
{{rhyme-bottom}}
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the FINAL syllable.-->
{{rhyme-top}}
* {{l|en|escarp}}
{{rhyme-bottom}}
tvonmc4t578pb94hyugawmwefl12d9o
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pɪŋ
106
37597
293101
84278
2026-09-19T09:52:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293101
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)pɪŋ}}
==သဵင်ဢွၵ်ႇ==
-ä(r)pĭng, {{IPAchar|/-ɑː(ɹ)pɪŋ/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːpɪŋ|/-ɑːpɪŋ/]] are also rhymes for words on this page.
#For more rhymes, add ''ing'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p|/-ɑː(ɹ)p/]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add present participles or gerunds to this page unless they have other meanings-->
{{rhyme-top}}
* {{l|en|carping|pos=adjective, noun}}
* {{l|en|harping}}
{{rhyme-bottom}}
4wsx1qvyn6oh1iwwuxx9i93wwg7oelr
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹi
106
37689
293138
84378
2026-09-19T09:59:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293138
wikitext
text/x-wiki
{{rhymes nav|en|æ|ɹi}}
==သဵင်ဢွၵ်ႇ==
-ări, /-æri/, /<tt>-{ri</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
* In accents in which "merry" and "Mary" are pronounced the same as "marry", words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɛri|/-ɛri/]] and [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɛəri|/-ɛəri/]] are rhymes for words on this page. (Please do not add these words to this page.)
===Suffixes===
* {{l|en|-ary}} {{qualifier|usually Philippines, e.g. "-ciary"}}
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add words like "merry" and "Mary" to this page: see the note above-->
{{rhyme-top}}
* {{l|en|'Arry}}<!--sic-->
* {{l|en|Barrie}}
* {{l|en|barry}}
* {{l|en|Barry}}
* {{l|en|Carrie}}
* {{l|en|carry}}
* {{l|en|Cary}}
* {{l|en|Clarry}}
* {{l|en|Drarry}}
* {{l|en|gari}}, {{l|en|garri}}, {{l|en|garry}}
* {{l|en|gari}}, {{l|en|gharee}}, {{l|en|gharri}}, {{l|en|gharrie}}, {{l|en|gharry}} {{qualifier|one pronunciation}}
* {{l|en|Garry}}, {{l|en|Gary}}
* {{l|en|harry}}
* {{l|en|Harry}}
* {{l|en|karee}}, {{l|en|karree}}
* {{l|en|Kari}} {{qualifier|one pronunciation}}
* {{l|en|kari}}, {{l|en|karri}}
* {{l|en|larry}}
* {{l|en|Larry}}
* {{l|en|marri}}
* {{l|en|marry}}
* {{l|en|parry}}
* {{l|en|sharrie}}, {{l|en|sharry}}
* {{l|en|tarry}} {{qualifier|noun|verb}}
* {{l|en|vary}} {{qualifier|one US pronunciation}}
* [[w:Richard Scarry|Scarry]] {{qualifier|surname}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add words like "merry" and "Mary" to this page: see the note above-->
{{rhyme-top}}
* [[w:Madame du Barry|du Barry]]
* {{l|en|Glengarry}}
* {{l|en|miscarry}}
* {{l|en|mismarry}}
* {{l|en|outcarry}}
* {{l|en|recarry}}
* {{l|en|remarry}}
* {{l|en|shoaldarree}}, {{l|en|sholdarry}}, {{l|en|shooldarry}}
* {{l|en|unmarry}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add words like "merry" and "Mary" to this page: see the note above-->
{{rhyme-top}}
* {{l|en|cash-and-carry}}
* {{l|en|charivari}} {{qualifier|one pronunciation}}
* {{l|en|fetch and carry}}, {{l|en|fetch-and-carry}}
* {{l|en|hari-kari}} {{qualifier|one pronunciation}}
* {{l|en|hirrie-harrie}}
* {{l|en|intermarry}}
* {{l|en|overcarry}}
* {{l|en|rose du Barri}}, {{l|en|rose du Barry}}
{{rhyme-bottom}}
i5xqlu1aazf7lng4carm4mc4smglrme
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsək
106
38035
293199
84798
2026-09-19T10:11:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293199
wikitext
text/x-wiki
{{rhymes nav|en|æ|sək}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ăsək}}, {{IPA|en|/-æsək/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
*[[Basiuk]] {{q|anglicised surname}}
*[[bassock]]
*[[cassock]]
*[[Glassock]]
*[[glassock]] {{q|one pronunciation}}
*[[hassock]]
*[[lassock]]
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
*[[uncassock]]
6uaafjzqe4c7nuwp7yjgv7rz74os5gh
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsən
106
38110
293209
84885
2026-09-19T10:13:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293209
wikitext
text/x-wiki
{{rhymes nav|en|eɪ|sən}}
==သဵင်ဢွၵ်ႇ==
-āsən, /-eɪsən/, /<tt>-eIs@n</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULIMATE syllable.-->
* [[basin]]
* [[bason]]
* [[caisson]]
* [[chasten]]
* [[hasten]]
* [[Jason]]
* [[JSON]]
* [[Mason]]
* [[mason]]
* [[nason]]
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULIMATE syllable.-->
* [[enchasten]]
* [[Marquesan]]
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the PENULIMATE syllable.-->
* [[diapason]]
mue277ezfi7ellltmkqdgm3frn2liz6
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ætə(ɹ)
106
38335
293241
85489
2026-09-19T10:21:17Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293241
wikitext
text/x-wiki
{{rhymes nav|en|æ|tə(ɹ)}}
==သဵင်ဢွၵ်ႇ==
-ătə(r), /-ætə(r)/, /<tt>-{t@(r)</tt>/
===ၶေႃႈမၢႆတွင်း===
#For more rhymes, add ''er'' to some nouns and adjectives at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æt|/-æt/]].
#In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ætə|/-ætə/]] are rhymes for words on this page.
#In accents with [[flapping]], words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ædə(r)|/-ædə(r)/]] are also rhymes for words on this page.
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add comparatives to this section-->
{{rhyme-top}}
* {{l|en|attar}}
* {{l|en|atter}}
* {{l|en|batter}}
* {{l|en|blatter}}
* {{l|en|chatter}}
* {{l|en|clatter}}
* {{l|en|fatter}}
* {{l|en|flatter}}
* {{l|en|gatter}}
* {{l|en|hatter}}
* {{l|en|latter}}
* {{l|en|matter}}
* {{l|en|natter}}
* {{l|en|patter}}
* {{l|en|platter}}
* {{l|en|ratter}}
* {{l|en|satyr}} {{qualifier|Received Pronunciation}}
* {{l|en|scatter}}
* {{l|en|shatter}}
* {{l|en|skatter}}
* {{l|en|slatter}}
* {{l|en|smatter}}
* {{l|en|spatter}}
* {{l|en|splatter}}
* {{l|en|spratter}}
* {{l|en|tatter}}
* {{l|en|yatter}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add comparatives to this section-->
{{rhyme-top}}
* {{l|en|a-chatter}}
* {{l|en|bespatter}}
* {{l|en|beflatter}}
* {{l|en|bescatter}}
* {{l|en|out-flatter}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
<!--Do not add comparatives to this section-->
{{rhyme-top}}
* {{l|en|chitter-chatter}}
* {{l|en|clitter-clatter}}
* {{l|en|counter-batter}}
* {{l|en|pitter-patter}}
{{rhyme-bottom}}
oyqc80n5zyamb5xj47f0b7oihkgi5tq
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mɪŋ
14
41988
293045
91452
2026-09-19T09:42:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293045
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mɪŋ/2 သဵင်
14
41989
293046
91453
2026-09-19T09:42:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293046
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mɪŋ]]
sjcan1ftes8vv68i9t3794csdp9f162
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)md
14
41991
293050
91456
2026-09-19T09:43:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293050
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)md/1 သဵင်
14
41992
293051
91457
2026-09-19T09:43:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293051
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)md]]
qwnea0tt95e2hi2m42ovl8fedg6mt7g
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)m/1 သဵင်
14
41994
293043
91459
2026-09-19T09:41:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293043
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)m]]
625si08584qe438yp4ojxwdu62oa09p
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsən
14
42195
293207
101448
2026-09-19T10:12:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293207
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsən/2 သဵင်
14
42196
293208
91859
2026-09-19T10:13:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293208
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsən]]
fxnjam075nvzddcpnuus11x0hji1glv
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ætə(ɹ)
14
42335
293239
92215
2026-09-19T10:20:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293239
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ætə(ɹ)/2 သဵင်
14
42336
293240
92216
2026-09-19T10:21:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293240
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ætə(ɹ)]]
smklw7tawcbecu8ku7zayktweqe2nku
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəs
14
49199
293074
108314
2026-09-19T09:48:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293074
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
kept one's hand in
0
75889
292859
2026-09-18T13:11:38Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|keep one's hand in||ed-form}}"
292859
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|keep one's hand in||ed-form}}
816c4rf78xxlvyash8no8ggwzpp98cs
raises a hand
0
75890
292860
2026-09-18T13:21:18Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|raise a hand||s-verb-form}}"
292860
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|raise a hand||s-verb-form}}
83iggfiu1xkiuakijo5kgghacqvxqgs
raising a hand
0
75891
292861
2026-09-18T13:21:46Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|raise a hand||ing-form}}"
292861
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|raise a hand||ing-form}}
ijevf2oqz6n5z0jy1xmkezirh6iocwq
raised a hand
0
75892
292862
2026-09-18T13:22:11Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|raise a hand||ed-form}}"
292862
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|raise a hand||ed-form}}
mcvc98ci62nrd5xybi4ior5ybq537zz
bound hand and foot
0
75893
292863
2026-09-18T13:22:47Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|bind hand and foot||ed-form}}"
292863
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|bind hand and foot||ed-form}}
bb05r7clp3g30ewo8vch819m1ak1j6x
lent a hand
0
75894
292864
2026-09-18T13:23:28Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|lend a hand||ed-form}}"
292864
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|lend a hand||ed-form}}
7h2wgxnlu658ov14uyb3rdf4wmbu4s9
gave someone a hand
0
75895
292865
2026-09-18T13:24:09Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|give someone a hand||ed-form}}"
292865
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|give someone a hand||ed-form}}
str4ppiof78mg0bk1fxxa555foz2n4r
gives
0
75896
292866
2026-09-18T13:26:50Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|give||s-verb-form}}"
292866
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|give||s-verb-form}}
gw2kip6vvpgsnrk7xcx32t5d5nl4yab
gave
0
75897
292867
2026-09-18T13:27:38Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သဵင်ဢွၵ်ႇ=== * {{enPR|gāv|a=UK,US}}, {{IPA|en|/ɡeɪv/}} * {{audio|en|en-us-gave.ogg|a=US}} * {{IPA|en|[ɡeːv]|a=CA}} ** {{IPA|en|[ɡeːv]|[ɡɛːv]|a=Ottawa Valley}} * {{enPR|gĕv|a=Ireland,also}}, {{IPA|en|/ɡɛv/}} * {{rhymes|en|eɪv|s=1}} ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ}} # {{infl of|en|give||spast}}"
292867
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|gāv|a=UK,US}}, {{IPA|en|/ɡeɪv/}}
* {{audio|en|en-us-gave.ogg|a=US}}
* {{IPA|en|[ɡeːv]|a=CA}}
** {{IPA|en|[ɡeːv]|[ɡɛːv]|a=Ottawa Valley}}
* {{enPR|gĕv|a=Ireland,also}}, {{IPA|en|/ɡɛv/}}
* {{rhymes|en|eɪv|s=1}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|give||spast}}
ld18auyit3upafruy5n7yz8mnviplg7
given someone a hand
0
75898
292868
2026-09-18T13:28:57Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===သၢင်ႈ=== {{head|en|ပိူင်ၽၢင်သၢင်ႈ|cat2=irregular past participles}} # {{inflection of|en|give someone a hand||past|part}}"
292868
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|cat2=irregular past participles}}
# {{inflection of|en|give someone a hand||past|part}}
f3j1utmnk01r58pds61s6290mxvxwha
handed over
0
75899
292876
2026-09-19T04:25:22Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hand over]] ([[WT:ACCEL|Accelerated]])
292876
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=handed over}}
# {{infl of|en|hand over||ed-form}}
763slwvz3wt28zbud8rd249wg0olyp1
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/t͡ʃɪf
14
75900
292877
2026-09-19T04:25:56Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "[[ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]"
292877
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
f1zjkkxugfio8bf6xzm84da272trlw0
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/t͡ʃiːf
14
75901
292878
2026-09-19T04:26:03Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "[[ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]"
292878
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
f1zjkkxugfio8bf6xzm84da272trlw0
flew off the handle
0
75902
292879
2026-09-19T04:26:37Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[fly off the handle]] ([[WT:ACCEL|Accelerated]])
292879
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=flew off the handle}}
# {{infl of|en|fly off the handle||spast}}
s1fk5uxa375xg4t0mzfcaqehn36oukk
flown off the handle
0
75903
292880
2026-09-19T05:15:39Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[fly off the handle]] ([[WT:ACCEL|Accelerated]])
292880
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=flown off the handle}}
# {{infl of|en|fly off the handle||past|part}}
mjv3kjhlzmtmu38p5wcyprew61oexem
hung up
0
75904
292881
2026-09-19T05:20:17Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang up]] ([[WT:ACCEL|Accelerated]])
292881
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung up}}
# {{infl of|en|hang up||ed-form}}
i4owzfiiplufx09n0w53jncc1f2q38c
hung together
0
75905
292882
2026-09-19T05:20:43Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang together]] ([[WT:ACCEL|Accelerated]])
292882
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung together}}
# {{infl of|en|hang together||ed-form}}
p9brzb0sotde27dzv7k4jcnc0ltpg68
ပိူင်ထၢၼ်ႈ:ပွင်ႈၵႂၢမ်းသၢင်ႈဢိင်းၵလဵတ်ႈ ဢၼ်ၽွတ်ႈႁႅၼ်းဝႆႉတင်း "together"
14
75906
292883
2026-09-19T05:21:02Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ[["
292883
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ[[
q56odpsa33654ljzs3fiuslwmvuypxp
292884
292883
2026-09-19T05:21:12Z
Saimawnkham
9
292884
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ]]
mielw0otw3a8r9adu0xi0kh6p0j8j0e
hung out
0
75907
292885
2026-09-19T05:21:44Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang out]] ([[WT:ACCEL|Accelerated]])
292885
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung out}}
# {{infl of|en|hang out||ed-form}}
komcsrnq6gfxlffaq4xdt0043r81jl3
hung onto
0
75908
292886
2026-09-19T05:22:18Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang onto]] ([[WT:ACCEL|Accelerated]])
292886
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung onto}}
# {{infl of|en|hang onto||ed-form}}
n2pwsaqnhwsb029bi1k5lg63rijhngc
ပိူင်ထၢၼ်ႈ:ပွင်ႈၵႂၢမ်းသၢင်ႈဢိင်းၵလဵတ်ႈ ဢၼ်ၽွတ်ႈႁႅၼ်းဝႆႉတင်း "onto"
14
75909
292887
2026-09-19T05:22:34Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ]]"
292887
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ]]
mielw0otw3a8r9adu0xi0kh6p0j8j0e
hung back
0
75910
292888
2026-09-19T05:23:08Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang back]] ([[WT:ACCEL|Accelerated]])
292888
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung back}}
# {{infl of|en|hang back||ed-form}}
5wnywxvw0lah750jo8wv9f2s2s2lgw9
hung about
0
75911
292889
2026-09-19T05:23:35Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang about]] ([[WT:ACCEL|Accelerated]])
292889
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung about}}
# {{infl of|en|hang about||ed-form}}
e3s1qfvipqhue5yc72tnnb6xq9v334o
hung fire
0
75912
292890
2026-09-19T05:41:38Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang fire]] ([[WT:ACCEL|Accelerated]])
292890
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung fire}}
# {{infl of|en|hang fire||ed-form}}
hkf9cd79but1cfxfnemz64lmun0hjjv
hung by a thread
0
75913
292891
2026-09-19T05:42:06Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang by a thread]] ([[WT:ACCEL|Accelerated]])
292891
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung by a thread}}
# {{infl of|en|hang by a thread||ed-form}}
pzn65x4ed156cq9lwond6f3ppn3o6ir
hung by a hair
0
75914
292892
2026-09-19T05:42:29Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang by a hair]] ([[WT:ACCEL|Accelerated]])
292892
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung by a hair}}
# {{infl of|en|hang by a hair||ed-form}}
s4hu8jv448h90owsb69zyamt3sx9nmp
hung one's head
0
75915
292893
2026-09-19T05:42:47Z
Saimawnkham
9
Creating forms of ဢိင်းၵလဵတ်ႈ [[hang one's head]] ([[WT:ACCEL|Accelerated]])
292893
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ|head=hung one's head}}
# {{infl of|en|hang one's head||ed-form}}
rdvfu26nc7dshka2q7qk25e2bza48tc
hapless
0
75916
292894
2026-09-19T09:12:30Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292894
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæplɪs/}}
* {{IPA|en|/ˈhæpləs/|a=US}}
* {{audio|en|en-us-hapless.ogg|a=US}}
* {{audio|en|en-au-hapless.ogg|a=AU}}
* {{rhymes|en|æpləs|q1=US|s=2}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ဢၼ်ၵၢမ်ႇႁၢႆႉ၊ ဢၼ်ဢမ်ႇမီးသုၼ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
qqhn0x2u9shnxmhsxcov10kvel21g9g
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpləs
14
75917
292895
2026-09-19T09:12:40Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
292895
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpləs/1 သဵင်
14
75918
292896
2026-09-19T09:12:50Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
292896
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpləs]]
4lx4z9a6x3cxgmvtojcuqj2mriqhgac
haply
0
75919
292897
2026-09-19T09:13:00Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292897
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpli/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-haply.wav|a=Southern England}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv|?}}
# ဢဝ်သုၼ်ႇဝႃႈ။
# ဢဝ်ၵၢမ်ႇဝႃႈ။
# ဢဝ်သႆၢငႆၢဝႃႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
j9rfgn8hwk1f4oy96w63n454m2ragc6
haphazard
0
75920
292898
2026-09-19T09:13:10Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292898
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/(ˌ)hæpˈhæz.əd/|a=UK}}
* {{IPA|en|/(ˌ)hæpˈhæz.ɚd/|/(ˌ)hæfˈhæz.ɚd/|q2=nonstandard|a=US,Canada}} {{q|see {{m|en|halfhazard}}}}
** {{audio|en|en-us-haphazard.ogg|a=California}}
* {{IPA|en|/(ˌ)hæpˈhæz.əd/|a=AU}}
** {{audio|en|en-au-haphazard.ogg|a=Queensland}}
* {{IPA|en|/(ˌ)hɛpˈhɛz.əd/|a=NZ}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv}}
# ဢမ်ႇၶပ်ႉဝၢင်းၽႅၼ်သေပဵၼ်။
# ဢမ်ႇႁၢင်ႈႁႅၼ်းသေပဵၼ်။
# ပဵၼ်ဢမ်ႇၸပ်းလွၵ်းၸပ်းလႆၢး။
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ဢမ်ႇၶပ်ႉဝၢင်းၽႅၼ်သေပဵၼ်မႃး။
# ဢမ်ႇႁၢင်ႈႁႅၼ်းသေပဵၼ်မႃး။
# ဢၼ်ပဵၼ်ဢမ်ႇၸပ်းလွၵ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jqvnn68uw1j0aknykd8cfo06znve88m
haphazards
0
75921
292899
2026-09-19T09:13:20Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292899
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|haphazard}}
s4yeizy2rhm6zzg7vcsekwnv530mywz
happen
0
75922
292900
2026-09-19T09:13:30Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292900
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpən/}}
* {{audio|en|en-us-happen.ogg|a=US}}
* {{rhymes|en|æpən|s=2}}
===သၢင်ႈ===
{{en-verb}}
# ပဵၼ်။
# ပဵၼ်မႃး။
# ယွၼ်ႉသေဢၼ်ဢၼ်လႄႈ ပဵၼ်။
# happen on၊ upon, ပဵၼ်ၸွမ်းၼင်ႇလႆႈႁဵတ်းဝႆႉ။
# ၵၢမ်ႇ။
# as it happen, ဢဝ်ၵၢမ်ႇဝႃႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
fcmnbk8gvt01wy3jqea7t94o47ukv2l
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpən
14
75923
292901
2026-09-19T09:13:41Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
292901
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpən/2 သဵင်
14
75924
292902
2026-09-19T09:13:50Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
292902
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpən]]
dqlttkef1n7j8wrcz73pnyw6fdx6g8q
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æpən
106
75925
292903
2026-09-19T09:14:00Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
292903
wikitext
text/x-wiki
{{rhymes nav|en|æ|pən}}
==သဵင်ဢွၵ်ႇ==
-ăpən, /-æpən/, /<tt>-{p@n</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|'appen}}
* {{l|en|happen}}
* {{l|en|m'appen}}, {{l|en|mappen}}
* {{l|en|tappen}}
{{rhyme-bottom}}
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|behappen}}
* {{l|en|mayhappen}}
* {{l|en|mishappen}}
* {{l|en|rehappen}}
* {{l|en|unhappen}}
* {{l|en|Verstappen}}
{{rhyme-bottom}}
nx94fkexlw5sa3rq5fdlg7af9arf47n
happened
0
75926
292904
2026-09-19T09:14:10Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292904
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpənd/}}
* {{audio|en|en-us-happened.ogg|a=US}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|happen||ed-form}}
3t0lm6wfml3bgtkvt90vtnbo5lr8efi
happenest
0
75927
292905
2026-09-19T09:14:20Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292905
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|happen||st-form}}
2g9ffewyolsoqgsq50er4jm92rolent
happens
0
75928
292906
2026-09-19T09:14:30Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292906
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpənz/}}
* {{audio|en|LL-Q1860 (eng)-Back ache-happens.wav|a=UK}}
* {{audio|en|en-us-happens.ogg|a=US}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|happen||s-verb-form}}
4wlxaji3n1pjla315j5m1gfd2amc7jo
happening
0
75929
292907
2026-09-19T09:14:40Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292907
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpɪnɪŋ/|/ˈhæpənɪŋ/|[ˈhæpnɪŋ]|[ˈhæpnɪn]|a=RP,GA,CA,AU}}
** {{audio|en|en-us-happening.ogg|a=California}}
===ႁိၵ်ႈ===
{{en-noun}}
# လွင်ႈပဵၼ်သေလွင်ႈလွင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
io3pu2513g5btzne3silxwmyu1epgpw
happenings
0
75930
292908
2026-09-19T09:15:07Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292908
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|happening}}
037o3bar7y257eb4e8tj0wyb9dsz5ao
happeningest
0
75931
292909
2026-09-19T09:15:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292909
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|happening}}
7hj7fe2s7q3ne0p0bvw5tzotq87weaw
happy
0
75932
292910
2026-09-19T09:15:35Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292910
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpi/|a=RP,GA,AU}}
** {{audio|en|En-uk-happy.ogg|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Naomi Persephone Amethyst (NaomiAmethyst)-happy.wav|a=GA}}
** {{audio|en|en-us-happy.ogg|a=GA}}
** {{audio|en|en-au-happy.ogg|a=AU}}
* {{IPA|en|/ˈhapɪj/|a=SSB}}
* {{IPA|en|/ˈhape/|/ˈhapɪ/|/ˈhapi/|a=Scotland}}
* {{IPA|en|/ˈhɛpi/|a=NZ}}
* {{hyphenation|en|hap|py}}
* {{rhymes|en|æpi|s=2}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er,more}}
# ဢၼ်မူၼ်ႈသိူဝ်း။
# ဢၼ်ၵျေႃႇ။
# ဢၼ်ပၼ်လွင်ႈမူၼ်ႈသိူဝ်း။
# ဢၼ်ႁၢၼ်ႉၸႂ်။
# ဢၼ်ပဵင်းပေႃးၸႂ်။
# ဢၼ်မူၼ်ႈသိူဝ်းသေႁဵတ်း၊ တူင်ႉၼိုင်။
# ဢၼ်ၵၢမ်ႇလီ။
# (ပႆၢးဝူၼ်ႉ၊ တၢင်းႁဵတ်း၊ ၶေႃႈၵႂၢမ်း) ဢၼ်သႆၢငႆၢလီ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
1mq82dpj6a0g3edjm5m8xhnxsfj9evc
happying
0
75933
292911
2026-09-19T09:16:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292911
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|happy||ing-form}}.
ikuxglwrxbou0a25wh5a1yni04oh3fn
happier
0
75934
292912
2026-09-19T09:16:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292912
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpi.ə/|a=RP}}
* {{IPA|en|/ˈhapɪj.ə/|a=SSB}}
* {{IPA|en|/ˈhæpi.ɚ/|a=GA}}
** {{audio|en|LL-Q1860 (eng)-Flame, not lame-happier.wav|a=US}}
* {{IPA|en|/ˈhape.əɾ/|a=Scotland}}
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-comparative of|happy}}
#* {{quote-journal|en|year=1941|month=November|title=Notes and News: The Centenary of Cook's|journal=Railway Magazine|page=513|text=This world-wide travel organisation recently attained its centenary, and under '''happier''' conditions than those prevailing at the present time the event would doubtless have been celebrated worthily.}}
27q52c23bm0i0osfjn6huodfdd1a74r
happiest
0
75935
292913
2026-09-19T09:16:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292913
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæp.i.ɪst/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-happiest.wav|a=Southern England}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-happiest.wav|a=US}}
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|happy}}
rc8g2r05ypcnvcf5y081sr3yxx3ks56
happied
0
75936
292914
2026-09-19T09:16:45Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292914
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|happy||ed-form}}.
tdp62tj5hds869h6hykg1809kwa1oc2
happy-go-lucky
0
75937
292915
2026-09-19T09:16:55Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292915
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-happy-go-lucky.wav|a=US}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|happy-go-luckier}}
# ဢၼ်မေႃယူႇမူၼ်ႈမူၼ်ႈသိူဝ်းသိူဝ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
3l4uc3f18x95in6gglodxvanye8j1d9
happy-go-luckier
0
75938
292916
2026-09-19T09:17:05Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292916
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-comparative of|happy-go-lucky}}
31hsugui24pljmoc8dqrqb08tw8b8gt
happy-go-luckies
0
75939
292917
2026-09-19T09:17:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292917
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|happy-go-lucky}}
llvivck7ni2l3d5puur7fma5xagomoq
happy-go-luckiest
0
75940
292918
2026-09-19T09:17:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292918
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|happy-go-lucky}}
72m6476eum29h97laby4t21o79cz5vv
happily
0
75941
292919
2026-09-19T09:17:35Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292919
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæp.ɪ.li/|a=RP}}
* {{IPA|en|/ˈhæp.ə.li/|a=GA}}
* {{audio|en|En-us-happily.ogg|a=GA}}
* {{homophones|en|aptly|aa=in some <<h-dropping>> accents}}
* {{rhyme|en|æpɪli|s=3}}
* {{hyphenation|en|hap|pi|ly}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv|more,er<l:rare>}}
# မူၼ်ႈမူၼ်ႈသိူဝ်းသိူဝ်း။
# ၵျေႃႇ။
# ႁၢၼ်ႉၸႂ်။
# သႆၢငႆၢလီၼႃႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
qguuton0xz1ty67hx2gxkkhvkwphkjn
happilier
0
75942
292920
2026-09-19T09:17:45Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292920
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉသၢင်ႈ}}
# {{lb|en|rare}} {{en-comparative of|happily|POS=adverb}}
#* {{quote-book|en|author=[[w:Richard Rogers (theologian)|Richard Rogers]]|title=A Commentary vpon the VVhole Booke of Iudges. Preached First and Deliuered in Sundrie Lectures; Since Collected, and Diligently Perused, and Now Published.{{nb...|For the Benefit Generally of All Such as Desire to Grow in Faith and Repentance, and Especially of Them, Who Would More Cleerely Vnderstand and Make Vse of the Worthie Examples of the Saints, Recorded in Diuine History.}}|location=London|publisher={{...|Imprinted by}} Felix Kyngston for Thomas Man,{{nb...|and are to be sold at his shop in Pater-noster Row, at the signe of the Talbot.}}|year=1615|page=112|pageurl=https://archive.org/details/bim_early-english-books-1475-1640_a-commentary-upon-the-wh_rogers-richard_1615/page/112/mode/1up|passage=Now further, for people that liue vnder a good miniſtry, (to ſay a little of them, ''Moſes'' his being among the people, doth wofully prognoſticate, vnto what a paſſe they are like to grow, if they had elbow roome. For though none might liue '''happilier''' then they, yet who (for the moſt part) doe leſſe looke after it? for as they in ''Moſes'' abſence from them but fortie daies, made themſelues a calfe to worſhip: euen ſo the people are ſo brutiſh in theſe daies, and diſordered, euen while their faithfull paſtors liue with them, that the greateſt part of them, take no good by them: what did I ſay? nay they liue moſt offenſiuely vnder them.}}
#* {{quote-book|en|author=Peter de la Primaudaye [''i.e.'', {{w|Pierre de La Primaudaye}}]|tlr=W. P. [''i.e.'', {{w|William Phillip}}?]|title=The Christian Philosophie of the French Academie. Of the True and Onely Meanes to Obtaine Eternall Life. The Fourth Booke.{{nb...|Written in French by Peter de la Primaudaye Esquire, Seigneur de la Barre, Councelor and Steward of the French Kings House. Translated out of French by W. P.}}|series=The French Academie. Fully Discoursed and Finished in Foure Bookes.{{nb...|1. Institution of Manners and Callings of All Estates. 2. Concerning the Soule and Body of Man. 3. A Notable Description of the Whole World, &c. 4. Christian Philosophie, Instructing the True and Onely Meanes to Eternall Life. This Fourth Part Neuer Before Published in English. All Written by the First Author, Peter de la Primaudaye, Esquire, Lord of Barre, Chauncellour, and Steward of the French Kings House.}}|location=London|publisher={{...|Printed [by]}} [John Legat] for [[w:Thomas Adams (publisher)|Thomas Adams]]|year=1618|page=1028|pageurl=https://archive.org/details/bim_early-english-books-1475-1640_the-french-academie-ful_la-primaudaye-pierre-de_1618/page/1030/mode/1up|passage=For in me there is no more feare of eternall death, ſeeing my ſoule, beleeuing in the Sonne of God, before death, paſſeth from death to life, I doe no more feare corporall death, becauſe in reſpect of me it is no more a paine inflicted vpon mee for ſin, but a teſtimony of the goodnes of God, who by that way will haue me enter into life, no more a deſtruction vnto mee, but a preparation made for me to attain to a better ſtate, and to liue '''happilier''', nor no more a ſubiect to deſpaire, but an argument of hope, that I ſhall ſee my Sauiour in my fleſh, participating with his life, to be with him without ſpot or wrinkle, feare of death, or vengeance for ſinne: {{...}}}}
#* {{quote-book|en|author=w:Ovid|tlr=[[w:Wye Saltonstall|W[ye] S[altonstall]]]|title=Ovid’s Heroicall Epistles|location=London|publisher={{...|Printed by}} R. B. for Michael Sparke,{{nb...|and are to bee sold at his House in Greene Arbour.}}|year=1636|page=49|pageurl=https://archive.org/details/bim_early-english-books-1475-1640_ovids-heroicall-epistles_ovidius-naso-publius_1636/page/49/mode/1up|passage=Nor did’ſt thou courage vvant, though thou did’ſt kill / Thy father, and his pretious bloud did’ſt ſpill. / Would thy valour had beene '''happilier''' employ’d, / Though he vvere unvvillingly by thee deſtroy’d. / For thou Æ''giſthus'' kill’dſt unluckily, / And did’ſt fulfill thy hapleſſe fate thereby.}}
#* {{quote-book|en|author=Ant: Ashcam [''i.e.'', {{w|Anthony Ascham}}]|title=A Discourse: Wherein Is Examined, What Is Particularly Lawfull During the Confusions and Revolutions of Government. Or, How Farre a Man May Lawfully Conforme to the Powers and Commands of Those Who with Various Successes Hold Kingdomes Divided by Civill or Forreigne Warres,{{nb...|Whether It Be, 1. In Paying Taxes. 2. In Personall Service. 3. In Taking Oaths. 4. In a Mans Giving Himselfe up to a Finall Allegiance, in Case the Warre End to the Advantage of the Unjust Power or Party. Likewise, Whether the Nature of Warre Be Inconsistent with the Nature of the Christian Religion? Three Parts: By Ant: Ashcam, Gent.}}|location=London|publisher={{...|Printed for}} {{w|Humphrey Moseley}},{{nb...|and are to be sold at his shop, at the Signe of the Princes Armes in St Pauls Churchyard.}}|year=1648|page=102|pageurl=https://books.google.com/books?id=FqszAQAAMAAJ&pg=PA102|passage=Notwithſtanding by his free goodneſſe hee hath inveſted us in ſome right, both by Promiſe, Oath and Covenant, by which it is impoſſible, as Saint ''Paul'' ſaith, that he ſhould play falſe with us; ſo that though he may ſeem to treat us unjuſtly here, yet hee can and will recompence it '''happilier''' to us in an other world, whereas dunghill Flies by his holy will are not capable of another life: {{...}}}}
#* {{quote-book|en|author=[[w:Giovanni Francesco Biondi|Gio[vanni] Francesco Biondi]]|tlr=[[w:Robert Gentilis|R[obert] G[entilis]]]|title=Coralbo. A Nevv Romance in Three Bookes.{{nb...|Written in Italian by Cavalier Gio. Francesco Biondi. And Now Faithfully Render’d into English.}}|location=London|publisher={{...|Printed for}} {{w|Humphrey Moseley}}{{nb...|and are to be sold at his shop, at the Prince’s Armes in St. Paul’s Church-yard}}|year=1655|page=32|pageurl=https://quod.lib.umich.edu/e/eebo2/B17861.0001.001/1:5?ALLSELECTED=1;c=eebo;c=eebo2;g=eebogroup;rgn=div1;singlegenre=All;sort=datea;subview=detail;type=simple;view=fulltext;xc=1;q1=happilier|newversion=republished in|title2=Early English Books Online|location2=Ann Arbor, Mich.|publisher2=w:Text Creation Partnership|year2=p. 2011|passage=Wherefore I have delibe∣rated to beseech you, to give me leave to goe abroad, being an ar∣med Knight, desiring to receive this Order by no other more valiant, or '''happilier''' presaging hand then yours.}}
#* {{quote-book|en|author=w:Nathaniel Johnston|title=The Excellency of Monarchical Government, Especially of the English Monarchy; Wherein Is Largely Treated of the Several Benefits of Kingly Government, and the Inconvenience of Commonwealths.{{nb...|Also of the Several Badges of Sovereignty in General, and Particularly According to the Constitutions of Our Laws. Likewise of the Duty of Subjects, and the Mischiefs of Faction, Sedition and Rebellion. In All Which the Principles and Practices of Our Late Commonwealths-Men Are Considered.}}|location=London|publisher={{...|Printed by}} T. B. for Robert Clavel{{nb...|at the Peacock in St. Paul’s Church-yard.}}|year=1686|pages=[https://books.google.com/books?id=nDIsAQAAMAAJ&pg=PA83 83] and [https://books.google.com/books?id=nDIsAQAAMAAJ&pg=PA157 157]|passage=We ought likewiſe to conſider that there are moral Vertues which conciliate ſuch a Reverence to the Practiſers of them, that they are great helps to preſerve and make flouriſhing every Kingdom and Commonweal, and which conſtitute a conſiderable Religious Portion of civil Government; and when Princes and People exerciſe them, both live '''happilier''', than when without them, great Sanctity and Devotion are only pretended. {{...}} Being deſirous, as much as I can, to ſhow the Ancienteſt uſages, and under the ſeveral Conqueſts of ''England''; how the Government hath received Growth and Alteration (ſometimes the People being under the Slavery of abſolute Conquerors, and other times factious Nobles bearding their Kings) how the even Thred of Regular Government hath been carried on or interrupted; how from an abſolute Power of giving Law, and ruling in a Military way, by the Feudal Law, and many other particulars, the Government is brought to that Temperament, whereby the Subjects may, if they will be dutiful, live '''happilier''' than any other do.}}
#* {{quote-journal|en|title=Party Politics|editor=w:James Densmore|journal=Oshkosh True Democrat.{{nb...|Devoted to the Discussion of Every Thing Relating to the Public Good.}}|volume=I|issue=3|location=Oshkosh, Wis.|publisher=Densmore & Cooley|date=2 March 1849|page=[2]|pageurl=https://www.newspapers.com/newspage/37175305/|column=2|oclc=12497204|passage=All men here have a voice in declaring who shall be the officers of government. This voice is manifested in exercising what is called the right of suffrage. Reason teaches that this is conformable to Nature, and experience shows that better officers are obtained by this method, and that people live '''happilier''' under the administration of such officers.}}
#* {{quote-book|en|title=Calendar of State Papers, Foreign Series|publisher=Great Britain, Public Record Office|date=13 July 1852|year_published=1909|page=156|pageurl=https://books.google.com/books?id=6_c-AQAAMAAJ&q=happilier|passage=I request you to fashion the suit to be worth to me £3,000 or more, whereby I may have some good cause to think my time, expenses, and service the '''happilier''' employed and my obligation to you the greater.}}
#* {{quote-journal|en|author=Reddem Quick [pseudonym]|title=Book Revue|journal=The Pilot|volume=32|issue=2|location=New York, N.Y.|publisher=w:Fort Hamilton High School|date=1 April 1958|page=three|pageurl=https://archive.org/details/thepilot19580401/page/n2/mode/1up|passage=Eggie merrily gets married, and all live happily till presumably Sinus dies, when all live '''happilier'''.}}
#* {{quote-journal|en|author=Robert Stall|title=The Monster Who Almost Spoiled Christmas|journal=Weekend Magazine|series=[[w:Montreal Star|The Montreal Star]]|volume=25|issue=51|location=Montreal, Que.|date=20 December 1975|section=chapter 2|page=13|pageurl=https://www.newspapers.com/newspage/740575220/|columns=2–3|passage=Another interesting thing about Happily[-Ever-After Land]’s sky is that, unlike the rest of the North Pole, the sun stays out until around 7 PM every night, causing everyone to live even '''happilier'''.}}
#* {{quote-newsgroup|en|author=Paulo Pereira|title=Congratulations for 7.01|archiveurl=https://web.archive.org/web/20231229142505/https://groups.google.com/g/borland.public.vdbase.programming/c/nwTyjXVTwbs/m/m7IW52qosBMJ|newsgroup=borland.public.vdbase.programming|date=27 March 1998|passage=Congratulations Borland. I happy to see that our suggestions are not thrown away! Thank you for this new release of Visual Dbase (7.01)... We are still waiting but not for so much and with more hope and '''happilier'''.}}
#* {{quote-newsgroup|en|author=The Woodruffs|title=Faire names|archiveurl=https://web.archive.org/web/20231229142457/https://groups.google.com/g/alt.fairs.renaissance/c/O8aBzeZNoHo/m/Tt3pD3Tk2f4J|newsgroup=alt.fairs.renaissance|date=9 February 2000|passage=Sharon L. Krossa wrote<br>Happily, there is available<br>> on the internet many very useful articles for those interested in<br>> re-creating pre-1600 names. Even '''happilier''', there is a single site that<br>> lists just about every reliable article out there: {{...}}}}
e2d8c7mp65yz1z4cddz2kmtl47kl0fi
happiliest
0
75943
292921
2026-09-19T09:17:55Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292921
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉသၢင်ႈ}}
# {{lb|en|rare}} {{en-superlative of|happily|POS=adverb}}
#* {{quote-book|en|author=Francesco Carmeni|tlr=anonymous|title=Nissena, an Excellent New Romance: Written Originally in Italian by Francesco Carmeni; and Now Englished by an Honorable Anti-Socordist|location=London|publisher={{...|Printed for}} {{w|Humphrey Moseley}}{{nb...|and are to be sold at his Shop at the sign of the Princes Arms in Sᵗ Pauls Church-yard}}|year='''1653''' [''i.e.'', '''1652''']|pages=5–6|pageurl=https://quod.lib.umich.edu/e/eebo2/A80393.0001.001/1:2?ALLSELECTED=1;c=eebo;c=eebo2;g=eebogroup;rgn=div1;singlegenre=All;sort=occur;subview=detail;type=simple;view=fulltext;xc=1;q1=happiliest|newversion=republished in|title2=Early English Books Online|location2=Ann Arbor, Mich.|publisher2=w:Text Creation Partnership|year2=p. 2011|passage=The houre and place were appointed, which was to be the fatall moment and Capitoll to the Triumph of that Beauty which should '''hap'''∣'''piliest''' incounter the Genius of those ''Pa∣ris'es,'' who being to be Judges, the older they were, would be the less passionate in fa∣vourably deciding the question wheron the possession not of an Aple, but of a Crown did depend.}}
#* {{quote-book|en|author=[[w:Sir George Wharton, 1st Baronet|George Wharton]]|title=Apotelesma: or, The Nativity of the World, and the Revolution Thereof, with Astrologicall Judgements Thereupon|location=London|publisher={{...|Printed for}} Tho[mas] Vere{{nb...|at the Angel without Newgate}}, and Nath[aniel] Brook{{nb...|at the Angel in Corn-hill.}}|year=1655|page=29|pageurl=https://quod.lib.umich.edu/e/eebo/A65578.0001.001/1:4.4?ALLSELECTED=1;c=eebo;c=eebo2;g=eebogroup;rgn=div2;singlegenre=All;sort=occur;subview=detail;type=simple;view=fulltext;xc=1;q1=happiliest|newversion=republished in|title2=Early English Books Online|location2=Ann Arbor, Mich.|publisher2=w:Text Creation Partnership|year2=p. 2011|passage=Now, to know the particular persons concerned therein, and on whom their▪ ''Effects'' shall fall, the '''''Happiliest''''' or ''Heaviest,'' it were requisite that I first knew and perused their respective ''Genitures;'' {{...}}}}
#* {{quote-book|en|author=H[enry] D[awbeny]|title=Historie & Policie Re-viewed, in the Heroick Transactions of His Most Serene Highnesse, Oliver, Late Lord Protector; From His Cradle, to His Tomb:{{nb...|Declaring His Steps to Princely Perfection; as They Are Drawn in Lively Parallels to the Ascents of the Great Patriarch Moses, in Thirty Degrees, to the Height of Honour.}}|location=London|publisher={{...|Printed for}} Nathaniel Brook,{{nb...|at the Angel in Cornhill.}}|year=1659|page=172|pageurl=https://quod.lib.umich.edu/e/eebo/A82001.0001.001/1:23.1?ALLSELECTED=1;c=eebo;c=eebo2;g=eebogroup;rgn=div2;singlegenre=All;sort=occur;subview=detail;type=simple;view=fulltext;xc=1;q1=happiliest|newversion=republished in|title2=Early English Books Online|location2=Ann Arbor, Mich.|publisher2=w:Text Creation Partnership|year2=p. 2011|passage=Now, not to trouble you with a literal translation (for I hold the words not worth it) he tells us, That he would not have a Prince addicted to too much De∣votion; nor to affect to be a little Saint: he sayes his prayers best (quoth he) that does his businesse '''happiliest''', ''&c.''}}
#* {{quote-book|en|title=Beraldus, Prince of Savoy, a Novel. In Two Parts. Translated out of French by a Person of Quality.|location=London|publisher={{...|Prnted[sic] for}} W. Grantham{{nb...|at the Bear}}, and J. Crump{{nb...|at the three Bibles in St. Pauls Church-Yard.}}|year=1675|pages=10–11|pageurl=https://archive.org/details/bim_early-english-books-1641-1700_beraldus-prince-of-savo_1675/page/(10)/mode/1up|passage=I paſs’d my Youth the '''happilieſt''' in the World, the Duke of ''Saxony'' my Father, dying in my Infancy, and leaving the Emperor ''Otho'', [?] Brother, Guardian of his three Children, with power of diſpoſing of the Dutchy of ''Saxony'', to which he ſhould judge moſt worthy, I had the good fortune, at the finiſhing my Exerciſes, to be very agreeable to the Emperor; and at the ſame time, to ſee my ſelf (If I may without vanity ſay it) the Love of all the Ladies of his Court.}}
#* {{quote-book|en|author=w:John Strype|title=Annals of the Reformation and Establishment of Religion, in the Church of England.{{nb...|Containing Accounts of the Government and Inspection of the Bishops in Their Respective Diocesses; as Matters, Requiring Their Care, Fell Out Each Year: Ecclesiastical Commissions. The Busy Actings of Papists and Puritans: The Difficulties and Dangers the State as Well as the Church Met with from Time to Time: Occasioned Chiefly from the Endeavours to Overthrow Both, by the Power and Practices of Such as Favoured Mary, Queen of Scots: Of Whom Many Special Transactions; and Chiefly of Her Sentence and Death; and the Consequences Thereof, Are Shewn: And the Spanish Invasion in 1588. Both Serving to Enlighten Those Two Great Crises of Queen Elizabeth’s Reign. Together with Divers Other Political Affairs of Note Interspersed. […]}}|volume=III|location=London|publisher={{...|Printed for}} Edward Symon,{{nb...|in Cornhill.}}|year=1728|page=379|pageurl=https://archive.org/details/bim_eighteenth-century_annals-of-the-reformatio_strype-john_1725_3/page/379/mode/1up|passage=Where on the other ſide, carrying him with that Moderation that becomes a Prince of his Perfection and Education, and is neceſſary in this remedileſs Accident, he ſhall both in the mean while, '''happilieſt''' provide for his own Security, and for the Time to come through his kind of good Uſage of her Majeſty, who hath deſerved ſo greatly at his Hands, win unto himſelf the Hearts, Good-will and Affection of the whole Body of the Realm.}}
#* {{quote-newsgroup|en|author=Cory C. Albrecht|title=Why Janet Jackass's tit on tv was a bad thing|archiveurl=https://web.archive.org/web/20231231124812/https://groups.google.com/g/alt.fan.howard-stern/c/io-iLLeXES4/m/1ihiEfGQGJkJ|newsgroup=alt.fan.howard-stern|date=15 February 2004|passage=The thing is, a woman's sexual power does exist, and every guy knows this. Even if he is the '''happiliest''' attached man on the planet who would never cheat on his partner, when a sexy woman enters the room for damn sure he notices her. }}
#* {{quote-newsgroup|en|author=Mimi Cohen|title=Disabled woman set on fire as Paris riots spread|archiveurl=https://web.archive.org/web/20231231125001/https://groups.google.com/g/alt.california/c/2nS4HH9oR-I/m/cQ8kbnri7QoJ|newsgroup=alt.california|date=5 November 2005|passage=What I'd like to say to you and only you, is you really ought to get a life, pretty sad that you track my posts and even create a thread in my name. *IF* I weren't already the '''happiliest''' married woman on the planet I *MIGHT* be flattered.... no I've thought about it, I wouldn't be flattered even if I *WEREN'T* the '''happiliest''' married woman on the planet.}}
#* {{quote-web|en|author=Gina Keating|title=Ashton Kutcher is world's "happiliest" married man|work=w:Reuters|archiveurl=https://archive.is/s2M1A|archivedate=31 December 2023|url=https://www.reuters.com/article/idUSN08493054/|date=9 May 2008|passage=The planet's "'''happiliest'''" married man, Ashton Kutcher, was once a champion carouser until he met his wife five years ago and became a changed man. {{...}} "I knew she was the person I wanted to spend the rest of my life with," he said. "I am the '''happiliest''' -- I think I just invented that word -- married guy on the planet."}}
t7j5ev72dschb3ug7b13xfwui493bij
happiness
0
75944
292922
2026-09-19T09:18:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292922
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæpinɪs/|/ˈhæpinəs/}}
* {{audio|en|en-us-happiness.ogg|a=US}}
* {{hyph|en|hap|pi|ness}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈမူၼ်ႈသိူဝ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
9zqnw5qi1b8rtnhiy8pj97yjsal63m3
happinesses
0
75945
292923
2026-09-19T09:18:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292923
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|happiness}}
#* {{quote-book|en|title=Mill's Principle of Utility: A Defense of John Stuart Mill's Notorious Proof|page=110|author=Necip Fikri Alican|year=1994|passage=Notwithstanding the temptation to use familiar mathematical or [[sociopolitical]] models to explain Mill's elusive notion, the general happiness of a population is neither the sum total or arithmetic average of the several '''happinesses''' of individual persons in the population...}}
====Usage notes====
''Happinesses'' is used when there are multiple forms or measures of happiness which are to be distinguished. Typically happiness is uncountable.
gsddndigym74rarf784ip07sepsaqep
hara-kiri
0
75946
292924
2026-09-19T09:18:25Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292924
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˌhæɹəˈkɪɹi/|/ˌhɑɹəˈkɪɹi/|;|q3=widespread but nonstandard|/ˌhæɹiˈkæɹi/|/ˌhɛɹiˈkɛɹi/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hara-kiri.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun|-}}
# (ၵူၼ်းၶိူဝ်းထၢၼ်ႈသုင်မိူင်းၵျႃႇပၢၼ်ႇၶဝ် ယၢမ်းဢမ်ႇဢဝ်ပုၼ်ႈၽွၼ်းၸဝ်ႈၵဝ်ႇလႆႈယဝ်ႉၼၼ်ႉ) လွင်ႈဢဝ်မိတ်ႈဝူင်ႇပုမ်သေ ႁႅမ်တၢႆၶိုၼ်းတူဝ်ၵဝ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
6i09o6swauz7tuu6df0vtzsok96pcnr
harangue
0
75947
292925
2026-09-19T09:18:35Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292925
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/həˈɹæŋ/|[həˈɹæŋ]|a=non-æ-raising}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harangue.wav|a=Southern England}}
* {{a|en|æ-raising}}
** {{IPA|en|/həˈɹeɪ̯ŋ/|[həˈɹeɪ̯ŋ]|;|/həˈɹɛ̃ŋ/|[həˈɹɛ̃ŋ]|a=US,CA}}
*** {{audio|en|en-us-harangue.ogg|a=US}}
* {{rhymes|en|æŋ|s=2}}
* {{hyph|en|ha|rangue}}
===သၢင်ႈ===
{{en-verb}}
# လၢတ်ႈႁႅင်းႁႅင်း။
# ပႃးၸႂ်လမ်သေလၢတ်ႈ၊ ထဵင်။
# ၸႂ်ႉႁဵတ်း။
===ႁိၵ်ႈ===
{{en-noun}}
# လွင်ႈလၢတ်ႈႁႅင်းႁႅင်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
b77tx9o1wu0if841qetcbvrm5yx5t0h
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æŋ/2 သဵင်
14
75948
292926
2026-09-19T09:18:55Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
292926
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æŋ]]
8c7ccp8znavh1u72skm4pjxxfgtr587
haranguing
0
75949
292927
2026-09-19T09:19:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292927
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harangue||ing-form}}
aie4ijcis546krle93esb9rptsvhzvy
harangues
0
75950
292928
2026-09-19T09:19:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292928
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harangue}}
#* {{quote-book|en|year=1875|author=W. E. (William Ewart) Gladstone|title=Speeches of Pope Pius IX.|url=http://books.google.com/books?vid=LCCN09029946&id=v9V0eMfntgwC&pg=PA4&lpg=PA4&dq=harangues|page=4|passage=It can hardly be policy, it must be a necessity of his nature, which prompts his incessant '''harangues'''.}}
#* {{quote-book|en|year=1997|author=Kevin Starr|title=Endangered Dreams: The Great Depression in California|url=http://books.google.com/books?vid=ISBN0195118022&id=7GvgN0y7yI4C&pg=PA11&lpg=PA11&dq=harangues&sig=wr48Si8yy0D-_iHc5MKrCNZvYFg|page=11|passage=Or perhaps Hull merely rewrote Kearney's incoherent '''harangues''', polishing their language, heightening their ferocity, after they were delivered?}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harangue||s-verb-form}}
cxnbncokhg6qj28nyl0qryulcupopw9
harangued
0
75951
292929
2026-09-19T09:19:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292929
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harangue||ed-form}}
t67d1isc2yyi6a15sjtg6z0m0j6lvjf
harass
0
75952
292930
2026-09-19T09:19:45Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292930
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|hərăsʹ|a=RP,GA}}, {{IPA|en|/həˈɹæs/}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harass.wav|a=Southern England}}
* {{enPR|hăʹrəs|a=dated}}, {{IPA|en|/ˈhæɹəs/}}
* {{rhymes|en|æs|æɹəs|s=2}}
* {{hyphenation|en|ha|rass}}
===သၢင်ႈ===
{{en-verb}}
# ယႃႉ။
# ၵဝ်း။
# ၵမ်းၵမ်းတိုၵ်းတေႃး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
cly08tcweeb7fz1grya9kuob48m4mvy
harassest
0
75953
292931
2026-09-19T09:20:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292931
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harass||st-form}}
qilkcdmxrfwf296x768pdr34c42piex
harassing
0
75954
292932
2026-09-19T09:20:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292932
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harass||ing-form}}
3qwblao8ty3h9q6mtcz6baimxnnldwu
harasses
0
75955
292933
2026-09-19T09:20:45Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292933
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harass||s-verb-form}}
3a52l9nwefhj57x8v4sw7pdnxy24k6i
harassed
0
75956
292934
2026-09-19T09:20:55Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292934
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harass||ed-form}}
1t4ic2lwq2y8dqpk61t872amtywypqv
harassment
0
75957
292935
2026-09-19T09:21:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292935
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/həˈɹæsmənt/|/ˈhæɹəsmənt/<a:dated>}}
* {{audio|en|En-us-harassment.oga|a=US}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harassment.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈယႃႉၵဝ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
adc50trmaxvoat1i0befkabwxk07kqs
harassments
0
75958
292936
2026-09-19T09:21:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292936
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harassment}}
bef0t05sbrt10g2jzf2olzt3s6lfec4
harbinger
0
75959
292937
2026-09-19T09:21:26Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292937
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːbɪndʒə/|a=RP}}
* {{enPR|härʹbĭnjər|a=US}}, {{IPA|en|/ˈhɑɹ.bɪn.d͡ʒəɹ/}}
** {{audio|en|en-us-harbinger.ogg|a=US}}
* {{hyphenation|en|har|bin|ger}}
===ႁိၵ်ႈ===
{{en-noun}}
# လွင်ႈၼႄသႆၢငႆၢ၊ ႁၢင်ႈၽၢင်၊ ၼိမိတ်ႈမၼ်းဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
f81vmohjhw8x14dgqkroytd1ktauyza
harbingers
0
75960
292938
2026-09-19T09:21:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292938
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harbingers.wav|a=US}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harbinger}}
hmzrimzvaw0f8wltpql2zu5ya9fsid9
harbingered
0
75961
292939
2026-09-19T09:21:45Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292939
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbinger||ed-form}}
c6ry58bgtl94du10s038xnstnsfvyv1
harbingering
0
75962
292940
2026-09-19T09:21:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292940
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbinger||ing-form}}
ilekniciw72m6v3d6hy7qc4l8wp11b1
harbour
0
75963
292941
2026-09-19T09:22:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292941
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harbour.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun}}
# တႃႈႁိူဝ်း။
# တီႈလိုဝ်ႈသဝ်း။
===သၢင်ႈ===
{{en-verb}}
# ပၼ်တီႈလိုဝ်ႈသဝ်း။
# ဢဝ်သိူင်ႇ၊ ပႅပ်ႉဝႆႉ။
# ယိူၼ်ႉဝႆႉၼႂ်းၸႂ်။
# ပၼ်သေႃႉႁူမ်ႈၽူၺ်း။
# ၵိုတ်းႁိူဝ်းတႃႈႁိူဝ်း။
# ပွႆႇႁႂ်ႈၶိုၼ်ႈယႂ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
s36lzzttwvrm0dyrk70gyihokvgrskq
harbours
0
75964
292942
2026-09-19T09:22:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292942
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harbour}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbour||s-verb-form}}
s02izppoa69lboj8a2enwzrf671f2qw
harbouring
0
75965
292943
2026-09-19T09:22:25Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292943
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbour||ing-form}}
fsanrd9gxuloieohmjzvicsx98c6url
harbourest
0
75966
292944
2026-09-19T09:22:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292944
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbour||st-form}}
d67bju5gvq7lh6md04kg2vwym07eu7h
harboured
0
75967
292945
2026-09-19T09:22:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292945
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harbour||ed-form}}
bzx33rruuzyjgkb61he2c0mf5g3tupg
harbour dues
0
75968
292946
2026-09-19T09:22:55Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292946
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun}}
# ၶွၼ်ႇတႃႈႁိူဝ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
di8yy5kv0fx9nx340duog4xy4j1frvs
harbourage
0
75969
292947
2026-09-19T09:23:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292947
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# တီႈသေႃႉႁူမ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
4t6b29kptsjmmhjej3v24x4vhcbc8q1
harbourages
0
75970
292948
2026-09-19T09:23:15Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292948
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harbourage}}
s67hae25uccukrmlds1vypqn9kfov0x
hard
0
75971
292949
2026-09-19T09:23:25Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292949
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|häd|a=RP}}, {{IPA|en|/hɑːd/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hard.wav|a=Southern England}}
* {{enPR|härd|a=GenAm}}, {{IPA|en|/hɑɹd/}}
* {{audio|en|en-us-hard.ogg|a=US}}
* {{rhymes|en|ɑː(ɹ)d|s=1}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er,more}}
# ဢၼ်ၵႅၼ်ႇ၊ ဢၼ်ၶႅင်။
# ဢၼ်ႁဵတ်း။
# ဢၼ်ႁူႉ။
# ဢၼ်တွပ်ႇယၢပ်ႇ၊ ဢၼ်ယၢပ်ႇ။
# ဢၼ်မီးပၼ်ႁႃ။
# ဢၼ်လူဝ်ႇၶတ်းၸႂ်ႁၢဝ်ႈႁၢဝ်ႈႁႅင်းႁႅင်း၊ ဢၼ်လႆႈဢဝ်ႁႅင်းယႂ်ႇယႂ်ႇၼမ်ၼမ်သေ ႁဵတ်း။
# ဢၼ်ဢမ်ႇမေႃဢီးလူ။
# ဢၼ်ႁတ်းႁၢၼ်။
# ဢၼ်ၸႂ်ၵၼ်ႇ။
# ဢၼ်တိုၼ်းၸႂ်ႈ။
# ဢၼ်မီးလၵ်းထၢၼ်လီ။
# (ၾႃႉၽူၼ်) ဢၼ်ႁၢဝ်ႈႁႅင်း။
# (လဝ်ႈ) ဢၼ်ႁၢဝ်ႈၼႃႇ။
# (တူဝ်လိၵ်ႈ) ဢၼ်လႆႈဢွၵ်ႇသဵင်ၶႅင်ၶႅင်။
# a hard nut to crack, ပၼ်ႁႃယၢပ်ႇ။
# ၽူႈမူၼ်ႉမႄးယၢပ်ႇ။
# be hard on sb, ၵပ်းသိုပ်ႇပိူၼ်ႈႁၢဝ်ႈၶႅင်။
# take a hard line, ဢမ်ႇၶၢမ်ႇယွမ်းၵုမ်။
# hard of hearing, ဢၼ်ႁူၼၵ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
40m2ztpx7tmfe8n5dca6i5dony2n1vz
292988
292949
2026-09-19T09:30:56Z
SIITBot
662
Bot: ထႅမ်သႂ်ႇပႃး တွၼ်ႈပိုၼ်ႉထၢၼ်မႂ်ႇ ၶွင်ၶေႃႈၵႂၢမ်း ဢၼ်မီးၼႂ်း Dataset
292988
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|häd|a=RP}}, {{IPA|en|/hɑːd/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hard.wav|a=Southern England}}
* {{enPR|härd|a=GenAm}}, {{IPA|en|/hɑɹd/}}
* {{audio|en|en-us-hard.ogg|a=US}}
* {{rhymes|en|ɑː(ɹ)d|s=1}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er,more}}
# ဢၼ်ၵႅၼ်ႇ၊ ဢၼ်ၶႅင်။
# ဢၼ်ႁဵတ်း။
# ဢၼ်ႁူႉ။
# ဢၼ်တွပ်ႇယၢပ်ႇ၊ ဢၼ်ယၢပ်ႇ။
# ဢၼ်မီးပၼ်ႁႃ။
# ဢၼ်လူဝ်ႇၶတ်းၸႂ်ႁၢဝ်ႈႁၢဝ်ႈႁႅင်းႁႅင်း၊ ဢၼ်လႆႈဢဝ်ႁႅင်းယႂ်ႇယႂ်ႇၼမ်ၼမ်သေ ႁဵတ်း။
# ဢၼ်ဢမ်ႇမေႃဢီးလူ။
# ဢၼ်ႁတ်းႁၢၼ်။
# ဢၼ်ၸႂ်ၵၼ်ႇ။
# ဢၼ်တိုၼ်းၸႂ်ႈ။
# ဢၼ်မီးလၵ်းထၢၼ်လီ။
# (ၾႃႉၽူၼ်) ဢၼ်ႁၢဝ်ႈႁႅင်း။
# (လဝ်ႈ) ဢၼ်ႁၢဝ်ႈၼႃႇ။
# (တူဝ်လိၵ်ႈ) ဢၼ်လႆႈဢွၵ်ႇသဵင်ၶႅင်ၶႅင်။
# a hard nut to crack, ပၼ်ႁႃယၢပ်ႇ။
# ၽူႈမူၼ်ႉမႄးယၢပ်ႇ။
# be hard on sb, ၵပ်းသိုပ်ႇပိူၼ်ႈႁၢဝ်ႈၶႅင်။
# take a hard line, ဢမ်ႇၶၢမ်ႇယွမ်းၵုမ်။
# hard of hearing, ဢၼ်ႁူၼၵ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv|er}}
# ဢဝ်ဢဵၼ်ဢဝ်ႁႅင်းတႄႉတႄႉဝႃႈဝႃႈ။
# ၼင်ႇၵႃႈမီးဢဵၼ်မီးႁႅင်း။
# ႁၢဝ်ႈႁၢဝ်ႈႁႅင်းႁႅင်း။
# ၼၵ်းၼၵ်းၼႃၼႃ။
# ယၢပ်ႇယၢပ်ႇယဵၼ်းယဵၼ်း။
# ၶၢမ်ႇယၢပ်ႇၽိုတ်ႇသေ။
# ဢိူမ်ႈဝႆႉ။
# hard earned money, ငိုၼ်းႁႃယၢပ်ႇယၢပ်ႇယဵၼ်းယဵၼ်း။
# be hard hit, တူၵ်းတၢင်းယၢပ်ႇၽိုတ်ႇ တႄႉတႄႉဝႃႈဝႃႈ ယွၼ်ႉသုမ်းငိုၼ်း။
# ပီႈၼွင်ႉတႆၢ။
# be hard up for, ၺႃးလွင်ႈယၢပ်ႇၽိုတ်ႇ။
# ဢမ်ႇဝူၼ်ႉပွင်ႇ။
# run sb hard, လိုပ်ႈၸွမ်းတၢင်းလင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
hikao4u39a3ffp21u4g7znzp5ilt8gu
hardest
0
75972
292950
2026-09-19T09:24:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292950
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|härdʹĭst|a=RP}}, {{IPA|en|/ˈhɑːdɪst/}}
* {{enPR|härdʹĭst|a=GenAm}}, {{IPA|en|/ˈhɑɹdɪst/}}
* {{audio|en|en-us-hardest.ogg|a=US}}
** {{IPA|en|/ˈhɑɹdəst/|a=weak vowel}}
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|hard}}. Most [[rigid]] or most [[difficult]].
#: {{ux|en|Diamond is the '''hardest''' natural material.}}
#: {{ux|en|The '''hardest''' thing I ever did was run the 25th mile of a 26 mile long marathon.}}
0yw8f8ziadiqturx3yp8j1enmubfm5d
hardback
0
75973
292951
2026-09-19T09:24:16Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292951
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdˌbæk/|a=GA}}
* {{audio|en|En-us-hardback.ogg|a=US}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၸေႈၼႃႈသိူဝ်ႈပပ်ႉဢၼ်ၼႃ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
nnn0rqtwta4em2nu2vg82fu19nc6k72
hardbacks
0
75974
292952
2026-09-19T09:24:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292952
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardback}}
opic456gfr0rnyms5wxok5j3sp7ocxy
hardcover
0
75975
292953
2026-09-19T09:24:35Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292953
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːdˌkʌvə/|a=RP}}
* {{IPA|en|/ˈhɑɹdˌkʌvɚ/|a=GA,CA}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-hardcover.wav|a=Texas}}
* {{IPA|en|/ˈhɐːdˌkɐvə/|a=AU,NZ}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၸေႈၼႃႈသိူဝ်ႈပပ်ႉဢၼ်ၼႃ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
fh4fj8jmwsydjfexe3242dkml7q9wil
hardcovers
0
75976
292954
2026-09-19T09:24:45Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292954
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-hardcovers.wav|a=US}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardcover}}
baxl6ib4aye42h26rxvk2ta9c68ripk
hardbacked
0
75977
292955
2026-09-19T09:24:55Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292955
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|-}}
# ဢၼ်ပူၵ်ႉၸေႈၼႃဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jcoaujhtl6wstvchzagq83txonmn8a9
hardcovered
0
75978
292956
2026-09-19T09:25:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292956
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|-}}
# ဢၼ်ပူၵ်ႉၸေႈၼႃဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jcoaujhtl6wstvchzagq83txonmn8a9
hardbound
0
75979
292957
2026-09-19T09:25:15Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292957
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|-}}
# ဢၼ်ပူၵ်ႉၸေႈၼႃဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jcoaujhtl6wstvchzagq83txonmn8a9
hard currency
0
75980
292958
2026-09-19T09:25:25Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292958
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# ငိုၼ်းဢၼ်မီးလွင်ႈလပ်ႉလွင်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
0x5ziwx3vy8wb7m4pkvq8q8v7pifgmq
hard currencies
0
75981
292959
2026-09-19T09:25:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292959
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hard currency}}
8nlmjpf6s3macwhf75fhxdptq5gcdv1
hard drug
0
75982
292960
2026-09-19T09:25:45Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292960
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun}}
# ယႃႈမဝ်းၵမ်ဢၼ်ႁႂ်ႈၸပ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
ok20imh9tezn7a7v4qks7y1m9sfi23t
hard drugs
0
75983
292961
2026-09-19T09:25:55Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292961
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hard drug}}
nt5i3cif9o0wp468uzkpg6rrj7tq6cf
hardheaded
0
75984
292962
2026-09-19T09:26:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292962
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hardheaded.wav|a=Southern England}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|more,harderheaded|sup=most,hardestheaded}}
# ဢၼ်မေႃႁဵတ်းၵၢၼ်ၼႄ။
# ဢၼ်လၢတ်ႈဢဝ်လႆၢလႆၢ။
# ဢၼ်ဢမ်ႇမီးတၢင်းဢီးလူ။
# ဢၼ်ဢမ်ႇမေႃဝူၼ်ႉတေႃႇပိူၼ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
i7dte8syrxji9cwtzwgd9yfa2srn91t
hardlabour
0
75985
292963
2026-09-19T09:26:15Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292963
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun}}
# ၶွၵ်ႈဢၼ်လႆႈႁဵတ်းၵၢၼ်ၵျၢမ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
rkla70cg2v51s3ke238pwe4sgralw7j
hard liquor
0
75986
292964
2026-09-19T09:26:26Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292964
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# လဝ်ႈႁၢဝ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jhk54gu0ftykit35h5nuqk1y5oph7ou
hard liquors
0
75987
292965
2026-09-19T09:26:35Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292965
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hard liquor}}
drh4n8gbi2irxrtu965y9jluxvenbbk
hardihood
0
75988
292966
2026-09-19T09:26:46Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292966
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-hardihood.wav|a=US}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈႁတ်းႁၢၼ်။
# လွင်ႈၶၢမ်ႇလႆႈတၢင်းယၢပ်ႇၽိုတ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
q9aw7jd1n1srq18hsu6a2t7xy8bwchj
hardihoods
0
75989
292967
2026-09-19T09:26:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292967
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardihood}}
72f69kpuuaswty2scsbc0ynlo1xviyr
hard luck
0
75990
292968
2026-09-19T09:27:05Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292968
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|-}}
# လွင်ႈၵၢမ်ႇဢမ်ႇလီ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
4ia6h85yvkft3uergtd19mvbkr2kv3j
hardship
0
75991
292969
2026-09-19T09:27:16Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292969
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdˌʃɪp/|a=GA}}
* {{IPA|en|/ˈhɑːdˌʃɪp/|a=RP}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hardship.wav|a=Southern England}}
* {{hyph|en|hard|ship}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# တၢင်းယၢပ်ႇၽိုတ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
6sk6dsl361kr5h8x0xh0z3d6mty1nh5
hardshipping
0
75992
292970
2026-09-19T09:27:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292970
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hardship||ing-form}}
kv0yfpb8j00802ee0puw1j49soi1g04
hardshipped
0
75993
292971
2026-09-19T09:27:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292971
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hardship||ed-form}}
dvst8bnsw1m9rw19e55sjf79x1ex0ip
hardships
0
75994
292972
2026-09-19T09:27:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292972
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardship}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hardship||s-verb-form}}
jxxkzxb64gbq1uu6rxrej2nuidmolkq
hardstanding
0
75995
292973
2026-09-19T09:27:56Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292973
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːdstændɪŋ/|a=UK}}
* {{IPA|en|/ˈhɑɹdˌstændɪŋ/|a=US}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# တီႈၵိုတ်းၵႃး၊ လူတ်ႉ ဢၼ်သိူဝ်ႇလိၼ်ယၢင်ႇဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
30c9u57q44fi742gyv4vg5640bvj4kj
hardstandings
0
75996
292974
2026-09-19T09:28:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292974
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardstanding}}
hrh9907egd3idf7qyh5iib6ips2ixzh
hardtop
0
75997
292975
2026-09-19T09:28:16Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292975
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun}}
# ၵႃးဢၼ်မီးပွင်းလဵၵ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
3a790k2t2f8q1c0v2qgv8yp1iar0gz9
hardtops
0
75998
292976
2026-09-19T09:28:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292976
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardtop}}
47rrd1furw22hk1b1vsxr19wdj9xho2
hardware
0
75999
292977
2026-09-19T09:28:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292977
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdˌwɛɹ/|a=GA}}
* {{IPA|en|/ˈhɑːdˌwɛə/|a=RP}}
* {{audio|en|en-us-hardware.ogg|a=US}}
===ႁိၵ်ႈ===
{{en-noun|-}}
# ၶိူင်ႈလဵၵ်း။
# computer hardware, ၶွမ်းတွၼ်ႈဝႆႉၶိူင်ႈၵျၢမ်း။
# military hardware, ၶိူင်ႈ၊ ၵႃးယိုဝ်းသိုၵ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
s8fewf3g63kaoha5zv12o5ms1aeczz9
hardwares
0
76000
292978
2026-09-19T09:28:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292978
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{lb|en|nonstandard}} {{plural of|en|hardware}}
#* {{quote-book|en|author=Geronymo de Uztariz [i.e., {{w|Luis Jerónimo of Uztáriz and Hemiaga}}]|tlr=John Kippax|title=The Theory and Practice of Commerce and Maritime Affairs|volume=II|location=London|publisher={{...|Printed for}} John and James Rivington,{{nb...|in St. Paul’s Church-yard}}; and John Crofts,{{nb...|Bookseller, in Bristol}}|year=1751|pages=324–325|passage=That it is one and two thirds per cent. upon all ſorts of leather, ſkins, and wax from the Levant, looſe cotton from Malta, Alquitran, cochinille, campeche, wood, copperas, lead, gunpowder, pitch, and tin oar; and upon all goods made of ſilk, hair and wool, eleven and two thirds per cent. and the ſame upon all fiſh, ſalt beef, thread, dyed ſilk, ribbons of all ſorts, ſtockings, hats, '''hardwares''', iron, ſteel and copper unwrought, pipe ſtaves, dried fruits, all ſorts of apothecary’s drugs, and other ſmall articles, ſheep, hogs, mules, &c. and though there be charged about 52 per cent. in the ſaid cuſtom houſes out of Barcelona, upon all ſorts of goods made up, or worked with the needle for wearing apparel, tin manufactured, and other materials wrought up in any ſhape, as alſo cotton ſpun or in the ſkeyn brought from the Levant, ſo few are the ſaid commodities, that are brought in and entred upon account of the high duty, that they can very little reduce thoſe of the fifteen per cent. that ſhall be charged, nay the product will be rather augmented by a reduction of the duty, as we ſhall prevent the frauds, that are uſually committed in this merchandiſe for the reaſons abovementioned.}}
#* {{quote-book|en|author=[[w:John MacGregor (Glasgow MP)|John MacGregor]]|title=Commercial Tariffs and Regulations of the Several States of Europe and America, Together with the Commercial Treaties Between England and Foreign Countries|volume_plain=part the fifth (States of the Germanic Union of Customs; Also, the Hanse Towns, Holstein, Hanover, Oldenburg, and Mecklenburg)|location=London|publisher={{...|Printed by}} Charles Whiting,{{nb...|Beaufort House, Strand}}|year=1842|page=127|passage='''Hardwares''' are also manufactured with success in the Prussian states. Nuremberg is celebrated for toys, and Augsburg, Wurzburg, Munich, and other places in Bavaria produce common '''hardwares''' and tools. Würtemberg manufactures jewellery, cutlery, and common '''hardwares'''. Saxony has several manufactures of '''hardwares''', &c.}}
#* {{quote-book|en|title=North Pacific Ports: A Compilation of Useful Marine, Exporting and Importing Information for Alaska and the Western Coasts of Canada and the United States|year=1919|page=428|passage=Exporters of '''hardwares''', earthenwares, glasswares, rubber goods, piece goods, braids, brushes, buttons, corns, dyes, celluloid goods, electrics, {{...}}}}
#* {{quote-book|en|author=Guérin Lassous; T. Razafindralambo|chapter=Substitution Network: Controlled Mobility for Network Rescue|editors=Nathalie Mitton; David Simplot-Ryl|title=Wireless Sensor and Robot Networks: From Topology Control to Communication Aspects|publisher=w:World Scientific|year=2014|page=95|isbn=978-981-4551-33-5|passage=It is worth noting that, in this section, we try to be as general as possible and not to focus on specific '''hardwares''', softwares, mechanisms or technologies.}}
====Related terms====
* {{l|en|softwares}}
544ns4aafril2nyzwkpla1qg1f2zgx2
hardwood
0
76001
292979
2026-09-19T09:28:56Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292979
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdˌwʊd/|a=GA}}
* {{audio|en|En-au-hardwood.ogg|a=AU}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ၼိူဝ်ႉမႆႉၶႅင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
o5lp36vz4izyt6zu0zacd06dolqdwxu
hardwoods
0
76002
292980
2026-09-19T09:29:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292980
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardwood}}
5kq5ubwdk0vf9prv5hcx2nfdon133xi
hardness
0
76003
292981
2026-09-19T09:29:16Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292981
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|härdʹnəs|a=GA}}, {{IPA|en|/ˈhɑɹdnəs/}}
* {{IPA|en|/ˈhɑːdnəs/|a=RP}}
* {{audio|en|en-us-hardness.ogg|a=US}}
* {{hyph|en|hard|ness}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈၶႅင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
a6ihm2wbl69ios9z2dfjwfptpj49d19
hardnesses
0
76004
292982
2026-09-19T09:29:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292982
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardness}}
npgdied0poc25yuxlzms20ose8k2g0r
harden
0
76005
292983
2026-09-19T09:29:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292983
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdn̩/|a=GA}}
* {{IPA|en|/ˈhɑːdn̩/|a=RP}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harden.wav|a=Southern England}}
* {{rhymes|en|ɑː(ɹ)dən|s=2}}
* {{hyph|en|hard|en}}
===သၢင်ႈ===
{{en-verb}}
# ၶႅင်။
# ၵႅၼ်ႇ။
# ႁႂ်ႈၶႅင်၊ ၵႅၼ်ႇမႃး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
mdpij2pyu8l6gz61729l1ihevgr3y2u
hardenest
0
76006
292984
2026-09-19T09:30:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292984
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harden||st-form}}
1xoosq85b23eztjvzp0w1mphj6il3tq
hardened
0
76007
292985
2026-09-19T09:30:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292985
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːdn̩d/|a=RP}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hardened.wav|a=Southern England}}
* {{IPA|en|/ˈhɑɹd(ə)nd/|a=GA}}
* {{hyph|en|hard|ened}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harden||ed-form}}
eplcy1xtxby88o0oklcqb3pgkh5ki06
hardening
0
76008
292986
2026-09-19T09:30:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292986
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hardening.wav|a=Southern England}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harden||ing-form}}
4ibtf7sbcd740cakaztpv7vjb28yxql
hardens
0
76009
292987
2026-09-19T09:30:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292987
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harden||s-verb-form}}
1kheblfgp38psu1jf4d33flzsav10j7
hard by
0
76010
292989
2026-09-19T09:31:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292989
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{en-adv|-}}
# ဢၼ်မီးဢိူမ်ႈဝႆႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
434v6r9zyoqveb4y2705jfarq588sug
hard up
0
76011
292990
2026-09-19T09:31:46Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292990
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# တူၵ်းတၢင်းယၢပ်ႇၽိုတ်ႇလွင်ႈငိုၼ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
gf7uceyrlxxc1wsnlb4y8tu3jmh6wb6
harded up
0
76012
292991
2026-09-19T09:31:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292991
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hard up||ed-form}}
jgzcfqwudlxo8t2e4zhkmumvlazhr9p
harding up
0
76013
292992
2026-09-19T09:32:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292992
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hard up||ing-form}}
8apm40buhbnossqcm3i3rj6orpyi96h
hards up
0
76014
292993
2026-09-19T09:32:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292993
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hard up||s-verb-form}}
fpgr3w8q7hkw2ymydahb85xeg7olamz
hard-pressed
0
76015
292994
2026-09-19T09:32:26Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292994
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|en-au-hard-pressed.ogg|a=AU}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ၺႃးတၢင်းယၢပ်ႇၽိုတ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
6o7j6kw6pg3z8at7ut4pubofih5tv8y
hardboiled
0
76016
292995
2026-09-19T09:32:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292995
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# (ၶႆႇ) ဢၼ်တူမ်ႈပေႃးၵႅၼ်ႇဝႆႉ။
# (ၵူၼ်း) ဢၼ်ဢမ်ႇမေႃပဵၼ်ႁိုဝ်၊ ၼႃထိုဝ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
jc3490rkhav80z9hiykmtyvr4rof8pn
hardly
0
76017
292996
2026-09-19T09:32:46Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292996
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːdli/|a=UK}}
* {{IPA|en|/ˈhɑɹdli/|a=GA}}
* {{audio|en|en-us-hardly.ogg|a=US}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv|er,more}}
# ယၢပ်ႇယၢပ်ႇယဵၼ်းယဵၼ်း။
# ဢမ်ႇၼပ်ႉတေႃႈမီး။
# ဢမ်ႇပဵၼ်လႆႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
oh8h22t61fquua1o4tmak1d4p1b1mr9
hardliest
0
76018
292997
2026-09-19T09:32:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292997
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉသၢင်ႈ}}
# {{lb|en|rare}} {{en-superlative of|hardly|POS=adverb}}
091ufxwxtoq2iq07anhod678bvw3fge
hardlier
0
76019
292998
2026-09-19T09:33:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
292998
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉသၢင်ႈ}}
# {{lb|en|rare}} {{en-comparative of|hardly|POS=adverb}}
iz8svw00g5rmk9ufu0r66e9u0ejamn3
hardy
0
76020
292999
2026-09-19T09:33:16Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
292999
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹdi/|a=GA}}
* {{IPA|en|/ˈhɑːdi/|a=RP}}
* {{audio|en|en-us-hardy.ogg|a=US}}
* {{rhymes|en|ɑː(ɹ)di|s=2}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er}}
# ဢၼ်ၶၢမ်ႇလႆႈလွင်ႈယၢပ်ႇၽိုတ်ႇ။
# ဢၼ်ၵႅၼ်ႇၶႅင်။
# (မႆႉ) ဢၼ်ၶၢမ်ႇမူၺ်။
# ဢၼ်ႁတ်းႁၢၼ်။
# ဢၼ်တူဝ်ႈတၼ်းဝႆႉ တႃႇတေႃႈသူႈၶဵၼ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
scopia49lrak6zle99jtjl1xb7o1mly
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)di
14
76021
293000
2026-09-19T09:33:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293000
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)di/2 သဵင်
14
76022
293001
2026-09-19T09:33:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293001
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)di]]
bmkm165fgv2xu6eficipmlghvimk558
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)di
106
76023
293002
2026-09-19T09:33:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293002
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)di}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ä(r)di}}, {{IPA|en|/-ɑː(ɹ)di/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
# In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːdi|/-ɑːdi/]] are rhymes for words on this page.
# For more rhymes, add ''y'', ''ey'' or ''ie'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)d|/-ɑː(ɹ)d/]].
===သွင်သဵင်===
<!-- Note: words in this section must be stressed on the PENULTUIMATE syllable.-->
* {{l|en|bardie}}
* {{l|en|bardy}}
* {{l|en|cardi}}, {{l|en|cardie}}, {{l|en|cardy}}
* {{l|en|dardy}}
* {{l|en|hardy}}
* {{l|en|lardy}}
* {{l|en|mardy}}
* {{l|en|shardy}}
* {{l|en|tardy}}
* {{l|en|w:Hardy|Hardy}}
* {{l|en|Yardie}}
===သၢမ်သဵင်===
<!-- Note: words in this section must be stressed on the PENULTUIMATE syllable.-->
* [[Bacardi]]
* [[w:Linda Lusardi|Lusardi]]
<!--"foolhardy" does not belong here - it is stressed on the first syllable-->
9a2axri9rds6t812tjxw8spsf32w97a
hardier
0
76024
293003
2026-09-19T09:33:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293003
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-comparative of|hardy}}
hf37fm0k5jqdns9uwbjn0ukzqnepuzn
hardiest
0
76025
293004
2026-09-19T09:34:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293004
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|hardy}}
9xa0ezg8ua265iesxwcvjd06pyn9vgt
hardies
0
76026
293005
2026-09-19T09:34:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293005
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardy}}
371twr1td70c3i24ccwkb03eodti93s
hardily
0
76027
293006
2026-09-19T09:34:26Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293006
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{en-adv}}
# ၶၢမ်ႇယၢပ်ႇၶၢပ်ႇၽိုတ်ႇတႄႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
5at50wyn16owswk4pgznerp21qn662e
hardiness
0
76028
293007
2026-09-19T09:34:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293007
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈၶၢမ်ႇလႆႈ လွင်ႈတၢင်းယၢပ်ႇၽိုတ်ႇ။
# လွင်ႈၵႅၼ်ႇၶႅင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
sctajlce9791yymxzwnhdmogddgrjjf
hardinesses
0
76029
293008
2026-09-19T09:34:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293008
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hardiness}}
07vkt26zehc70xd65hxoxgeilzv716f
hare
0
76030
293009
2026-09-19T09:34:56Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293009
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɛə/|/hɛː/|a=RP}}
* {{IPA|en|/hɛː/|a=SSB}}
* {{IPA|en|/hɛɚ/|a=GA}}
** {{audio|en|en-us-hare.ogg|a=US}}
* {{IPA|en|/heː/|a=AU}}
* {{IPA|en|/heə/|a=NZ,non-near-square}}
* {{IPA|en|/hiə/|a=NZ,near-square}}
* {{IPA|en|/heɾ/|[heːɾ]|a=Scotland}}
* {{IPA|en|/hɜː(ɹ)/|a=Lancashire,square-nurse}}
* {{homophones|en|hair|;|here<aa:cheer-chair>|;|her<aa:fair-fur>}}
===ႁိၵ်ႈ===
{{en-noun|~|*|s}}
# ပၢင်တၢႆး။
===သၢင်ႈ===
{{en-verb}}
# လႅၼ်ႈဝႆး၊ လႅၼ်ႈၽႂ်း။
# start a hare, ဢမ်ႇဝူၼ်ႉသီႇဝူၼ်ႉႁႃႈသေ ၶဝ်လၢတ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
c8lhubgh3wwpmrfx0z3vjewxmmvholy
hares
0
76031
293010
2026-09-19T09:35:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293010
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɛɚz/|/heɹz/|a=US}}
* {{audio|en|En-us-hares.ogg|a=US}}
* {{rhymes|en|eɹz|s=1}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hare}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hare||s-verb-form}}
1ciiloiewobbgczrqaqg8v7bnba6c03
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɹz
14
76032
293011
2026-09-19T09:35:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293011
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɹz/1 သဵင်
14
76033
293012
2026-09-19T09:35:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293012
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɹz]]
9vv42m44q91slzvu4pjebpeoss0gqv1
hared
0
76034
293013
2026-09-19T09:35:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293013
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hare||ed-form}}
jr86ssighazhuf96kmca113uyod5hfi
haring
0
76035
293014
2026-09-19T09:35:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293014
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hare||ing-form}}
53vqrnu5my15ab6a05aj7fg9w63q2q9
harebrained
0
76036
293015
2026-09-19T09:35:56Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293015
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* /ˈhɛəbreɪnd/
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harebrained.wav|a=Southern England}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ဢၼ်ဢမ်ႇမီးပႆၢးဝူၼ်ႉ၊ တၢင်းၶႆႈၸႂ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
6dv2hk80qezbrj9rmxx42aab5pchck8
harem
0
76037
293016
2026-09-19T09:36:13Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293016
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːɹəm/|a=RP}}
* {{IPA|en|/ˈhæɹəm/|/ˈhɛəɹəm/|a=GA,CA}}
** {{audio|en|En-us-ne-harem.ogg|a=US}}
** {{audio|en|en-us-harem.ogg|a=US}}
* {{rhymes|en|ɛəɹəm|æɹəm|iːm|s=2|a2=GenAm,Canada|a3=RP}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ႁူင်းသဝ်းၼၢင်းယိင်း၊ မေးၵူၼ်းမီး ၶိူဝ်းမူႇသလိမ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
3y99hp23gba2z9k7quafgggz2zfxy42
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɛəɹəm
14
76038
293017
2026-09-19T09:36:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293017
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɛəɹəm/2 သဵင်
14
76039
293018
2026-09-19T09:36:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293018
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɛəɹəm]]
8kbutoe074iysiwjnsgkbz4ua0qgb14
harems
0
76040
293019
2026-09-19T09:36:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293019
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harem}}
69du62on9csto4oj3lwllsygobcg2xl
hark
0
76041
293020
2026-09-19T09:36:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293020
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|härk}}, {{IPA|en|/hɑː(ɹ)k/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hark.wav|a=Southern England}}
* {{rhymes|en|ɑː(ɹ)k|s=1}}
===သၢင်ႈ===
{{en-verb}}
# ႁေႈႁူသေထွမ်ႇ။
# ငွႆးထွမ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
b4y42smt3ghx1ssd69sj6ll485i2l69
harked
0
76042
293021
2026-09-19T09:37:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293021
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark||ed-form}}
469cf5oagnkr2gmtgyg8f989jbuzrx5
harks
0
76043
293022
2026-09-19T09:37:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293022
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark||s-verb-form}}
a0whj59il69ymo50efqzt9hp6tb1m8p
harking
0
76044
293023
2026-09-19T09:37:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293023
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark||ing-form}}
oe3f2b6mgcgyexrxew2rybec31kfbyq
hark back
0
76045
293024
2026-09-19T09:38:03Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293024
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˌhɑːk ˈbæk/|a=RP}}
===သၢင်ႈ===
{{en-verb|*}}
# ၶိုၼ်းၶုၵ်းၸႂ်လႆႈ။
# လၢတ်ႈလွင်ႈဢၼ်ပူၼ်ႉမႃး။
# ႁဵတ်းႁႂ်ႈၶိုၼ်းၶုၵ်းၸႂ်လႆႈ။
# ႁဵတ်းႁႂ်ႈၶိုၼ်းမိူၼ်ၵဝ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
5w56grt7mhi5gond6890y949v40058b
hark backs
0
76046
293025
2026-09-19T09:38:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293025
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hark back}}
c3s2y3xh8vfxj05wqn8v1wfrdwkg7dc
harking back
0
76047
293026
2026-09-19T09:38:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293026
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark back||ing-form}}
97atpjxq8y7rossk302tna5j7yzyu5y
harked back
0
76048
293027
2026-09-19T09:38:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293027
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark back||ed-form}}
0bm89s48y0g60kxw32w3dxjhl3asr3r
harks back
0
76049
293028
2026-09-19T09:38:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293028
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hark back||s-verb-form}}
mbmnm6wx4jks3wpigrtm597f8u47l57
harlequin
0
76050
293029
2026-09-19T09:38:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293029
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːlɪkwɪn/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harlequin.wav|a=Southern England}}
* {{IPA|en|/ˈhɑɹlɪkwɪn/|a=US}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ၵူၼ်းပျၢၵ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
7z4mbdxkioosj3olvlgzl7vd28ecfti
harlequined
0
76051
293030
2026-09-19T09:39:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293030
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlequin||ed-form}}
ji5128ayxwg7s99f3r8reqzb5p1fhi7
harlequins
0
76052
293031
2026-09-19T09:39:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293031
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harlequin}}
o6llhbp1w50fpvlkvp3yt51y02sao25
harlequining
0
76053
293032
2026-09-19T09:39:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293032
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlequin||ing-form}}
18zl3j1uqyd86qvm878qbv4ye8nba49
harlequinade
0
76054
293033
2026-09-19T09:39:33Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293033
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑːləkwɪˈneɪd/|a=UK}}
* {{rhymes|en|eɪd|s=4}}
===ႁိၵ်ႈ===
{{en-noun}}
# တွၼ်ႈပျၢၵ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
cc8capn1y9tuwn3zulxjjb6j4atvww5
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪd/4 သဵင်
14
76055
293034
2026-09-19T09:39:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293034
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪd]]
rev0mh2nutj2ffz0wxv6j399c3xjdm6
harlequinades
0
76056
293035
2026-09-19T09:40:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293035
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harlequinade}}
hd473iq5n1mfmv3t453er9tsypx2wci
harlot
0
76057
293036
2026-09-19T09:40:33Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293036
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːlət/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harlot.wav|a=Southern England}}
* {{IPA|en|/ˈhɑɹlət/|a=GA}}
** {{audio|en|en-us-harlot.ogg|a=US}}
===ႁိၵ်ႈ===
{{en-noun}}
# မႄႈမၢၵ်ႇလမ်။
# မႄႈမွၵ်ႇယႃႈ။
# မႄႈၶႆၢ။
# မႄႈၵႆႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
h8tykhgnsk5zv2plfqq7vct2ow8dvmj
harlotted
0
76058
293037
2026-09-19T09:40:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293037
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlot||ed-form}}
b4heqfsgvode1kduzw2xk9m2uvqzc20
harloted
0
76059
293038
2026-09-19T09:40:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293038
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlot||ed-form}}
b4heqfsgvode1kduzw2xk9m2uvqzc20
harlotting
0
76060
293039
2026-09-19T09:41:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293039
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlot||ing-form}}
tukxk7izjbsk4dkjec0ztjsxxhw6d9j
harlots
0
76061
293040
2026-09-19T09:41:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293040
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harlot}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlot||s-verb-form}}
itenma1rciedr8llyij7qlhako939d1
harloting
0
76062
293041
2026-09-19T09:41:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293041
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harlot||ing-form}}
tukxk7izjbsk4dkjec0ztjsxxhw6d9j
harm
0
76063
293042
2026-09-19T09:41:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293042
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑːm/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harm.wav|a=Southern England}}
* {{IPA|en|/hɑɹm/|a=GA,CA}}
** {{audio|en|en-us-harm.ogg|a=California}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-harm.wav|a=Texas}}
** {{audio|en|LL-Q1860 (eng)-Grendelkhan-harm.wav|a=Connecticut}}
* {{IPA|en|/hɐːm/|a=AU,NZ}}
* {{rhymes|en|ɑː(ɹ)m|s=1}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ၽေး။
# ၶဵၼ်။
# ဢၼ်းတရႆၢး။
===သၢင်ႈ===
{{en-verb}}
# ပဵၼ်ၽေး၊ ၶဵၼ်။
# ပဵၼ်ဢၼ်းတရႆၢး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
9x0bopsitx2ilp0ssgryempzscfaksh
harming
0
76064
293044
2026-09-19T09:42:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293044
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{rhymes|en|ɑː(ɹ)mɪŋ|s=2}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harm||ing-form}}
05ptmfk2c6oj0b86gca627l33yvchx6
harmest
0
76065
293048
2026-09-19T09:42:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293048
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harm||st-form}}
h1bfs2fie5o5ziny1mb0ekusct5abub
harmed
0
76066
293049
2026-09-19T09:43:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293049
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑɹmd/|a=GA}}
* {{IPA|en|/hɑːmd/|a=RP}}
* {{rhymes|en|ɑː(ɹ)md|s=1}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harm||ed-form}}
jder26cu6n2ukj3qts1e01x85kvctek
harms
0
76067
293052
2026-09-19T09:43:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293052
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harm}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harm||s-verb-form}}
53bywxhnd0tr52d2v7h9il1i0fa2ip7
harmes
0
76068
293053
2026-09-19T09:43:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293053
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harme}}
mbp1ijokrqhb7t9ss1hrhpl8r9f6hc1
harmful
0
76069
293054
2026-09-19T09:43:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293054
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːmfl̩/|a=RP}}
* {{IPA|en|/ˈhɑɹmfl̩/|a=GenAm}}
* {{audio|en|en-us-harmful.ogg|a=US}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|harmfuller,more}}
# ဢၼ်မီးၶဵၼ်။
# ဢၼ်မီးဢၼ်းတရႆၢး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
gxwidry6ksj9cjo3oy4c63zy5yvmo7s
harmless
0
76070
293055
2026-09-19T09:44:03Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293055
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːmləs/|a=RP}}
* {{IPA|en|/ˈhɑɹmləs/|a=GenAm}}
* {{audio|en|en-us-harmless.ogg|a=US}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ဢၼ်ဢမ်ႇမီးၶဵၼ်။
# ဢၼ်ဢမ်ႇမီးဢၼ်းတရႆၢး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
5z3zu63n95r0x3056rhfpy2xkjhrsdx
harmonic
0
76071
293056
2026-09-19T09:44:13Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293056
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑːˈmɒnɪk/|a=RP}}
* {{IPA|en|/hɑɹˈmɑnɪk/|a=GA}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harmonic.wav|a=Southern England}}
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harmonic.wav|a=US}}
* {{rhymes|en|ɒnɪk|s=3}}
===ႁိၵ်ႈ===
{{en-noun}}
# သဵင်တိင်ႇဢၼ်ပဵၼ်သဵင်သုင်ၵႂႃႇ ယွၼ်ႉမၼ်းသၼ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
io4zixuqm1ymhnmbztok4ygegkekbcb
harmonics
0
76072
293057
2026-09-19T09:44:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293057
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{rhymes|en|ɒnɪks|s=3}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harmonic}}
trk5hdhousx0dzbhiokai8aap7dvlth
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɒnɪks
14
76073
293058
2026-09-19T09:45:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293058
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɒnɪks/3 သဵင်
14
76074
293059
2026-09-19T09:45:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293059
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɒnɪks]]
3yzjdgpm61192srzpdf7sp7ro8v1lap
harmonica
0
76075
293061
2026-09-19T09:45:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293061
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˌhɑɹˈmɒ.nɪ.kə/|a=UK}}
* {{IPA|en|/ˌhɑɹˈmɑ.nɪ.kə/|a=US}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harmonica.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun}}
# ပီႇလူင်မဵဝ်းၼိုင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
kz29s8avs4mkqx6ysr71y8if60tj4qi
harmonicas
0
76076
293062
2026-09-19T09:45:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293062
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harmonicas.wav|a=US}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harmonica}}
ccgwxrktd4xjzxoh7tzsewacuxmb5zm
harmonium
0
76077
293063
2026-09-19T09:45:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293063
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|här-mō'''′'''nē-əm}}
* {{IPA|en|/hɑːˈməʊ̯.niː.əm/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harmonium.wav|a=Southern England}}
* {{IPA|en|/hɑɹˈmoʊ̯.ni.əm/|a=GenAm,CanE}}
* {{IPA|en|/hɐːˈmɐʉ̯.niː.əm/|;|/hɐːˈməʉ̯.niː.əm/<a:also <<AuE>>>|a=AuE,NZE}}
* {{IPA|en|/haɹˈmo.ni.əm/|a=ScE}}
* {{IPA|en|/hɑː(ɾ)ˈmoː.niː.um/|a=InE}}
* {{rhymes|en|əʊniəm|s=4}}
* {{hyph|en|har|mo|ni|um}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၶိူင်ႈလဵၼ်ႈသဵင်ဢေႃႇၵႅၼ်ႇမဵဝ်းၼိုင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
1uckz7w724zzvv1sf3lvb7vq97fkeg8
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəm
14
76078
293064
2026-09-19T09:46:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293064
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəm/4 သဵင်
14
76079
293065
2026-09-19T09:46:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293065
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəm]]
t5ea8135h8q9vjoiigka7sey5qo2zxr
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəm
106
76080
293066
2026-09-19T09:46:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293066
wikitext
text/x-wiki
{{rhymes nav|en|əʊ|niəm}}
==သဵင်ဢွၵ်ႇ==
{{enPR|-ōnēəm}}, {{IPA|en|/-əʊniəm/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===သၢမ်သဵင်===
<!-- Words in this section should be stressed on the FIRST syllable -->
{{rhyme-top}}
* {{l|en|onium}}
{{rhyme-bottom}}
===သီႇသဵင်===
<!-- Words in this section should be stressed on the SECOND syllable -->
{{rhyme-top}}
* {{l|en|ammonium}}
* {{l|en|balonium}}
* {{l|en|euphonium}}
* {{l|en|harmonium}}
* {{l|en|hydronium}}
* {{l|en|Iconium}}
* {{l|en|meconium}}
* {{l|en|meldonium}}
* {{l|en|oxonium}}
* {{l|en|phosphonium}}
* {{l|en|plutonium}}
* {{l|en|polonium}}
* {{l|en|purdonium}}
* {{l|en|stramonium}}
* {{l|en|zirconium}}
{{rhyme-bottom}}
===ႁႃႈသဵင်===
<!-- Words in this section should be stressed on the THIRD syllable -->
{{rhyme-top}}
* {{l|en|alimonium}}
* {{l|en|diazonium}}
* {{l|en|fluoronium}}
* {{l|en|pancuronium}}
* {{l|en|pandamonium}}
* {{l|en|pandemonium}}
* {{l|en|pelargonium}}
* {{l|en|rocuronium}}
* {{l|en|telluronium}}
* {{l|en|vecuronium}}
{{rhyme-bottom}}
iwlr2ltkoxlmde2pwhtj5fzcoxn13qa
harmoniums
0
76081
293067
2026-09-19T09:46:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293067
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|här-mō'''′'''nē-əmz}}
* {{IPA|en|/hɑːˈməʊ̯.niː.əmz/|a=RP}}
* {{IPA|en|/hɑɹˈmoʊ̯.ni.əmz/|a=GenAm,CanE}}
* {{IPA|en|/hɐːˈmɐʉ̯.niː.əmz/|;|/hɐːˈməʉ̯.niː.əmz/<a:also <<AuE>>>|a=AuE,NZE}}
* {{IPA|en|/haɹˈmo.ni.əmz/|a=ScE}}
* {{rhymes|en|əʊniəmz|s=4}}
* {{hyph|en|har|mo|ni|ums}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harmonium}}
ofc6flbl9yce43hipjwn9o98tw91vi0
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəmz
14
76082
293068
2026-09-19T09:46:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293068
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəmz/4 သဵင်
14
76083
293069
2026-09-19T09:46:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293069
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəmz]]
tkuu8b9lf520fv87wu3v7io02t8csfa
harmony
0
76084
293070
2026-09-19T09:47:03Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293070
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːmə.ni/|a=RP}}
* {{IPA|en|/ˈhɑ̟ɹ.mə.ni/|a=GA}}
** {{audio|en|en-us-harmony.ogg|a=US}}
* {{IPA|en|/ˈhɐːmə.ni/||a=AU,NZ}}
* {{IPA|en|/ˈhaɾ.mə.ne/|/-nɪ/|/-ni/|a=Scotland}}
* {{rhymes|en|ɑː(ɹ)məni|s=3}}
* {{hyph|en|har|mon|y}}
* {{hmp|en|hominy<aa:non-rhotic,father-bother,weak vowel>}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈၽွမ်ႉႁူမ်ႈ။
# လွင်ႈပဵၼ်သူပ်းလဵဝ်သဵင်လဵဝ်။
# လွင်ႈမီးၽွၼ်းလီမိူၼ်ၵၼ်။
# လွင်ႈလႅပ်ႈၵၼ်။
# လွင်ႈသဵင်ၶဝ်ႈၵၼ်လီ။
# လွင်ႈမေႃႁၢင်ႈၶိူင်ႈ။
# လွင်ႈမေႃၸၢပ်ႈၵၼ်ၶႅမ်ႉလႅပ်ႈလီ။
# be harmony with, ၵၢင်ၸႂ်မိူၼ်ၵၼ်။
# ၵိုင်ႇလႅပ်ႈၵၼ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
kuem8homm6dfc55thty1y2qjyj48nvk
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)məni/3 သဵင်
14
76085
293071
2026-09-19T09:47:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293071
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)məni]]
oxkzn0m19vz4gt2biqe7gvdbqfivdmx
harmonies
0
76086
293072
2026-09-19T09:47:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293072
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harmony}}
3zbxdyxvdw32qow5vliphc6m6j507sx
harmonious
0
76087
293073
2026-09-19T09:47:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293073
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑɹˈmoʊni.əs/|a=GA}}
* {{IPA|en|/hɑːˈməʊni.əs/|a=RP}}
* {{hyph|en|har|mo|ni|ous}}
* {{audio|en|LL-Q1860 (eng)-Vininn126-harmonious.wav|a=US}}
* {{rhymes|en|əʊniəs|s=4}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj}}
# ဢၼ်ၽွမ်ႉႁူမ်ႈ။
# ဢၼ်သဵင်ၶဝ်ႈၵၼ်လီ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
nhdclzzdntlxwzqebu6r44hs0kbk9qk
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəs/4 သဵင်
14
76088
293075
2026-09-19T09:48:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293075
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/əʊniəs]]
trca9gop2bks4017atxew91dmm3g494
harmonize
0
76089
293077
2026-09-19T09:48:33Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293077
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑː.mə.naɪz/|a=RP}}
* {{IPA|en|/ˈhɑɹ.mə.naɪz/|a=GA}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harmonize.wav|a=Southern England}}
* {{rhymes|en|ɑː(ɹ)mənaɪz|s=3}}
* {{hyph|en|har|mon|ize}}
===သၢင်ႈ===
{{en-verb}}
# သဵင်ၶဝ်ႈၵၼ်။
# ၽွမ်ႉႁူမ်ႈၵၼ်။
# ၶဝ်ႈၵၼ်။
# ၵိုင်ႇလႅပ်ႈၵၼ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
d8gni5rbeswqt5adls8nszrju0hu39f
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mənaɪz
14
76090
293078
2026-09-19T09:48:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293078
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mənaɪz/3 သဵင်
14
76091
293079
2026-09-19T09:48:53Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293079
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)mənaɪz]]
injs3lri6jsq29g8k23b0w6qdu9r97t
harmonizing
0
76092
293080
2026-09-19T09:49:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293080
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harmonize||ing-form}}
o7hp7wns20hhnpae0o6fyn65uaxeinr
harmonizes
0
76093
293081
2026-09-19T09:49:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293081
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harmonize||s-verb-form}}
9wg37gg9e2b911lm250y1ot0nd1p187
harmonized
0
76094
293082
2026-09-19T09:49:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293082
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harmonize||ed-form}}
c0sba7s7ybn0spiucv1f39y96sh13de
harness
0
76095
293083
2026-09-19T09:49:33Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293083
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑː.nəs/|a=RP}}
* {{IPA|en|/ˈhɑɹ.nəs/|a=GA}}
** {{audio|en|en-us-harness.ogg|a=US}}
* {{IPA|en|/ˈhɐː.nəs/|a=AU,NZ}}
* {{rhymes|en|ɑː(ɹ)nəs|s=2}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ၸိူၵ်ႈထိင်းလေႃႉမႃႉ။
# work၊ run in double harness, ႁဵတ်းၵၢၼ်။
# ၵႃႈၸွမ်းၵၼ်သွင်ၵေႃႉ။
===သၢင်ႈ===
{{en-verb}}
# သႂ်ႇၸိူၵ်ႈလေႃႉမႃႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
pka7o8a38jlff5fqzwewysstda69c22
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)nəs
14
76096
293084
2026-09-19T09:49:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293084
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)nəs/2 သဵင်
14
76097
293085
2026-09-19T09:49:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293085
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)nəs]]
pzhcn6js8906c36n2iqb3xc23dely07
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)nəs
106
76098
293086
2026-09-19T09:50:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293086
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)nəs}}
==သဵင်ဢွၵ်ႇ==
-â(r)nəs, /-ɑː(ɹ)nəs/, /<tt>-A:(r\)n@s</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːnəs|/-ɑːnəs/]] are rhymes for words on this page.
#For more rhymes, follow some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)n|/-ɑː(ɹ)n/]] with "us".
#For more rhymes, add ''ness'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)|/-ɑː(ɹ)/]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
* [[farness]]
* [[harness]]
tdv6z1ufnq34i5j76kb2l5bkuqlxkol
harnessed
0
76099
293087
2026-09-19T09:50:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293087
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harness||ed-form}}
0wwbrabr33i6aw1z2hilbpzaegkfuu5
harnessing
0
76100
293088
2026-09-19T09:50:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293088
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harness||ing-form}}
hukl8miotenml9inwm7qvneu80hdvp8
harnessest
0
76101
293089
2026-09-19T09:50:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293089
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harness||st-form}}
3cxtpkm4badynpn7nfcptfksxr7h6yk
harnesses
0
76102
293090
2026-09-19T09:50:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293090
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑː(ɹ).nəsɪz/|a=UK}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harness}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harness||s-verb-form}}
e232of2jqfza1hgjdqmltha7xqi5dgq
die in harness
0
76103
293091
2026-09-19T09:50:53Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293091
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{en-verb|*|head=[[die]] [[in harness]]}}
# တႆၢၶၢဝ်းယၢမ်းတိုၵ်ႉႁဵတ်းၵၢၼ် ဢၼ်ၵႆႉႁဵတ်းတႃႇသေႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
kdhifb718gb822rstc8w063m7oxo9zl
died in harness
0
76104
293092
2026-09-19T09:51:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293092
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|die in harness||ed-form}}
q7imwvtw9c1ji1a0wp22ib39097jtab
dies in harness
0
76105
293093
2026-09-19T09:51:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293093
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|die in harness||s-verb-form}}
iuzgqrh682kypd5njsqax3fzxfh2f0i
harp
0
76106
293094
2026-09-19T09:51:23Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293094
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑːp/|a=UK}}
* {{IPA|en|/hɑɹp/|a=US}}
* {{rhymes|en|ɑː(ɹ)p|s=1}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harp.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun}}
# တိင်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
15u516nshrgq3p6d2kzhv648h6gzhz2
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p
14
76107
293095
2026-09-19T09:51:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293095
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p/1 သဵင်
14
76108
293096
2026-09-19T09:51:43Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293096
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p]]
ddtum37dh0jqw6x7n4tyydvvk9detbl
harping
0
76109
293098
2026-09-19T09:52:03Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293098
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹpɪŋ/|a=GA}}
* {{IPA|en|/ˈhɑːpɪŋ/|a=RP}}
* {{rhymes|en|ɑː(ɹ)pɪŋ|s=2}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp||ing-form}}
f9adqn2simcpfzur9v6hee72ac1is2y
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pɪŋ
14
76110
293099
2026-09-19T09:52:13Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293099
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pɪŋ/2 သဵင်
14
76111
293100
2026-09-19T09:52:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293100
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pɪŋ]]
ecdumnh7443w2h42m4nvyz92xbxzhaf
harps
0
76112
293102
2026-09-19T09:52:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293102
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harp}}
# {{lb|en|Ireland}} The side of a coin that bears [[w:coat of arms of Ireland|an image of the Irish harp]].
#: {{ant|en|heads}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp||s-verb-form}}
asqa6z8ityhgsfzth0hx91svwmjrit1
harpes
0
76113
293103
2026-09-19T09:52:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293103
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harpe}}
q83uicd74qy6ubm7y1vfsylw4n90eso
harped
0
76114
293104
2026-09-19T09:53:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293104
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp||ed-form}}
algjlwv3erzo7b6qf125ftj7qn668yx
harp on
0
76115
293105
2026-09-19T09:53:14Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293105
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{en-verb|*}}
# ၵမ်းၵမ်းလၢတ်ႈလွင်ႈဢမ်ႇလီၶဝ်ႈၸႂ်၊ လီဢိမ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
4vbcw197mnb7ixruods8lyjs6la5akd
harps on
0
76116
293106
2026-09-19T09:53:23Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293106
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp on||s-verb-form}}
rw4h1kyowfqbtuti7de52hqbsaegrbp
harping on
0
76117
293107
2026-09-19T09:53:33Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293107
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp on||ing-form}}
t8x94ycojy2y96dzavykfxe686slky8
harped on
0
76118
293108
2026-09-19T09:53:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293108
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harp on||ed-form}}
f4rbodxwb3esvyzew6fws6m9alu6hyr
harpist
0
76119
293109
2026-09-19T09:53:54Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293109
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹpɪst/|a=US}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-harpist.wav|a=US}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၸဝ်ႈတိင်ႇ။
# မေႃတိင်ႇ။
# ၽူႈလဵတ်းတိင်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
gefebcavk979lfnha92zcrb7h9y4ky8
harpists
0
76120
293110
2026-09-19T09:54:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293110
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harpist}}
a8v1xmg26ui5m62mm69sk2dyyk0vhwd
harper
0
76121
293111
2026-09-19T09:54:14Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293111
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑː(ɹ)pə(ɹ)/}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-harper.wav|a=US}}
* {{rhymes|en|ɑː(ɹ)pə(ɹ)|s=2}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၸဝ်ႈတိင်ႇ။
# မေႃတိင်ႇ။
# ၽူႈလဵတ်းတိင်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
ru096dkz01npc59kxdcpsyoq9j3a47v
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pə(ɹ)
14
76122
293112
2026-09-19T09:54:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293112
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pə(ɹ)/2 သဵင်
14
76123
293113
2026-09-19T09:54:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293113
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pə(ɹ)]]
9nhjzvhayy4naf0n1o1ccs9e0jey0nu
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pə(ɹ)
106
76124
293114
2026-09-19T09:54:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293114
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)pə(ɹ)}}
==သဵင်ဢွၵ်ႇ==
* {{enPR|-ä(r)pə(r)}}, {{IPA|en|/-ɑː(ɹ)pə(ɹ)/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
# In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːpə|/-ɑːpə/]], [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pə|/-ɑː(ɹ)pə/]] and [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːpə(ɹ)|/-ɑːpə(ɹ)/]] are also rhymes for words on this page.
# For more rhymes, add ''er'' to some nouns and adjectives at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p|/-ɑː(ɹ)p/]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
{{rhyme-top}}
* {{l|en|carper}}
* {{l|en|Harper}}
* {{l|en|harper}}
* {{l|en|LARPer}}
* {{l|en|scarper}}
* {{l|en|sharper|pos=n}}
{{rhyme-bottom}}
azyfdhceo334wr65wwbi7gnzr33txbq
harpers
0
76125
293115
2026-09-19T09:54:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293115
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harper}}
gtroq2285nq0pngf8ph244c8v3uegm2
harpoon
0
76126
293116
2026-09-19T09:55:04Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293116
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{enPR|härpo͞onʹ|a=GA}}, {{IPA|en|/hɑːɹˈpuːn/}}
* {{enPR|härpo͞onʹ|a=RP}}, {{IPA|en|/hɑːˈpuːn/}}
* {{audio|en|En-au-harpoon.ogg|a=AU}}
* {{rhymes|en|uːn|s=2}}
* {{hyphenation|en|har|poon}}
===ႁိၵ်ႈ===
{{en-noun}}
# ႁွၵ်ႇသွင်ငႅမ်ႈ။
# ႁွၵ်ႇတမ်ပႃ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
agmgqol47w39dsqnzjrqbp405u76kaw
harpooning
0
76127
293117
2026-09-19T09:55:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293117
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harpoon||ing-form}}
ogbyztj1e7hxm15zdqmr17p2a8022hw
harpooned
0
76128
293118
2026-09-19T09:55:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293118
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harpoon||ed-form}}
4gakaxond9ujgsmio4giax6ni224fr3
harpoons
0
76129
293119
2026-09-19T09:56:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293119
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harpoons.wav|a=US}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harpoon}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harpoon||s-verb-form}}
bxwa6buz3h07320fbwclvpn7lnrdkem
harpsichord
0
76130
293120
2026-09-19T09:56:14Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293120
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑː(ɹ)p.sɪ.kɔː(ɹ)d/|a=UK}}
* {{IPA|en|/ˈhɑɹp.sɪˌkɔɹd/|a=US}}
* {{audio|en|en-us-harpsichord.ogg|a=US}}
===ႁိၵ်ႈ===
{{en-noun}}
# ဢေႃႇၵႅၼ်ႇမိူဝ်ႈၵွၼ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
f0gklwdvly1ir33qzr3ldcqlys855hi
harpsichords
0
76131
293121
2026-09-19T09:56:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293121
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harpsichord}}
4dabc13660lx9s7ibf4vtaafgb18pc3
harpy
0
76132
293122
2026-09-19T09:56:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293122
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹpi/|a=GA}}
* {{IPA|en|/ˈhɑːpi/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harpy.wav|a=Southern England}}
* {{rhymes|en|ɑː(ɹ)pi|s=2}}
* {{hyphenation|en|har|py}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၽီဢၼ်မီးၼႃႈၼၢင်းယိင်း တူဝ်ပဵၼ်ၼူၵ်ႉ။
# ၼၢင်းယိင်းဢၼ်ဢမ်ႇမီးလွင်ႈဢီးလူ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
qkajbl7d06h7wmw35n7d1o5k32go3hd
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pi
14
76133
293123
2026-09-19T09:56:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293123
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pi/2 သဵင်
14
76134
293124
2026-09-19T09:56:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293124
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pi]]
r9gte79zl80hku7drpndftydg7h8ya2
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)pi
106
76135
293125
2026-09-19T09:57:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293125
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(ɹ)pi}}
==သဵင်ဢွၵ်ႇ==
-ä(r)pi, {{IPAchar|/-ɑː(ɹ)pi/}}
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːpi|/-ɑːpi/]] are rhymes for words on this page.
#For more rhymes, add ''y'', ''ey'' or ''ie'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)p|/-ɑː(ɹ)p/]].
===သွင်သဵင်===
<!-- Note: words in this section must be stressed on the PENULTIMATE syllable.-->
*[[harpy]]
*[[sharpie]], [[Sharpie]]
7a8nl135p6e6dffvjpcgrs1euqiuuxl
harpies
0
76136
293126
2026-09-19T09:57:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293126
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harpies.wav|a=US}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harpy}}
395ww8qocw1lr7ihaherbjze04d9ciu
harrow
0
76137
293127
2026-09-19T09:57:24Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293127
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæɹəʊ/|a=RP}}
* {{IPA|en|/ˈhæɹoʊ/|a=US,non-Mary-marry-merry}}
** {{audio|en|en-us-ne-harrow.ogg|a=US,non-Mary-marry-merry}}
* {{IPA|en|/ˈhɛɹoʊ/|a=US,Mary-marry-merry}}
** {{audio|en|en-us-harrow.ogg|a=US,Mary-marry-merry}}
* {{IPA|en|/ˈhaɾo/|a=Scotland}}
* {{IPA|en|/ˈhaɾou/|a=Wales,non-toe-tow}}
* {{rhymes|en|æɹəʊ|s=2}}
===ႁိၵ်ႈ===
{{en-noun}}
# ထႆ။
===သၢင်ႈ===
{{en-verb}}
# ထႆၼႃး၊ ႁႆႈ။
# ပၼ်ၸႂ်ၶၢၼ်ၸႂ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
mfr9cvfufeqltna47i6karc04lvnpnr
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹəʊ
14
76138
293128
2026-09-19T09:57:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293128
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹəʊ/2 သဵင်
14
76139
293129
2026-09-19T09:57:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293129
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹəʊ]]
3xq4lxxcdstemqwwuwaz6476x5i330a
harrows
0
76140
293131
2026-09-19T09:58:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293131
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harrow}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harrow||s-verb-form}}
n6xl7s2983k0kmtv9fvbujb0rb761ph
harrowest
0
76141
293132
2026-09-19T09:58:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293132
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harrow||st-form}}
7s3az4o20jde7hag42artvhmdfz6fjg
harrowing
0
76142
293133
2026-09-19T09:58:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293133
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæɹəʊ.ɪŋ/|a=RP}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harrowing.wav|a=Southern England}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harrow||ing-form}}.
qjx39946lya50078mn5l5z5n8952oaa
harrowed
0
76143
293134
2026-09-19T09:58:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293134
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harrow||ed-form}}
s9te3czdgqtundlm2f8jg32ndfm57g0
harry
0
76144
293135
2026-09-19T09:58:44Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293135
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæɹi/|a=RP,AU}}
* {{IPA|en|/ˈhaɹɪj/|a=SSB}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-harry.wav|a=Southern England}}
* {{IPA|en|/ˈhæɹi/|a=US,nMmmm}}
** {{audio|en|en-us-Harry.ogg|a=US,nMmmm}}
* {{IPA|en|/ˈhɛɹi/|a=US,Mmmm}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-harry.wav|a=US,Mmmm}}
* {{IPA|en|/ˈhaɾe/|/-ɾɪ/|/-ɾi/|a=Scotland}}
* {{IPA|en|/ˈhaɾi/|a=Wales}}
* {{IPA|en|/ˈhɛɹi/|a=NZ}}
* {{homophone|en|Harry}}
* {{homophone|en|hairy<aa:only in accents with the <<Mmmm>>>}}
* {{rhymes|en|æɹi|s=2}}
===သၢင်ႈ===
{{en-verb}}
# ၵမ်းၵမ်းထၢမ်။
# ႁဵတ်းႁႂ်ႈပိူၼ်ႈသုၵ်ႉၸႂ်။
# ၵမ်းၵမ်းယႃႉၵဝ်း။
# ၵမ်းၵမ်းတိုၵ်းတေႃး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
el6pmliauppnp979n0ck2zs356o28u2
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹi
14
76145
293136
2026-09-19T09:58:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293136
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹi/2 သဵင်
14
76146
293137
2026-09-19T09:59:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293137
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æɹi]]
fpx4zvh9vi0v9oerksjtju3eb40s4m4
harries
0
76147
293139
2026-09-19T09:59:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293139
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harry||s-verb-form}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harry}}
5z5drfe8yeulxn9zuyoio6ijntfxmx6
harried
0
76148
293140
2026-09-19T09:59:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293140
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|en-us-harried.ogg|a=US}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harry||ed-form}}
m5e1y82ke7p3vzf4jsq8x2ja0m0w5o0
harrying
0
76149
293141
2026-09-19T09:59:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293141
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harry||ing-form}}
#* {{quote-journal|en|author=Sam Borden|title=For bellicose Brazil, payback carries heavy price: Loss of Neymar [''International New York Times'' version: Brazil and referee share some blame for Neymar's injury: Spaniard's failure to curb early pattern of fouls is seen as major factor (7 July 2014, p. 13)]|url=http://www.nytimes.com/2014/07/06/sports/worldcup/for-bellicose-brazil-payback-carries-heavy-price-loss-of-neymar.html|work=w:The New York Times|date=5 July 2014|passage=The Colombians' ire was raised even more 10 minutes later when the referee showed a yellow card to [[w:James Rodríguez|[James] Rodríguez]] – who was apoplectic at the decision – for an innocuous trip that was, as Rodríguez vociferously pointed out with multiple hand gestures, a first offense compared with [[w:Fernandinho (footballer)|Fernandinho]]'s '''harrying'''.}}
38fs6sg160klgvobrsvxxcc0zf7c17y
harsh
0
76150
293142
2026-09-19T09:59:54Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293142
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{a|en|non-rhotic}}
** {{IPA|en|/ˈhɑːʃ/|[ˈhɑːʃ]|a=RP}}
** {{IPA|en|/ˈhäːʃ/|[ˈhäːʃ]|~|/ˈhɐ̞ːʃ/|[ˈhɐ̞ːʃ]|a=AU}}
*** {{audio|en|En-au-harsh.ogg|a=[[w:Australian English|Australia]]}}
* {{a|en|rhotic}}
** {{IPA|en|/ˈhɑɹʃ/|[ˈhɑɹʃ]|a=GA}}
* {{IPA|en|/ˈhæʃ/|[ˈhæʃ]|a=obsolete|ref={{R:en:Hurd:1847|Harsh|3|83}} !!! {{R:Krapp ELiA|II|222}}}}
* {{rhymes|en|ɑː(ɹ)ʃ|s=1}}
* {{hyph|en|harsh}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er,more}}
# ဢၼ်ႁၢဝ်ႈ။
# ဢၼ်ၵျၢမ်း။
# ဢၼ်ဢမ်ႇမေႃဢီးလူ။
# (ၾိင်ႈၾႃႉ) ဢၼ်ၶၢမ်ႇယၢပ်ႇ။
# (သီ) ဢၼ်ဢမ်ႇမႅၼ်ႈၸႂ်။
# ဢၼ်ဢမ်ႇဝၢၼ်ႁူ။
# (ၼမ်ႉ၊ ၽႆး၊ သေပိူင်ပိူင်) ဢၼ်ႁၢဝ်ႈႁႅင်း။
# ဢၼ်ႁဵတ်းႁႂ်ႈလူႉလႅဝ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
csrovuuk1sxz8ps7qs1hqzrxyakrb8d
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)ʃ
14
76151
293143
2026-09-19T10:00:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293143
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)ʃ/1 သဵင်
14
76152
293144
2026-09-19T10:00:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293144
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)ʃ]]
0vzmf4a9zeayc7gc8a5rqgo6ubjl2ec
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑː(ɹ)ʃ
106
76153
293145
2026-09-19T10:00:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293145
wikitext
text/x-wiki
{{rhymes nav|en|ɑː|(r)ʃ}}
==သဵင်ဢွၵ်ႇ==
-ä(r)sh, /-ɑː(r)ʃ/, /<tt>-A:(r)S</tt>/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#In [[non-rhotic]] accents, words ending in [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/ɑːʃ|/-ɑːʃ/]] are rhymes for words on this page.
===ၼိုင်ႈသဵင်===
* [[harsh]]
* [[Marsh]]
* [[marsh]]
===သွင်သဵင်===
<!-- Note: words in this section must be stressed on the FINAL syllable.-->
m97bfdzez120kr9kiqzyustj57t2596
harshing
0
76154
293146
2026-09-19T10:00:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293146
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harsh||ing-form}}
mmh0mtykgugg7uygoqh2xedsn4hc0xp
harshed
0
76155
293147
2026-09-19T10:00:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293147
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harsh||ed-form}}
9rukx3c14ogodlhvt7gmxt0mgd0vtqf
harshes
0
76156
293148
2026-09-19T10:00:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293148
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harsh||s-verb-form}}
m3h3ozaxkiwum7o2znd6uxn3kigqo8n
harshest
0
76157
293149
2026-09-19T10:01:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293149
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|harsh}}
81gn506eqctwcxjov3jwyikl45p5tw7
harsher
0
76158
293150
2026-09-19T10:01:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293150
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-comparative of|harsh}}
ruq3quc9m6eic9cx3g7wv7kad8cxkjx
harshly
0
76159
293151
2026-09-19T10:01:24Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293151
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑːʃli/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harshly.wav|a=Southern England}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv|er,more}}
# ႁၢဝ်ႈၼႃႇ။
# ၵျၢမ်းၼႃႇ။
# ဢမ်ႇမေႃဢီးလူပိူၼ်ႈ။
# ဢမ်ႇဝၢၼ်ႁူသေဢိတ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
9zpfacnz3uwu26w2jhnjk1lbwomfqgo
harshlier
0
76160
293152
2026-09-19T10:01:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293152
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉသၢင်ႈ}}
# {{en-comparative of|harshly|POS=adverb}}
rye8egtingbt5iwbakl3zfy2yextuxe
harshliest
0
76161
293153
2026-09-19T10:01:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293153
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉသၢင်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉသၢင်ႈ}}
# {{en-superlative of|harshly|POS=adverb}}
pa0c6zhs05d41bc5ea7ouk8g32u9ir7
harshness
0
76162
293154
2026-09-19T10:01:54Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293154
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈႁၢဝ်ႈ။
# လွင်ႈဢမ်ႇမေႃဢီးလူပိူၼ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
1he675bq41srze5ocjvuqhw7yufsx50
harshnesses
0
76163
293155
2026-09-19T10:02:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293155
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harshness}}
d0syqkcjjxglo8tbjocsufs5cxdf4dv
harum-scarum
0
76164
293156
2026-09-19T10:02:14Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293156
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˌhɛəɹəmˈskɛəɹəm/|a=US}}
===ႁိၵ်ႈ===
{{en-noun|nolink=1}}
# ၵူၼ်းၸလိူဝ်ႈၸလႃႈ။
# ၵူၼ်းလႃႈလီႈႁဵတ်းႁတ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
czxmq2yimcms586y04qc94dmzw55810
harum-scarums
0
76165
293157
2026-09-19T10:02:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293157
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harum-scarum}}
4rs9ne3eltq2xwb29tla9daco85hyf5
harvest
0
76166
293158
2026-09-19T10:02:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293158
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhɑɹ.vəst/|/ˈhɑɹ.vɪst/|a=US}}
* {{audio|en|en-us-harvest.ogg|a=US}}
* {{IPA|en|/ˈhɑː(ɹ)vɪst/|/ˈhɑː(ɹ)vəst/|a=UK}}
* {{IPA|en|/ˈhaːvəst/|a=Australia,NZ}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# ၶၢဝ်းပၢတ်ႇၶဝ်ႈ။
# လွင်ႈပၢတ်ႇၶဝ်ႈ။
# ၽွၼ်းလီ။
===သၢင်ႈ===
{{en-verb}}
# ပၢတ်ႇၶဝ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
78qhziw21bd1tsptg1rxhyit4sa5vba
harvests
0
76167
293159
2026-09-19T10:02:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293159
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harvest}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harvest||s-verb-form}}
5casdrg9mdbru176gasm8ukkz9yx6rg
harvested
0
76168
293160
2026-09-19T10:02:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293160
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
[[File:012 Hay bales during harvest in Meuse Department, France - Creative Commons free stock photo with attribution.jpg |thumb|Straw bales on a '''harvested''' wheat field]]
# {{infl of|en|harvest||ed-form}}
e7y1q2pyxd3hree1iaojpc7ntv4w2nn
harvesting
0
76169
293161
2026-09-19T10:03:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293161
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Wodencafe-harvesting.wav|a=US}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|harvest||ing-form}}
qe5u845cx2ju1rzmx0hud6esblpjb7g
harvester
0
76170
293162
2026-09-19T10:03:14Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293162
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|LL-Q1860 (eng)-Vealhurl-harvester.wav|a=Southern England}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၵူၼ်းပၢတ်ႇၶဝ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
26p2rfmf287qkpshkdb6ka0zuieo7fw
harvesters
0
76171
293163
2026-09-19T10:03:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293163
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|harvester}}
tw2chixduc9ft07u6mukjj91tmbfffc
has-been
0
76172
293164
2026-09-19T10:03:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293164
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæz.biːn/|a=UK}}
* {{IPA|en|/ˈhæz.bɪn/|/-bɛn/|a=US}}
* {{audio|en|En-us-has-been.ogg|a=US}}
* {{audio|en|en-au-has-been.ogg|a=AU}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၽူႈဢၼ်ၼမ်ႉၵတ်ႉတၢင်းၶႅၼ်ႇမၼ်းတူၵ်းၵႂႃႇ ဢမ်ႇမီးမိူၼ်ၵဝ်ႇ။
# ၶူဝ်းၶွင်ဢၼ်ၵၢပ်ႈပၢၼ်ပူၼ်ႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
ev2wwnlfv0ap6x8cvjmqomtvcxv4rwm
has-beens
0
76173
293165
2026-09-19T10:03:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293165
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|has-been}}
96p8vtbnafw0w4k9swphjpivhw7ysmi
hash
0
76174
293166
2026-09-19T10:03:54Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293166
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæʃ/|[ˈhæʃ]}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-hash.wav|a=Southern England}}
* {{rhymes|en|æʃ|s=1}}
* {{hyph|en|hash}}
* {{hmp|en|Hash}}
===သၢင်ႈ===
{{en-verb}}
# ၽၵ်ႉၼိူဝ်ႉ။
===ႁိၵ်ႈ===
{{en-noun}}
# ၼိူဝ်ႉဢၼ်ၽၵ်ႉဝႆႉဢွၼ်ႇဢွၼ်ႇ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
2keq2wr6ufx0q81lzgn1gx6oaipeakm
hashed
0
76175
293167
2026-09-19T10:04:34Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293167
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{rhymes|en|æʃt|s=1}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hash||ed-form}}
ejtbrwxfi6cjqj40qp7811d2rfzn472
hashing
0
76176
293168
2026-09-19T10:05:14Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293168
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hash||ing-form}}
{{C|en|Sports}}
ngfla26d2rssmyhnlu5su5uii6odi85
hashes
0
76177
293169
2026-09-19T10:05:24Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293169
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hash}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hash||s-verb-form}}
onv6iooyat4joa6fpy682vfq61t56sa
settle someone's hash
0
76178
293170
2026-09-19T10:05:34Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293170
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|En-au-settle someone's hash.ogg|a=AU}}
===သၢင်ႈ===
{{en-verb|*|head=[[settle]] someone's [[hash]]}}
# တဵၵ်းဝႆႉလီလီ ၼင်ႇႁိုဝ်တေဢမ်ႇၵဝ်းလႆႈထႅင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
emkipa409aygil91cpc011hu1o2ijox
settling someone's hash
0
76179
293171
2026-09-19T10:05:44Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293171
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|settle someone's hash||ing-form}}
d6r08mcmqtvuwlvc8774j5ieirti0ny
settles someone's hash
0
76180
293172
2026-09-19T10:05:54Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293172
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|settle someone's hash||s-verb-form}}
afe3c5qobmcisy567jmbrmzqfegbz0x
settled someone's hash
0
76181
293173
2026-09-19T10:06:04Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293173
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|settle someone's hash||ed-form}}
rhesl58p815j0gn54zgdem93hn3sawe
make a hash of
0
76182
293174
2026-09-19T10:06:22Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293174
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{en-verb|<,,made>}}
# ႁဵတ်းဢမ်ႇပေႃးၶႅမ်ႉပေႃးလႅပ်ႈ။
# ႁဵတ်းသုၵ်ႉသၵ်ႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
4a7mpiqpma5q87riumb92n00n6rfsm3
making a hash of
0
76183
293175
2026-09-19T10:06:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293175
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|make a hash of||ing-form}}
78v8irg9hlankd1ptrf60wr02husvx3
made a hash of
0
76184
293176
2026-09-19T10:06:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293176
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|make a hash of||ed-form}}
ehejo1jhhwb3xn4u6jpfgso9p96nccf
makes a hash of
0
76185
293177
2026-09-19T10:06:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293177
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|make a hash of||s-verb-form}}
tfxyfu8hp8ykrsijajhxjwzi5y7jrsc
hashish
0
76186
293178
2026-09-19T10:07:02Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293178
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/həˈʃiːʃ/|/hæˈʃiːʃ/|/ˈhæʃɪʃ/}}
* {{audio|en|LL-Q1860 (eng)-Naomi Persephone Amethyst (NaomiAmethyst)-hashish.wav|a=GA|IPA=/hæˈʃiːʃ/}}
* {{audio|en|LL-Q1860 (eng)-Naomi Persephone Amethyst (NaomiAmethyst)-hashish (alt).wav|a=GA|IPA=/ˈhæʃɪʃ/}}
* {{audio|en|En-au-hashish.ogg|a=AU}}
* {{rhymes|en|iːʃ|s=2}}
===ႁိၵ်ႈ===
{{en-noun|-|+}}
# ယႃႈမဝ်းၵမ်မဵဝ်းၼိုင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
7ct11s8ait1kuovkpdyxvdfmcbmklrt
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/iːʃ
14
76187
293179
2026-09-19T10:07:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293179
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/iːʃ/2 သဵင်
14
76188
293180
2026-09-19T10:07:22Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293180
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/iːʃ]]
q1p9i5v2ev1i01pwk8bpwxmm4t6oshu
hashishes
0
76189
293182
2026-09-19T10:07:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293182
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hashish}}
5uyv7mkg3173p869lgfanaujlxsv1s3
hasheesh
0
76190
293183
2026-09-19T10:07:52Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293183
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# ယႃႈမဝ်းၵမ်မဵဝ်းၼိုင်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
96xrp0cpwl213fltsy4ove967msk99b
hasheeshes
0
76191
293184
2026-09-19T10:08:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293184
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hasheesh}}
jbht9fnb9t7hr3bkvt966yhzre0u51t
hasp
0
76192
293185
2026-09-19T10:08:12Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293185
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hɑːsp/|/hæsp/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-hasp2.wav|a=Southern England}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-hasp.wav|a=Southern England}}
* {{IPA|en|/hæsp/|a=GA}}
* {{rhymes|en|ɑːsp|æsp|s=1}}
===ႁိၵ်ႈ===
{{en-noun}}
# ဢၼ်ၵွင်ႉၽၵ်းတူ။
# ပတ်ႉတႃႇၽၵ်းတူ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
9p3tlyv3txalhgm0ft3azjxuyao2xem
hasped
0
76193
293186
2026-09-19T10:08:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293186
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasp||ed-form}}
acku76pktr92lc3q7und76kk2yau2qy
hasps
0
76194
293187
2026-09-19T10:09:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293187
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hasp}}
o8ibqf5754tqdxl3v5k2hf96tuvgnwz
hasping
0
76195
293188
2026-09-19T10:09:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293188
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasp||ing-form}}
6be51e6soub4ymggjhimvl4i8udwevq
hassle
0
76196
293189
2026-09-19T10:09:22Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293189
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhæsl̩/}}
* {{audio|en|en-au-hassle.ogg|a=AU}}
* {{rhymes|en|æsəl|s=2}}
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈၽိတ်းၵၼ်။
# မေႃးၵၼ်ႁၢဝ်ႈႁၢဝ်ႈႁႅင်းႁႅင်း။
# (ၵၢၼ်၊ သႆၢငႆၢ) ဢၼ်မီးလွင်ႈယၢပ်ႇၽိုတ်ႇ။
===သၢင်ႈ===
{{en-verb}}
# ထဵင်ၵၼ်၊ မေႃးၵၼ်ႁၢဝ်ႈႁၢဝ်ႈႁႅင်းႁႅင်း။
# ယႃႉၵဝ်း။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
7awshgbuy9um76svkeonm7zbp9b9z1n
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsəl
14
76197
293190
2026-09-19T10:09:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293190
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsəl/2 သဵင်
14
76198
293191
2026-09-19T10:09:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293191
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsəl]]
sfn86p1mgxwgd9ow20hzgng4hbfyi19
hassled
0
76199
293193
2026-09-19T10:10:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293193
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hassle||ed-form}}
lpoxyg4zw2iyy8agt4y412rztnmkbfu
hassling
0
76200
293194
2026-09-19T10:10:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293194
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hassle||ing-form}}
kvh43trdgiruhao4kj0194ews1z0hkt
hassles
0
76201
293195
2026-09-19T10:10:22Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293195
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hassle}}
mgu99htjcgrszg9vxrfniubmbxu83pi
hassock
0
76202
293196
2026-09-19T10:10:32Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293196
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhasək/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-hassock.wav|a=Southern England}}
* {{rhymes|en|æsək|s=2}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၵွပ်းလွင်တႃႇဢဝ်ႁူဝ်ၶဝ်ႇတဝ်ႉ၊ တႃႇမွၼ်ၶႃ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
nywozst53fng7bemon8dv8stlwxs94q
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsək
14
76203
293197
2026-09-19T10:10:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293197
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsək/2 သဵင်
14
76204
293198
2026-09-19T10:10:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293198
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/æsək]]
j7fwm6zj6ys10cjo8rgs24xp1lnlbuq
hassocks
0
76205
293200
2026-09-19T10:11:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293200
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hassock}}
kx6hr98furx8o0oo3rke8z17633sw6k
haste
0
76206
293201
2026-09-19T10:11:22Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293201
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/heɪst/}}
* {{audio|en|en-us-haste.ogg|a=US}}
* {{rhymes|en|eɪst|s=1}}
===ႁိၵ်ႈ===
{{en-noun|-|s}}
# လွင်ႈၽႂ်း။
# လွင်ႈဝႆး။
# လွင်ႈႁဵတ်းဝႆး။
# လွင်ႈႁိပ်ႈၼႅတ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
m7llhyiez3itm0csx9xtr43ujrara2k
hastes
0
76207
293202
2026-09-19T10:12:02Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293202
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|haste||s-verb-form}}
qqtwbj4jptinuyh8lgnpetwl6czbps8
hasted
0
76208
293203
2026-09-19T10:12:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293203
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪstɪd/}}
* {{rhyme|en|eɪstɪd|s=2}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|haste||ed-form}}
n7fsu4e1kkql19f5913ne0e7hrhofsp
hastest
0
76209
293204
2026-09-19T10:12:22Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293204
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|haste||st-form}}
5wixickewct7xh0puiq3oxsg66osms7
hasting
0
76210
293205
2026-09-19T10:12:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293205
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|s}}
# {{inflection of|en|hastings||s}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|haste||ing-form}}
98k14ooi45nvngq4r9j1e59zvl3p2u9
hasten
0
76211
293206
2026-09-19T10:12:42Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293206
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪ.sn̩/}}
* {{audio|en|En-us-hasten.ogg|a=US}}
* {{rhymes|en|eɪsən|s=2}}
===သၢင်ႈ===
{{en-verb}}
# ႁဵတ်း၊ လၢတ်ႈ၊ ၵႂႃႇဝႆးဝႆး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
fsz1va7qq7mp1h4o31iim576lnyw8b9
hastening
0
76212
293210
2026-09-19T10:13:22Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293210
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasten||ing-form}}
eorfy7igqwj0wknj64991b6ebdqznry
hastened
0
76213
293211
2026-09-19T10:13:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293211
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪsn̩d/}}
* {{audio|en|en-us-hastened.ogg|a=US}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasten||ed-form}}
lu8be1q4jl68sbabnv9dieqzwewlydq
hastens
0
76214
293212
2026-09-19T10:13:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293212
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasten||s-verb-form}}
7tbvlbtetja3n8730ifq2rlw3vz20kr
hastenest
0
76215
293213
2026-09-19T10:13:52Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293213
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hasten||st-form}}
slq7rj802ky21gvyvbme3vtxl64pogu
hasty
0
76216
293214
2026-09-19T10:14:02Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293214
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪsti/}}
* {{audio|en|en-us-hasty.ogg|a=US}}
* {{rhymes|en|eɪsti|s=2}}
===ၵမ်ႉႁိၵ်ႈ===
{{en-adj|er}}
# ဢၼ်ၼႅတ်ႈႁဵတ်း၊ လၢတ်ႈ၊ ၵႂႃႇ။
# ဢၼ်ႁဵတ်းဝႆး။
# ဢၼ်ႁိပ်ႈၼႅတ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
9uoirm4zefa3lfex7muzbkl38dd5c3z
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsti
14
76217
293215
2026-09-19T10:14:12Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293215
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ]]
e1gv2h2w42ckvt9awovtgbur8voadsn
ပိူင်ထၢၼ်ႈ:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsti/2 သဵင်
14
76218
293216
2026-09-19T10:14:22Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ ပိူင်ထၢၼ်ႈ (Category)
293216
wikitext
text/x-wiki
[[Category:တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsti]]
bumpjwl7w4tfkeor8z4haicx8cwl6pa
တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪsti
106
76219
293217
2026-09-19T10:14:32Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈ တူၼ်းၸၢပ်ႈလႅပ်ႈ
293217
wikitext
text/x-wiki
{{rhymes nav|en|eɪ|sti}}
==သဵင်ဢွၵ်ႇ==
-āsti, /-eɪsti/, /-eIsti/
==တူၼ်းၸၢပ်ႈလႅပ်ႈ==
===ၶေႃႈမၢႆတွင်း===
#For more rhymes, add ''y'', ''ey'' or ''ie'' to some words at [[တူၼ်းၸၢပ်ႈလႅပ်ႈ:ဢိင်းၵလဵတ်ႈ/eɪst|-eɪst]].
===သွင်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
*[[hasty]]
*[[pasty]] (''adjective'')
*[[tasty]]
===သၢမ်သဵင်===
<!--Note: words in this section must be stressed on the PENULTIMATE syllable.-->
ez5it3crd7lrqg6fhh14cmifhnipe9q
hastiest
0
76220
293218
2026-09-19T10:14:42Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293218
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈသုင်သုတ်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-superlative of|hasty}}
pntjxsossjgtldepxvx017mcqf2r1gz
hastier
0
76221
293219
2026-09-19T10:15:01Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293219
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ၵမ်ႉႁိၵ်ႈ===
{{head|en|ၶေႃႈတႅၵ်ႈၼိူင်း ၵမ်ႉႁိၵ်ႈ}}
# {{en-comparative of|hasty}}
9xhz6sk535y6831qjci0qtgrtutz8vw
hastily
0
76222
293220
2026-09-19T10:15:07Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293220
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪstɪli/}}
* {{audio|en|en-us-hastily.ogg|a=US}}
* {{hyphenation|en|hast|i|ly}}
===ၵမ်ႉသၢင်ႈ===
{{en-adv}}
# ႁဵတ်းဝႆးၼႃႇ။
# ႁိပ်ႈႁိပ်ႈၼႅတ်ႈၼႅတ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
34b5fbx1g19a40egsx1zf3re7pxurpl
hastiness
0
76223
293221
2026-09-19T10:15:17Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293221
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|~}}
# လွင်ႈၼႅတ်ႈႁဵတ်း။
# လွင်ႈႁိပ်ႈၼႅတ်ႈ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
se8zqfv3n172w18mzi47q0w4r1qwq9m
hastinesses
0
76224
293222
2026-09-19T10:15:27Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293222
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hastiness}}
65xo00nmkqo7228uu5qe0yo4y3dztm7
hat
0
76225
293223
2026-09-19T10:15:37Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293223
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/hæt/|a=US,AU}}
** {{audio|en|en-us-hat.ogg|a=US}}
* {{IPA|en|/hat/|a=Canada,California,RP}}
** {{audio|en|en-uk-hat.ogg|a=RP}}
* {{IPA|en|/hæ̞ʔ/|a=Pacific Northwest}} {{attn|en|check that this is correct; see [[Wiktionary:Tea room/2025/November#bag, beg]] for some context}}
* {{IPA|en|/hɛt/|a=Northern US,NZ}}
* {{rhymes|en|æt|s=1}}
===ႁိၵ်ႈ===
{{en-noun}}
# မၢၵ်ႇႁူဝ်။
# ၸၼ်ႉထၢၼ်ႈၵၢၼ်လုမ်း။
# go၊ come hat in hand, ၵူမ်ႈၵူမ်ႈၵွမ်းၵွမ်းၶဝ်ႈၸူး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
cnbypu4on6chp2rv2krd48semqa54qy
hated
0
76226
293224
2026-09-19T10:16:18Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293224
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪtɪd/}}
* {{audio|en|en-us-hated.ogg|a=US}}
* {{rhymes|en|eɪtɪd|s=2}}
* {{hyphenation|en|hat|ed}}
{{root|en|ine-pro|*keh₂d-}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hate||ed-form}}
llzpkqmmbdrc2gvv0zk7o13jw7c3kfl
hates
0
76227
293225
2026-09-19T10:16:57Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293225
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/heɪts/}}
* {{rhymes|en|eɪts|s=1}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hate}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hate||s-verb-form}}
#* {{see citations|en}}
gsyzmcwy6tsrz2prv97i5v7m56rx2u2
hatting
0
76228
293226
2026-09-19T10:17:37Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293226
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hat||ing-form}}
7dp1928qamhoqurcbub2uhhn7278iap
hating
0
76229
293227
2026-09-19T10:17:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293227
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈheɪtɪŋ/}}
* {{rhymes|en|eɪtɪŋ|s=2}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hate||ing-form}}
aqhgjbsw06270uryvn13yr9aehx3nis
hats
0
76230
293228
2026-09-19T10:18:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293228
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|en-us-hats.ogg|a=US}}
* {{IPA|en|/hæts/}}
* {{rhymes|en|æts|s=1}}
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hat}}
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hat||s-verb-form}}
0w7d5uld9uyw73dosh6rc9cnaby88j9
hatest
0
76231
293229
2026-09-19T10:19:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293229
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hate||st-form}}
rlgjszvrinyvmueapczcayystcblv1n
hatted
0
76232
293230
2026-09-19T10:19:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293230
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hat||ed-form}}
l85lm75mwss3e1okcg3yhj6wi6vml5s
take one's hat off to
0
76233
293231
2026-09-19T10:19:36Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293231
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{audio|en|En-au-take one's hat off to.ogg|a=AU}}
===သၢင်ႈ===
{{en-verb|<,,took,taken>}}
# ၼႄလွင်ႈယွင်ႈယေႃး။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
4ybmxdbyxezeis0tw226iyc3sdgh1bm
takes one's hat off to
0
76234
293232
2026-09-19T10:19:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293232
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|take one's hat off to||s-verb-form}}
2kgrrhdrzueq0c6kgk2mkwhi9fthzlk
taking one's hat off to
0
76235
293233
2026-09-19T10:19:56Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293233
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|take one's hat off to||ing-form}}
tn4ry6y75jl9zg04nd0t4107om5bff1
took one's hat off to
0
76236
293234
2026-09-19T10:20:06Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293234
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|take one's hat off to||spast}}
asjre8y0g07o35ftoezicotnzq278xo
taken one's hat off to
0
76237
293235
2026-09-19T10:20:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293235
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|take one's hat off to||past|part}}
fbh9ptfx1h2pn52mn44pnd0fsc87m5y
bad hat
0
76238
293236
2026-09-19T10:20:26Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293236
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun}}
# ၵူၼ်းႁႆၢႉ။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
13g4hdfefw86jyjl9299zht0dr4y3wy
bad hats
0
76239
293237
2026-09-19T10:20:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293237
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|bad hat}}
00wk7gg87ab5xmigfh6m73jb64ohfei
hatter
0
76240
293238
2026-09-19T10:20:46Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293238
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{IPA|en|/ˈhætə(ɹ)/}}
* {{audio|en|EN-AU ck1 hatter.ogg|a=AU}}
* {{rhymes|en|ætə(ɹ)|s=2}}
===ႁိၵ်ႈ===
{{en-noun}}
# ၵူၼ်းၶႆၢမၢၵ်ႇႁူဝ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
irx6moafq3e49q03wl5fprttfk9pw69
hattering
0
76241
293242
2026-09-19T10:21:26Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293242
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hatter||ing-form}}
h0ine0p15p2l8l7hi198c670ickzpg4
hattered
0
76242
293243
2026-09-19T10:21:36Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293243
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သၢင်ႈ===
{{head|en|ပိူင်ၽၢင်သၢင်ႈ}}
# {{infl of|en|hatter||ed-form}}
8i4sqfhyehuf1kftn3sjojjlzxcl6b1
hatters
0
76243
293244
2026-09-19T10:21:46Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293244
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hatter}}
kv4xvx6zw04mg9r40i4lnfg61gfbki5
hatful
0
76244
293245
2026-09-19T10:21:56Z
SIITBot
662
Bot: မႄးမႂ်ႇ/ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈၶေႃႈၵႂၢမ်း
293245
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{en-noun|s|hatsful}}
# တဵမ်မၢၵ်ႇႁူဝ်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
j7eladtdhwvyv0ubskck62siugzou1l
hatfuls
0
76245
293246
2026-09-19T10:22:07Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293246
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hatful}}
7stfhs4qyx9ow03br3be7ths6gkg63r
hatsful
0
76246
293247
2026-09-19T10:22:16Z
SIITBot
662
Bot: ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈပိူင်ၽၢင် (inflected form)
293247
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|hatful}}
7stfhs4qyx9ow03br3be7ths6gkg63r