ဝိက်ရှေန်နရဳ 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.7 case-sensitive မဳဒဳယာ တၟေင် ဓရီုကျာ ညးလွပ် ညးလွပ် ဓရီုကျာ ဝိက်ရှေန်နရဳ ဝိက်ရှေန်နရဳ ဓရီုကျာ ဝှာင် ဝှာင် ဓရီုကျာ မဳဒဳယာဝဳကဳ မဳဒဳယာဝဳကဳ ဓရီုကျာ ထာမ်ပလိက် ထာမ်ပလိက် ဓရီုကျာ ရီု ရီု ဓရီုကျာ ကဏ္ဍ ကဏ္ဍ ဓရီုကျာ အဆက်လက္ကရဴ အဆက်လက္ကရဴ ဓရီုကျာ ကာရန် ကာရန် ဓရီုကျာ အဘိဓာန် အဘိဓာန် ဓရီုကျာ ဗီုပြၚ်သိုၚ်တၟိ ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ TimedText TimedText talk မဝ်ဂျူ မဝ်ဂျူ ဓရီုကျာ Event Event talk ထာမ်ပလိက်:deprecated lang param usage 10 763 397433 3286 2026-06-22T17:36:13Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ထာမ်ပလိက်:check deprecated lang param usage]] ဇရေင် [[ထာမ်ပလိက်:deprecated lang param usage]] 3286 wikitext text/x-wiki {{deprecated code|active={{#if:{{{lang|}}}|yes|no}}|text=deprecated use of {{para|lang}} parameter|tooltip=This template call uses the deprecated 'lang' parameter. Use '1' instead.|{{{1}}}}}<!-- --><noinclude>{{documentation}}</noinclude> nsym6z8ah5z53122s7pzrubji9ljwx8 မဝ်ဂျူ:category tree 828 1140 397439 397219 2026-06-22T17:58:06Z Intobesa.bot 1035 Bot: ဒၞာဲမလိက်သေံမသှ်ေဒၟံၚ်ကလေၚ်ဖပေၚ်စုတ်လိက်မန် 397439 Scribunto text/plain -- Prevent substitution. if mw.isSubsting() then return require("Module:unsubst") end local export = {} local category_tree_submodule_prefix = "Module:category tree/" local category_tree_styles_css = "Module:category tree/styles.css" local m_str_utils = require("Module:string utilities") local m_template_parser = require("Module:template parser") local m_utilities = require("Module:utilities") local ceil = math.ceil local class_else_type = m_template_parser.class_else_type local concat = table.concat local deep_copy = require("Module:table").deepCopy local full_url = mw.uri.fullUrl local insert = table.insert local is_callable = require("Module:fun").is_callable local log10 = math.log10 or require("Module:math").log10 local new_title = mw.title.new local pages_in_category = mw.site.stats.pagesInCategory local parse = m_template_parser.parse local remove_comments = require("Module:string/removeComments") local sort = table.sort local split = m_str_utils.split local string_compare = require("Module:string/compare") local trim = m_str_utils.trim local uupper = m_str_utils.upper local yesno = require("Module:yesno") local current_frame = mw.getCurrentFrame() local current_title = mw.title.getCurrentTitle() local namespace = current_title.namespace local poscatboiler_subsystem = "poscatboiler" local extra_args_error = "Extra arguments to {{((}}auto cat{{))}} are not allowed for this category." -- Mon logic local labelPatterns = { "ဝေါဟာ.-", "ဂၞန်သၚ်္ချာ", "နာမ်ပါ်ကၞာတ်", "ဖျေံလဝ်သန္နိဋ္ဌာန်.-", "အဆက်ဖျပ်စုတ်လက္ကရဴ.-", "ကၞာတ်အမှိက်", "ပစ္စဲ", "သမ္ဗန္ဓ", "အာမေဍိက်.-", "သၚ်္ကေတ.-", "ပွမထညောံ", "တံရိုဟ်", "အက္ခရ်", "ကြိယာ", "နာမ်", "နာမ်မကိတ်ညဳ", "ဝါကျ", "ဟဳရာဂန.-", "ကာတာကာနာ.-", "ဗီုရုပ်", "ပေါရာဏာံပေါရာဒါံ", "ချေန်ယု", "ဖါ်လေန်ဒရုန်", "အရေဝ်ဗေဗာန်.-", "ယၟု.-", "ယၟုဗဳဇဂကူ", "ပမာဏ.-", --မဒှ်မာသီု POS ကဵု topic "ပွမ.-", "အဆက်လက္ကရဴ", "မဝ်ဂျူ.-", "ထာမ်ပလိက်.-", } -- Generates a sortkey for a numeral `n`, adding leading zeroes to avoid the "1, 10, 2, 3" sorting problem. `max_n` is the greatest expected value of `n`, and is used to determine how many leading zeroes are needed. If not supplied, it defaults to the number of languages. function export.numeral_sortkey(n, max_n) max_n = max_n or require("Module:list of languages").count() return ("#%%0%dd"):format(ceil(log10(max_n + 1))):format(n) end function export.split_lang_label(title_text) local getByCanonicalName = require("Module:languages").getByCanonicalName local canonicalName, lang, label, pattern, label0 --[=[ cannot use this logic -- Progressively remove a word from the potential canonical name until it -- matches an actual canonical name. local words = split(title_text, " ", true) for i = #words - 1, 1, -1 do local lang = getByCanonicalName(concat(words, " ", 1, i)) if lang then return lang, concat(words, " ", i + 1) end end return nil, title_text --]=] -- Mon logic if title_text:find("^ဝေါဟာ") then -- ဗက်ကဆံၚ် "ပါ်" တိုန်ကၠာဟိုတ်နူမနွံဒၟံၚ်ကဏ္ဍ "မုက်လိက်ဒၞာဲ" canonicalName, label = mw.ustring.match(title_text, "^ဝေါဟာ(.-)(ပါ်.+)$") if not canonicalName then canonicalName, label = mw.ustring.match(title_text, "^ဝေါဟာ(.-)(ဒၞာဲ.+)$") end if canonicalName then label = "ဝေါဟာ" .. label lang = getByCanonicalName(canonicalName) else label = title_text lang = nil end elseif title_text:find("^စရၚ်") then -- ဗက်ကဆံၚ် "ပါ်" တိုန်ကၠာဟိုတ်နူမနွံဒၟံၚ်ကဏ္ဍ "မုက်လိက်ဒၞာဲ" canonicalName, label = mw.ustring.match(title_text, "^စရၚ်(.-)(ပါ်.+)$") if not canonicalName then canonicalName, label = mw.ustring.match(title_text, "^စရၚ်ဘာသာ(.-)(ဒၞာဲ.+)$") end if canonicalName then lang = getByCanonicalName(canonicalName) label = "စရၚ်" .. label else lang = nil label = title_text end else for _,pattern in ipairs(labelPatterns) do label0, canonicalName, label = mw.ustring.match(title_text, "^(" .. pattern .. ")ဘာသာ(.-)(ပါ်.+)$") if not canonicalName then label0, canonicalName, label = mw.ustring.match(title_text, "^(" .. pattern .. ")ဘာသာ(.-)(ဒၞာဲ.+)$") if not canonicalName then label0, canonicalName = mw.ustring.match(title_text, "^(" .. pattern .. ")ဘာသာ(.+)$") end end if canonicalName then label = (label0 or "") .. (label0 and label and "★" or "") .. (label or "") local canonicalName1, inScript = mw.ustring.match(canonicalName, "^(.+)(အပ္ဍဲအက္ခရ်.+)$") if canonicalName1 and inScript then canonicalName = canonicalName1 label = label .. inScript end lang = getByCanonicalName(canonicalName) break end end end if label and label:find(" $") then label = label:sub(1, -2) end --th; remove an ending space return lang, label end local function show_error(text) return require("Module:message box").maintenance( "red", "[[File:Codex icon Alert red.svg|40px|alt=alert]]", "ကဏ္ဍတဏအ်ဝွံမစၟတ်သမ္တီလဝ်ဟွံသေၚ်အပ္ဍဲကဏ္ဍတၞံဝိက်ရှေန်နရဳဂမၠိုၚ်", text ) end -- Show the text that goes at the very top right of the page. local function show_topright(current) return current.getTopright and current:getTopright() or nil end local function link_box(content) return ("<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: var(--wikt-palette-paleblue, #f9f9f9); border: 1px var(--border-color-base, #aaaaaa) solid; margin-top: -1px; padding: 5px; font-weight: bold;\">%s</div>"):format(content) end local function show_editlink(current) return link_box(("[%s စၟတ်သမ္တီပလေဝ်ဒါန်ကဏ္ဍ]"):format(tostring(full_url(current:getDataModule(), "action=edit")))) end function show_related_changes() local title = current_title.fullText return link_box(("[%s <span title=\"Recent edits and other changes to pages in %s\">အပြံၚ်လှာဲလက္ကရဴအိုတ်</span>]"):format( tostring(full_url("Special:RecentChangesLinked", { target = title, showlinkedto = 0, })), title )) end local function show_pagelist(current) local namespace = "namespace=" local info = current:getInfo() local lang_code = info.code if info.label == "citations" or info.label == "citations of undefined terms" then namespace = namespace .. "Citations" elseif lang_code then local lang = require("Module:languages").getByCode(lang_code, true, true) if lang then -- Proto-Norse (gmq-pro) is probably the only language with a code ending in -pro -- that's intended to have mostly non-reconstructed entries. if (lang_code:find("%-pro$") and lang_code ~= "gmq-pro") or lang:hasType("reconstructed") then namespace = namespace .. "ဗီုပြၚ်သိုၚ်တၟိ" elseif lang:hasType("appendix-constructed") then namespace = namespace .. "အဆက်လက္ကရဴ" end end elseif info.label:match("ထာမ်ပလိက်") then namespace = namespace .. "ထာမ်ပလိက်" elseif info.label:match("မဝ်ဂျူ") then namespace = namespace .. "မဝ်ဂျူ" elseif info.label:match("^ဝိက်ရှေန်နရဳ") or info.label:match("^မုက်လိက်") then namespace = "" end return ([=[ {| id="newest-and-oldest-pages" class="wikitable mw-collapsible" style="float: right; clear: both; margin: 0 0 .5em 1em;" ! Newest and oldest pages&nbsp; |- | id="recent-additions" style="font-size:0.9em;" | '''မုက်လိက်တၟိအိုတ်မပလေဝ်ဒါန်လဝ်နူ [[mw:Manual:Categorylinks table#cl_timestamp|ကဏ္ဍလေန်ပ္တိုန်တၟိ]]:''' %s |- | id="oldest-pages" style="font-size:0.9em;" | '''မုက်လိက်တြေံအိုတ်မပလေဝ်ဒါန်လဝ်လက္ကရဴအိုတ်:''' %s |}]=]):format( current_frame:extensionTag( "DynamicPageList", ([=[ category=%s %s count=10 mode=ordered ordermethod=categoryadd order=descending]=] ):format(current_title.text, namespace) ), current_frame:extensionTag( "DynamicPageList", ([=[ category=%s %s count=10 mode=ordered ordermethod=lastedit order=ascending]=] ):format(current_title.text, namespace) ) ) end -- Show navigational "breadcrumbs" at the top of the page. local function show_breadcrumbs(current) local steps = {} -- Start at the current label and move our way up the "chain" from child to parent, until we can't go further. while current do local category, display_name, nocap if type(current) == "string" then category = current display_name = current:gsub("^ကဏ္ဍ:", "") else if not current.getCategoryName then error("Internal error: Bad format in breadcrumb chain structure, probably a misformatted value for `parents`: " .. mw.dumpObject(current)) end category = "ကဏ္ဍ:" .. current:getCategoryName() display_name, nocap = current:getBreadcrumbName() end if not nocap then display_name = mw.getContentLanguage():ucfirst(display_name) end insert(steps, 1, ("[[:%s|%s]]"):format(category, display_name)) -- Move up the "chain" by one level. if type(current) == "string" then current = nil else current = current:getParents() end if current then current = current[1].name end end local templateStyles = require("Module:TemplateStyles")(category_tree_styles_css) local ol = mw.html.create("ol") for i, step in ipairs(steps) do local li = mw.html.create("li") if i ~= 1 then local span = mw.html.create("span") :attr("aria-hidden", "true") :addClass("ts-categoryBreadcrumbs-separator") :wikitext(" » ") li:node(span) end li:wikitext(step) ol:node(li) end return templateStyles .. tostring(mw.html.create("div") :attr("role", "navigation") :attr("aria-label", "Breadcrumb") :addClass("ts-categoryBreadcrumbs") :node(ol)) end local function show_also(current) local also = current._info.also if also and #also > 0 then return ('<div style="margin-top:-1em;margin-bottom:1.5em">%s</div>'):format(require("Module:also").main(also)) end return nil end -- Show a short description text for the category. local function show_description(current) return current.getDescription and current:getDescription() or nil end local function show_appendix(current) local appendix = current.getAppendix and current:getAppendix() return appendix and ("ယဝ်ရထပ်နွံပၟိက်မိက်ဂွံတီဏီတှ်ေ၊ ဆက်ဗဵုအာ [[%s]]."):format(appendix) or nil end local function sort_children(child1, child2) return string_compare(uupper(child1.sort), uupper(child2.sort)) end -- Show a list of child categories. local function show_children(current) local children = current.getChildren and current:getChildren() or nil if not children then return nil end sort(children, sort_children) local children_list = {} for _, child in ipairs(children) do local child_name, child_pagetitle = child.name if type(child_name) == "string" then child_pagetitle = child_name else child_pagetitle = "ကဏ္ဍ:" .. child_name:getCategoryName() end if new_title(child_pagetitle).exists then insert(children_list, ("* [[:%s]]: %s"):format( child_pagetitle, child.description or type(child_name) == "string" and child_name:gsub("^ကဏ္ဍ:", "") .. "." or child_name:getDescription("child") )) end end return concat(children_list, "\n") end -- Show a table of contents with links to each letter in the language's script. local function show_TOC(current) local titleText = current_title.text local inCategoryPages = pages_in_category(titleText, "pages") local inCategorySubcats = pages_in_category(titleText, "subcats") local TOC_type -- Compute type of table of contents required. if inCategoryPages > 2500 or inCategorySubcats > 2500 then TOC_type = "full" elseif inCategoryPages > 200 or inCategorySubcats > 200 then TOC_type = "normal" else -- No (usual) need for a TOC if all pages or subcategories can fit on one page; -- but allow this to be overridden by a custom TOC handler. TOC_type = "none" end if current.getTOC then local TOC_text = current:getTOC(TOC_type) if TOC_text ~= true then return TOC_text or nil end end if TOC_type ~= "none" then local templatename = current:getTOCTemplateName() local TOC_template if TOC_type == "full" then -- This category is very large, see if there is a "full" version of the TOC. local TOC_template_full = new_title(templatename .. "/full") if TOC_template_full.exists then TOC_template = TOC_template_full end end if not TOC_template then local TOC_template_normal = new_title(templatename) if TOC_template_normal.exists then TOC_template = TOC_template_normal end end if TOC_template then return current_frame:expandTemplate{title = TOC_template.text, args = {}} end end return nil end -- Show the "catfix" that adds language attributes and script classes to the page. local function show_catfix(current) local lang, sc = current:getCatfixInfo() return lang and m_utilities.catfix(lang, sc) or nil end -- Show the parent categories that the current category should be placed in. local function show_categories(current, categories) local parents = current.getParents and current:getParents() or nil if not parents then return nil end for _, parent in ipairs(parents) do local parent_name = parent.name local sortkey = type(parent.sort) == "table" and parent.sort:makeSortKey() or parent.sort if type(parent_name) == "string" then insert(categories, ("[[%s|%s]]"):format(parent_name, sortkey)) else insert(categories, ("[[ကဏ္ဍ:%s|%s]]"):format(parent_name:getCategoryName(), sortkey)) end end -- Also put the category in its corresponding "umbrella" or "by language" category. local umbrella = current:getUmbrella() if umbrella then -- FIXME: use a language-neutral sorting function like the Unicode Collation Algorithm. local sortkey = current._lang and current._lang:getCanonicalName() or current:getCategoryName() sortkey = require("Module:languages").getByCode("en", true):makeSortKey(sortkey) if type(umbrella) == "string" then insert(categories, ("[[%s|%s]]"):format(umbrella, sortkey)) else insert(categories, ("[[ကဏ္ဍ:%s|%s]]"):format(umbrella:getCategoryName(), sortkey)) end end -- Check for various unwanted parser functions, which should be integrated into the category tree data instead. -- Note: HTML comments shouldn't be removed from `content` until after this step, as they can affect the result. local content = current_title:getContent() if not content then -- This happens when using [[Special:ExpandTemplates]] to call {{auto cat}} on a nonexistent category page, -- which is needed by Benwing's create_wanted_categories.py script. return end local defaultsort, displaytitle, page_has_param for node in parse(content):iterate_nodes() do local node_class = class_else_type(node) if node_class == "ထာမ်ပလိက်" then local name = node:get_name() if name == "DEFAULTSORT:" and not defaultsort then insert(categories, "[[ကဏ္ဍ:Pages with DEFAULTSORT conflicts]]") defaultsort = true elseif name == "DISPLAYTITLE:" and not displaytitle then insert(categories,"[[ကဏ္ဍ:Pages with DISPLAYTITLE conflicts]]") displaytitle = true end elseif node_class == "parameter" and not page_has_param then insert(categories,"[[ကဏ္ဍ:Pages with raw triple-brace template parameters]]") page_has_param = true end end -- Check for raw category markup, which should also be integrated into the category tree data. content = remove_comments(content, "BOTH") local head = content:find("[[", 1, true) while head do local close = content:find("]]", head + 2, true) if not close then break end -- Make sure there are no intervening "[[" between head and close. local open = content:find("[[", head + 2, true) while open and open < close do head = open open = content:find("[[", head + 2, true) end local cat = content:sub(head + 2, close - 1) local colon = cat:match("^[ _\128-\244]*[Cc][Aa][Tt][EeGgOoRrYyကဏ္ဍ _\128-\244]*():") if colon then local pipe = cat:find("|", colon + 1, true) if pipe ~= #cat then local title = new_title(pipe and cat:sub(1, pipe - 1) or cat) if title and title.namespace == 14 then insert(categories,"[[ကဏ္ဍ:Categories with categories using raw markup]]") break end end end head = open end end local function generate_output(current) if current then for _, functionName in pairs{ "getBreadcrumbName", "getDataModule", "canBeEmpty", "getDescription", "getParents", "getChildren", "getUmbrella", "getAppendix", "getTOCTemplateName", } do if not is_callable(current[functionName]) then require("Module:debug").track{"category tree/missing function", "category tree/missing function/" .. functionName} end end end local boxes, display, categories = {}, {}, {} -- Categories should never show files as a gallery. insert(categories, "__NOGALLERY__") if current_frame:getParent():getTitle() == "ထာမ်ပလိက်:auto cat" then insert(categories, "[[ကဏ္ဍ:ကဏ္ဍပွမမကော်ခဴ ထာမ်ပလိက်:ဗ္ဂဲအဝ်တဝ်ဂမၠိုၚ်]]") end -- Check if the category is empty local totalPages = pages_in_category(current_title.text, "all") local hugeCategory = totalPages > 1000000 -- 1 million -- Categorize huge categories, as they cause DynamicPageList to time out and make the category inaccessible. if hugeCategory then insert(categories, "[[ကဏ္ဍ:ကဏ္ဍၝောံယာဲဂမၠိုၚ်]]") end -- Are the parameters valid? if not current then insert(categories, "[[ကဏ္ဍ:Categories that are not defined in the category tree]]") insert(categories, totalPages == 0 and "[[ကဏ္ဍ:ကဏ္ဍသၠးဒၟံၚ်ဂမၠိုၚ်]]" or nil) insert(display, show_error( "Double-check the category name for typos. <br>" .. "[[Special:Search/ကဏ္ဍ: " .. current_title.text:gsub("^.+:", ""):gsub(" ", "~2 ") .. '~2|Search existing categories]] to check if this category should be created under a different name (for example, "Fruits" instead of "Fruit"). <br>' .. "To request the definition of a new category in Wiktionary's category tree, please start a new topic at [[Wiktionary:Category and label treatment requests]].")) -- Exit here, as all code beyond here relies on current not being nil return concat(categories, "") .. concat(display, "\n\n"), true end -- Does the category have the correct name? local currentName = current:getCategoryName() local correctName = current_title.text == currentName if not correctName then insert(categories, "[[ကဏ္ဍ:ကဏ္ဍမနွံကဵုယၟုဟွံဒးရးဂမၠိုၚ်]]") insert(display, show_error(("Based on the data in the category tree, this category should be called '''[[:ကဏ္ဍ:%s]]'''။"):format(currentName))) end -- Add cleanup category for empty categories. local canBeEmpty = current:canBeEmpty() if canBeEmpty and correctName then insert(categories, " __EXPECTUNUSEDCATEGORY__") elseif totalPages == 0 then insert(categories, "[[ကဏ္ဍ:ကဏ္ဍသၠးဒၟံၚ်ဂမၠိုၚ်]]") end if current:isHidden() then insert(categories, "__HIDDENCAT__") end -- Put all the float-right stuff into a <div> that does not clear, so that float-left stuff like the breadcrumbs and -- description can go opposite the float-right stuff without vertical space. insert(boxes, "<div style=\"float: right;\">") insert(boxes, show_topright(current)) insert(boxes, show_editlink(current)) insert(boxes, show_related_changes()) -- Show pagelist, unless it's a huge category (since they can't use DynamicPageList - see above). --thwikt doesn't implement DynamicPageList yet --if not hugeCategory then -- insert(boxes, show_pagelist(current)) --end insert(boxes, "</div>") -- Generate the displayed information insert(display, show_breadcrumbs(current)) insert(display, show_also(current)) insert(display, show_description(current)) insert(display, show_appendix(current)) insert(display, show_children(current)) insert(display, show_TOC(current)) insert(display, show_catfix(current)) insert(display, '<br class="clear-both-in-vector-2022-only">') show_categories(current, categories) return concat(boxes, "\n") .. "\n" .. concat(display, "\n\n") .. concat(categories, "") end --[==[ List of handler functions that try to match the page name. A handler should return the name of a submodule to [[Module:category tree]] and an info table which is passed as an argument to the submodule. If a handler does not recognize the page name, it should return nil. Note that the order of handlers matters! ]==] local handlers = {} -- Thesaurus per-language category insert(handlers, function(title) local code, label = title:match("^အဘိဓာန်:(%l[%a-]*%a):(.+)") if code then return poscatboiler_subsystem, {label = title, raw = true} end end) -- Topic per-language category insert(handlers, function(title) local code, label = title:match("^(%l[%a-]*%a):(.+)") if code then return poscatboiler_subsystem, {label = title, raw = true} end end) -- Lect category e.g. for [[:ကဏ္ဍ:New Zealand English]] or [[:ကဏ္ဍ:Issime Walser]] insert(handlers, function(title, args) local lect = args.lect or args.dialect if lect ~= "" and yesno(lect, true) then -- Same as boolean in [[Module:parameters]]. return poscatboiler_subsystem, {label = title, args = args, raw = true} end end) -- poscatboiler per-language label, e.g. [Category:English non-lemma forms]] insert(handlers, function(title, args) local lang, label = export.split_lang_label(title) if not lang then return end local baseLabel, script = label:match("(.+)အပ္ဍဲအက္ခရ်(.-)$") if script and baseLabel ~= "ဝေါဟာ" then local scriptObj = require("Module:scripts").getByCanonicalName(script) if scriptObj then return poscatboiler_subsystem, {label = baseLabel, code = lang:getCode(), sc = scriptObj:getCode(), args = args} end end return poscatboiler_subsystem, {label = label, code = lang:getCode(), args = args} end) -- poscatboiler label umbrella category insert(handlers, function(title, args) local label = title:match("(.+)ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်$") if label then if label:find(" $") then label = label:sub(1, -2) end --th; remove an ending space -- The poscatboiler code will appropriately lowercase if needed. return poscatboiler_subsystem, {label = label, args = args} end end) -- poscatboiler raw handlers insert(handlers, function(title, args) return poscatboiler_subsystem, {label = title, args = args, raw = true} end) -- poscatboiler umbrella handlers without 'by language' insert(handlers, function(title, args) return poscatboiler_subsystem, {label = title, args = args} end) function export.show(frame) local args, other_args = require("Module:parameters").process(frame:getParent().args, { ["also"] = {type = "title", sublist = "comma without whitespace", namespace = 14} }, true) if args.also then for k, arg in next, args.also do args.also[k] = arg.prefixedText end end for k, arg in next, other_args do other_args[k] = trim(arg) end if namespace == 10 then -- Template return "(This template should be used on pages in the [[Help:Namespaces#Category|ကဏ္ဍ:]] namespace.)" elseif namespace ~= 14 then -- Category error("This template/module can only be used on pages in the [[mw:Help:Namespaces#Category|ကဏ္ဍ:]] namespace.") end local first_fail_args_handled, first_fail_cattext -- Go through each handler in turn. If a handler doesn't recognize the format of the category, it will return nil, -- and we will consider the next handler. Otherwise, it returns a template name and arguments to call it with, but -- even then, that template might return an error, and we need to consider the next handler. This happens, for -- example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of a language, so the poscatboiler -- per-language label handler fires and tries to find a label "Grosso, Brazil". This throws an error, and -- previously, this blocked fruther handler consideration, but now we check for the error and continue checking -- handlers; eventually, the topic umbrella handler will fire and correctly handle the category. for _, handler in ipairs(handlers) do -- Use a new title object and args table for each handler, to keep them isolated. local submodule, info = handler(current_title.text, deep_copy(other_args)) if submodule then info.also = deep_copy(args.also) require("Module:debug").track("auto cat/" .. submodule) -- `failed` is true if no match was found. submodule = require(category_tree_submodule_prefix .. submodule) local cattext, failed = generate_output(submodule.main(info)) if failed then if not first_fail_cattext then first_fail_cattext = cattext first_fail_args_handled = info.args and true or false end elseif not info.args and next(other_args) then error(extra_args_error) else return cattext end end end -- If there were no matches, throw an error if any arguments were given, or otherwise return the cattext -- from the first fail encountered. The final handlers call the boilers unconditionally, so there should -- always be something to return. if not first_fail_args_handled and next(other_args) then error(extra_args_error) end return first_fail_cattext end -- TODO: new test entrypoint. return export odxz4cb7wi0srbuy3s3i9hx9isck2fx မဝ်ဂျူ:category tree/poscatboiler 828 1144 397437 396080 2026-06-22T17:57:11Z Intobesa.bot 1035 Bot: ဒၞာဲမလိက်သေံမသှ်ေဒၟံၚ်ကလေၚ်ဖပေၚ်စုတ်လိက်မန် 397437 Scribunto text/plain local lang_independent_data = require("Module:category tree/data") local lang_specific_module = "Module:category tree/lang" local lang_specific_module_prefix = lang_specific_module .. "/" local family_specific_module = "Module:category tree/fam" local family_specific_module_prefix = family_specific_module .. "/" local labels_utilities_module = "Module:labels/utilities" local template_parser_module = "Module:template parser" local concat = table.concat local dump = mw.dumpObject local expand_template = require("Module:frame").expandTemplate local insert = table.insert local is_callable = require("Module:fun").is_callable local lcfirst = require("Module:string utilities").lcfirst local list_to_set = require("Module:table").listToSet local make_title = mw.title.makeTitle local new_title = mw.title.new local parse = require(template_parser_module).parse local sparse_concat = require("Module:table").sparseConcat local tostring = tostring local type = type local ucfirst = require("Module:string utilities").ucfirst local uupper = require("Module:string utilities").upper local function internal_error(msg) error("Internal error: " .. msg) end local function get_lang(...) local _get_lang = require("Module:languages").getByCode function get_lang(...) return _get_lang(...) or require("Module:languages/errorGetBy").code(...) end return get_lang(...) end local function get_script(...) local _get_script = require("Module:scripts").getByCode function get_script(code) return _get_script(code) or require("Module:languages/error")(code, true, "script code") end return get_script(...) end -- Category object local Category = {} Category.__index = Category function Category:get_originating_info() local originating_info = "" if self._info.originating_label then originating_info = " (originating from label \"" .. self._info.originating_label .. "\" in module [[" .. self._info.originating_module .. "]])" end return originating_info end local valid_keys = list_to_set{"code", "label", "sc", "raw", "args", "also", "called_from_inside", "originating_label", "originating_module"} function Category.new(info) for key in pairs(info) do if not valid_keys[key] then internal_error("The parameter \"" .. key .. "\" was not recognized.") end end local self = setmetatable({}, Category) self._info = info if not self._info.label then internal_error("No label was specified.") end self:initCommon() if not self._data then internal_error("The " .. (self._info.raw and "raw " or "") .. "label \"" .. self._info.label .. "\" does not exist" .. self:get_originating_info() .. ".") end return self end function Category:initCommon() local function patch_args(args) -- This fixes the issue with Scribunto automatically converting keys -- in a table as numbers to strings, which in turn causes a circular -- error for having argument parameter names as numbers as strings. if type(args) ~= "table" then return args end local new_args = {} for k, v in pairs(args) do if type(k) == "string" and string.len(k) < 10 and not string.match(k, "^0") and string.match(k, "^%d+$") then new_args[tonumber(k)] = patch_args(v) else new_args[k] = patch_args(v) end end return new_args end local args_handled = false if self._info.raw then -- Check if the category exists local raw_categories = lang_independent_data["RAW_CATEGORIES"] self._data = raw_categories[self._info.label] if self._data then if self._data.lang then self._lang = get_lang(self._data.lang, nil, true) self._info.code = self._lang:getCode() end if self._data.sc then self._sc = get_script(self._data.sc) self._info.sc = self._sc:getCode() end else -- Go through raw handlers local data = { category = self._info.label, args = patch_args(self._info.args) or {}, called_from_inside = self._info.called_from_inside, } for _, handler in ipairs(lang_independent_data["RAW_HANDLERS"]) do self._data, args_handled = handler.handler(data) if self._data then self._data.module = self._data.module or handler.module break end end if self._data then -- Update the label if the handler specified a canonical name for it. if self._data.canonical_name then self._info.canonical_name = self._data.canonical_name end if self._data.lang then if type(self._data.lang) ~= "string" then internal_error("Received non-string value " .. dump(self._data.lang) .. " for self._data.lang, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".") end self._lang = get_lang(self._data.lang, nil, true) self._info.code = self._lang:getCode() end if self._data.sc then if type(self._data.sc) ~= "string" then internal_error("Received non-string value " .. dump(self._data.sc) .. " for self._data.sc, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".") end self._sc = get_script(self._data.sc) self._info.sc = self._sc:getCode() end end end else -- Already parsed into language + label if self._info.code then self._lang = get_lang(self._info.code, nil, true) else self._lang = nil end if self._info.sc then self._sc = get_script(self._info.sc) else self._sc = nil end self._info.orig_label = self._info.label if not self._lang then -- Umbrella categories without a preceding language always begin with a capital letter, but the actual label may be -- lowercase (cf. [[:Category:Nouns by language]] with label 'nouns' with per-language [[:Category:English nouns]]; -- but [[:Category:Reddit slang by language]] with label 'Reddit slang' with per-language -- [[:Category:English Reddit slang]]). Since the label is almost always lowercase, we lowercase it for umbrella -- categories, storing the original into `orig_label`, and correct it later if needed. self._info.label = lcfirst(self._info.label) end -- First, check lang-specific labels and handlers if this is not an umbrella category. if self._lang then local objects_with_modules = require(lang_specific_module) local obj, seen = self._lang, {} local object_specific_module_prefix = lang_specific_module_prefix local is_family = false repeat if objects_with_modules[obj:getCode()] then local module = object_specific_module_prefix .. obj:getCode() local labels_and_handlers = require(module) if labels_and_handlers.LABELS then self._data = labels_and_handlers.LABELS[self._info.label] if self._data then if not is_family and self._data.umbrella == nil and self._data.umbrella_parents == nil then self._data.umbrella = false end self._data.module = self._data.module or module end end if not self._data and labels_and_handlers.HANDLERS then for _, handler in ipairs(labels_and_handlers.HANDLERS) do local data = { label = self._info.label, lang = self._lang, sc = self._sc, args = patch_args(self._info.args) or {}, called_from_inside = self._info.called_from_inside, } self._data, args_handled = handler(data) if self._data then if not is_family and self._data.umbrella == nil and self._data.umbrella_parents == nil then self._data.umbrella = false end self._data.module = self._data.module or module break end end end if self._data then break end end seen[obj:getCode()] = true obj = obj:getFamily() if not is_family then is_family = true object_specific_module_prefix = family_specific_module_prefix objects_with_modules = require(family_specific_module) end until not obj or seen[obj:getCode()] end local function fetch_label_data(labels) self._data = labels[self._info.label] -- See comment above about uppercase- vs. lowercase-initial labels, which are indistinguishable -- in umbrella categories. if not self._data then self._data = labels[self._info.orig_label] if self._data then self._info.label = self._info.orig_label end end end -- Then check lang-independent labels. if not self._data then -- lang_independent_data.LABELS should always exist. fetch_label_data(lang_independent_data.LABELS) if not self._data and not self._lang then -- Check family-specific labels for umbrella label. local families_with_modules = require(family_specific_module) for famcode, _ in pairs(families_with_modules) do local module = family_specific_module_prefix .. famcode local labels_and_handlers = require(module) if labels_and_handlers.LABELS then fetch_label_data(labels_and_handlers.LABELS) if self._data then self._data.module = self._data.module or module break end end end end end -- Then check lang-independent handlers. if not self._data then local data = { label = self._info.label, lang = self._lang, sc = self._sc, args = patch_args(self._info.args) or {}, called_from_inside = self._info.called_from_inside, } for _, handler in ipairs(lang_independent_data["HANDLERS"]) do self._data, args_handled = handler.handler(data) if self._data then self._data.module = self._data.module or handler.module break end end if not self._data and not self._lang then -- Check family-specific labels for umbrella handler. local families_with_modules = require(family_specific_module) for famcode, _ in pairs(families_with_modules) do local module = family_specific_module_prefix .. famcode local labels_and_handlers = require(module) if labels_and_handlers.HANDLERS then for _, handler in ipairs(labels_and_handlers.HANDLERS) do local data = { label = self._info.label, sc = self._sc, args = patch_args(self._info.args) or {}, called_from_inside = self._info.called_from_inside, } self._data, args_handled = handler(data) if self._data then self._data.module = self._data.module or module break end end end if self._data then break end end end end end if not args_handled and self._data and self._info.args and next(self._info.args) then local module_text = " (handled in [[" .. (self._data.module or "UNKNOWN").. "]])" local args_text = {} for k, v in pairs(self._info.args) do insert(args_text, k .. "=" .. ((type(v) == "string" or type(v) == "number") and v or dump(v))) end error("poscatboiler label '" .. self._info.label .. "' " .. module_text .. " doesn't accept extra args " .. concat(args_text, ", ")) end if self._sc and not self._lang then internal_error("Umbrella categories cannot have a script specified.") end end function Category:convert_spec_to_string(desc) if not desc then return desc end local desc_type = type(desc) if desc_type == "string" then return desc elseif desc_type == "number" then return tostring(desc) elseif not is_callable(desc) then internal_error("`desc` must be a string, number, function, callable table or nil; received " .. dump(desc)) end desc = desc { lang = self._lang, sc = self._sc, label = self._info.label, raw = self._info.raw, } if not desc then return desc end desc_type = type(desc) if desc_type == "string" then return desc end internal_error("The value returned by `desc` must be a string or nil; received " .. dump(desc)) end local function add_obj_args(args, obj, obj_type) if obj then args[obj_type .. "code"] = obj:getCode() args[obj_type .. "name"] = obj:getCanonicalName() args[obj_type .. "disp"] = obj:getDisplayForm() args[obj_type .. "cat"] = obj:getCategoryName() args[obj_type .. "link"] = obj:makeCategoryLink() end end -- Expands `desc` like a template, passing values for specs like {{{langname}}}. function Category:substitute_template_specs(desc) -- This may end up happening twice but that's OK as the function is (usually) idempotent. -- FIXME: Not idempotent if a preprocessed template returns wikicode. desc = self:convert_spec_to_string(desc) if not desc then return nil end -- Populate the substitution arguments. local args = {} args.umbrella_msg = "This is an umbrella category. It contains no dictionary entries, but only other, language-specific categories, which in turn contain relevant terms in a given language." args.umbrella_meta_msg = "This is an umbrella metacategory, covering a general area such as \"lemmas\", \"names\" or \"terms by etymology\". It contains no dictionary entries, but holds only umbrella (\"by language\") categories covering specific subtopics, which in turn contain language-specific categories holding terms in a given language for that same topic." add_obj_args(args, self._lang, "lang") add_obj_args(args, self._sc, "sc") return parse(desc, true):expand(args) end function Category:substitute_template_specs_in_args(args) if not args then return args end local pinfo = {} for k, v in pairs(args) do pinfo[self:substitute_template_specs(k)] = self:substitute_template_specs(v) end return pinfo end function Category:make_new(info) info.originating_label = self._info.label info.originating_module = self._data.module info.called_from_inside = true return Category.new(info) end function Category:getBreadcrumbName() local ret if self._lang or self._info.raw then ret = self._data.breadcrumb or self._data.breadcrumb_and_first_sort_key or self._data.breadcrumb_and_first_sort_base or nil else ret = self._data.umbrella and (self._data.umbrella.breadcrumb or self._data.umbrella.breadcrumb_and_first_sort_key or self._data.umbrella.breadcrumb_and_first_sort_base) or nil end if not ret then ret = self._info.label end if type(ret) ~= "table" then ret = {name = ret} end local name = self:substitute_template_specs(ret.name) local nocap = ret.nocap if self._sc then name = name .. "ပ္ဍဲ" .. self._sc:getCategoryName() --mnw end return name, nocap end local function expand_toc_template_if(template) local template_obj = new_title(template, 10) if template_obj.exists then return expand_template{title = template_obj.text} end return nil end -- Return the textual expansion of the first existing template among the given templates, first performing -- substitutions on the template name such as replacing {{{langcode}}} with the current language's code (if any). -- If no templates exist after expansion, or if nil is passed in, return nil. If a single string is passed in, -- treat it like a one-element list consisting of that string. function Category:get_template_text(templates) if templates == nil then return nil elseif type(templates) ~= "table" then templates = {templates} end for _, template in ipairs(templates) do if template == false then return false end template = self:substitute_template_specs(template) return expand_toc_template_if(template) end return nil end function Category:getTOC(toc_type) -- Type "none" means everything fits on a single page; in that case, display nothing. if toc_type == "none" then return nil end local templates, fallback_templates -- If TOC type is "full" (more than 2500 entries), do the following, in order: -- 1. look up and expand the `toc_template_full` templates (normal or umbrella, depending on whether there is -- a current language); -- 2. look up and expand the `toc_template` templates (normal or umbrella, as above); -- 3. do the default behavior, which is as follows: -- 3a. look up a language-specific "full" template according to the current language (using English if there -- is no current language); -- 3b. look up a script-specific "full" template according to the first script of current language (using English -- if there is no current language); -- 3c. look up a language-specific "normal" template according to the current language (using English if there -- is no current language); -- 3d. look up a script-specific "normal" template according to the first script of the current language (using -- English if there is no current language); -- 3e. display nothing. -- -- If TOC type is "normal" (between 200 and 2500 entries), do the following, in order: -- 1. look up and expand the `toc_template` templates (normal or umbrella, depending on whether there is -- a current language); -- 2. do the default behavior, which is as follows: -- 2a. look up a language-specific "normal" template according to the current language (using English if there -- is no current language); -- 2b. look up a script-specific "normal" template according to the first script of the current language (using -- English if there is no current language); -- 2c. display nothing. local data_source if self._lang or self._info.raw then data_source = self._data else data_source = self._data.umbrella end if data_source then if toc_type == "full" then templates = data_source.toc_template_full fallback_templates = data_source.toc_template else templates = data_source.toc_template end end local text = self:get_template_text(templates) if text then return text elseif text == false then return nil end text = self:get_template_text(fallback_templates) if text then return text elseif text == false then return nil end local default_toc_templates_to_check = {} local lang, sc = self:getCatfixInfo() local langcode = lang and lang:getCode() or "mnw" local sccode = sc and sc:getCode() or lang and lang:getScriptCodes()[1] or "Latn" -- FIXME: What is toctemplateprefix used for? local tocname = (self._data.toctemplateprefix or "") .. "categoryTOC" if toc_type == "full" then insert(default_toc_templates_to_check, ("%s-%s/full"):format(langcode, tocname)) insert(default_toc_templates_to_check, ("%s-%s/full"):format(sccode, tocname)) end insert(default_toc_templates_to_check, ("%s-%s"):format(langcode, tocname)) insert(default_toc_templates_to_check, ("%s-%s"):format(sccode, tocname)) for _, toc_template in ipairs(default_toc_templates_to_check) do local toc_template_text = expand_toc_template_if(toc_template) if toc_template_text then return toc_template_text end end return nil end function Category:getInfo() return self._info end function Category:getDataModule() return self._data.module end function Category:canBeEmpty() if self._lang or self._info.raw then return self._data.can_be_empty end return self._data.umbrella and self._data.umbrella.can_be_empty end function Category:isHidden() if self._lang or self._info.raw then return self._data.hidden end return self._data.umbrella and self._data.umbrella.hidden end function Category:getCategoryName() if self._info.raw then return self._info.canonical_name or self._info.label elseif self._lang then --local ret = self._lang:getCanonicalName() .. " " .. self._info.label local ret = self._info.label .. self._lang:getCanonicalName() .. "ဂမၠိုၚ်" if self._sc then ret = ret .. "ပ္ဍဲ" .. self._sc:getCategoryName() --mnw end return ucfirst(ret) end local ret = ucfirst(self._info.label) if not (self._data.no_by_language or self._data.umbrella and self._data.umbrella.no_by_language) then ret = ret:gsub("★", "") .. --mnw; remove star ((ret:find("ที่สะกดด้วย .+") or mw.ustring.find(ret, "[^က-ခ]$")) and " " or "") .. "ဗက်အလိုက်ဘာသာ" --mnw end return ret end function Category:getTopright() if self._lang or self._info.raw then return self:substitute_template_specs(self._data.topright) end return self._data.umbrella and self:substitute_template_specs(self._data.umbrella.topright) end function Category:display_title(displaytitle, lang) if type(displaytitle) == "string" then displaytitle = self:substitute_template_specs(displaytitle) else displaytitle = displaytitle(self:getCategoryName(), lang) end mw.getCurrentFrame():callParserFunction("DISPLAYTITLE", "ကဏ္ဍ:" .. displaytitle) end function Category:get_labels_categorizing() local m_labels_utilities = require(labels_utilities_module) local pos_cat_labels, sense_cat_labels, use_tlb pos_cat_labels = m_labels_utilities.find_labels_for_category(self._info.label, "pos", self._lang) local sense_label = self._info.label:match("^(.*) terms$") if sense_label then use_tlb = true else sense_label = self._info.label:match("^terms with (.*) senses$") end if not sense_label then return nil end sense_cat_labels = m_labels_utilities.find_labels_for_category(sense_label, "sense", self._lang) if use_tlb then return m_labels_utilities.format_labels_categorizing(pos_cat_labels, sense_cat_labels, self._lang) end local all_labels = pos_cat_labels for k, v in pairs(sense_cat_labels) do all_labels[k] = v end return m_labels_utilities.format_labels_categorizing(all_labels, nil, self._lang) end -- FIXME: this is clunky. local function remove_lang_params(desc) -- Simply remove a language name/code/category from the beginning of the string, but replace the language name -- in the middle of the string with either "specific languages" or "specific-language" depending on whether the -- language name appears to be an attributive qualifier of another noun or to stand by itself. This may be wrong, -- in which case the category in question should supply its own umbrella description. desc = desc:gsub("^{{{langname}}}", "") :gsub("{{{langname}}} %(", "ဘာသာသမ္တီဟိုတ် (") :gsub("{{{langname}}}([.,])", "ဘာသာသမ္တီဟိုတ် ") :gsub("{{{langname}}}", "ဘာသာသမ္တီဟိုတ်") :gsub("{{{langdisp}}}", "ဘာသာသမ္တီဟိုတ်") :gsub("{{{langlink}}}", "ဘာသာသမ္တီဟိုတ်") return desc end function Category:getDescription(isChild) -- Allows different text in the list of a category's children local isChild = isChild == "child" if self._lang or self._info.raw then if not isChild and self._data.displaytitle then self:display_title(self._data.displaytitle, self._lang) end if self._sc then return self:getCategoryName() .. "." end local desc = self:substitute_template_specs(self._data.description) if not desc then return nil elseif isChild then return desc end return sparse_concat({ self:substitute_template_specs(self._data.preceding), desc, self:substitute_template_specs(self._data.additional), self:substitute_template_specs(self:get_labels_categorizing()), }, "\n\n") end local umbrella = self._data.umbrella if not isChild and umbrella and umbrella.displaytitle then self:display_title(umbrella.displaytitle) end local desc = self:substitute_template_specs(umbrella and umbrella.description) local has_umbrella_desc = not not desc if not desc then desc = self:convert_spec_to_string(self._data.description) if desc then desc = remove_lang_params(desc) desc = lcfirst(desc) desc = desc:gsub("%.$", "") desc = "Categories with " .. desc .. "." else desc = "Categories with " .. self._info.label .. " in various specific languages." end desc = self:substitute_template_specs(desc) end if isChild then return desc end return sparse_concat({ self:substitute_template_specs(umbrella and umbrella.preceding or not has_umbrella_desc and self._data.preceding), desc, self:substitute_template_specs(umbrella and umbrella.additional or not has_umbrella_desc and self._data.additional), self:substitute_template_specs("{{{umbrella_msg}}}"), self:substitute_template_specs(self:get_labels_categorizing()), }, "\n\n") end function Category:new_sortkey(sortkey) local sortkey_type = type(sortkey) if sortkey_type == "string" then sortkey = uupper(sortkey) elseif sortkey_type == "table" then function sortkey:makeSortKey() local sort_func = self.sort_func if sort_func ~= nil then return sort_func(self.sort_base) end local lang = self.lang if lang == nil then return self.sort_base end lang = get_lang(lang, nil, true) if lang == nil then return self.sort_base end local sc = self.sc if sc ~= nil then sc = get_script(sc) end return lang:makeSortKey(self.sort_base, sc) end end return sortkey end function Category:inherit_spec(spec, parent_spec, substitute_result) if spec == false then return nil end local retval = spec or parent_spec if substitute_result then retval = self:substitute_template_specs(retval) end return retval end function Category:canonicalize_parents_children(cats, is_children, fallback_sort_key, fallback_sort_base) if not cats then return nil elseif type(cats) == "table" then if cats.name or cats.module then cats = {cats} elseif #cats == 0 then return nil end else cats = {cats} end local ret = {} for _, cat in ipairs(cats) do if type(cat) ~= "table" or not cat.name and not cat.module then cat = {name = cat} end insert(ret, cat) end local is_umbrella = not self._lang and not self._info.raw local table_type = is_children and "extra_children" or "parents" for i, cat in ipairs(ret) do local raw if self._info.raw or is_umbrella then raw = not cat.is_label else raw = cat.raw end local lang = self:inherit_spec(cat.lang, not raw and self._info.code or nil, "substitute") local sc = self:inherit_spec(cat.sc, not raw and self._info.sc or nil, "substitute") -- Get the sortkey. local sortkey = self:inherit_spec(cat.sort, i == 1 and (fallback_sort_key or fallback_sort_base and {sort_base = fallback_sort_base}) or nil) if type(sortkey) == "table" then sortkey.sort_base = self:substitute_template_specs(sortkey.sort_base) or internal_error("Missing .sort_base in '" .. table_type .. "' .sort table for '" .. self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'") if sortkey.sort_func then -- Not allowed to give a lang and/or script if sort_func is given. local bad_spec = sortkey.lang and "lang" or sortkey.sc and "sc" or nil if bad_spec then internal_error("Cannot specify both ." .. bad_spec .. " and .sort_func in '" .. table_type .. "' .sort table for '" .. self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'") end else sortkey.lang = self:inherit_spec(sortkey.lang, lang, "substitute") sortkey.sc = self:inherit_spec(sortkey.sc, sc, "substitute") end else sortkey = self:substitute_template_specs(sortkey) end local name if cat.module then -- A reference to a category using another category tree module. if not cat.args then internal_error("Missing .args in '" .. table_type .. "' table with module=\"" .. cat.module .. "\" for '" .. self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'") end name = require("Module:category tree/" .. cat.module).new(self:substitute_template_specs_in_args(cat.args)) else name = cat.name if not name then internal_error("Missing .name in " .. (is_umbrella and "umbrella " or "") .. "'" .. table_type .. "' table for '" .. self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'") elseif type(name) == "string" then -- otherwise, assume it's a category object and use it directly name = self:substitute_template_specs(name) if name:find("^ကဏ္ဍ:") then -- It's a non-poscatboiler category name. sortkey = sortkey or is_children and name:gsub("^ကဏ္ဍ:", "") or self:getCategoryName() else -- It's a label. sortkey = sortkey or is_children and name or self._info.label name = self:make_new{ label = name, code = lang, sc = sc, raw = raw, args = self:substitute_template_specs_in_args(cat.args) } end end end sortkey = sortkey or is_children and " " or self._info.label ret[i] = { name = name, description = is_children and self:substitute_template_specs(cat.description) or nil, sort = self:new_sortkey(sortkey) } end return ret end function Category:getParents() local is_umbrella, ret = not self._lang and not self._info.raw if self._sc then local parent1 = self:make_new{code = self._info.code, label = "ဝေါဟာ" .. self._sc:getCanonicalName() .. "အပ္ဍဲအက္ခရ်ဂမၠိုၚ်"} local parent2 = self:make_new{code = self._info.code, label = self._info.label, raw = self._info.raw, args = self._info.args} ret = { {name = parent1, sort = self._sc:getCanonicalName()}, {name = parent2, sort = self._sc:getCanonicalName()}, } else local parents, fallback_sort_key, fallback_sort_base if is_umbrella then parents = self._data.umbrella and self._data.umbrella.parents or self._data.umbrella_parents fallback_sort_key = self._data.umbrella and self._data.umbrella.breadcrumb_and_first_sort_key or nil fallback_sort_base = self._data.umbrella and self._data.umbrella.breadcrumb_and_first_sort_base or nil else parents = self._data.parents fallback_sort_key = self._data.breadcrumb_and_first_sort_key fallback_sort_base = self._data.breadcrumb_and_first_sort_base end ret = self:canonicalize_parents_children(parents, nil, fallback_sort_key, fallback_sort_base) if not ret then return nil end end local self_cat = self:getCategoryName() for _, parent in ipairs(ret) do local parent_cat = parent.name.getCategoryName and parent.name:getCategoryName() if self_cat == parent_cat then internal_error(("Infinite loop would occur, as parent category '%s' is the same as the child category"):format(self_cat)) end end return ret end function Category:getChildren() local is_umbrella = not self._lang and not self._info.raw local children = self._data.children local ret = {} if not is_umbrella and children then for _, child in ipairs(children) do child = mw.clone(child) if type(child) ~= "table" then child = {name = child} end if not child.sort then child.sort = child.name end -- FIXME, is preserving the script correct? child.name = self:make_new{code = self._info.code, label = child.name, raw = child.raw, sc = self._info.sc} insert(ret, child) end end local extra_children if is_umbrella then extra_children = self._data.umbrella and self._data.umbrella.extra_children else extra_children = self._data.extra_children end extra_children = self:canonicalize_parents_children(extra_children, "children") if extra_children then for _, child in ipairs(extra_children) do insert(ret, child) end end return #ret > 0 and ret or nil end function Category:getUmbrella() local umbrella = self._data.umbrella if umbrella == false or self._info.raw or not self._lang or self._sc then return nil end -- If `umbrella` is a string, use that; otherwise, use the label. return self:make_new({label = type(umbrella) == "string" and umbrella or self._info.label}) end function Category:getAppendix() -- FIXME, this should be customizable. local lang, label = self._lang, self._info.label if self._info.raw or not (lang and label) then return nil end local appendix = make_title(100, label .. lang:getCategoryName() .. "ဂမၠိုၚ်") return appendix.exists and appendix.fullText or nil end function Category:getCatfixInfo() if self._lang or self._sc or self._info.raw then local langcode, sccode = self._data.catfix, self._data.catfix_sc local lang, sc if langcode then langcode = self:substitute_template_specs(langcode) lang = get_lang(langcode, nil, true) elseif langcode == nil then -- not false lang = self._lang end if sccode then sccode = self:substitute_template_specs(sccode) sc = get_script(sccode) elseif sccode == nil then -- not false sc = self._sc end if lang then lang = lang:getFull() end return lang, sc elseif not self._data.umbrella then return end -- umbrella local langcode, sccode = self._data.umbrella.catfix, self._data.umbrella.catfix_sc local lang, sc if langcode then langcode = self:substitute_template_specs(langcode) lang = get_lang(langcode, nil, true) end if sccode then sccode = self:substitute_template_specs(sccode) sc = get_script(sccode) end if lang then lang = lang:getFull() end return lang, sc end function Category:getTOCTemplateName() -- This should only be invoked if getTOC() returns true, meaning to do the default algorithm, but getTOC() -- implements its own default algorithm. internal_error("This should never get called") end local export = {} function export.main(info) local self = setmetatable({_info = info}, Category) self:initCommon() return self._data and self or nil end export.new = Category.new return export 31iowjv00mp7ptytupxzea9kvja5kod မဝ်ဂျူ:category tree/အရေဝ်ဘာသာ 828 1747 397438 396766 2026-06-22T17:57:38Z Intobesa.bot 1035 Bot: ဒၞာဲမလိက်သေံမသှ်ေဒၟံၚ်ကလေၚ်ဖပေၚ်စုတ်လိက်မန် 397438 Scribunto text/plain local new_title = mw.title.new local ucfirst = require("Module:string utilities").ucfirst local split = require("Module:string utilities").split local raw_categories = {} local raw_handlers = {} local m_languages = require("Module:languages") local m_sc_getByCode = require("Module:scripts").getByCode local m_table = require("Module:table") local parse_utilities_module = "Module:parse utilities" local concat = table.concat local insert = table.insert local reverse_ipairs = m_table.reverseIpairs local serial_comma_join = m_table.serialCommaJoin local size = m_table.size local sorted_pairs = m_table.sortedPairs local to_json = require("Module:JSON").toJSON local Hang = m_sc_getByCode("Hang") local Hani = m_sc_getByCode("Hani") local Hira = m_sc_getByCode("Hira") local Hrkt = m_sc_getByCode("Hrkt") local Kana = m_sc_getByCode("Kana") local function track(page) -- [[Special:WhatLinksHere/Wiktionary:Tracking/category tree/ภาษา/PAGE]] return require("Module:debug/track")("category tree/အရေဝ်ဘာသာ/" .. page) end -- This handles language categories of the form e.g. [[:ကဏ္ဍ:French language]] and -- [[:ကဏ္ဍ:British Sign Language]]; categories like [[:ကဏ္ဍ:Languages of Indonesia]]; categories like -- [[:ကဏ္ဍ:English-based creole or pidgin languages]]; and categories like -- [[:ကဏ္ဍ:English-based constructed languages]]. ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်"] = { topright = "{{commonscat|အရေဝ်ဘာသာ}}\n[[File:Languages world map-transparent background.svg|thumb|right|250px|Rough world map of language families]]", description = "This category contains the categories for every language on Wiktionary.", additional = "Not all languages that Wiktionary recognises may have a category here yet. There are many that have " .. "not yet received any attention from editors, mainly because not all Wiktionary users know about every single " .. "language. See [[Wiktionary:List of languages]] for a full list.", parents = { "ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်", }, } raw_categories["အရေဝ်ဘာသာမကၠေံဗ္ဒန်သီုဖအိုတ်ဂမၠိုၚ်"] = { description = "This category contains the categories for every [[extinct language]] on Wiktionary.", additional = "Do not confuse this category with [[:ကဏ္ဍ:Extinct languages]], which is an umbrella category for the names of extinct languages in specific other languages (e.g. {{m+|de|Langobardisch}} for the ancient [[Lombardic]] language).", parents = { "အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်", }, } raw_categories["အရေဝ်ဘာသာဗက်အလိုက်ဍုၚ်ရးဂမၠိုၚ်"] = { topright = "{{commonscat|အရေဝ်ဘာသာဗက်အလိုက်တိုက်ဂမၠိုၚ်}}", description = "ကဏ္ဍတဏအ်ဝွံဂကောံအရေဝ်ဘာသာမဗက်အလိုက်ဍုၚ်ရးဂမၠိုၚ်", additional = "{{{umbrella_meta_msg}}}", parents = { "အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်", }, } raw_categories["Languages not sorted into a location category"] = { description = "Languages which do not specify (in their {{tl|auto cat}} call) the location(s) where they are spoken.", additional = "This excludes constructed and reconstructed languages; as a result, all languages in this category explicitly specify their location as {{cd|UNKNOWN}}.", parents = { {name = "အာတ်မိက်ဂမၠိုၚ်"}, }, hidden = true, } ----------------------------------------------------------------------------- -- -- -- RAW HANDLERS -- -- -- ----------------------------------------------------------------------------- -- Given a category (without the "ကဏ္ဍ:" prefix), look up the page defining the category, find the call to -- {{auto cat}} (if any), and return a table of its arguments. If the category page doesn't exist or doesn't have -- an {{auto cat}} invocation, return nil. -- -- FIXME: Duplicated in [[Module:category tree/ภาษณ์]]. local function scrape_category_for_auto_cat_args(cat) local cat_page = mw.title.new("ကဏ္ဍ:" .. cat) if cat_page then local contents = cat_page:getContent() if contents then local frame = mw.getCurrentFrame() for template in require("Module:template parser").find_templates(contents) do -- The template parser automatically handles redirects and canonicalizes them, so uses of {{autocat}} -- will also be found. if template:get_name() == "auto cat" then return template:get_arguments() end end end end return nil end local function link_location(location) local location_no_the = location:match("^the (.*)$") local bare_location = location_no_the or location local location_link local bare_location_parts = split(bare_location, ", ") for i, part in ipairs(bare_location_parts) do bare_location_parts[i] = ("[[%s]]"):format(part) end location_link = concat(bare_location_parts, ", ") if location_no_the then location_link = "the " .. location_link end return location_link end local function linkbox(lang, setwiki, setwikt, setsister, entryname) local wiktionarylinks = {} local canonicalName = lang:getCanonicalName() local wikimediaLanguages = lang:getWikimediaLanguages() local wikipediaArticle = setwiki or lang:getWikipediaArticle() setsister = setsister and ucfirst(setsister) or nil if setwikt then track("setwikt") if setwikt == "-" then track("setwikt/hyphen") end end if setwikt ~= "-" and wikimediaLanguages and wikimediaLanguages[1] then for _, wikimedialang in ipairs(wikimediaLanguages) do local check = new_title(wikimedialang:getCode() .. ":") if check and check.isExternal then insert(wiktionarylinks, (wikimedialang:getCanonicalName() ~= canonicalName and "(''" .. wikimedialang:getCanonicalName() .. "'') " or "") .. "'''[[:" .. wikimedialang:getCode() .. ":|" .. wikimedialang:getCode() .. ".wiktionary.org]]'''") end end wiktionarylinks = concat(wiktionarylinks, "<br/>") end local wikt_plural = --[[wikimediaLanguages[2] and "s" or ""]] "" if #wiktionarylinks == 0 then wiktionarylinks = "''ဟၟဲ''" end -- Don't even show Wiktionary links section for reconstructed languages, -- as they are ineligible for Wiktionary editions local wiktionarylinks_chunk = concat{ [=[|- | style="vertical-align: top; height: 35px; width: 40px; border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | [[File:Wiktionary-logo-v2.svg|35px|none|Wiktionary]] |style="border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | '''ဝိက်ရှေန်နရဳပရေၚ်မပလေဝ်ဒါန်''']=], wikt_plural, [=[ မချူလဝ်အပ္ဍဲ ]=], canonicalName, [=[: <div style="padding: 5px 10px">]=], wiktionarylinks, [=[</div> ]=]} if lang:hasType('reconstructed') then wiktionarylinks_chunk = '' end if setsister then track("setsister") if setsister == "-" then track("setsister/hyphen") else setsister = "ကဏ္ဍ:" .. setsister end else setsister = lang:getCommonsCategory() or "-" end return concat{ [=[<div class="wikitable" style="float: right; clear: right; margin: 0 0 0.5em 1em; width: 300px; padding: 5px;"> <div style="text-align: center; margin-bottom: 10px; margin-top: 5px">လေန်အရေဝ်ဘာသာ''']=], canonicalName, [=[ဂမၠိုၚ်'''</div> {| style="font-size: 90%" |- | style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | [[File:Wikipedia-logo.png|35px|none|ဝဳကဳပဳဒဳယာ]] | style="border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | '''ဝဳကဳပဳဒဳယာဘာသာမန်'''မနွံဒၟံၚ်လိက်ပရေၚ်လ္တူ: <div style="padding: 5px 10px">]=], (setwiki == "-" and "''ဟၟဲ''" or "'''[[w:" .. wikipediaArticle .. "|" .. wikipediaArticle .. "]]'''"), [=[</div> |- | style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | [[File:Wikimedia-logo.svg|35px|none|ဝဳကဳမဳဒဳယာ ခမ်မောန်]] | style="border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | ဝဳကဳမဳဒဳယာ ခမ်မောန်'''မနွံဒၟံၚ်လေန်နကဵုမဆက်စပ်လဝ်ပရောပရာ]=], canonicalName, [=[-ပ္ဍဲပရဝ်ဂျေတ်ၝုဲဒေံဂမၠိုၚ်: <div style="padding: 5px 10px">]=], (setsister == "-" and "''ဟၟဲ''" or "'''[[commons:" .. setsister .. "|" .. setsister .. "]]'''"), [=[</div> ]=], wiktionarylinks_chunk, [=[ |- | style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | [[File:Open book nae 02.svg|35px|none|ဝိက်ရှေန်နရဳ]] | style="border-bottom: 1px solid var(--wikt-palette-grey-4,lightgray);" | '''ဝိက်ရှေန်နရဳပရေၚ်ပၠောပ်စုတ်'''သွက်ဆေၚ်စပ်ကဵုယၟုဘာသာမန်ဂမၠိုၚ်: <div style="padding: 5px 10px">''']=], require("Module:links").full_link({lang = m_languages.getByCode("mnw"), term = entryname or canonicalName}), [=['''</div> |- | style="vertical-align: top; height: 35px;" | [[File:Crystal kfind.png|35px|none|ပရေၚ်ပၠောပ်စုတ်]] || '''ဝိက်ရှေန်နရဳသောၚ်တလး'''သွက်ဂွံပွမဗိုၚ်ချူပလေဝ်ဒါန်နကဵုပရေၚ်ပၠောပ်စုတ်]=], canonicalName, [=[ဂမၠိုၚ်: <div style="padding: 5px 0"> * '''[[ဝိက်ရှေန်နရဳ:ထ္ၜးဂၠံၚ်ပရေၚ်ပၠောပ်စုတ်]=], canonicalName, [=[ဂမၠိုၚ်]]''' * '''[[:ကဏ္ဍ:ထာမ်ပလိက်နိဿဲ]=], canonicalName, [=[ဂမၠိုၚ်|ထာမ်ပလိက်နိဿဲ]] ({{PAGESINCAT:ထာမ်ပလိက်နိဿဲ]=], canonicalName, [=[ဂမၠိုၚ်}})''' * '''[[အဆက်လက္ကရဴ:စရၚ်ပြကိုဟ်နိဿဲ]=], canonicalName, [=[ |စရၚ်ပြကိုဟ်နိဿဲ]]''' </div> |} </div>]=] } end local function edit_link(title, text) return '<span class="plainlinks">[' .. tostring(mw.uri.fullUrl(title, { action = "ပလေဝ်ဒါန်" })) .. ' ' .. text .. ']</span>' end -- Should perhaps use wiki syntax. local function infobox(lang) local ret = {} insert(ret, '<table class="wikitable language-category-info"') local raw_data = lang:getData("extra") if raw_data then local replacements = { [1] = "canonical-name", [2] = "wikidata-item", [3] = "family", [4] = "scripts", } local function replacer(letter1, letter2) return letter1:lower() .. "-" .. letter2:lower() end -- For each key in the language data modules, returns a descriptive -- kebab-case version (containing ASCII lowercase words separated -- by hyphens). local function kebab_case(key) key = replacements[key] or key key = key:gsub("(%l)(%u)", replacer):gsub("(%l)_(%l)", replacer) return key end local compress = {compress = true} local function html_attribute_encode(str) str = to_json(str, compress) :gsub('"', "&quot;") -- & in attributes is automatically escaped. -- :gsub("&", "&amp;") :gsub("<", "&lt;") :gsub(">", "&gt;") return str end insert(ret, ' data-code="' .. lang:getCode() .. '"') for k, v in sorted_pairs(raw_data) do insert(ret, " data-" .. kebab_case(k) .. '="' .. html_attribute_encode(v) .. '"') end end insert(ret, '>\n') insert(ret, '<tr class="language-category-data">\n<th colspan="2">' .. edit_link(lang:getDataModuleName(), "ဒေတာပလေဝ်ဒါန်အရေဝ်ဘာသာ") .. "</th>\n</tr>\n") insert(ret, "<tr>\n<th>ယၟုတိုၚ်ခဳ</th><td>" .. lang:getCanonicalName() .. "</td>\n</tr>\n") local otherNames = lang:getOtherNames() if otherNames then local names = {} for _, name in ipairs(otherNames) do insert(names, "<li>" .. name .. "</li>") end if #names > 0 then insert(ret, "<tr>\n<th>ယၟုတၞဟ်</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end local aliases = lang:getAliases() if aliases then local names = {} for _, name in ipairs(aliases) do insert(names, "<li>" .. name .. "</li>") end if #names > 0 then insert(ret, "<tr>\n<th>ယၟုတၞဟ်</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end local varieties = lang:getVarieties() if varieties then local names = {} for _, name in ipairs(varieties) do if type(name) == "string" then insert(names, "<li>" .. name .. "</li>") else assert(type(name) == "table") local first_var local subvars = {} for i, var in ipairs(name) do if i == 1 then first_var = var else insert(subvars, "<li>" .. var .. "</li>") end end if #subvars > 0 then insert(names, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. concat(subvars, "\n") .. "</ul></dd></dl></li>") elseif first_var then insert(names, "<li>" .. first_var .. "</li>") end end end if #names > 0 then insert(ret, "<tr>\n<th>ယၟုမထပ်ကော်သာ်တၞဟ်</th><td><ul>" .. concat(names, "\n") .. "</ul></td>\n</tr>\n") end end insert(ret, "<tr>\n<th>[[ဝိက်ရှေန်နရဳ:အရေဝ်ဘာသာဂမၠိုၚ်|ကုဒ်အရေဝ်ဘာသာ]]</th><td><code>" .. lang:getCode() .. "</code></td>\n</tr>\n") insert(ret, "<tr>\n<th>[[ဝိက်ရှေန်နရဳ:အရေဝ်ဘာသာဝေါၚ်သဂမၠိုၚ်|အရေဝ်ဘာသာဝေါၚ်သ]]</th>\n") local fam = lang:getFamily() local famCode = fam and fam:getCode() if not fam then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာဟွံဂွံစၟတ်သမ္တီလဝ်ဂမၠိုၚ်|ဟွံဂွံစၟတ်သမ္တီလဝ်]]</td>") elseif famCode == "qfa-dis" then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာဆေၚ်စပ်ကဵုကယျာန်စာန်စးပရေၚ်ဝေါၚ်သဂမၠိုၚ်|ကယျာန်စာန်စးပရေၚ်ဝေါၚ်သ]]</td>") elseif famCode == "qfa-iso" then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာမပါ်ပ္တိတ်လဝ်ဂမၠိုၚ်|အရေဝ်ဘာသာမပါ်ပ္တိတ်လဝ်]]</td>") elseif famCode == "qfa-mix" then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာမပံၚ်ဖနှဴလဝ်ဂမၠိုၚ်|အရေဝ်ဘာသာမပံၚ်ဖနှဴလဝ်]]</td>") elseif famCode == "qfa-unc" then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာမပါ်ခြာဂကူဟွံမာန်ဂမၠိုၚ်|အရေဝ်ဘာသာမပါ်ခြာဂကူဟွံမာန်ဂမၠိုၚ်]]</td>") elseif famCode == "sgn" then insert(ret, "<td>[[:ကဏ္ဍ:အရေဝ်ဘာသာလက္ခဏာသမ္တီဂမၠိုၚ်|အရေဝ်ဘာသာလက္ခဏာသမ္တီ]]</td>") elseif famCode == "crp" then insert(ret, "<td>[[:ကဏ္ဍ:ဘာသာခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်ဂမၠိုၚ်|ခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်]]</td>") elseif famCode == "art" then insert(ret, "<td>[[:ကဏ္ဍ:ဂကောံဘာသာခၞံဗဒှ်လဝ်ဂမၠိုၚ်|ဂကောံဘာသာခၞံဗဒှ်လဝ်]]</td>") else insert(ret, "<td>" .. fam:makeCategoryLink() .. "</td>") end insert(ret, "\n</tr>\n<tr>\n<th>ဇုဇဗဴလဂမၠိုၚ်</th>\n<td>") local ancestors = lang:getAncestors() if ancestors[2] then local ancestorList = {} for i, anc in ipairs(ancestors) do ancestorList[i] = "<li>" .. anc:makeCategoryLink() .. "</li>" end insert(ret, "<ul>\n" .. concat(ancestorList, "\n") .. "</ul>") else local ancestorChain = lang:getAncestorChainOld() if ancestorChain[1] then local chain = {} for _, anc in reverse_ipairs(ancestorChain) do insert(chain, "<li>" .. anc:makeCategoryLink() .. "</li>") end insert(ret, "<ul>\n" .. concat(chain, "\n<ul>\n") .. ("</ul>"):rep(#chain)) else insert(ret, "ဟွံတီကၠး") end end insert(ret, "</td>\n</tr>\n") local scripts = lang:getScripts() if scripts[1] then local script_text = {} local function makeScriptLine(sc) local code = sc:getCode() local url = tostring(mw.uri.fullUrl('Special:Search', { search = 'contentmodel:css insource:"' .. code .. '" insource:/\\.' .. code .. '/', ns8 = '1' })) return sc:makeCategoryLink() .. ' (<span class="plainlinks" title="Search for stylesheets referencing this script">[' .. url .. ' <code>' .. code .. '</code>]</span>)' end local function add_Hrkt(text) insert(text, "<li>" .. makeScriptLine(Hrkt)) insert(text, "<ul>") insert(text, "<li>" .. makeScriptLine(Hira) .. "</li>") insert(text, "<li>" .. makeScriptLine(Kana) .. "</li>") insert(text, "</ul>") insert(text, "</li>") end for _, sc in ipairs(scripts) do local text = {} local code = sc:getCode() if code == "Hrkt" then add_Hrkt(text) else insert(text, "<li>" .. makeScriptLine(sc)) if code == "Jpan" then insert(text, "<ul>") insert(text, "<li>" .. makeScriptLine(Hani) .. "</li>") add_Hrkt(text) insert(text, "</ul>") elseif code == "Kore" then insert(text, "<ul>") insert(text, "<li>" .. makeScriptLine(Hang) .. "</li>") insert(text, "<li>" .. makeScriptLine(Hani) .. "</li>") insert(text, "</ul>") end insert(text, "</li>") end insert(script_text, concat(text, "\n")) end insert(ret, "<tr>\n<th>[[ဝိက်ရှေန်နရဳ:အက္ခရ်ဂမၠိုၚ်|အက္ခရ်ဂမၠိုၚ်]]</th>\n<td><ul>\n" .. concat(script_text, "\n") .. "</ul></td>\n</tr>\n") else insert(ret, "<tr>\n<th>[[ဝိက်ရှေန်နရဳ:အက္ခရ်ဂမၠိုၚ်|အက္ခရ်ဂမၠိုၚ်]]</th>\n<td>ไม่ระบุ</td>\n</tr>\n") end local function add_module_info(raw_data, heading) if raw_data then local scripts = lang:getScriptCodes() local module_info, add = {}, false if type(raw_data) == "string" then insert(module_info, ("[[Module:%s]]"):format(raw_data)) add = true else local raw_data_type = type(raw_data) if raw_data_type == "table" and size(scripts) == 1 and type(raw_data[scripts[1]]) == "string" then insert(module_info, ("[[Module:%s]]"):format(raw_data[scripts[1]])) add = true elseif raw_data_type == "table" then insert(module_info, "<ul>") for script, data in sorted_pairs(raw_data) do if type(data) == "string" and m_sc_getByCode(script) then insert(module_info, ("<li><code>%s</code>: [[Module:%s]]</li>"):format(script, data)) end end insert(module_info, "</ul>") add = size(module_info) > 2 end end if add then insert(ret, [=[ <tr> <th>]=] .. heading .. [=[</th> <td>]=] .. concat(module_info) .. [=[</td> </tr> ]=]) end end end add_module_info(raw_data.generate_forms, "မဝ်ဂျူ<br>ဗီုပြၚ်ပွမခၞံဗဒှ်") add_module_info(raw_data.translit, "[[ဝိက်ရှေန်နရဳ:ကၠာဲပ္တိတ်မအခဝ် ကဵု ပြၚ်လှာဲအက္ခရ်ရဝ်မာန်|မဝ်ဂျူ<br>ကၠာဲပ္တိတ်မအခဝ်]]") add_module_info(raw_data.display_text, "မဝ်ဂျူ<br>ထ္ၜးမလိက်") add_module_info(raw_data.entry_name, "မဝ်ဂျူ<br>ယၟုစရၚ်") add_module_info(raw_data.sort_key, "[[sortkey|မဝ်ဂျူ]]<br>ကဳပါ်အဇာ") local wikidataItem = lang:getWikidataItem() if lang:getWikidataItem() and mw.wikibase then local URL = mw.wikibase.getEntityUrl(wikidataItem) local link if URL then link = '[[d:' .. wikidataItem .. '|' .. wikidataItem .. ']]' else link = '<span class="error">Invalid Wikidata item: <code>' .. wikidataItem .. '</code></span>' end insert(ret, "<tr><th>ဝဳကဳဒေတာ</th><td>" .. link .. "</td></tr>") end insert(ret, "</table>") return concat(ret) end local function NavFrame_for_family_tree(content, title) return '<div class="NavFrame"><div class="NavHead">' .. (title or '{{{title}}}') .. '</div>' .. '<div class="NavContent" style="text-align: left; font-size: calc(1em / 0.95); padding: 0.3em">' .. content .. '</div></div>' end local function get_description_topright_additional(lang, locations, extinct, setwiki, setwikt, setsister, entryname) local nameWithLanguage = lang:getCategoryName("nocap") if lang:getCode() == "und" then local description = "ဣတဏအ်ဂှ်ဝွံဆေၚ်စပ်ကဵုကဏ္ဍအဓိက'''" .. nameWithLanguage .. "'''၊ မအာတ်မိက်ထ္ၜးလဝ်ပ္ဍဲဝိက်ရှေန်နရဳသီုကဵု[[ဝိက်ရှေန်နရဳ:အရေဝ်ဘာသာဂမၠိုၚ်|ကုဒ်]] '''" .. lang:getCode() .. "'''ရအဴ။ " .. "မအရေဝ်ဘာသာလုပ်အဝေါၚ်တဏအ်ဝွံပ္ဍဲပွမချူဆေၚ်စပ်ကဵုဝၚ်၊ သီုကဵုမအရေဝ်အဓိပ္ပာဲကီုလေဝ်မက္တဵုဒှ်လဝ်ဂလာန်သတ်ဒတ်နူကဵုတၠပညာဟၟဲမွဲဏီ။" return description, nil, nil end local canonicalName = lang:getCanonicalName() local categoryName = lang:getCategoryName() --mnw local topright = linkbox(lang, setwiki, setwikt, setsister, entryname) --[=[ local the_prefix if canonicalName:find(" Language$") then the_prefix = "" else the_prefix = "the " end --]=] local the_prefix = "" local description = "ဣတဏအ်ဂှ်ဝွံဆေၚ်စပ်ကဵုကဏ္ဍအဓိက" .. the_prefix .. "'''" .. nameWithLanguage .. "'''ရအဴ။" local location_links = {} local prep local saw_embedded_comma = false for _, location in ipairs(locations) do local this_prep if location == "မဆေၚ်စပ်ကဵုဂၠးတိ" then this_prep = "လက်လၞၚ်" insert(location_links, location) elseif location ~= "UNKNOWN" then this_prep = "ပ္ဍဲ" if location:find(",") then saw_embedded_comma = true end insert(location_links, link_location(location)) end if this_prep then if prep and this_prep ~= prep then error("Can't handle location 'the world' along with another location (clashing prepositions)") end prep = this_prep end end local location_desc if #location_links > 0 then local location_link_text if saw_embedded_comma and #location_links >= 3 then location_link_text = mw.text.listToText(location_links, "; ", "; ကဵု ") else location_link_text = serial_comma_join(location_links) end location_desc = ("ဘာသာတဏအ်ဝွံ%s%s%s\n\n"):format( extinct and "မဒှ်အရေဝ်ဘာသာကၠေံဗ္ဒန်အာတုဲရ နကဵုမကေၚ်ဟီုဂးလဝ်ကီုလေဝ်" or "မဟီုဂး", prep, location_link_text) elseif extinct then location_desc = "အရေဝ်ဘာသာတဏအ်ဝွံမဒှ်အရေဝ်ဘာသာကၠေံဗ္ဒန်အာတုဲရ\n\n" else location_desc = "" end local add = location_desc .. "စရၚ်ပရောပရာမဆေၚ်စပ်ကဵု" .. nameWithLanguage .. ":\n\n" .. infobox(lang) if lang:hasType("reconstructed") then add = add .. "\n\n" .. ucfirst(canonicalName) .. " is a reconstructed language. Its words and roots are not directly attested in any written works, but have been reconstructed through the ''comparative method'', " .. "which finds regular similarities between languages that cannot be explained by coincidence or word-borrowing, and extrapolates ancient forms from these similarities.\n\n" .. "According to our [[Wiktionary:Criteria for inclusion|criteria for inclusion]], terms in " .. canonicalName .. " should '''not''' be present in entries in the main namespace, but may be added to the Reconstruction: namespace." elseif lang:hasType("appendix-constructed") then add = add .. "\n\n" .. ucfirst(canonicalName) .. " is a constructed language that is only in sporadic use. " .. "According to our [[Wiktionary:Criteria for inclusion|criteria for inclusion]], terms in " .. canonicalName .. " should '''not''' be present in entries in the main namespace, but may be added to the Appendix: namespace. " .. "All terms in this language may be available at [[Appendix:" .. ucfirst(canonicalName) .. "]]." end local entry_guidelines_page = "ဝိက်ရှေန်နရဳ:ပရူ" .. categoryName local entry_guidelines = new_title(entry_guidelines_page) if entry_guidelines.exists then add = add .. "\n\n" .. "Please see '''[[" .. entry_guidelines_page .. "]]''' for information and special considerations for creating " .. nameWithLanguage .. " entries." end local ok, tree_of_descendants = pcall( require("Module:family tree").print_children, lang:getCode(), { protolanguage_under_family = true, must_have_descendants = true }) if ok then if tree_of_descendants then add = add .. NavFrame_for_family_tree( tree_of_descendants, "Family tree") else add = add .. "\n\n" .. ucfirst(lang:getCategoryName()) .. " has no descendants or varieties listed in Wiktionary's language data modules." end else mw.log("error while generating tree: " .. tostring(tree_of_descendants)) end return description, topright, add end local function get_parents(lang, locations, extinct) local canonicalName = lang:getCanonicalName() local sortkey = {sort_base = canonicalName, lang = "mnw"} local ret = {{name = "အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်", sort = sortkey}} local fam = lang:getFamily() local famCode = fam and fam:getCode() -- FIXME: Some of the following categories should be added to this module. if not fam then insert(ret, {name = "ကဏ္ဍ::အရေဝ်ဘာသာဟွံဂွံစၟတ်သမ္တီလဝ်ဂမၠိုၚ်", sort = sortkey}) elseif famCode == "qfa-dis" then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာဆေၚ်စပ်ကဵုကယျာန်စာန်စးပရေၚ်ဝေါၚ်သဂမၠိုၚ်", sort = sortkey}) elseif famCode == "qfa-iso" then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာမပါ်ပ္တိတ်လဝ်ဂမၠိုၚ်", sort = sortkey}) elseif famCode == "qfa-mix" then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာမပံၚ်ဖနှဴလဝ်ဂမၠိုၚ်", sort = sortkey}) elseif famCode == "qfa-unc" then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာမပါ်ခြာဂကူဟွံမာန်ဂမၠိုၚ်", sort = sortkey}) elseif famCode == "sgn" then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာလက္ခဏာသမ္တီသီုဖ္အိုတ်ဂမၠိုၚ်", sort = sortkey}) elseif famCode == "crp" then insert(ret, {name = "ကဏ္ဍ:ဘာသာခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်ဂမၠိုၚ်", sort = sortkey}) for _, anc in ipairs(lang:getAncestors()) do -- Avoid Haitian Creole being categorised in [[:ကဏ္ဍ:Haitian Creole-based creole or pidgin languages]], as one of its ancestors is an etymology-only variety of it. -- Use that ancestor's ancestors instead. if anc:getFullCode() == lang:getCode() then for _, anc_extra in ipairs(anc:getAncestors()) do insert(ret, {name = "ကဏ္ဍ:ဘာသာခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်မရပ်စပ်လဝ်ဘာသာ" .. ucfirst(anc_extra:getFullName()) .. "နကဵုတံသ္ဇိုၚ်ဂမၠိုၚ်", sort = sortkey}) end else insert(ret, {name = "ကဏ္ဍ:ဘာသာခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်မရပ်စပ်လဝ်ဘာသာ" .. ucfirst(anc:getFullName()) .. "နကဵုတံသ္ဇိုၚ်ဂမၠိုၚ်", sort = sortkey}) end end elseif famCode == "art" then if lang:hasType("appendix-constructed") then insert(ret, {name = "ကဏ္ဍ:ဂကောံဘာသာခၞံဗဒှ်လဝ်ပါဲနူအဆက်လက္ကရဴဂမၠိုၚ်", sort = sortkey}) else insert(ret, {name = "ကဏ္ဍ:ဂကောံဘာသာခၞံဗဒှ်လဝ်ဂမၠိုၚ်", sort = sortkey}) end for _, anc in ipairs(lang:getAncestors()) do if anc:getFullCode() == lang:getCode() then for _, anc_extra in ipairs(anc:getAncestors()) do insert(ret, {name = "ကဏ္ဍ:ဂကောံဘာသာခၞံဗဒှ်လဝ်မရပ်စပ်လဝ်ဘာသာ" .. ucfirst(anc_extra:getFullName()) .. "နကဵုတံသ္ဇိုၚ်ဂမၠိုၚ်", sort = sortkey}) end else insert(ret, {name = "ကဏ္ဍ:ဂကောံဘာသာခၞံဗဒှ်လဝ်မရပ်စပ်လဝ်ဘာသာ" .. ucfirst(anc:getFullName()) .. "နကဵုတံသ္ဇိုၚ်ဂမၠိုၚ်", sort = sortkey}) end end else insert(ret, {name = "ကဏ္ဍ:" .. fam:getCategoryName(), sort = sortkey}) if lang:hasType("reconstructed") then insert(ret, { name = "ကဏ္ဍ:အရေဝ်ဘာသာဗီုပြၚ်သိုၚ်တၟိဂမၠိုၚ်", sort = {sort_base = canonicalName, lang = "mnw"} -- ဘာသာအခိုက်ကၞာ-မန်-ခမေန် }) end end local function add_sc_cat(sc) -- ဘာသာ(ဒၞာဲစွံ)အက္ခရ်... insert(ret, {name = "ကဏ္ဍ:ဘာသာ" .. sc:getCategoryName(), sort = sortkey}) end local function add_Hrkt() add_sc_cat(Hrkt) add_sc_cat(Hira) add_sc_cat(Kana) end for _, sc in ipairs(lang:getScripts()) do if sc:getCode() == "Hrkt" then add_Hrkt() else add_sc_cat(sc) if sc:getCode() == "Jpan" then add_sc_cat(Hani) add_Hrkt() elseif sc:getCode() == "Kore" then add_sc_cat(Hang) add_sc_cat(Hani) end end end if lang:hasTranslit() then insert(ret, {name = "ကဏ္ဍ:ဘာသာမနွံကဵုပြၚ်လှာဲကၠာဲမအခဝ်အဝ်တဝ်", sort = sortkey}) end local function insert_location_language_cat(location) local cat = "အရေဝ်ဘာသာမဆေၚ်စပ်ကဵု" .. location .. "ဂမၠိုၚ်" insert(ret, {name = "ကဏ္ဍ:" .. cat, sort = sortkey}) local auto_cat_args = scrape_category_for_auto_cat_args(cat) local location_parent = auto_cat_args and auto_cat_args.parent if location_parent then local split_parents = require(parse_utilities_module).split_on_comma(location_parent) for _, parent in ipairs(split_parents) do parent = parent:match("^(.-):.*$") or parent insert_location_language_cat(parent) end end end local saw_location = false for _, location in ipairs(locations) do if location ~= "UNKNOWN" then saw_location = true insert_location_language_cat(location) end end if extinct then insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာမကၠေံဗ္ဒန်အာသီုဖ္အိုတ်ဂမၠိုၚ်", sort = sortkey}) end if not saw_location and not (lang:hasType("reconstructed") or (fam and fam:getCode() == "art")) then -- Constructed and reconstructed languages don't need a location specified and often won't have one, -- so don't put them in this maintenance category. insert(ret, {name = "ကဏ္ဍ:အရေဝ်ဘာသာဟွံဂွံစုတ်အဇာအပ္ဍဲကဏ္ဍဍုၚ်အတေံဏီ", sort = sortkey}) end return ret end local function get_children() local ret = {} -- FIXME: We should work on the children mechanism so it isn't necessary to manually specify these. --for _, label in ipairs({"appendices", "entry maintenance", "lemmas", "names", "phrases", "rhymes", "symbols", "templates", "terms by etymology", "terms by usage"}) do for _, label in ipairs({"အဆက်လက္ကရဴ", "ပရေၚ်မၚ်မွဲထိၚ်ဒက်", "ဝေါဟာအဓိက", "ယၟု", "ဝါကျ", "ကာရန်", "သၚ်္ကေတ", "ထာမ်ပလိက်", "မအရေဝ်ဗက်အလိုက်နိရုတ်", "မအရေဝ်ဗက်အလိုက်ပရေၚ်ရပ်စပ်"}) do insert(ret, {name = label, is_label = true}) end insert(ret, {name = "ဝေါဟာကၠုၚ်နူ{{{langcat}}}ဂမၠိုၚ်", is_label = true, lang = false}) insert(ret, {name = "{{{langcode}}}:က္ဍိုပ်လိက်ဖ္အိုတ်", sort = "က္ဍိုပ်လိက်ဖ္အိုတ်"}) insert(ret, {name = "လ္ပာ်ဘာသာ{{{langcat}}}"}) insert(ret, {name = "မအာတ်မိက်ဆေၚ်စပ်ကဵုဘာသာ{{{langcat}}}"}) insert(ret, {name = "ကာရန်:{{{langcat}}}", description = "စရၚ်ဆေၚ်စပ်ကဵုမအရေဝ်{{{langname}}}ဗက်အလိုက်ကာရန်တံဂမၠိုၚ်"}) insert(ret, {name = "ညးလွပ်{{{langcode}}}", description = "Wiktionary users categorized by fluency levels in {{{langdisp}}}."}) return ret end -- Handle language categories of the form e.g. [[:ကဏ္ဍ:French language]] and -- [[:ကဏ္ဍ:British Sign Language]]. insert(raw_handlers, function(data) local category = data.category if not (category:find("^ဘာသာ") or category:find("^လောၚ်တရး")) then return nil elseif category:find("^ဘာသာ") then --mnw category = mw.ustring.sub(category, 5) elseif category:find("^လောၚ်တရး") then --mnw category = mw.ustring.sub(category, 6) end local lang = m_languages.getByCanonicalName(category) if not lang then local langname = category:match("^ဂကောံဘာသာ(.*)$") if langname then lang = m_languages.getByCanonicalName(langname) end if not lang then return nil end end local args = require("Module:parameters").process(data.args, { [1] = {list = true}, ["setwiki"] = true, ["setwikt"] = true, ["setsister"] = true, ["entryname"] = true, ["extinct"] = {type = "boolean"}, }) -- If called from inside, don't require any arguments, as they can't be known -- in general and aren't needed just to generate the first parent (used for -- breadcrumbs). if #args[1] == 0 and not data.called_from_inside then -- At least one location must be specified unless the language is constructed (e.g. Esperanto) or reconstructed (e.g. Proto-Indo-European). local fam = lang:getFamily() if not (lang:hasType("reconstructed") or (fam and fam:getCode() == "art")) then error("At least one location (param 1=) must be specified for language '" .. lang:getCanonicalName() .. "' (code '" .. lang:getCode() .. "'). " .. "Use the value UNKNOWN if the language's location is truly unknown.") end end local description, topright, additional = "", "", "" -- If called from inside the category tree system, it's called when generating -- parents or children, and we don't need to generate the description or additional -- text (which is very expensive in terms of memory because it calls [[Module:family tree]], -- which calls [[Module:languages/data/all]]). if not data.called_from_inside then description, topright, additional = get_description_topright_additional( lang, args[1], args.extinct, args.setwiki, args.setwikt, args.setsister, args.entryname ) end return { canonical_name = lang:getCategoryName(), description = description, lang = lang:getCode(), topright = topright, additional = additional, breadcrumb = lang:getCanonicalName(), parents = get_parents(lang, args[1], args.extinct), extra_children = get_children(lang), umbrella = false, can_be_empty = true, }, true end) -- Handle categories such as [[:ကဏ္ဍ:Languages of Indonesia]]. insert(raw_handlers, function(data) local location = data.category:match("^ဘာသာဆေၚ်စပ်ကဵု(.+)$") if location then local args = require("Module:parameters").process(data.args, { ["flagfile"] = true, ["commonscat"] = true, ["wp"] = true, ["basename"] = true, ["parent"] = true, ["locationcat"] = true, ["locationlink"] = true, }) local topright local basename = args.basename or location:gsub(", .*", "") if args.flagfile ~= "-" then local flagfile_arg = args.flagfile or ("Flag of %s.svg"):format(basename) local files = require(parse_utilities_module).split_on_comma(flagfile_arg) local topright_parts = {} for _, file in ipairs(files) do local flagfile = "File:" .. file local flagfile_page = new_title(flagfile) if flagfile_page and flagfile_page.file.exists then insert(topright_parts, ("[[%s|right|100px|border]]"):format(flagfile)) elseif args.flagfile then error(("Explicit flagfile '%s' doesn't exist"):format(flagfile)) end end topright = concat(topright_parts) end if args.wp then local wp = require("Module:yesno")(args.wp, "+") if wp == "+" or wp == true then wp = data.category end if wp then local wp_topright = ("{{wikipedia|%s}}"):format(wp) if topright then topright = topright .. wp_topright else topright = wp_topright end end end if args.commonscat then local commonscat = require("Module:yesno")(args.commonscat, "+") if commonscat == "+" or commonscat == true then commonscat = data.category end if commonscat then local commons_topright = ("{{commonscat|%s}}"):format(commonscat) if topright then topright = topright .. commons_topright else topright = commons_topright end end end local bare_location = location:match("^the (.*)$") or location local location_link = args.locationlink or link_location(location) local bare_basename = basename:match("^the (.*)$") or basename local parents = {} if args.parent then local explicit_parents = require(parse_utilities_module).split_on_comma(args.parent) for i, parent in ipairs(explicit_parents) do local actual_parent, sort_key = parent:match("^(.-):(.*)$") if actual_parent then parent = actual_parent sort_key = sort_key:gsub("%+", bare_location) else sort_key = " " .. bare_location end insert(parents, {name = "အရေဝ်ဘာသာဆေၚ်စပ်ကဵု" .. parent, sort = sort_key}) end else insert(parents, {name = "အရေဝ်ဘာသာဗက်အလိုက်ဍုၚ်ရး", sort = {sort_base = bare_location, lang = "mnw"}}) end if args.locationcat then local explicit_location_cats = require(parse_utilities_module).split_on_comma(args.locationcat) for i, locationcat in ipairs(explicit_location_cats) do insert(parents, {name = "ကဏ္ဍ:" .. locationcat, sort = " ဘာသာ"}) end else local location_cat = ("ကဏ္ဍ:%s"):format(bare_location) local location_page = new_title(location_cat) if location_page and location_page.exists then insert(parents, {name = location_cat, sort = "ဘာသာ"}) end end local description = ("Categories for languages of %s (including sublects)."):format(location_link) return { topright = topright, description = description, parents = parents, breadcrumb = bare_basename, additional = "{{{umbrella_msg}}}", }, true end end) -- Handle categories such as [[:ကဏ္ဍ:English-based creole or pidgin languages]]. insert(raw_handlers, function(data) local langname = data.category:match("(.*)%-based creole or pidgin languages$") if langname then local lang = m_languages.getByCanonicalName(langname) if lang then return { lang = lang:getCode(), description = "Languages which developed as a [[creole]] or [[pidgin]] from " .. lang:makeCategoryLink() .. ".", parents = {{name = "ဘာသာခရေဝ်အဝ် ဝါ ဖှေတ်ကျေန်ဂမၠိုၚ်", sort = {sort_base = "*" .. langname, lang = "mnw"}}}, breadcrumb = lang:getCanonicalName() .. "-based", } end end end) -- Handle categories such as [[:ကဏ္ဍ:English-based constructed languages]]. insert(raw_handlers, function(data) local langname = data.category:match("(.*)%-based constructed languages$") if langname then local lang = m_languages.getByCanonicalName(langname) if lang then return { lang = lang:getCode(), description = "Constructed languages which are based on " .. lang:makeCategoryLink() .. ".", parents = {{name = "အရေဝ်ဘာသာခၞံဗဒှ်လဝ်ဂမၠိုၚ်", sort = {sort_base = "*" .. langname, lang = "mnw"}}}, breadcrumb = lang:getCanonicalName() .. "-based", } end end end) return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers} p26gl9vyyi48iajzxxl4nt3z22qhxty ထာမ်ပလိက်:rhyme-top 10 43837 397429 144724 2026-06-22T17:28:41Z 咽頭べさ 33 397429 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters --><div class="rhymes-list-begin ul-column-count" data-column-count="{{{1|3}}}"><noinclude></div>{{documentation}}</noinclude> pidhn5yufu3vmb4xad3bf4dcdotxm2z ကဏ္ဍ:ထာမ်ပလိက်မေတဂမၠိုၚ် 14 66390 397431 162944 2026-06-22T17:34:40Z 咽頭べさ 33 397431 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx မဝ်ဂျူ:rhymes/styles.css 828 114296 397435 146840 2026-06-22T17:41:25Z 咽頭べさ 33 397435 sanitized-css text/css .ts-rhymesBreadcrumbs { display: table; margin-bottom: 0.5em; padding-bottom: 0.2em; border-bottom: 1px solid var(--wikt-palette-lightgrey,#c8ccd1); font-size: 0.92857143em; /* 13 / 14 */ } .ts-rhymesBreadcrumbs ol { margin: 0; padding-left: 0; list-style: none; } .ts-rhymesBreadcrumbs li { display: inline-flex; align-items: baseline; margin: 0; } .ts-rhymesBreadcrumbs li + li::before { content: "»"; color: var(--wikt-palette-darkgrey,#54595d); margin: 0 0.38461538em; /* 5 / 13 */ } .ts-rhymesBreadcrumbs a { white-space: nowrap; } 4vzo5hxhknnd3wapl8jk8ovnrjo0pq6 𮜍 0 210355 397443 288944 2026-06-23T07:48:19Z Hiyuune 1535 397443 wikitext text/x-wiki {{character info}} ==မအရေဝ်ပံၚ်ကောံ== ===အက္ခရ်ကြုက်=== {{Han char|rn=157|rad=足|as=11|sn=|four=|canj=|ids=⿰𧾷⿱罒羽}} ====နိဿဲ==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=2E70D}} s9rxho39hrwatsug26uhvgp1dqjteuy grafon 0 296224 397420 2026-06-22T17:06:46Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|on}}" 397420 wikitext text/x-wiki ==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|on}} 5kgm7tm7ef3tixozmeeyepvvnhq8mbe grafoj 0 296225 397421 2026-06-22T17:07:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|oj}}" 397421 wikitext text/x-wiki ==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|oj}} 6l0itu3qq6w2de5pdsqa3lrg97if24c grafojn 0 296226 397422 2026-06-22T17:08:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|ojn}}" 397422 wikitext text/x-wiki ==အေက်သပရေန်တဝ်== ===နာမ်=== {{eo-head}} # {{eo-form of|graf|ojn}} frpr113oty5mprix9bh887taj2tla4s grafi 0 296227 397423 2026-06-22T17:09:44Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|grāfi|-grafi}} ==အဳတလဳ== ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràfi}} ===နာမ်=== {{head|it|noun form|g=m}} # {{plural of|it|grafo}} ===နာမ်=== {{head|it|noun form|g=m}} # {{plural of|it|grafio}}" 397423 wikitext text/x-wiki {{also|grāfi|-grafi}} ==အဳတလဳ== ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràfi}} ===နာမ်=== {{head|it|noun form|g=m}} # {{plural of|it|grafo}} ===နာမ်=== {{head|it|noun form|g=m}} # {{plural of|it|grafio}} p38cmdf45bgyfjk0hpy37artr2q2rq1 ကဏ္ဍ:ကာရန်:အဳတခ်လဳ/afi 14 296228 397424 2026-06-22T17:11:25Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » :ကဏ္ဍ:ကာ..." 397424 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » [[:ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|ကာရန်ဂမၠိုၚ်]] » -afi :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]]မနွံကာရန် [[ကာရန်:အဳတခ်လဳ/afi|-afi]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|afi]] hui2uqef9bcivd5u6knhkfmofcf8rlw ကာရန်:အဳတခ်လဳ/afi 106 296229 397425 2026-06-22T17:13:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|it|a|fi}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.fi/}} * {{hyphenation|it|-à|fi}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|grafi}} * {{l|en|pafi}} * {{l|en|sbafi}} * {{l|en|scafi}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== <!--Note: words in this section m..." 397425 wikitext text/x-wiki {{rhymes nav|it|a|fi}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.fi/}} * {{hyphenation|it|-à|fi}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|grafi}} * {{l|en|pafi}} * {{l|en|sbafi}} * {{l|en|scafi}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|aliscafi}} * {{l|en|batiscafi}} * {{l|en|cenotafi}} * {{l|en|motoscafi}} {{rhyme-bottom}} 0muc70isdochzsgxll4k4bilv2k50w2 grafio 0 296230 397426 2026-06-22T17:19:21Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==အဳတလဳ== ===နိရုတ်=== {{bor+|it|la|graphium}}၊ နူကဵုဝေါဟာ {{der|it|grc|γραφίον}} ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràfio}} ===နာမ်=== {{it-noun|m}} # {{lb|it|literary}} တၞိၚ်ပေါဲစက်။ ==ဂျာမာန်သၠုၚ်တြေံ== ===ပွံၚ်နဲတၞဟ်=== * {{alter|goh|grāfo|grāvo|grāvio|..." 397426 wikitext text/x-wiki ==အဳတလဳ== ===နိရုတ်=== {{bor+|it|la|graphium}}၊ နူကဵုဝေါဟာ {{der|it|grc|γραφίον}} ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràfio}} ===နာမ်=== {{it-noun|m}} # {{lb|it|literary}} တၞိၚ်ပေါဲစက်။ ==ဂျာမာန်သၠုၚ်တြေံ== ===ပွံၚ်နဲတၞဟ်=== * {{alter|goh|grāfo|grāvo|grāvio|grāphio|krāvio|grābo|crābo}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|goh|gmw-pro|*garāfijō}} ===နာမ်=== {{goh-noun|m|head=grāfio}} # တၠအဝဵု။ ===မဒုၚ်လွဳစ=== * {{desc|gmh|grâve}} ** {{desc|de|Graf}} ==သ္ပုၚ်== ===ကြိယာ=== {{head|es|verb form}} # {{es-verb form of|grafiar}} gudlsf4vf2x9857zzva0c3nkkq6afg8 397442 397426 2026-06-23T07:47:50Z Hiyuune 1535 397442 wikitext text/x-wiki ==အဳတလဳ== ===နိရုတ်=== {{bor+|it|la|graphium}}၊ နူကဵုဝေါဟာ {{der|it|grc|γραφίον}} ===ဗွဟ်ရမ္သာၚ်=== {{it-pr|gràfio}} ===နာမ်=== {{it-noun|m}} # {{lb|it|literary}} တၞိၚ်ပေါဲစက်။ ==ဂျာမာန်သၠုၚ်တြေံ== ===ပွံၚ်နဲတၞဟ်=== * {{alter|goh|grāfo|grāvo|grāvio|grāphio|krāvio|grābo|crābo}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|goh|gmw-pro|*garāfijō}} ===နာမ်=== {{goh-noun|m|head=grāfio}} # တၠအဝဵု။ ===မဒုၚ်လွဳစ=== * {{desc|gmh|grâve}} ** {{desc|de|Graf}} ==သ္ပုၚ်== ===ကြိယာ=== {{head|es|verb form}} # {{es-verb form of|grafiar}} s7i5oqivoni6mnb1lwx57ym8mux5b51 ကဏ္ဍ:ကာရန်:အဳတခ်လဳ/afjo 14 296231 397427 2026-06-22T17:20:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » :ကဏ္ဍ:ကာ..." 397427 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]] » [[:ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|ကာရန်ဂမၠိုၚ်]] » -afjo :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအဳတခ်လဳ|အဳတခ်လဳ]]မနွံကာရန် [[ကာရန်:အဳတခ်လဳ/afjo|-afjo]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:အဳတခ်လဳ|afjo]] kjubtz3kwmtbntwtg0k8454q7ov6ik3 ကာရန်:အဳတခ်လဳ/afjo 106 296232 397428 2026-06-22T17:23:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|it|a|fjo}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.fjo/}} * {{hyphenation|it|-à|fio}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|grafio}} * {{l|en|pafio}} * {{l|en|scafio}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== <!--Note: words in this section must be stre..." 397428 wikitext text/x-wiki {{rhymes nav|it|a|fjo}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|it|/ˈa.fjo/}} * {{hyphenation|it|-à|fio}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|grafio}} * {{l|en|pafio}} * {{l|en|scafio}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> {{rhyme-top}} * {{l|en|cenotafio}} {{rhyme-bottom}} eorw9shu2tkhe2wqgddrhrino2kl5ra ထာမ်ပလိက်:rhyme-top/documentation 10 296233 397430 2026-06-22T17:30:04Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ==See also== * {{temp|rhyme-bottom}} <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မုက်လိက်တိုၚ်ကရေက်ဂမၠိုၚ်]] [[ကဏ္ဍ:ထာမ်ပလိက်ကာရန်ဂမၠိုၚ်]] </includeonly>" 397430 wikitext text/x-wiki {{documentation subpage}} ==See also== * {{temp|rhyme-bottom}} <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မုက်လိက်တိုၚ်ကရေက်ဂမၠိုၚ်]] [[ကဏ္ဍ:ထာမ်ပလိက်ကာရန်ဂမၠိုၚ်]] </includeonly> 4k88ienhv3f50plidxfshe718ku0kb1 ထာမ်ပလိက်:no deprecated lang param usage/documentation 10 296234 397432 2026-06-22T17:35:18Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template should be used in conjunction with templates that accept the {{para|lang}} parameter as a deprecated alternative to {{para|1}} and have [[:Category:Successfully deprecated templates|successfully eliminated]] all such usages. Use is as follows: <pre>{{ {{#if:{{{lang|}}}|deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<TEMPLATE-CALL>}}</pre> If the..." 397432 wikitext text/x-wiki {{documentation subpage}} This template should be used in conjunction with templates that accept the {{para|lang}} parameter as a deprecated alternative to {{para|1}} and have [[:Category:Successfully deprecated templates|successfully eliminated]] all such usages. Use is as follows: <pre>{{ {{#if:{{{lang|}}}|deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<TEMPLATE-CALL>}}</pre> If the <code>lang</code> parameter is in usage, this formats the output of the template call with the <code>.deprecated</code> CSS class (which by default displays the output in olive green), precedes it with the text "deprecated use of {{para|lang}} parameter", adds a tooltip "This template call uses the deprecated 'lang' parameter. Use '1' instead." and categorizes the page in [[:Category:Pages using deprecated templates]]. Otherwise, the output is simply returned as normal. ''Note: the space between the two sets of <code><nowiki>{{</nowiki></code> at the beginning is mandatory, or else the parser will interpret it as <code><nowiki>{ {{{</nowiki></code>, which will not work.'' ==Parameters== * {{para|1}}: The template call. * {{para|lang}}: Pass-through of the {{para|lang}} parameter. ==See also== * {{tl|deprecated code}} * {{tl|deprecated lang param usage}} <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မထိၚ်ဒက်လဝ်ဂမၠိုၚ်]] [[ကဏ္ဍ:ထာမ်ပလိက်မေတဂမၠိုၚ်]] </includeonly> bp26csgqn7slsghy8cwuc1vn65zar62 ထာမ်ပလိက်:check deprecated lang param usage 10 296235 397434 2026-06-22T17:36:13Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ထာမ်ပလိက်:check deprecated lang param usage]] ဇရေင် [[ထာမ်ပလိက်:deprecated lang param usage]] 397434 wikitext text/x-wiki #REDIRECT [[ထာမ်ပလိက်:deprecated lang param usage]] ao8xgddq0ir4tza5qiq7up5vzzg0asc ကဏ္ဍ:မအရေဝ်လိက်ပတ်အဳတခ်လဳဂမၠိုၚ် 14 296236 397436 2026-06-22T17:44:31Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာအဳတခ်လဳ]]" 397436 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာအဳတခ်လဳ]] gbeqdk32838i2079b24yzbewkbbcs22 ညးလွပ်:配合比全额更好(说说而已) 2 296237 397440 2026-06-23T04:30:56Z 配合比全额更好(说说而已) 2376 ခၞံကၠောန်လဝ် မုက်လိက် နကု "မင်္ဂလာပါ!ငါ 配合比全额更好(说说而已)။" 397440 wikitext text/x-wiki မင်္ဂလာပါ!ငါ 配合比全额更好(说说而已)။ n1hszpkf0q58qa392zjg2mu7ww1uuwr cassavi 0 296238 397441 2026-06-23T07:46:56Z Hiyuune 1535 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==အဳတလဳ== ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|cassare||2|s|impf|indc}} ===ဝေါဟာလွာ=== * {{anagrams|it|a=aacissv|cavassi|vacassi}} ==လပ်တေန်== ===ကြိယာ=== {{head|la|verb form|head=cassāvī}} # {{inflection of|la|cassō||1|s|perf|act|ind}}" 397441 wikitext text/x-wiki ==အဳတလဳ== ===ကြိယာ=== {{head|it|verb form}} # {{inflection of|it|cassare||2|s|impf|indc}} ===ဝေါဟာလွာ=== * {{anagrams|it|a=aacissv|cavassi|vacassi}} ==လပ်တေန်== ===ကြိယာ=== {{head|la|verb form|head=cassāvī}} # {{inflection of|la|cassō||1|s|perf|act|ind}} kisy3p8ympxid3zmtj7neck1dseuv3i