ဝိက်ရှေန်နရဳ mnwwiktionary https://mnw.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%80%80%E1%80%BA%E1%80%9B%E1%80%BE%E1%80%B1%E1%80%94%E1%80%BA%E1%80%94%E1%80%9B%E1%80%B3:%E1%80%99%E1%80%AF%E1%80%80%E1%80%BA%E1%80%9C%E1%80%AD%E1%80%80%E1%80%BA%E1%80%90%E1%80%99%E1%80%BA MediaWiki 1.47.0-wmf.8 case-sensitive မဳဒဳယာ တၟေင် ဓရီုကျာ ညးလွပ် ညးလွပ် ဓရီုကျာ ဝိက်ရှေန်နရဳ ဝိက်ရှေန်နရဳ ဓရီုကျာ ဝှာင် ဝှာင် ဓရီုကျာ မဳဒဳယာဝဳကဳ မဳဒဳယာဝဳကဳ ဓရီုကျာ ထာမ်ပလိက် ထာမ်ပလိက် ဓရီုကျာ ရီု ရီု ဓရီုကျာ ကဏ္ဍ ကဏ္ဍ ဓရီုကျာ အဆက်လက္ကရဴ အဆက်လက္ကရဴ ဓရီုကျာ ကာရန် ကာရန် ဓရီုကျာ အဘိဓာန် အဘိဓာန် ဓရီုကျာ ဗီုပြၚ်သိုၚ်တၟိ ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ TimedText TimedText talk မဝ်ဂျူ မဝ်ဂျူ ဓရီုကျာ Event Event talk မဝ်ဂျူ:number list 828 2687 397473 158286 2026-06-25T01:28:56Z Hiyuune 1535 397473 Scribunto text/plain -- TODO: support <id:...>. currently it does nothing. local m_links = require("Module:links") local m_str_utils = require("Module:string utilities") local char = string.char local concat = table.concat local gsub = m_str_utils.gsub local insert = table.insert local list_to_set = require("Module:table").listToSet local sort = table.sort local u = m_str_utils.char local upper = string.upper local export = {} --[=[ Terminology: Number = a bare number; a mathematical entity which has different form types (e.g. cardinal, ordinal) Form type = a category of the forms that represent a number; examples are cardinal, ordinal, distributive, fractional Form = a word or expression that represents a number in a given language Tag = an identifier attached to a form that allows different logical subtypes of forms from the same form type to be identified; e.g. 'vuitanta-vuit<tag:Central>' vs. 'huitanta-huit<tag:Valencian>' to identify variants of Catalan cardinal number 88 for different dialectal standards; there can be multiple tags per form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/vigesimal and masculine/feminine variants of this number Tag list = a list of tags in the order they are specified in the data, e.g. {"vigesimal", "feminine"} for the example above Combined tag = the string representation of a tag list, using ||| to separate individual tags ]=] local default_form_types = { {key = "cardinal", display = "[[cardinal number|Cardinal]]"}, {key = "ordinal", display = "[[ordinal number|Ordinal]]"}, {key = "ordinal_abbr", display = "[[ordinal number|Ordinal]] [[abbreviation]]"}, {key = "adverbial", display = "[[adverbial number|Adverbial]]"}, {key = "multiplier", display = "[[multiplier|Multiplier]]"}, {key = "distributive", display = "[[distributive number|Distributive]]"}, {key = "collective", display = "[[collective number|Collective]]"}, {key = "fractional", display = "[[fractional|Fractional]]"}, } -- Keys in a `numbers` entry that aren't form types. local non_form_types = { numeral = true, wplink = true, next = true, prev = true, next_outer = true, prev_outer = true, upper = true, lower = true, } local function track(page) require("Module:debug/track")("number list/" .. page) return true end --[=[ -- -- General set intersection local function set_intersection(sets) local intersection = {} for key, _ in pairs(sets[1]) do intersection[key] = true end for i = 2, #sets do local this_set = sets[i] for key, _ in pairs(intersection) do if not this_set[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end end return intersection end ]=] local function set_intersection(set1, set2) local intersection = {} for key, _ in pairs(set1) do intersection[key] = true end for key, _ in pairs(intersection) do if not set2[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end return intersection end function export.get_data_module_name(langcode) return "Module:number list/data/" .. langcode end -- Format a number (either a Lua number or a string) in fixed point without any decimal point or scientific notation. -- `tostring()` doesn't work because it converts large numbers such as 1000000000000000 to "1e+15". function export.format_fixed(number) if type(number) == "string" then return number else return ("%.0f"):format(number) end end -- Parse a form with modifiers such as 'vuitanta-vuit<tag:Central>' or 'سیزده<tr:sizdah>' -- or 'سیزده<tr:sizdah><tag:Iranian>' into its component parts. Return a form object, i.e. an object with fields -- `form` for the form, and `tr`, `tag`, `q`, `qq` or `link` for the modifiers. The `tag` field is a tag list -- (see above). function export.parse_form_and_modifiers(form_with_modifiers) local retval = {} local form form = form_with_modifiers while true do local new_form, angle_bracketed = form:match("^(.-)(%b<>)$") if not new_form then break end local prefix, content = angle_bracketed:match "^<(%w+):(.+)>$" if not prefix then break end if prefix == "tag" then if retval.tag then insert(retval.tag, content) else retval.tag = {content} end elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" or prefix == "id" then if retval[prefix] then error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, retval[prefix], form_with_modifiers)) else retval[prefix] = content end else error(("Unrecognized modifier '%s' in data module form: %s"):format(prefix, form_with_modifiers)) end form = new_form end retval.form = form return retval end -- Find the `numbers` object for a given number (which should be in string representation). function export.lookup_data(m_data, numstr) -- Don't try to convert very large numbers to Lua numbers because they may overflow. -- Powers of 10 >= 10^22 cannot be represented exactly as a Lua number. return m_data.numbers[numstr] or #numstr < 22 and m_data.numbers[tonumber(numstr)] or nil end -- Return true if a < b, where either may be a Lua number or the string representation of a number. function export.numbers_less_than(a, b) a, b = export.format_fixed(a), export.format_fixed(b) local alen = #a local blen = #b if alen < blen then return true end if alen > blen then return false end return a < b end -- Return true if a > b, where either may be a Lua number or the string representation of a number. function export.numbers_greater_than(a, b) return export.numbers_less_than(b, a) end -- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages -- where there is a difference between independent and affixed forms of numerals. Currently the only such language -- is Swahili, where e.g. the cardinal number form for 3 is affixed [[-tatu]], independent [[tatu]], and the ordinal -- number form is [[-a tatu]], independent [[tatu]]. We rely on a set of Lua pattern substitutions to convert from -- affixed to independent form. -- -- FIXME: This needs major rethinking in a way that isn't specific to Swahili. local function maybe_unaffix(m_data, form) if not m_data.unaffix then return form end for _, entry in ipairs(m_data.unaffix) do local from, to = unpack(entry) form = gsub(form, from, to) end return form end -- Convert the given number form (taken from the data for `lang`, after parsing the form for modifiers and stripping -- the modifiers) to an entry name. The form may have links and/or accent/length marks that need to be stripped. local function form_to_entry_name(form, lang) return (lang:makeEntryName(m_links.remove_links(form))) end -- Return true if the given number form object (taken from the data for `lang`, after parsing the form for modifiers) -- matches `pagename`. If there is a <link:...> modifier, we check against it. Otherwise, we check against the form -- itself. In this case, the form may have links and/or accent/length marks that need to be stripped, and we may need -- to convert the form to its independent (un-affixed) form, if there is a difference between independent and affixed -- forms (as in Swahili). local function form_equals_pagename(formobj, pagename, m_data, lang) if formobj.link == pagename then return true end local entry_name = form_to_entry_name(formobj.form, lang) return entry_name == pagename or maybe_unaffix(m_data, entry_name) == pagename end -- Given the data for a language and a number (which should be in string representation), find the next and previous -- numbers to display (in string representation). local function get_next_and_prev_keys(m_data, numstr) local numdata = export.lookup_data(m_data, numstr) if not numdata then return nil, nil end local nextnum = numdata.next local prevnum = numdata.prev if not nextnum or not prevnum then -- Find the next/previous numbers by sorting all the keys and locating the number in question among them. local sorted_list = {} local index = 1 for key, _ in pairs(m_data.numbers) do sorted_list[index] = key index = index + 1 end sort(sorted_list, export.numbers_less_than) -- We could binary search to save time, but given that we already sort, which is supra-linear, it won't -- matter to search linearly. for i, key in ipairs(sorted_list) do if export.format_fixed(key) == numstr then nextnum = nextnum or sorted_list[i + 1] prevnum = prevnum or sorted_list[i - 1] break end end end if nextnum then nextnum = export.format_fixed(nextnum) end if prevnum then prevnum = export.format_fixed(prevnum) end return nextnum, prevnum end -- Find the "description objects" (a two-element list {NUMBER, TYPE}, where NUMBER is either a Lua number or a string, -- depending on how it appears in the underlying data) that matches `pagename` and (if given) `matching_type`. -- Return a list of such objects. local function lookup_number_by_form(lang, m_data, pagename, matching_type) local retval = {} local function check_form(form, num, typ) local formobj = export.parse_form_and_modifiers(form) if form_equals_pagename(formobj, pagename, m_data, lang) and (not matching_type or typ == matching_type) then -- It's possible the same pagename occurs multiply for a given type and number, e.g. with different length -- or accent marks. The calling code is OK with multiple entries for a given number (which can also occur -- with different types, e.g. the ordinal and fractional forms for a given number are the same), but will -- throw an error if different numbers are seen. insert(retval, {num, typ}) end end for num, numdata in pairs(m_data.numbers) do for numtype, forms in pairs(numdata) do if non_form_types[numtype] then -- do nothing elseif type(forms) == "table" then for _, form in ipairs(forms) do check_form(form, num, numtype) end else check_form(forms, num, numtype) end end end return retval end -- additional_types is an array of tables like form_types, -- but each table can contain the keys "before" or "after", which specify -- the numeral type that the form should appear before or after. -- The transformations are applied in order. local function add_form_types(form_types, additional_types) local types = require("Module:table").deepCopy(form_types) for _, additional_type in ipairs(additional_types) do if not (additional_type.before or additional_type.after) then insert(types, additional_type) else if additional_type.before and additional_type.after then error("The form type '" .. additional_type.key .. "' is specifying both before and after, which is not allowed") end local anchor, index = additional_type.before or additional_type.after for i, another_type in ipairs(types) do if another_type.key == anchor then index = i break end end if index and additional_type.after then index = index + 1 end additional_type = require("Module:table").shallowCopy(additional_type) additional_type.before, additional_type.after = nil, nil if not index then mw.log("Number type " .. (additional_type.before or additional_type.after) .. " was not found.") insert(types, additional_type) else insert(types, index, additional_type) end end end return types end -- Return all form types for the language in question, in order. function export.get_number_types(m_data) local form_types = default_form_types if m_data.additional_number_types then return add_form_types(form_types, m_data.additional_number_types) else return form_types end end -- Convert a number type object (an object with `display` and `key` fields) to its displayed form. function export.display_number_type(number_type) if number_type.display then return number_type.display else return (number_type.key:gsub("^.", upper):gsub("_", " ")) end end -- Group digits with a separator, such as a comma or a period. See [[w:Digit grouping]]. local function add_separator(numstr, separator, group, start) start = start or group if start >= #numstr then return numstr end local parts = { numstr:sub(-start) } for i = start + 1, #numstr, group do insert(parts, 1, numstr:sub(-(i + group - 1), -i)) end return concat(parts, separator) end function export.add_thousands_separator(numstr, separator) if #numstr < 4 then -- < 1000 return numstr end return add_separator(numstr, separator or ",", 3) end local function add_Indic_separator(numstr, separator) return add_separator(numstr, separator, 2, 3) end -- Convert a number (represented as a string) to non-Arabic form based on the specs in `numeral_config`. -- This is used, for example, to display the Hindu, Eastern Arabic or Roman form of a number along with the standard -- Arabic form. Most of the code below assumes that the non-Arabic numerals are decimal, and the digits map one-to-one -- with Arabic numerals. If this is not the case (e.g. for Roman numerals), a special module function is called to do -- the conversion. function export.generate_non_arabic_numeral(numeral_config, numstr) -- `numstr` is a number represented as a string. See comment near top of show_box(). if numeral_config.module and numeral_config.func then return require("မဝ်ဂျူ:" .. numeral_config.module)[numeral_config.func](numstr) end local thousands_separator, Indic_separator, zero_codepoint = numeral_config.thousands_separator, numeral_config.Indic_separator, numeral_config.zero_codepoint if not zero_codepoint then return nil end if thousands_separator then numstr = export.add_thousands_separator(numstr, thousands_separator) elseif Indic_separator then numstr = add_Indic_separator(numstr, Indic_separator) end return numstr:gsub("%d", function (digit) return u(zero_codepoint + tonumber(digit)) end) end -- Format a number (either a Lua number or a string) for display. Sufficiently small numbers are displayed in fixed -- point with thousands separators. Larger numbers are displayed in both fixed point and scientific notation using -- superscripts, and sufficiently large numbers are displayed only in scientific notation. function export.format_number_for_display(number) local MAX_NUM_DIGITS_FOR_FIXED_ONLY = 6 local MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY = 13 local numstr = export.format_fixed(number) local fixed = export.add_thousands_separator(numstr) if #numstr <= MAX_NUM_DIGITS_FOR_FIXED_ONLY then return fixed end local kstr = numstr:match("^([0-9]*[1-9])0*$") if not kstr then error("Internal error: Unable to match number '" .. numstr .. "'") end local exponent = ("10<sup>%s</sup>"):format(#numstr - 1) local mantissa if kstr == "1" then mantissa = "" elseif #kstr == 1 then mantissa = kstr .. " × " else mantissa = kstr:gsub("^([0-9])", "%1.") .. " × " end local scientific = mantissa .. exponent if #numstr >= MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY then return scientific else return fixed .. " (" .. scientific .. ")" end end -- Map a list of tags to a single string that is equivalent. We need to do this because we can't easily put lists in the -- keys of tables. local function tag_list_to_combined_tag(tag_list) return concat(tag_list, "|||") end -- Given a list of forms with attached inline modifiers (e.g. 'huitanta-huit<tag:Valencian>' or -- 'tair ar ddeg<tag:vigesimal><tag:feminine>'), parse the forms into form objects (the return value of -- parse_form_and_modifiers()) and group by the tag. Three values are returned: -- `seen_forms`, `forms_by_tag`, `seen_tags` where: -- (1) `seen_forms` is the list of parsed form objects; -- (2) `forms_by_tag` is a table grouping the form objects by combined tag, where the key is the tag and the value is -- a list of the form objects seen with that tag (forms without tag are grouped under the empty-string tag); -- (3) `seen_tags` is a list of the combined tags encountered, in the order they were encountered; -- (4) `combined_tags_to_tag_lists` is a map from combined tags to the corresponding tag lists. function export.group_numeral_forms_by_tag(forms) local seen_forms = {} local forms_by_tag = {} local seen_tags = {} local combined_tags_to_tag_lists = {} for _, form in ipairs(forms) do local formobj = export.parse_form_and_modifiers(form) insert(seen_forms, formobj) local combined_tag = formobj.tag and tag_list_to_combined_tag(formobj.tag) or "" if not forms_by_tag[combined_tag] then insert(seen_tags, combined_tag) forms_by_tag[combined_tag] = {} combined_tags_to_tag_lists[combined_tag] = formobj.tag or {} end insert(forms_by_tag[combined_tag], formobj) end return seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists end -- Given a form object (as returned by parse_form_and_modifiers()), format as appropriate for the current language. function export.format_formobj(formobj, m_data, lang) local left_q = formobj.q and require("Module:qualifier").format_qualifier(formobj.q) .. " " or "" local right_q = formobj.qq and " " .. require("Module:qualifier").format_qualifier(formobj.qq) or "" return left_q .. m_links.full_link{ lang = lang, term = maybe_unaffix(m_data, formobj.form), alt = formobj.form, tr = formobj.tr, } .. right_q end -- Implementation of {{number box}}. function export.show_box(frame) local full_link = m_links.full_link local params = { [1] = {required = true, type = "language", default = "und"}, [2] = true, ["pagename"] = true, ["type"] = true, } local parent_args = frame:getParent().args if parent_args.pagename then track("show-box-pagename") end local args = require("Module:parameters").process(parent_args, params, nil, "number list", "show_box") local lang = args[1] local langcode = lang:getCode() -- Get the data from the data module. Some modules (e.g. currently [[Module:number list/data/ka]]) have to be -- loaded with require() because the exported numbers table has a metatable. local module_name = export.get_data_module_name(langcode) local m_data = require(module_name) local pagename = args.pagename or (mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and "*" or "") .. mw.title.getCurrentTitle().subpageText -- Resolve any risky characters which makeEntryName will escape, so that any matches involving them work correctly. pagename = (lang:makeEntryName(pagename)) local cur_type = args.type -- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. -- These large numbers do occur, such as 100 trillion ([[རབ་བཀྲམ་ཆེན་པོ]]), 1 sextillion, etc. Lua represents all -- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of -- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long -- scale), but the first power of ten whose neighboring numbers cannot be represented exactly is 10^16 (ten -- quadrillion or ten thousand billion). Ideally we would use a big integer library of some kind, but unfortunately -- Wiktionary does not seem to have any such library installed. MediaWiki docs make mention of bcmath, but -- mw.bcmath.new() throws an error. -- -- In module data, we allow numbers to be indexed as Lua numbers or as strings. See lookup_data() above. local cur_num = args[2] or langcode == "und" and mw.title.getCurrentTitle().nsText == "ထာမ်ပလိက်" and "2" or nil -- If a current number wasn't specified, find it by looking through the data for the current language and matching -- forms against the pagename. if not cur_num then local nums_and_types = lookup_number_by_form(lang, m_data, pagename, cur_type) if #nums_and_types == 0 then error("The current page name '" .. pagename .. "' does not match the spelling of any known number in [[" .. module_name .. "]]. Check the data module or the spelling of the page.") end for _, num_and_type in ipairs(nums_and_types) do local num = num_and_type[1] num = export.format_fixed(num) if cur_num and num ~= cur_num then local errparts = {} for _, num_and_type in ipairs(nums_and_types) do local num, typ = unpack(num_and_type) insert(errparts, ("%s (%s)"):format(num, typ)) end error("The current page name '" .. pagename .. "' matches the spelling of multiple numbers in [[" .. module_name .. "]]: " .. concat(errparts, ",") .. ". Please specify the number explicitly.") else cur_num = num end end end cur_num = cur_num:gsub(",", "") -- remove thousands separators if not cur_num:find("^%d+$") then error("Extraneous characters in parameter 2: should be decimal number (integer): '" .. cur_num .. "'") end -- Wrapper around `export.lookup_data` that may throw an error if the number can't be found (specifically if -- param_for_error is given). local function lookup_data(numstr, param_for_error) local retval = export.lookup_data(m_data, numstr) if not retval and param_for_error then error(('The %s number "%s" specified in the "numbers" table entry for "%s" cannot be found in ' .. "[[%s]]; please fix the module."):format(param_for_error, numstr, cur_num, module_name)) end return retval end local cur_data = lookup_data(cur_num) if not cur_data then error('The number "' .. cur_num .. '" is not found in the "numbers" table in [[' .. module_name .. "]].") end local formatted_forms = {} if cur_type and not cur_data[cur_type] then error("The numeral type " .. cur_type .. " for " .. cur_num .. " is not found in [[" .. module_name .. "]].") end -- See above for the definition of "combined tag" and "tag list". The combined tag is just the concatenation of the -- tag list with ||| between the tags. local cur_tag_list, cur_combined_tag local form_types = export.get_number_types(m_data) -- LONG COMMENT EXPLAINING TAG HANDLING: -- -- For each form type (see `form_types` at top of file), group the entries for that form type by tag and figure out -- what the current form type and tag is, i.e. the form type and tag for the form matching the pagename. Tags are -- e.g. as in 'vuitanta-vuit<tag:Central>' or 'huitanta-huit<tag:Valencian>' for Catalan and allow different -- logical sets of numbers for the same form type to be identified. There can potentially be multiple tags per -- form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/ -- vigesimal and masculine/feminine variants of this number. -- -- We need to do two passes over all form types. In the first pass, for each form type we parse all the forms, -- group them by tag, and store the results in a per-form-type table. In the second pass, we then format all forms -- for all form types. The reason for doing two passes is because we need to know the current tag in order to -- display a form type correctly (because we display the forms for the current tag before the forms for any other -- tags), but we won't know the current tag until we have done a pass over all form types and forms of those form -- types in order to determine which one matches the pagename. -- -- We use the current tag in two ways: -- 1. When displaying all the forms for a given number, we group both by form type and tag, and display the forms -- for a given form type/tag combination on a single line. For a given form type, we display the forms for each -- tag in the order the tags were specified in the data, except that the forms for the current tag are placed -- before all others (so e.g. for Catalan, if the current tag is "Valencian", we list the Valencian form(s) -- first even if the Central form(s) are listed first in the data file). -- 2. When displaying links to adjacent numbers in display_adjacent_number_links(), if there aren't form(s) for the -- current type, we don't display any links; but if there are mutiple tagged forms for the current type, we only -- display links for the forms for the current tag if there are any such forms, otherwise we display links for -- all forms of all tags. -- -- In the presence of multiple tags, things get a bit more complicated: -- 1. When displaying links to adjacent numbers, say the current tag is vigesimal+feminine, we want to prefer an -- adjacent-number form that's both vigesimal and feminine, but otherwise we prefer one that's vigesimal or -- feminine over one that's neither. Say the current tag is just vigesimal; we of course prefer an -- adjacent-number form that's just vigesimal, but otherwise we prefer a tag that's vigesimal + either masculine -- or feminine to a tag that's not vigesimal. So it seems we want the form(s) that have the maximum intersection -- of tags, and if there are two different tag lists with the same number of intersecting tags (e.g. the current -- tag is vigesimal+feminine and we have a choice of decimal+feminine or just vigesimal), we should prefer the -- form that has fewer non-matching tags, hence we prefer the just-vigesimal form. -- 2. By the same logic, when displaying all the forms for a given number, we should order by the size of the -- intersection of the tag list in question with the current tag list, then inversely by the size of the tag list -- (so we prefer tag lists with fewer non-matching tags), then by the order of the tag lists in the data file. local forms_by_tag_per_form_type = {} local seen_tags_per_form_type = {} local combined_tags_to_tag_lists_per_form_type = {} for _, form_type in ipairs(form_types) do local numeral = cur_data[form_type.key] if numeral then local seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists = export.group_numeral_forms_by_tag( type(numeral) == "table" and numeral or {numeral} ) forms_by_tag_per_form_type[form_type] = forms_by_tag seen_tags_per_form_type[form_type] = seen_tags combined_tags_to_tag_lists_per_form_type[form_type] = combined_tags_to_tag_lists for _, formobj in ipairs(seen_forms) do if not cur_tag_list and form_equals_pagename(formobj, pagename, m_data, lang) then cur_tag_list = formobj.tag or {} cur_combined_tag = tag_list_to_combined_tag(cur_tag_list) cur_type = cur_type or form_type.key end end end end -- Error if we couldn't locate the pagename among the forms for the current number. This only happens if the -- number if given explicitly in 2=. if not cur_type and mw.title.getCurrentTitle().nsText ~= "ထာမ်ပလိက်" then error("The current page name '" .. pagename .. "' does not match any of the numbers listed in [[" .. module_name .. "]] for " .. cur_num .. ". Check the data module or the spelling of the page.") end -- Now, format all the forms for all form types for the current number. local function sort_combined_tags(combined_tags, seen_tags, combined_tags_to_tag_lists) -- cur_tag_list should normally never be nil, but can be so in template space local cur_tag_set = list_to_set(cur_tag_list or {}) local tags_to_order = {} for i, tag in ipairs(seen_tags) do tags_to_order[tag] = i end local function compare_tags(tag1, tag2) -- See long comment above. -- First compare by number of tags in common with the current tag list. local tag_list1 = combined_tags_to_tag_lists[tag1] local tag_list2 = combined_tags_to_tag_lists[tag2] local common1 = set_intersection(cur_tag_set, list_to_set(tag_list1)) local common2 = set_intersection(cur_tag_set, list_to_set(tag_list2)) if #common1 ~= #common2 then return #common1 < #common2 end -- Then compare inversely by number of tags not in common with the current tag list (which is equivalent to -- comparing by total number of tags, since tags should be distinct). if #tag_list1 ~= #tag_list2 then return #tag_list1 > #tag_list2 end -- Finally, compare by the original ordering in the number data, but if a tag is the same as the current -- tag, put it first, and if somehow we encounter a tag that's not in the original ordering, put it last. local index1 = tag1 == cur_combined_tag and 0 or tags_to_order[tag1] or #seen_tags + 1 local index2 = tag2 == cur_combined_tag and 0 or tags_to_order[tag2] or #seen_tags + 1 return index1 < index2 end sort(combined_tags, compare_tags) end for _, form_type in ipairs(form_types) do local forms_by_tag = forms_by_tag_per_form_type[form_type] local seen_tags = seen_tags_per_form_type[form_type] local combined_tags_to_tag_lists = combined_tags_to_tag_lists_per_form_type[form_type] if forms_by_tag then local function insert_forms_by_tag(tag) local formatted_tag_forms = {} local pagename_among_forms = false for _, formobj in ipairs(forms_by_tag[tag]) do insert(formatted_tag_forms, export.format_formobj(formobj, m_data, lang)) if form_equals_pagename(formobj, pagename, m_data, lang) then pagename_among_forms = true end end if tag ~= "" then local tag_list = combined_tags_to_tag_lists[tag] tag = concat(tag_list, " / ") end local displayed_number_type = export.display_number_type(form_type) .. (tag == "" and "" or (" (%s)"):format(tag)) if pagename_among_forms then displayed_number_type = "'''" .. displayed_number_type .. "'''" end insert(formatted_forms, " &nbsp;&nbsp;&nbsp; ''" .. displayed_number_type .. "'': " .. concat(formatted_tag_forms, ", ")) end sort_combined_tags(seen_tags, seen_tags, combined_tags_to_tag_lists) for _, tag in ipairs(seen_tags) do insert_forms_by_tag(tag) end end end -- Current number in header local cur_display = export.format_number_for_display(cur_num) local numeral if m_data.numeral_config then numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) elseif cur_data["ဂၞန်သၚ်္ချာ"] then numeral = export.format_fixed(cur_data["ဂၞန်သၚ်္ချာ"]) end if numeral then cur_display = full_link{lang = lang, alt = numeral, tr = "-"} .. "<br/><span style=\"font-size: smaller;\">" .. cur_display .. "</span>" end --------------------- Determine next/prev, next/prev outer, and upper/lower numbers. ---------------------- -- We have three series of numbers to determine: -- -- 1. The next/previous numbers, which are always those in the sorted series of available numbers unless overridden -- by `next`/`prev` specs in an individual number. -- 2. The next/previous outer numbers, which are displayed to the outside of the next/previous numbers. These can -- be overridden for an individual number using `next_outer`/`prev_outer`. Otherwise, we try according to an -- algorithm described below in the code for computing the outer numbers. -- 3. The upper/lower numbers, which are displayed above or below the central number box. These can be overridden -- for an individual number using `upper`/`lower`. These are always 10x greater or less than the number in -- question, number not considering a number if it's the same as the next/previous number. local next_num, prev_num = get_next_and_prev_keys(m_data, cur_num) local next_data = next_num and lookup_data(next_num, "next") local prev_data = prev_num and lookup_data(prev_num, "previous") --------- Decompose number into mantissa (k) and exponent (m). ---------- local k, m if cur_num == "0" then k = 0 m = 1 else local kstr, mstr = cur_num:match("^([0-9]*[1-9])(0*)$") if not kstr then error("Internal error: Unable to match number '" .. cur_num .. "'") elseif #kstr > 15 then -- This is because some numbers with 16 or more digits can't be represented exactly. error("Can't handle number with more than 15 digits before the trailing zeros: '" .. cur_num .. "'") end k = tonumber(kstr) m = #mstr end -- Find the next greater power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_greater_power_of_ten(power) return cur_num .. ("0"):rep(power) end -- Find the next lesser power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_lesser_power_of_ten(power) local desired_zeros = m - power if desired_zeros < 0 then return nil end return k .. ("0"):rep(desired_zeros) end local next_outer_data, prev_outer_data local next_outer_num, prev_outer_num = cur_data.next_outer, cur_data.prev_outer -- When trying to find then next/previous outer numbers, first, if the base-10 mantissa is not 1 or 0, we add 1 to -- or subtract 1 from the mantissa, keeping the same number of zeros. Hence, for 300, we try 400 for the next outer, -- 200 for the previous outer. For 900, we try 1000 for the next outer and 800 for the previous outer. If the -- mantissa is 1, the next outer is computed the same but for the previous outer we use 9 followed by one fewer -- zero. Hence, for 100 we try 200 for the next outer but 90 for the previous outer. If the mantissa is 0 (i.e. the -- entire number is 0), we try 10 for the next outer, and have no previous outer. -- -- Next, if the number is an even power of 10, we try 10x, 1000x greater, 100x greater and 1,000,000x greater, in -- that sequence. Essentially, first we try the next power of 10; then we try the next short-scale number (billion, -- trillion, etc. where large numbers follow a 10^3 sequence); then we try the next long-scale number (where large -- numbers follow a 10^6 sequence); then we try the next Indic-scale number (where large numbers follow a 10^2 -- sequence: lakh, crore, arab, ...). We don't just try powers of 10 in order because then if e.g. we have entries -- for one million, ten million, one hundred million and one billion, and the current number is one million, the -- next number will be ten million and the next outer number one hundred million, when it would be cleaner to have -- one billion as the outer number (and in many cases, there is no Wiktionary entry for one hundred million). -- -- For the previous outer number, we do an analogous algorithm but make sure we don't try numbers less than 1. local power_of_10_sequence = { 1, 3, 2, 6 } --------- Determine next outer number. ---------- if next_outer_num then next_outer_data = lookup_data(next_outer_num, "next outer") else local function try(num) local data = (not next_num or export.numbers_greater_than(num, next_num)) and lookup_data(num) or nil if data then next_outer_num = num next_outer_data = data end return data end if not try((k + 1) .. ("0"):rep(m)) and k == 1 then -- Try looking up a greater power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do if try(make_greater_power_of_ten(power_of_10)) then break end end end end --------- Determine previous outer number. ---------- if prev_outer_num then prev_outer_data = lookup_data(prev_outer_num, "previous outer") else local function try(num) local data = (not prev_num or export.numbers_less_than(num, prev_num)) and lookup_data(num) or nil if data then prev_outer_num = num prev_outer_data = data end return data end if k == 0 or m == 0 then -- less than 10; no previous outer num else local num_to_try if k == 1 then num_to_try = "9" .. ("0"):rep(m - 1) else num_to_try = (k - 1) .. ("0"):rep(m) end if not try(num_to_try) and k == 1 then -- Try looking up a smaller power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do local num_to_try = make_lesser_power_of_ten(power_of_10) if num_to_try and try(num_to_try) then break end end end end end local upper_data, lower_data local upper_num, lower_num = cur_data.upper, cur_data.lower --------- Determine upper number. ---------- if upper_num then upper_data = lookup_data(upper_num, "upper") else -- Try looking up the next power of ten. upper_num = make_greater_power_of_ten(1) if upper_num == next_num or cur_num == "0" then upper_num = nil else upper_data = lookup_data(upper_num) end end --------- Determine lower number. ---------- if lower_num then lower_data = lookup_data(lower_num, "lower") elseif k == 0 or m == 0 then -- less than 10; no lower num else -- Try looking up the previous power or 10. lower_num = make_lesser_power_of_ten(1) if lower_num == prev_num then lower_num = nil else lower_data = lookup_data(lower_num) end end -- For a number `num` (an "adjacent" number to the current number, i.e. either next, previous, next/previous outer, -- or upper/lower) with corresponding entry data `num_data`, display link(s) to the form(s) for this number that -- are associated with the current type and tag. If there is a single form to be linked to, the form is linked -- using the number itself as the display text; otherwise, the multiple forms are linked with superscripted [a], -- [b], etc. and the number it displayed adjacent to the links. In either case, beside the number there may be an -- arrow. If `arrow` == "rarrow", the format is like this: -- if multiple entries: -- <numeral> → <sup>[a], [b], ...</sup> -- else -- <numeral> → -- If `arrow` == "larrow", the format is like this: -- if multiple entries: -- <sup>[a], [b], ...</sup> ← <numeral> -- else -- ← <numeral> -- Otherwise, the format is like this: -- if multiple entries: -- <numeral><sup>[a], [b], ...</sup> -- else -- <numeral> -- -- Returns nil if `num_data` is nil or there is no entry in `num_data` for the current number type. -- -- For the handling of tags in this function, see the "LONG COMMENT EXPLAINING TAG HANDLING" above. local function display_adjacent_number_links(num, num_data, arrow) if not num_data then return nil end local forms = num_data[cur_type] if not forms then return nil elseif type(forms) ~= "table" then forms = {forms} end local seen_forms, forms_by_tag = export.group_numeral_forms_by_tag(forms) -- FIXME: `cur_tag` is not defined. This seems to have been missed when multiple tag handling was added in [[Special:Diff/68978046]]. local forms_to_display if cur_tag and forms_by_tag[cur_tag] then forms_to_display = forms_by_tag[cur_tag] else forms_to_display = seen_forms end for i, form_to_display in ipairs(forms_to_display) do forms_to_display[i] = form_to_display.link or maybe_unaffix(m_data, form_to_entry_name(form_to_display.form, lang)) end local seen_pagenames = {} local pagenames_to_display = {} for _, form in ipairs(forms_to_display) do if not seen_pagenames[form] then insert(pagenames_to_display, form) seen_pagenames[form] = true end end if #pagenames_to_display == 0 then return nil end num = export.format_number_for_display(num) local num_arrow = arrow == "rarrow" and num .. "&nbsp;&nbsp;→&nbsp;" or arrow == "larrow" and "&nbsp;←&nbsp;&nbsp;" .. num or num if #pagenames_to_display > 1 then local a = ("a"):byte() local links = {} for i, term in ipairs(pagenames_to_display) do links[i] = m_links.language_link{lang = lang, term = term, alt = "[" .. char(a + i - 1) .. "]"} end links = "<sup>" .. concat(links, ", ") .. "</sup>" return arrow == "larrow" and links .. num_arrow or num_arrow .. links else return m_links.language_link { lang = lang, term = pagenames_to_display[1], alt = num_arrow, } end end -- Display links to previous/next numbers local prev_display = display_adjacent_number_links(prev_num, prev_data, "larrow") or "" local next_display = display_adjacent_number_links(next_num, next_data, "rarrow") or "" -- Display links to previous/next outer numbers local prev_outer_display = display_adjacent_number_links(prev_outer_num, prev_outer_data, "larrow") local next_outer_display = display_adjacent_number_links(next_outer_num, next_outer_data, "rarrow") -- Display links to upper/lower numbers local upper_display = display_adjacent_number_links(upper_num, upper_data) local lower_display = display_adjacent_number_links(lower_num, lower_data) local canonical_name = lang:getCanonicalName() local appendix1 = "ဂၞန်သၚ်္ချာ" .. canonical_name .. "ဂမၠိုၚ်" local appendix2 = "ဂၞန်သၚ်္ချာ" .. canonical_name .. "ဂမၠိုၚ်" local appendix local title if mw.title.new(appendix1, "အဆက်လက္ကရဴ"):getContent() then appendix = appendix1 elseif mw.title.new(appendix2, "အဆက်လက္ကရဴ"):getContent() then appendix = appendix2 end if appendix then title = "[[အဆက်လက္ကရဴ:" .. appendix .. "|" .. appendix2 .. "]]" else title = appendix2 end local function format_cell(contents, class_name, colspan, bold) class_name = class_name and (" " .. class_name) or "" colspan = colspan and ('colspan="%s" '):format(colspan) or "" bold = bold and "!" or "|" return ('%s %sclass="table-cell %s | %s\n'):format(bold, colspan, class_name, contents) end local has_outer_display = not not (prev_outer_display or next_outer_display) local function format_upper_lower_display_row(display) local blank_cell if has_outer_display then blank_cell = '| colspan="2" |\n' else blank_cell = "|\n" end local parts = {'|- class="adjacent-panel"\n'} insert(parts, blank_cell) insert(parts, format_cell(display, "adjacent-number")) insert(parts, blank_cell) return concat(parts) end upper_display = upper_display and format_upper_lower_display_row(upper_display) or "" lower_display = lower_display and format_upper_lower_display_row(lower_display) or "" local function format_display_cell(display) return format_cell(display, "adjacent-number") end prev_display = format_display_cell(prev_display) next_display = format_display_cell(next_display) prev_outer_display = has_outer_display and format_display_cell(prev_outer_display or "") or "" next_outer_display = has_outer_display and format_display_cell(next_outer_display or "") or "" cur_display = format_cell(cur_display, "current-number", nil, "bold") local forms_display = ('| colspan="%s" style="text-align: center;" | %s\n'):format( has_outer_display and 5 or 3, concat(formatted_forms, "<br/>")) local footer_display if cur_data.wplink then local footer = "လိက်ပရေၚ်[[w:" .. lang:getCode() .. ":မုက်လိက်တမ်|ဝဳကဳပဳဒဳယာ" .. lang:getCanonicalName() .. "]]လ္တူ " .. m_links.full_link{lang = lang, term = "w:" .. lang:getCode() .. ":" .. cur_data.wplink, alt = export.format_number_for_display(cur_num)} footer_display = '|- style="text-align: center;"\n' .. format_cell(footer, "footer-cell", has_outer_display and 5 or 3) else footer_display = "" end local edit_link = ' <sup>(<span class="plainlinks">[' .. tostring(mw.uri.fullUrl(module_name, { action = "ပလေဝ်ဒါန်" })) .. " ပလေဝ်ဒါန်]</span>)</sup>" return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" style="background: var(--wikt-palette-white, #ffffff); color: inherit; border: 1px #aaa solid; border-collapse: collapse; margin-top: .5em;" rules="all" |+ ''']=] .. title .. edit_link .. "'''\n" .. upper_display .. '|- style="text-align: center;"\n' .. prev_outer_display .. prev_display .. cur_display .. next_display .. next_outer_display .. "|-\n" .. lower_display .. "|-\n" .. forms_display .. footer_display .. "|}" .. require("Module:TemplateStyles")("Template:number box/styles.css") end function export.show_box_manual(frame) local m_links = require("Module:links") local num_type = frame.args["type"] local args = require("Module:parameters").process(frame:getParent().args, { [1] = {required = true, type = "language", default = "und"}, sc = {type = "script"}, headlink = true, wplink = true, alt = true, tr = true, [2] = true, -- prev_symbol [3] = true, -- cur_symbol [4] = true, -- next_symbol [5] = true, -- prev_term [6] = true, -- next_term card = true, cardalt = true, cardtr = true, ord = true, ordalt = true, ordtr = true, adv = true, advalt = true, advtr = true, mult = true, multalt = true, multtr = true, dis = true, disalt = true, distr = true, coll = true, collalt = true, colltr = true, frac = true, fracalt = true, fractr = true, opt = true, optx = true, optxalt = true, optxtr = true, opt2 = true, opt2x = true, opt2xalt = true, opt2xtr = true, }) local lang = args[1] local sc = args.sc local headlink = args.headlink local wplink = args.wplink local alt = args.alt local tr = args.tr local prev_symbol = args[2] local cur_symbol = args[3] local next_symbol = args[4] local prev_term = args[5] local next_term = args[6] local cardinal_term = args.card; local cardinal_alt = args.cardalt; local cardinal_tr = args.cardtr local ordinal_term = args.ord; local ordinal_alt = args.ordalt; local ordinal_tr = args.ordtr local adverbial_term = args.adv; local adverbial_alt = args.advalt; local adverbial_tr = args.advtr local multiplier_term = args.mult; local multiplier_alt = args.multalt; local multiplier_tr = args.multtr local distributive_term = args.dis; local distributive_alt = args.disalt; local distributive_tr = args.distr local collective_term = args.coll; local collective_alt = args.collalt; local collective_tr = args.colltr local fractional_term = args.frac; local fractional_alt = args.fracalt; local fractional_tr = args.fractr local optional1_title = args.opt local optional1_term = args.optx; local optional1_alt = args.optxalt; local optional1_tr = args.optxtr local optional2_title = args.opt2 local optional2_term = args.opt2x; local optional2_alt = args.opt2xalt; local optional2_tr = args.opt2xtr track(lang:getCode()) if sc then track("sc") end if headlink then track("headlink") end if wplink then track("wplink") end if alt then track("alt") end if cardinal_alt or ordinal_alt or adverbial_alt or multiplier_alt or distributive_alt or collective_alt or fractional_alt or optional1_alt or optional2_alt then track("xalt") end local subpage = mw.title.getCurrentTitle().subpageText local is_reconstructed = lang:hasType("reconstructed") or mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" -- Commenting out this line prevents passing redundant alts to full_link; -- however, there may have been a purpose to it. -- alt = alt or (is_reconstructed and "*" or "") .. subpage if num_type == "ဂၞန်အဓိက" then cardinal_term = cardinal_term or (is_reconstructed and "*" or "") .. subpage cardinal_alt = cardinal_alt or alt cardinal_tr = cardinal_tr or tr elseif num_type == "အတိုၚ်အစဳအဇန်" then ordinal_term = ordinal_term or (is_reconstructed and "*" or "") .. subpage ordinal_alt = ordinal_alt or alt ordinal_tr = ordinal_tr or tr end local header = "ဂၞန်သၚ်္ချာ" .. lang:getCanonicalName() .. num_type .. "ဂမၠိုၚ်" if headlink then header = "[[" .. headlink .. "|" .. header .. "]]" end local previous = "" if prev_term or prev_symbol then previous = m_links.full_link{lang = lang, sc = sc, term = prev_term, alt = "&nbsp;&lt;&nbsp;&nbsp;" .. prev_symbol, tr = "-", no_alt_ast = true} end local current = m_links.full_link{lang = lang, sc = sc, alt = cur_symbol, tr = "-", no_alt_ast = true} local next = "" if next_term or next_symbol then next = m_links.full_link{lang = lang, sc = sc, term = next_term, alt = next_symbol .. "&nbsp;&nbsp;&gt;&nbsp;", tr = "-", no_alt_ast = true} end local forms = {} if cardinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[cardinal number|Cardinal]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr}) end if ordinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[ordinal number|Ordinal]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr}) end if adverbial_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[adverbial number|Adverbial]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr}) end if multiplier_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[multiplier|Multiplier]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr}) end if distributive_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[distributive number|Distributive]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr}) end if collective_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[collective number|Collective]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr}) end if fractional_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[fractional|Fractional]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr}) end if optional1_title then insert(forms, " &nbsp;&nbsp;&nbsp; ''" .. optional1_title .. "'' : " .. m_links.full_link{lang = lang, sc = sc, term = optional1_term, alt = optional1_alt, tr = optional1_tr}) end if optional2_title then insert(forms, " &nbsp;&nbsp;&nbsp; ''" .. optional2_title .. "'' : " .. m_links.full_link{lang = lang, sc = sc, term = optional2_term, alt = optional2_alt, tr = optional2_tr}) end local footer = "" if wplink then footer = "လိက်ပရေၚ်[[w:" .. lang:getCode() .. ":မုက်လိက်တမ်|ဝဳကဳပဳဒဳယာ" .. lang:getCanonicalName() .. "]]လ္တူ " .. m_links.full_link{lang = lang, sc = sc, term = "w:" .. lang:getCode() .. ":" .. wplink, alt = alt, tr = tr} end return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" rules="all" |+ ''']=] .. header .. [=[''' |- | class="adjacent-slot" | ]=] .. previous .. [=[ ! class="current-slot" | ]=] .. current .. [=[ | class="adjacent-slot" | ]=] .. next .. [=[ |- | colspan="3" class="form-slot" | ]=] .. concat(forms, "<br/>") .. [=[ |- | colspan="3" class="footer-slot" | ]=] .. footer .. [=[ |}]=] .. require("Module:TemplateStyles")("Template:number box/styles.css") end return export kgvo0me6qeq70qal9di2ftfwqnwwg9m ကဏ္ဍ:အဆက်ဂတအၚ်္ဂလိက်ဂမၠိုၚ် 14 14593 397469 276774 2026-06-24T19:46:39Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ကဏ္ဍ:ဥပသဂ္ဂပဒအၚ်္ဂလိက်ဂမၠိုၚ်]] ဇရေင် [[ကဏ္ဍ:အဆက်ဂတအၚ်္ဂလိက်ဂမၠိုၚ်]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 276774 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်]] cgthbuhht2vx8a42gqbqvafhhdb35kh ထာမ်ပလိက်:en-prefix 10 41578 397467 55211 2026-06-24T19:44:51Z 咽頭べさ 33 397467 wikitext text/x-wiki {{#invoke:en-headword|show|အဆက်ဂတ}}<!-- --><noinclude>{{documentation}}</noinclude> 0fbihj5xl4dbl54m3fqb9egbczph1s6 ကဏ္ဍ:ဟာန်သဳကြုက်ဂမၠိုၚ် 14 43707 397475 57917 2026-06-25T06:03:27Z ~2026-36713-84 2378 397475 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာကြုက်]] this 7hj3veda6w0qs3ipgf97upm4t26awgu 397476 397475 2026-06-25T06:03:43Z ~2026-36713-84 2378 397476 wikitext text/x-wiki ၊ ဂၠေအ်လဝ်အဆက်ဝေါဟာ[[ကဏ္ဍ:ဘာသာကြုက်]] this 4ft1tb2t31q3ya6jg04nh4wijbeylcn ဗီုပြၚ်သိုၚ်တၟိ:ဒေတ်တာဗေတာံ ဒိုဟ်သမၠုၚ်ကျာ-အခိုက်ကၞာ/aracan 118 71486 397474 94121 2026-06-25T02:18:01Z Hiyuune 1535 397474 wikitext text/x-wiki {{reconstruction}} ==ဒေတ်တာဗေတာံ ဒိုဟ်သမၠုၚ်ကျာ-အခိုက်ကၞာ== ===နာမ်=== {{head|dra-sou-pro|နာမ်}} # ဨကရာဇ်။ [[en:Reconstruction:Proto-South Dravidian/aracan]] [[vi:Từ tái tạo:Tiếng Nam Dravida nguyên thủy/aracan]] awtjhr3umtxsi3iets8tgkac7xal49f ಮೀನ್ 0 116415 397446 150095 2026-06-24T18:08:07Z 咽頭べさ 33 397446 wikitext text/x-wiki ==ကာန်နာဒါတြေံ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|dra-okn|dra-pro|*mīn}} ====နာမ်==== {{head|dra-okn|noun}} # [[က]]။ ===မဒုၚ်လွဳစ=== * {{desc|kn|ಮೀನು}} i7xpzehzjyx1ahcdwzyu8z6duywn23y 𑀫𑀻𑀷𑁆 0 116420 397447 150100 2026-06-24T18:09:30Z 咽頭べさ 33 397447 wikitext text/x-wiki ==တမဳလ်တြေံ== ===နိရုတ်=== {{inh+|oty|dra-pro|*mīn}} ====နာမ်==== {{head|oty|noun}} # [[က]]။ ===နိရုတ် ၂=== {{inh+|oty|dra-pro|*miHn}} ====နာမ် ၂==== {{head|oty|noun}} # သၞံၚ်။ ===မဒုၚ်လွဳစ=== * {{desc|ml|മീൻ}} * {{desc|ta|மீன்}} p9ch0a1vq0n1v97ny01j2vm5dqg9zle gravo 0 296239 397448 2026-06-24T18:33:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|gravó|gravò|gravo-}} ==ကာတ်တလာန်== ===ကြိယာ=== {{head|ca|verb form}} # {{ca-verb form of|gravar}} ==အဳတလဳ== ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràvo}} ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|gravare||1|s|pres|ind}} ==လပ်တေန်== ===ဗွဟ်ရမ္သာၚ်=== * {{la-IPA|gravō}} ===ကြိယာ=== {{l..." 397448 wikitext text/x-wiki {{also|gravó|gravò|gravo-}} ==ကာတ်တလာန်== ===ကြိယာ=== {{head|ca|verb form}} # {{ca-verb form of|gravar}} ==အဳတလဳ== ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràvo}} ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|gravare||1|s|pres|ind}} ==လပ်တေန်== ===ဗွဟ်ရမ္သာၚ်=== * {{la-IPA|gravō}} ===ကြိယာ=== {{la-verb|1+|gravō}} # သကဵုပ္ဍိုက်ကပေါတ်၊ သ္ကေဝ်စှ်ေ၊ ပ္ဍိုက်ပ္ဍုန်။ #: {{syn|la|aggravō|ingravō|dēgravō|premō|opprimō}} # သကဵုမသ္ပဂွံပဋိသန္ဓိ။ # သကဵုပံၚ်ကလောံကၠုၚ်၊ မသ္ပသာတုဲပရေဲကၠုၚ်။ #: {{syn|la|ingravō|aggravō|onerō}} ====သမ္ဗန္ဓ==== {{la-conj|1+|gravō}} ===မဒုၚ်လွဳစ=== * {{desc|en|grieve}} * {{desc|fr|grever}} * {{desc|es|gravar}} * {{desc|it|gravare}} * {{desc|pt|gravar}} * {{desc|la-vul|*graviare|der=1}} ** {{desc|roa-oca|greujar}} ** {{desc|fro|gregier|grejier|greger}} *** {{desc|nrf|grégir|qq=Jersey}} ** {{desc|pro|greujar}} ==ဒါတ်တြေံ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|odt|gmw-pro|*garāfijō}} ===နာမ်=== {{head|odt|noun|head=grāvo|g=m}} # တော်ရိုဟ်၊ ဍိက်စကာမဆေၚ်စပ်ကဵုဨကရာတ်မၞုံကဵုတာလျိုၚ်ကမၠောန်ညးမကေတ်သ္ကိုပ်သ္ကကောပ်ကာဲမချိုတ်ပၠိုတ်။ ====ကၠောံဝေါဟာ==== {{odt-decl-noun-an|grāv|g=m}} ===မဒုၚ်လွဳစ=== * {{desc|dum|grâve}} ** {{desc|nl|graaf}} *** {{desc|af|graaf}} ==ပဝ်တူဂြဳ== ===ဗွဟ်ရမ္သာၚ်=== {{pt-IPA}} * {{rhymes|pt|avu|abu|q2=Northern Portugal|s=2}} * {{hyphenation|pt|gra|vo}} ===ကြိယာ=== {{head|pt|verb form}} # {{pt-verb form of|gravar}} ==သ္ပုၚ်== ===ဗွဟ်ရမ္သာၚ်=== {{es-pr|+<hmp:grabo>}} ===ကြိယာ=== {{head|es|verb form}} # {{es-verb form of|gravar}} 92x2ob9ydok31m8lugexauzmwrtxsig ထာမ်ပလိက်:odt-decl-noun-an 10 296240 397449 2026-06-24T18:35:39Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:odt-decl-noun|show|decl=an}}<!-- --><noinclude>{{documentation}} {{tcat|ndecl}}</noinclude>" 397449 wikitext text/x-wiki {{#invoke:odt-decl-noun|show|decl=an}}<!-- --><noinclude>{{documentation}} {{tcat|ndecl}}</noinclude> hksj2fvi5j3sv0ggapp11lsy1hw3fdi မဝ်ဂျူ:odt-decl-noun 828 296241 397450 2026-06-24T18:47:46Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("odt") local decl_data = {} local function devoice(stem) stem = mw.ustring.gsub(stem, "ng$", "nc") stem = mw.ustring.gsub(stem, "d$", "t") stem = mw.ustring.gsub(stem, "b$", "p") stem = mw.ustring.gsub(stem, "v$", "f") stem = mw.ustring.gsub(stem, "z$", "s")..." 397450 Scribunto text/plain local export = {} local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("odt") local decl_data = {} local function devoice(stem) stem = mw.ustring.gsub(stem, "ng$", "nc") stem = mw.ustring.gsub(stem, "d$", "t") stem = mw.ustring.gsub(stem, "b$", "p") stem = mw.ustring.gsub(stem, "v$", "f") stem = mw.ustring.gsub(stem, "z$", "s") return stem end local function umlaut(stem) subStr = string.sub(stem, -4, -1) if string.find(subStr, "ie") then stem = stem.gsub(stem, "ie", "iu") end if string.find(subStr, "e") and not string.find(subStr, "ei") then stem = stem.gsub(stem, "e", "i") end if string.find(subStr, "a") then stem = stem.gsub(stem, "a", "e") end if string.find(subStr, "o") and not string.find(stem, "uo") then stem = stem.gsub(stem, "o", "u") end stem = mw.ustring.gsub(stem, "ce", "ke") stem = mw.ustring.gsub(stem, "ci", "ki") return stem end local function C_to_K(stem) stem = mw.ustring.gsub(stem, "cc$", "ck") stem = mw.ustring.gsub(stem, "c$", "k") stem = mw.ustring.gsub(stem, "z$", "c") return stem end local function K_to_C(stem) stem = mw.ustring.gsub(stem, "ck$", "cc") stem = mw.ustring.gsub(stem, "k$", "c") return stem end local function degeminate(stem) stem = mw.ustring.gsub(stem, "([bcdfghjklmnprstvwzþ])%1$", "%1") stem = mw.ustring.gsub(stem, "ck$", "k") return stem end local function categorize(gender) if gender == 'm' then cat_gender='ပုလ္လိၚ်' elseif gender == 'f' then cat_gender='ဣတ္တိလိၚ်' elseif gender == 'n' then cat_gender='နပုလ္လိၚ်' else cat_gender='masculine' -- error("Unrecognized gender '" .. gender .. "'. Only masculine ('m'), feminine ('f') or neuter ('n')") end return cat_gender end decl_data["a"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["a"], {__call = function(self, args, data) cat_type = "a-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "a"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_pl"] = {devoiced_stem} data.forms["acc_pl"] = {devoiced_stem} end end }) decl_data["o"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["o"], {__call = function(self, args, data) args.g='f' cat_type = "ō/ōn-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "a", args[1] .. "on"} data.forms["gen_sg"] = {args[1] .. "on"} data.forms["dat_sg"] = {args[1] .. "on"} data.forms["nom_pl"] = {args[1] .. "a", args[1] .. "on"} data.forms["acc_pl"] = {args[1] .. "a", args[1] .. "on"} data.forms["gen_pl"] = {args[1] .. "ono"} data.forms["dat_pl"] = {args[1] .. "on"} end }) decl_data["ja"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["ja"], {__call = function(self, args, data) cat_type = "ja-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) data.forms["nom_sg"] = {stem_K .. "i"} data.forms["acc_sg"] = {stem_K .. "i"} data.forms["gen_sg"] = {stem_K .. "is"} data.forms["dat_sg"] = {stem_K .. "i"} data.forms["nom_pl"] = {stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "a"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_pl"] = {stem_K .. "i"} data.forms["acc_pl"] = {stem_K .. "i"} end end }) decl_data["wa"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["wa"], {__call = function(self, args, data) cat_type = "wa-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "o"} data.forms["acc_sg"] = {args[1] .. "o"} data.forms["gen_sg"] = {args[1] .. "wes"} data.forms["dat_sg"] = {args[1] .. "we"} data.forms["nom_pl"] = {args[1] .. "wa"} data.forms["acc_pl"] = {args[1] .. "wa"} data.forms["gen_pl"] = {args[1] .. "wo"} data.forms["dat_pl"] = {args[1] .. "won"} if args.g == 'n' then data.forms["nom_pl"] = {args[1] .. "o"} data.forms["acc_pl"] = {args[1] .. "o"} end end }) decl_data["wo"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["wo"], {__call = function(self, args, data) args.g='f' cat_type = "wō-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "wa"} data.forms["acc_sg"] = {args[1] .. "wa", args[1] .. "won"} data.forms["gen_sg"] = {args[1] .. "won"} data.forms["dat_sg"] = {args[1] .. "won"} data.forms["nom_pl"] = {args[1] .. "wa", args[1] .. "won"} data.forms["acc_pl"] = {args[1] .. "wa", args[1] .. "won"} data.forms["gen_pl"] = {args[1] .. "wono"} data.forms["dat_pl"] = {args[1] .. "won"} end }) decl_data["i"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["nomut"] = {}, ["w"] = {}, ["gender"] = {alias_of = "g"}, ["weight"] = {alias_of = "w"}, }, } setmetatable(decl_data["i"], {__call = function(self, args, data) cat_type = "i-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) umlauted_stem_C = umlaut(stem_C) umlauted_stem_K = umlaut(stem_K) devoiced_stem = degeminate(devoice(stem_C)) if args.w == 'l' or args.nomut == '1' then umlauted_stem_C = stem_C umlauted_stem_K = stem_K end data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {umlauted_stem_K .. "is"} data.forms["dat_sg"] = {umlauted_stem_K .. "i"} data.forms["nom_pl"] = {umlauted_stem_K .. "i"} data.forms["acc_pl"] = {umlauted_stem_K .. "i"} data.forms["gen_pl"] = {umlauted_stem_C .. "o"} data.forms["dat_pl"] = {umlauted_stem_K .. "in", umlauted_stem_C .. "on"} if args.w == 'l' then data.forms["nom_sg"] = {umlauted_stem_K .. "i"} data.forms["acc_sg"] = {umlauted_stem_K .. "i"} end if args.g == 'f' then data.forms["gen_sg"] = {umlauted_stem_K .. "i"} end end }) decl_data["u"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["nomut"] = {}, ["w"] = {}, ["gender"] = {alias_of = "g"}, ["weight"] = {alias_of = "w"}, }, } setmetatable(decl_data["u"], {__call = function(self, args, data) cat_type = "u-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) umlauted_stem_C = umlaut(stem_C) umlauted_stem_K = umlaut(stem_K) devoiced_stem = degeminate(devoice(stem_C)) if args.w == 'l' or args.nomut == '1' then umlauted_stem_C = stem_C umlauted_stem_K = stem_K end data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {umlauted_stem_K .. "is"} data.forms["dat_sg"] = {umlauted_stem_K .. "i"} data.forms["nom_pl"] = {umlauted_stem_K .. "i"} data.forms["acc_pl"] = {umlauted_stem_K .. "i"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.w == 'l' then data.forms["nom_sg"] = {stem_C .. "o"} data.forms["acc_sg"] = {stem_C .. "o"} end if args.g == 'f' then data.forms["gen_sg"] = {umlauted_stem_K .. "i"} end end }) decl_data["an"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["an"], {__call = function(self, args, data) cat_type = "an-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) data.forms["nom_sg"] = {stem_C .. "o"} data.forms["acc_sg"] = {stem_C .. "on"} data.forms["gen_sg"] = {stem_K .. "in"} data.forms["dat_sg"] = {stem_K .. "in"} data.forms["nom_pl"] = {stem_C .. "on"} data.forms["acc_pl"] = {stem_C .. "on"} data.forms["gen_pl"] = {stem_C .. "ono"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_sg"] = {stem_C .. "a"} data.forms["acc_sg"] = {stem_C .. "a"} data.forms["nom_pl"] = {stem_C .. "on", stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "on", stem_C .. "a"} end end }) decl_data["in"] = { params = { [1] = {}, }, } setmetatable(decl_data["in"], {__call = function(self, args, data) args.g='f' args.nopl='1' cat_type = "īn-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "i"} data.forms["acc_sg"] = {args[1] .. "i"} data.forms["gen_sg"] = {args[1] .. "i"} data.forms["dat_sg"] = {args[1] .. "i"} end }) decl_data["cons"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["cons"], {__call = function(self, args, data) data.decl_type = "consonant stem" stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {devoiced_stem} data.forms["acc_pl"] = {devoiced_stem} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} -- table.insert(data.categories, "Old Dutch consonant stem nouns") end }) decl_data["r"] = { params = { [1] = {}, }, } setmetatable(decl_data["r"], {__call = function(self, args, data) data.decl_type = "r-stem" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1]} data.forms["dat_sg"] = {args[1]} data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} data.forms["gen_pl"] = {args[1] .. "o"} data.forms["dat_pl"] = {args[1] .. "on"} -- table.insert(data.categories, "Old Dutch r-stem nouns") end }) decl_data["z"] = { params = { [1] = {}, }, } setmetatable(decl_data["z"], {__call = function(self, args, data) data.decl_type = "z-stem" stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {stem_K .. "ir"} data.forms["acc_pl"] = {stem_K .. "ir"} data.forms["gen_pl"] = {stem_K .. "iro"} data.forms["dat_pl"] = {stem_K .. "iron"} -- table.insert(data.categories, "Old Dutch z-stem nouns") end }) decl_data["manual"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {}, [7] = {}, [8] = {}, ["type"] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["manual"], {__call = function(self, args, data) data.decl_type = "" .. args.type .. "" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[2]} data.forms["gen_sg"] = {args[3]} data.forms["dat_sg"] = {args[4]} data.forms["nom_pl"] = {args[5]} data.forms["acc_pl"] = {args[6]} data.forms["gen_pl"] = {args[7]} data.forms["dat_pl"] = {args[8]} end }) -- The main entry point for automatic declension. function export.show(frame) local parent_args = frame:getParent().args local decl_type = (frame.args["decl"] or parent_args["decl"]) or "a" if not decl_data[decl_type] then error("Unknown declension '" .. decl_type .. "'") end local data = {forms = {}, categories = {}} data.head = parent_args["head"] or nil local args = require("Module:parameters").process(parent_args, decl_data[decl_type].params, true) -- Override for templates if not args[1] then setmetatable(args, {__index = function(self, key) return "{{{" .. key .. "}}}" end }) end -- Generate the forms if parent_args.irr then table.insert(data.categories, "နာမ်ဒါတ်တြေံမဗၠေတ်မံၚ်နကဵုအတိုၚ်ပကတိဂမၠိုၚ်") if decl_data.irregular[parent_args.irr] then decl_data.irregular[parent_args.irr](data) else decl_data[decl_type](args, data) end else decl_data[decl_type](args, data) end -- Make the table if args.nopl=='1' then return make_table_nopl(data) else return make_table(data) end end -- The main entry point for manual declension. function export.show_manual(frame) local parent_args = frame:getParent().args local params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {}, [7] = {}, [8] = {}, ["head"] = {}, -- currently ignored } local data = {forms = {}, categories = {}} local args = require("Module:parameters").process(parent_args, params) local function split(arg) return arg and mw.text.split(arg, "%s*,%s*") or nil end data.forms.nom_sg = split(args[1]) data.forms.nom_pl = split(args[2]) data.forms.acc_sg = split(args[3]) data.forms.acc_pl = split(args[4]) data.forms.gen_sg = split(args[5]) data.forms.gen_pl = split(args[6]) data.forms.dat_sg = split(args[7]) data.forms.dat_pl = split(args[8]) data.decl_type = "irregular" -- Make the table if args.nopl=='1' then return make_table_nopl(data) else return make_table(data) end end function make_table(data) local function show_form(form) if not form then return "—" end local ret = {} for key, subform in ipairs(form) do if mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and subform ~= "—" then subform = "*" .. subform end table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end local function repl(param) if param == "decl_type" then return data.decl_type else return show_form(data.forms[param]) end end local wikicode = [=[ <div class="NavFrame" style="width: 30em"> <div class="NavHead" style="">မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{{nom_sg}}} ({{{decl_type}}})</div> <div class="NavContent"> {| style="background:var(--wikt-palette-palecyan); text-align:center; width:100%" cellpadding="0" cellspacing="1" class="inflection-table" |- ! style="width: 20%; background:var(--wikt-palette-mint)" colspan="1" | '''ကိစ္စ''' ! style="width: 40%; background:var(--wikt-palette-mint)" colspan="1" | ကိုန်ဨကဝုစ် ! style="width: 40%; background:var(--wikt-palette-mint)" colspan="1" | plural |- ! style="background:var(--wikt-palette-lightergrey)" | မဒုၚ်ယၟု | style="background:var(--wikt-palette-paleblue)" | {{{nom_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{nom_pl}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{acc_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{acc_pl}}} |- !style="background:var(--wikt-palette-lightergrey)" | ဗဳဇဂကူ | style="background:var(--wikt-palette-paleblue)" | {{{gen_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{gen_pl}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ပြကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{dat_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{dat_pl}}} |}</div></div>]=] return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang) end function make_table_nopl(data) local function show_form(form) if not form then return "—" end local ret = {} for key, subform in ipairs(form) do if mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and subform ~= "—" then subform = "*" .. subform end table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end local function repl(param) if param == "decl_type" then return data.decl_type else return show_form(data.forms[param]) end end local wikicode = [=[ <div class="NavFrame" style="width: 30em"> <div class="NavHead" style="">မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{{nom_sg}}} ({{{decl_type}}} - no plural)</div> <div class="NavContent"> {| style="background:var(--wikt-palette-palecyan); text-align:center; width:100%" cellpadding="0" cellspacing="1" class="inflection-table" |- ! style="width: 30%; background:var(--wikt-palette-mint)" colspan="1" | '''ကိစ္စ''' ! style="width: 70%; background:var(--wikt-palette-mint)" colspan="1" | ကိုန်ဨကဝုစ် |- ! style="background:var(--wikt-palette-lightergrey)" | မဒုၚ်ယၟု | style="background:var(--wikt-palette-paleblue)" | {{{nom_sg}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{acc_sg}}} |- !style="background:var(--wikt-palette-lightergrey)" | ဗဳဇဂကူ | style="background:var(--wikt-palette-paleblue)" | {{{gen_sg}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ပြကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{dat_sg}}} |}</div></div>]=] return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang) end return export nxswn6l5q7nuhtbrkq1cg07t3gqmzoe 397454 397450 2026-06-24T18:59:43Z 咽頭べさ 33 397454 Scribunto text/plain local export = {} local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("odt") local decl_data = {} local function devoice(stem) stem = mw.ustring.gsub(stem, "ng$", "nc") stem = mw.ustring.gsub(stem, "d$", "t") stem = mw.ustring.gsub(stem, "b$", "p") stem = mw.ustring.gsub(stem, "v$", "f") stem = mw.ustring.gsub(stem, "z$", "s") return stem end local function umlaut(stem) subStr = string.sub(stem, -4, -1) if string.find(subStr, "ie") then stem = stem.gsub(stem, "ie", "iu") end if string.find(subStr, "e") and not string.find(subStr, "ei") then stem = stem.gsub(stem, "e", "i") end if string.find(subStr, "a") then stem = stem.gsub(stem, "a", "e") end if string.find(subStr, "o") and not string.find(stem, "uo") then stem = stem.gsub(stem, "o", "u") end stem = mw.ustring.gsub(stem, "ce", "ke") stem = mw.ustring.gsub(stem, "ci", "ki") return stem end local function C_to_K(stem) stem = mw.ustring.gsub(stem, "cc$", "ck") stem = mw.ustring.gsub(stem, "c$", "k") stem = mw.ustring.gsub(stem, "z$", "c") return stem end local function K_to_C(stem) stem = mw.ustring.gsub(stem, "ck$", "cc") stem = mw.ustring.gsub(stem, "k$", "c") return stem end local function degeminate(stem) stem = mw.ustring.gsub(stem, "([bcdfghjklmnprstvwzþ])%1$", "%1") stem = mw.ustring.gsub(stem, "ck$", "k") return stem end local function categorize(gender) if gender == 'm' then cat_gender='ပုလ္လိၚ်' elseif gender == 'f' then cat_gender='ဣတ္တိလိၚ်' elseif gender == 'n' then cat_gender='နပုလ္လိၚ်' else cat_gender='ပုလ္လိၚ်' -- error("Unrecognized gender '" .. gender .. "'. Only masculine ('m'), feminine ('f') or neuter ('n')") end return cat_gender end decl_data["a"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["a"], {__call = function(self, args, data) cat_type = "a-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "a"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_pl"] = {devoiced_stem} data.forms["acc_pl"] = {devoiced_stem} end end }) decl_data["o"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["o"], {__call = function(self, args, data) args.g='f' cat_type = "ō/ōn-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "a", args[1] .. "on"} data.forms["gen_sg"] = {args[1] .. "on"} data.forms["dat_sg"] = {args[1] .. "on"} data.forms["nom_pl"] = {args[1] .. "a", args[1] .. "on"} data.forms["acc_pl"] = {args[1] .. "a", args[1] .. "on"} data.forms["gen_pl"] = {args[1] .. "ono"} data.forms["dat_pl"] = {args[1] .. "on"} end }) decl_data["ja"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["ja"], {__call = function(self, args, data) cat_type = "ja-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) data.forms["nom_sg"] = {stem_K .. "i"} data.forms["acc_sg"] = {stem_K .. "i"} data.forms["gen_sg"] = {stem_K .. "is"} data.forms["dat_sg"] = {stem_K .. "i"} data.forms["nom_pl"] = {stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "a"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_pl"] = {stem_K .. "i"} data.forms["acc_pl"] = {stem_K .. "i"} end end }) decl_data["wa"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["wa"], {__call = function(self, args, data) cat_type = "wa-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "o"} data.forms["acc_sg"] = {args[1] .. "o"} data.forms["gen_sg"] = {args[1] .. "wes"} data.forms["dat_sg"] = {args[1] .. "we"} data.forms["nom_pl"] = {args[1] .. "wa"} data.forms["acc_pl"] = {args[1] .. "wa"} data.forms["gen_pl"] = {args[1] .. "wo"} data.forms["dat_pl"] = {args[1] .. "won"} if args.g == 'n' then data.forms["nom_pl"] = {args[1] .. "o"} data.forms["acc_pl"] = {args[1] .. "o"} end end }) decl_data["wo"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["wo"], {__call = function(self, args, data) args.g='f' cat_type = "wō-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "wa"} data.forms["acc_sg"] = {args[1] .. "wa", args[1] .. "won"} data.forms["gen_sg"] = {args[1] .. "won"} data.forms["dat_sg"] = {args[1] .. "won"} data.forms["nom_pl"] = {args[1] .. "wa", args[1] .. "won"} data.forms["acc_pl"] = {args[1] .. "wa", args[1] .. "won"} data.forms["gen_pl"] = {args[1] .. "wono"} data.forms["dat_pl"] = {args[1] .. "won"} end }) decl_data["i"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["nomut"] = {}, ["w"] = {}, ["gender"] = {alias_of = "g"}, ["weight"] = {alias_of = "w"}, }, } setmetatable(decl_data["i"], {__call = function(self, args, data) cat_type = "i-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) umlauted_stem_C = umlaut(stem_C) umlauted_stem_K = umlaut(stem_K) devoiced_stem = degeminate(devoice(stem_C)) if args.w == 'l' or args.nomut == '1' then umlauted_stem_C = stem_C umlauted_stem_K = stem_K end data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {umlauted_stem_K .. "is"} data.forms["dat_sg"] = {umlauted_stem_K .. "i"} data.forms["nom_pl"] = {umlauted_stem_K .. "i"} data.forms["acc_pl"] = {umlauted_stem_K .. "i"} data.forms["gen_pl"] = {umlauted_stem_C .. "o"} data.forms["dat_pl"] = {umlauted_stem_K .. "in", umlauted_stem_C .. "on"} if args.w == 'l' then data.forms["nom_sg"] = {umlauted_stem_K .. "i"} data.forms["acc_sg"] = {umlauted_stem_K .. "i"} end if args.g == 'f' then data.forms["gen_sg"] = {umlauted_stem_K .. "i"} end end }) decl_data["u"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["nomut"] = {}, ["w"] = {}, ["gender"] = {alias_of = "g"}, ["weight"] = {alias_of = "w"}, }, } setmetatable(decl_data["u"], {__call = function(self, args, data) cat_type = "u-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) umlauted_stem_C = umlaut(stem_C) umlauted_stem_K = umlaut(stem_K) devoiced_stem = degeminate(devoice(stem_C)) if args.w == 'l' or args.nomut == '1' then umlauted_stem_C = stem_C umlauted_stem_K = stem_K end data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {umlauted_stem_K .. "is"} data.forms["dat_sg"] = {umlauted_stem_K .. "i"} data.forms["nom_pl"] = {umlauted_stem_K .. "i"} data.forms["acc_pl"] = {umlauted_stem_K .. "i"} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} if args.w == 'l' then data.forms["nom_sg"] = {stem_C .. "o"} data.forms["acc_sg"] = {stem_C .. "o"} end if args.g == 'f' then data.forms["gen_sg"] = {umlauted_stem_K .. "i"} end end }) decl_data["an"] = { params = { [1] = {}, ["g"] = {}, ["nopl"] = {}, ["gender"] = {alias_of = "g"}, }, } setmetatable(decl_data["an"], {__call = function(self, args, data) cat_type = "an-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_gender .. " " .. cat_type .. "s") stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) data.forms["nom_sg"] = {stem_C .. "o"} data.forms["acc_sg"] = {stem_C .. "on"} data.forms["gen_sg"] = {stem_K .. "in"} data.forms["dat_sg"] = {stem_K .. "in"} data.forms["nom_pl"] = {stem_C .. "on"} data.forms["acc_pl"] = {stem_C .. "on"} data.forms["gen_pl"] = {stem_C .. "ono"} data.forms["dat_pl"] = {stem_C .. "on"} if args.g == 'n' then data.forms["nom_sg"] = {stem_C .. "a"} data.forms["acc_sg"] = {stem_C .. "a"} data.forms["nom_pl"] = {stem_C .. "on", stem_C .. "a"} data.forms["acc_pl"] = {stem_C .. "on", stem_C .. "a"} end end }) decl_data["in"] = { params = { [1] = {}, }, } setmetatable(decl_data["in"], {__call = function(self, args, data) args.g='f' args.nopl='1' cat_type = "īn-stem noun" cat_gender = categorize(args.g) data.decl_type = "" ..cat_gender.. " " ..cat_type.. "" -- table.insert(data.categories, "Old Dutch " .. cat_type .. "s") data.forms["nom_sg"] = {args[1] .. "i"} data.forms["acc_sg"] = {args[1] .. "i"} data.forms["gen_sg"] = {args[1] .. "i"} data.forms["dat_sg"] = {args[1] .. "i"} end }) decl_data["cons"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["cons"], {__call = function(self, args, data) data.decl_type = "consonant stem" stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {devoiced_stem} data.forms["acc_pl"] = {devoiced_stem} data.forms["gen_pl"] = {stem_C .. "o"} data.forms["dat_pl"] = {stem_C .. "on"} -- table.insert(data.categories, "Old Dutch consonant stem nouns") end }) decl_data["r"] = { params = { [1] = {}, }, } setmetatable(decl_data["r"], {__call = function(self, args, data) data.decl_type = "r-stem" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1]} data.forms["dat_sg"] = {args[1]} data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} data.forms["gen_pl"] = {args[1] .. "o"} data.forms["dat_pl"] = {args[1] .. "on"} -- table.insert(data.categories, "Old Dutch r-stem nouns") end }) decl_data["z"] = { params = { [1] = {}, }, } setmetatable(decl_data["z"], {__call = function(self, args, data) data.decl_type = "z-stem" stem_C = K_to_C(args[1]) stem_K = C_to_K(args[1]) devoiced_stem = devoice(degeminate(stem_C)) data.forms["nom_sg"] = {devoiced_stem} data.forms["acc_sg"] = {devoiced_stem} data.forms["gen_sg"] = {stem_K .. "es"} data.forms["dat_sg"] = {stem_K .. "e"} data.forms["nom_pl"] = {stem_K .. "ir"} data.forms["acc_pl"] = {stem_K .. "ir"} data.forms["gen_pl"] = {stem_K .. "iro"} data.forms["dat_pl"] = {stem_K .. "iron"} -- table.insert(data.categories, "Old Dutch z-stem nouns") end }) decl_data["manual"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {}, [7] = {}, [8] = {}, ["type"] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["manual"], {__call = function(self, args, data) data.decl_type = "" .. args.type .. "" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[2]} data.forms["gen_sg"] = {args[3]} data.forms["dat_sg"] = {args[4]} data.forms["nom_pl"] = {args[5]} data.forms["acc_pl"] = {args[6]} data.forms["gen_pl"] = {args[7]} data.forms["dat_pl"] = {args[8]} end }) -- The main entry point for automatic declension. function export.show(frame) local parent_args = frame:getParent().args local decl_type = (frame.args["decl"] or parent_args["decl"]) or "a" if not decl_data[decl_type] then error("Unknown declension '" .. decl_type .. "'") end local data = {forms = {}, categories = {}} data.head = parent_args["head"] or nil local args = require("Module:parameters").process(parent_args, decl_data[decl_type].params, true) -- Override for templates if not args[1] then setmetatable(args, {__index = function(self, key) return "{{{" .. key .. "}}}" end }) end -- Generate the forms if parent_args.irr then table.insert(data.categories, "နာမ်ဒါတ်တြေံမဗၠေတ်မံၚ်နကဵုအတိုၚ်ပကတိဂမၠိုၚ်") if decl_data.irregular[parent_args.irr] then decl_data.irregular[parent_args.irr](data) else decl_data[decl_type](args, data) end else decl_data[decl_type](args, data) end -- Make the table if args.nopl=='1' then return make_table_nopl(data) else return make_table(data) end end -- The main entry point for manual declension. function export.show_manual(frame) local parent_args = frame:getParent().args local params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {}, [7] = {}, [8] = {}, ["head"] = {}, -- currently ignored } local data = {forms = {}, categories = {}} local args = require("Module:parameters").process(parent_args, params) local function split(arg) return arg and mw.text.split(arg, "%s*,%s*") or nil end data.forms.nom_sg = split(args[1]) data.forms.nom_pl = split(args[2]) data.forms.acc_sg = split(args[3]) data.forms.acc_pl = split(args[4]) data.forms.gen_sg = split(args[5]) data.forms.gen_pl = split(args[6]) data.forms.dat_sg = split(args[7]) data.forms.dat_pl = split(args[8]) data.decl_type = "irregular" -- Make the table if args.nopl=='1' then return make_table_nopl(data) else return make_table(data) end end function make_table(data) local function show_form(form) if not form then return "—" end local ret = {} for key, subform in ipairs(form) do if mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and subform ~= "—" then subform = "*" .. subform end table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end local function repl(param) if param == "decl_type" then return data.decl_type else return show_form(data.forms[param]) end end local wikicode = [=[ <div class="NavFrame" style="width: 30em"> <div class="NavHead" style="">မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{{nom_sg}}} ({{{decl_type}}})</div> <div class="NavContent"> {| style="background:var(--wikt-palette-palecyan); text-align:center; width:100%" cellpadding="0" cellspacing="1" class="inflection-table" |- ! style="width: 20%; background:var(--wikt-palette-mint)" colspan="1" | '''ကိစ္စ''' ! style="width: 40%; background:var(--wikt-palette-mint)" colspan="1" | ကိုန်ဨကဝုစ် ! style="width: 40%; background:var(--wikt-palette-mint)" colspan="1" | ကိုန်ဗဟုဝစ် |- ! style="background:var(--wikt-palette-lightergrey)" | မဒုၚ်ယၟု | style="background:var(--wikt-palette-paleblue)" | {{{nom_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{nom_pl}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{acc_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{acc_pl}}} |- !style="background:var(--wikt-palette-lightergrey)" | ဗဳဇဂကူ | style="background:var(--wikt-palette-paleblue)" | {{{gen_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{gen_pl}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ပြကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{dat_sg}}} | style="background:var(--wikt-palette-paleblue)" | {{{dat_pl}}} |}</div></div>]=] return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang) end function make_table_nopl(data) local function show_form(form) if not form then return "—" end local ret = {} for key, subform in ipairs(form) do if mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and subform ~= "—" then subform = "*" .. subform end table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end local function repl(param) if param == "decl_type" then return data.decl_type else return show_form(data.forms[param]) end end local wikicode = [=[ <div class="NavFrame" style="width: 30em"> <div class="NavHead" style="">မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{{nom_sg}}} ({{{decl_type}}} - no plural)</div> <div class="NavContent"> {| style="background:var(--wikt-palette-palecyan); text-align:center; width:100%" cellpadding="0" cellspacing="1" class="inflection-table" |- ! style="width: 30%; background:var(--wikt-palette-mint)" colspan="1" | '''ကိစ္စ''' ! style="width: 70%; background:var(--wikt-palette-mint)" colspan="1" | ကိုန်ဨကဝုစ် |- ! style="background:var(--wikt-palette-lightergrey)" | မဒုၚ်ယၟု | style="background:var(--wikt-palette-paleblue)" | {{{nom_sg}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{acc_sg}}} |- !style="background:var(--wikt-palette-lightergrey)" | ဗဳဇဂကူ | style="background:var(--wikt-palette-paleblue)" | {{{gen_sg}}} |- ! style="background:var(--wikt-palette-lightergrey)" | ပြကမ္မကာရက | style="background:var(--wikt-palette-paleblue)" | {{{dat_sg}}} |}</div></div>]=] return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang) end return export ohvfkbgv558az0tke7e4fyc0af58u90 မဝ်ဂျူ:odt-decl-noun/doc 828 296242 397451 2026-06-24T18:49:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|odt}} </includeonly>" 397451 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|odt}} </includeonly> 9qu1zeabnrg19hpjzsr3l6rq6quzde8 ကဏ္ဍ:မဝ်ဂျူဒါတ်တြေံဂမၠိုၚ် 14 296243 397452 2026-06-24T18:53:15Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » '''မဝ်ဂ..." 397452 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » '''မဝ်ဂျူဂမၠိုၚ်''' :[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာဒါတ်တြေံ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။ [[ကဏ္ဍ:ဘာသာဒါတ်တြေံ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] 9veuwgc50xwq9ewro8ualhwerpfbchj ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲဒါတ်တြေံဂမၠိုၚ် 14 296244 397453 2026-06-24T18:55:51Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]]" 397453 wikitext text/x-wiki [[ကဏ္ဍ:မဝ်ဂျူဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] b21ohnxbeey5jlmiz1h5l7ugj5rbt3u ကဏ္ဍ:ထာမ်ပလိက်ဒါတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ် 14 296245 397455 2026-06-24T19:04:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]]" 397455 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] l8f78ldi5gpn5os7t33n3b623mr0s4h ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဒါတ်တြေံဂမၠိုၚ် 14 296246 397456 2026-06-24T19:06:36Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]]" 397456 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်ဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] s982fyndodyhfwthg93t1bjmjmen25w ကဏ္ဍ:နာမ်ပုလ္လိၚ်ဒါတ်တြေံဂမၠိုၚ် 14 296247 397457 2026-06-24T19:11:55Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » :ကဏ္ဍ:..." 397457 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကဒါတ်တြေံဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ဒါတ်တြေံဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] » [[:ကဏ္ဍ:နာမ်ဒါတ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ဗက်အလိုက်လိၚ်ဂမၠိုၚ်]] »'''ပုလ္လိၚ်ဂမၠိုၚ်''' :နာမ်ဒါတ်တြေံမဆေၚ်စပ်ကဵုလိၚ်တြုံ၊ ဥပမာ ဆေၚ်စပ်ကဵုကဏ္ဍလုပ်အဝေါၚ်လိၚ်အတေံ (အကြာတၞဟ်ခြာအရာမွဲမွဲအဂှ်) မက္တဵုဒှ်ပုလ္လိၚ်ဂမၠိုၚ်။ [[ကဏ္ဍ:နာမ်ဒါတ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ်|ပ]][[ကဏ္ဍ:နာမ်ပုလ္လိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] l6vmvmvzq3c6l21iqrtv3wwqdl8nmrs ကဏ္ဍ:နာမ်ဒါတ်တြေံဗက်အလိုက်လိၚ်ဂမၠိုၚ် 14 296248 397458 2026-06-24T19:14:29Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » :ကဏ္ဍ:..." 397458 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်တြေံ|ဒါတ်တြေံ]] » [[:ကဏ္ဍ:ဝေါဟာအဓိကဒါတ်တြေံဂမၠိုၚ်|ဝေါဟာတံသ္ဇိုၚ်]] » [[:ကဏ္ဍ:နာမ်ဒါတ်တြေံဂမၠိုၚ်|နာမ်ဂမၠိုၚ်]] »'''ဗက်အလိုက်လိၚ်ဂမၠိုၚ်''' :နာမ်ဒါတ်တြေံမဂကောံလဝ်နူကဵုဆေၚ်စပ်ကဵုလိၚ်ပွမတုဲဒှ်နကဵုအတေံ။ [[ကဏ္ဍ:နာမ်ဒါတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:နာမ်နူကဵုလိၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဒ]] 9acpeajn1ywz5ya397jqxlthkl6q7e0 ကဏ္ဍ:ကာရန်:သပုၚ်/abo 14 296249 397459 2026-06-24T19:20:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာသပုၚ်|သပုၚ်]] » :ကဏ္ဍ:ကာရန်:..." 397459 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာသပုၚ်|သပုၚ်]] » [[:ကဏ္ဍ:ကာရန်:သပုၚ်|ကာရန်ဂမၠိုၚ်]] » -abo :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာသပုၚ်|သပုၚ်]]မနွံကာရန် abo ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:သပုၚ်|abo]] 62ke1lghk6mglk9j9juqtcybh19he41 ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ/abu 14 296250 397460 2026-06-24T19:22:23Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]] » :ကဏ္ဍ:..." 397460 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]] » [[:ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ|ကာရန်ဂမၠိုၚ်]] » -abu :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]]မနွံကာရန် [[ကာရန်:ပဝ်တူဂြဳ/abu|-abu]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ|abu]] 21ccd6jsokror3nzx6pz88nra9fepki ကာရန်:ပဝ်တူဂြဳ/abu 106 296251 397461 2026-06-24T19:25:49Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|pt|a|bu}} ==ဗွဟ်ရမ္သာၚ်== * '''-abo''': ** {{IPA|pt|[ˈa.bu]|a=Brazil}} ** {{IPA|pt|[ˈa.βu]|a=Portugal}} * '''-avo''': ** {{IPA|pt|[ˈa.βu]|a=Northern Portugal}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|pt|avo}} {{a|pt|Northern Portugal}} * {{l|pt|brabo}} * {{l|pt|bravo}} {{a|pt|Northern Portugal}} * {{l|pt|cabo}} * {{l|pt|chavo}}..." 397461 wikitext text/x-wiki {{rhymes nav|pt|a|bu}} ==ဗွဟ်ရမ္သာၚ်== * '''-abo''': ** {{IPA|pt|[ˈa.bu]|a=Brazil}} ** {{IPA|pt|[ˈa.βu]|a=Portugal}} * '''-avo''': ** {{IPA|pt|[ˈa.βu]|a=Northern Portugal}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|pt|avo}} {{a|pt|Northern Portugal}} * {{l|pt|brabo}} * {{l|pt|bravo}} {{a|pt|Northern Portugal}} * {{l|pt|cabo}} * {{l|pt|chavo}} {{a|pt|Northern Portugal}} * {{l|pt|cravo}} {{a|pt|Northern Portugal}} * {{l|pt|favo}} {{a|pt|Northern Portugal}} * {{l|pt|gabo}} * {{l|pt|gravo}} * {{l|pt|lavo}} * {{l|pt|nabo}} * {{l|pt|rabo}} * {{l|pt|travo}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|pt|acabo}} * {{l|pt|desabo}} * {{l|pt|diabo}} * {{l|pt|Diabo}} * {{l|pt|lavabo}} * {{l|pt|nababo}} * {{l|pt|quiabo}} {{rhyme-bottom}} k49cj1z3dc8af8p5ky3rvvu8x28e9li ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ/avu 14 296252 397462 2026-06-24T19:27:59Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]] » :ကဏ္ဍ:..." 397462 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]] » [[:ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ|ကာရန်ဂမၠိုၚ်]] » -avu :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာပဝ်တူဂြဳ|ပဝ်တူဂြဳ]]မနွံကာရန် [[ကာရန်:ပဝ်တူဂြဳ/avu|-avu]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:ပဝ်တူဂြဳ|avu]] q3mq7rwpryyybr53abrur1cmmr2suax ကာရန်:ပဝ်တူဂြဳ/avu 106 296253 397463 2026-06-24T19:31:00Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|pt|a|vu}} ==ဗွဟ်ရမ္သာၚ်== * '''-avo''': {{pt-IPA|-avo}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|pt|avo}} * {{l|pt|bravo}} * {{l|pt|cavo}} * {{l|pt|chavo}} * {{l|pt|cravo}} * {{l|pt|favo}} * {{l|pt|gravo}} * {{l|pt|lavo}} * {{l|pt|travo}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|pt|agravo}} * {{l|pt|centavo}} *..." 397463 wikitext text/x-wiki {{rhymes nav|pt|a|vu}} ==ဗွဟ်ရမ္သာၚ်== * '''-avo''': {{pt-IPA|-avo}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|pt|avo}} * {{l|pt|bravo}} * {{l|pt|cavo}} * {{l|pt|chavo}} * {{l|pt|cravo}} * {{l|pt|favo}} * {{l|pt|gravo}} * {{l|pt|lavo}} * {{l|pt|travo}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|pt|agravo}} * {{l|pt|centavo}} * {{l|pt|conchavo}} * {{l|pt|depravo}} * {{l|pt|desbravo}} * {{l|pt|destravo}} * {{l|pt|encravo}} * {{l|pt|entravo}} * {{l|pt|escavo}} * {{l|pt|escravo}} * {{l|pt|eslavo}} * {{l|pt|Gustavo}} * {{l|pt|oitavo}} * {{l|pt|Olavo}} {{rhyme-bottom}} ===ဝဏ္ဏပိ=== {{rhyme-top}} * {{l|pt|jugoslavo}} {{rhyme-bottom}} ===ဝဏ္ဏပန်=== {{rhyme-top}} * {{l|pt|escandinavo}} * {{l|pt|iugoslavo}} {{rhyme-bottom}} re1s1c1kg96pjywv4hjwduwx0gklfob ကဏ္ဍ:ကာရန်:အဳတခ်လဳ/avo 14 296254 397464 2026-06-24T19:35:39Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » :ကဏ္ဍ:ကာ..." 397464 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » [[:ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|ကာရန်ဂမၠိုၚ်]] » -avo :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]]မနွံကာရန် [[ကာရန်:အဳတခ်လဳ/avo|-avo]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|avu]] rj9wjil0qk1qounfluxtw8uecx479yz ကာရန်:အဳတခ်လဳ/avo 106 296255 397465 2026-06-24T19:38:11Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|it|a|vo}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.vo/}} * {{hyphenation|it|-à|vo}} ==ကာရန်ဂမၠိုၚ်== ===လိက်သမ္တီ=== * All the first-person singular imperfect indicative inflected forms of regular verbs in {{m|it|-are}} rhyme with words on this page. ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE s..." 397465 wikitext text/x-wiki {{rhymes nav|it|a|vo}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.vo/}} * {{hyphenation|it|-à|vo}} ==ကာရန်ဂမၠိုၚ်== ===လိက်သမ္တီ=== * All the first-person singular imperfect indicative inflected forms of regular verbs in {{m|it|-are}} rhyme with words on this page. ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|avo}} * {{l|it|biavo}} * {{l|it|bravo}} * {{l|it|cavo}} * {{l|it|chiavo}} * {{l|it|clavo}} * {{l|it|davo}} * {{l|it|favo}} * {{l|it|flavo}} * {{l|it|gravo}} * {{l|it|lavo}} * {{l|it|pravo}} * {{l|it|sbavo}} * {{l|it|scavo}} * {{l|it|schiavo}} * {{l|it|sgravo}} * {{l|it|slavo}} * {{l|it|stavo}} * {{l|it|zuavo}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|aggravo}} * {{l|it|amavo}} * {{l|it|andavo}} * {{l|it|batavo}} * {{l|it|cercavo}} * {{l|it|dilavo}} * {{l|it|disgravo}} * {{l|it|escavo}} * {{l|it|fidavo}} * {{l|it|giocavo}} * {{l|it|guardavo}} * {{l|it|gustavo}} * {{l|it|Gustavo}} * {{l|it|ignavo}} * {{l|it|imbavo}} * {{l|it|incavo}} * {{l|it|odiavo}} * {{l|it|ottavo}} * {{l|it|parlavo}} * {{l|it|pensavo}} * {{l|it|proavo}} * {{l|it|provavo}} * {{l|it|ricavo}} * {{l|it|rilavo}} * {{l|it|sbagliavo}} * {{l|it|scherzavo}} * {{l|it|sognavo}} * {{l|it|speravo}} * {{l|it|trovavo}} {{rhyme-bottom}} ===ဝဏ္ဏပိ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|alleavo}} * {{l|it|ascoltavo}} * {{l|it|aspettavo}} * {{l|it|baltoslavo}} * {{l|it|camminavo}} * {{l|it|iugoslavo}} * {{l|it|meritavo}} * {{l|it|passacavo}} * {{l|it|protoslavo}} * {{l|it|riaggravo}} * {{l|it|scandinavo}} * {{l|it|sopraggravo}} {{rhyme-bottom}} ===ဝဏ္ဏပန်=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|desideravo}} * {{l|it|dimenticavo}} * {{l|it|equiparavo}} * {{l|it|immaginavo}} {{rhyme-bottom}} ===ဝဏ္ဏမသုန်=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|anestetizzavo}} {{rhyme-bottom}} ===ဝဏ္ဏတရဴ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|it|americanizzavo}} * {{l|it|antropomorfizzavo}} {{rhyme-bottom}} hxyc0xvnk6w4c6bzu9xq4f7jb5jv1wf gravo- 0 296256 397466 2026-06-24T19:43:13Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|gravo|gravó|gravò}} =={{=en=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{enPR|gräʹvō|a=RP,UK}}, {{IPA|en|/ˈɡɹɑːvəʊ/}} ===အဆက်ဂတ=== {{en-prefix}} # တံၚ်ဂြဲ။ ===အဆက်ဂတ=== {{en-prefix}} # ပုတ်။" 397466 wikitext text/x-wiki {{also|gravo|gravó|gravò}} =={{=en=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{enPR|gräʹvō|a=RP,UK}}, {{IPA|en|/ˈɡɹɑːvəʊ/}} ===အဆက်ဂတ=== {{en-prefix}} # တံၚ်ဂြဲ။ ===အဆက်ဂတ=== {{en-prefix}} # ပုတ်။ fsdeyazlr35mhlhzyh8gv8hrv6u07ja ထာမ်ပလိက်:en-prefix/documentation 10 296257 397468 2026-06-24T19:45:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template generates a headword line for English prefix entries, and adds them to [[:Category:English prefixes]]. It should be used in the English language section, right below the ===Prefix=== header: <pre>===Prefix===&#xA;{{en-prefix}}</pre> This template does not take any parameters. {{hwcat}}" 397468 wikitext text/x-wiki {{documentation subpage}} This template generates a headword line for English prefix entries, and adds them to [[:Category:English prefixes]]. It should be used in the English language section, right below the ===Prefix=== header: <pre>===Prefix===&#xA;{{en-prefix}}</pre> This template does not take any parameters. {{hwcat}} 6i5efht6b2zo1k6e7ch8sgf5100fo2l gravò 0 296258 397470 2026-06-24T19:48:05Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|gravo|gravó|gravo-}} ==အဳတလဳ== ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|gravare||3|s|phis}}" 397470 wikitext text/x-wiki {{also|gravo|gravó|gravo-}} ==အဳတလဳ== ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|gravare||3|s|phis}} rkfg6sbouno68ky79l67qtap76vh9ph ဗီုပြၚ်သိုၚ်တၟိ:ဒေတ်တာဗေတာံ-အခိုက်ကၞာ/maẓV- 118 296259 397471 2026-06-25T01:15:10Z Hiyuune 1535 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==ဒေတ်တာဗေတာံ-အခိုက်ကၞာ== ====နာမ်==== {{head|dra-pro|noun}} # [[မုဲ]]။ #: {{syn|dra-pro|*mīn}} ===မဒုင်လွဳစ=== * Central: ** {{desc|pci|ମାଡି}} ** {{desc|gdb|మరి}} * North: ** {{desc|kru|मस्सा}} ** {{desc|kmj|मसु}} * Southern: ** Tamil-Kannada: *** {{desc|kn|ಮರ್ಚು|ಮಚ್ಚು|ಮ..." 397471 wikitext text/x-wiki {{reconstructed}} ==ဒေတ်တာဗေတာံ-အခိုက်ကၞာ== ====နာမ်==== {{head|dra-pro|noun}} # [[မုဲ]]။ #: {{syn|dra-pro|*mīn}} ===မဒုင်လွဳစ=== * Central: ** {{desc|pci|ମାଡି}} ** {{desc|gdb|మరి}} * North: ** {{desc|kru|मस्सा}} ** {{desc|kmj|मसु}} * Southern: ** Tamil-Kannada: *** {{desc|kn|ಮರ್ಚು|ಮಚ್ಚು|ಮಡು}} *** Tamil-Kodagu: **** {{desc|kfa|ಮತ್ತು}} **** Tamil-Malayalam: ***** {{desc|ml|മഴു}} ***** {{desc|ta|மழு}} ** {{desc|tcy|ಮಡು}} * South-Central: ** {{desc|gon|మర్స్|మరస్|మరసు|మగ్సు}} ** {{desc|te|మచ్చుకత్తి|మడ్డుకత్తి}} [[en:Reconstruction:Proto-Dravidian/maẓV-]] [[vi:Từ tái tạo:Tiếng Dravida nguyên thủy/maẓV-]] i0sd3b988gj3r3rdw7bbu5jeg6axe4l 397472 397471 2026-06-25T01:15:28Z Hiyuune 1535 397472 wikitext text/x-wiki {{reconstructed}} ==ဒေတ်တာဗေတာံ-အခိုက်ကၞာ== ===နာမ်=== {{head|dra-pro|noun}} # [[မုဲ]]။ #: {{syn|dra-pro|*mīn}} ====မဒုင်လွဳစ==== * Central: ** {{desc|pci|ମାଡି}} ** {{desc|gdb|మరి}} * North: ** {{desc|kru|मस्सा}} ** {{desc|kmj|मसु}} * Southern: ** Tamil-Kannada: *** {{desc|kn|ಮರ್ಚು|ಮಚ್ಚು|ಮಡು}} *** Tamil-Kodagu: **** {{desc|kfa|ಮತ್ತು}} **** Tamil-Malayalam: ***** {{desc|ml|മഴു}} ***** {{desc|ta|மழு}} ** {{desc|tcy|ಮಡು}} * South-Central: ** {{desc|gon|మర్స్|మరస్|మరసు|మగ్సు}} ** {{desc|te|మచ్చుకత్తి|మడ్డుకత్తి}} [[en:Reconstruction:Proto-Dravidian/maẓV-]] [[vi:Từ tái tạo:Tiếng Dravida nguyên thủy/maẓV-]] ee7muo4dgc1pe0xs7l954d93bdhgqud