ဝိက်ရှေန်နရဳ
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>: "
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;> ' .. 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