text: Category:Norwegian Nynorsk terms derived from the Proto-Indo-European root *peḱ-


text: Category:Occitan female given names from Indo-European languages

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
nang-abala

Etymology
From.

title: nang-abala


text:
nang-aabala

Etymology
From with initial.

title: nang-aabala


text:
mang-aabala

Etymology
From with initial.

title: mang-aabala


text: Category:Old Bengali term requests

title: Category:Old Bengali term requests


text: Category:Old Church Slavonic adjective forms


text: Category:Old Frisian clippings

title: Category:Old Frisian clippings


text: Category:Old Frisian superlative adjectives


text: Category:Old Frisian terms borrowed from Old Saxon


text: Category:Old Frisian terms borrowed from Vulgar Latin


text: Category:Old Frisian terms derived from Old High German


text: Category:Old Frisian terms derived from Old Saxon


text: Category:Old Frisian terms with unknown etymologies


text: Category:Old Georgian intransitive verbs


text: Category:Old Odia term requests

title: Category:Old Odia term requests


text: Category:Plautdietsch terms derived from East Slavic languages


text: Category:Proto-Celtic terms derived from the Proto-Indo-European root *lerd-


text: Category:Proto-Germanic terms derived from the Proto-Indo-European root *pleh₂-


text: Category:Proto-West Germanic auto-table templates


text: Category:Rabha terms derived from Indo-Aryan languages


text: Category:Requests for cleanup in Kabyle entries


text: Category:Requests for definitions in Gullah entries


text: Category:Requests for deletion in Punjabi entries


text: Category:Requests for deletion in Urdu entries


text: Category:Requests for expansion of etymologies in Ainu entries


text: Category:Requests for inflections in Proto-Indo-Iranian verb entries


text: Category:Savi appendices

title: Category:Savi appendices


text: Category:Sidamo borrowed terms

title: Category:Sidamo borrowed terms


text: Category:Sidamo templates

title: Category:Sidamo templates


text: Category:Sidamo terms derived from Afroasiatic languages


text: Category:Sidamo terms derived from Cushitic languages


text: Category:Sidamo terms derived from Ethiopian Semitic languages


text: Category:Sidamo terms derived from Hellenic languages


text: Category:South Levantine Arabic terms borrowed from Persian


text: Category:South Levantine Arabic terms derived from Persian


text: Category:South Slavey terms borrowed from English


text: Category:South Slavey terms derived from Doric Greek


text: Category:South Slavey terms derived from English


text: Category:South Slavey terms derived from Latin


text: Category:South Slavey terms derived from Middle French


text: Category:Swahili terms suffixed with -we


text: Category:Swedish semantic loans from English


text: Category:Terms derived from the Arabic root ش ف ي


text: Category:Terms partially calqued from Arabic


text: Category:Toki Pona terms derived from Bantu languages


text: Category:Villages in Thailand

title: Category:Villages in Thailand


text: Category:af:Card games

title: Category:af:Card games


text: Category:af:Heraldry

title: Category:af:Heraldry


text: Category:ajp:Footwear

title: Category:ajp:Footwear


text: Category:akl:Crime

title: Category:akl:Crime


text: Category:akl:People

title: Category:akl:People


text: Category:apc:Footwear

title: Category:apc:Footwear


text: Category:az:Ideologies

title: Category:az:Ideologies


text: Category:az:Socialism

title: Category:az:Socialism


text: Category:bbl:Anatomy

title: Category:bbl:Anatomy


text: Category:bbl:Family

title: Category:bbl:Family


text: Category:bbl:Female family members

title: Category:bbl:Female family members


text: Category:bbl:Roads

title: Category:bbl:Roads


text: Category:bbl:Travel

title: Category:bbl:Travel


text: Category:bn:Oxalidales order plants

title: Category:bn:Oxalidales order plants


text: Category:ce:Female family members

title: Category:ce:Female family members


text: Category:ce:Mammals

title: Category:ce:Mammals


text: Category:ce:Roads

title: Category:ce:Roads


text: Category:ce:Travel

title: Category:ce:Travel


text: Category:en:Rivers in Albania

title: Category:en:Rivers in Albania


text: Category:fr:Cities in Artsakh

title: Category:fr:Cities in Artsakh


text: Category:fr:Places in Artsakh

title: Category:fr:Places in Artsakh


text: Category:hi:Myrtales order plants

title: Category:hi:Myrtales order plants


text: Category:id:Judaism

title: Category:id:Judaism


text: Category:inh:Female family members

title: Category:inh:Female family members


text: Category:inh:Roads

title: Category:inh:Roads


text: Category:inh:Tools

title: Category:inh:Tools


text: Category:inh:Travel

title: Category:inh:Travel


text: Category:jje:Cutlery

title: Category:jje:Cutlery


text: Category:jv:Beards

title: Category:jv:Beards


text: Category:kab:Chordates

title: Category:kab:Chordates


text: Category:kk:Acids

title: Category:kk:Acids


text: Category:mdh:Music

title: Category:mdh:Music


text:
बटु

Etymology
Possibly borrowed from Munda. A much less likely suggestion relates this to, via a supposed intermediate.

Noun

 * 1) a boy, lad, fellow, stripling, youth (esp. a young Brahman, but also contemptuously applied to adult persons)

title: बटु


text: Category:mdh:Tools

title: Category:mdh:Tools


text: Category:mrw:Games

title: Category:mrw:Games


text: Category:no:Chess

title: Category:no:Chess


text: Category:paq:Chordates

title: Category:paq:Chordates


text: Category:rah:Nature

title: Category:rah:Nature


text: Category:sid:All topics

title: Category:sid:All topics


text: Category:sid:Body parts

title: Category:sid:Body parts


text: Category:sid:Buildings and structures

title: Category:sid:Buildings and structures


text: Category:sid:Business

title: Category:sid:Business


text: Category:sid:Even-toed ungulates

title: Category:sid:Even-toed ungulates


text: Category:sid:Family members

title: Category:sid:Family members


text: Category:sid:Female people

title: Category:sid:Female people


text: Category:sid:Food and drink

title: Category:sid:Food and drink


text: Category:sid:Foods

title: Category:sid:Foods


text: Category:sid:Home

title: Category:sid:Home


text: Category:sid:Human

title: Category:sid:Human


text: Category:sid:Human behaviour

title: Category:sid:Human behaviour


text: Category:sid:Hunting

title: Category:sid:Hunting


text: Category:sid:Matter

title: Category:sid:Matter


text: Category:sid:Military

title: Category:sid:Military


text: Category:sid:Tools

title: Category:sid:Tools


text: Category:sq:Rivers in Albania

title: Category:sq:Rivers in Albania


text: Category:tao:Arthropods

title: Category:tao:Arthropods


text: Category:tl:Spices

title: Category:tl:Spices


text: Category:ur:Beetles

title: Category:ur:Beetles


text: Category:xkz:Foods

title: Category:xkz:Foods


text: Category:xkz:List of set categories

title: Category:xkz:List of set categories


text: Category:xsl:Beverages

title: Category:xsl:Beverages


text: Category:xsl:Celestial bodies

title: Category:xsl:Celestial bodies


text: Category:xsl:Cutlery

title: Category:xsl:Cutlery


text: Category:xsl:Female

title: Category:xsl:Female


text: Category:xsl:Headwear

title: Category:xsl:Headwear


text: Category:xsl:Male

title: Category:xsl:Male


text: Category:xsl:Seasons

title: Category:xsl:Seasons


text: Category:xsl:Vegetables

title: Category:xsl:Vegetables


text: Category:xsl:Weapons

title: Category:xsl:Weapons


text:
formularium

Etymology
From, from , itself from (diminutive of ) +. .

Noun

 * 1) a pharmacopoeia or list of available drugs, particularly prescription drugs.
 * 2) a list of drugs, created by health insurers, hospitals, or prescription drug plans, that defines how costs for any drug are shared between patient and health care provider, typically broken down by tiers such as preferred generics with lowest copay, or preferred brand with higher copay, or non-preferred brand and not covered tiers with the highest cost to the patient.
 * 1) a list of drugs, created by health insurers, hospitals, or prescription drug plans, that defines how costs for any drug are shared between patient and health care provider, typically broken down by tiers such as preferred generics with lowest copay, or preferred brand with higher copay, or non-preferred brand and not covered tiers with the highest cost to the patient.

title: formularium


text: quote tweets

title: quote tweets


text: quote tweeting

title: quote tweeting


text: quote tweeted

title: quote tweeted


text:
제왕

Etymology
.

Noun

 * 1) emperor; king

title: 제왕


text: quote-tweet

title: quote-tweet


text:
mouth the words

Verb

 * 1)  To mouth words in the sense "to make the actions of speech, without producing sound."
 * 2)  To speak insincerely.
 * 1)  To speak insincerely.

title: mouth the words


text: Category:Latvian terms derived from the Proto-Indo-European root *dʰwes-


text: Category:Terms derived from the Proto-Indo-European root *dʰwes-


text: small bowel

title: small bowel


text:
halabos

Noun

 * 1) boiling with only slightly salted water
 * 2) food cooked in such a manner

Adjective

 * 1) boiled with only slightly salted water

title: halabos


text: Category:Latin terms derived from the Proto-Indo-European root *dʰwes-


text: Category:Hindi terms derived from the Proto-Indo-European root *dʰwes-


text:
beer frame

Noun

 * 1)  A frame in which the bowler who performs worst is assigned the forfeit of buying beer for the other players.

title: beer frame


text: beer frames

title: beer frames


text:
Nhân Xuyên

Etymology
.

title: Nhân Xuyên


text: Category:Proto-Germanic terms derived from the Proto-Indo-European root *dʰwes-


text: Category:Proto-West Germanic terms derived from the Proto-Indo-European root *dʰwes-


text: small bowels

title: small bowels


text:
पुरुषार्थ

Etymology
From.

Noun

 * 1) manliness

title: पुरुषार्थ


text:
hambalang

Adjective

 * 1) fallen or lying across the way

Noun

 * 1) anything fallen or lying across the way
 * 2) act or condition of lying flat across the way
 * 3)  block; hindrance; obstruction

title: hambalang


text:
पुरेसे

Adjective

 * 1) enough, sufficient

title: पुरेसे


text:
parencephalitis

Noun

 * 1) inflammation of the cerebellum

title: parencephalitis


text:
पुष्टी

Noun

 * 1) support, substantiation

title: पुष्टी


text:
पुळी

Noun

 * 1) pimple

title: पुळी


text:
double coding

Noun

 * 1) ambiguity in the interpretation of language depending on the frame of reference used
 * 2) mixture of postmodern techniques with traditional styles

title: double coding


text:
sapok

Etymology
From. Compare 🇨🇬 and 🇨🇬.

Noun

 * 1) punch with a closed fist
 * 2)  uppercut

title: sapok


text:
кайзер

Etymology
., and.

Noun

 * 1) Kaiser or kaiser

title: кайзер


text:
Module:User:Benwing2/en-headword

local export = {} local pos_functions = {}

local force_cat = false -- for testing; if true, categories appear in non-mainspace pages

local m_links = require("Module:links") local table_module = "Module:table" local headword_utilities_module = "Module:User:Benwing2/headword utilities" local string_utilities_module = "Module:string utilities"

local lang = require("Module:languages").getByCode("en") local langname = lang:getCanonicalName

local rsplit = mw.text.split

local function glossary_link(entry, text) text = text or entry return "" .. text .. "" end

local function track(page) require("Module:debug/track")("en-headword/" .. page) return true end

-- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame)

local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")

local params = { ["head"] = {list = true}, ["id"] = {}, ["json"] = {type = "boolean"}, ["sort"] = {}, ["splithyph"] = {type = "boolean"}, ["nosplithyph"] = {type = "boolean"}, ["hyphspace"] = {type = "boolean"}, ["nolinkhead"] = {type = "boolean"}, ["nosuffix"] = {type = "boolean"}, ["nomultiwordcat"] = {type = "boolean"}, ["pagename"] = {}, -- for testing }

local pos_data = pos_functions[poscat] if pos_data then for key, val in pairs(pos_data.params) do			params[key] = val end end

local args = require("Module:parameters").process(frame:getParent.args, params, nil, "en-headword", "show")

local pagename = args.pagename or mw.loadData("Module:headword/data").pagename -- Accounts for unsupported titles.

local user_specified_heads = args.head local heads = user_specified_heads local autohead if args.nolinkhead or not pagename:find("[ '%-]") then autohead = pagename else local m_headutil = require(headword_utilities_module)

local en_no_split_apostrophe_words = require("Module:table/listToSet") { "one's", "someone's", "he's", "she's", "it's", }

local en_include_hyphen_prefixes = require("Module:table/listToSet") { -- We don't include things that are also words even though they are often (perhaps mostly) prefixes, e.g. -- "be", "counter", "cross", "extra", "half", "mid", "over", "pan", "under". "acro", "acousto", "Afro", "agro", "anarcho", "angio", "Anglo", "ante", "anti", "arch", "auto", "bi", "bio", "cis", "co", "cryo", "crypto", "de", "demi", "eco", "electro", "Euro", "ex", "Greco", "hemi", "hydro", "hyper", "hypo", "infra", "Indo", "inter", "intra", "Judeo", "macro", "meta", "micro", "mini", "multi", "neo", "neuro", "non", "para", "peri", "post", "pre", "pro", "proto", "pseudo", "re", "semi", "sub", "super", "trans", "un", "vice", }

local function is_english(term) local title = mw.title.new(term) if title and title.exists then local content = title:getContent if content and content:find("==English==\n") then return true end end return false end

local function en_split_hyphen_when_space(word) if not word:find("%-") then return nil end if args.hyphspace then return "" .. word .. "" end if args.nosplithyph then return "" .. word .. "" end if not args.splithyph then local space_word = word:gsub("%-", " ") if is_english(space_word) then return "" .. word .. "" end if is_english(word) then return "" .. word .. "" end end return nil end

local function en_split_apostrophe(word) local base = word:match("^(.*)'s$") if base then return "" .. base .. "'s" end base = word:match("^(.*)'$") if base then if base:find("s$") then local sg = require(string_utilities_module).singularize(base) if is_english(sg) then return "" .. base .. "'" end end return "" .. base .. "'" end return "" .. word .. "" end

autohead = m_headutil.add_links_to_multiword_term(pagename, {			split_hyphen_when_space = en_split_hyphen_when_space,			split_apostrophe = en_split_apostrophe,			no_split_apostrophe_words = en_no_split_apostrophe_words,			include_hyphen_prefixes = en_include_hyphen_prefixes,		}) end

if #heads == 0 then heads = {autohead} else for i, head in ipairs(heads) do			if head:find("^~") then head = require(headword_utilities_module).apply_link_modifiers(autohead, head:sub(2)) heads[i] = head end if head == autohead then track("redundant-head") end end end

local data = { lang = lang, pos_category = poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, inflections = {}, nomultiwordcat = args.nomultiwordcat, sort_key = args.sort, pagename = args.pagename, -- This is always set, and in the case of unsupported titles, it's the displayed version (e.g. 'C|N>K' instead of		-- 'Unsupported titles/C through N to K'). displayed_pagename = pagename, id = args.id, force_cat_output = force_cat, }

local is_suffix = false if not args.nosuffix and pagename:find("^%-") and not pagename:find("^%-%-") and poscat ~= "suffix forms" then is_suffix = true data.pos_category = "suffixes" local singular_poscat = require("Module:string utilities").singularize(poscat) table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") table.insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end

if pos_data then pos_data.func(args, data, is_suffix) end

local extra_categories = {} if pagename:find("[Qq][^Uu]") or pagename:find("[Qq]$") then table.insert(data.categories, langname .. " words containing Q not followed by U") end if pagename:find("([A-Za-z])%1%1") then table.insert(data.categories, langname .. " words containing three consecutive instances of the same letter") end if pagename:find("([A-Za-z])%1%1%1") then table.insert(data.categories, langname .. " words containing four consecutive instances of the same letter") end -- mw.ustring.toNFD performs decomposition, so letters that decompose -- to an ASCII vowel and a diacritic, such as é, are counted as vowels and -- do not need to be included in the pattern. if not mw.ustring.find(mw.ustring.lower(mw.ustring.toNFD(pagename)), "[aeiouyæœø]") then table.insert(data.categories, langname .. " words without vowels") end if pagename:find("yre$") then table.insert(data.categories, langname .. ' words ending in "-yre"') end if not pagename:find(" ") and mw.ustring.len(pagename) >= 25 then table.insert(extra_categories, "Long " .. langname .. ' words') end if pagename:find("^[^aeiou ]*a[^aeiou ]*e[^aeiou ]*i[^aeiou ]*o[^aeiou ]*u[^aeiou ]*$") then table.insert(data.categories, langname .. ' words that use all vowels in alphabetical order') end

if args.json then return require("Module:JSON").toJSON(data) end

return require("Module:headword").full_headword(data) .. (#extra_categories > 0			and require("Module:utilities").format_categories(extra_categories, lang, args.sort)			or "") end

-- This function does the common work between adjectives and adverbs local function make_comparatives(params, data) local comp_parts = {label = glossary_link("comparative"), accel = {form = "comparative"}} local sup_parts = {label = glossary_link("superlative"), accel = {form = "superlative"}} local pagename = data.displayed_pagename

if #params == 0 then table.insert(params, {"more"}) end

-- To form the stem, replace -(e)y with -i and remove a final -e. local stem = pagename:gsub("([^aeiou])e?y$", "%1i"):gsub("e$", "")

-- Go over each parameter given and create a comparative and superlative form for i, val in ipairs(params) do		local comp = val[1] local comp_qual = val[2] local sup = val[3] local sup_qual = val[4] local comp_part, sup_part

if comp == "more" and pagename ~= "many" and pagename ~= "much" then comp_part = "more " .. pagename sup_part = "most " .. pagename elseif comp == "further" and pagename ~= "far" then comp_part = "further " .. pagename sup_part = "furthest " .. pagename elseif comp == "er" then comp_part = stem .. "er" sup_part = stem .. "est" elseif comp == "-" or sup == "-" then -- Allowing '-' makes it more flexible to not have some forms if comp ~= "-" then comp_part = comp end if sup ~= "-" then sup_part = sup end else -- If the full comparative was given, but no superlative, then -- create it by replacing the ending -er with -est. if not sup then if comp:find("er$") then sup = comp:gsub("er$", "est") else error("The superlative of \"" .. comp .. "\" cannot be generated automatically. Please provide it with the \"sup" .. (i == 1 and "" or i) .. "=\" parameter.") end end

comp_part = comp sup_part = sup end

if comp_part then table.insert(comp_parts, {term = comp_part, q = {comp_qual}}) end if sup_part then table.insert(sup_parts, {term = sup_part, q = {sup_qual}}) end end

table.insert(data.inflections, comp_parts) table.insert(data.inflections, sup_parts) end

pos_functions["adjectives"] = { params = { [1] = {list = true, allow_holes = true}, ["comp_qual"] = {list = "comp=_qual", allow_holes = true}, ["sup"] = {list = true, allow_holes = true}, ["sup_qual"] = {list = "sup=_qual", allow_holes = true}, },	func = function(args, data) local shift = 0 local is_not_comparable = false local is_comparative_only = false

-- If the first parameter is ?, then don't show anything, just return. if args[1][1] == "?" then return -- If the first parameter is -, then move all parameters up one position. elseif args[1][1] == "-" then shift = 1 is_not_comparable = true -- If the only argument is +, then remember this and clear parameters elseif args[1][1] == "+" and args[1].maxindex == 1 then shift = 1 is_comparative_only = true end

-- Gather all the comparative and superlative parameters. local params = {}

for i = 1, args[1].maxindex - shift do			local comp = args[1][i + shift] local comp_qual = args["comp_qual"][i + shift] local sup = args["sup"][i] local sup_qual = args["sup_qual"][i + shift]

if comp or sup then table.insert(params, {comp, comp_qual, sup, sup_qual}) end end

if shift == 1 then -- If the first parameter is "-" but there are no parameters, -- then show "not comparable" only and return. -- If there are parameters, then show "not generally comparable" -- before the forms. if #params == 0 then if is_not_comparable then table.insert(data.inflections, {label = "not " .. glossary_link("comparable")}) table.insert(data.categories, langname .. " uncomparable adjectives") return end if is_comparative_only then table.insert(data.inflections, {label = glossary_link("comparative") .. " form only"}) table.insert(data.categories, langname .. " comparative-only adjectives") return end else table.insert(data.inflections, {label = "not generally " .. glossary_link("comparable")}) end end

-- Process the parameters make_comparatives(params, data) end }

pos_functions["adverbs"] = { params = { [1] = {list = true, allow_holes = true}, ["comp_qual"] = {list = "comp=_qual", allow_holes = true}, ["sup"] = {list = true, allow_holes = true}, ["sup_qual"] = {list = "sup=_qual", allow_holes = true}, },	func = function(args, data) local shift = 0

-- If the first parameter is ?, then don't show anything, just return. if args[1][1] == "?" then return -- If the first parameter is -, then move all parameters up one position. elseif args[1][1] == "-" then shift = 1 end

-- Gather all the comparative and superlative parameters. local params = {}

for i = 1, args[1].maxindex - shift do			local comp = args[1][i + shift] local comp_qual = args["comp_qual"][i + shift] local sup = args["sup"][i] local sup_qual = args["sup_qual"][i + shift]

if comp or sup then table.insert(params, {comp, comp_qual, sup, sup_qual}) end end

if shift == 1 then -- If the first parameter is "-" but there are no parameters, -- then show "not comparable" only and return. If there are parameters, -- then show "not generally comparable" before the forms. if #params == 0 then table.insert(data.inflections, {label = "not " .. glossary_link("comparable")}) table.insert(data.categories, langname .. " uncomparable adverbs") return else table.insert(data.inflections, {label = "not generally " .. glossary_link("comparable")}) end end

-- Process the parameters make_comparatives(params, data) end }

pos_functions["conjunctions"] = { params = { [1] = { alias_of = "head" }, },	func = function(args, data) end, }

pos_functions["interjections"] = { params = { [1] = { alias_of = "head" }, },	func = function(args, data) end, }

local function default_plural(noun) local new_pl if noun:find("[sxz]$") or noun:find("[cs]h$") then new_pl = noun .. "es" elseif noun:find("[^aeiou]y$") then new_pl = noun:gsub("y$", "i") .. "es" else new_pl = noun .. "s" end return (new_pl		:gsub("\\([:#])", "\\\\%1")		:gsub("[:#]", "\\%0")) end

local function canonicalize_plural(pl, stem, pagename) local can_pl if pl == "s" then can_pl = stem .. "s" elseif pl == "es" then can_pl = stem .. "es" elseif pl == "+" then return default_plural(pagename) else return nil end return (can_pl		:gsub("\\([:#])", "\\\\%1")		:gsub("[:#]", "\\%0")) end

local function do_nouns(args, data, is_proper) local pagename = data.displayed_pagename

local function gather_inflections_with_quals(infl_field, qual_field, label) -- Gather all the plural parameters from the numbered parameters. local infls = {} if label then infls.label = label end

for i, infl in ipairs(args[infl_field]) do			local qual = args[qual_field][i]

if qual then table.insert(infls, {term = infl, q = {qual}}) else table.insert(infls, infl) end end

return infls end

if args.def then for i, head in ipairs(data.heads) do data.heads[i] = "the " .. head end end

local plurals = gather_inflections_with_quals(1, "plqual")

if plurals[1] == "p" then -- plurale tantum if #plurals > 1 then error("With plurale tantum noun, can't specify more than one plural") end data.genders = {"p"} -- this should auto-insert the correct 'pluralia tantum' category if #args.sg > 0 then table.insert(data.inflections, {label = "normally plural"}) table.insert(data.inflections, gather_inflections_with_quals("sg", "sgqual", "singular")) else table.insert(data.inflections, {label = "plural only"}) end if #args.attr > 0 then table.insert(data.inflections, gather_inflections_with_quals("attr", "attrqual", "attributive")) end return end

local need_default_plural = not is_proper if plurals[1] == "-" then -- Uncountable noun; may occasionally have a plural table.remove(plurals, 1) -- Remove the "-" table.insert(data.categories, langname .. " uncountable nouns")

-- If plural forms were given explicitly, then show "usually" if #plurals > 0 then table.insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " countable nouns") else table.insert(data.inflections, {label = glossary_link("uncountable")}) end need_default_plural = false elseif plurals[1] == "~" then -- Mixed countable/uncountable noun, always has a plural table.remove(plurals, 1) -- Remove the "~" table.insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " uncountable nouns") table.insert(data.categories, langname .. " countable nouns")

-- If no plural was given, add a default one now if #plurals == 0 then plurals = {default_plural(pagename)} end elseif is_proper then -- For proper nouns, the default is uncountable table.insert(data.categories, langname .. " uncountable nouns") else -- For common nouns, the default is countable, has a plural table.insert(data.categories, langname .. " countable nouns") end -- Plural is unknown if plurals[1] == "?" then table.remove(plurals, 1) -- Remove the "?" -- Not desired; see Tea_room/2021/August -- table.insert(data.inflections, {label = "plural unknown or uncertain"}) table.insert(data.categories, langname .. " nouns with unknown or uncertain plurals") if #plurals > 0 then error("Can't specify explicit plurals along with '?' for unknown/uncertain plural") end return end -- Plural is not attested if plurals[1] == "!" then table.remove(plurals, 1) -- Remove the "!" table.insert(data.inflections, {label = "plural not attested"}) table.insert(data.categories, langname .. " nouns with unattested plurals") if #plurals > 0 then error("Can't specify explicit plurals along with '!' for unattested plural") end return end

-- If no plural was given, maybe add a default one, otherwise (when "-" was given) return if #plurals == 0 then if need_default_plural then plurals = {default_plural(pagename)} else return end end

-- There are plural forms to show, so show them local pl_parts = {label = "plural", accel = {form = "p"}}

local function check_ies(pl, stem) local newplural, nummatches = stem:gsub("([^aeiou])y$","%1ies") return nummatches > 0 and pl == newplural end local stem = pagename local irregular = false for i, pl in ipairs(plurals) do		local canon_pl = canonicalize_plural(pl, stem, pagename) if canon_pl then table.insert(pl_parts, canon_pl) elseif type(pl) == "table" then canon_pl = canonicalize_plural(pl.term, stem, pagename) if canon_pl then table.insert(pl_parts, {term = canon_pl, q = pl.q}) end end if not canon_pl then table.insert(pl_parts, pl) if type(pl) == "table" then pl = pl.term end local check_pl = m_links.get_link_page(pl, lang) if not stem:find(" ") and not (check_pl == stem .. "s" or check_pl == stem .. "es" or check_ies(check_pl, stem)) then irregular = true if check_pl == stem then table.insert(data.categories, langname .. " indeclinable nouns") end end end end if irregular then table.insert(data.categories, langname .. " nouns with irregular plurals") end

table.insert(data.inflections, pl_parts) end

-- Return the parameters to be used for nouns and proper nouns. Currently the same. local function get_noun_params(is_proper) return { [1] = {list = true, disallow_holes = true}, ["def"] = {type = "boolean"}, ["pl=qual"] = {list = true, allow_holes = true}, -- The following four only used for pluralia tantum (1=p) ["sg"] = {list = true, disallow_holes = true}, ["sg=qual"] = {list = true, allow_holes = true}, ["attr"] = {list = true, disallow_holes = true}, ["attr=qual"] = {list = true, allow_holes = true}, } end

pos_functions["nouns"] = { params = get_noun_params(false), func = do_nouns, }

pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) return do_nouns(args, data, "is proper") end, }

local function base_default_verb_forms(verb) local s_form = default_plural(verb) local ing_form, ed_form local vowel = "aeiouáéíóúàèìòùâêîôûäëïöüæœø" local ulvowel = vowel .. "AEIOUÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÆŒØ"

-- (1) Check for C*VC verbs. --	-- flip -> flipping/flipped, strum -> strumming/strummed, nag -> nagging/nagged, etc. -- Do not include words with final -y, e.g. 'stay' (staying/stayed), 'toy' (toying/toyed), -- or with final -w, e.g. 'flow' (flowing/flowed), or with final -h, e.g. 'ah' (ahing/ahed), -- or with final -x, e.g. 'box' (boxing/boxed), or ending in an uppercase consonant, -- e.g. 'XOR' (XORing/XORed), 'OK' (OKing/OKed). Check specially for initial y- as a consonant, -- e.g. 'yip' (yipping/yipped), otherwise treat y as a vowel, so we don't trigger on 'hyphen' -- but do trigger on 'gyp'. local last_cons = mw.ustring.match(verb, "^[Yy][" .. vowel .. "y]([^A-Z" .. vowel .. "ywxh])$") if not last_cons then last_cons = mw.ustring.match(verb, "^[^" .. ulvowel .. "yY]*[" .. ulvowel .. "yY]([^A-Z" .. vowel .. "ywxh])$") end if last_cons then ing_form = verb .. last_cons .. "ing" ed_form = verb .. last_cons .. "ed" else -- (2) Generate -ing form. -- (2a) lie -> lying, untie -> untying, etc.		local stem = verb:match("^(.*)ie$") if stem then ing_form = stem .. "ying" else -- (2b) argue -> arguing, sprue -> spruing, dialogue -> dialoguing, etc.			stem = verb:match("^(.*)ue$") if stem then ing_form = stem .. "uing" else stem = mw.ustring.match(verb, "^(.*[" .. ulvowel .. "yY][^" .. vowel .. "y]+)e$") if stem then -- (2c) baptize -> baptizing, rake -> raking, type -> typing, parse -> parsing, etc.					-- (ending in vowel + consonant(s) + -e); but not referee -> refereeing, -- backhoe -> backhoeing, redye -> redyeing (ending in some other vowel + -e or in -ye); -- and not be -> being (no vowel before the consonant preceding the -e) ing_form = stem .. "ing" else -- (2d) regular verbs ing_form = verb .. "ing" end end end

-- (3) Generate -ed form. if verb:find("e$") then -- (3a) baptize -> baptized, rake -> raked, parse -> parsed, free -> freed, hoe -> hoed ed_form = verb .. "d" else stem = mw.ustring.match(verb, "^(.*[^" .. ulvowel .. "yY])y$") if stem then -- (3b) marry -> married, levy -> levied, try -> tried, etc.; but not toy -> toyed ed_form = stem .. "ied" else -- (3c) regular verbs ed_form = verb .. "ed" end end end ing_form = ing_form :gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0") ed_form = ed_form :gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0") return s_form, ing_form, ed_form end

local function default_verb_forms(verb) local full_s_form, full_ing_form, full_ed_form = base_default_verb_forms(verb) if verb:find(" ") then local first, rest = verb:match("^(.-)( .*)$") local first_s_form, first_ing_form, first_ed_form = base_default_verb_forms(first) return full_s_form, full_ing_form, full_ed_form, first_s_form .. rest, first_ing_form .. rest, first_ed_form .. rest else return full_s_form, full_ing_form, full_ed_form, nil, nil, nil end end

pos_functions["verbs"] = { params = { [1] = {list = "pres_3sg", allow_holes = true}, ["pres_3sg_qual"] = {list = "pres_3sg=_qual", allow_holes = true}, [2] = {list = "pres_ptc", allow_holes = true}, ["pres_ptc_qual"] = {list = "pres_ptc=_qual", allow_holes = true}, [3] = {list = "past", allow_holes = true}, ["past_qual"] = {list = "past=_qual", allow_holes = true}, [4] = {list = "past_ptc", allow_holes = true}, ["past_ptc_qual"] = {list = "past_ptc=_qual", allow_holes = true}, },	func = function(args, data) -- Get parameters local par1 = args[1][1] local par2 = args[2][1] local par3 = args[3][1] local par4 = args[4][1]

local pres_3sgs, pres_ptcs, pasts, past_ptcs

local pagename = data.displayed_pagename

--- UTILITY FUNCTIONS #1 --

-- These functions are used directly in the <> format as well as in the utility functions #2 below.

local function compute_double_last_cons_stem(verb) local last_cons = verb:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("Verb stem '" .. verb .. "' must end in a consonant to use ++") end return verb .. last_cons end

local function compute_plusplus_s_form(verb, default_s_form) if verb:find("[sz]$") then -- regas -> regasses, derez -> derezzes return compute_double_last_cons_stem(verb) .. "es" else return default_s_form end end

--- UTILITY FUNCTIONS #2 --

-- These functions are used in both in the separate-parameter format and in the override params such as past_ptc2=.

local new_default_s, new_default_ing, new_default_ed, split_default_s, split_default_ing, split_default_ed = default_verb_forms(pagename)

local function compute_double_last_cons_stem_of_split_verb(verb, ending) local first, rest = verb:match("^(.-)( .*)$") if not first then error("Verb '" .. verb .. "' must have a space in it to use ++*") end local last_cons = first:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("First word '" .. first .. "' must end in a consonant to use ++*") end return first .. last_cons .. ending .. rest end

local function check_non_nil_star_form(form) if form == nil then error("Verb '" .. pagename .. "' must have a space in it to use * or ++*") end return form end

local function sub_tilde(form) if not form then return nil end local retval = form:gsub("~", pagename) -- discard second return value return retval end

local function canonicalize_s_form(form) if form == "+" then return new_default_s elseif form == "*" then return check_non_nil_star_form(split_default_s) elseif form == "++" then return compute_plusplus_s_form(pagename, new_default_s) elseif form == "++*" then if pagename:find("^[^ ]*[sz] ") then return compute_double_last_cons_stem_of_split_verb(pagename, "es") else return check_non_nil_star_form(split_default_s) end else return sub_tilde(form) end end

local function canonicalize_ing_form(form) if form == "+" then return new_default_ing elseif form == "*" then return check_non_nil_star_form(split_default_ing) elseif form == "++" then return compute_double_last_cons_stem(pagename) .. "ing" elseif form == "++*" then return compute_double_last_cons_stem_of_split_verb(pagename, "ing") else return sub_tilde(form) end end

local function canonicalize_ed_form(form) if form == "+" then return new_default_ed elseif form == "*" then return check_non_nil_star_form(split_default_ed) elseif form == "++" then return compute_double_last_cons_stem(pagename) .. "ed" elseif form == "++*" then return compute_double_last_cons_stem_of_split_verb(pagename, "ed") else return sub_tilde(form) end end

- MAIN PARSING/CONJUGATING CODE

local past_ptcs_given

if par1 and par1:find("<") then

-- ANGLE-BRACKET FORMAT --

if par2 or par3 or par4 then error("Can't specify 2=, 3= or 4= when 1= contains angle brackets: " .. par1) end -- In the angle bracket format, we always copy the full past tense specs to the past participle -- specs if none of the latter are given, so act as if the past participle is always given. -- There is a separate check to see if the past tense and past participle are identical, in any case. past_ptcs_given = true local iut = require("Module:inflection utilities")

-- (1) Parse the indicator specs inside of angle brackets.

local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = iut.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = iut.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec: " .. angle_bracket_spec) end

local function fetch_qualifiers(separated_group) local qualifiers for j = 2, #separated_group - 1, 2 do						if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed qualifiers: '" .. table.concat(separated_group) .. "'") end if not qualifiers then qualifiers = {} end table.insert(qualifiers, separated_group[j]) end return qualifiers end

local function fetch_specs(comma_separated_group) if not comma_separated_group then return – end local specs = {}

local colon_separated_groups = iut.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do						local form = colon_separated_group[1] if form == "*" or form == "++*" then error("* and ++* not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = nil end table.insert(specs, {form = form, q = fetch_qualifiers(colon_separated_group)}) end return specs end

local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) for _, spec in ipairs(s_specs) do					if spec.form == "++" and #ing_specs == 1 and not ing_specs[1].form and not ing_specs[1].q						and #ed_specs == 1 and not ed_specs[1].form and not ed_specs[1].q then ing_specs[1].form = "++" ed_specs[1].form = "++" break end end

return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, }			end

local parse_props = { parse_indicator_spec = parse_indicator_spec, }			local alternant_multiword_spec = iut.parse_inflected_text(par1, parse_props)

-- (2) Remove any links from the lemma, but remember the original form --    so we can use it below in the 'lemma_linked' form.

iut.map_word_specs(alternant_multiword_spec, function(base)				if base.lemma == "" then					base.lemma = pagename				end				base.orig_lemma = base.lemma				base.lemma = m_links.remove_links(base.lemma)			end)

-- (3) Conjugate the verbs according to the indicator specs parsed above.

local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", }			local function conjugate_verb(base) local def_s_form, def_ing_form, def_ed_form = base_default_verb_forms(base.lemma)

local function process_specs(slot, specs, default_form, canonicalize_plusplus) for _, spec in ipairs(specs) do						local form = spec.form if not form or form == "+" then form = default_form elseif form == "++" then form = canonicalize_plusplus end -- If there's a ~ in the form, substitute it with the lemma, -- but make sure to first replace % in the lemma with %% so that -- it doesn't get interpreted as a capture replace expression. if form:find("~") then -- Assign to a var because gsub returns multiple values. local subbed_lemma = base.lemma:gsub("%%", "%%%%") form = form:gsub("~", subbed_lemma) end -- If the form is -, don't insert any forms, which will result -- in there being no overall forms (in fact it will be nil). -- We check for that down below and substitute a single "-" as						-- the form, which in turn gets turned into special labels like -- "no present participle". if form ~= "-" then iut.insert_form(base.forms, slot, {form = form, footnotes = spec.q}) end end end

process_specs("s_form", base.s_specs, def_s_form,					function return compute_plusplus_s_form(base.lemma, def_s_form) end) process_specs("ing_form", base.ing_specs, def_ing_form,					function return compute_double_last_cons_stem(base.lemma) .. "ing" end) process_specs("ed_form", base.ed_specs, def_ed_form,					function return compute_double_last_cons_stem(base.lemma) .. "ed" end)

-- If the -en spec is completely missing, substitute the -ed spec in its entirely. -- Otherwise, if individual -en forms are missing or use +, we will substitute the -- default -ed form, as with the -ed spec. local en_specs = base.en_specs if #en_specs == 1 and not en_specs[1].form and not en_specs[1].q then en_specs = base.ed_specs end

process_specs("en_form", en_specs, def_ed_form,					function return compute_double_last_cons_stem(base.lemma) .. "ed" end)

iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's				-- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.orig_lemma:find("%[%[") then return base.orig_lemma else return form end end)) end

local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, }			iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)

-- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given.

local function fetch_forms(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - -- for a spec. if not forms or #forms == 0 then forms = end return forms end

pres_3sgs = fetch_forms("s_form") pres_ptcs = fetch_forms("ing_form") pasts = fetch_forms("ed_form") past_ptcs = fetch_forms("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given. -- If no links in this form and it has multiple words, autolink the individual words. -- The user can override this using head=. if #data.heads == 0 then for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do					local lemma = lemma_obj.form if not lemma:find("%[%[") then local m_headword = require("Module:headword") if m_headword.head_is_multiword(lemma) then lemma = m_headword.add_multiword_links(lemma) end end table.insert(data.heads, lemma) end -- Don't insert into Category:English terms with redundant head parameter since the head= isn't coming from the -- user. data.no_redundant_head_cat = true end else -- SEPARATE-PARAM FORMAT --

local pres_3sg, pres_ptc, past

if par1 and not par2 and not par3 then -- Use of a single parameter other than "++", "*" or "++*" is now the "legacy" format, -- and no longer supported. if par1 == "es" or par1 == "ies" or par1 == "d" then error("Legacy parameter 1=es/ies/d no longer supported, just use 'en-verb' without params") elseif par1 == "++" or par1 == "*" or par1 == "++*" then pres_3sg = canonicalize_s_form(par1) pres_ptc = canonicalize_ing_form(par1) past = canonicalize_ed_form(par1) else error("Legacy parameter 1=STEM no longer supported, just use 'en-verb' without params") end else if par3 then track("xxx3") elseif par2 then track("xxx2") end end

if not pres_3sg or not pres_ptc or not past then -- Either all three should be set above, or none of them. assert(not pres_3sg and not pres_ptc and not past)

if par1 then pres_3sg = canonicalize_s_form(par1) else pres_3sg = new_default_s end

if par2 then pres_ptc = canonicalize_ing_form(par2) else pres_ptc = new_default_ing end

if par3 then past = canonicalize_ed_form(par3) else past = new_default_ed end end

if par4 then past_ptcs_given = true past_ptc = canonicalize_ed_form(par4) else past_ptc = past end

pres_3sgs = pres_ptcs = pasts = past_ptcs = end

--- HANDLE OVERRIDES --

local pres_3sg_infls, pres_ptc_infls, past_infls, past_ptc_infls

local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do				local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end table.insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end

local function collect_forms(label, accel_form, defaults, overrides, override_qualifiers, canonicalize) if defaults[1].form == "-" then return {label = "no " .. label} else local into_table = {label = label, accel = {form = accel_form}} local maxindex = math.max(#defaults, overrides.maxindex) local qualifiers = override_qualifiers[1] and {override_qualifiers[1]} or strip_brackets(defaults[1].footnotes) table.insert(into_table, {term = defaults[1].form, q = qualifiers})

-- Present 3rd singular for i = 2, maxindex do					local override_form = canonicalize(overrides[i])

if override_form then -- If there is an override such as past_ptc2=..., only use the qualifier specified -- using an override (past_ptc2_qual=...), if any; it doesn't make sense to combine -- an override form with a qualifier specified inside of angle brackets. table.insert(into_table, {term = override_form, q = {override_qualifiers[i]}}) elseif defaults[i] then -- If the form comes from inside angle brackets, allow any override qualifier -- (past_ptc2_qual=...) to override any qualifier specified inside of angle brackets. -- FIXME: Maybe we should throw an error here if both exist. local qualifiers = override_qualifiers[i] and {override_qualifiers[i]} or strip_brackets(defaults[i].footnotes) table.insert(into_table, {term = defaults[i].form, q = qualifiers}) end end

return into_table end end

local pres_3sg_infls = collect_forms("third-person singular simple present", "s-verb-form",			pres_3sgs, args[1], args.pres_3sg_qual, canonicalize_s_form) local pres_ptc_infls = collect_forms("present participle", "ing-form",			pres_ptcs, args[2], args.pres_ptc_qual, canonicalize_ing_form) local past_infls = collect_forms("simple past", "spast",			pasts, args[3], args.past_qual, canonicalize_ed_form) local past_ptc_infls = collect_forms("past participle", "past|part",			past_ptcs, args[4], args.past_ptc_qual, canonicalize_ed_form)

-- Are the past forms identical to the past participle forms? If so, we use a single -- combined "simple past and past participle" label on the past tense forms. -- We check for two conditions: Either no past participle forms were given at all, or		-- they were given but are identical in every way (all forms and qualifiers) to the past -- tense forms. The former "no explicit past participle forms" check is important in the -- "separate-parameter" format; if past tense overrides are given and no past participle -- forms given, the past tense overrides should apply to the past participle as well. -- In the angle-bracket format, it's expected that all forms and qualifiers are specified -- using that format, and we explicitly copy past tense forms and qualifiers to past -- participle ones if the latter are omitted, so we disable to "no explicit past participle		-- forms" check. if args[4].maxindex > 0 or args.past_ptc_qual.maxindex > 0 then past_ptcs_given = true end

local identical = true

-- For the past and past participle to be identical, there must be		-- the same number of inflections, and each inflection must match -- in term and qualifiers. if #past_infls ~= #past_ptc_infls then identical = false else for key, val in ipairs(past_infls) do				if past_ptc_infls[key].term ~= val.term then identical = false break else local quals1 = past_ptc_infls[key].q					local quals2 = val.q					if (not not quals1) ~= (not not quals2) then -- one is nil, the other is not identical = false elseif quals1 and quals2 then -- qualifiers present in both; each qualifier must match if #quals1 ~= #quals2 then identical = false else for k, v in ipairs(quals1) do								if v ~= quals2[k] then identical = false break end end end end if not identical then break end end end end

-- Insert the forms table.insert(data.inflections, pres_3sg_infls) table.insert(data.inflections, pres_ptc_infls)

if not past_ptcs_given or identical then if past_ptcs[1].form == "-" then past_infls.label = "no simple past or past participle" else past_infls.label = "simple past and past participle" past_infls.accel = {form = "ed-form"} end table.insert(data.inflections, past_infls) else table.insert(data.inflections, past_infls) table.insert(data.inflections, past_ptc_infls) end

if pagename:find(" ") then -- Check for placeholder "it" local words = rsplit(pagename, " ") for i, word in ipairs(words) do				if word == "it" or word == "its" or word == "it's" then table.insert(data.categories, langname .. ' terms with placeholder "it"') break end end

-- Check for phrasal verbs local phrasal_particles = require("Module:table/listToSet") { -- NOTE: This should only contain common adverbial particles, not random words like low, -- adrift, etc.				"aback", "about", "above", "across", "after", "against", "ahead", "along", "apart", "around", "as", "aside", "at", "away", "back", "before", "behind", "below", "between", "beyond", "by", "down", "for", "forth", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "past", "round", "through", "to", "together", "towards", "under", "up", "upon", "with", "without", }			local allowed_non_particle_words = require("Module:table/listToSet") { "it", "one", "oneself", "someone", }			local base = pagename local seen_particles = {} -- Only consider a verb to be phrasal if it consists of a single base verb followed exclusively by either -- particles from `phrasal_particles` or placeholder words from `allowed_non_particle_words`, where at -- least one following word is from `phrasal_particles` (hence can it is not a phrasal verb). while true do				local prev, particle = base:match("^(.+) (.-)$") if not prev then break end if phrasal_particles[particle] then table.insert(seen_particles, particle) elseif allowed_non_particle_words[particle] then -- do nothing else break end base = prev end if not base:find(" ") and #seen_particles > 0 then table.insert(data.categories, langname .. " phrasal verbs") for i = #seen_particles, 1, -1 do table.insert(data.categories, langname .. " phrasal verbs with particle (" .. seen_particles[i] .. ")")				end end end end }

return export

title: Module:User:Benwing2/en-headword


text:
coche fúnebre

Noun

 * 1) hearse vehicle or carriage

title: coche fúnebre


text: Category:es:Funeral

title: Category:es:Funeral


text:
Module:User:Benwing2/en-headword/angle-bracket

local export = {}

function export.conjugate_angle_bracket_spec(data, par1, pagename, base_default_verb_forms,	compute_plusplus_s_form, compute_double_last_cons_stem) -- In the angle bracket format, we always copy the full past tense specs to the past participle -- specs if none of the latter are given, so act as if the past participle is always given. -- There is a separate check to see if the past tense and past participle are identical, in any case. local past_ptcs_given = true local iut = require("Module:inflection utilities")

-- (1) Parse the indicator specs inside of angle brackets.

local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = iut.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = iut.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec: " .. angle_bracket_spec) end

local function fetch_qualifiers(separated_group) local qualifiers for j = 2, #separated_group - 1, 2 do				if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed qualifiers: '" .. table.concat(separated_group) .. "'") end if not qualifiers then qualifiers = {} end table.insert(qualifiers, separated_group[j]) end return qualifiers end

local function fetch_specs(comma_separated_group) if not comma_separated_group then return – end local specs = {} local colon_separated_groups = iut.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do				local form = colon_separated_group[1] if form == "*" or form == "++*" then error("* and ++* not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = nil end table.insert(specs, {form = form, qualifiers = fetch_qualifiers(colon_separated_group)}) end return specs end

local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) for _, spec in ipairs(s_specs) do			if spec.form == "++" and #ing_specs == 1 and not ing_specs[1].form and not ing_specs[1].qualifiers and #ed_specs == 1 and ed_specs[1].form and not ed_specs[1].qualifiers then ing_specs[1].form = "++" ed_specs[1].form = "++" break end end

return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, }	end

local parse_props = { parse_indicator_spec = parse_indicator_spec, }	local alternant_multiword_spec = iut.parse_inflected_text(par1, parse_props)

-- (2) Remove any links from the lemma, but remember the original form --    so we can use it below in the 'lemma_linked' form.

iut.map_word_specs(alternant_multiword_spec, function(base)		if base.lemma == "" then			base.lemma = pagename		end		base.orig_lemma = base.lemma		base.lemma = require("Module:links").remove_links(base.lemma)	end)

-- (3) Conjugate the verbs according to the indicator specs parsed above.

local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", }	local function conjugate_verb(base) local def_s_form, def_ing_form, def_ed_form = base_default_verb_forms(base.lemma)

local function process_specs(slot, specs, default_form, canonicalize_plusplus) for _, spec in ipairs(specs) do				local form = spec.form if not form or form == "+" then form = default_form elseif form == "++" then form = canonicalize_plusplus end -- If there's a ~ in the form, substitute it with the lemma, -- but make sure to first replace % in the lemma with %% so that -- it doesn't get interpreted as a capture replace expression. if form:find("~") then -- Assign to a var because gsub returns multiple values. local subbed_lemma = base.lemma:gsub("%%", "%%%%") form = form:gsub("~", subbed_lemma) end -- If the form is -, don't insert any forms, which will result -- in there being no overall forms (in fact it will be nil). -- We check for that down below and substitute a single "-" as				-- the form, which in turn gets turned into special labels like -- "no present participle". if form ~= "-" then iut.insert_form(base.forms, slot, {form = form, footnotes = spec.qualifiers}) end end end

process_specs("s_form", base.s_specs, def_s_form,			function return compute_plusplus_s_form(base.lemma, def_s_form) end) process_specs("ing_form", base.ing_specs, def_ing_form,			function return compute_double_last_cons_stem(base.lemma) .. "ing" end) process_specs("ed_form", base.ed_specs, def_ed_form,			function return compute_double_last_cons_stem(base.lemma) .. "ed" end)

-- If the -en spec is completely missing, substitute the -ed spec in its entirely. -- Otherwise, if individual -en forms are missing or use +, we will substitute the -- default -ed form, as with the -ed spec. local en_specs = base.en_specs if #en_specs == 1 and not en_specs[1].form and not en_specs[1].qualifiers then en_specs = base.ed_specs end

process_specs("en_form", en_specs, def_ed_form,			function return compute_double_last_cons_stem(base.lemma) .. "ed" end)

iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's		-- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.orig_lemma:find("%[%[") then return base.orig_lemma else return form end end)) end

local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, }	iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)

-- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given.

local function fetch_forms(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - -- for a spec. if not forms or #forms == 0 then forms = end return forms end

local pres_3sgs = fetch_forms("s_form") local pres_ptcs = fetch_forms("ing_form") local pasts = fetch_forms("ed_form") local past_ptcs = fetch_forms("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given. -- If no links in this form and it has multiple words, autolink the individual words. -- The user can override this using head=. if #data.heads == 0 then for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do			local lemma = lemma_obj.form if not lemma:find("%[%[") then local m_headword = require("Module:headword") if m_headword.head_is_multiword(lemma) then lemma = m_headword.add_multiword_links(lemma) end end table.insert(data.heads, lemma) end end

return pres_3sgs, pres_ptcs, pasts, past_ptcs, past_ptcs_given end

return export


text:
carroza fúnebre

Noun

 * 1)  hearse carriage or vehicle

title: carroza fúnebre


text:
canto fúnebre

Noun

 * 1) dirge

title: canto fúnebre


text:
meski

Etymology
From, from. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Conjunction

 * 1) though

Etymology
From, from. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Conjunction

 * 1) although

title: meski


text:
þynnu meolc

Etymology
From 🇰🇲

Noun

 * 1) skim milk

title: þynnu meolc


text:
Berat

Etymology
Borrowed from, from , from , a name given to the city in the 9th century by its Bulgarian occupants, which in turn is a compound of (from ) and  (from ). .

Translations

 * Albanian:, Berat
 * Aromanian: Birat, Birati
 * Bulgarian:
 * German: Berat
 * Greek: ,
 * Korean: 베라트
 * Macedonian:, Берат
 * Old Church Slavonic: Бѣлградъ
 * Ottoman Turkish: برات
 * Russian:
 * Turkish: Berat

 * Albanian: Qarku i Beratit
 * German: Qark Berat
 * Greek: Νομός του Μπεράτ
 * Korean: 베라트주
 * Turkish: Berat ili

title: Berat


text:
Talk:Nhân Xuyên

Usage
Sure the Sino-Vietnamese reading of ("Incheon") is "Nhân Xuyên", but aside from, I don't think there's any other Korean city that is currently commonly addressed by their Sino-Vietnamese name.PhanAnh123 (talk) 03:47, 11 November 2020 (UTC)

title: Talk:Nhân Xuyên


text:
fierst

Etymology
From,. Cognate with 🇨🇬, 🇨🇬 (🇨🇬), 🇨🇬 (🇨🇬).

Noun

 * 1) time (especially time granted for doing something)
 * 2) * c. 992, Ælfric, "On the Lord's Prayer"
 * "ang"

- God lǣt him fierst þæt hē his māndǣda ġeswīce.

 * 1) threshold, ceiling, inner roof (declined as fem.)
 * 2) * c. 992, Ælfric, "Palm Sunday. On The Lord's Passion"
 * "ang"

- Efne ðā tōbserst þæs temples wāhryft, fram ðǣre fyrste ufan ōð ðā flōr neoðan,...

title: fierst


text:
tingala

Etymology
. Compare 🇨🇬, 🇨🇬, and 🇨🇬.

Adjective

 * 1) with the face turning upward
 * 2) tilted upward; with one end, side, or edge raised or higher than the opposite
 * 1) tilted upward; with one end, side, or edge raised or higher than the opposite

Noun

 * 1) act of looking upward
 * 2) upward tilt of one end
 * 1) upward tilt of one end

title: tingala


text:
fyrest

Etymology
From, from.

Adjective

 * 1) first
 * 2) front

title: fyrest


text:
منصور

Etymology
of.

Adjective

 * 1) triumphant, victorious

Proper noun

 * , Mansur, Mansour

title: منصور


text:
字素

Noun

 * 1)  grapheme

Noun

 * 1)  grapheme

title: 字素


text:
書記素

Noun

 * 1)  grapheme

title: 書記素


text:
түйнек

Noun

 * 1)  tuber

Noun

 * 1) bowel obstruction

title: түйнек


text:
러시아인

Etymology
From.

Noun

 * 1)  Russian (person)

title: 러시아인


text:
kudkurin

Etymology
From.

Verb

 * 1) to grate; to scrape; to shave

Adjective

 * 1) to be grated, scraped, or shaved

Noun

 * 1) something to be grated, scraped, or shaved

title: kudkurin


text:
kinudkod

Etymology
From ⟨tl⟩.

title: kinudkod


text:
kinukudkod

Etymology
From ⟨tl⟩ with initial.

title: kinukudkod


text:
kukudkurin

Etymology
From with initial.

title: kukudkurin


text:
kumupas

Etymology
From ⟨tl⟩.

Verb

 * 1) to become faded; to discolor

title: kumupas


text:
kumukupas

Etymology
From ⟨tl⟩ with initial.

title: kumukupas


text:
kukupas

Etymology
From initial.

title: kukupas


text:
អាកាសចរ

Etymology
🇰🇲.

Noun

 * 1) air traffic
 * 2) airline
 * 3) aviation
 * 1) aviation

title: អាកាសចរ


text: Мүсілім

title: Мүсілім


text:
ភូមិន្ទ

Etymology
Borrowed from.

Noun

 * 1) king

Adjective

 * 1) to be royal

title: ភូមិន្ទ


text:
Құмарбек

Etymology
.

title: Құмарбек


text:
로씨야족

Etymology
From.

Noun

 * 1)  Russian (person)

title: 로씨야족


text:
tingalaan

Etymology
From.

Verb

 * 1) to look up at something
 * 2)  to look up with respect or veneration
 * 1)  to look up with respect or veneration

Noun

 * 1) simultaneous looking up

title: tingalaan


text:
tiningalaan

Etymology
From ⟨tl⟩, from.

title: tiningalaan


text:
tinitingalaan

Etymology
From ⟨tl⟩ with initial.

title: tinitingalaan


text:
titingalaan

Etymology
From with initial.

title: titingalaan


text: SHBG

title: SHBG


text: 多囊卵巢综合征

title: 多囊卵巢综合征


text: 盜癖

title: 盜癖


text:
도벽

Etymology
.

Noun

 * 1) kleptomania

title: 도벽


text:
多囊卵巢綜合徵

Noun

 * 1)  polycystic ovary syndrome; PCOS

title: 多囊卵巢綜合徵


text: 二甲双胍

title: 二甲双胍


text:
nagdeliryo

Etymology
From.

title: nagdeliryo


text:
nagdedeliryo

Etymology
From with initial.

title: nagdedeliryo


text:
magdedeliryo

Etymology
From with initial.

title: magdedeliryo


text:
二甲雙胍

Noun

 * 1)  metformin

title: 二甲雙胍


text:
눈썹먹

Etymology
From 🇰🇲.

Noun

 * 1) mascara

title: 눈썹먹


text:
顏狗

Noun

 * 1)  someone who treats good-looking people especially well

title: 顏狗


text:
睇到

Verb

 * 1)  to catch sight of; to see

title: 睇到


text:
karupukan

Etymology
From.

Noun

 * 1) fragility; brittleness
 * 2) frailty liability to be deceived or seduced

title: karupukan


text:
睇著

Verb

 * 1)  to catch sight of; to see

title: 睇著


text:
건발기

Noun

 * 1)  hair dryer

title: 건발기


text:
合利斯托斯

Etymology
From.

Proper noun

 * 1)  Christ

title: 合利斯托斯


text:
tumitingala

Etymology
From ⟨tl⟩ with initial.

title: tumitingala


text:
titingala

Etymology
From initial.

title: titingala


text:
예구

Etymology
.

Noun

 * 1) An example of a text

title: 예구


text:
matisod

Etymology
From.

Verb

 * 1) to trip; to stumble

title: matisod


text:
natisod

Etymology
From.

title: natisod


text:
natitisod

Etymology
From with initial.

title: natitisod


text:
matitisod

Etymology
From with initial.

title: matitisod


text:
αντιπυραυλικός

Adjective

 * 1) antimissile

title: αντιπυραυλικός


text:
봉우리

Noun

 * 1) peak

title: 봉우리


text:
αντιπυρετικός

Adjective

 * 1)  antipyretic

title: αντιπυρετικός


text:
αντιπυρίνη

Noun

 * 1)  phenazone, antipyrine

title: αντιπυρίνη


text: αντιπυρίνης

title: αντιπυρίνης


text:
bumabagsak

Etymology
From ⟨tl⟩ with initial.

title: bumabagsak


text:
babagsak

Etymology
From initial.

title: babagsak


text:
exoulcerative

Adjective

 * 1) That causes external ulcers

title: exoulcerative


text:
extraparenchymally

Adverb

 * 1) In an extraparenchymal manner

title: extraparenchymally


text: faunistical

title: faunistical


text: febendazole

title: febendazole


text:
아이띠

Etymology
Borrowed from.

title: 아이띠


text:
fibrogranuloma

Noun

 * 1)  fibrous granuloma

title: fibrogranuloma


text:
fibrogranulomatous

Adjective

 * 1) Relating to, or composed of fibrogranulomata

title: fibrogranulomatous


text:
bumabahing

Etymology
From ⟨tl⟩ with initial.

title: bumabahing


text:
filtrand

Noun

 * 1) The material removed by a filter

Related terms

 * filtrate

title: filtrand


text:
babahing

Etymology
From initial.

title: babahing


text: filtrands

title: filtrands


text:
furcocercarial

Adjective

 * 1) Relating to the furcocercaria larva

title: furcocercarial


text:
galactobiose

Noun

 * 1)  The disaccharide 4-O-beta-D-galactopyranosyl-beta-D-galactopyranose formed from two galactose moieties

title: galactobiose


text:
baunan

Etymology 1
From.

Noun

 * 1) lunchbox

Etymology 2
From.

Verb

 * 1) to bury something into; to use as a place of burial

Noun

 * 1) sepulcher; place of burial

title: baunan


text:
galactostereochemistry

Noun

 * 1)  The stereochemistry of galactose

Related terms

 * glucostereochemistry

title: galactostereochemistry


text:
glucostereochemistry

Noun

 * 1)  The stereochemistry of glucose

Related terms

 * galactostereochemistry

title: glucostereochemistry


text:
αντιπυροβολώ

Verb

 * 1) to return fire, shoot back

title: αντιπυροβολώ


text:
geohelminthic

Adjective

 * 1) Relating to geohelminths

title: geohelminthic


text:
return fire

Noun

 * 1)  The firing initiated after receiving incoming fire.

Verb

 * 1)  To shoot at the person from whom fire is being received

Translations

 * Danish: besvare ilden, besvare ild
 * Greek: αντιπυροβολώ

title: return fire


text:
nagbaon

Etymology 1
From.

Etymology 2
From.

title: nagbaon


text:
habronematid

Noun

 * 1) Any parasitic nematode of the family

title: habronematid


text:
nagbabaon

Etymology 1
From, with partial of the root.

Etymology 2
From, with partial of the root.

title: nagbabaon


text: habronematids

title: habronematids


text:
magbabaon

Etymology 1
From with partial.

Etymology 2
From with partial.

title: magbabaon


text:
hematogenically

Adverb

 * 1) In a hematogenic manner

title: hematogenically


text: Category:Proto-Celtic terms derived from the Proto-Indo-European root *(s)keng-


text:
hemigenome

Noun

 * 1)  The partial genome inherited from either parent

Related terms

 * hemigenomic

title: hemigenome


text: hemigenomes

title: hemigenomes


text: Category:Ancient Greek terms derived from the Proto-Indo-European root *(s)keng-


text: Category:Greek terms derived from the Proto-Indo-European root *(s)keng-


text:
hemocuvette

Noun

 * 1) A cuvette used to hold a blood sample

title: hemocuvette


text: hemocuvettes

title: hemocuvettes


text: Category:Proto-Germanic terms derived from the Proto-Indo-European root *(s)keng-


text: Category:Proto-West Germanic terms derived from the Proto-Indo-European root *(s)keng-


text: Category:English terms derived from the Proto-Indo-European root *(s)keng-


text:
ngimay

Noun

 * 1) numbness felt on the hand or foot

title: ngimay


text: Category:Irish terms derived from the Proto-Indo-European root *(s)keng-


text:
hemoperoxidase

Noun

 * 1)  A peroxidase present in blood

title: hemoperoxidase


text:
inamyendahan

Etymology
From.

title: inamyendahan


text:
inaamyendahan

Etymology
From with initial.

title: inaamyendahan


text:
aamyendahan

Etymology
From with initial.

title: aamyendahan


text:
hemoplasmosis

Noun

 * 1) infection with a hemoplasma

title: hemoplasmosis


text:
mag-amyenda

Etymology
From.

title: mag-amyenda


text:
αντιρευματικός

Adjective

 * 1)  antirheumatic

title: αντιρευματικός


text:
hexadecanolide

Noun

 * 1)  A lactone containing sixteen carbon atoms

Synonyms

 * juniper lactone

title: hexadecanolide


text:
juniper lactone

Noun

 * 1)  hexadecanolide, the lactone of juniperic acid

title: juniper lactone


text:
ᄉᆞᆱ다

Verb

 * 1) to boil

title: ᄉᆞᆱ다


text:
juniperic acid

Noun

 * 1)  The aliphatic hydroxy acid 16-hydroxyhexadecanoic acid

title: juniperic acid


text:
젼툐

Noun

 * 1) blanket

title: 젼툐


text:
Module:ja/data/kanji/仮

return { kyu = '假', grade = 5, readings = {'か', 'け'}, }

title: Module:ja/data/kanji/仮


text:
nag-amyenda

Etymology
From.

title: nag-amyenda


text:
nag-aamyenda

Etymology
From with initial.

title: nag-aamyenda


text:
mag-aamyenda

Etymology
From with initial.

title: mag-aamyenda


text:
hyperchromophilic

Adjective

 * 1) Very chromophilic

Translations

 * French: hyperchromophile

title: hyperchromophilic


text:
hyperconservation

Noun

 * 1)  Conservation of a trait through many generations.

title: hyperconservation


text: hypodiploids

title: hypodiploids


text: hypoesthetic

title: hypoesthetic


text: immunobiologicals

title: immunobiologicals


text: immunochromatic

title: immunochromatic


text:
immunofibrogenic

Adjective

 * 1) fibrogenic as the result of an immune response

title: immunofibrogenic


text:
immunomechanism

Noun

 * 1)  An immunological mechanism (mode of action)

title: immunomechanism


text: immunomechanisms

title: immunomechanisms


text: intraaortal

title: intraaortal


text:
intraaortally

Adverb

 * 1) In an intraaortal manner

title: intraaortally


text: Category:Tagalog terms circumfixed with ka- -han


text:
intradermoplantar

Adjective

 * 1) intradermal and plantar

title: intradermoplantar


text:
intrastadially

Adverb

 * 1) In an intrastadial manner

title: intrastadially


text:
isomyristicin

Noun

 * 1)  The isomer of myristicin (E)-4-methoxy-6-(propen-1-yl)-1,3-benzodioxole

title: isomyristicin


text:
сўшә

Etymology
Cognate with Standard 🇨🇬.

Noun

 * 1) dormitory; hostel

title: сўшә


text:
siyang

Alternative forms

 * Carakan:
 * Roman:

title: siyang


text: sijang

title: sijang


text:
tlahtohcatotontin

Noun

 * 1) ; they are weak or ineffective sovereigns.

title: tlahtohcatotontin


text:
rinten

Alternative forms

 * Carakan:

title: rinten


text:
туанти

Etymology
Cognate with Standard 🇨🇬.

Noun

 * 1) team; organization

title: туанти


text: rainten

title: rainten


text: rahinten

title: rahinten


text:
zrzavý

Etymology
., from +.

Adjective

 * 1) ginger, red-haired, rusty

title: zrzavý


text:
raino

Noun

 * 1) rhino

title: raino


text: rahino

title: rahino


text:
гуонлён

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) light; brilliance; radiance

title: гуонлён


text:
гуонту

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) shaved head

title: гуонту


text:
гуонйин

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) life
 * 2) time; age; era

title: гуонйин


text:
palaspas

Noun

 * 1) traditional palm branch distributed and blessed during Palm Sunday rituals

title: palaspas


text:
фынкэ

Etymology
Cognate to Standard 🇨🇬.

Verb

 * 1) to divide; to split; to separate

title: фынкэ


text:
Talk:წაწლობა

Would be an accurate comparison for this term? ←₰-→ Lingo Bingo Dingo (talk)  08:19, 11 November 2020 (UTC)
 * yes and in fact a very good one thank you. Dixtosa (talk) 14:00, 11 November 2020 (UTC)

title: Talk:წაწლობა


text:
гуйтў

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) country

title: гуйтў


text:
димян

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) ground; surface of the earth
 * 2) Earth

title: димян


text:
хуонзы

Etymology
+

Noun

 * 1) yolk

title: хуонзы


text:
хуонлуан

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) turmoil; confusion

Verb

 * 1) to be in a hurry

title: хуонлуан


text:
хуонлуәбу

Etymology
+

Noun

 * 1) carrot

title: хуонлуәбу


text:
исцѣлити

Etymology
From.

Verb

 * 1) cure
 * 2) make whole

title: исцѣлити


text:
хуоншон

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) emperor

title: хуоншон


text:
хуэвә

Etymology
+

Noun

 * 1) bosom; lap

title: хуэвә


text:
җышы

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) knowledge

title: җышы


text:
表阿嫂

Noun

 * 1)  cousin-in-law; cousin's wife wife of mother's sibling's or father's sister's son older than oneself

title: 表阿嫂


text:
жынму

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) people

title: жынму


text:
чончын

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) Great Wall of China

title: чончын


text:
知力

Etymology
From. .

Noun

 * 1) intellect; wit

title: 知力


text:
Talk:鸚歌

Etymology box
The definitions in the etymology box need to be added. 173.88.246.138 08:53, 11 November 2020 (UTC)

title: Talk:鸚歌


text:
дижын

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) enemy

title: дижын


text:
цунмин

Etymology
Cognate to Standard 🇨🇬.

Adjective

 * 1) clever; intelligent

title: цунмин


text:
сыху

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) time

title: сыху


text:
passeridan

Adjective

 * 1)  Of or relating to the.

title: passeridan


text:
сычин

Etymology
Cognate to Standard 🇨🇬.

Noun

 * 1) matter; affair

title: сычин