ဝိက်ရှေန်နရဳ 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.14 case-sensitive မဳဒဳယာ တၟေင် ဓရီုကျာ ညးလွပ် ညးလွပ် ဓရီုကျာ ဝိက်ရှေန်နရဳ ဝိက်ရှေန်နရဳ ဓရီုကျာ ဝှာင် ဝှာင် ဓရီုကျာ မဳဒဳယာဝဳကဳ မဳဒဳယာဝဳကဳ ဓရီုကျာ ထာမ်ပလိက် ထာမ်ပလိက် ဓရီုကျာ ရီု ရီု ဓရီုကျာ ကဏ္ဍ ကဏ္ဍ ဓရီုကျာ အဆက်လက္ကရဴ အဆက်လက္ကရဴ ဓရီုကျာ ကာရန် ကာရန် ဓရီုကျာ အဘိဓာန် အဘိဓာန် ဓရီုကျာ ဗီုပြၚ်သိုၚ်တၟိ ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ TimedText TimedText talk မဝ်ဂျူ မဝ်ဂျူ ဓရီုကျာ Event Event talk မဝ်ဂျူ:IPA 828 772 400850 384226 2026-08-08T04:44:13Z 咽頭べさ 33 400850 Scribunto text/plain local export = {} local force_cat = false -- for testing local pages_module = "Module:pages" local pron_qualifier_module = "Module:pron qualifier" local qualifier_module = "Module:qualifier" local references_module = "Module:references" local string_utilities_module = "Module:string utilities" local syllables_module = "Module:syllables" local utilities_module = "Module:utilities" local m_data = mw.loadData("Module:IPA/data") local m_str_utils = require(string_utilities_module) local m_syllables -- [[Module:syllables]]; loaded below if needed local m_symbols = mw.loadData("Module:IPA/data/symbols") local concat = table.concat local decode_entities = m_str_utils.decode_entities local find = string.find local gmatch = m_str_utils.gmatch local gsub = string.gsub local insert = table.insert local is_preview = require(pages_module).is_preview local len = m_str_utils.len local listToText = mw.text.listToText local match = string.match local pattern_escape = m_str_utils.pattern_escape local sub = string.sub local u = m_str_utils.char local ugsub = m_str_utils.gsub local umatch = m_str_utils.match local usub = m_str_utils.sub local namespace = mw.title.getCurrentTitle().nsText local function is_content_page(lang, namespace) return namespace == "" or namespace == "ဗီုပြၚ်သိုၚ်တၟိ" or lang and lang:hasType("appendix-constructed") and namespace == "အဆက်လက္ကရဴ" end local function track(page) require("Module:debug/track")("IPA/" .. page) return true end local function process_maybe_split_categories(split_output, categories, prontext, lang, errtext) if split_output ~= "raw" then if categories[1] then categories = require(utilities_module).format_categories(categories, lang, nil, nil, force_cat) else categories = "" end end if split_output then -- for use of IPA in links, etc. if errtext then return prontext, categories, errtext else return prontext, categories end else return prontext .. (errtext or "") .. categories end end --[==[ Format a line of one or more IPA pronunciations as {{tl|IPA}} would do it, i.e. with a preceding {"IPA:"} followed by the word {"key"} linking to an Appendix page describing the language's phonology, and with an added category ` ``lang`` terms with IPA pronunciation`. Other than the extra preceding text and category, this is identical to {format_IPA_multiple()}, and the considerations described there in the documentation apply here as well. There is a single parameter `data`, an object with the following fields: * `lang`: Object representing the language of the pronunciations, which is used when adding cleanup categories for pronunciations with invalid phonemes; for determining how many syllables the pronunciations have in them, in order to add a category such as [[:Category:Italian 2-syllable words]] (for certain languages only); for adding a category ` ``lang`` terms with IPA pronunciation`; and for determining the proper sort keys for categories. Unlike for {format_IPA_multiple()}, `lang` may not be {nil}. * `items`: List of pronunciations, in exactly the same format as for {format_IPA_multiple()}. * `err`: If not {nil}, a string containing an error message to use in place of the link to the language's phonology. * `separator`: The default separator to use when separating formatted items. Defaults to {", "}. Does not apply to the first item, where the default separator is always the empty string. Overridden by the per-item `separator` field in `items`. * `sort_key`: Explicit sort key used for categories. * `no_count`: Suppress adding a {#-syllable words} category such as [[:Category:Italian 2-syllable words]]. Note that only certain languages add such categories to begin with, because it depends on knowing how to count syllables in a given language, which depends on the phonology of the language. Also, this does not suppress the addition of cleanup or other categories. If you need them suppressed, use `split_output` to return the categories separately and ignore them. * `split_output`: If not given, the return value is a concatenation of the formatted pronunciation and formatted categories. Otherwise, two values are returned: the formatted pronunciation and the categories. If `split_output` is the value {"raw"}, the categories are returned in list form, where the list elements are a combination of category strings and category objects of the form suitable for passing to {format_categories()} in [[Module:utilities]]. If `split_output` is any other value besides {nil}, the categories are returned as a pre-formatted concatenated string. * `include_langname`: If specified, prefix the result with the language name, followed by a colon. * `q`: {nil} or a list of left qualifiers (as in {{tl|q}}) to display at the beginning, before the formatted pronunciations and preceding {"IPA:"}. * `qq`: {nil} or a list of right qualifiers to display after all formatted pronunciations. * `a`: {nil} or a list of left accent qualifiers (as in {{tl|a}}) to display at the beginning, before the formatted pronunciations and preceding {"IPA:"}. * `aa`: {nil} or a list of right accent qualifiers to display after all formatted pronunciations. ]==] function export.format_IPA_full(data) if type(data) ~= "table" or data.getCode then error("Must now supply a table of arguments to format_IPA_full(); first argument should be that table, not a language object") end local lang = data.lang local items = data.items local err = data.err local separator = data.separator local sort_key = data.sort_key local no_count = data.no_count local split_output = data.split_output local q = data.q local qq = data.qq local a = data.a local aa = data.aa local include_langname = data.include_langname local hasKey = m_data.langs_with_infopages if not lang or not lang.getCode then error("Must specify language to format_IPA_full()") end local langname = lang:getCanonicalName() local prefix_text if err then prefix_text = '<span class="error">' .. err .. '</span>' else if hasKey[lang:getCode()] then prefix_text = "အဆက်လက္ကရဴ:ပ္တိတ်ရမျာၚ်" .. langname else prefix_text = "ဝဳကဳပဳဒဳယာ:ပညာရမျာၚ်" .. langname end prefix_text = "[[" .. prefix_text .. "|key]]" end local prefix = "[[ရီု:IPA-Mon|IPA]]<sup>(" .. prefix_text .. ")</sup>:&#32;" local IPAs, categories = export.format_IPA_multiple(lang, items, separator, no_count, "raw") if is_content_page(lang, namespace) then insert(categories, { cat ="ဝေါဟာ" .. langname .. "ပ္တိတ်ရမျာၚ် IPA ဂမၠိုၚ်", sort_key = sort_key }) end local prontext = prefix .. IPAs if q and q[1] or qq and qq[1] or a and a[1] or aa and aa[1] then prontext = require(pron_qualifier_module).format_qualifiers { lang = lang, text = prontext, q = q, qq = qq, a = a, aa = aa, } end if include_langname then prontext = langname .. ": " .. prontext end return process_maybe_split_categories(split_output, categories, prontext, lang) end local function split_phonemic_phonetic(pron) local reconstructed, phonemic, phonetic = match(pron, "^(%*?)(/.-/)%s+(%[.-%])$") if reconstructed then return reconstructed .. phonemic, reconstructed .. phonetic else return pron, nil end end local function determine_repr(pron) local reconstructed -- Temporarily remove any initial asterisk before representation marks, -- which avoids having to account for it in the data, but set the -- `reconstructed` flag. if sub(pron, 1, 1) == "*" then reconstructed = true pron = sub(pron, 2) end -- Some representation types have aliases for convenience (e.g. "// //" is -- an alias for "⫽ ⫽"). and these need to be substituted in before checking -- for other data. local opening, n = match(pron, "^.[\128-\191]*") local subs_data = m_data.representation_subs[opening] if subs_data then pron, n = ugsub(pron, subs_data[1], subs_data[2]) -- If the substitution was made, `opening` needs to be changed to the -- new opening character. if n ~= 0 then opening = subs_data[3] end end -- Get the type data based on the opening character (if any), and set the -- representation type if the closing character matches. local type_data, repr, closing = m_data.representation_types[opening] if type_data then closing = type_data[2] if type_data and match(pron, pattern_escape(closing) .. "$", #opening + 1) then repr = type_data[1] end end -- Default to the empty string. if not repr then opening, closing = "", "" end -- Reattach the asterisk if reconstructed. if reconstructed then pron = "*" .. pron end return pron, repr, opening, closing, reconstructed end local function hasInvalidSeparators(transcription) -- Escape certain characters as well as pauses, which have the format "(...)" (with any number of dots), to avoid false-positives. transcription = transcription:gsub(".[\128-\191]*", m_symbols.separator_escapes) :gsub("%(%.+%)", "\3") :gsub("[()]+", "") return ( transcription:find("..", nil, true) or transcription:match("%.%f[%z \1\2\3,:;]") or transcription:match("\1%f[%z \2\3,:;]") or transcription:match("\2%f[%z \1\3,:;]") or transcription:match("\3[:;]") or transcription:match("%f[^%z \1\2\3,]%.") ) and true or false end --[==[ Format a line of one or more bare IPA pronunciations (i.e. without any preceding {"IPA:"} and without adding to a category ` ``lang`` terms with IPA pronunciation`). Individual pronunciations are formatted using {format_IPA()} and are combined with separators, qualifiers, pre-text, post-text, etc. to form a line of pronunciations. Parameters accepted are: * `lang` is an object representing the language of the pronunciations, which is used when adding cleanup categories for pronunciations with invalid phonemes; for determining how many syllables the pronunciations have in them, in order to add a category such as [[:Category:Italian 2-syllable words]] (for certain languages only); and for computing the proper sort keys for categories. `lang` may be {nil}. * `items` is a list of pronunciations, each of which is an object with the following properties: ** `pron`: the pronunciation, in the same format as is accepted by {format_IPA()}, i.e. it should be either phonemic (surrounded by {/.../}), phonetic (surrounded by {[...]}), orthographic (surrounded by {⟨...⟩}) or a rhyme (beginning with a hyphen); ** `pretext`: text to display directly before the formatted pronunciation, inside of any qualifiers or accent qualifiers; ** `posttext`: text to display directly after the formatted pronunciation, inside of any qualifiers or accent qualifiers; ** `q` or `qualifiers`: {nil} or a list of left qualifiers (as in {{tl|q}}) to display before the formatted pronunciation; note that `qualifiers` is deprecated; ** `qq`: {nil} or a list of right qualifiers to display after the formatted pronunciation; ** `a`: {nil} or a list of left accent qualifiers (as in {{tl|a}}) to display before the formatted pronunciation; ** `aa`: {nil} or a list of right accent qualifiers to after before the formatted pronunciation; ** `refs`: {nil} or a list of references or reference specs to add after the pronunciation and any posttext and qualifiers; the value of a list item is either a string containing the reference text (typically a call to a citation template such as {{tl|cite-book}}, or a template wrapping such a call), or an object with fields `text` (the reference text), `name` (the name of the reference, as in {{cd|<nowiki><ref name="foo">...</ref></nowiki>}} or {{cd|<nowiki><ref name="foo" /></nowiki>}}) and/or `group` (the group of the reference, as in {{cd|<nowiki><ref name="foo" group="bar">...</ref></nowiki>}} or {{cd|<nowiki><ref name="foo" group="bar"/></nowiki>}}); this uses a parser function to format the reference appropriately and insert a footnote number that hyperlinks to the actual reference, located in the {{cd|<nowiki><references /></nowiki>}} section; ** `gloss`: {nil} or a gloss (definition) for this item, if different definitions have different pronunciations; ** `pos`: {nil} or a part of speech for this item, if different parts of speech have different pronunciations; ** `separator`: the separator text to insert directly before the formatted pronunciation and all qualifiers, accent qualifiers and pre-text; defaults to the outer `separator` parameter. * `separator`: The default separator to use when separating formatted items. Defaults to {", "}. Does not apply to the first item, where the default separator is always the empty string. Overridden by the per-item `separator` field in `items`. * `no_count`: Suppress adding a {#-syllable words} category such as [[:Category:Italian 2-syllable words]]. Note that only certain languages add such categories to begin with, because it depends on knowing how to count syllables in a given language, which depends on the phonology of the language. Also, this does not suppress the addition of cleanup categories. If you need them suppressed, use `split_output` to return the categories separately and ignore them. * `split_output`: If not given, the return value is a concatenation of the formatted pronunciation and formatted categories. Otherwise, two values are returned: the formatted pronunciation and the categories. If `split_output` is the value {"raw"}, the categories are returned in list form, where the list elements are a combination of category strings and category objects of the form suitable for passing to {format_categories()} in [[Module:utilities]]. If `split_output` is any other value besides {nil}, the categories are returned as a pre-formatted concatenated string. ]==] function export.format_IPA_multiple(lang, items, separator, no_count, split_output) local categories = {} separator = separator or ", " if not lang then track("format-multiple-nolang") end -- Format if not items[1] then if namespace == "Template" then insert(items, {pron = "/aɪ piː ˈeɪ/"}) else -- insert(categories, "Pronunciation templates without a pronunciation") end end local bits = {} for i, item in ipairs(items) do local bit -- If the pronunciation is entirely empty, allow this and don't do anything, so that e.g. the pretext and/or -- posttext can be specified to force something like ''unknown'' to appear in place of the pronunciation -- (as happens e.g. when ? is used as a respelling in [[Module:ca-IPA]]; see [[guèiser]] for an example). if item.pron == "" then bit = "" else local item_categories, errtext bit, item_categories, errtext = export.format_IPA(lang, item.pron, "raw") bit = bit .. errtext for _, cat in ipairs(item_categories) do insert(categories, cat) end end if item.pretext then bit = item.pretext .. bit end if item.posttext then bit = bit .. item.posttext end local has_qualifiers = item.q and item.q[1] or item.qq and item.qq[1] or item.qualifiers and item.qualifiers[1] or item.a and item.a[1] or item.aa and item.aa[1] local has_gloss_or_pos = item.gloss or item.pos if has_qualifiers or has_gloss_or_pos then -- FIXME: Currently we tack the gloss and POS (in that order) onto the end of the regular left qualifiers. -- Should we do something different? local q = item.q if has_gloss_or_pos then q = mw.clone(item.q) or {} if item.gloss then local m_qualifier = require(qualifier_module) insert(q, m_qualifier.wrap_qualifier_css("“", "quote") .. item.gloss .. m_qualifier.wrap_qualifier_css("”", "quote")) end if item.pos then -- FIXME: Consider expanding aliases as found in [[Module:headword/data]] or similar. insert(q, item.pos) end end bit = require("Module:pron qualifier").format_qualifiers { lang = lang, text = bit, q = q, qq = item.qq, qualifiers = item.qualifiers, a = item.a, aa = item.aa, } end if item.note then -- Support removed on 2024-06-15. error("Support for `.note` has been removed; switch to `.refs` (which must be a list)") end if item.refs then local refspecs = item.refs if #refspecs > 0 then bit = bit .. require(references_module).format_references(refspecs) end end bit = (item.separator or (i == 1 and "" or separator)) .. bit insert(bits, bit) --[=[ [[Special:WhatLinksHere/Wiktionary:Tracking/IPA/syntax-error]] The length or gemination symbol should not appear after a syllable break or stress symbol. ]=] -- The nature of the following pattern match is such that we don't have to split a combined '/.../ [...]' spec -- into its parts in order to process. if match(item.pron, "[.\203][\136\140]?\203[\144\145]") then -- [.ˈˌ][ːˑ] track("syntax-error") end if lang then -- Add syllable count if the language's diphthongs are listed in [[Module:syllables]]. -- Don't do this if the term has spaces, a liaison mark (‿) or isn't in mainspace. if not no_count and namespace == "" then m_syllables = m_syllables or require(syllables_module) local langcode = lang:getCode() if m_data.langs_to_generate_syllable_count_categories[langcode] then local raw_phonemic, phonetic, use_it = split_phonemic_phonetic(item.pron) local phonemic, repr = determine_repr(raw_phonemic) if not phonetic then -- not a '/.../ [...]' combined pronunciation if m_data.langs_to_use_phonetic_notation[langcode] then use_it = repr == "phonetic" and phonemic or nil else use_it = repr == "phonemic" and phonemic or nil end elseif repr == "phonetic" then use_it = phonetic elseif repr == "phonemic" then use_it = phonemic end -- Note: two uses of find with plain patterns is much faster than umatch with [ ‿]. if use_it and not (find(use_it, " ") or find(use_it, "‿")) then local syllable_count = m_syllables.getVowels(use_it, lang) if syllable_count then -- insert(categories, lang:getCanonicalName() .. " " .. syllable_count .. -- "-syllable words") end end end end end end return process_maybe_split_categories(split_output, categories, concat(bits), lang) end --[=[ Format a single IPA pronunciation, which cannot be a combined spec (such as {/.../ [...]}). This has been extracted from {format_IPA()} to allow the latter to handle such combined specs. This works like {format_IPA()} but requires that pre-created {err} (for error messages) and {categories} lists be passed in, and adds any generated error messages and categories to those lists. A single value is returned, the pronunciation, which is usually the same as passed in, but may have HTML added surrounding invalid characters so they appear in red. ]=] local function format_one_IPA(lang, raw_pron, err, categories) -- Disallow wikilinks. if match(raw_pron, "%[%[.-%]%]") then error("IPA input must not contain wikilinks.") end raw_pron = decode_entities(raw_pron) -- Detect the type of transcription. local pron, repr, opening, closing, reconstructed = determine_repr(raw_pron) -- Strip any reconstruction asterisk and representation marks. pron = sub(pron, #opening + 1 + (reconstructed and 1 or 0), -#closing - 1) if not repr then -- insert(categories, "IPA pronunciations with invalid representation marks") -- insert(err, "invalid representation marks") -- Removed because it's annoying when previewing pronunciation pages. end if repr ~= "orthographic" and lang and lang:getCode() == "en" and hasInvalidSeparators(pron) then -- insert(categories, "English IPA pronunciations with invalid separators") end if pron == "" then insert(categories, "ပရေၚ်ပ္တိတ်ရမျာၚ် IPA ဟွံမွဲကဵုပရေၚ်ပ္တိတ်ရမျာၚ်ပစ္စုပ္ပန်ဏီ") end -- Check for obsolete and nonstandard symbols for _, symbol in ipairs(m_data.nonstandard) do local result for nonstandard in gmatch(pron, symbol) do if not result then result = {} end insert(result, nonstandard) -- insert(categories, -- {cat = "IPA pronunciations with obsolete or nonstandard characters", sort_key = nonstandard} -- ) end if result then insert(err, "obsolete or nonstandard characters (" .. concat(result) .. ")") break end end --[[ Check for invalid symbols after removing the following: 1. wikilinks (handled above) 2. paired HTML tags 3. bolding 4. italics 5. asterisk at beginning of transcription 6. comma followed by spacing characters 7. superscripts enclosed in superscript parentheses ]] local found_HTML local result = gsub(pron, "<(%a+)[^>]*>([^<]+)</%1>", function(tagName, content) found_HTML = true return content end) result = gsub(result, "'''([^']*)'''", "%1") result = gsub(result, "''([^']*)''", "%1") result = gsub(result, "^%*", "") result = ugsub(result, ",%s+", "") -- VS15 local vs15_class = "[" .. m_symbols.add_vs15 .. "]" if umatch(pron, vs15_class) then local vs15 = u(0xFE0E) if find(result, vs15) then result = gsub(result, vs15, "") pron = gsub(pron, vs15, "") end pron = ugsub(pron, vs15_class, "%0" .. vs15) end if result ~= "" then if lang then -- Get the per_lang_valid data, and convert any per-language valid sequences to spaces. local per_lang_valid = m_symbols.per_lang_valid[lang:getCode()] if per_lang_valid then if type(per_lang_valid) == "table" then for _, pattern in pairs(per_lang_valid) do result = ugsub(result, pattern, " ") end else -- Should be a string. result = ugsub(result, per_lang_valid, " ") end end end local suggestions -- Check for any invalid sequences, excluding anything in the per-language lookup table. for k, v in pairs(m_symbols.invalid) do if find(result, k, nil, true) then if not suggestions then suggestions = {} end insert(suggestions, k .. " with " .. v) end end if suggestions and suggestions[1] then suggestions = listToText(suggestions) if is_content_page(lang, namespace) then error("Invalid IPA: replace " .. suggestions) end insert(err, "replace " .. suggestions) end -- Convert any valid character sequences to spaces for _, pattern in pairs(m_symbols.valid) do result = ugsub(result, pattern, " ") end if not match(result, "^ *$") then -- local category = "IPA pronunciations with invalid IPA characters" if not is_content_page(lang, namespace) then category = category .. "/non_mainspace" end insert(categories, category) insert(err, "invalid IPA characters (" .. result .. ")") end end if found_HTML then -- insert(categories, "IPA pronunciations with paired HTML tags") end if (repr == "phonemic" or repr == "rhyme") and lang and m_data.phonemes[lang:getCode()] then local valid_phonemes = m_data.phonemes[lang:getCode()] local rest = pron local phonemes = {} while #rest > 0 do local longestmatch, longestmatch_len = "", 0 local rest_init = sub(rest, 1, 1) if rest_init == "(" or rest_init == ")" then longestmatch = rest_init longestmatch_len = 1 else for _, phoneme in ipairs(valid_phonemes) do local phoneme_len = len(phoneme) if phoneme_len > longestmatch_len and usub(rest, 1, phoneme_len) == phoneme then longestmatch = phoneme longestmatch_len = len(longestmatch) end end end if longestmatch_len > 0 then insert(phonemes, longestmatch) rest = usub(rest, longestmatch_len + 1) else local phoneme = usub(rest, 1, 1) insert(phonemes, "<span style=\"color: var(--wikt-palette-red,red)\">" .. phoneme .. "</span>") rest = usub(rest, 2) -- insert(categories, "IPA pronunciations with invalid phonemes/" .. lang:getCode()) track("invalid phonemes/" .. phoneme) end end pron = concat(phonemes) end return (reconstructed and "*" or "") .. opening .. pron .. closing end --[==[ Format an IPA pronunciation. This wraps the pronunciation in appropriate CSS classes and adds cleanup categories and error messages as needed. The pronunciation `pron` should be either phonemic (surrounded by {/.../}), phonetic (surrounded by {[...]}), orthographic (surrounded by {⟨...⟩}), a rhyme (beginning with a hyphen) or a combined phonemic/phonetic spec (of the form {/.../ [...]}). `lang` indicates the language of the pronunciation and can be {nil}. If not {nil}, and the specified language has data in [[Module:IPA/data]] indicating the allowed phonemes, then the page will be added to a cleanup category and an error message displayed next to the outputted pronunciation. Note that {lang} also determines sort key processing in the added cleanup categories. If `split_output` is not given, the return value is a concatenation of the formatted pronunciation, error messages and formatted cleanup categories. Otherwise, three values are returned: the formatted pronunciation, the cleanup categories and the concatenated error messages. If `split_output` is the value {"raw"}, the cleanup categories are returned in list form, where the list elements are a combination of category strings and category objects of the form suitable for passing to {format_categories()} in [[Module:utilities]]. If `split_output` is any other value besides {nil}, the cleanup categories are returned as a pre-formatted concatenated string. ]==] function export.format_IPA(lang, pron, split_output) local err = {} local categories = {} -- `pron` shouldn't contain ref tags. if match(pron, "\127'\"`UNIQ%-%-ref%-[%dA-F]+%-QINU`\"'\127") then error("<ref> tags found inside pronunciation parameter.") end if not lang then track("format-nolang") end local phonemic, phonetic = split_phonemic_phonetic(pron) pron = format_one_IPA(lang, phonemic, err, categories) if phonetic then track("phonemic-phonetic") -- There's no benefit to supporting the "/.../ [...]" format within one parameter. phonetic = format_one_IPA(lang, phonetic, err, categories) pron = pron .. " " .. phonetic end if err[1] and is_preview() then err = '<span class="error" style="font-size: small;>&#32;' .. concat(err, ", ") .. "</span>" else err = "" end return process_maybe_split_categories(split_output, categories, '<span class="IPA nowrap">' .. pron .. "</span>", lang, err) end --[==[ Format a line of one or more enPR pronunciations as {{tl|enPR}} would do it, i.e. with a preceding {"enPR:"} (linked to [[Appendix:English pronunciation]]) followed by one or more formatted, comma-separated enPR pronunciations. The pronunciations are formatted by wrapping them in the `AHD` and `enPR` CSS classes and adding any left and right regular and accent qualifiers. In addition, the overall result is wrapped in any overall left and right regular and accent qualifiers. There is a single parameter `data`, an object with the following fields: * `items` is a list of enPR pronunciations, each of which is an object with the following properties: ** `pron`: the enPR pronunciation; ** `q`: {nil} or a list of left qualifiers (as in {{tl|q}}) to display before the formatted pronunciation; ** `qq`: {nil} or a list of right qualifiers to display after the formatted pronunciation; ** `a`: {nil} or a list of left accent qualifiers (as in {{tl|a}}) to display before the formatted pronunciation; ** `aa`: {nil} or a list of right accent qualifiers to after before the formatted pronunciation. * `q`: {nil} or a list of left qualifiers (as in {{tl|q}}) to display at the beginning, before the formatted pronunciations and preceding {"enPR:"}. * `qq`: {nil} or a list of right qualifiers to display after all formatted pronunciations. * `a`: {nil} or a list of left accent qualifiers (as in {{tl|a}}) to display at the beginning, before the formatted pronunciations and preceding {"enPR:"}. * `aa`: {nil} or a list of right accent qualifiers to display after all formatted pronunciations. ]==] function export.format_enPR_full(data) local prefix = "[[အဆက်လက္ကရဴ:ပ္တိတ်ရမျာၚ်အၚ်္ဂလိက်|enPR]]: " local lang = require("Module:languages").getByCode("en") local parts = {} for _, item in ipairs(data.items) do local part = '<span class="AHD enPR">' .. item.pron .. "</span>" if item.q and item.q[1] or item.qq and item.qq[1] or item.a and item.a[1] or item.aa and item.aa[1] then part = require("Module:pron qualifier").format_qualifiers { lang = lang, text = part, q = item.q, qq = item.qq, a = item.a, aa = item.aa, } end insert(parts, part) end local prontext = prefix .. concat(parts, ", ") if data.q and data.q[1] or data.qq and data.qq[1] or data.a and data.a[1] or data.aa and data.aa[1] then prontext = require(pron_qualifier_module).format_qualifiers { lang = lang, text = prontext, q = data.q, qq = data.qq, a = data.a, aa = data.aa, } end return prontext end return export lw6zm4mctrcxf4ixk5n67hjpgig5t1x ထာမ်ပလိက်:enPR 10 3663 400851 158675 2026-08-08T04:46:05Z 咽頭べさ 33 400851 wikitext text/x-wiki {{#if:{{{7|}}}{{{a|}}}{{{a1|}}}{{{a2|}}}{{{a3|}}}{{{a4|}}}{{{a5|}}}{{{a6|}}}{{{aa|}}}{{{aa1|}}}{{{aa2|}}}{{{aa3|}}}{{{aa4|}}}{{{aa5|}}}{{{aa6|}}}{{{q|}}}{{{q1|}}}{{{q2|}}}{{{q3|}}}{{{q4|}}}{{{q5|}}}{{{q6|}}}{{{qq|}}}{{{qq1|}}}{{{qq2|}}}{{{qq3|}}}{{{qq4|}}}{{{qq5|}}}{{{qq6|}}}|{{#invoke:IPA/templates|enPR}}|<!-- -->[[အဆက်လက္ကရဴ:ပ္တိတ်ရမျာၚ်အၚ်္ဂလိက်|enPR]]: {{enPRchar|{{{1}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> nt0ahmv2b1ngqe2c3xergfwi0oln7lq 400852 400851 2026-08-08T04:46:40Z 咽頭べさ 33 400852 wikitext text/x-wiki {{#if:{{{7|}}}{{{a|}}}{{{a1|}}}{{{a2|}}}{{{a3|}}}{{{a4|}}}{{{a5|}}}{{{a6|}}}{{{aa|}}}{{{aa1|}}}{{{aa2|}}}{{{aa3|}}}{{{aa4|}}}{{{aa5|}}}{{{aa6|}}}{{{q|}}}{{{q1|}}}{{{q2|}}}{{{q3|}}}{{{q4|}}}{{{q5|}}}{{{q6|}}}{{{qq|}}}{{{qq1|}}}{{{qq2|}}}{{{qq3|}}}{{{qq4|}}}{{{qq5|}}}{{{qq6|}}}|{{#invoke:IPA/templates|enPR}}|<!-- -->[[အဆက်လက္ကရဴ:ပ္တိတ်ရမျာၚ်အၚ်္ဂလိက်|ပ္တိတ်ရမျာၚ်အၚ်္ဂလိက်]]: {{enPRchar|{{{1}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> edgq89fy2gfjhnlx1bkzr5hzgm5ijgs မဝ်ဂျူ:sa-decl 828 26094 400861 398200 2026-08-08T05:29:56Z 咽頭べさ 33 400861 Scribunto text/plain local export = {} local m_para = require("Module:parameters") local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("sa") local m_script_utils = require("Module:script utilities") local sa_decl_data = require("Module:sa-decl/data") local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST") local sa_utils_translit = require("Module:sa-utilities/translit") local PAGENAME = mw.loadData("Module:headword/data").pagename local sub = mw.ustring.sub local gsub = mw.ustring.gsub local match = mw.ustring.match local len = mw.ustring.len local accent = '[/\\]' local genders = { m = 'ပုလ္လိၚ်', f = 'ဣတ္တိလိၚ်', n = 'နပုလ္လိၚ်', gneut = 'လိၚ်ဆေၚ်စပ်ကဵုနပုလ္လိၚ်' } local cases = { { 'nom', 'မဒုၚ်ယၟု' }, { 'acc', 'ကမ္မကာရက' }, { 'ins', 'တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက်' }, { 'dat', 'ပြကမ္မကာရက' }, { 'abl', 'ပရေၚ်မလၚ်' }, { 'gen', 'ဗဳဇဂကူ' }, { 'loc', 'ပရေၚ်ဂယိုၚ်လမျီု' }, { 'voc', 'ပရေၚ်ဂယိုၚ်လမျီု' } } local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'} local function to_super(num) local annotation = gsub(num, ".", super_nums) return annotation end local function get_form_note_tags(form_notes, data) local output = {} if type(form_notes) ~= 'table' then form_notes = { form_notes } end for _, form_note in ipairs(form_notes) do if type(data.form_notes[form_note]) ~= "number" then table.insert(data.form_notes_out, form_note) data.form_notes[form_note] = #data.form_notes_out end table.insert(output, to_super(data.form_notes[form_note])) end return table.concat(output) end local function make_header(args, data, sc_cache) local width = '40' local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, "")) local title = genders[args.g] .. ' ' .. ' ' .. data.decl_type .. ' မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု ' .. m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc }) local header = { mw.getCurrentFrame():expandTemplate { title = 'inflection-table-top', args = { title = title, palette = 'blue', tall = 'yes', } } } table.insert(header, '!\n') if args.n:find('s') then table.insert(header, '! ကိုန်ဨကဝုစ်\n') end if args.n:find('d') then table.insert(header, '! ၜါလ္ပာ်\n') end if args.n:find('p') then table.insert(header, '! ကိုန်ဗဟုဝစ်\n') end return table.concat(header) end local function make_cell(args, data, code, num, sc_cache) local tag = code .. '_' .. num local forms, links, trs = {}, {}, {} if args[tag] then forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*') else forms = data.forms[tag] end if not forms then error("Internal error: No forms for slot '" .. tag .. "'") end for i, form in ipairs(forms) do if form == "" then -- in case of form reduced to zero by 'novedic' parameter -- do nothing else local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data) -- a superscript number at the end of manually added forms should not be part of the (linked) form if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then extra_note_tag = gsub(form, "^.+(.)$", "%1") form = gsub(form, ".$", "") else extra_note_tag = "" end if form == "-" then table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc })) else -- strip accent before reverse tr for non-Deva scripts local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, "")) table.insert(links, m_links.full_link({ term = reverse_trd, alt = reverse_trd .. form_note_tag .. extra_note_tag, tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag, lang = lang, sc = sc_cache.sc })) end end end return table.concat { '| ', table.concat(links, '<br>'), '\n' } end local function format_notes(args, data) local output = {} if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then for i, form_note in ipairs(data.form_notes_out) do table.insert(output, '* ' .. to_super(i) .. form_note) end for _, general_note in ipairs(data.general_notes) do table.insert(output, '* ' .. general_note) end for _, note in ipairs(args.note) do table.insert(output, '* ' .. note) end return table.concat(output, '\n') .. '\n' else return '' end end local function make_table_noun(args, data, sc_cache) local output = { make_header(args, data, sc_cache) } for _, case in ipairs(cases) do local code, name = case[1], case[2] table.insert(output, '|-\n') table.insert(output, '! ' .. name .. '\n') if args.n:find('s') then table.insert(output, make_cell(args, data, code, 's', sc_cache)) end if args.n:find('d') then table.insert(output, make_cell(args, data, code, 'd', sc_cache)) end if args.n:find('p') then table.insert(output, make_cell(args, data, code, 'p', sc_cache)) end end table.insert(output, mw.getCurrentFrame():expandTemplate { title = 'inflection-table-bottom', args = { notes = format_notes(args, data) } }) if not args.nocat and #data.categories > 0 then table.insert(output, m_utils.format_categories(data.categories, lang)) end return table.concat(output) end local function get_sc_details(args) local sc, scCode if args.sc then sc = require("Module:scripts").getByCode(args.sc) scCode = args.sc else sc = lang:findBestScript(args.lemma) scCode = sc:getCode() if scCode == 'None' then sc = lang:findBestScript(PAGENAME) scCode = sc:getCode() if scCode == 'None' then return get_sc_details({sc = "Deva"}) end end end local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode) return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode } end function export.show(frame) local params = { lemma = { default = PAGENAME }, decl = true, n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} }, sc = true, [1] = { alias_of = 'lemma' }, nom_s = true, nom_d = true, nom_p = true, acc_s = true, acc_d = true, acc_p = true, ins_s = true, ins_d = true, ins_p = true, dat_s = true, dat_d = true, dat_p = true, abl_s = true, abl_d = true, abl_p = true, gen_s = true, gen_d = true, gen_p = true, loc_s = true, loc_d = true, loc_p = true, voc_s = true, voc_d = true, voc_p = true, note = { list = true }, root = { type = 'boolean' }, vrki = { type = 'boolean' }, -- for 'vṛkī' declension pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva' novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms nv = {alias_of = 'novedic'}, norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms r_stem_a = true, at_nom_s = { type = 'boolean' }, ambig_final = true, -- for stems on -j, -ś or -h diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh' participle = { type = 'boolean' }, contract = { type = 'boolean' }, han = { type = 'boolean' }, -- for root 'han' voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita adj = { type = 'boolean' }, -- internal argument for categorizing adjectives participle_n_nom_d = true, -- internal argument to pass on feminine as neuter nom.du. for participles participle_n_nom_d2 = true, nocat = true, } local data = { forms = {}, categories = {}, decl_type = nil, form_notes = {}, form_notes_out = {}, general_notes = {}, } local g = frame.args[1] if g == 'gneut' then -- no number spec for gender-neutral numerals params.n = nil end local args = m_para.process(frame:getParent().args, params) args.g = g if args.g == 'gneut' then args.n = 'p' -- plural number-only end if args.pronominal then args.root = false -- the pronominal endings override the usual declension pattern end local sc_cache = get_sc_details(args) args.lemma = sc_cache.tr(args.lemma) args.has_accent = match(args.lemma, accent) if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then args.voc_svar = true end for decl, decl_data in pairs(sa_decl_data) do if decl_data.detect(args) then sa_decl_data[decl](args, data) break end end if data.decl_type == nil then error("No declension class could be detected. Please check the lemma form or specify the declension.") end return make_table_noun(args, data, sc_cache) end return export fsjkk53b6enii8zqo9yfv6c3i2ebtrf မဝ်ဂျူ:sa-decl/data 828 26097 400862 398204 2026-08-08T05:38:29Z 咽頭べさ 33 400862 Scribunto text/plain local decl_data = {} local sa_utils = require("Module:sa-utilities") local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST") local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1") local match = string.match -- sufficient for SLP1 local umatch = mw.ustring.match -- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against -- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one -- argument (ARGS) that must return true for the detection to happen. local function make_detect(match_re, addl_condition) return function(args) if addl_condition and not addl_condition(args) then return false end local stem = match(args.lemma, match_re) if stem then args.stem = stem return true else return false end end end -- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are -- as follows: -- -- n = nominative -- a = accusative -- v = vocative -- i = instrumental -- d = dative -- ab = ablative -- g = genitive -- l = locative -- -- The corresponding value is one of the following: -- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number; -- 2. a single string (specifying an ending); or -- 3. a list of specs, where a spec is either a string (an ending) or a table of the form -- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what -- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional. -- -- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem. local function decline(args, data, sg, du, pl) local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"} local function process_number(endings, tag) if not endings then return end for case, es in pairs(endings) do if type(es) == "string" and es:find("^%[") then -- copy from another case; skip and handle later else if type(es) == "string" then es = {es} end local forms = {} for i, e in ipairs(es) do local stem, mono, accent_override, note if type(e) == "table" then stem = e.stem mono = e.mono accent_override = e.accent_override note = e.note e = e[1] end -- reduce Vedic forms to zero in case of novedic parameter if args.novedic == true and note and (match(note, "[Vv]edic$") or umatch(note, "Br[aā]hma[nṇ]a")) then stem = ""; e = ""; note = "" elseif args.norigvedic == true and note and match(note, "Rigvedic$") then stem = ""; e = ""; note = "" else if e:find("^%+") then if stem then error("Internal error: Can't use + in an ending when stem is explicitly given") end e = e:gsub("^%+", "") stem = args.lemma elseif not stem then stem = args.stem end forms[i] = sa_utils.internal_sandhi({ stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope, mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate, accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar, }) if note and note~= "" then forms["note" .. i] = note end end end data.forms[cases[case] .. "_" .. tag] = forms end end -- Now handle cases copied from another. for case, es in pairs(endings) do if type(es) == "string" and es:find("^%[") then -- copy from another case; skip and handle later local other_case = es:match("^%[(.*)%]$") if not other_case then error("Internal error: Unrecognized copy case spec " .. es) end local other_slot = other_case .. "_" .. tag local value = data.forms[other_slot] if not value then error("Internal error: Slot '" .. other_slot .. "' to copy from is empty") end local this_slot = cases[case] .. "_" .. tag if data.forms[this_slot] then error("Internal error: A value already exists for slot '" .. this_slot .. "' when copying from '" .. other_slot .. "'") end data.forms[cases[case] .. "_" .. tag] = value end end end process_number(sg, "s") process_number(du, "d") process_number(pl, "p") end decl_data["numeral"] = { detect = make_detect("(.+)a/?[nz]?$", function(args) return args.g == "gneut" end) } setmetatable(decl_data["numeral"], { __call = function(self, args, data) local oxy = match(args.lemma, "(/?)[nz]?$") local acc = match(args.lemma, "(/?)[^/]*$") data.decl_type = "numeral" if match(args.lemma, "a/?z$") then -- ṣaṣ decline(args, data, {}, {}, { n="+", a="[nom]", v="[nom]", i="aqBi" .. oxy .. "s", d="aqBya" .. oxy .. "s", ab="[dat]", g="aRRA" .. oxy .. "m", l="awsu" .. oxy, }) else -- pañca(n), etc. decline(args, data, {}, {}, { n="a" .. oxy, a="[nom]", v="a", i={{"a" .. acc .. "Bis", accent_override = true}}, d={{"a" .. acc .. "Byas", accent_override = true}}, ab="[dat]", g={{"AnA" .. acc .. "m", accent_override = true}}, l={{"a" .. acc .. "su", accent_override = true}}, }) end -- no categorisation? end }) decl_data["a"] = { detect = make_detect("(.+)a" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["a"], { __call = function(self, args, data) local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") if args.pronominal then data.decl_type = "pronominal a-stem" else data.decl_type = "a-stem" end if args.g == "m" then decline(args, data, { n="a" .. oxy .. "s", a="a" .. oxy .. "m", v="a" }, { n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } }, v={ "O", { "A", note = "Vedic" } } }, { a="A" .. oxy .. "n", }) if args.pronominal then decline(args, data, {}, {}, { n="e" .. oxy, v="e" }) else decline(args, data, {}, {}, { n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="Vedic"}}, v={"As", {"Asas", note="Vedic"}} }) end else decline(args, data, { n="a" .. oxy .. "m", a="[nom]", v="a" }, { n="e" .. oxy, v="e" }, { n={"A" .. oxy .. "ni", {"A" .. oxy, note="Vedic"}}, a="[nom]", v={"Ani", {"A", note="Vedic"}} }) end if args.pronominal then decline(args, data, { d="a" .. oxy .. "smE", ab="a" .. oxy .. "smAt", l="a" .. oxy .. "smin" }, {}, { g="e" .. oxy .. "zAm" }) else decline(args, data, { d="A" .. oxy .. "ya", ab="A" .. oxy .. "t", l="e" .. oxy }, {}, { g="A" .. oxy .. "nAm" }) end decline(args, data, { -- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā. -- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this -- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural. -- (detection of oxytone accent to avoid gerundives on -tva) i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "Vedic"}} or "e" .. oxy .. "na", g="a" .. oxy .. "sya" }, { a="[nom]", i="A" .. oxy .. "ByAm", d="[ins]", ab="[ins]", -- see Wackernagel III, p.98-99, §48a g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "Vedic"}} or "a" .. oxy .. "yos", l="[gen]" }, { i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "Vedic" } }, d="e" .. oxy .. "Byas", ab="[dat]", l="e" .. oxy .. "zu" }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit a-stem adjectives") else -- table.insert(data.categories, "Sanskrit a-stem nouns") end end }) decl_data["iu"] = { detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$") } setmetatable(decl_data["iu"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$") data.decl_type = vowel .. "-stem" -- for 'sákhi'; in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i' if match(args.lemma, "[sz]a/?Ki/?$") and not (args.decl and match(args.decl, "i")) then decline(args, data, { n="A" .. oxy, a="A" .. oxy .. "yam", i={{stem = args.stem .. vowel, "A" .. oxy }}, d={{stem = args.stem .. vowel, "e" .. oxy }}, ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }}, l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.) v="e", }, { n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}}, v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }}, }, { n="A" .. oxy .. "yas", v="Ayas", a="I" .. oxy .. "n", }) elseif args.g == "m" then -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^ari/$") or match(args.lemma, "^a/vi$") or match(args.lemma, "^kra/tu$") or match(args.lemma, "^paSu/$") or match(args.lemma, "^pitu/$") or match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") or match(args.lemma, "^Si/Su$") then decline(args, data, { i= { "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" }}, d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e" }, {stem = args.stem .. vowel, "e" .. oxy, note = "Vedic"}}, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { -- see Wackernagel III, p.146-7 i= (match(args.lemma, "^Urmi/$") or match(args.lemma, "^pavi/$") or match(args.lemma, "paraSu/")) and { "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" } } or "+nA", d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e" }}, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}}, -- code written like this for the case of 'titaü' }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "O" .. oxy, { "A" .. oxy, note = "Vedic"}}, -- Whitney §336f }, {}, {}) -- see Macdonell p.296 and Wackernagel III p.154 elseif match(args.lemma, "^a/nu$") or match(args.lemma, "^da/syu$") or match(args.lemma, "^trasa/dasyu$") or match(args.lemma, "^druhyu/$") or match(args.lemma, "^pa/vIru$") or match(args.lemma, "^vi/zRu$") or match(args.lemma, "^sUnu/$") then decline(args, data, { l={ "O" .. oxy, {"a" .. oxy .. "vi", note = "Rigvedic"}}, }, {}, {}) else decline(args, data, { l= "O" .. oxy }, {}, {}) end decline(args, data, { n="+s", a="+m", v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}}, }, { n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}}, v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}}, a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}}, v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}}, }) elseif args.g == "f" then if vowel == "i" then decline(args, data, { i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "Vedic"}}, -- Whitney §336c l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "Vedic"} }, }, {}, {}) else decline(args, data, { i={{stem = args.stem .. vowel, "A" .. oxy }}, l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } }, }, {}, {}) end decline(args, data, { n="+s", a="+m", -- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282) d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } }, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" }, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"} }, v=sa_utils.up_one_grade[vowel], }, { n=sa_utils.lengthen[vowel..oxy], v=sa_utils.lengthen[vowel], g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}}, a=sa_utils.lengthen[vowel..oxy] .. "s", v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}}, }) else -- neuter if args.adj == true then -- for difference with nouns see Whitney §344 -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") then decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}}, ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}}, }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f }, {}, {}) else decline(args, data, { l={ "+ni", "O" .. oxy}, }, {}, {}) end decline(args, data, {}, { g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }}, }, {}) else -- nouns -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^pa/Su$") or match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") then decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}}, }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "+ni", {"O" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f }, {}, {}) else decline(args, data, { l={ "+ni", {"O" .. oxy, note = "Vedic"}}, }, {}, {}) end decline(args, data, {}, { g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "Vedic" }}, }, {}) end decline(args, data, { n="+", a="[nom]", -- only 'mádhu' has Vedic instr.sg. on -ā i= match(args.lemma, "^ma/Du$") and { "+nA", {"+A", note = "Vedic" }} or "+nA", v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}}, }, { n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "Vedic" }}, v={ "+nI", {stem = args.stem .. vowel, "I", note = "Vedic" }}, }, { n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "Vedic"}, { stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "Vedic"}}, a="[nom]", v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "Vedic"}, { stem = args.stem .. sa_utils.lengthen[vowel], "", note = "Vedic"}}, }) end decline(args, data, { g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}}, l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. vowel .. "-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. vowel .. "-stem nouns") end end }) decl_data["A"] = { detect = function(args) if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["A"], { __call = function(self, args, data) local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") if args.g == "n" then -- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns. -- See Whitney §367b and Wackernagel vol.III p.129 error("The neuter of radical stems in -ā ends in -a.") end if args.pronominal then data.decl_type = "pronominal ā-stem" else data.decl_type = "ā-stem" end if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem if args.g == "m" then error("Add 'root=1' in case this is a root noun or adjective.") else -- table.insert(data.categories, "Sanskrit ā-stem nouns") end if args.pronominal then decline(args, data, { d="a" .. oxy .. "syE", ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "Brāhmaṇas"}}, l="a" .. oxy .. "syAm" }, {}, { g="+sAm" }) else decline(args, data, { d="+yE", ab={"+yAs", {"+yE", note = "Brāhmaṇas"}}, l="+yAm" }, {}, { g="+nAm" }) end decline(args, data, { n="+", i={ "a" .. oxy .. "yA", { "+", note = "Vedic" } }, v="e", }, { n="e" .. oxy, g="a" .. oxy .. "yos", v="e", }, { a="+s", }) else if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit root-stem adjectives on -ā") else -- table.insert(data.categories, "Sanskrit root-stem nouns on -ā") end if args.g == "m" then data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."} else data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."} end decline(args, data, { n="+s", i="+", d="e" .. oxy, ab="a" .. oxy .. "s", l="i" .. oxy, v="+s", }, { n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } }, g="o" .. oxy .. "s", v={ "O", { "A", note = "Vedic" } } }, { a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } }, g={ "+nAm", { "+Am", note = "Perhaps" } }, }) end decline(args, data, { a="+m", g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { n="+s", i="+Bis", d="+Byas", ab="[dat]", l="+su", v="+s", }) end }) decl_data["IU"] = { detect = function(args) if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["IU"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$") data.decl_type = SLP_to_IAST.tr(vowel) .. "-stem" if args.g == "n" then -- it seems better to mention the one or two Vedic forms that could be interpreted -- as coming from a neuter ī-stem (see Whitney §367b) separately error("The neuter of radical stems in -ī/ū ends in -i/u.") end if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension if vowel == "U" then error() elseif args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ī-stem adjectives with original vṛkī́-declension") else -- table.insert(data.categories, "Sanskrit ī-stem nouns with original vṛkī́-declension") end data.general_notes = {"This stem originally had ''vṛkī́''-declension."} decline(args, data, { n={"+", {"+s", note = "Vedic"}}, a={"+m", {"+am", note = "Vedic"}}, i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "Vedic"}}, -- Wackernagel III, §86c, p.170 }, { n={"+O", {"+A", note = "Vedic"}}, v={"+O", {"+A", note = "Vedic"}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}}, }, { n="+as", v="+as", a={"+s", {"+as", note = "Vedic"}}, g="+nAm", }) elseif vowel == "I" then -- devī-declension if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ī-stem adjectives") else -- table.insert(data.categories, "Sanskrit ī-stem nouns") end decline(args,data, { n="+", a="+m", i={{stem = args.stem .. vowel, "A" .. oxy}}, d={{stem = args.stem .. vowel, "E" .. oxy}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}}, }, { n={ "+O", { "+", note = "Vedic" } }, v={ "+O", { "+", note = "Vedic" } }, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={ "+as", { "+s", note = "Vedic" } }, v={ "+as", { "+s", note = "Vedic" } }, a="+s", g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "Rigvedic"} }, -- Whitney §319a }) else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189 if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ū-stem adjectives") -- probably only bahuvrihis like 'sarvatanū' else -- table.insert(data.categories, "Sanskrit ū-stem nouns") end if match(args.stem, "y$") or match(args.stem, "agr$") or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a decline(args,data, { a={"+m", {"+am", note = "Vedic", mono = true}}, i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic", mono = true}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic", mono = true}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic", mono = true}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic", mono = true}, {"+", note = "Vedic"}}, }, { n={"+O", {"+A", note = "Vedic", mono = true}}, v={"+O", {"+A", note = "Vedic", mono = true}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic", mono = true}}, }, { n={"+as", {"+as", note = "Vedic", mono = true}}, v={"+as", {"+as", note = "Vedic", mono = true}}, a={"+s", {"+as", note = "Vedic", mono = true}}, }) else decline(args,data, { a={"+m", {"+am", note = "Vedic"}}, i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic"}, {"+", note = "Vedic"}}, -- Wackernagel III, §97b, p.188 }, { n={"+O", {"+A", note = "Vedic"}}, -- duals on -ū for ū-stems do not occur v={"+O", {"+A", note = "Vedic"}}, g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}}, }, { n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma v="+as", a={"+s", {"+as", note = "Vedic"}}, }) end decline(args,data, { n="+s", }, {}, { g="+nAm", }) end decline(args, data, { g="[abl]", v=sa_utils.shorten[vowel], }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", l="+su", }) else if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit root-stem adjectives on -" .. SLP_to_IAST.tr(vowel)) else -- table.insert(data.categories, "Sanskrit root-stem nouns on -" .. SLP_to_IAST.tr(vowel)) end if args.true_mono then -- rout nouns, Whitney §351 no_syncope = true if args.g == "f" then -- see Wackernagel vol.III p.181 decline(args, data, { d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } }, ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } }, l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } }, }) else decline(args, data, { d={{ "+e" .. oxy, mono = true } }, ab={{ "+a" .. oxy .. "s", mono = true } }, l={{ "+i" .. oxy, mono = true } }, }) end decline(args, data, { i={{ "+A" .. oxy, mono = true}}, }, { i={{"+ByA" .. oxy .. "m", mono = true}}, g={{"+o" .. oxy .. "s", mono = true}}, }, { i={{"+Bi" .. oxy .. "s", mono = true}}, d={{"+Bya" .. oxy .. "s", mono = true}}, g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } }, l={{"+su" .. oxy, mono = true}}, }) else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur -- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288 -- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1' if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$")) or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then no_syncope = true -- -Ciy-/-Cuv- when followed by vowel decline(args, data, { l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i", }) else decline(args, data, { l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}} or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }}, }) end if args.g == "f" then -- see Wackernagel vol.III p.181 decline(args, data, { d={ "+e", { "+E", note = "Later Sanskrit" } }, ab={ "+as", { "+As", note = "Later Sanskrit" } }, }) else decline(args, data, { d= "+e", ab= "+as", }) end decline(args, data, { i= "+A", }, { i="+ByAm", g= "+os", }, { i="+Bis", d="+Byas", g= {"+Am", "+nAm"}, l="+su", }) end decline(args, data, { n= "+s", v= "+s", a= "+am", g="[abl]", }, { n= { "+O", { "+A", note = "Vedic"}}, v= { "+O", { "+A", note = "Vedic"}}, a="[nom]", d="[ins]", ab="[ins]", l="[gen]", }, { n= "+as", v= "+as", a="[nom]", ab="[dat]", }) end end }) decl_data["f"] = { -- for nouns in ṛ detect = make_detect("(.+)f" .. sa_utils.accent .. "?$") } setmetatable(decl_data["f"], { -- for nouns in ṛ __call = function(self, args, data) if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then error("The feminine of adjectives in -tṛ ends in -trī.") end local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") data.decl_type = SLP_to_IAST.tr("f") .. "-stem" if args.g == "n" then decline(args, data, { -- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.) -- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton n={"f" .. oxy, {"u" .. oxy .. "r", note = "Rigvedic"}}, a="[nom]", i={"+nA", "rA" .. oxy}, d={"+ne", "re" .. oxy}, ab={"+nas", "u" .. oxy .. "r"}, l={"+ni", "a" .. oxy .. "ri"}, v={ "f", "ar" }, }, { n="+nI", g={"+nos", "ro" .. oxy .. "s"}, v="+nI", }, { n="F" .. oxy .. "ni", a="[nom]", v="Fni", }) else if not args.r_stem_a then error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".') else args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a) end decline(args, data, { n="A" .. oxy, a=args.r_stem_a .. oxy .. "ram", i="rA" .. oxy, d="re" .. oxy, ab="u" .. oxy .. "r", l="a" .. oxy .. "ri", v="ar", }, { n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "Vedic" } }, g="ro" .. oxy .. "s", v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "Vedic" } }, }, { n=args.r_stem_a .. oxy .. "ras", a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n", v=args.r_stem_a .. "ras", }) end decline(args, data, { g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}}, l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem nouns") end end }) decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os detect = function(args) -- capture of vowel needed for accent if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args) or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true) or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt- or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args) or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát and args.g ~= "gneut" then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["root"], { __call = function(self, args, data) local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$") if match(cons, "[jSh]") ~= nil and not args.ambig_final then error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".') elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk args.ambig_final = IAST_to_SLP.tr(args.ambig_final) end local nasal = cons:gsub(".", sa_utils.homorganic_nasal) data.decl_type = "root-stem" root = true -- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns) if args.g == "n" then if match(cons, "[mr]") == nil and extra == "" then decline(args, data, nil, nil, { n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}}, v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}}, }) else decline(args, data, nil, nil, { n= "+i", v= "+i", }) end end if args.true_mono then -- monosyllabic stem if args.g ~= "n" then decline(args, data, { -- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392 -- this ending should be removed by internal_sandhi at an early stage n="+s", a="+am", v="+s", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as", }) else decline(args, data, { n= "+", a="[nom]", v= "+" }, { n= {{"+I" .. oxy, mono = true }}, v= "+I" }, { }) end decline(args, data, { i= {{ "+A" .. oxy, mono = true }}, d= {{ "+e" .. oxy, mono = true }}, ab= {{ "+a" .. oxy .. "s", mono = true }}, g="[abl]", l= {{ "+i" .. oxy, mono = true }}, }, { a= "[nom]", i= {{ "+ByA" .. oxy .. "m", mono = true }}, d="[ins]", ab="[ins]", g= {{ "+o" .. oxy .. "s", mono = true }}, l="[gen]", }, { a= "[nom]", i= {{ "+Bi" .. oxy .. "s", mono = true }}, d= {{ "+Bya" .. oxy .. "s", mono = true }}, ab="[dat]", g= {{ "+A" .. oxy .. "m", mono = true }}, l= {{ "+su" .. oxy, mono = true }}, }) else -- polysyllabic stem, no accent on ending if args.g ~= "n" then decline(args, data, { n="+s", a="+am", v="+s", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as" }) else decline(args, data, { n= "+", a="[nom]", v= "+" }, { n= "+I", v= "+I", }, { }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a= "[nom]", i= "+ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { a= "[nom]", i= "+Bis", d= "+Byas", ab="[dat]", g= "+Am", l= "+su", }) end if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit consonantal root-stem adjectives") else -- table.insert(data.categories, "Sanskrit consonantal root-stem nouns") end end }) decl_data["[aiu]s"] = { detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$") } setmetatable(decl_data["[aiu]s"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$") data.decl_type = vowel .. "s-stem" if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$")) and vowel == "a" then -- comparative comp = "1" else comp = "0" end if comp == "1" and args.g ~= "n" then if args.g == "m" then decline(args, data, { n="An", a="AMsam", v={"an", { "+", note = "Rigvedic"}}, }, { n={"AMsO", {"AMsA", note = "Vedic"}}, v={"AMsO", {"AMsA", note = "Vedic"}}, }, { n="AMsas", a="+as", v="AMsas", }) else error("The feminine of comparatives in -yas ends in -yasī.") end elseif args.g == "m" or args.g == "f" then if vowel == "a" then decline(args, data, { n="A" .. oxy .. "s", a={ "+am", { "A" .. oxy .. "m", note = "Vedic" } }, v="+", }, nil, { n={ "+as", { "A" .. oxy .. "s", note = "Vedic" } }, v={ "+as", { "A" .. oxy .. "s", note = "Vedic" } }, }) else decline(args, data, { n="+", a="+am", v={ "+",{ sa_utils.up_one_grade[vowel], note = "Vedic" } }, -- Wackernagel vol.III, p.292, §152c }, nil, { n="+as", v="+as", }) end decline(args, data, nil, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { a="[nom]", }) else if args.adj == true and vowel == "a" and comp == "0" and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then -- compounds on -as, see Macdonell, p.226 + Whitney §418 a decline(args, data, { n={ "+", { "A" .. oxy .. "s", note = "Vedic"} }, }, {}, {}) else decline(args, data, { n="+", }, {}, {}) end decline(args, data, { a="[nom]", v="+", }, { n="+I", v="+I", }, { n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}}, v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}}, a="[nom]", }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i= "+ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i= "+Bis", d= "+Byas", ab="[dat]", g="+Am", l= {{stem = args.stem .. vowel .. oxy, "Hsu"}, {stem = args.stem .. vowel .. oxy, "ssu"}}, }) if comp == "1" then table.insert(data.categories, "Sanskrit yas-stem adjectives") elseif args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem nouns") end end }) decl_data["an"] = { detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$", function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals } setmetatable(decl_data["an"], { __call = function(self, args, data) local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$") data.decl_type = "an-stem" stem_final_n = true if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") then args.contract = true end if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han' decline(args, data, { n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "Vedic"}} or "a" .. oxy, a="[nom]", v={ "+", "a" }, }, {}, { n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, a="[nom]", v={ "Ani", {"a", note = "Vedic"}, {"A", note = "Vedic"}}, }) if args.contract then decline(args, data, nil, { n={ "nI" .. oxy, "+I" }, v={ "nI", "+I" }, }, {}) else decline(args, data, nil, { n="+I", v="+I", }, {}) end else decline(args, data, { n="A" .. oxy, v="+", }) if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then decline(args, data, { a="a" .. oxy .. "nam", }, { n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "Vedic" } }, v={ "anO", { "anA", note = "Vedic" } }, }, { n="a" .. oxy .. "nas", v="anas", a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s", }) elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$") or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267 decline(args, data, { a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "Vedic" }}, }, { n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "Vedic" }, { "a" .. oxy .. "nA", note = "Vedic" } }, v={ "AnO", { "anO", note = "Vedic" }, { "anA", note = "Vedic" } }, }, { n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "Vedic" }}, v={"Anas", {"anas", note = "Vedic" }}, a= args.contract == true and "na" .. oxy .. "s" or "+as", }) else decline(args, data, { a="A" .. oxy .. "nam", }, { n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "Vedic" } }, v={ "AnO", { "AnA", note = "Vedic" } }, }, { n="A" .. oxy .. "nas", v="Anas", a= args.contract == true and "na" .. oxy .. "s" or "+as", }) end end if args.contract then decline(args, data, { i="nA" .. oxy, d="ne" .. oxy, ab="na" .. oxy .. "s", g="[abl]", l={ "ni" .. oxy, "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form }, { g="no" .. oxy .. "s", }, { g="nA" .. oxy .. "m", }) else decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l= { "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form }, { g="+os", }, { g="+Am", }) end decline(args, data, nil, { a="[nom]", i="a" .. oxy .. "ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="a" .. oxy .. "Bis", d="a" .. oxy .. "Byas", ab="[dat]", l="a" .. oxy .. "su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit an-stem adjectives") else -- table.insert(data.categories, "Sanskrit an-stem nouns") end end }) decl_data["in"] = { detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["in"], { __call = function(self, args, data) local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$") data.decl_type = "in-stem" stem_final_n = true if args.g ~= "n" then decline(args, data, { n="I" .. oxy, a="i" .. oxy .. "nam", v="+", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", a="[nom]", v="+as", }) else decline(args, data, { n="i" .. oxy, a="[nom]", v={ "i", "+" }, }, { n="+I", v="+I", }, { n="I" .. oxy .. "ni", a="[nom]", v="Ini", }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i="i" .. oxy .. "ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i="i" .. oxy .. "Bis", d="i" .. oxy .. "Byas", ab="[dat]", g="+Am", l="i" .. oxy .. "zu", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit in-stem adjectives") else -- table.insert(data.categories, "Sanskrit in-stem nouns") end end }) decl_data["at"] = { detect = function(args) if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args) or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t' and (args.g == "m" or args.g == "n") then return true else return false end end } setmetatable(decl_data["at"], { __call = function(self, args, data) local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$") -- for present participles if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then data.decl_type = "at-stem" if args.at_nom_s == true then -- participles like 'júhvat' if args.g ~= "n" then decline(args, data, { n="a" .. oxy .. "t", a="a" .. oxy .. "tam", v="at", }, { n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "Vedic"} }, v={ "atO", { "atA", note = "Vedic"} }, }, { n="a" .. oxy .. "tas", a="a" .. oxy .. "tas", v="atas", }) else decline(args, data, { n="a" .. oxy .. "t", a="[nom]", v="at", }, { n="a" .. oxy .. "tI", v="atI", }, { n="a" .. oxy .. "ti", a="[nom]", v="ati", }) end decline(args, data, { i="+A", d="+e", ab="+as", l="+i", }, { g="+os", }, { g="+Am", }) else if args.g ~= "n" then decline(args, data, { n= vow .. oxy .. "n", a= vow .. oxy .. "ntam", v= vow .. "n", }, { n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "Vedic"} }, v={ vow .. "ntO", { vow .. "ntA", note = "Vedic"} }, }, { n= vow .. oxy .. "ntas", a= vow .. "ta" .. oxy .. "s", v= vow .. "ntas", }) else if not args.participle_n_nom_d and not args.nom_d then error('Please indicate nominative dual (identical to feminine stem) with nom_d') else if args.nom_d then local s = mw.text.split(args.nom_d, ",") args.participle_n_nom_d = s[1] args.participle_n_nom_d2 = s[2] end -- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b) args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d) if args.participle_n_nom_d2 then args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2) decline(args, data, {}, { n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}}, v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}}, }, {}) else decline(args, data, {}, { n= {{stem = args.participle_n_nom_d, ""}}, v= {{stem = args.participle_n_nom_d, ""}}, }, {}) end if vow == "a" then decline(args, data, {}, {}, { n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 262 a="[nom]", v= {"anti", {"Anti", note = "Rigvedic"}}, }) else decline(args, data, {}, {}, { n= vow .. oxy .. "nti", a="[nom]", v= vow .. "nti", }) end end decline(args, data, { n= vow .. oxy .. "t", a="[nom]", v= vow .. "t", }, {}, {}) end decline(args, data, { i= vow .. "tA" .. oxy, d= vow .. "te" .. oxy, ab= vow .. "ta" .. oxy .. "s", l= vow .. "ti" .. oxy, }, { g= vow .. "to" .. oxy .. "s", }, { g= vow .. "tA" .. oxy .. "m", }) end decline(args, data, { g="[abl]", }, { a="[nom]", i= vow .. oxy .. "dByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i= vow .. oxy .. "dBis", d= vow .. oxy .. "dByas", ab="[dat]", l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit at-stem adjectives") else -- table.insert(data.categories, "Sanskrit at-stem nouns") end else -- for nouns suffixed with -vat/-mat data.decl_type = cons .. "at-stem" if args.g ~= "n" then decline(args, data, { n="A" .. oxy .. "n", a="a" .. oxy .. "ntam", v={ "an", { "as", note = "Rigvedic"} }, }, { n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "Vedic"} }, v={ "antO", { "antA", note = "Vedic"} }, }, { n="a" .. oxy .. "ntas", a="a" .. oxy .. "tas", v="antas", }) else decline(args, data, { n="a" .. oxy .. "t", a="[nom]", v="at", }, { n="+I", v="+I", }, { n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 258-9 a="[nom]", v={{"anti"}, {"Anti", note = "Rigvedic"}}, }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i="a" .. oxy .. "dByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i="a" .. oxy .. "dBis", d="a" .. oxy .. "dByas", ab="[dat]", g="+Am", l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. cons .. "at-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. cons .. "at-stem nouns") end end end }) decl_data["añc"] = { detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["añc"], { __call = function(self, args, data) local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$") data.decl_type = "añc-stem" -- make stem for 'middle' cases args.stem = args.stem:gsub("Yc$", "c") if args.g == "m" then decline(args, data, { n= "+", -- args.lemma a="+am", v= "+", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as", }) else -- neuter decline(args, data, { n= "", -- args.stem v= "", a="[nom]" }, {}, { n="+i", v="+i", a="[nom]" }) end decline(args, data, {}, { i= "ByAm", }, { i= "Bis", d= "Byas", l= "su", }) -- changing stem to weakest form if vowel == "A" then -- do nothing elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc") elseif cons ~= "" then args.stem = args.stem:gsub("([yv])a([/\\]?)c$", function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end) elseif match(args.stem, "dac$") then args.stem = args.stem:gsub("ac$", "Ic") else error("Not supported") end if vowel == "A" or oxy ~= "/" then if args.g == "m" then decline(args, data, nil, nil, { a="as", }) else -- neuter decline(args, data, nil, { n="I", v="I", }) end decline(args, data, { i="A", d="e", ab="as", l="i", }, { g="os", }, { g="Am", }) else -- oxytone accent, showing two possible accentuations (Whitney §410) if args.g == "m" then decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}} }) else decline(args, data, nil, { n= {"I", {"I" .. oxy, note = "Rigvedic", mono = true}}, v= "I", }) end decline(args, data, { i= {"A", {"A" .. oxy, note = "Rigvedic", mono = true}}, d= {"e", {"e" .. oxy, note = "Rigvedic", mono = true}}, ab= {"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}}, l= {"i", {"i" .. oxy, note = "Rigvedic", mono = true}}, }, { g= {"os", {"o" .. oxy .. "s", note = "Rigvedic", mono = true}}, }, { g= {"Am", {"A" .. oxy .. "m", note = "Rigvedic", mono = true}}, }) end decline(args, data, { g="[abl]" }, { a="[nom]", d="[ins]", ab="[ins]", l="[gen]", }, { ab="[dat]", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit añc-stem adjectives") end end }) decl_data["o"] = { detect = make_detect("(.+)o" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "f" end) } setmetatable(decl_data["o"], { -- 'gó' __call = function(self, args, data) local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$") data.decl_type = "o-stem" decline(args, data, { n="O" .. oxy .. "s", v="Os", a="A" .. oxy .. "m", i="+A", d="+e", ab="o" .. oxy .. "s", g="[abl]", l="+i", }, { n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "Vedic" } }, v={ "AvO", { "AvA", note = "Vedic" } }, a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", g= "+os", l="[gen]", }, { n="A" .. oxy .. "vas", a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } }, v="Avas", i="+Bis", d="+Byas", ab="[dat]", g={ "+Am", { "+nAm", note = "Vedic" } }, l="+su", }) -- table.insert(data.categories, "Sanskrit o-stem nouns") end }) decl_data["O"] = { detect = make_detect("(.+)O" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "f" end) } setmetatable(decl_data["O"], { __call = function(self, args, data) local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$") data.decl_type = "au-stem" decline(args, data, { n="+s", v="+s", a="+am", i= {{ "+A" .. oxy, mono = true }}, d= {{ "+e" .. oxy, mono = true }}, ab={{ "+a" .. oxy .. "s", mono = true }}, g="[abl]", l= {{ "+i" .. oxy, mono = true }}, }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, a="[nom]", i= {{"+ByA" .. oxy .. "m", mono = true }}, d="[ins]", ab="[ins]", g= {{ "+o" .. oxy .. "s", mono = true }}, l="[gen]", }, { n="+as", v="+as", a="[nom]", i= {{"+Bi" .. oxy .. "s", mono = true }}, d= {{"+Bya" .. oxy .. "s", mono = true }}, ab="[dat]", g= {{ "+A" .. oxy .. "m", mono = true }}, l= {{ "+su" .. oxy, mono = true }}, }) -- table.insert(data.categories, "Sanskrit au-stem nouns") end }) decl_data["vāṃs"] = { detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["vāṃs"], { __call = function(self, args, data) local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$") data.decl_type = "vāṃs-stem" local weak_stem if match(args.stem, "baBU$") or match(args.stem, "u$") then weak_stem = args.stem .. "v" elseif match(args.stem, "U$") then weak_stem = args.stem:gsub("U$", "uv") elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then weak_stem = args.stem -- the second 'i' of 'śiśrivāṃs' etc. is part of the root elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then weak_stem = args.stem:gsub("i$", "") else weak_stem = args.stem end if args.g == "m" then decline(args, data, { n= "vA" .. oxy .. "n", a= "vA" .. oxy .. "Msam", v={ "van", { "vas", note = "Rigvedic"} }, }, { n= "vA" .. oxy .. "MsO", a="[nom]", v= "vAMsO", }, { n= "vA" .. oxy .. "Msas", a={{stem = weak_stem, "u" .. oxy .. "zas"}}, v= "vAMsas", }) else decline(args, data, { n= "va" .. oxy .. "t", a="[nom]", v= "vat" }, { n={{stem = weak_stem, "u" .. oxy .. "zI"}}, a="[nom]", v={{stem = weak_stem, "uzI"}}, }, { n= "vA" .. oxy .. "MsI", a="[nom]", v= "vAMsI" }) end decline(args, data, { i={{stem = weak_stem, "u" .. oxy .. "zA"}}, d={{stem = weak_stem, "u" .. oxy .. "ze"}}, ab={{stem = weak_stem, "u" .. oxy .. "zas"}}, g="[abl]", l={{stem = weak_stem, "u" .. oxy .. "zi"}}, }, { i= "va" .. oxy .. "dByAm", d="[ins]", ab="[ins]", g={{stem = weak_stem, "u" .. oxy .. "zos"}}, l="[gen]" }, { i= "va" .. oxy .. "dBis", d= "va" .. oxy .. "dByas", ab="[dat]", g={{stem = weak_stem, "u" .. oxy .. "zAm"}}, l= "va" .. oxy .. "tsu" }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit vāṃs-stem adjectives") else -- table.insert(data.categories, "Sanskrit vāṃs-stem nouns") end end }) return decl_data 3jcafe9h5t36mce6v5rby7h9ars8y22 400863 400862 2026-08-08T06:39:22Z 咽頭べさ 33 400863 Scribunto text/plain local decl_data = {} local sa_utils = require("Module:sa-utilities") local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST") local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1") local match = string.match -- sufficient for SLP1 local umatch = mw.ustring.match -- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against -- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one -- argument (ARGS) that must return true for the detection to happen. local function make_detect(match_re, addl_condition) return function(args) if addl_condition and not addl_condition(args) then return false end local stem = match(args.lemma, match_re) if stem then args.stem = stem return true else return false end end end -- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are -- as follows: -- -- n = nominative -- a = accusative -- v = vocative -- i = instrumental -- d = dative -- ab = ablative -- g = genitive -- l = locative -- -- The corresponding value is one of the following: -- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number; -- 2. a single string (specifying an ending); or -- 3. a list of specs, where a spec is either a string (an ending) or a table of the form -- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what -- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional. -- -- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem. local function decline(args, data, sg, du, pl) local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"} local function process_number(endings, tag) if not endings then return end for case, es in pairs(endings) do if type(es) == "string" and es:find("^%[") then -- copy from another case; skip and handle later else if type(es) == "string" then es = {es} end local forms = {} for i, e in ipairs(es) do local stem, mono, accent_override, note if type(e) == "table" then stem = e.stem mono = e.mono accent_override = e.accent_override note = e.note e = e[1] end -- reduce Vedic forms to zero in case of novedic parameter if args.novedic == true and note and (match(note, "[Vv]edic$") or umatch(note, "Br[aā]hma[nṇ]a")) then stem = ""; e = ""; note = "" elseif args.norigvedic == true and note and match(note, "Rigvedic$") then stem = ""; e = ""; note = "" else if e:find("^%+") then if stem then error("Internal error: Can't use + in an ending when stem is explicitly given") end e = e:gsub("^%+", "") stem = args.lemma elseif not stem then stem = args.stem end forms[i] = sa_utils.internal_sandhi({ stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope, mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate, accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar, }) if note and note~= "" then forms["note" .. i] = note end end end data.forms[cases[case] .. "_" .. tag] = forms end end -- Now handle cases copied from another. for case, es in pairs(endings) do if type(es) == "string" and es:find("^%[") then -- copy from another case; skip and handle later local other_case = es:match("^%[(.*)%]$") if not other_case then error("Internal error: Unrecognized copy case spec " .. es) end local other_slot = other_case .. "_" .. tag local value = data.forms[other_slot] if not value then error("Internal error: Slot '" .. other_slot .. "' to copy from is empty") end local this_slot = cases[case] .. "_" .. tag if data.forms[this_slot] then error("Internal error: A value already exists for slot '" .. this_slot .. "' when copying from '" .. other_slot .. "'") end data.forms[cases[case] .. "_" .. tag] = value end end end process_number(sg, "s") process_number(du, "d") process_number(pl, "p") end decl_data["numeral"] = { detect = make_detect("(.+)a/?[nz]?$", function(args) return args.g == "gneut" end) } setmetatable(decl_data["numeral"], { __call = function(self, args, data) local oxy = match(args.lemma, "(/?)[nz]?$") local acc = match(args.lemma, "(/?)[^/]*$") data.decl_type = "numeral" if match(args.lemma, "a/?z$") then -- ṣaṣ decline(args, data, {}, {}, { n="+", a="[nom]", v="[nom]", i="aqBi" .. oxy .. "s", d="aqBya" .. oxy .. "s", ab="[dat]", g="aRRA" .. oxy .. "m", l="awsu" .. oxy, }) else -- pañca(n), etc. decline(args, data, {}, {}, { n="a" .. oxy, a="[nom]", v="a", i={{"a" .. acc .. "Bis", accent_override = true}}, d={{"a" .. acc .. "Byas", accent_override = true}}, ab="[dat]", g={{"AnA" .. acc .. "m", accent_override = true}}, l={{"a" .. acc .. "su", accent_override = true}}, }) end -- no categorisation? end }) decl_data["a"] = { detect = make_detect("(.+)a" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["a"], { __call = function(self, args, data) local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") if args.pronominal then data.decl_type = "pronominal a-stem" else data.decl_type = "တံမအရေဝ်(အ)" end if args.g == "m" then decline(args, data, { n="a" .. oxy .. "s", a="a" .. oxy .. "m", v="a" }, { n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } }, v={ "O", { "A", note = "Vedic" } } }, { a="A" .. oxy .. "n", }) if args.pronominal then decline(args, data, {}, {}, { n="e" .. oxy, v="e" }) else decline(args, data, {}, {}, { n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="Vedic"}}, v={"As", {"Asas", note="Vedic"}} }) end else decline(args, data, { n="a" .. oxy .. "m", a="[nom]", v="a" }, { n="e" .. oxy, v="e" }, { n={"A" .. oxy .. "ni", {"A" .. oxy, note="Vedic"}}, a="[nom]", v={"Ani", {"A", note="Vedic"}} }) end if args.pronominal then decline(args, data, { d="a" .. oxy .. "smE", ab="a" .. oxy .. "smAt", l="a" .. oxy .. "smin" }, {}, { g="e" .. oxy .. "zAm" }) else decline(args, data, { d="A" .. oxy .. "ya", ab="A" .. oxy .. "t", l="e" .. oxy }, {}, { g="A" .. oxy .. "nAm" }) end decline(args, data, { -- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā. -- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this -- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural. -- (detection of oxytone accent to avoid gerundives on -tva) i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "Vedic"}} or "e" .. oxy .. "na", g="a" .. oxy .. "sya" }, { a="[nom]", i="A" .. oxy .. "ByAm", d="[ins]", ab="[ins]", -- see Wackernagel III, p.98-99, §48a g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "Vedic"}} or "a" .. oxy .. "yos", l="[gen]" }, { i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "Vedic" } }, d="e" .. oxy .. "Byas", ab="[dat]", l="e" .. oxy .. "zu" }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit a-stem adjectives") else -- table.insert(data.categories, "Sanskrit a-stem nouns") end end }) decl_data["iu"] = { detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$") } setmetatable(decl_data["iu"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$") data.decl_type = vowel .. "-stem" -- for 'sákhi'; in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i' if match(args.lemma, "[sz]a/?Ki/?$") and not (args.decl and match(args.decl, "i")) then decline(args, data, { n="A" .. oxy, a="A" .. oxy .. "yam", i={{stem = args.stem .. vowel, "A" .. oxy }}, d={{stem = args.stem .. vowel, "e" .. oxy }}, ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }}, l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.) v="e", }, { n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}}, v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }}, }, { n="A" .. oxy .. "yas", v="Ayas", a="I" .. oxy .. "n", }) elseif args.g == "m" then -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^ari/$") or match(args.lemma, "^a/vi$") or match(args.lemma, "^kra/tu$") or match(args.lemma, "^paSu/$") or match(args.lemma, "^pitu/$") or match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") or match(args.lemma, "^Si/Su$") then decline(args, data, { i= { "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" }}, d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e" }, {stem = args.stem .. vowel, "e" .. oxy, note = "Vedic"}}, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { -- see Wackernagel III, p.146-7 i= (match(args.lemma, "^Urmi/$") or match(args.lemma, "^pavi/$") or match(args.lemma, "paraSu/")) and { "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" } } or "+nA", d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e" }}, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}}, -- code written like this for the case of 'titaü' }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "O" .. oxy, { "A" .. oxy, note = "Vedic"}}, -- Whitney §336f }, {}, {}) -- see Macdonell p.296 and Wackernagel III p.154 elseif match(args.lemma, "^a/nu$") or match(args.lemma, "^da/syu$") or match(args.lemma, "^trasa/dasyu$") or match(args.lemma, "^druhyu/$") or match(args.lemma, "^pa/vIru$") or match(args.lemma, "^vi/zRu$") or match(args.lemma, "^sUnu/$") then decline(args, data, { l={ "O" .. oxy, {"a" .. oxy .. "vi", note = "Rigvedic"}}, }, {}, {}) else decline(args, data, { l= "O" .. oxy }, {}, {}) end decline(args, data, { n="+s", a="+m", v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}}, }, { n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}}, v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}}, a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}}, v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}}, }) elseif args.g == "f" then if vowel == "i" then decline(args, data, { i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "Vedic"}}, -- Whitney §336c l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "Vedic"} }, }, {}, {}) else decline(args, data, { i={{stem = args.stem .. vowel, "A" .. oxy }}, l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } }, }, {}, {}) end decline(args, data, { n="+s", a="+m", -- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282) d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } }, ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" }, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"} }, v=sa_utils.up_one_grade[vowel], }, { n=sa_utils.lengthen[vowel..oxy], v=sa_utils.lengthen[vowel], g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}}, a=sa_utils.lengthen[vowel..oxy] .. "s", v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}}, }) else -- neuter if args.adj == true then -- for difference with nouns see Whitney §344 -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") then decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}}, ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}}, }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f }, {}, {}) else decline(args, data, { l={ "+ni", "O" .. oxy}, }, {}, {}) end decline(args, data, {}, { g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }}, }, {}) else -- nouns -- see Wackernagel III, p.138-9 ('flexion forte'); nom./acc.pl. on -as only to be given when attested if match(args.lemma, "^pa/Su$") or match(args.lemma, "^ma/Du$") or match(args.lemma, "^va/su$") then decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}}, }, {}, {}) else decline(args, data, { d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }}, ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}}, }, {}, {}) end if vowel == "i" then decline(args, data, { l={ "+ni", {"O" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f }, {}, {}) else decline(args, data, { l={ "+ni", {"O" .. oxy, note = "Vedic"}}, }, {}, {}) end decline(args, data, {}, { g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "Vedic" }}, }, {}) end decline(args, data, { n="+", a="[nom]", -- only 'mádhu' has Vedic instr.sg. on -ā i= match(args.lemma, "^ma/Du$") and { "+nA", {"+A", note = "Vedic" }} or "+nA", v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}}, }, { n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "Vedic" }}, v={ "+nI", {stem = args.stem .. vowel, "I", note = "Vedic" }}, }, { n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "Vedic"}, { stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "Vedic"}}, a="[nom]", v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "Vedic"}, { stem = args.stem .. sa_utils.lengthen[vowel], "", note = "Vedic"}}, }) end decline(args, data, { g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}}, l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. vowel .. "-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. vowel .. "-stem nouns") end end }) decl_data["A"] = { detect = function(args) if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["A"], { __call = function(self, args, data) local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") if args.g == "n" then -- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns. -- See Whitney §367b and Wackernagel vol.III p.129 error("The neuter of radical stems in -ā ends in -a.") end if args.pronominal then data.decl_type = "pronominal ā-stem" else data.decl_type = "တံမအရေဝ်(-ာ)" end if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem if args.g == "m" then error("Add 'root=1' in case this is a root noun or adjective.") else -- table.insert(data.categories, "Sanskrit ā-stem nouns") end if args.pronominal then decline(args, data, { d="a" .. oxy .. "syE", ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "Brāhmaṇas"}}, l="a" .. oxy .. "syAm" }, {}, { g="+sAm" }) else decline(args, data, { d="+yE", ab={"+yAs", {"+yE", note = "Brāhmaṇas"}}, l="+yAm" }, {}, { g="+nAm" }) end decline(args, data, { n="+", i={ "a" .. oxy .. "yA", { "+", note = "Vedic" } }, v="e", }, { n="e" .. oxy, g="a" .. oxy .. "yos", v="e", }, { a="+s", }) else if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit root-stem adjectives on -ā") else -- table.insert(data.categories, "Sanskrit root-stem nouns on -ā") end if args.g == "m" then data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."} else data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."} end decline(args, data, { n="+s", i="+", d="e" .. oxy, ab="a" .. oxy .. "s", l="i" .. oxy, v="+s", }, { n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } }, g="o" .. oxy .. "s", v={ "O", { "A", note = "Vedic" } } }, { a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } }, g={ "+nAm", { "+Am", note = "Perhaps" } }, }) end decline(args, data, { a="+m", g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { n="+s", i="+Bis", d="+Byas", ab="[dat]", l="+su", v="+s", }) end }) decl_data["IU"] = { detect = function(args) if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["IU"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$") data.decl_type = SLP_to_IAST.tr(vowel) .. "-stem" if args.g == "n" then -- it seems better to mention the one or two Vedic forms that could be interpreted -- as coming from a neuter ī-stem (see Whitney §367b) separately error("The neuter of radical stems in -ī/ū ends in -i/u.") end if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension if vowel == "U" then error() elseif args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ī-stem adjectives with original vṛkī́-declension") else -- table.insert(data.categories, "Sanskrit ī-stem nouns with original vṛkī́-declension") end data.general_notes = {"This stem originally had ''vṛkī́''-declension."} decline(args, data, { n={"+", {"+s", note = "Vedic"}}, a={"+m", {"+am", note = "Vedic"}}, i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "Vedic"}}, -- Wackernagel III, §86c, p.170 }, { n={"+O", {"+A", note = "Vedic"}}, v={"+O", {"+A", note = "Vedic"}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}}, }, { n="+as", v="+as", a={"+s", {"+as", note = "Vedic"}}, g="+nAm", }) elseif vowel == "I" then -- devī-declension if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ī-stem adjectives") else -- table.insert(data.categories, "Sanskrit ī-stem nouns") end decline(args,data, { n="+", a="+m", i={{stem = args.stem .. vowel, "A" .. oxy}}, d={{stem = args.stem .. vowel, "E" .. oxy}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}}, }, { n={ "+O", { "+", note = "Vedic" } }, v={ "+O", { "+", note = "Vedic" } }, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}}, }, { n={ "+as", { "+s", note = "Vedic" } }, v={ "+as", { "+s", note = "Vedic" } }, a="+s", g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "Rigvedic"} }, -- Whitney §319a }) else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189 if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit ū-stem adjectives") -- probably only bahuvrihis like 'sarvatanū' else -- table.insert(data.categories, "Sanskrit ū-stem nouns") end if match(args.stem, "y$") or match(args.stem, "agr$") or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a decline(args,data, { a={"+m", {"+am", note = "Vedic", mono = true}}, i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic", mono = true}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic", mono = true}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic", mono = true}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic", mono = true}, {"+", note = "Vedic"}}, }, { n={"+O", {"+A", note = "Vedic", mono = true}}, v={"+O", {"+A", note = "Vedic", mono = true}}, g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic", mono = true}}, }, { n={"+as", {"+as", note = "Vedic", mono = true}}, v={"+as", {"+as", note = "Vedic", mono = true}}, a={"+s", {"+as", note = "Vedic", mono = true}}, }) else decline(args,data, { a={"+m", {"+am", note = "Vedic"}}, i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}}, d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}}, ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}}, l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic"}, {"+", note = "Vedic"}}, -- Wackernagel III, §97b, p.188 }, { n={"+O", {"+A", note = "Vedic"}}, -- duals on -ū for ū-stems do not occur v={"+O", {"+A", note = "Vedic"}}, g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}}, }, { n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma v="+as", a={"+s", {"+as", note = "Vedic"}}, }) end decline(args,data, { n="+s", }, {}, { g="+nAm", }) end decline(args, data, { g="[abl]", v=sa_utils.shorten[vowel], }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", l="+su", }) else if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit root-stem adjectives on -" .. SLP_to_IAST.tr(vowel)) else -- table.insert(data.categories, "Sanskrit root-stem nouns on -" .. SLP_to_IAST.tr(vowel)) end if args.true_mono then -- rout nouns, Whitney §351 no_syncope = true if args.g == "f" then -- see Wackernagel vol.III p.181 decline(args, data, { d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } }, ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } }, l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } }, }) else decline(args, data, { d={{ "+e" .. oxy, mono = true } }, ab={{ "+a" .. oxy .. "s", mono = true } }, l={{ "+i" .. oxy, mono = true } }, }) end decline(args, data, { i={{ "+A" .. oxy, mono = true}}, }, { i={{"+ByA" .. oxy .. "m", mono = true}}, g={{"+o" .. oxy .. "s", mono = true}}, }, { i={{"+Bi" .. oxy .. "s", mono = true}}, d={{"+Bya" .. oxy .. "s", mono = true}}, g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } }, l={{"+su" .. oxy, mono = true}}, }) else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur -- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288 -- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1' if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$")) or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then no_syncope = true -- -Ciy-/-Cuv- when followed by vowel decline(args, data, { l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i", }) else decline(args, data, { l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}} or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }}, }) end if args.g == "f" then -- see Wackernagel vol.III p.181 decline(args, data, { d={ "+e", { "+E", note = "Later Sanskrit" } }, ab={ "+as", { "+As", note = "Later Sanskrit" } }, }) else decline(args, data, { d= "+e", ab= "+as", }) end decline(args, data, { i= "+A", }, { i="+ByAm", g= "+os", }, { i="+Bis", d="+Byas", g= {"+Am", "+nAm"}, l="+su", }) end decline(args, data, { n= "+s", v= "+s", a= "+am", g="[abl]", }, { n= { "+O", { "+A", note = "Vedic"}}, v= { "+O", { "+A", note = "Vedic"}}, a="[nom]", d="[ins]", ab="[ins]", l="[gen]", }, { n= "+as", v= "+as", a="[nom]", ab="[dat]", }) end end }) decl_data["f"] = { -- for nouns in ṛ detect = make_detect("(.+)f" .. sa_utils.accent .. "?$") } setmetatable(decl_data["f"], { -- for nouns in ṛ __call = function(self, args, data) if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then error("The feminine of adjectives in -tṛ ends in -trī.") end local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$") data.decl_type = SLP_to_IAST.tr("f") .. "-stem" if args.g == "n" then decline(args, data, { -- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.) -- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton n={"f" .. oxy, {"u" .. oxy .. "r", note = "Rigvedic"}}, a="[nom]", i={"+nA", "rA" .. oxy}, d={"+ne", "re" .. oxy}, ab={"+nas", "u" .. oxy .. "r"}, l={"+ni", "a" .. oxy .. "ri"}, v={ "f", "ar" }, }, { n="+nI", g={"+nos", "ro" .. oxy .. "s"}, v="+nI", }, { n="F" .. oxy .. "ni", a="[nom]", v="Fni", }) else if not args.r_stem_a then error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".') else args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a) end decline(args, data, { n="A" .. oxy, a=args.r_stem_a .. oxy .. "ram", i="rA" .. oxy, d="re" .. oxy, ab="u" .. oxy .. "r", l="a" .. oxy .. "ri", v="ar", }, { n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "Vedic" } }, g="ro" .. oxy .. "s", v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "Vedic" } }, }, { n=args.r_stem_a .. oxy .. "ras", a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n", v=args.r_stem_a .. "ras", }) end decline(args, data, { g="[abl]", }, { a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="+Bis", d="+Byas", ab="[dat]", g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}}, l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem nouns") end end }) decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os detect = function(args) -- capture of vowel needed for accent if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args) or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true) or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt- or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args) or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát and args.g ~= "gneut" then args.true_mono = sa_utils.is_monosyllabic(args.lemma) return true else return false end end } setmetatable(decl_data["root"], { __call = function(self, args, data) local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$") if match(cons, "[jSh]") ~= nil and not args.ambig_final then error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".') elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk args.ambig_final = IAST_to_SLP.tr(args.ambig_final) end local nasal = cons:gsub(".", sa_utils.homorganic_nasal) data.decl_type = "root-stem" root = true -- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns) if args.g == "n" then if match(cons, "[mr]") == nil and extra == "" then decline(args, data, nil, nil, { n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}}, v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}}, }) else decline(args, data, nil, nil, { n= "+i", v= "+i", }) end end if args.true_mono then -- monosyllabic stem if args.g ~= "n" then decline(args, data, { -- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392 -- this ending should be removed by internal_sandhi at an early stage n="+s", a="+am", v="+s", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as", }) else decline(args, data, { n= "+", a="[nom]", v= "+" }, { n= {{"+I" .. oxy, mono = true }}, v= "+I" }, { }) end decline(args, data, { i= {{ "+A" .. oxy, mono = true }}, d= {{ "+e" .. oxy, mono = true }}, ab= {{ "+a" .. oxy .. "s", mono = true }}, g="[abl]", l= {{ "+i" .. oxy, mono = true }}, }, { a= "[nom]", i= {{ "+ByA" .. oxy .. "m", mono = true }}, d="[ins]", ab="[ins]", g= {{ "+o" .. oxy .. "s", mono = true }}, l="[gen]", }, { a= "[nom]", i= {{ "+Bi" .. oxy .. "s", mono = true }}, d= {{ "+Bya" .. oxy .. "s", mono = true }}, ab="[dat]", g= {{ "+A" .. oxy .. "m", mono = true }}, l= {{ "+su" .. oxy, mono = true }}, }) else -- polysyllabic stem, no accent on ending if args.g ~= "n" then decline(args, data, { n="+s", a="+am", v="+s", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as" }) else decline(args, data, { n= "+", a="[nom]", v= "+" }, { n= "+I", v= "+I", }, { }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a= "[nom]", i= "+ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { a= "[nom]", i= "+Bis", d= "+Byas", ab="[dat]", g= "+Am", l= "+su", }) end if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit consonantal root-stem adjectives") else -- table.insert(data.categories, "Sanskrit consonantal root-stem nouns") end end }) decl_data["[aiu]s"] = { detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$") } setmetatable(decl_data["[aiu]s"], { __call = function(self, args, data) local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$") data.decl_type = vowel .. "တံမအရေဝ်(သ်)" if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$")) and vowel == "a" then -- comparative comp = "1" else comp = "0" end if comp == "1" and args.g ~= "n" then if args.g == "m" then decline(args, data, { n="An", a="AMsam", v={"an", { "+", note = "Rigvedic"}}, }, { n={"AMsO", {"AMsA", note = "Vedic"}}, v={"AMsO", {"AMsA", note = "Vedic"}}, }, { n="AMsas", a="+as", v="AMsas", }) else error("The feminine of comparatives in -yas ends in -yasī.") end elseif args.g == "m" or args.g == "f" then if vowel == "a" then decline(args, data, { n="A" .. oxy .. "s", a={ "+am", { "A" .. oxy .. "m", note = "Vedic" } }, v="+", }, nil, { n={ "+as", { "A" .. oxy .. "s", note = "Vedic" } }, v={ "+as", { "A" .. oxy .. "s", note = "Vedic" } }, }) else decline(args, data, { n="+", a="+am", v={ "+",{ sa_utils.up_one_grade[vowel], note = "Vedic" } }, -- Wackernagel vol.III, p.292, §152c }, nil, { n="+as", v="+as", }) end decline(args, data, nil, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { a="[nom]", }) else if args.adj == true and vowel == "a" and comp == "0" and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then -- compounds on -as, see Macdonell, p.226 + Whitney §418 a decline(args, data, { n={ "+", { "A" .. oxy .. "s", note = "Vedic"} }, }, {}, {}) else decline(args, data, { n="+", }, {}, {}) end decline(args, data, { a="[nom]", v="+", }, { n="+I", v="+I", }, { n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}}, v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}}, a="[nom]", }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i= "+ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i= "+Bis", d= "+Byas", ab="[dat]", g="+Am", l= {{stem = args.stem .. vowel .. oxy, "Hsu"}, {stem = args.stem .. vowel .. oxy, "ssu"}}, }) if comp == "1" then -- table.insert(data.categories, "Sanskrit yas-stem adjectives") elseif args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem nouns") end end }) decl_data["an"] = { detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$", function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals } setmetatable(decl_data["an"], { __call = function(self, args, data) local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$") data.decl_type = "an-stem" stem_final_n = true if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") then args.contract = true end if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han' decline(args, data, { n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "Vedic"}} or "a" .. oxy, a="[nom]", v={ "+", "a" }, }, {}, { n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, a="[nom]", v={ "Ani", {"a", note = "Vedic"}, {"A", note = "Vedic"}}, }) if args.contract then decline(args, data, nil, { n={ "nI" .. oxy, "+I" }, v={ "nI", "+I" }, }, {}) else decline(args, data, nil, { n="+I", v="+I", }, {}) end else decline(args, data, { n="A" .. oxy, v="+", }) if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then decline(args, data, { a="a" .. oxy .. "nam", }, { n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "Vedic" } }, v={ "anO", { "anA", note = "Vedic" } }, }, { n="a" .. oxy .. "nas", v="anas", a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s", }) elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$") or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267 decline(args, data, { a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "Vedic" }}, }, { n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "Vedic" }, { "a" .. oxy .. "nA", note = "Vedic" } }, v={ "AnO", { "anO", note = "Vedic" }, { "anA", note = "Vedic" } }, }, { n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "Vedic" }}, v={"Anas", {"anas", note = "Vedic" }}, a= args.contract == true and "na" .. oxy .. "s" or "+as", }) else decline(args, data, { a="A" .. oxy .. "nam", }, { n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "Vedic" } }, v={ "AnO", { "AnA", note = "Vedic" } }, }, { n="A" .. oxy .. "nas", v="Anas", a= args.contract == true and "na" .. oxy .. "s" or "+as", }) end end if args.contract then decline(args, data, { i="nA" .. oxy, d="ne" .. oxy, ab="na" .. oxy .. "s", g="[abl]", l={ "ni" .. oxy, "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form }, { g="no" .. oxy .. "s", }, { g="nA" .. oxy .. "m", }) else decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l= { "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form }, { g="+os", }, { g="+Am", }) end decline(args, data, nil, { a="[nom]", i="a" .. oxy .. "ByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i="a" .. oxy .. "Bis", d="a" .. oxy .. "Byas", ab="[dat]", l="a" .. oxy .. "su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit an-stem adjectives") else -- table.insert(data.categories, "Sanskrit an-stem nouns") end end }) decl_data["in"] = { detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["in"], { __call = function(self, args, data) local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$") data.decl_type = "တံမအရေဝ်(ဣန်)" stem_final_n = true if args.g ~= "n" then decline(args, data, { n="I" .. oxy, a="i" .. oxy .. "nam", v="+", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", a="[nom]", v="+as", }) else decline(args, data, { n="i" .. oxy, a="[nom]", v={ "i", "+" }, }, { n="+I", v="+I", }, { n="I" .. oxy .. "ni", a="[nom]", v="Ini", }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i="i" .. oxy .. "ByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i="i" .. oxy .. "Bis", d="i" .. oxy .. "Byas", ab="[dat]", g="+Am", l="i" .. oxy .. "zu", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit in-stem adjectives") else -- table.insert(data.categories, "Sanskrit in-stem nouns") end end }) decl_data["at"] = { detect = function(args) if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args) or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t' and (args.g == "m" or args.g == "n") then return true else return false end end } setmetatable(decl_data["at"], { __call = function(self, args, data) local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$") -- for present participles if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then data.decl_type = "တံမအရေဝ်(အတ်)" if args.at_nom_s == true then -- participles like 'júhvat' if args.g ~= "n" then decline(args, data, { n="a" .. oxy .. "t", a="a" .. oxy .. "tam", v="at", }, { n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "Vedic"} }, v={ "atO", { "atA", note = "Vedic"} }, }, { n="a" .. oxy .. "tas", a="a" .. oxy .. "tas", v="atas", }) else decline(args, data, { n="a" .. oxy .. "t", a="[nom]", v="at", }, { n="a" .. oxy .. "tI", v="atI", }, { n="a" .. oxy .. "ti", a="[nom]", v="ati", }) end decline(args, data, { i="+A", d="+e", ab="+as", l="+i", }, { g="+os", }, { g="+Am", }) else if args.g ~= "n" then decline(args, data, { n= vow .. oxy .. "n", a= vow .. oxy .. "ntam", v= vow .. "n", }, { n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "Vedic"} }, v={ vow .. "ntO", { vow .. "ntA", note = "Vedic"} }, }, { n= vow .. oxy .. "ntas", a= vow .. "ta" .. oxy .. "s", v= vow .. "ntas", }) else if not args.participle_n_nom_d and not args.nom_d then error('Please indicate nominative dual (identical to feminine stem) with nom_d') else if args.nom_d then local s = mw.text.split(args.nom_d, ",") args.participle_n_nom_d = s[1] args.participle_n_nom_d2 = s[2] end -- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b) args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d) if args.participle_n_nom_d2 then args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2) decline(args, data, {}, { n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}}, v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}}, }, {}) else decline(args, data, {}, { n= {{stem = args.participle_n_nom_d, ""}}, v= {{stem = args.participle_n_nom_d, ""}}, }, {}) end if vow == "a" then decline(args, data, {}, {}, { n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 262 a="[nom]", v= {"anti", {"Anti", note = "Rigvedic"}}, }) else decline(args, data, {}, {}, { n= vow .. oxy .. "nti", a="[nom]", v= vow .. "nti", }) end end decline(args, data, { n= vow .. oxy .. "t", a="[nom]", v= vow .. "t", }, {}, {}) end decline(args, data, { i= vow .. "tA" .. oxy, d= vow .. "te" .. oxy, ab= vow .. "ta" .. oxy .. "s", l= vow .. "ti" .. oxy, }, { g= vow .. "to" .. oxy .. "s", }, { g= vow .. "tA" .. oxy .. "m", }) end decline(args, data, { g="[abl]", }, { a="[nom]", i= vow .. oxy .. "dByAm", d="[ins]", ab="[ins]", l="[gen]", }, { i= vow .. oxy .. "dBis", d= vow .. oxy .. "dByas", ab="[dat]", l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit at-stem adjectives") else -- table.insert(data.categories, "Sanskrit at-stem nouns") end else -- for nouns suffixed with -vat/-mat data.decl_type = cons .. "at-stem" if args.g ~= "n" then decline(args, data, { n="A" .. oxy .. "n", a="a" .. oxy .. "ntam", v={ "an", { "as", note = "Rigvedic"} }, }, { n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "Vedic"} }, v={ "antO", { "antA", note = "Vedic"} }, }, { n="a" .. oxy .. "ntas", a="a" .. oxy .. "tas", v="antas", }) else decline(args, data, { n="a" .. oxy .. "t", a="[nom]", v="at", }, { n="+I", v="+I", }, { n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 258-9 a="[nom]", v={{"anti"}, {"Anti", note = "Rigvedic"}}, }) end decline(args, data, { i="+A", d="+e", ab="+as", g="[abl]", l="+i", }, { a="[nom]", i="a" .. oxy .. "dByAm", d="[ins]", ab="[ins]", g="+os", l="[gen]", }, { i="a" .. oxy .. "dBis", d="a" .. oxy .. "dByas", ab="[dat]", g="+Am", l="+su", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit " .. cons .. "at-stem adjectives") else -- table.insert(data.categories, "Sanskrit " .. cons .. "at-stem nouns") end end end }) decl_data["añc"] = { detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["añc"], { __call = function(self, args, data) local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$") data.decl_type = "တံမအရေဝ်(အည်စ)" -- make stem for 'middle' cases args.stem = args.stem:gsub("Yc$", "c") if args.g == "m" then decline(args, data, { n= "+", -- args.lemma a="+am", v= "+", }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, }, { n="+as", v="+as", }) else -- neuter decline(args, data, { n= "", -- args.stem v= "", a="[nom]" }, {}, { n="+i", v="+i", a="[nom]" }) end decline(args, data, {}, { i= "ByAm", }, { i= "Bis", d= "Byas", l= "su", }) -- changing stem to weakest form if vowel == "A" then -- do nothing elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc") elseif cons ~= "" then args.stem = args.stem:gsub("([yv])a([/\\]?)c$", function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end) elseif match(args.stem, "dac$") then args.stem = args.stem:gsub("ac$", "Ic") else error("Not supported") end if vowel == "A" or oxy ~= "/" then if args.g == "m" then decline(args, data, nil, nil, { a="as", }) else -- neuter decline(args, data, nil, { n="I", v="I", }) end decline(args, data, { i="A", d="e", ab="as", l="i", }, { g="os", }, { g="Am", }) else -- oxytone accent, showing two possible accentuations (Whitney §410) if args.g == "m" then decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}} }) else decline(args, data, nil, { n= {"I", {"I" .. oxy, note = "Rigvedic", mono = true}}, v= "I", }) end decline(args, data, { i= {"A", {"A" .. oxy, note = "Rigvedic", mono = true}}, d= {"e", {"e" .. oxy, note = "Rigvedic", mono = true}}, ab= {"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}}, l= {"i", {"i" .. oxy, note = "Rigvedic", mono = true}}, }, { g= {"os", {"o" .. oxy .. "s", note = "Rigvedic", mono = true}}, }, { g= {"Am", {"A" .. oxy .. "m", note = "Rigvedic", mono = true}}, }) end decline(args, data, { g="[abl]" }, { a="[nom]", d="[ins]", ab="[ins]", l="[gen]", }, { ab="[dat]", }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit añc-stem adjectives") end end }) decl_data["o"] = { detect = make_detect("(.+)o" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "f" end) } setmetatable(decl_data["o"], { -- 'gó' __call = function(self, args, data) local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$") data.decl_type = "တံမအရေဝ်(ဩ)" decline(args, data, { n="O" .. oxy .. "s", v="Os", a="A" .. oxy .. "m", i="+A", d="+e", ab="o" .. oxy .. "s", g="[abl]", l="+i", }, { n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "Vedic" } }, v={ "AvO", { "AvA", note = "Vedic" } }, a="[nom]", i="+ByAm", d="[ins]", ab="[ins]", g= "+os", l="[gen]", }, { n="A" .. oxy .. "vas", a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } }, v="Avas", i="+Bis", d="+Byas", ab="[dat]", g={ "+Am", { "+nAm", note = "Vedic" } }, l="+su", }) -- table.insert(data.categories, "Sanskrit o-stem nouns") end }) decl_data["O"] = { detect = make_detect("(.+)O" .. sa_utils.accent .. "?$", function(args) return args.g == "m" or args.g == "f" end) } setmetatable(decl_data["O"], { __call = function(self, args, data) local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$") data.decl_type = "တံမအရေဝ်(အော)" decline(args, data, { n="+s", v="+s", a="+am", i= {{ "+A" .. oxy, mono = true }}, d= {{ "+e" .. oxy, mono = true }}, ab={{ "+a" .. oxy .. "s", mono = true }}, g="[abl]", l= {{ "+i" .. oxy, mono = true }}, }, { n={ "+O", { "+A", note = "Vedic" } }, v={ "+O", { "+A", note = "Vedic" } }, a="[nom]", i= {{"+ByA" .. oxy .. "m", mono = true }}, d="[ins]", ab="[ins]", g= {{ "+o" .. oxy .. "s", mono = true }}, l="[gen]", }, { n="+as", v="+as", a="[nom]", i= {{"+Bi" .. oxy .. "s", mono = true }}, d= {{"+Bya" .. oxy .. "s", mono = true }}, ab="[dat]", g= {{ "+A" .. oxy .. "m", mono = true }}, l= {{ "+su" .. oxy, mono = true }}, }) -- table.insert(data.categories, "Sanskrit au-stem nouns") end }) decl_data["vāṃs"] = { detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$", function(args) return args.g == "m" or args.g == "n" end) } setmetatable(decl_data["vāṃs"], { __call = function(self, args, data) local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$") data.decl_type = "တံမအရေဝ်(ဝါံသ်)" local weak_stem if match(args.stem, "baBU$") or match(args.stem, "u$") then weak_stem = args.stem .. "v" elseif match(args.stem, "U$") then weak_stem = args.stem:gsub("U$", "uv") elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then weak_stem = args.stem -- the second 'i' of 'śiśrivāṃs' etc. is part of the root elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then weak_stem = args.stem:gsub("i$", "") else weak_stem = args.stem end if args.g == "m" then decline(args, data, { n= "vA" .. oxy .. "n", a= "vA" .. oxy .. "Msam", v={ "van", { "vas", note = "Rigvedic"} }, }, { n= "vA" .. oxy .. "MsO", a="[nom]", v= "vAMsO", }, { n= "vA" .. oxy .. "Msas", a={{stem = weak_stem, "u" .. oxy .. "zas"}}, v= "vAMsas", }) else decline(args, data, { n= "va" .. oxy .. "t", a="[nom]", v= "vat" }, { n={{stem = weak_stem, "u" .. oxy .. "zI"}}, a="[nom]", v={{stem = weak_stem, "uzI"}}, }, { n= "vA" .. oxy .. "MsI", a="[nom]", v= "vAMsI" }) end decline(args, data, { i={{stem = weak_stem, "u" .. oxy .. "zA"}}, d={{stem = weak_stem, "u" .. oxy .. "ze"}}, ab={{stem = weak_stem, "u" .. oxy .. "zas"}}, g="[abl]", l={{stem = weak_stem, "u" .. oxy .. "zi"}}, }, { i= "va" .. oxy .. "dByAm", d="[ins]", ab="[ins]", g={{stem = weak_stem, "u" .. oxy .. "zos"}}, l="[gen]" }, { i= "va" .. oxy .. "dBis", d= "va" .. oxy .. "dByas", ab="[dat]", g={{stem = weak_stem, "u" .. oxy .. "zAm"}}, l= "va" .. oxy .. "tsu" }) if args.adj == true and args.g == "m" then -- table.insert(data.categories, "Sanskrit vāṃs-stem adjectives") else -- table.insert(data.categories, "Sanskrit vāṃs-stem nouns") end end }) return decl_data hlv49sxd9gq8ww343g916jjy94401le ဗီုပြၚ်သိုၚ်တၟိ:သေံ-အခိုက်ကၞာ/sawᴬ 118 298333 400837 2026-08-07T14:30:15Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstruction}} ==သေံ-အခိုက်ကၞာ== ===နာမ်=== {{head|tai-pro|နာမ်}} # ဒယိုၚ်။" 400837 wikitext text/x-wiki {{reconstruction}} ==သေံ-အခိုက်ကၞာ== ===နာမ်=== {{head|tai-pro|နာမ်}} # ဒယိုၚ်။ iwpmwu80o99xjhpkjuqi4fcdajljkg0 सौर 0 298334 400838 2026-08-08T01:44:26Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=hi=}}== ===နိရုတ်=== {{bor+|hi|sa|सौर}} ===ဗွဟ်ရမ္သာၚ်=== * {{hi-IPA}} ===နာမဝိသေသန=== {{hi-adj|ind=1}} # ဆေၚ်စပ်ကဵုတ္ၚဲ၊ ပွမစၞောန်ရန်လဝ်နကဵုတ္ၚဲ။ ===နိဿဲ=== * {{R:hi:Dasa||5326}} * {{R:hi:Chaturvedi||836}} * {{R:hi:McGregor||1044}} ==ကာဒ်ရှ်မဳယ..." 400838 wikitext text/x-wiki =={{=hi=}}== ===နိရုတ်=== {{bor+|hi|sa|सौर}} ===ဗွဟ်ရမ္သာၚ်=== * {{hi-IPA}} ===နာမဝိသေသန=== {{hi-adj|ind=1}} # ဆေၚ်စပ်ကဵုတ္ၚဲ၊ ပွမစၞောန်ရန်လဝ်နကဵုတ္ၚဲ။ ===နိဿဲ=== * {{R:hi:Dasa||5326}} * {{R:hi:Chaturvedi||836}} * {{R:hi:McGregor||1044}} ==ကာဒ်ရှ်မဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|ks|[sɑwr]}} ===နာမ်=== {{ks-num-card|sa=𑆱𑆿𑆫𑇀}} # မဆေၚ်စပ်ကဵုဂြိုဟ်သ္ၚိသဝ်။ ===နိဿဲ=== [[iarchive:in.ernet.dli.2015.24175|A dictionary of the Kāshmīrī language]] ==သံသကြိုတ်== ===ပွံၚ်အက္ခရ်နဲတၞဟ်=== ===ဗွဟ်ရမ္သာၚ်=== * {{sa-IPA}} ===နာမဝိသေသန=== {{sa-adj}} # ပွမလုပ်အဝေါၚ်မပါသီုအရက်။ =====လဟုတ်စှ်ေ===== {{sa-decl-adj-mfn|सौर|सौरा|सौर}} ===နာမဝိသေသန=== {{sa-adj}} # ပွမကလေၚ်ဟီုထ္ၜး၊ ပွမဒှ်လ္ပာ်ဇကု၊ မစွံအဲပရဲနကဵု ဝါ ပွမကၠုၚ်နူဆေၚ်စပ်ကဵုတ္ၚဲ မဆေၚ်စပ်ကဵုကျာ်ထာဝရ{{w|lang=en|Surya|သူရိယ}}၊ ဆေၚ်စပ်ကဵုတ္ၚဲ။ # မဆေၚ်စပ်ကဵုဘုံအာကာသ၊ ညံၚ်ရဴကျာ်မပြဲ။ =====လဟုတ်စှ်ေ===== {{sa-decl-adj-mfn|सौर|सौरी|सौर}} ===နာမ်=== {{sa-noun|g=m}} # ညးမရှ်ေသှ်ေပူဇဴမွဲဇကုဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ။ # ကောန်တြုံဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ၊ ယၟုမွဲယၟုဆေၚ်စပ်ကဵု{{w|lang=en|Saturn|ဂြိုဟ်သ္ၚိသဝ်}}။ # ယၟုမဆေၚ်စပ်ကဵုကၠပမရနုက်၂၀။ # တ္ၚဲသူရိယမွဲတ္ၚဲ (အခိၚ်မဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲအပ္ဍဲကဆံၚ်နကဵုပရေၚ်ဂြးစပ်တ္ၚဲ)။ # ဂိတုသူရိယမွဲဂိတု (ပွမလုပ်အဝေါၚ်ဆေၚ်စပ်ကဵုပရေၚ်သၠုၚ်တိုန် ၃၀ သာ် ကဵု မပလေဝ်ပလေတ်ဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ ဝါ ဆေၚ်စပ်ကဵုအခိၚ်ကာလအပိုၚ်အခြာပ္ဍဲနိမိတ်စက်စှ်ၜါရာသဳ)။ # ပရေၚ်ရုဲပတိုန်ညးမစၞးဆေၚ်စပ်ကဵုနိမိတ်စက်စှ်ၜါရာသဳသူရိယမရပ်စပ်လဝ်အသေအဟာန်ပရေၚ်သ္ပမ္ၚဵုထပ်တဲဂမၠိုၚ်။ # ဟံဗံ။ # အရာမၞုံကဵုပ္တေၚ်ဇုတ်စၚ်စၚ်စူစူ။ # ယၟုမဆေၚ်စပ်ကဵုဂုရုမွဲသာ်။ # ယၟုဝေါၚ်သဆေၚ်စပ်ကဵု{{w|lang=en|Tapati|တပါတဳ}} (မဆေၚ်စပ်ကဵုမိယာဲနကဵု{{w|lang=en|King Kuru|ဨကရာဇ်ကုရု}}၊ မကော်ခဴဝါၚ်ဝါတ်သွတဳကီုရ)။ # ဂၠဴမွဲ။ # ပ္ကဴဇာဖိုၚ်အာသျှ။ =====လဟုတ်စှ်ေ===== {{sa-decl-noun-m}} ===မဒုၚ်လွဳစ=== * {{desc|km|សៅរ៍|bor=1}} * {{desc|lo|ເສົາ|bor=1}} * {{desc|shn|သဝ်|bor=1}} * {{desc|th|เสาร์|bor=1}} ===နာမ်=== {{sa-noun|g=n}} # ယၟုမဆေၚ်စပ်ကဵုကမၠောန် ({{w|lang=en|Saura Purana|သဝ်ရာ ပူရာဏ}}ပရေၚ်မက္တဵုဒှ်ကၠုၚ်မာန်)။ # ပရေၚ်ပကောံဆေၚ်စပ်ကဵုချူလိက်ဌာန်ဒၟံၚ်ဗၞုဟ်ဂုန်ကျာ်နကဵု{{w|lang=en|Surya|သူရိယ}} (မလောန်ကာဲနူဆေၚ်စပ်ကဵု{{w|lang=en|Rigveda|ရိဂ်ဝေဒ}})။ # ယၟုမဆေၚ်စပ်ကဵုသာမန် (မတုပ်သၟဟ် ဗဟာတ်-သဝ်ရာ)။ # မဆေၚ်စပ်ကဵုမတ်လ္ပာ်ပုၚ်။ =====လဟုတ်စှ်ေ===== {{sa-decl-noun-n}} egyq34sz9eb7h4yibffhcxyuh47wprx 400839 400838 2026-08-08T01:46:25Z 咽頭べさ 33 400839 wikitext text/x-wiki =={{=hi=}}== ===နိရုတ်=== {{bor+|hi|sa|सौर}} ===ဗွဟ်ရမ္သာၚ်=== * {{hi-IPA}} ===နာမဝိသေသန=== {{hi-adj|ind=1}} # ဆေၚ်စပ်ကဵုတ္ၚဲ၊ ပွမစၞောန်ရန်လဝ်နကဵုတ္ၚဲ။ ===နိဿဲ=== * {{R:hi:Dasa||5326}} * {{R:hi:Chaturvedi||836}} * {{R:hi:McGregor||1044}} ==ကာဒ်ရှ်မဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|ks|[sɑwr]}} ===နာမ်=== {{ks-num-card|sa=𑆱𑆿𑆫𑇀}} # မဆေၚ်စပ်ကဵုဂြိုဟ်သ္ၚိသဝ်။ ===နိဿဲ=== [[iarchive:in.ernet.dli.2015.24175|A dictionary of the Kāshmīrī language]] ==သံသကြိုတ်== ===ပွံၚ်အက္ခရ်နဲတၞဟ်=== {{sa-alt}} ===ဗွဟ်ရမ္သာၚ်=== * {{sa-IPA}} ===နာမဝိသေသန=== {{sa-adj}} # ပွမလုပ်အဝေါၚ်မပါသီုအရက်။ =====လဟုတ်စှ်ေ===== {{sa-decl-adj-mfn|सौर|सौरा|सौर}} ===နာမဝိသေသန=== {{sa-adj}} # ပွမကလေၚ်ဟီုထ္ၜး၊ ပွမဒှ်လ္ပာ်ဇကု၊ မစွံအဲပရဲနကဵု ဝါ ပွမကၠုၚ်နူဆေၚ်စပ်ကဵုတ္ၚဲ မဆေၚ်စပ်ကဵုကျာ်ထာဝရ{{w|lang=en|Surya|သူရိယ}}၊ ဆေၚ်စပ်ကဵုတ္ၚဲ။ # မဆေၚ်စပ်ကဵုဘုံအာကာသ၊ ညံၚ်ရဴကျာ်မပြဲ။ =====လဟုတ်စှ်ေ===== {{sa-decl-adj-mfn|सौर|सौरी|सौर}} ===နာမ်=== {{sa-noun|g=m}} # ညးမရှ်ေသှ်ေပူဇဴမွဲဇကုဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ။ # ကောန်တြုံဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ၊ ယၟုမွဲယၟုဆေၚ်စပ်ကဵု{{w|lang=en|Saturn|ဂြိုဟ်သ္ၚိသဝ်}}။ # ယၟုမဆေၚ်စပ်ကဵုကၠပမရနုက်၂၀။ # တ္ၚဲသူရိယမွဲတ္ၚဲ (အခိၚ်မဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲအပ္ဍဲကဆံၚ်နကဵုပရေၚ်ဂြးစပ်တ္ၚဲ)။ # ဂိတုသူရိယမွဲဂိတု (ပွမလုပ်အဝေါၚ်ဆေၚ်စပ်ကဵုပရေၚ်သၠုၚ်တိုန် ၃၀ သာ် ကဵု မပလေဝ်ပလေတ်ဆေၚ်စပ်ကဵုသၟိၚ်တ္ၚဲ ဝါ ဆေၚ်စပ်ကဵုအခိၚ်ကာလအပိုၚ်အခြာပ္ဍဲနိမိတ်စက်စှ်ၜါရာသဳ)။ # ပရေၚ်ရုဲပတိုန်ညးမစၞးဆေၚ်စပ်ကဵုနိမိတ်စက်စှ်ၜါရာသဳသူရိယမရပ်စပ်လဝ်အသေအဟာန်ပရေၚ်သ္ပမ္ၚဵုထပ်တဲဂမၠိုၚ်။ # ဟံဗံ။ # အရာမၞုံကဵုပ္တေၚ်ဇုတ်စၚ်စၚ်စူစူ။ # ယၟုမဆေၚ်စပ်ကဵုဂုရုမွဲသာ်။ # ယၟုဝေါၚ်သဆေၚ်စပ်ကဵု{{w|lang=en|Tapati|တပါတဳ}} (မဆေၚ်စပ်ကဵုမိယာဲနကဵု{{w|lang=en|King Kuru|ဨကရာဇ်ကုရု}}၊ မကော်ခဴဝါၚ်ဝါတ်သွတဳကီုရ)။ # ဂၠဴမွဲ။ # ပ္ကဴဇာဖိုၚ်အာသျှ။ =====လဟုတ်စှ်ေ===== {{sa-decl-noun-m}} ===မဒုၚ်လွဳစ=== * {{desc|km|សៅរ៍|bor=1}} * {{desc|lo|ເສົາ|bor=1}} * {{desc|shn|သဝ်|bor=1}} * {{desc|th|เสาร์|bor=1}} ===နာမ်=== {{sa-noun|g=n}} # ယၟုမဆေၚ်စပ်ကဵုကမၠောန် ({{w|lang=en|Saura Purana|သဝ်ရာ ပူရာဏ}}ပရေၚ်မက္တဵုဒှ်ကၠုၚ်မာန်)။ # ပရေၚ်ပကောံဆေၚ်စပ်ကဵုချူလိက်ဌာန်ဒၟံၚ်ဗၞုဟ်ဂုန်ကျာ်နကဵု{{w|lang=en|Surya|သူရိယ}} (မလောန်ကာဲနူဆေၚ်စပ်ကဵု{{w|lang=en|Rigveda|ရိဂ်ဝေဒ}})။ # ယၟုမဆေၚ်စပ်ကဵုသာမန် (မတုပ်သၟဟ် ဗဟာတ်-သဝ်ရာ)။ # မဆေၚ်စပ်ကဵုမတ်လ္ပာ်ပုၚ်။ =====လဟုတ်စှ်ေ===== {{sa-decl-noun-n}} 4ir83r7ylsy5pq7mxfwlum1epkt4abs ထာမ်ပလိက်:inflection-table-block/documentation 10 298335 400840 2026-08-08T01:53:23Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template ensures that a sequence of inflection tables that use {{tl|inflection-table-top}} adopt the same width. ===Example=== Compare the right edge of: <pre><nowiki> {{nv-verbtable-full |IMPERFECTIVE |...}} {{nv-verbtable-full |PERFECTIVE |...}} {{nv-verbtable-full |FUTURE |...}} </nowiki></pre> {{nv-verbtable-full |IMPERFECTIVE |iishááh|iitʼaash|iikááh|aninááh|ohʼaash|ohká..." 400840 wikitext text/x-wiki {{documentation subpage}} This template ensures that a sequence of inflection tables that use {{tl|inflection-table-top}} adopt the same width. ===Example=== Compare the right edge of: <pre><nowiki> {{nv-verbtable-full |IMPERFECTIVE |...}} {{nv-verbtable-full |PERFECTIVE |...}} {{nv-verbtable-full |FUTURE |...}} </nowiki></pre> {{nv-verbtable-full |IMPERFECTIVE |iishááh|iitʼaash|iikááh|aninááh|ohʼaash|ohkááh|iighááh|iiʼaash|iikááh|ajighááh|ajiʼaash|ajikááh}} {{nv-verbtable-full |PERFECTIVE |ííyá|iitʼáázh|iikai|ííníyá|ooʼáázh|oohkai|ííyá|ííʼáázh|[[eekai]] / [[iikai]]|ajííyá|ajííʼáázh|ajookai}} {{nv-verbtable-full |FUTURE |adeeshááł|adiitʼash|adiikah|adíínááł|adoohʼash|adoohkah|adoogááł|adooʼash|adookah|azhdoogááł|azhdooʼash|azhdookah}} with <pre><nowiki> {{inflection-table-block| {{nv-verbtable-full |IMPERFECTIVE |...}} {{nv-verbtable-full |PERFECTIVE |...}} {{nv-verbtable-full |FUTURE |...}} }} </nowiki></pre> {{inflection-table-block| {{nv-verbtable-full |IMPERFECTIVE |iishááh|iitʼaash|iikááh|aninááh|ohʼaash|ohkááh|iighááh|iiʼaash|iikááh|ajighááh|ajiʼaash|ajikááh}} {{nv-verbtable-full |PERFECTIVE |ííyá|iitʼáázh|iikai|ííníyá|ooʼáázh|oohkai|ííyá|ííʼáázh|[[eekai]] / [[iikai]]|ajííyá|ajííʼáázh|ajookai}} {{nv-verbtable-full |FUTURE |adeeshááł|adiitʼash|adiikah|adíínááł|adoohʼash|adoohkah|adoogááł|adooʼash|adookah|azhdoogááł|azhdooʼash|azhdookah}} }} It works for "tall" (collapsible) inflection tables too. In situations where you need to use wikitext table syntax inside the block, use {{tl|inflection-table-block-top}} and {{tl|inflection-table-block-bottom}} instead. See [[Template:inflection-table-block-top/documentation]]. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်လဗံက်ဂမၠိုၚ်]] </includeonly> 0y4s6rjjhbkl5aonpwf3dbfxp1wohop ထာမ်ပလိက်:nv-verbtable-full 10 298336 400841 2026-08-08T04:12:56Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "<noinclude>Base template for Navajo verbs. Use this for each separate tense/mood table. ဗီုရံၚ် {{temp|nv-verbtable}} တဏအ်ညိကီု </noinclude> {{inflection-table-top|title=-|palette=yellow}} !class="outer"|{{#invoke:string/templates|lower|{{{1}}}}} !ကိုန်ဨကဝုစ် !ကိုန်ဗဟုဝစ်ၜါလ္ပာ် !ကိုန်ဗဟုဝစ် |- !ပူဂ..." 400841 wikitext text/x-wiki <noinclude>Base template for Navajo verbs. Use this for each separate tense/mood table. ဗီုရံၚ် {{temp|nv-verbtable}} တဏအ်ညိကီု </noinclude> {{inflection-table-top|title=-|palette=yellow}} !class="outer"|{{#invoke:string/templates|lower|{{{1}}}}} !ကိုန်ဨကဝုစ် !ကိုန်ဗဟုဝစ်ၜါလ္ပာ် !ကိုန်ဗဟုဝစ် |- !ပူဂဵုမရနုက်ကဵု ၁ |{{#if:{{{2|}}}|{{l-self|nv|{{{2|}}}}}|—}} |{{#if:{{{3|}}}|{{l-self|nv|{{{3|}}}}}|—}} |{{#if:{{{4|}}}|{{l-self|nv|{{{4|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၂ |{{#if:{{{5|}}}|{{l-self|nv|{{{5|}}}}}|—}} |{{#if:{{{6|}}}|{{l-self|nv|{{{6|}}}}}|—}} |{{#if:{{{7|}}}|{{l-self|nv|{{{7|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၃ |{{#if:{{{8|}}}|{{l-self|nv|{{{8|}}}}}|—}} |{{#if:{{{9|}}}|{{l-self|nv|{{{9|}}}}}|—}} |{{#if:{{{10|}}}|{{l-self|nv|{{{10|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၄ |{{#if:{{{11|}}}|{{l-self|nv|{{{11|}}}}}|—}} |{{#if:{{{12|}}}|{{l-self|nv|{{{12|}}}}}|—}} |{{#if:{{{13|}}}|{{l-self|nv|{{{13|}}}}}|—}} {{inflection-table-bottom}}<noinclude>[[ကဏ္ဍ:ထာမ်ပလိက်နာဝါဟဝ်ဂမၠိုၚ်|verbtable]]</noinclude> 9h1cvhy9bwpvmvvycedt4ycc5pj2h3w 400842 400841 2026-08-08T04:15:16Z 咽頭べさ 33 400842 wikitext text/x-wiki <noinclude>Base template for Navajo verbs. Use this for each separate tense/mood table. ဗီုရံၚ် {{temp|nv-verbtable}} တဏအ်ညိကီု </noinclude> {{inflection-table-top|title=-|palette=yellow}} !class="outer"|{{#invoke:string/templates|lower|{{{1}}}}} !ကိုန်ဨကဝုစ် ![[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]] !ကိုန်ဗဟုဝစ် |- !ပူဂဵုမရနုက်ကဵု ၁ |{{#if:{{{2|}}}|{{l-self|nv|{{{2|}}}}}|—}} |{{#if:{{{3|}}}|{{l-self|nv|{{{3|}}}}}|—}} |{{#if:{{{4|}}}|{{l-self|nv|{{{4|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၂ |{{#if:{{{5|}}}|{{l-self|nv|{{{5|}}}}}|—}} |{{#if:{{{6|}}}|{{l-self|nv|{{{6|}}}}}|—}} |{{#if:{{{7|}}}|{{l-self|nv|{{{7|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၃ |{{#if:{{{8|}}}|{{l-self|nv|{{{8|}}}}}|—}} |{{#if:{{{9|}}}|{{l-self|nv|{{{9|}}}}}|—}} |{{#if:{{{10|}}}|{{l-self|nv|{{{10|}}}}}|—}} |- !ပူဂဵုမရနုက်ကဵု ၄ |{{#if:{{{11|}}}|{{l-self|nv|{{{11|}}}}}|—}} |{{#if:{{{12|}}}|{{l-self|nv|{{{12|}}}}}|—}} |{{#if:{{{13|}}}|{{l-self|nv|{{{13|}}}}}|—}} {{inflection-table-bottom}}<noinclude>[[ကဏ္ဍ:ထာမ်ပလိက်နာဝါဟဝ်ဂမၠိုၚ်|verbtable]]</noinclude> eoqb4lt1h5dtu380bnydqop7rwancs0 duoplural 0 298337 400843 2026-08-08T04:27:33Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=en=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|en|/ˌd(j)uː.əʊˈplʊə.ɹ(ə)l/|/-ˈplɔː.ɹ(ə)l/|a=RP}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-duoplural.wav}} * {{IPA|en|/ˌd(j)u.oʊˈplʊ(ə)ɹ.əl/|/-ˈplɜɹ.əl/|a=GA}} * {{rhymes|en|ʊəɹəl|s=4}} ====နာမဝိသေသန==== {{en-adj|-}} # {{lb|en|grammar}} ပွမစၞောန်ရန်မဆေၚ်စပ်ကဵုဂၞန..." 400843 wikitext text/x-wiki =={{=en=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|en|/ˌd(j)uː.əʊˈplʊə.ɹ(ə)l/|/-ˈplɔː.ɹ(ə)l/|a=RP}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-duoplural.wav}} * {{IPA|en|/ˌd(j)u.oʊˈplʊ(ə)ɹ.əl/|/-ˈplɜɹ.əl/|a=GA}} * {{rhymes|en|ʊəɹəl|s=4}} ====နာမဝိသေသန==== {{en-adj|-}} # {{lb|en|grammar}} ပွမစၞောန်ရန်မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါ (ညံၚ်ရဴပ္ဍဲကိုန်ဨကဝုစ်ကဵုကိုန်ဗဟုဝစ်)၊ ပွမနိဿဲနကဵုၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်; ကိုန်ဨကဝုစ်ဟွံသေၚ်။ ===နာမ်=== {{en-noun}} # ကိုန်ဨကဝုစ်ၜါ (လ္ပာ်)။ # ဂၞန်ကိုန်ဨကဝုစ်ၜါ; မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါပွမကၠောန်သ္ပနာမ်ၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်။ 7qblvcja68zg9aleyfsb9qcssadximy 400845 400843 2026-08-08T04:33:12Z 咽頭べさ 33 400845 wikitext text/x-wiki =={{=en=}}== {{was wotd|၂၀၂၆|အဝ်ဂေတ်|၈}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|en|/ˌd(j)uː.əʊˈplʊə.ɹ(ə)l/|/-ˈplɔː.ɹ(ə)l/|a=RP}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-duoplural.wav}} * {{IPA|en|/ˌd(j)u.oʊˈplʊ(ə)ɹ.əl/|/-ˈplɜɹ.əl/|a=GA}} * {{rhymes|en|ʊəɹəl|s=4}} ====နာမဝိသေသန==== {{en-adj|-}} # {{lb|en|grammar}} ပွမစၞောန်ရန်မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါ (ညံၚ်ရဴပ္ဍဲကိုန်ဨကဝုစ်ကဵုကိုန်ဗဟုဝစ်)၊ ပွမနိဿဲနကဵုၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်; ကိုန်ဨကဝုစ်ဟွံသေၚ်။ ===နာမ်=== {{en-noun}} # ကိုန်ဨကဝုစ်ၜါ (လ္ပာ်)။ # ဂၞန်ကိုန်ဨကဝုစ်ၜါ; မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါပွမကၠောန်သ္ပနာမ်ၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်။ k4ldelvjd6fwwpalkdh7vznvmo75vbq ဝိက်ရှေန်နရဳ:မအရေဝ်သွက်တ္ၚဲဏအ်/၂၀၂၆/အဝ်ဂေတ် ၈ 4 298338 400844 2026-08-08T04:31:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{WOTD|duoplural|နာမဝိသေသန| ပွမစၞောန်ရန်မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါ (ညံၚ်ရဴပ္ဍဲကိုန်ဨကဝုစ်ကဵုကိုန်ဗဟုဝစ်)၊ ပွမနိဿဲနကဵုၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်; ကိုန်ဨကဝုစ်ဟွံသေ..." 400844 wikitext text/x-wiki {{WOTD|duoplural|နာမဝိသေသန| ပွမစၞောန်ရန်မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါ (ညံၚ်ရဴပ္ဍဲကိုန်ဨကဝုစ်ကဵုကိုန်ဗဟုဝစ်)၊ ပွမနိဿဲနကဵုၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်; ကိုန်ဨကဝုစ်ဟွံသေၚ်။ :နာမ် # ကိုန်ဨကဝုစ်ၜါ (လ္ပာ်)။ # ဂၞန်ကိုန်ဨကဝုစ်ၜါ; မဆေၚ်စပ်ကဵုဂၞန်သဒ္ဒါပွမကၠောန်သ္ပနာမ်ၜါသာ် ဝါ ပဵုနူကဵုအရာမွဲမွဲသာ်။|audio=LL-Q1860 (eng)-Vealhurl-duoplural.wav|အဝ်ဂေတ်|၈}} hoa9v1rbywkfkptkkxhvc4ygd9a352q duoplurals 0 298339 400846 2026-08-08T04:34:24Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=en=}}== ===နာမ်=== {{head|en|noun form}} # {{plural of|en|duoplural}}" 400846 wikitext text/x-wiki =={{=en=}}== ===နာမ်=== {{head|en|noun form}} # {{plural of|en|duoplural}} ix9wka9ezy7lr5q8rynj9l1m65ebklv ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်/ʊəɹəl 14 298340 400847 2026-08-08T04:37:07Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » :ကဏ..." 400847 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » [[:ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ကာရန်ဂမၠိုၚ်]] » -ʊəɹəl :စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]]မနွံကာရန် [[ကာရန်:အၚ်္ဂလိက်/ʊəɹəl|-ʊəɹəl]] ဂမၠိုၚ်။ [[ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ʊəɹəl]] 59zzik8cav3rh86qyjo6x7s5v69w6a0 ကာရန်:အၚ်္ဂလိက်/ʊəɹəl 106 298341 400848 2026-08-08T04:40:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|en|ʊə|ɹəl}} ==ဗွဟ်ရမ္သာၚ်== {{enPR|-o͝orəl}}, {{IPA|en|/-ʊəɹəl/}}, /<tt>-U@r@l</tt>/ ==ကာရန်ဂမၠိုၚ်== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|en|crural}} * {{l|en|dural}} * {{l|en|jural}} * {{l|en|mural}} * {{l|en|neural}} * {{l|en|pleural}} * {{l|en|plural}}..." 400848 wikitext text/x-wiki {{rhymes nav|en|ʊə|ɹəl}} ==ဗွဟ်ရမ္သာၚ်== {{enPR|-o͝orəl}}, {{IPA|en|/-ʊəɹəl/}}, /<tt>-U@r@l</tt>/ ==ကာရန်ဂမၠိုၚ်== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|en|crural}} * {{l|en|dural}} * {{l|en|jural}} * {{l|en|mural}} * {{l|en|neural}} * {{l|en|pleural}} * {{l|en|plural}} * {{l|en|rural}} * {{l|en|sural}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|en|anural}} * {{l|en|caesural}}, {{l|en|cesural}} * {{l|en|macrural}} * {{l|en|nonneural}} * {{l|en|nonrural}} * {{l|en|postdural}} * {{l|en|procural}} * {{l|en|propleural}} * {{l|en|subdural}} * {{l|en|subpleural}} * {{l|en|transdural}} * {{l|en|transpleural}} {{rhyme-bottom}} ===ဝဏ္ဏပန်=== {{rhyme-top}} * {{l|en|bronchopleural}} * {{l|en|commissural}} * {{l|en|coxopleural}} * {{l|en|cynosural}} * {{l|en|duoplural}} * {{l|en|epidural}} * {{l|en|epipleural}} * {{l|en|extradural}} * {{l|en|extramural}} * {{l|en|extrapleural}} * {{l|en|interpleural}} * {{l|en|intradural}} * {{l|en|intramural}} * {{l|en|intrapleural}} * {{l|en|juxtapleural}} * {{l|en|myodural}} * {{l|en|myoneural}} * {{l|en|peridural}} * {{l|en|photomural}} * {{l|en|semirural}} * {{l|en|splanchnopleural}} * {{l|en|sternopleural}} * {{l|en|superplural}} * {{l|en|zygopleural}} {{rhyme-bottom}} ===ဝဏ္ဏမသုန်=== {{rhyme-top}} * {{l|en|caricatural}} * {{l|en|cerebropleural}} * {{l|en|nomenclatural}} * {{l|en|nonepidural}} * {{l|en|sensorineural}} {{rhyme-bottom}} ===Six syllables=== {{rhyme-top}} * {{l|en|ventriculopleural}} {{rhyme-bottom}} ===Seven syllables=== {{rhyme-top}} * {{l|en|pericardiopleural}} {{rhyme-bottom}} 4qad526fkc244dxubrx9wqzea09wbzf 400849 400848 2026-08-08T04:40:45Z 咽頭べさ 33 400849 wikitext text/x-wiki {{rhymes nav|en|ʊə|ɹəl}} ==ဗွဟ်ရမ္သာၚ်== {{enPR|-o͝orəl}}, {{IPA|en|/-ʊəɹəl/}}, /<tt>-U@r@l</tt>/ ==ကာရန်ဂမၠိုၚ်== <!--Note: words in this section must be stressed on the PENULTIMATE syllable.--> ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|en|crural}} * {{l|en|dural}} * {{l|en|jural}} * {{l|en|mural}} * {{l|en|neural}} * {{l|en|pleural}} * {{l|en|plural}} * {{l|en|rural}} * {{l|en|sural}} {{rhyme-bottom}} ===ဝဏ္ဏၜါ=== {{rhyme-top}} * {{l|en|anural}} * {{l|en|caesural}}, {{l|en|cesural}} * {{l|en|macrural}} * {{l|en|nonneural}} * {{l|en|nonrural}} * {{l|en|postdural}} * {{l|en|procural}} * {{l|en|propleural}} * {{l|en|subdural}} * {{l|en|subpleural}} * {{l|en|transdural}} * {{l|en|transpleural}} {{rhyme-bottom}} ===ဝဏ္ဏပန်=== {{rhyme-top}} * {{l|en|bronchopleural}} * {{l|en|commissural}} * {{l|en|coxopleural}} * {{l|en|cynosural}} * {{l|en|duoplural}} * {{l|en|epidural}} * {{l|en|epipleural}} * {{l|en|extradural}} * {{l|en|extramural}} * {{l|en|extrapleural}} * {{l|en|interpleural}} * {{l|en|intradural}} * {{l|en|intramural}} * {{l|en|intrapleural}} * {{l|en|juxtapleural}} * {{l|en|myodural}} * {{l|en|myoneural}} * {{l|en|peridural}} * {{l|en|photomural}} * {{l|en|semirural}} * {{l|en|splanchnopleural}} * {{l|en|sternopleural}} * {{l|en|superplural}} * {{l|en|zygopleural}} {{rhyme-bottom}} ===ဝဏ္ဏမသုန်=== {{rhyme-top}} * {{l|en|caricatural}} * {{l|en|cerebropleural}} * {{l|en|nomenclatural}} * {{l|en|nonepidural}} * {{l|en|sensorineural}} {{rhyme-bottom}} ===ဝဏ္ဏတရဴ=== {{rhyme-top}} * {{l|en|ventriculopleural}} {{rhyme-bottom}} ===ဝဏ္ဏထပှ်=== {{rhyme-top}} * {{l|en|pericardiopleural}} {{rhyme-bottom}} spmfuwh83vhami26ebu5m26tb4zl3si ထာမ်ပလိက်:enPR/documentation 10 298342 400853 2026-08-08T04:51:18Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> ===About=== This template is for phonemic transcriptions in the [[:en:Appendix:English pronunciation|English pronunciation]] (enPR) or pronunciation respelling system, for use in the [[:en:Wiktionary:Pronunciation|pronunciation]] section of entries. For instance, the entry for {{m|en|cat}} might include: <code><nowiki>..." 400853 wikitext text/x-wiki {{documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> ===About=== This template is for phonemic transcriptions in the [[:en:Appendix:English pronunciation|English pronunciation]] (enPR) or pronunciation respelling system, for use in the [[:en:Wiktionary:Pronunciation|pronunciation]] section of entries. For instance, the entry for {{m|en|cat}} might include: <code><nowiki>{{</nowiki>enPR|kăt}}</code> which yields: {{enPR|kăt}} ===Syntax=== <code><nowiki>{{</nowiki>enPR|<span style="'color:var(--wikt-palette-blue,blue)'>''transcription''</span>}}</code>" * * Do not use diagonal strokes (<code>/.../</code>): enPR is a phonemic transcription system, so they are redundant, and confusing to the intended audience. ===See also=== * [[:en:Appendix:English pronunciation]] * [[:en:Wiktionary:Pronunciation]] * {{temp|IPA}} ==Parameters== ; {{para|1}}, {{para|2}}, {{para|3}}, {{para|4}} ... : Indicates one or more pronunciations. They will be displayed separated by commas. ; {{para|q}} : Specifies a qualifier to be placed at the beginning, before the "enPR:" text that normally precedes the pronunciation(s). This is formatted with the {{tl|q}}/{{tl|qualifier}} template. ; {{para|qq}} : Specifies a qualifier to be placed at the end, after all pronunciations. This is formatted with the {{tl|q}}/{{tl|qualifier}} template. ; {{para|a}} : Specifies one or more comma-separated accent qualifiers to be placed at the beginning, before the "enPR:" text that normally precedes the pronunciation(s). These are formatted with the {{tl|a}}/{{tl|accent}} template. To be recognized as a separator, there must be no space following the comma; otherwise, the comma is treated as an embedded comma within the accent qualifier. ; {{para|aa}} : Specifies one or more comma-separated accent qualifiers to be placed at the end, after all pronunciations. These are formatted with the {{tl|a}}/{{tl|accent}} template. To be recognized as a separator, there must be no space following the comma; otherwise, the comma is treated as an embedded comma within the accent qualifier. ; {{para|q<var>N</var>}} : Specifies a qualifier to be placed ''before'' pronunciation <var>N</var>. This is formatted with the {{tl|q}}/{{tl|qualifier}} template. ; {{para|qq<var>N</var>}} : Specifies a qualifier to be placed ''after'' pronunciation <var>N</var>. This is formatted with the {{tl|q}}/{{tl|qualifier}} template. ; {{para|a<var>N</var>}} : Specifies one or more comma-separated accent qualifiers to be placed ''before'' pronunciation <var>N</var>. These are formatted with the {{tl|a}}/{{tl|accent}} template. To be recognized as a separator, there must be no space following the comma; otherwise, the comma is treated as an embedded comma within the accent qualifier. ; {{para|aa<var>N</var>}} : Specifies one or more comma-separated accent qualifiers to be placed ''after'' pronunciation <var>N</var>. These are formatted with the {{tl|a}}/{{tl|accent}} template. To be recognized as a separator, there must be no space following the comma; otherwise, the comma is treated as an embedded comma within the accent qualifier. ==TemplateData== {{TemplateDataHeader}} <templatedata> { "params": { "1": { "label": "transcription 1", "description": "first possible transcribed pronunciation", "example": "fĭ-lănʹ-də-rər", "type": "string", "required": true }, "2": { "label": "transcription 2", "description": "second possible transcribed pronunciation", "example": "fĭ-lănʹ-dər-ər", "type": "string" }, "3": { "label": "transcription 3", "description": "third possible transcribed pronunciation", "example": "fĭ-lănʹ-də-rər", "type": "string" }, "q": { "label": "overall left qualifier", "description": "Specifies a qualifier to be placed at the very beginning. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "qq": { "label": "overall right qualifier", "description": "Specifies a qualifier to be placed at the very end. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "a": { "label": "overall left accent qualifier(s)", "description": "Specifies one or more comma-separated accent qualifiers to be placed at the very beginning. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "aa": { "label": "overall right accent qualifier(s)", "description": "Specifies one or more comma-separated accent qualifiers to be placed at the very end. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "q1": { "label": "left qualifier 1", "description": "Specifies a qualifier to be placed before pronunciation 1. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "q2": { "label": "left qualifier 2", "description": "Specifies a qualifier to be placed before pronunciation 2. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "q3": { "label": "left qualifier 3", "description": "Specifies a qualifier to be placed before pronunciation 3. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "qq1": { "label": "right qualifier 1", "description": "Specifies a qualifier to be placed after pronunciation 1. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "qq2": { "label": "right qualifier 2", "description": "Specifies a qualifier to be placed after pronunciation 2. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "qq3": { "label": "right qualifier 3", "description": "Specifies a qualifier to be placed after pronunciation 3. This is formatted with the {{q}}/{{qualifier}} template.", "type": "string" }, "a1": { "label": "left accent qualifier(s) 1", "description": "Specifies one or more comma-separated accent qualifiers to be placed before pronunciation 1. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "a2": { "label": "left accent qualifier(s) 2", "description": "Specifies one or more comma-separated accent qualifiers to be placed before pronunciation 2. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "a3": { "label": "left accent qualifier(s) 3", "description": "Specifies one or more comma-separated accent qualifiers to be placed before pronunciation 3. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "aa1": { "label": "right accent qualifier(s) 1", "description": "Specifies one or more comma-separated accent qualifiers to be placed after pronunciation 1. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "aa2": { "label": "right accent qualifier(s) 2", "description": "Specifies one or more comma-separated accent qualifiers to be placed after pronunciation 2. These are formatted with the {{a}}/{{accent}} template.", "type": "string" }, "aa3": { "label": "right accent qualifier(s) 3", "description": "Specifies one or more comma-separated accent qualifiers to be placed after pronunciation 3. These are formatted with the {{a}}/{{accent}} template.", "type": "string" } }, "format": "inline", "description": "demarcates one or more accepted pronunciations of a term in phonemic transcriptions of the enPR system, for use in the pronunciation section of entries. For more information, see [[Appendix:English Pronunciation]]" } </templatedata> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်မပ္တိတ်ရမျာၚ်ဂမၠိုၚ်|PR]] </includeonly> l9h7lwyph2iw2lwrh9gv1eaj3qz6p1o ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်မပ္တိတ်ရမျာၚ်ဂမၠိုၚ် 14 298343 400854 2026-08-08T04:52:30Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်ဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ပ္တိတ်ရမျာၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]]" 400854 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်အၚ်္ဂလိက်ဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ပ္တိတ်ရမျာၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|အ]] tmlpsqmfn24itiricruzi6arvpumc7o ကဏ္ဍ:ကာရန်အၚ်္ဂလိက်ဂမၠိုၚ်/ʊə- 14 298344 400855 2026-08-08T04:55:02Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ကာရန်အၚ်္ဂလိက်ဂမၠိုၚ်|ʊə-]]" 400855 wikitext text/x-wiki [[ကဏ္ဍ:ကာရန်အၚ်္ဂလိက်ဂမၠိုၚ်|ʊə-]] am3r2vdc1whh2f7c4xrjo4dfz2npyzy ကာရန်:အၚ်္ဂလိက်/ʊə- 106 298345 400856 2026-08-08T04:56:46Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|en|ʊə}} ==Rhymes stressed on {{IPAchar|/ʊə/}}== {| class="wikitable" style="margin-left:auto; margin-right:auto; width:auto;" ! Rhymes ending in ! Example ! Longer endings |- | class="IPA" | [[Rhymes:English/ʊə(ɹ)|{{IPAchar|/ʊə(ɹ)/}}]] | align="center" | '''lure''' | class="IPA" | [[Rhymes:English/ʊəɹ...|{{IPAchar|/ʊəɹ.../}} + ''vowel'']] |- | class="IPA" | Rhymes:English/ʊə(ɹ)b|{{I..." 400856 wikitext text/x-wiki {{rhymes nav|en|ʊə}} ==Rhymes stressed on {{IPAchar|/ʊə/}}== {| class="wikitable" style="margin-left:auto; margin-right:auto; width:auto;" ! Rhymes ending in ! Example ! Longer endings |- | class="IPA" | [[Rhymes:English/ʊə(ɹ)|{{IPAchar|/ʊə(ɹ)/}}]] | align="center" | '''lure''' | class="IPA" | [[Rhymes:English/ʊəɹ...|{{IPAchar|/ʊəɹ.../}} + ''vowel'']] |- | class="IPA" | [[Rhymes:English/ʊə(ɹ)b|{{IPAchar|/ʊə(ɹ)b/}}]] | align="center" | '''La Courbe''' | |- | | align="center" | ''Burczyk, Durczok,<br>Yurchuk, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)tʃ...|{{IPAchar|/ʊə(ɹ)tʃ.../}}]] |- | | align="center" | ''urka,<br>Dúrcal, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)k...|{{IPAchar|/ʊə(ɹ)k.../}}]] |- | | align="center" | ''cureless,<br>Durlacher, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)l...|{{IPAchar|/ʊə(ɹ)l.../}}]] |- | | align="center" | ''Kurmark, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)m...|{{IPAchar|/ʊə(ɹ)m.../}}]] |- | | align="center" | ''pureness, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)n...|{{IPAchar|/ʊə(ɹ)n.../}}]] |- | | align="center" | ''Kurpisz, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)p...|{{IPAchar|/ʊə(ɹ)p.../}}]] |- | class="IPA" | [[Rhymes:English/ʊə(ɹ)s|{{IPAchar|/ʊə(ɹ)s/}}]] | align="center" | '''bourse''' | |- | | align="center" | ''poor-work, etc'' | class="IPA" | [[Rhymes:English/ʊə(ɹ)w...|{{IPAchar|/ʊə(ɹ)w.../}}]] |- | class="IPA" | [[Rhymes:English/ʊə(ɹ)z|{{IPAchar|/ʊə(ɹ)z/}}]] | align="center" | '''lures''' | |} l2fbnvjyr8cwvl3atrqno67yibr0zuu 400857 400856 2026-08-08T04:58:49Z Intobesa.bot 1035 Bot: ပွမကၠာဲစုတ်ယၟုနူဘာသာအၚ်္ဂလိက် 400857 wikitext text/x-wiki {{rhymes nav|en|ʊə}} ==Rhymes stressed on {{IPAchar|/ʊə/}}== {| class="wikitable" style="margin-left:auto; margin-right:auto; width:auto;" ! Rhymes ending in ! Example ! Longer endings |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)|{{IPAchar|/ʊə(ɹ)/}}]] | align="center" | '''lure''' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊəɹ...|{{IPAchar|/ʊəɹ.../}} + ''vowel'']] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)b|{{IPAchar|/ʊə(ɹ)b/}}]] | align="center" | '''La Courbe''' | |- | | align="center" | ''Burczyk, Durczok,<br>Yurchuk, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)tʃ...|{{IPAchar|/ʊə(ɹ)tʃ.../}}]] |- | | align="center" | ''urka,<br>Dúrcal, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)k...|{{IPAchar|/ʊə(ɹ)k.../}}]] |- | | align="center" | ''cureless,<br>Durlacher, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)l...|{{IPAchar|/ʊə(ɹ)l.../}}]] |- | | align="center" | ''Kurmark, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)m...|{{IPAchar|/ʊə(ɹ)m.../}}]] |- | | align="center" | ''pureness, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)n...|{{IPAchar|/ʊə(ɹ)n.../}}]] |- | | align="center" | ''Kurpisz, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)p...|{{IPAchar|/ʊə(ɹ)p.../}}]] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)s|{{IPAchar|/ʊə(ɹ)s/}}]] | align="center" | '''bourse''' | |- | | align="center" | ''poor-work, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)w...|{{IPAchar|/ʊə(ɹ)w.../}}]] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)z|{{IPAchar|/ʊə(ɹ)z/}}]] | align="center" | '''lures''' | |} 3f2vnflc542ppig66i4tr7befa21ja4 400858 400857 2026-08-08T05:01:14Z 咽頭べさ 33 400858 wikitext text/x-wiki {{rhymes nav|en|ʊə}} ==ကာရန်ပွမဇြိုဟ်ဇြိုဟ်နက်နက်လ္တူ {{IPAchar|/ʊə/}}== {| class="wikitable" style="margin-left:auto; margin-right:auto; width:auto;" ! မလေဝ်ပလေတ်လဝ်ကာရန်ပ္ဍဲ ! နမူနာ ! မလေဝ်ပလေတ်လဝ်ဗီုပြၚ်ဂၠိၚ်ၚ် |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)|{{IPAchar|/ʊə(ɹ)/}}]] | align="center" | '''lure''' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊəɹ...|{{IPAchar|/ʊəɹ.../}} + ''သွဵု'']] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)b|{{IPAchar|/ʊə(ɹ)b/}}]] | align="center" | '''La Courbe''' | |- | | align="center" | ''Burczyk, Durczok,<br>Yurchuk, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)tʃ...|{{IPAchar|/ʊə(ɹ)tʃ.../}}]] |- | | align="center" | ''urka,<br>Dúrcal, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)k...|{{IPAchar|/ʊə(ɹ)k.../}}]] |- | | align="center" | ''cureless,<br>Durlacher, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)l...|{{IPAchar|/ʊə(ɹ)l.../}}]] |- | | align="center" | ''Kurmark, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)m...|{{IPAchar|/ʊə(ɹ)m.../}}]] |- | | align="center" | ''pureness, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)n...|{{IPAchar|/ʊə(ɹ)n.../}}]] |- | | align="center" | ''Kurpisz, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)p...|{{IPAchar|/ʊə(ɹ)p.../}}]] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)s|{{IPAchar|/ʊə(ɹ)s/}}]] | align="center" | '''bourse''' | |- | | align="center" | ''poor-work, etc'' | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)w...|{{IPAchar|/ʊə(ɹ)w.../}}]] |- | class="IPA" | [[Rhymes:အၚ်္ဂလိက်/ʊə(ɹ)z|{{IPAchar|/ʊə(ɹ)z/}}]] | align="center" | '''lures''' | |} t73djv65oors5httbbc87mcy2uqzj58 ထာမ်ပလိက်:nv-verbtable 10 298346 400859 2026-08-08T05:10:37Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "<noinclude>Base template for Navajo verbs. Use this for each separate tense/mood table. ဗီုရံၚ် {{temp|nv-verbtable-full}} တဏအ်ညိကီု </noinclude> {{inflection-table-top|title=-|palette=yellow}} !class="outer"|{{#invoke:string/templates|lower|{{{1|}}}}} !ကိုန်ဨကဝုစ် ![[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]] !ကိုန်ဗဟုဝ..." 400859 wikitext text/x-wiki <noinclude>Base template for Navajo verbs. Use this for each separate tense/mood table. ဗီုရံၚ် {{temp|nv-verbtable-full}} တဏအ်ညိကီု </noinclude> {{inflection-table-top|title=-|palette=yellow}} !class="outer"|{{#invoke:string/templates|lower|{{{1|}}}}} !ကိုန်ဨကဝုစ် ![[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]] !ကိုန်ဗဟုဝစ် |- !မရနုက်ကဵု ၁ |{{#if:{{{2|}}}|{{l-self|nv|{{{2|}}}|accel-form=1{{!}}s{{!}}{{{1}}}}}|—}} |{{#if:{{{3|}}}|{{l-self|nv|{{{3|}}}|accel-form=1{{!}}[[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]]{{!}}{{{1}}}}}|—}} |{{#if:{{{4|}}}|{{l-self|nv|{{{4|}}}|accel-form=1{{!}}p{{!}}{{{1}}}}}|—}} |- !မရနုက်ကဵု ၂ |{{#if:{{{5|}}}|{{l-self|nv|{{{5|}}}|accel-form=2{{!}}s{{!}}{{{1}}}}}|—}} |{{#if:{{{6|}}}|{{l-self|nv|{{{6|}}}|accel-form=2{{!}}[[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]]{{!}}{{{1}}}}}|—}} |{{#if:{{{7|}}}|{{l-self|nv|{{{7|}}}|accel-form=2{{!}}p{{!}}{{{1}}}}}|—}} |- !မရနုက်ကဵု ၃ |colspan=2|{{#if:{{{8|}}}|{{l-self|nv|{{{8|}}}|accel-form=3{{!}}s//[[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]]{{!}}{{{1}}}}}|—}} |{{#if:{{{9|}}}|{{l-self|nv|{{{9|}}}|accel-form=3{{!}}p{{!}}{{{1}}}}}|—}} |- !မရနုက်ကဵု ၄ |colspan=2|{{#if:{{{10|}}}|{{l-self|nv|{{{10|}}}|accel-form=4{{!}}s//[[duoplural|ကိုန်ဗဟုဝစ်ၜါလ္ပာ်]]{{!}}{{{1}}}}}|—}} |{{#if:{{{11|}}}|{{l-self|nv|{{{11|}}}|accel-form=4{{!}}p{{!}}{{{1}}}}}|—}} {{inflection-table-bottom}}<noinclude>[[ကဏ္ဍ:ထာမ်ပလိက်နာဝါဟဝ်ဂမၠိုၚ်|verbtable]]</noinclude> l9tn975ta85bpb0uy5tyi6fdz74uccq ထာမ်ပလိက်:inflection-table-block-top/documentation 10 298347 400860 2026-08-08T05:15:45Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This does the same thing as {{tl|inflection-table-block}}, but is designed to be used as a wrapper for raw table content, in partnership with {{tl|inflection-table-block-bottom}}. The following '''works''': <source lang=mediawiki> {{inflection-table-block| {{some template|...}} {{some template|...}} {{some template|...}} }} </source> The following '''doesn't work''', because MediaWiki inter..." 400860 wikitext text/x-wiki {{documentation subpage}} This does the same thing as {{tl|inflection-table-block}}, but is designed to be used as a wrapper for raw table content, in partnership with {{tl|inflection-table-block-bottom}}. The following '''works''': <source lang=mediawiki> {{inflection-table-block| {{some template|...}} {{some template|...}} {{some template|...}} }} </source> The following '''doesn't work''', because MediaWiki interprets the pipes (part of the table syntax) as delineating separate parameters to {{tl|inflection-table-block}}: <source lang=mediawiki> {{inflection-table-block| {{inflection-table-top}} ! colspan="2" | heading |- | test | another {{inflection-table-bottom}} ... }} </source> Instead, do the following: <source lang=mediawiki> {{inflection-table-block-top}} {{inflection-table-top}} ! colspan="2" | heading |- | test | another {{inflection-table-bottom}} ... {{inflection-table-block-bottom}} </source> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်လဗံက်ဂမၠိုၚ်]] </includeonly> 6t165olxb7u6lpmbpndbgta3kwssslt ထာမ်ပလိက်:ks-num-card 10 298348 400864 2026-08-08T06:48:37Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{head|ks|ဂၞန်သၚ်္ချာ|head={{{head|}}}|tr={{{tr|}}}<!-- -->|{{#if:{{{la|}}}|လပ်တေန်}}<!-- -->|{{{la|}}}|f1sc=Latn<!-- -->|{{#if:{{{pa|}}}|ဖေသဝ်-အာရဗဳ}}<!-- -->|{{{pa|}}}|f2sc=ks-Arab<!-- -->|{{#if:{{{dv|}}}|ထေဝနာဂရဳ}}<!-- -->|{{{dv|}}}|f3sc=Deva<!-- -->|{{#if:{{{sa|}}}|ချာ..." 400864 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{head|ks|ဂၞန်သၚ်္ချာ|head={{{head|}}}|tr={{{tr|}}}<!-- -->|{{#if:{{{la|}}}|လပ်တေန်}}<!-- -->|{{{la|}}}|f1sc=Latn<!-- -->|{{#if:{{{pa|}}}|ဖေသဝ်-အာရဗဳ}}<!-- -->|{{{pa|}}}|f2sc=ks-Arab<!-- -->|{{#if:{{{dv|}}}|ထေဝနာဂရဳ}}<!-- -->|{{{dv|}}}|f3sc=Deva<!-- -->|{{#if:{{{sa|}}}|ချာရာဒါ}}<!-- -->|{{{sa|}}}|f4sc=Shrd<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> fzmgw1nogvaak1uc9warsj11sytj5vw 400868 400864 2026-08-08T06:55:30Z 咽頭べさ 33 400868 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{head|ks|ဂၞန်သၚ်္ချာ|head={{{head|}}}|tr={{{tr|}}}<!-- -->|{{#if:{{{la|}}}|လပ်တေန်}}<!-- -->|{{{la|}}}|f1sc=Latn<!-- -->|{{#if:{{{pa|}}}|ဖေသဝ်-အာရဗဳ}}<!-- -->|{{{pa|}}}|f2sc=ks-Arab<!-- -->|{{#if:{{{dv|}}}|ထေဝနာခရေဝ်}}<!-- -->|{{{dv|}}}|f3sc=Deva<!-- -->|{{#if:{{{sa|}}}|ချာရာဒါ}}<!-- -->|{{{sa|}}}|f4sc=Shrd<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> h05nc5l6b4h0529m3u6ydz7ij5trujs ထာမ်ပလိက်:ks-num-card/documentation 10 298349 400865 2026-08-08T06:49:38Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{hwcat}}" 400865 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{hwcat}} f8u1ebax0fek1lf9jgky9pqli0yk03y ကဏ္ဍ:ထာမ်ပလိက်လာၚ်က္ဍိုပ်မအရေဝ်ကာဒ်ရှ်မဳယျာဂမၠိုၚ် 14 298350 400866 2026-08-08T06:51:05Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ကာဒ်ရှ်မဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:လာၚ်က္ဍိုပ်မအရေဝ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|က]]" 400866 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်ကာဒ်ရှ်မဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:လာၚ်က္ဍိုပ်မအရေဝ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|က]] g57vxb4jbn4rasb79nzxd57ltkuswo3 ကဏ္ဍ:ထာမ်ပလိက်ကာဒ်ရှ်မဳယျာဂမၠိုၚ် 14 298351 400867 2026-08-08T06:52:44Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာကာဒ်ရှ်မဳယျာ]][[ကဏ္ဍ:ထာမ်ပလိက်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|က]]" 400867 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာကာဒ်ရှ်မဳယျာ]][[ကဏ္ဍ:ထာမ်ပလိက်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|က]] s3jvch8hofc2im5jz1yx912m3wadxfk ထာမ်ပလိက်:R:hi:Chaturvedi 10 298352 400869 2026-08-08T06:56:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:quote|call_template |template=cite-book |last=Caturvedi |first=Mahendra |author2=Bhola Nath Tiwari |title=A practical Hindi-English dictionary |year=1970 |entryurl={{#if:{{{nohwlink|}}}||https://dsal.uchicago.edu/cgi-bin/app/caturvedi_query.py?qs={{urlencode:{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}}}{{#if:{{{nohw|}}}||&searchhws=yes}}&matchtype=exact}} |entry={{{alt|{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}}}} |pag..." 400869 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |last=Caturvedi |first=Mahendra |author2=Bhola Nath Tiwari |title=A practical Hindi-English dictionary |year=1970 |entryurl={{#if:{{{nohwlink|}}}||https://dsal.uchicago.edu/cgi-bin/app/caturvedi_query.py?qs={{urlencode:{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}}}{{#if:{{{nohw|}}}||&searchhws=yes}}&matchtype=exact}} |entry={{{alt|{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}}}} |pageurl=https://dsal.uchicago.edu/cgi-bin/app/caturvedi_query.py?page={{{2|{{{page=}}}}}} |pageparam=2 |location=Delhi |publisher=National Publishing House |allowparams=nohwlink,1,nohw,alt }}<noinclude>{{refcat}} ---- For parameters, see {{tl|R:mni:Sharma}}, which works similarly.</noinclude> ghdgqe2dlsymomhlqsadkakiy4c8l22