ဝိက်ရှေန်နရဳ
mnwwiktionary
https://mnw.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%80%80%E1%80%BA%E1%80%9B%E1%80%BE%E1%80%B1%E1%80%94%E1%80%BA%E1%80%94%E1%80%9B%E1%80%B3:%E1%80%99%E1%80%AF%E1%80%80%E1%80%BA%E1%80%9C%E1%80%AD%E1%80%80%E1%80%BA%E1%80%90%E1%80%99%E1%80%BA
MediaWiki 1.47.0-wmf.8
case-sensitive
မဳဒဳယာ
တၟေင်
ဓရီုကျာ
ညးလွပ်
ညးလွပ် ဓရီုကျာ
ဝိက်ရှေန်နရဳ
ဝိက်ရှေန်နရဳ ဓရီုကျာ
ဝှာင်
ဝှာင် ဓရီုကျာ
မဳဒဳယာဝဳကဳ
မဳဒဳယာဝဳကဳ ဓရီုကျာ
ထာမ်ပလိက်
ထာမ်ပလိက် ဓရီုကျာ
ရီု
ရီု ဓရီုကျာ
ကဏ္ဍ
ကဏ္ဍ ဓရီုကျာ
အဆက်လက္ကရဴ
အဆက်လက္ကရဴ ဓရီုကျာ
ကာရန်
ကာရန် ဓရီုကျာ
အဘိဓာန်
အဘိဓာန် ဓရီုကျာ
ဗီုပြၚ်သိုၚ်တၟိ
ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ
TimedText
TimedText talk
မဝ်ဂျူ
မဝ်ဂျူ ဓရီုကျာ
Event
Event talk
မဝ်ဂျူ:utilities
828
666
397661
385616
2026-06-28T07:25:11Z
咽頭べさ
33
397661
Scribunto
text/plain
local export = {}
local headword_data_module = "Module:headword/data"
local languages_module = "Module:languages"
local links_module = "Module:links"
local load_module = "Module:load"
local pages_module = "Module:pages"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_utilities_module = "Module:string utilities"
local utilities_data_module = "Module:utilities/data"
local mw = mw
local anchor_encode = mw.uri.anchorEncode
local concat = table.concat
local format_categories -- Defined below.
local ipairs = ipairs
local require = require
local type = type
local unstrip = mw.text.unstrip
--[==[
Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==]
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function is_content_page(...)
is_content_page = require(pages_module).is_content_page
return is_content_page(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function trim(...)
trim = require(string_utilities_module).trim
return trim(...)
end
local function uupper(...)
uupper = require(string_utilities_module).upper
return uupper(...)
end
--[==[
Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==]
local catfix_scripts
local function get_catfix_scripts()
catfix_scripts, get_catfix_scripts = load_data(utilities_data_module).catfix_scripts, nil
return catfix_scripts
end
local current_title
local function get_current_title()
current_title, get_current_title = mw.title.getCurrentTitle(), nil
return current_title
end
local defaultsort
local function get_defaultsort()
defaultsort, get_defaultsort = load_data(headword_data_module).page.pagename_defaultsort, nil
return defaultsort
end
local pagename
local function get_pagename()
pagename, get_pagename = load_data(headword_data_module).page.encoded_pagename, nil
return pagename
end
local und
local function get_und()
und, get_und = require(languages_module).getByCode("und"), nil
return und
end
do
local function handle_url(capture)
return capture:match("https?://[^%s%]]+%s([^%]]+)") or ""
end
--[==[
A helper function to strip wiki markup, giving the plaintext of what is displayed on the page.]==]
function export.get_plaintext(text)
text = text
:gsub("%[%[", "\1")
:gsub("%]%]", "\2")
-- Remove strip markers and HTML tags.
text = unstrip(text):gsub("<[^<>\1\2]+>", "")
-- Parse internal links for the display text, and remove categories.
text = remove_links(text)
-- Remove files.
text = text:gsub("\1[Ff][Ii][Ll][Ee]:[^\1\2]+\2", "")
:gsub("\1[Ii][Mm][Aa][Gg][Ee]:[^\1\2]+\2", "")
-- Parse external links for the display text.
text = text:gsub("%[(https?://[^%[%]]+)%]", handle_url)
-- Any remaining square brackets aren't involved in links, but must be escaped to avoid creating new links.
:gsub("\1", "[[")
:gsub("\2", "]]")
:gsub("%[", "[")
:gsub("]", "]")
-- Strip bold, italics and soft hyphens.
:gsub("('*)'''(.-'*)'''", "%1%2")
:gsub("('*)''(.-'*)''", "%1%2")
:gsub("", "")
-- Get any HTML entities and trim.
-- Note: don't decode URL percent encoding, as it shouldn't be used in display text and may cause problems if % is used.
return trim(decode_entities(text))
end
end
do
local function generate_sortkey(lang, sc, sort_key, sort_base)
-- If the sort key is "-", treat the language as undetermined (the default). This is desirable when categorising (e.g.) translation requests, as the pages to be categorised are always in English/Translingual.
if sort_key == "-" then
lang, sort_key = und or get_und(), nil
elseif not lang then
lang = und or get_und()
end
-- Generate the automatic sort key.
local auto = lang:makeSortKey(sort_base or pagename or get_pagename(), sc)
-- Use the page defaultsort if necessary. Try hard to avoid empty sort key, which causes categories to be
-- displayed as raw text; fall back to pagename if necessary.
if not auto or auto == "" then
auto = defaultsort or get_defaultsort()
end
if not auto or auto == "" then
auto = sort_base
end
if not auto or auto == "" then
auto = pagename or get_pagename()
end
-- If not sort key specified, use the automatic one.
if not sort_key or sort_key == "" then
return auto
-- Otherwise, if the language is not "und", categorize the manual sort key as either redundant or non-redundant.
-- FIXME: we should do this for "und" as well, but "Undetermined terms..." does not make sense for translations etc.
elseif lang:getCode() ~= "und" then
return sort_key, "[[Category:" .. lang:getFullName() .. " terms with " .. (
uupper(sort_key) == auto and "redundant" or
"non-redundant non-automated"
) .. " sortkeys|" .. sort_key .. "]]"
end
return sort_key
end
--[==[
Format the categories with the appropriate sort key.
* `cat` can take two forms:
** A string (the full category, minus the {"Category:"} prefix);
** A list of categories. Each category in the list can be either:
*** A string in the same format as above;
*** An object with the fields:
**** `cat`: a string in the same format as above (required);
**** `lang`: an optional language object to override the overall `lang`;
**** `sc`: an optional script object to override the overall `sc`.
**** `sort_key`: an optional sort key to override the overall `sort_key`;
**** `sort_base`: an optional sort base to override the overall `sort_base`;
* `lang` is an object encapsulating a language; if {nil}, the object for language code {"und"} (undetermined) will
be used. `lang` is used when computing the sort key (either from the subpage name or sort base).
* `sort_key` is placed in the category invocation, and indicates how the page will sort in the respective category.
Normally '''do not use this'''. Instead, leave it {nil}, and if you need to a control the sort order, use
{sort_base}, so that language-specific normalization is applied on top of the specified sort base. If neither
{sort_key} nor {sort_base} is specified, the default is to apply language-specific normalization to the subpage
name; see below.
* `sort_base` lets you override the default sort key while still maintaining appropriate language-specific
normalization. If {nil} is specified, this defaults to the subpage name, which is the portion of the full pagename
after subtracting the namespace prefix (and, in certain namespaces such as {User:}, but notably not in the
mainspace, after subtracting anything up through the final slash). The actual sort key is derived from the sort
base approximately by lowercasing, applying language-specific normalization and then uppercasing; note that the
same process is applied in deriving the sort key when no sort base is specified. For example, for French, Spanish,
etc. the normalization process maps accented letters to their unaccented equivalents, so that e.g. in French,
{{m|fr|ça}} sorts after {{m|fr|ca}} (instead of after the default Wikimedia sort order, which is approximately
based on Unicode sort order and places ç after z) and {{m|fr|côté}} sorts after {{m|fr|coté}} (instead of between
c and d). Similarly, in Russian the normalization process converts Cyrillic ё to a string consisting of Cyrillic е
followed by U+10FFFF, so that effectively ё sorts after е instead of the default Wikimedia sort, which (I think)
puts ё after я, the last letter of the Cyrillic alphabet.
* `force_output` forces normal output in all namespaces. Normally, nothing is output if the page isn't in the main,
Appendix:, Thesaurus:, Reconstruction: or Citations: namespaces.
* `sc` is a script object; if nil, the default will be derived from the sort base (or its default value, the
subpage name) by calling {lang:findBestScript()}. The value of `sc` is used during the sort base normalization
process; for example, languages with multiple scripts will often have script-specific normalization processes.]==]
function export.format_categories(cat, lang, sort_key, sort_base, force_output, sc)
if not (
force_output or
is_content_page(current_title or get_current_title()) or
current_title.prefixedText == "Wiktionary:Sandbox"
) then
return ""
elseif type(cat) == "string" then
local this_sort_key, extra = generate_sortkey(lang, sc, sort_key, sort_base)
return "[[Category:" .. cat .. "|" .. this_sort_key .. "]]" .. (extra or "")
end
local ret, i, n, default = {}, 0, 0
-- Iterate over all categories in `cat`.
while true do
i = i + 1
local category = cat[i]
if category == nil then
return concat(ret)
end
local this_sort_key, extra
-- If the category type is a table, use any custom options in it.
if type(category) == "table" then
category, this_sort_key, extra = category.cat, generate_sortkey(
category.lang or lang,
category.sc or sc,
category.sort_key or sort_key,
category.sort_base or sort_base
)
-- If `default` has already been determined, use it.
elseif default then
this_sort_key = default
-- Otherwise, calculate `default` and use it.
else
this_sort_key, extra = generate_sortkey(lang, sc, sort_key, sort_base)
default = this_sort_key
end
n = n + 1
ret[n] = "[[Category:" .. category .. "|" .. this_sort_key .. "]]" .. (extra or "")
end
end
format_categories = export.format_categories
end
--[==[
Add a "catfix", which is used on language-specific category pages to add language attributes and often script
classes to all entry names. The addition of language attributes and script classes makes the entry names display
better (using the language- or script-specific styles specified in [[MediaWiki:Common.css]]), which is particularly
important for non-English languages that do not have consistent font support in browsers.
Language attributes are added for all languages, but script classes are only added for languages with one script
listed in their data file, or for languages that have a default script listed in the {catfix_script} list in
[[Module:utilities/data]]. Some languages clearly have a default script, but still have other scripts listed in
their data file. If those other scripts are not simply scripts like {{cd|Brai}} (Braille), their default script
needs to be specified. Others do not have a default script.
* Serbo-Croatian is regularly written in both the Latin and Cyrillic scripts. Because it uses two scripts,
Serbo-Croatian cannot have a script class applied to entries in its category pages, as only one script class
can be specified at a time.
* German is usually written in the Latin script ({{cd|Latn}}), but Fraktur ({{cd|Latf}}) is also listed in
its data file. So German needs an entry in the {catfix_script} list, so that the {{cd|Latn}} (Latin) script
class will be applied to entries in its category pages.
To find the scripts listed for a language, go to [[Module:languages]] and use the search box to find the data file
for the language. To find out what a script code means, search the script code in [[Module:scripts/data]].]==]
function export.catfix(lang, sc)
if not lang or not lang.getCanonicalName then
error('The first argument to the function "catfix" should be a language object from [[Module:languages]] or [[Module:etymology languages]].')
end
if sc and not sc.getCode then
error('The second argument to the function "catfix" should be a script object from [[Module:scripts]].')
end
-- To add script classes to links on pages created by category boilerplate templates.
if not sc then
local code = (catfix_scripts or get_catfix_scripts())[lang:getCode()] or catfix_scripts[lang:getFullCode()]
if code then
sc = get_script(code)
end
end
-- If the language only has a single valid candidate script, apply it as the default.
if not sc then
local scripts = lang:getScripts()
if #scripts == 1 then
sc = scripts[1]
else
-- Iterate over scripts. If there is only one when ignoring
-- scripts like Brai, then pick that one.
for _, script in ipairs(scripts) do
if script:getCode() ~= "Brai" then
if sc then
-- Multiple candidates - fail.
sc = nil
break
else
sc = script
end
end
end
end
end
-- Hack: using a <ul> tag prevents the parser from automatically generating a <p> tag around the catfix element.
return "<ul class=\"catfix\" data-anchor=\"" ..
anchor_encode(lang:getFullName()) .. "\">" ..
tag_text("", lang, sc) .. "</ul>" ..
format_categories("Pages using catfix", nil, nil, nil, true)
end
--[==[
Given a type (as a string) and an arbitrary number of entities, checks whether all of those entities are language,
family, script, writing system or Wikimedia language objects. Useful for error handling in functions that require
one of these kinds of object.
If `noErr` is set, the function returns false instead of throwing an error, which allows customised error handling to
be done in the calling function.]==]
function export.check_object(typ, noErr, ...)
if ... == nil then
if noErr then
return false
end
error("Must provide at least one object to check.", 2)
end
for _, obj in ipairs{...} do
if type(obj) ~= "table" or type(obj.hasType) ~= "function" then
if noErr then
return false
end
error("Function expected a " .. typ .. " object, but received a " .. type(obj) .. " instead.", 2)
elseif not (typ == "object" or obj:hasType(typ)) then
for _, wrong_type in ipairs{"family", "language", "script", "Wikimedia language", "writing system"} do
if obj:hasType(wrong_type) then
if noErr then
return false
end
error("Function expected a " .. typ .. " object, but received a " .. wrong_type .. " object instead.", 2)
end
end
if noErr then
return false
end
error("Function expected a " .. typ .. " object, but received another type of object instead.", 2)
end
end
return true
end
return export
szkevg9xl5j9wpvvgbzhwuqjxjznt9y
မဝ်ဂျူ:fr-verb
828
14860
397624
397618
2026-06-28T02:28:27Z
咽頭べさ
33
397624
Scribunto
text/plain
--[=[
Author: originally Kc kennylau; rewritten by Benwing
This implements {{fr-conj-auto}}. It uses the following submodules:
* [[Module:fr-verb/core]] (helper for generating conjugations)
* [[Module:fr-verb/pron]] (helper for generating pronunciations of conjugations)
* [[Module:fr-conj]] (for constructing the table wikicode given the forms)
* [[Module:fr-pron]] (for generating pronunciations of stems)
FIXME:
1. (DONE) Use ‿ to join reflexive pronouns.
2. montre-toi needs a schwa in it.
3. (DONE) 'etre' and 'avoir_or_etre' tables should be moved to the template call.
3a. (DONE) Make sure aux= is supported at the template level.
4. Implement 'aspirated h'; not all vowel-initial verbs have elision with
reflexive pronouns.
5. (REMOVED THE ARGUMENTS, NOT USED) Document the various override arguments.
6. Implement conjugation for -éyer.
7. (MAYBE? MAYBE NOT NECESSARY, {{fr-conj-ir}} doesn't seem to use it,
MAYBE ALREADY DONE IN THE HEADWORD CODE?) Implement sort= for sort key,
and handle most cases automatically (e.g. chérir with sort=cherir).
8. (DONE) Copy notes from {{fr-conj-ir}} to our conj["ir"].
9. (DONE) Lots of other conjugations needed. Consider generalizing existing code
so a minimal number of principal parts can be given and all the conjugation
and pronunciation derived.
10. (DONE) Convert remaining use of old templates to use {{fr-conj-auto}}.
11. (DONE) Figure out what the COMBINING flag in [[Module:fr-pron]] does and
remove it, including all calls from this module.
12. (ALREADY DONE) Support sevrer, two-stem e/è verb.
13. (DONE) Autodetect e-er verbs including eCer as well as eCler and eCrer verbs
like sevrer, and eguer/equer (if they exist). Make sure there aren't
verbs of this form that aren't e-er by looking for them in the list of
fr-conj-auto verbs that have an empty typ arg (possibly enough to look
at all fr-conj-auto verbs).
14. Check pronunciation of 'pleuvoir'. TLFi says /pløvwaʁ/, frwikt says /plœvwaʁ/.
15. (DONE) Check if -er-type conjugations of -aillir, -cueillir, braire are
correct.
16. (DONE) Fix notes for prefixed croitre/croître verbs, based on the old-style
templates.
17. (DONE) Implement impersonal and only-third verbs, including impers=
and onlythird=.
18. (DONE) Fix schwa in -ayer, -eyer pronunciation and check other uses of
ind_f() to see if they need a fut_stem_i.
19. Implement sort key in {{fr-verb}}. Should map accented letters to
unaccented letters and rearrange "se regarder" to "regarder, se" and
similarly for "s'infiltrer".
20. "se regarder" should have optional schwa in re-.
Remaining templates:
-- copier-coller: FIXME, eventually implement general support for verbs like this
--]=]
-- Table of exported functions.
local export = {}
-- Table of conjugation functions. The keys are verbal suffixes (e.g. "ir",
-- "iller") and the values are no-argument functions that apply to verbs whose
-- infinitive contains that suffix, unless the verb also matches a conjugation
-- corresponding to a longer suffix. The values take all info on the verb
-- from 'data' (see below) and set properties of 'data' to indicate the
-- verb forms and pronunciation.
local conj = {}
-- If not false, compare this module with new version of module to make
-- sure all conjugations and pronunciations are the same. If "error", issue
-- an error whenever they are different, with the contents of the error
-- indicating the different forms; otherwise, use the tracking category
-- [[Wiktionary:Tracking/fr-verb/different-conj]] (see what links there to see
-- the differing verbs; there's also [[Wiktionary:Tracking/fr-verb/same-conj]]
-- for the verbs that don't differ, which can be used to verify that all verbs
-- have been processed, as it takes awhile for this to happen).
local test_new_fr_verb_module = false
local m_core = require("Module:fr-verb/core")
local m_pron = require("Module:fr-verb/pron")
local m_links = require("Module:links")
local m_conj = require("Module:fr-conj")
local m_fr_pron = require("Module:fr-pron")
local lang = require("Module:languages").getByCode("fr")
local m_table = require("Module:table")
local m_utilities = require("Module:utilities")
local m_debug = require("Module:debug")
local rfind = mw.ustring.find
local rsubn = mw.ustring.gsub
local rmatch = mw.ustring.match
local rsplit = mw.text.split
local usub = mw.ustring.sub
local written_vowel = "aàâeéèêiîoôuûäëïöüÿ"
local written_cons_c = "[^%-" .. written_vowel .. "]"
local written_cons_no_y_c = "[^%-y" .. written_vowel .. "]"
local written_cons_no_cgy_c = "[^%-cgy" .. written_vowel .. "]"
local written_cons_no_cgyx_c = "[^%-cgyx" .. written_vowel .. "]"
local written_cons_no_lryx_c = "[^%-lryx" .. written_vowel .. "]"
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- Map a function over one of the following:
-- (1) a single string (return value will be FUN(STRING))
-- (2) a list SEQ of either strings or tables of the form {"STEM", respelling="RESPELLING"}; the return value is a
-- list of calls to FUN, with one element per element in SEQ, flattened if DO_FLATMAP is specified and the return
-- value of FUN is a list; if an element of SEQ is a string, the corresponding return value will be FUN(STRING);
-- if an element of SEQ is a table of the above form, the corresponding return value will be FUN("STEM"), unless
-- third arg USE_RESPELLING is given, in which case the corresponding return value will be FUN("RESPELLING").
local function map(seq, fun, use_respelling, do_flatmap)
if type(seq) == "table" then
local ret = {}
for _, s in ipairs(seq) do
if type(s) == "table" then
if use_respelling then
assert(s.respelling)
s = s.respelling
else
s = s[1]
end
end
local retval = fun(s)
if do_flatmap and type(retval) == "table" then
for _, item in ipairs(retval) do
m_table.insertIfNot(ret, item)
end
else
m_table.insertIfNot(ret, retval)
end
end
return ret
else
-- store in separate var in case fun() has multiple retvals
local retval = fun(seq)
return retval
end
end
local function IPA(str)
return require("Module:IPA").format_IPA(nil, str)
end
local function pron(str)
return m_fr_pron.show(str, "v")
end
local function dopron(data, stem, suffix)
suffix = suffix or ""
return map(stem, function(s)
return pron((data and data.pronstem or "") .. s .. suffix)
end, "respelling", "flatmap")
end
local function setform(data, form, val, pron)
data.forms[form] = val
data.prons[form] = dopron(data, pron or val)
end
local function copyform(data, fromform, toform, newformval)
-- Need to clone objects when copying forms, otherwise we get duplicated prefixes added in case of
-- prefixed verbs.
data.forms[toform] = newformval or mw.clone(data.forms[fromform])
data.prons[toform] = mw.clone(data.prons[fromform])
end
local all_verb_props = {
"inf", "pp", "ppr",
"inf_nolink", "pp_nolink", "ppr_nolink",
"ind_p_1s", "ind_p_2s", "ind_p_3s", "ind_p_1p", "ind_p_2p", "ind_p_3p",
"ind_i_1s", "ind_i_2s", "ind_i_3s", "ind_i_1p", "ind_i_2p", "ind_i_3p",
"ind_ps_1s", "ind_ps_2s", "ind_ps_3s", "ind_ps_1p", "ind_ps_2p", "ind_ps_3p",
"ind_f_1s", "ind_f_2s", "ind_f_3s", "ind_f_1p", "ind_f_2p", "ind_f_3p",
"cond_p_1s", "cond_p_2s", "cond_p_3s", "cond_p_1p", "cond_p_2p", "cond_p_3p",
"sub_p_1s", "sub_p_2s", "sub_p_3s", "sub_p_1p", "sub_p_2p", "sub_p_3p",
"sub_pa_1s", "sub_pa_2s", "sub_pa_3s", "sub_pa_1p", "sub_pa_2p", "sub_pa_3p",
"imp_p_2s", "imp_p_1p", "imp_p_2p"
}
-- Table mapping verb suffixes to other verb suffixes that they are
-- conjugated the same as. Only required when there is a shorter-length
-- suffix of the verb that has a different conjugation (in this case,
-- 'naitre' and 'naître').
local alias = {
["connaitre"] = "aitre",
["connaître"] = "aître",
}
-- List of -ir verbs that do not take -iss- infix.
local ir_s = {
"dormir", "endormir", "redormir", "rendormir",
"partir", "départir", "repartir",
"sortir", "ressortir",
"sentir", "assentir", "consentir", "pressentir", "ressentir",
"mentir", "démentir",
"servir", "desservir", "resservir",
"repentir"
}
for _,key in ipairs(ir_s) do
ir_s[key] = true
end
local function link(term, alt)
return m_links.full_link({lang = lang, term = term, alt = alt}, "term")
end
-- Clone parent's args while also assigning nil to empty strings.
local function clone_args(frame)
local args = {}
for pname, param in pairs(frame:getParent().args) do
if param == "" then args[pname] = nil
else args[pname] = param
end
end
return args
end
local function track(page)
m_debug.track("fr-verb/" .. page)
return true
end
-- Remove the expected ending ENDING from IPA pronunciation PRON (possibly
-- nil); error if ending not present.
local function strip_pron_ending(pron, ending)
if not pron then
return nil
end
return map(pron, function(val)
if not rfind(val, ending .. "$") then
error('Internal error: expected pronunciation "' .. val .. '" to end with "' .. ending .. '"')
end
return rsub(val, ending .. "$", "")
end)
end
-- Remove the expected ending ENDING from respelling pronunciation PRON
-- (possibly nil or a sequence); error if ending not present.
local function strip_respelling_ending(pron, ending)
if not pron then
return nil
end
return map(pron, function(val)
if not rfind(val, ending .. "$") then
error('Expected respelling "' .. val .. '" to end with "' .. ending .. '"')
end
return rsub(val, ending .. "$", "")
end)
end
-- Remove the expected beginning BEGINNING from respelling pronunciation PRON
-- (possibly nil); error if beginning not present. If SPLIT, split the value
-- of PRON on comma, strip the beginning from each component, and paste
-- together.
local function strip_respelling_beginning(pron, beginning, split)
if not pron then
return nil
end
if split then
local pronvals = rsplit(pron, ",")
local stripped_pronvals = {}
for _, pronval in ipairs(pronvals) do
table.insert(stripped_pronvals, strip_respelling_beginning(pronval, beginning))
end
return table.concat(stripped_pronvals, ",")
end
if not rfind(pron, "^" .. beginning) then
error('Expected respelling "' .. pron .. '" to begin with "' .. beginning .. '"')
end
return rsub(pron, "^" .. beginning, "")
end
-- Construct the pronunciation of all forms of an -er verb. PRONSTEM is the
-- pronunciation respelling of the stem (minus -er). If PRONSTEM_FINAL_FUT is
-- given, it is used in place of PRONSTEM for the forms without a pronounced
-- ending (i.e. 1s/2s/3s/3p present) and for the future and conditional; this
-- is used with two-stem verbs such as mener (with stems 'men' and 'mèn') and
-- céder (with stems 'céd' and 'cèd').
local function construct_er_pron(data, pronstem, pronstem_final_fut)
pronstem_final_fut = pronstem_final_fut or pronstem
pronstem = map(pronstem, function(stem) return data.pronstem .. stem end)
pronstem_final_fut = map(pronstem_final_fut, function(stem)
stem = data.pronstem .. stem
-- In pronstem_final_fut, convert é+C in the last syllable to è even if
-- the caller didn't do it. This is principally useful with pron=
-- specifications, so that e.g. pron=blésser,blèsser works.
stem = rsub(stem, "é(" .. written_cons_c .. "+)$", "è%1")
return rsub(stem, "é([gq]u)$", "è%1")
end)
local stem_final = dopron(nil, pronstem_final_fut, "e")
local stem_nonfinal = strip_pron_ending(dopron(nil, pronstem, "ez"), "e")
local stem_nonfinal_i = strip_pron_ending(dopron(nil, pronstem, "iez"), "je")
local stem_fut = strip_pron_ending(dopron(nil, pronstem_final_fut, "erez"), "e")
local stem_fut_i = strip_pron_ending(dopron(nil, pronstem_final_fut, "eriez"), "je")
return m_pron.er(data, stem_final, stem_nonfinal, stem_nonfinal_i,
stem_fut, stem_fut_i)
end
local function make_passe_simple(data, past_stem, er_past)
-- Passé simple
if er_past then
m_core.make_ind_ps_a(data, past_stem)
else
m_core.make_ind_ps(data, past_stem)
end
if past_stem ~= "—" then
local past_stem_pron = dopron(data, past_stem)
if er_past then
m_pron.ind_ps_a(data, past_stem_pron)
else
m_pron.ind_ps(data, past_stem_pron)
end
end
end
local function make_future_conditional(data, fut_stem)
-- Future/conditional
if not fut_stem then
fut_stem = rsub(data.forms.inf, "e$", "")
end
m_core.make_ind_f(data, fut_stem)
if fut_stem ~= "—" then
local fut_stem_pron = strip_pron_ending(dopron(data, fut_stem, "ez"), "e")
-- If the future stem ends in -er, the schwa is optional in -erez but
-- not in -eriez; examples are assaillir, cueillir, refaire, défaire,
-- contrefaire, méfaire (the latter four have the future pronounced
-- -fer-). Also, if the future stem ends in -Cr, there will be an
-- extra syllable inserted before -ions, -iez.
local fut_stem_pron_i = strip_pron_ending(dopron(data, fut_stem, "iez"), "je")
m_pron.ind_f(data, fut_stem_pron, fut_stem_pron_i)
end
end
-- Construct the conjugation and pronunciation of all forms of a non-er verb.
-- DATA holds the forms and pronunciations. The remaining args are stems:
--
-- * PRES_SG_STEM is used for pres indicative 1s/2s/3s and the imperative 2s;
-- * PRES_12P_STEM is used for pres indicative/imperative 1p/2p, the whole of the imperfect, the present participle,
-- and (unless PRES_SUBJ_STEM is given) the pres subjunctive 1p/2p;
-- * PRES_3P_STEM is used for pres indicative 3p and pres subjunctive 1s/2s/3s/3p;
-- * PAST_STEM is used for the past historic, the imperfect subjunctive and (unless PP is given) the past participle;
-- * FUT_STEM (which should end with 'r') is used for the future and conditional. If omitted, it is taken from the
-- infinitive minus any final -e.
-- * PP is the past participle. If omitted, if defaults to PAST_STEM.
-- * PRES_SUBJ_STEM if given overrides the present subjunctive stem.
-- * PRES_SUBJ_NONFINAL_STEM if given overrides the present subjunctive stem specifically for 1p/2p, defaulting to
-- PRES_SUBJ_STEM.
-- * ER_PRESENT, if true, specifies that the present singular follows an -er type of conjugation (endings -e, -es, -e
-- in place of -s, -s, -t). In this case, PRES_12P_STEM and PRES_3P_STEM are currently ignored. Normally, use
-- construct_non_er_conj_er_present() in place of this arg.
-- * ER_PAST, if true, specifies that the past historic and imperfect subjunctive follow an -er type of conjugation.
--
-- Any of the stem arguments may be "—" to indicate that it is missing, or a table, where each element can be a string
-- (a stem) or a table of the form {"STEM", RESPELLING="RESPELLING"}, specifying a stem to use for constructing the
-- verb forms and the corresponding respelling to use when constructing the pronunciation. This is used, for example,
-- in [[mourir]], [[courir]] and [[avoir]].
local function construct_non_er_conj(data, pres_sg_stem, pres_12p_stem, pres_3p_stem, past_stem, fut_stem, pp,
pres_subj_stem, pres_subj_nonfinal_stem, er_present, er_past)
if er_present then
m_core.make_ind_p_e(data, pres_sg_stem)
else
m_core.make_ind_p(data, pres_sg_stem, pres_12p_stem, pres_3p_stem)
end
-- Most of the time it works to add 's' to produce the 1sg (it doesn't
-- always work to use the stem directly, cf. apparais vs. apparai). But
-- this fails with stems ending in -er, e.g 'resser-' from 'resservir',
-- because the 'r' will be silent. In that case, we add 't' to produce
-- the 3sg. We can't always add 't' because that will fail with e.g.
-- 'ressen-' from 'ressentir', where the resulting '-ent' will be silent.
if pres_sg_stem ~= "—" then
if er_present then
local stem_final_pron = dopron(data, pres_sg_stem, "e")
local stem_nonfinal_pron = strip_pron_ending(dopron(data, pres_sg_stem, "ez"), "e")
local stem_nonfinal_i_pron = strip_pron_ending(dopron(data, pres_sg_stem, "iez"), "je")
m_pron.er(data, stem_final_pron, stem_nonfinal_pron,
stem_nonfinal_i_pron)
else
local pres_sg_stem_pron = map(pres_sg_stem, function(stem)
return rmatch(data.pronstem .. stem, "er$") and dopron(data, stem, "t") or dopron(data, stem, "s")
end, "respelling", "flatmap")
local pres_12p_stem_pron = strip_pron_ending(dopron(data, pres_12p_stem, "ez"), "e")
local pres_3p_stem_pron = dopron(data, pres_3p_stem, "e")
local pre_j_stem_pron = strip_pron_ending(dopron(data, pres_12p_stem, "iez"), "je")
m_pron.ind_p(data, pres_sg_stem_pron, pres_12p_stem_pron, pres_3p_stem_pron, pre_j_stem_pron)
end
end
make_passe_simple(data, past_stem, er_past)
make_future_conditional(data, fut_stem)
if pp then
data.forms.pp = pp
if pp ~= "—" then
data.prons.pp = dopron(data, pp)
end
end
if pres_subj_stem then
m_core.make_sub_p(data, pres_subj_stem, pres_subj_nonfinal_stem)
if pres_subj_stem ~= "—" then
local pres_subj_pron1 = dopron(data, pres_subj_stem, "e")
local pres_subj_pron2 = strip_pron_ending(dopron(data, pres_subj_nonfinal_stem or pres_subj_stem, "iez"), "je")
m_pron.sub_p(data, pres_subj_pron1, pres_subj_pron2)
end
end
end
-- Construct the conjugation and pronunciation of all forms of a non-er verb
-- with an -er type of present (singular -e, -es, -e). DATA holds the forms
-- and pronunciations. The remaining args are stems:
--
-- * PRES_STEM is used for the whole of the present as well as the imperfect
-- indicative;
-- * PAST_STEM is used for the past historic and past participle;
-- * FUT_STEM (which should end with 'r') is used for the future and
-- conditional. If omitted, it is taken from the infinitive minus final -e.
-- * PP is the past participle. If omitted, if defaults to PAST_STEM.
-- * PRES_SUBJ_STEM if given overrides the present subjunctive stem.
-- * PRES_SUBJ_NONFINAL_STEM if given overrides the present subjunctive stem
-- specifically for 1p/2p, defaulting to PRES_SUBJ_STEM.
--
-- Any of the stem arguments may actually be a table of stems.
local function construct_non_er_conj_er_present(data, pres_stem, past_stem,
fut_stem, pp, pres_subj_stem, pres_subj_nonfinal_stem)
-- Specify the pp explicitly, explicitly defaulting to the past_stem,
-- else it will end in -é.
construct_non_er_conj(data, pres_stem, nil, nil, past_stem, fut_stem,
pp or past_stem, pres_subj_stem, pres_subj_nonfinal_stem, "er-present")
end
local function impersonal_verb(data)
for _, k in ipairs(all_verb_props) do
if rmatch(k, "[12]") or rmatch(k, "3p") then
data.forms[k] = "—"
end
end
end
local function only_third_verb(data)
for _, k in ipairs(all_verb_props) do
if rmatch(k, "[12]") then
data.forms[k] = "—"
end
end
end
conj["er"] = function(data)
if data.stem == "all" then
data.stem = ""
data.pronstem = strip_respelling_ending(data.pron, "aller") or data.stem
conj["irreg-aller"](data)
data.forms.inf = "aller"
data.conjcat = "aller"
data.cat = "suppletive"
else
m_core.make_ind_p_e(data, "")
construct_er_pron(data, "")
data.group = 1
data.conjcat = "-er"
end
end
conj["cer"] = function(data)
m_core.make_ind_p_e(data, "c", "ç")
data.notes = "This verb is part of a group of " .. link("-er") .. " verbs for which 'c' is softened to a 'ç' before the vowels 'a' and 'o'."
construct_er_pron(data, "c")
data.group = 1
data.conjcat = "-cer"
end
conj["ger"] = function(data)
m_core.make_ind_p_e(data, "g", "ge")
data.notes = "This is a regular " .. link("-er") .. " verb, but the stem is written ''{stem}ge-'' before endings that begin with ''-a-'' or ''-o-'' "
data.notes = data.notes .. "(to indicate that the ''-g-'' is a \"soft\" " .. IPA("/ʒ/") .. " and not a \"hard\" " .. IPA("/ɡ/") .. "). "
data.notes = data.notes .. "This spelling change occurs in all verbs in ''-ger'', such as "
data.notes = data.notes .. link(data.stem == "nei" and "bouger" or "neiger") .. " and "
data.notes = data.notes .. link(data.stem == "man" and "ranger" or "manger") .. "."
construct_er_pron(data, "g")
data.group = 1
data.conjcat = "-ger"
end
conj["ayer"] = function(data)
data.notes = "This is a regular " .. link("-er") .. " verb as far as "
.. "pronunciation is concerned, but as with other verbs in ''-ayer'' "
.. "(such as " .. link(data.stem == "pay" and "essayer" or "payer")
.. " and " .. link((data.stem == "pay" or data.stem == "essay") and "balayer" or "essayer")
.. "), the <y> of its stem may optionally be written as <i> "
.. "when it precedes a silent <e> (compare verbs in ''-eyer'', "
.. "which never have this spelling change, and verbs in ''-oyer'' "
.. "and ''-uyer'', which always have it; verbs in ''-ayer'' belong to "
.. "either group, according to the writer's preference)."
m_core.make_ind_p_e(data, {"ay", "ai"}, "ay", "ay")
construct_er_pron(data, "ay", {"ay", "ai"})
data.group = 1
data.conjcat = "-ayer"
end
conj["eyer"] = function(data)
m_core.make_ind_p_e(data, "ey")
construct_er_pron(data, "ey", "ey")
data.group = 1
data.conjcat = "-eyer"
end
conj["yer"] = function(data)
data.notes = "This verb is part of a large group of " .. link("-er")
.. " verbs that conjugate like "
.. link(data.stem == "no" and "employer" or "noyer") .. " or "
.. link(data.stem == "ennu" and "appuyer" or "ennuyer") .. ". These "
.. "verbs always replace the 'y' with an 'i' before a silent 'e'."
m_core.make_ind_p_e(data, "i", "y", "y")
construct_er_pron(data, "y", "i")
data.group = 1
data.conjcat = "-yer"
end
conj["xxer"] = function(data)
local newstem, consonant = rmatch(data.stem, "^(.*)e(" .. written_cons_c .. ")$")
if not consonant then
error("Stem '" .. data.stem .. "' should end with -e- + consonant")
end
data.forms.inf = "e" .. consonant .. "er" -- not xxer
local origstem = data.stem
data.stem = newstem
data.pronstem = strip_respelling_ending(data.pron, data.forms.inf) or data.stem
data.notes = "With the exception of " .. (origstem == "appel" and "''appeler''" or link("appeler")) .. ", "
data.notes = data.notes .. (origstem == "jet" and "''jeter''" or link("jeter")) .. " and their derived verbs, "
data.notes = data.notes .. "all verbs that used to double the consonants can now also be conjugated like " .. link("amener") .. "."
if rfind(origstem, "jet$") or rfind(origstem, "appel$") then
m_core.make_ind_p_e(data, "e" .. consonant .. consonant,
"e" .. consonant, "e" .. consonant)
else
m_core.make_ind_p_e(data, {"e" .. consonant .. consonant, "è" .. consonant},
"e" .. consonant, "e" .. consonant)
end
construct_er_pron(data, "e" .. consonant, "e" .. consonant .. consonant)
data.group = 1
data.conjcat = "-xxer"
end
conj["e-er"] = function(data)
local newstem, consonant = rmatch(data.stem, "^(.*)e(" .. written_cons_c .. "+)$")
if not consonant then
error("Stem '" .. data.stem .. "' should end with -e- + one or more consonants")
end
local stem = 'e' .. consonant
local stem2 = 'è' .. consonant
data.forms.inf = stem .. "er" -- not e-er
data.stem = newstem
data.pronstem = strip_respelling_ending(data.pron, data.forms.inf) or data.stem
data.notes = "This verb is conjugated like " .. link("parler") .. ", "
data.notes = data.notes .. "except the ''-e-'' " .. IPA("/ə/") .. " of the second-to-last syllable becomes ''-è-'' " .. IPA("/ɛ/") .. " when the next vowel is a silent or schwa ''-e-'', "
data.notes = data.notes .. "as in the third-person singular present indicative ''il {stem}" .. stem2 .. "e'' and the third-person singular future indicative ''il {stem}" .. stem2 .. "era''. "
m_core.make_ind_p_e(data, stem2, stem, stem)
construct_er_pron(data, stem, stem2)
data.group = 1
data.conjcat = "-e-er"
end
conj["ecer"] = function(data)
m_core.make_ind_p_e(data, "èc", "eç", "ec")
construct_er_pron(data, "ec", "èc")
data.group = 1
data.conjcat = "-e-er"
end
conj["eger"] = function(data)
m_core.make_ind_p_e(data, "èg", "ege", "eg")
construct_er_pron(data, "eg", "èg")
data.group = 1
data.conjcat = "-e-er"
end
conj["é-er"] = function(data)
local newstem, consonant = rmatch(data.stem, "^(.*)é(" .. written_cons_c .. "+)$")
if not consonant then
newstem, consonant = rmatch(data.stem, "^(.*)é([gq]u)$")
end
if not consonant then
error("Stem '" .. data.stem .. "' should end with -e- + one or more consonants")
end
local stem = 'é' .. consonant
local stem2 = 'è' .. consonant
data.forms.inf = stem .. "er" -- not é-er
local origstem = data.stem
data.stem = newstem
data.pronstem = strip_respelling_ending(data.pron, data.forms.inf) or data.stem
data.notes = "This verb is conjugated like "
if origstem == "céd" then
data.notes = data.notes .. link("espérer")
else
data.notes = data.notes .. link("céder")
end
data.notes = data.notes .. ". It is a regular " .. link("-er") .. " verb, "
data.notes = data.notes .. "except that its last stem vowel alternates between " .. IPA("/e/") .. " (written 'é') and "
data.notes = data.notes .. IPA("/ɛ/") .. " (written 'è'), with the latter being used before mute 'e'.\n"
data.notes = data.notes .. "One special case is the future stem, used in the future and the conditional. "
data.notes = data.notes .. "Before 1990, the future stem of such verbs was written ''{stem}" .. stem .. "er-'', "
data.notes = data.notes .. "reflecting the historic pronunciation " .. IPA("/e/") .. ". "
data.notes = data.notes .. "In 1990, the French Academy recommended that it be written ''{stem}" .. stem2 .. "er-'', "
data.notes = data.notes .. "reflecting the now common pronunciation " .. IPA("/ɛ/") .. ", "
data.notes = data.notes .. "thereby making this distinction consistent throughout the conjugation "
data.notes = data.notes .. "(and also matching in this regard the conjugations of verbs like " .. link("lever") .. " and " .. link("jeter") .. "). "
data.notes = data.notes .. "Both spellings are in use today, and both are therefore given here."
m_core.make_ind_p_e(data, stem2, stem, stem)
m_core.make_ind_f(data, {stem2 .. "er", stem .. "er"})
construct_er_pron(data, stem, stem2)
data.group = 1
data.conjcat = "-é-er"
end
conj["écer"] = function(data)
data.notes = "This verb is conjugated like " .. link("rapiécer") .. ". It has both the spelling irregularities of other verbs in ''<span lang=\"fr\">-cer</span>'' "
data.notes = data.notes .. "(such as " .. link("pincer") .. ", where a silent 'e' is inserted before 'a' and 'o' endings (to indicate the " .. IPA("/s/") .. " sound), "
data.notes = data.notes .. "and the spelling and pronunciation irregularities of other verbs in ''<span lang=\"fr\">-é-er</span>'' (such as " .. link("céder") .. ", "
data.notes = data.notes .. "where the last stem vowel alternates between " .. IPA("/e/") .. " (written 'é') and " .. IPA("/ɛ/") .. " (written 'è')."
m_core.make_ind_p_e(data, "èc", "éç", "éc")
m_core.make_ind_f(data, {"écer", "ècer"})
construct_er_pron(data, "éc", "èc")
data.group = 1
data.conjcat = "-é-er"
end
conj["éger"] = function(data)
data.notes = "This verb is conjugated like "
if data.stem == "prot" then
data.notes = data.notes .. link("assiéger")
else
data.notes = data.notes .. link("protéger")
end
data.notes = data.notes .. ". It has both the spelling irregularities of other verbs in ''-ger'' (such as " .. link("manger") .. ", "
data.notes = data.notes .. "where a silent 'e' is inserted before 'a' and 'o' endings (to indicate the " .. IPA("/ʒ/") .. " sound), "
data.notes = data.notes .. "and the spelling and pronunciation irregularities of other verbs in ''-é-er'' (such as " .. link("céder") .. "), "
data.notes = data.notes .. "where the last stem vowel alternates between " .. IPA("/e/") .. " (written 'é') and " .. IPA("/ɛ/") .. " (written 'è')."
m_core.make_ind_p_e(data, "èg", "ége", "ég")
m_core.make_ind_f(data, {"éger", "èger"})
construct_er_pron(data, "ég", "èg")
data.group = 1
data.conjcat = "-é-er"
end
conj["ir-s"] = function(data)
local ending = usub(data.stem, -1, -1)
data.stem = usub(data.stem, 1, -2)
data.pronstem = strip_respelling_ending(data.pron, ending .. "ir") or data.stem
data.notes = "This is one of a fairly large group of irregular " .. link("-ir") .. " verbs that are all conjugated the same way. "
data.notes = data.notes .. "Other members of this group include "
if data.stem..ending.."ir" == "sortir" then
data.notes = data.notes .. link("partir")
else
data.notes = data.notes .. link("sortir")
end
data.notes = data.notes .. " and "
if data.stem..ending.."ir" == "dormir" then
data.notes = data.notes .. link("servir")
else
data.notes = data.notes .. link("dormir")
end
data.notes = data.notes .. ". The most significant difference between these verbs' conjugation and that of the regular ''-ir'' verbs is that "
data.notes = data.notes .. "these verbs' conjugation does not use the infix " .. link("-iss-") .. ". "
data.notes = data.notes .. "Further, this conjugation has the forms " .. link(data.stem .."s", "(je, tu) " .. data.stem .. "s") .. " and " .. link(data.stem .. "t", "(il) " .. data.stem .. "t") .. " "
data.notes = data.notes .. "in the present indicative and imperative, whereas a regular ''-ir'' verb would have ''*{stem}" .. ending .. "is'' and ''*{stem}" .. ending .. "it'' (as in the past historic)."
data.forms.inf = ending .. "ir"
construct_non_er_conj(data, "", ending, ending, ending .. "i")
data.conjcat = "-ir"
end
conj["ir-reg"] = function(data)
-- if ir-reg explicitly used in type argument (e.g. ressortir), inf will
-- be ir-reg by default with messed-up future
data.forms.inf = "ir"
construct_non_er_conj(data, "i", "iss", "iss", "i")
data.notes = "This is a regular verb of the second conjugation, like "
.. (data.stem == "fin" and link("nourrir") or link("finir")) .. ", "
.. (data.stem == "chois" and link("nourrir") or link("choisir"))
.. ", and most other verbs with infinitives ending in " .. link("-ir")
.. ". One salient feature of this conjugation is the repeated "
.. "appearance of the infix " .. link("-iss-") .. "."
data.group = 2
data.conjcat = "-ir"
end
conj["ir"] = function(data)
if ir_s[data.stem.."ir"] then
conj["ir-s"](data)
else
conj["ir-reg"](data)
end
end
conj["ïr"] = function(data)
construct_non_er_conj(data, "ï", "ïss", "ïss", "ï")
data.group = 2
data.conjcat = "-ïr"
end
conj["haïr"] = function(data)
data.notes = "This verb is spelled as if conjugated like " .. link("finir") .. ", but has a [[diaeresis]] throughout its conjugation "
data.notes = data.notes .. "(including where the circumflex would normally be used) except in the singular indicative present, "
data.notes = data.notes .. "whose forms are pronounced " .. IPA("/ɛ/") .. " in Standard French instead of " .. IPA("/ai/") .. ", "
data.notes = data.notes .. "a pronunciation nonetheless often found in informal speech."
construct_non_er_conj(data, "hai", "haïss", "haïss", "haï")
data.conjcat = "haïr"
end
conj["ouïr"] = function(data)
data.notes = "The forms beginning with ''oi-'', ''oy-'', or ''orr-'' are archaic."
construct_non_er_conj(data, {"ouï", "oi"}, {"ouïss", {"oy", respelling="oill"}},
{"ouïss", "oi"}, "ouï", {"ouïr", "oir", "orr"})
data.conjcat = "ouïr"
end
conj["asseoir"] = function(data)
data.notes = "The verb " .. link("asseoir") .. " (and its derivative " .. link("rasseoir") .. ") has 2 distinct conjugations."
construct_non_er_conj(data, {"assoi", "assied"}, {"assoy", "assey"},
{"assoi", "assey"}, "assi", {"assoir", "assiér"}, "assis")
data.conjcat = "seoir"
end
conj["surseoir"] = function(data)
-- Pronunciation in future/cond as if written sursoir- not surseoir-
construct_non_er_conj(data, "sursoi", "sursoy", "sursoi", "sursi", {{"surseoir", respelling="sursoir"}},
"sursis")
data.conjcat = "seoir"
end
conj["seoir"] = function(data)
data.notes = "This is a defective verb, only conjugated in the third person."
construct_non_er_conj(data, "sied", "sey", "sié", "—", "siér")
only_third_verb(data)
setform(data, "ppr", {"séant", "seyant"})
data.conjcat = "seoir"
data.cat = "defective"
end
conj["bouillir"] = function(data)
construct_non_er_conj(data, "bou", "bouill", "bouill", "bouilli")
data.conjcat = "bouillir"
end
conj["enir"] = function(data)
construct_non_er_conj(data, "ien", "en", "ienn", "in", {{"iendr", respelling="iaindr"}}, "enu")
if usub(data.stem,-1) == "t" then
data.notes = "This is a verb in a group of " .. link("-ir")
.. " verbs. All verbs ending in " .. "''-tenir'', such as "
.. link(data.stem == "cont" and "retenir" or "contenir")
.. " and " .. link(data.stem == "dét" and "retenir" or "détenir")
.. ", are conjugated this way. Such verbs are the only verbs"
.. " whose past historic and subjunctive imperfect endings"
.. " do not start with one of these thematic vowels: ''-a-'', ''-i-'', ''-u-''."
data.conjcat = "tenir"
else
data.notes = "This is a verb in a group of " .. link("-ir")
.. " verbs. All verbs ending in " .. "''-venir'', such as "
.. link(data.stem == "conv" and "revenir" or "convenir")
.. " and " .. link(data.stem == "dev" and "revenir" or "devenir")
.. ", are conjugated this way. Such verbs are the only verbs"
.. " whose past historic and subjunctive imperfect endings"
.. " do not start with one of these thematic vowels: ''-a-'', ''-i-'', ''-u-''."
data.conjcat = "venir"
end
end
local function ouvrir_ffrir(data, rir_prefix)
data.stem = data.stem .. rir_prefix
data.pronstem = data.pronstem .. rir_prefix
data.forms.inf = "rir"
data.notes = "This verb is conjugated like " .. link(data.stem == "ouv" and "couvrir" or "ouvrir")
.. " and " .. link(data.stem == "off" and "souffrir" or "offrir") .. ". "
.. "It is conjugated like a regular " .. link("-er") .. " verb in the present and imperfect indicative, present subjunctive, "
.. "imperative, and present participle; it is conjugated like a regular " .. link("-ir") .. " verb in the infinitive, "
.. "future indicative, conditional, past historic, and imperfect subjunctive; "
.. "and its past participle " .. link(data.stem .. "ert") .. " is irregular."
construct_non_er_conj_er_present(data, "r", "ri", nil, "ert")
end
conj["ouvrir"] = function(data)
ouvrir_ffrir(data, "ouv")
end
conj["ffrir"] = function(data)
ouvrir_ffrir(data, "ff")
end
conj["quérir"] = function(data)
construct_non_er_conj(data, "quier", "quér", "quièr", "qui", "querr", "quis")
end
conj["aillir"] = function(data)
data.notes = "This verb is part of a small group of verbs in "
.. link("-ir") .. " that conjugate in the indicative imperfect and "
.. "present, the subjunctive present, and the present participle, as if "
.. "they ended in " .. link("-er") .. ". They are sometimes written with "
.. "an 'e' in the future and imperfect, like " .. link("cueillir")
.. " and other verbs in ''-llir''."
construct_non_er_conj_er_present(data, "aill", "ailli", {"aillir", "ailler"})
end
conj["chauvir"] = function(data)
data.notes = "The forms without -iss- are recommended by the [[w:Académie française|French Academy]], although their usage is not common."
construct_non_er_conj(data, "chauvi", {"chauv", "chauviss"},
{"chauv", "chauviss"}, "chauvi")
data.group = {2, 3}
end
conj["choir"] = function(data)
construct_non_er_conj(data, "choi", "choy", "choi", "chu",
data.stem == "é" and "choir" or {"choir", "cherr"})
m_core.clear_imp(data)
data.forms.ppr = "—"
if data.stem == "" then
data.notes = "This is a [[defective]] verb, only conjugated in certain tenses."
-- FIXME! frwikt says 1p 2p of pres indic is rare, and likewise
-- all of the pres subj.
m_core.make_ind_i(data, "—")
-- FIXME! frwikt says future in cherr- is archaic, and archaic
-- conditional forms in cherr- exist as well.
m_core.make_cond_p(data, "choir")
m_pron.cond_p(data, dopron(data, "choir"))
m_core.make_sub_p(data, "—")
-- FIXME! frwikt does not say subjunctive past is missing other than
-- 3s.
m_core.make_sub_pa(data, "—")
data.forms.sub_pa_3s = "chût"
elseif data.stem == "dé" then
data.notes = "This verb is [[defective]] in that it is not conjugated in certain tenses. It has no indicative imperfect form, no imperative form and no present participle."
m_core.make_ind_i(data, "—")
-- FIXME! frwikt does not indicate 'chet' as an alternative. Based on
-- échoir, we'd expect 'chettent' as alternative as well.
setform(data, "ind_p_3s", {"choit", "chet"})
-- FIXME! frwikt lists rare ppr déchoyant.
elseif data.stem == "é" then
data.notes = "This verb is [[defective]] and is only conjugated in the third-person."
only_third_verb(data)
setform(data, "ind_p_3s", {"choit", "chet"})
-- FIXME! frwikt gives both échettent and échéent as alternatives,
-- but gives the pronunciation only of the first.
setform(data, "ind_p_3p", {"choient", "chettent"})
setform(data, "ppr", "chéant")
end
data.cat = "defective"
end
conj["cueillir"] = function(data)
construct_non_er_conj_er_present(data, "cueill", "cueilli", {"cueillir", "cueiller"})
end
conj["courir"] = function(data)
data.notes = "This verb is conjugated like other regular " .. link("-ir") .. " verbs, "
data.notes = data.notes .. "except that in the conditional and future tenses an extra 'r' is added to the end of the stem "
data.notes = data.notes .. "and the past participle ends in ''-u''. All verb ending in ''-courir'' are conjugated this way."
construct_non_er_conj(data, "cour", "cour", "cour", "couru", {{"courr", respelling="cour_r"}})
end
conj["falloir"] = function(data)
data.notes = "This verb is defective, only conjugated in the third-person singular."
construct_non_er_conj(data, "fau", "fall", "fall", "fallu", "faudr", nil, "faill")
impersonal_verb(data)
data.cat = {"defective", "impersonal"}
end
conj["faillir"] = function(data)
if data.stem == "" then
data.notes = "This verb has two conjugations. One is older and irregular, "
.. "but is in modern usage giving way to a conjugation like that of "
.. link("finir") .. ". It is hardly used except in the infinitive, "
.. "past historic, and the composed tenses. The third-person singular "
.. "present indicative " .. link("faut") .. " is also found in "
.. "certain set phrases."
construct_non_er_conj(data, "fau", "faill", "faill", "failli", {"faudr", "faillir"})
data.forms.ind_p_1s = "faux"
data.forms.ind_p_2s = "faux"
m_core.clear_imp(data)
data.cat = "defective"
else
data.notes = "Verbs in ''-faillir'', with the exception of "
.. link("faillir") .. " itself, conjugate similarly to other verbs in "
.. "''-illir'', such as " .. link("assaillir") .. " and "
.. link("cueillir") .. "."
-- frwikt doesn't include forms like -faillerai
construct_non_er_conj_er_present(data, "faill", "failli", "faillir")
end
end
conj["férir"] = function(data)
data.notes = "This verb is defective and is virtually never conjugated in Modern French, except in a few set phrases or as a mark of extreme archaism. "
data.notes = data.notes .. "Most of its uses stem from variations on " .. link("sans coup férir") .. "."
construct_non_er_conj(data, "—", "—", "—", "—", "—", "féru")
data.cat = "defective"
end
conj["fuir"] = function(data)
construct_non_er_conj(data, "fui", "fuy", "fui", "fui")
end
conj["gésir"] = function(data)
data.notes = "This is a [[defective]] verb, and is only conjugated in the present and imperfect indicative."
construct_non_er_conj(data, "gi", "gis", "gis", "—", "—", "—", "—")
data.forms.ind_p_3s = "gît"
m_core.clear_imp(data)
data.cat = "defective"
end
conj["re"] = function(data)
construct_non_er_conj(data, "", "", "", "i", nil, "u")
data.forms.ind_p_3s = ""
data.irregular = "no"
end
conj["cre"] = function(data)
data.notes = "This verb "
if data.stem ~= "vain" then
data.notes = data.notes .. "is conjugated like " .. link("vaincre") .. ". That means it "
end
data.notes = data.notes .. "is conjugated like " .. link("vendre") .. ", except that its usual stem ''{stem}qu-'' becomes ''{stem}c-'' when either there is no ending, "
data.notes = data.notes .. "or the ending starts with ''-u-'' or a written consonant. "
data.notes = data.notes .. "Additionally, when inverted the third person singular in the present adds the infix " .. link("-t-") .. ": ''{stem}c-t-il?'' "
data.notes = data.notes .. "These are strictly spelling changes; pronunciation-wise, the verb is conjugated exactly like " .. link("vendre") .. "."
construct_non_er_conj(data, "c", "qu", "qu", "qui", nil, "cu")
end
conj["pre"] = function(data)
data.notes = "This verb "
if data.stem ~= "rom" then
data.notes = data.notes .. "is conjugated like " .. link("rompre") .. ". That means it "
end
data.notes = data.notes .. "is conjugated like " .. link("vendre") .. ", except that it adds an extra ''-t'' in the third-person singular form of the present indicative: ''il " .. link(data.stem .. "pt") .. "'', not ''*il {stem}p''. "
data.notes = data.notes .. "This is strictly a spelling change; pronunciation-wise, the verb is conjugated exactly like " .. link("vendre") .. "."
construct_non_er_conj(data, "p", "p", "p", "pi", nil, "pu")
end
conj["crire"] = function(data)
construct_non_er_conj(data, "cri", "criv", "criv", "crivi", nil, "crit")
end
conj["rire"] = function(data)
construct_non_er_conj(data, "ri", "ri", "ri", "ri")
end
conj["uire"] = function(data)
construct_non_er_conj(data, "ui", "uis", "uis", "uisi", nil, "uit")
end
conj["nuire"] = function(data)
-- nuire has different pp from other -uire verbs
construct_non_er_conj(data, "nui", "nuis", "nuis", "nuisi", nil, "nui")
end
conj["aitre"] = function(data)
data.notes = "This verb is one of a fairly small group of " .. link("-re") .. " verbs that are all conjugated the same way. They are conjugated the same as the alternative spelling, which has a [[circumflex]] over the 'i', except that the circumflex is dropped here."
-- future stem must be nil here because we are called from conj["aître"]
construct_non_er_conj(data, "ai", "aiss", "aiss", "u", nil, "u")
end
conj["aître"] = function(data)
conj["aitre"](data)
data.notes = "This verb is one of a fairly small group of " .. link("-re") .. " verbs that are all conjugated the same way. They are unlike other verb groups in that the 'i' is given a circumflex before a 't'."
data.forms.ind_p_3s = "aît"
end
conj["oître"] = function(data)
data.notes = "This verb is one of a fairly small group of " .. link("-re") .. " verbs that are all conjugated the same way. They are unlike other verb groups in that the 'i' is given a circumflex before a 't'. This conjugation pattern is no longer in use and has been replaced by -aître."
construct_non_er_conj(data, {{"oi", respelling="ai"}}, {{"oiss", respelling="aiss"}},
{{"oiss", respelling="aiss"}}, "u", {{"oîtr", respelling="aitr"}})
end
conj["indre"] = function(data)
data.notes = "This verb is conjugated like "
.. link(data.stem == "pei" and "plaindre" or "peindre")
.. ". It uses the same endings as " .. link("rendre") .. " or "
.. link("vendre") .. ", but its ''-nd-'' becomes ''-gn-'' before a "
.. "vowel, and its past participle ends in 't' instead of a vowel."
construct_non_er_conj(data, "in", "ign", "ign", "igni", nil, "int")
end
conj["clure"] = function(data)
local pp
if data.stem == "in" or data.stem == "trans" or data.stem == "oc" then
pp = "clus"
data.notes = "This verb is one of a few verbs in ''-clure'' where the past participle is in ''-us(e)'' instead of ''-u(e)''."
end
construct_non_er_conj(data, "clu", "clu", "clu", "clu", nil, pp)
end
conj["raire"] = function(data) --braire, traire
data.notes = "This verb traditionally has no past historic or imperfect "
.. "subjunctive. They would be formed on a -{stem}ray- root: "
.. "*je {stem}rayis, *que nous {stem}rayissions etc. Forms using "
.. "the 'a' endings of verbs in -er are now used when there is an "
.. "unavoidable need to use these forms.\n"
.. "The root -{stem}rais- was used instead of -{stem}ray- in the "
.. "18th century, and remains in Swiss and Savoy dialects."
construct_non_er_conj(data, "rai", "ray", "rai", "ray", nil, "rait", nil, nil, nil, "er past")
end
conj["clore"] = function(data)
data.notes = "This verb is not conjugated in certain tenses."
construct_non_er_conj(data, "clo", "clos", "clos", "—", nil, "clos")
m_core.make_ind_i(data, "—") -- no imperfect
data.forms.ind_p_3s = "clôt"
data.cat = "defective"
end
conj["confire"] = function(data)
construct_non_er_conj(data, "confi", "confis", "confis", "confi", nil, "confit")
end
conj["suffire"] = function(data)
construct_non_er_conj(data, "suffi", "suffis", "suffis", "suffi")
end
conj["coudre"] = function(data)
data.notes = "This verb "
if data.stem ~= "" then
data.notes = data.notes .. "is conjugated like " .. link("coudre") .. ". That means it"
end
data.notes = data.notes .. " is conjugated like " .. link("rendre") .. ", except that its stem is ''{stem}coud-'' in only part of the conjugation. "
data.notes = data.notes .. "Before endings that begin with vowels, the stem ''{stem}cous-'' (with a " .. IPA("/-z-/") .. " sound) is used instead; "
data.notes = data.notes .. "for example, ''nous'' " .. link(data.stem .. "cousons") .. ", not ''*nous {stem}coudons''."
construct_non_er_conj(data, "coud", "cous", "cous", "cousi", nil, "cousu")
end
conj["croire"] = function(data)
construct_non_er_conj(data, "croi", "croy", "croi", "cru")
end
conj["croitre"] = function(data)
if data.stem == "" then
data.notes = "This verb takes an especially irregular conjugation, taking circumflexes in many forms, so as to distinguish from the forms of the verb " .. link("croire") .. "."
construct_non_er_conj(data, "croî", "croiss", "croiss", "crû")
data.forms.ind_ps_1p = "crûmes"
data.forms.ind_ps_2p = "crûtes"
data.forms.sub_pa_3s = "crût"
else
data.notes = "This verb is conjugated like " .. link("croitre") ..
" except that it does not take circumflexes like that verb does."
construct_non_er_conj(data, "croi", "croiss", "croiss", "cru")
end
end
conj["croître"] = function(data)
if data.stem == "" or data.stem == "re" then
data.notes = "This verb takes an especially irregular conjugation, taking circumflexes in many forms, so as to distinguish from the forms of the verb " .. link(data.stem == "re" and "recroire" or "croire") .. "."
construct_non_er_conj(data, "croî", "croiss", "croiss", "crû")
else
data.notes = "This verb is conjugated like " .. link("croître") ..
" except that it takes fewer circumflexes than that verb does."
construct_non_er_conj(data, "croi", "croiss", "croiss", "cru")
data.forms.ind_p_3s = "croît"
end
data.forms.ind_ps_1p = "crûmes"
data.forms.ind_ps_2p = "crûtes"
data.forms.sub_pa_3s = "crût"
end
conj["foutre"] = function(data)
construct_non_er_conj(data, "fou", "fout", "fout", "fouti", nil,
"foutu")
end
conj["soudre"] = function(data)
construct_non_er_conj(data, "sou", "solv", "solv", "solu", nil, "sous")
m_core.make_sub_pa(data, "—")
data.cat = "defective"
end
conj["résoudre"] = function(data)
data.notes = "This verb also has a rare past participle "
.. link("résous") .. " (feminine " .. link("résoute") .. ")."
construct_non_er_conj(data, "résou", "résolv", "résolv", "résolu")
end
conj["voir"] = function(data)
data.notes = "Verbs derived from " .. link("voir") .. " form their "
.. "future and conditional forms using the root ''verr-'' instead of "
.. "the ''vr-'' or ''voir-'' of other verbs."
construct_non_er_conj(data, "voi", "voy", "voi", "vi", "verr", "vu")
end
conj["prévoir"] = function(data)
construct_non_er_conj(data, "prévoi", "prévoy", "prévoi", "prévi", nil,
"prévu")
end
conj["cevoir"] = function(data)
construct_non_er_conj(data, "çoi", "cev", "çoiv", "çu", "cevr")
end
conj["battre"] = function(data)
if data.stem ~= "" then
data.notes = "This verb is conjugated like " .. link("battre") .. ". That means it "
else
data.notes = "This verb "
end
data.notes = data.notes .. "is conjugated like " .. link("vendre") .. ", " .. link("perdre") .. ", etc. (sometimes called the regular " .. link("-re") .. " verbs), "
data.notes = data.notes .. "except that instead of *''{stem}batt'' and *''{stem}batts'', "
data.notes = data.notes .. "it has the forms " .. link(data.stem .. "bat") .. " and " .. link(data.stem .. "bats") .. ". This is strictly a spelling change; "
data.notes = data.notes .. "pronunciation-wise, the verb is conjugated exactly like " .. link("vendre") .. "."
construct_non_er_conj(data, "bat", "batt", "batt", "batti", nil, "battu")
end
conj["circoncire"] = function(data)
construct_non_er_conj(data, "circonci", "circoncis", "circoncis",
"circonci", nil, "circoncis")
end
conj["lire"] = function(data)
construct_non_er_conj(data, "li", "lis", "lis", "lu")
end
conj["luire"] = function(data)
construct_non_er_conj(data, "lui", "luis", "luis", {"lui", "luisi"},
nil, "lui")
m_core.make_sub_pa(data, "luisi")
m_pron.sub_pa(data, dopron(data, "luisi"))
setform(data, "ind_ps_3s", "luit")
end
conj["maudire"] = function(data)
data.notes = "This is ''almost'' a regular verb of the second conjugation, like " .. link("finir") .. ", " .. link("choisir") .. ", "
data.notes = data.notes .. "and most other verbs with infinitives ending in " .. link("-ir") .. ". Its only irregularities are in the past participle, "
data.notes = data.notes .. "which is " .. link("maudit","maudit(e)(s)") .. " rather than *''maudi(e)(s)'', and in the infinitive, "
data.notes = data.notes .. "which is ''maudire'' rather than *''maudir''."
construct_non_er_conj(data, "maudi", "maudiss", "maudiss", "maudi",
nil, "maudit")
end
conj["mettre"] = function(data)
if data.stem ~= "" then
data.notes = "This verb is conjugated like " .. link("mettre") .. ". That means it "
else
data.notes = "This verb "
end
data.notes = data.notes .. "is conjugated like " .. link("battre") .. " except that its past participle is " .. link(data.stem .. "mis") .. ", "
data.notes = data.notes .. "not *''{stem}mettu'', and its past historic and imperfect subjunctive "
data.notes = data.notes .. "are formed with ''{stem}mi-'', not *''{stem}metti-''."
construct_non_er_conj(data, "met", "mett", "mett", "mi", nil, "mis")
end
conj["moudre"] = function(data)
construct_non_er_conj(data, "moud", "moul", "moul", "moulu")
end
conj["mouvoir"] = function(data)
construct_non_er_conj(data, "meu", "mouv", "meuv", "mu", "mouvr")
if data.stem == "" then
data.forms.pp = "mû"
end
end
conj["paitre"] = function(data)
data.notes = "This verb is not conjugated in certain tenses."
construct_non_er_conj(data, "pai", "paiss", "paiss", "—", nil, "pu")
--data.cat = "defective" -- FIXME: Not true with pu as past participle?
end
conj["paître"] = function(data)
conj["paitre"](data)
data.forms.ind_p_3s = "paît"
end
conj["pleuvoir"] = function(data)
data.notes = "This is a [[defective]] verb, only conjugated in the "
if data.stem == "re" then
data.notes = data.notes .. "[[third_person#English:_grammar|third-person]] singular."
else
data.notes = data.notes .. "[[third_person#English:_grammar|third-person]]. The [[third-person plural]] forms are only used figuratively."
end
construct_non_er_conj(data, "pleu", "pleuv", "pleuv", "plu", "pleuvr")
if data.stem == "re" then
impersonal_verb(data)
data.cat = {"defective", "impersonal"}
else
only_third_verb(data)
data.cat = "defective"
end
end
conj["pourvoir"] = function(data)
data.notes = "''Pourvoir'' and its derived verbs conjugate like " .. link("voir") .. ", except that their past historic indicative and imperfect subjunctive are in ''-vu-'' instead of ''-vi-''."
construct_non_er_conj(data, "pourvoi", "pourvoy", "pourvoi", "pourvu")
end
conj["prendre"] = function(data)
if data.stem ~= "" then
data.notes = "This verb is conjugated on the model of " .. link("prendre") .. ". That means it is quite irregular, with the following patterns:\n"
else
data.notes = "This verb is quite irregular, with the following patterns:\n"
end
data.notes = data.notes .. "*In the infinitive, in the singular forms of the present indicative, and in the future and the conditional, it is conjugated like " .. link("rendre") .. ", " .. link("perdre") .. ", etc. (sometimes called the regular " .. link("-re") .. " verbs).\n"
data.notes = data.notes .. "*In the plural forms of the present indicative and imperative, in the imperfect indicative, in the present subjunctive, and in the present participle, it is conjugated like " .. link("appeler") .. " or " .. link("jeter") .. ", using the stem ''{stem}prenn-'' before mute 'e' and the stem ''{stem}pren-'' elsewhere.\n"
data.notes = data.notes .. "*In the past participle, and in the past historic and the imperfect subjunctive, its conjugation resembles that of " .. link("mettre") .. "."
construct_non_er_conj(data, "prend", "pren", "prenn", "pri", nil, "pris")
end
conj["faire"] = function(data)
construct_non_er_conj(data, "fai", {{"fais", respelling="fes"}}, {{"fais", respelling="fes"}}, "fi", "fer", "fait",
"fass")
setform(data, "ind_p_2p", "faites")
setform(data, "ind_p_3p", "font")
copyform(data, "ind_p_2p", "imp_p_2p")
end
conj["boire"] = function(data)
construct_non_er_conj(data, "boi", "buv", "boiv", "bu")
end
conj["devoir"] = function(data)
construct_non_er_conj(data, "doi", "dev", "doiv", "du", "devr")
if data.stem == "" then
data.forms.pp = "dû"
end
end
conj["avoir"] = function(data)
-- Need to specify a value for singular present to get proper pronunciation for present tense,
-- even though we override it.
construct_non_er_conj(data, "a", "av", "—", {{"eu", respelling="u"}}, {"aur", {"aur", respelling="ôr"}}, nil,
"ai", "ay")
setform(data, "ind_p_1s", "ai")
setform(data, "ind_p_2s", "as", "a")
setform(data, "ind_p_3s", "a")
setform(data, "ind_p_3p", "ont")
setform(data, "ppr", "ayant")
data.forms.sub_p_3s = "ait"
setform(data, "sub_p_1p", "ayons")
setform(data, "sub_p_2p", "ayez")
copyform(data, "sub_p_1s", "imp_p_2s")
copyform(data, "sub_p_1p", "imp_p_1p")
copyform(data, "sub_p_2p", "imp_p_2p")
end
conj["être"] = function(data)
construct_non_er_conj(data, "e", "ét", "—", "fu", "ser", "été", "soi", "soy")
setform(data, "ind_p_1s", "suis")
setform(data, "ind_p_2s", "es")
setform(data, "ind_p_3s", "est")
setform(data, "ind_p_1p", "sommes")
setform(data, "ind_p_2p", "êtes")
setform(data, "ind_p_3p", "sont")
setform(data, "sub_p_1s", "sois")
copyform(data, "sub_p_1s", "sub_p_2s")
copyform(data, "sub_p_1s", "sub_p_3s", "soit")
setform(data, "sub_p_1p", "soyons")
setform(data, "sub_p_2p", "soyez")
copyform(data, "sub_p_2s", "imp_p_2s")
copyform(data, "sub_p_1p", "imp_p_1p")
copyform(data, "sub_p_2p", "imp_p_2p")
end
conj["estre"] = function(data)
conj["être"](data)
for key,val in pairs(data.forms) do
data.forms[key] = map(val, function(form)
form = rsub(form, "[éê]", "es")
form = rsub(form, "û", "us")
form = rsub(form, "ai", "oi")
return form
end)
end
data.forms.ind_ps_1p = "fumes"
data.forms.sub_pa_3s = "fust"
data.forms.pp = "esté"
end
conj["naitre"] = function(data)
-- future stem must be nil here because we are called from conj["naître"]
construct_non_er_conj(data, "nai", "naiss", "naiss", "naqui", nil, "né")
end
conj["naître"] = function(data)
conj["naitre"](data)
data.forms.ind_p_3s = "naît"
end
conj["envoyer"] = function(data)
data.notes = "This verb is one of a few verbs that conjugate like " .. link("noyer") .. ", except in the future and conditional, where they conjugate like " .. link("voir") .. "."
m_core.make_ind_p_e(data, "envoi", "envoy", "envoy")
construct_er_pron(data, "envoy", "envoi")
make_future_conditional(data, "enverr")
data.group = 1
data.irregular = "yes"
end
conj["irreg-aller"] = function(data)
data.notes = "The verb ''{stem}aller'' has a unique and highly irregular conjugation, based on the suppletive stems ''all-'', ''ir-'' and ''va-''."
-- Need to specify a value for singular present to get proper pronunciation for present tense,
-- even though we override it.
construct_non_er_conj(data, "va", "all", "—", "all", "ir", "allé", "aill", "all", nil, "er past")
setform(data, "ind_p_1s", "vais")
-- TLFi says /va/ even for 2s, not /vɑ/.
setform(data, "ind_p_2s", "vas", "va")
setform(data, "ind_p_3s", "va")
setform(data, "ind_p_3p", "vont")
copyform(data, "ind_p_3s", "imp_p_2s")
end
conj["dire"] = function(data)
construct_non_er_conj(data, "di", "dis", "dis", "di", nil, "dit")
if data.stem == "" or data.stem == "re" then
setform(data, "ind_p_2p", "dites")
copyform(data, "ind_p_2p", "imp_p_2p")
else
data.notes = "ကြိယာမွဲသာ်တဏံဝွံမဆေၚ်စပ်ကဵုဂကောံနကဵု " .. link("-re") .. " ပွမတုဲဒှ်လဝ်ကြိယာသီုဖ္အိုတ်ပ္ဍဲ ''-dire''။ "
data.notes = data.notes .. "မခၞံဗဒှ်လဝ်သမ္ဗန္ဓအတေံမချိုတ်ပၠိုတ်တုပ်ညံၚ်ကဵု " .. link("dire") .. ", "
data.notes = data.notes .. "ဆ္ဂးမၞုံကဵုကိုန်ဗဟုဝစ်ပူဂဵု-ဒုတိယဟွံတုပ်သၟဟ်ကဵုပရေၚ်စၞောန်ထ္ၜးပစ္စုပ္ပန် (အတေံဂှ်၊ တုပ်ညံၚ်ကဵု " .. link("confire") .. ")။ "
data.notes = data.notes .. "အၚ်္ဂအဝဲမဆေၚ်စပ်ကဵုဂကောံလုပ်အဝေါၚ်အတေံ " .. link(data.stem == "contre" and "dédire" or "contredire") .. " ကဵု "
data.notes = data.notes .. link(data.stem == "inter" and "dédire" or "interdire") .. "။"
end
end
conj["vivre"] = function(data)
construct_non_er_conj(data, "vi", "viv", "viv", "vécu")
end
conj["mourir"] = function(data)
construct_non_er_conj(data, "meur", "mour", "meur", "mouru", {{"mourr", respelling="mour_r"}}, "mort")
end
conj["savoir"] = function(data)
construct_non_er_conj(data, "sai", "sav", "sav", "su", {"saur", {"saur", respelling="sôr"}}, nil, "sach")
copyform(data, "sub_p_1s", "imp_p_2s") -- sache
setform(data, "imp_p_1p", "sachons")
setform(data, "imp_p_2p", "sachez")
setform(data, "ppr", "sachant")
end
conj["pouvoir"] = function(data)
construct_non_er_conj(data, "peu", "pouv", "peuv", "pu", "pourr", nil, "puiss")
data.forms.ind_p_1s = "peux"
data.forms.ind_p_2s = "peux"
m_core.clear_imp(data)
data.cat = "defective"
end
conj["ouloir"] = function(data) -- vouloir, revouloir, douloir
construct_non_er_conj(data, "eu", "oul", "eul", "oulu", "oudr", nil, "euill", "oul")
data.forms.ind_p_1s = "eux"
data.forms.ind_p_2s = "eux"
if data.stem == "v" then -- irregular imperative for vouloir
setform(data, "imp_p_2s", {"eux", "euille"})
setform(data, "imp_p_1p", {"oulons", "euillons"})
setform(data, "imp_p_2p", {"oulez", "euillez"})
else
data.forms.imp_p_2s = "eux"
end
end
conj["bruire"] = function(data)
construct_non_er_conj(data, "bruis", "bruiss", "bruiss", "brui")
end
conj["ensuivre"] = function(data)
data.notes = "This verb is [[defective]], and is only used in the "
.. "infinitive and the third-person singular and plural forms."
construct_non_er_conj(data, "ensui", "ensuiv", "ensuiv", "ensuivi")
only_third_verb(data)
data.cat = "defective"
end
conj["frire"] = function(data)
data.notes = "This verb is defective and it is not conjugated in certain"
.. " tenses and plural persons. Using " .. link("faire") ..
" '''frire''' is recommended."
construct_non_er_conj(data, "fri", "fris", "fris", "fri", nil, "frit")
-- clear subjunctive present and past
m_core.make_sub_pa(data, "—")
m_core.make_sub_p(data, "—")
-- clear plural forms
for _, k in ipairs(all_verb_props) do
if rmatch(k, "[123]p") then
data.forms[k] = "—"
end
end
data.cat = "defective"
end
conj["plaire"] = function(data)
data.notes = link("plaire") .. " and its derived verbs conjugate like "
.. link("taire") .. ", except that the third person singular of the "
.. "present indicative may take a circumflex on the 'i'."
construct_non_er_conj(data, "plai", "plais", "plais", "plu")
data.forms.ind_p_3s = {"plaît", "plait"}
end
conj["suivre"] = function(data)
construct_non_er_conj(data, "sui", "suiv", "suiv", "suivi")
end
conj["taire"] = function(data)
construct_non_er_conj(data, "tai", "tais", "tais", "tu")
end
conj["valoir"] = function(data)
construct_non_er_conj(data, "vau", "val", "val", "valu", "vaudr", nil,
data.stem == "pré" and "val" or "vaill", "val")
data.forms.ind_p_1s = "vaux"
data.forms.ind_p_2s = "vaux"
end
conj["vêtir"] = function(data)
data.notes = "ကြိယာခလံက်ခနက်တဏအ်ဝွံမဆေၚ်စပ်ကဵုသမ္ဗန္ဓတတိယဟေၚ်ရ။"
.. "Unlike regular -ir verbs, this conjugation does not include "
.. "the infix " .. link("-iss-") .. "."
construct_non_er_conj(data, "vêt", "vêt", "vêt", "vêti", nil, "vêtu")
end
local function call_conj(data, conjtyp, pronstem)
data.pronstem = pronstem or strip_respelling_ending(data.pron, data.forms.inf) or data.stem
conj[conjtyp](data)
end
-- Conjugate the verb according to the TYPE, which is either explicitly
-- specified by the caller of {{fr-conj-auto}} or derived automatically.
local function conjugate(data, typ)
data.forms.inf = typ
local future_stem = rsub(data.forms.inf, "e$", "")
m_core.make_ind_f(data, future_stem)
if typ == "xxer" or typ == "e-er" or typ == "é-er" then
call_conj(data, typ, strip_respelling_ending(data.pron, "er"))
return
end
if alias[typ] then
data.stem = data.stem .. rsub(typ, alias[typ] .. "$", "")
data.forms.inf = alias[typ]
call_conj(data, alias[typ])
elseif conj[typ] then
call_conj(data, typ)
elseif typ ~= "" then
error('The type "' .. typ .. '" is not recognized')
end
end
-- Autodetect the conjugation type and extract the preceding stem. We have
-- special handling for verbs in -éCer and -eCer for C = consonant. Otherwise,
-- the conjugation type is the longest suffix of the infinitive for which
-- there's an entry in conj[], and stem is the preceding text. (As an
-- exception, certain longer suffixes are mapped to the conjugation type of
-- shorter suffixes using alias[]. An example is 'connaitre', which conjugates
-- like '-aitre' verbs rather than like 'naitre' and its derivatives.) Note
-- that for many irregular verbs, the "stem" is actually the prefix, or empty
-- if the verb has no prefix.
local function auto(pagename, argstype, argsstem)
local stem
if argstype then
local tostrip
if argstype == "xxer" or argstype == "é-er" or argstype == "e-er" then
tostrip = "er"
elseif argstype == "ir-reg" or argstype == "ir-s" then
tostrip = "ir"
else
tostrip = argstype
end
stem = argsstem or strip_respelling_ending(pagename, tostrip)
return stem, argstype
end
-- check for espérer, céder, etc.; exclude y so as not to be confused by [[acétyler]], [[déméthyler]];
-- exclude -écer, -éger, -éyer
stem = rmatch(pagename, "^(.*é" .. written_cons_no_y_c .. "*" .. written_cons_no_cgy_c .. ")er$")
if stem then
return stem, "é-er"
end
-- check for alléguer, disséquer, etc.
stem = rmatch(pagename, "^(.*é[gq]u)er$")
if stem then
return stem, "é-er"
end
-- check for acheter, etc.; exclude -exer, -ecer, -eger, -eyer
stem = rmatch(pagename, "^(.*e" .. written_cons_no_cgyx_c .. ")er$")
if stem then
return stem, "e-er"
end
-- check for sevrer, etc.; exclude -ller, -rrer, -rler (perler)
stem = rmatch(pagename, "^(.*e" .. written_cons_no_lryx_c .. "[lr])er$")
if stem then
return stem, "e-er"
end
stem = ""
local typ = pagename
while typ ~= "" do
if conj[typ] then break end
if alias[typ] then
stem = stem .. rsub(typ,alias[typ].."$","")
typ = alias[typ]
break
end
stem = stem .. rsub(typ,"^(.).*$","%1")
typ = rsub(typ,"^.","")
end
if typ == "" then
return "",""
end
return stem,typ
end
-- Append elements of TAB2 to the elements of TAB1, converting them to lists
-- as necessary.
local function append_tables(tab1, tab2)
for k, values in pairs(tab2) do
local t1 = tab1[k]
if type(t1) ~= "table" then
t1 = {t1}
end
if type(values) ~= "table" then
values = {values}
end
for _, val in ipairs(values) do
m_table.insertIfNot(t1, val)
end
tab1[k] = t1
end
end
local verb_prefix_to_type = {
{"les y en ", "lesyen"},
{"les en ", "lesen"},
{"s[’']en ", "reflen"},
{"se le ", "reflle"},
{"se la ", "reflla"},
{"se l[’']", "refll"},
{"se les y ", "refllesy"},
{"les y ", "lesy"},
{"se les ", "reflles"},
{"les ", "les"},
{"se l[’']y ", "reflly"},
{"l[’']y ", "l_y"},
{"l[’']en ", "l_en"},
{"l[’']", "l"},
{"le ", "le"},
{"la ", "la"},
{"s[’']y en ", "reflyen"},
{"y en ", "yen"},
{"en ", "en"},
{"s[’']y ", "refly"},
{"y ", "y"},
{"s[’']", "refl"},
{"se ", "refl"},
}
-- This is meant to be invoked by the module itself, or possibly by a
-- different version of the module (for comparing changes to see whether
-- they have an effect on conjugations or pronunciations).
function export.do_generate_forms(args)
local data
local stem = args[1] or ""
local typ = args[2] or ""
local argspron = args.pron
local prefix, preftype
local pagename_from_args
local PAGENAME = mw.loadData("Module:headword/data").pagename
if stem == "" and typ == "" then
pagename_from_args = args.pagename or PAGENAME
else
error("Specifying 1= or 2= not supported any more; use type=, stem= and/or pagename=")
end
local argstype = args.type
if argstype == "" then argstype = nil; end
local argsstem = args.stem
if argsstem == "" then argsstem = nil; end
stem, typ = auto(pagename_from_args, argstype, argsstem)
-- expand + and [...] notations
if argspron then
local pronvals = rsplit(argspron, ",")
local expanded_pronvals = {}
for _, pronval in ipairs(pronvals) do
table.insert(expanded_pronvals, m_fr_pron.canonicalize_pron(pronval, pagename_from_args))
end
argspron = table.concat(expanded_pronvals, ",")
end
-- autodetect prefixed verbs
for _, pref_and_type in ipairs(verb_prefix_to_type) do
local pref, prefty = pref_and_type[1], pref_and_type[2]
if rfind(stem, "^" .. pref) then
stem = rsub(stem, "^" .. pref, "")
argspron = strip_respelling_beginning(argspron, pref, "split")
prefix = pref
preftype = prefty
break
end
end
local pronargs = argspron and rsplit(argspron, ",") or {false}
local all_forms, all_prons
for i = 1, #pronargs do
local pronarg = pronargs[i]
if pronarg == false then pronarg = nil end
data = {
prefix = prefix,
preftype = preftype,
stem = stem,
aux = "avoir",
pron = pronarg,
forms = {},
prons = {},
cat = {},
group = 3
}
conjugate(data, typ)
if type(data.cat) ~= "table" then
data.cat = {data.cat}
end
if i == 1 then
all_forms = data.forms
all_prons = data.prons
else
append_tables(all_forms, data.forms)
append_tables(all_prons, data.prons)
end
end
data.forms = all_forms
data.prons = all_prons
-- FIXME! From here on out we use the value of data.notes, data.stem
-- and data.cat as set/modified in the conjugation functions of the last
-- iteration of the loop above. As it happens, this doesn't matter
-- because we iterate over pronunciations keeping the stem and conjugation
-- type the same, but might matter one day if we break this assumption.
-- FIXME, allow all overrides
if args.inf then
data.forms.inf = args.inf
end
if args.archaic then
for k, v in pairs(data.forms) do
data.forms[k] = map(v, function(val)
val = rsub(val, "ai", "oi")
val = rsub(val, "â", "as")
return val end)
end
end
if args.impers or args.onlythird then
if data.notes then
data.notes = data.notes .. "\n"
else
data.notes = ""
end
table.insert(data.cat, "ပရေၚ်မလီုလာ်ဒၟံၚ်")
end
if args.impers then
data.notes = data.notes .. "ကြိယာတဏအ်ဝွံဟၟဲကဵုပစ္စဲပူဂဵု ကဵု မခၞံဗဒှ်လဝ်ပါဲနူသမ္ဗန္ဓပ္ဍဲဆေၚ်စပ်ကဵုကိုန်ဨကဝုစ်ပူဂဵုတတိယဟေၚ်ရ။"
impersonal_verb(data)
table.insert(data.cat, "ဟၟဲကဵုပစ္စဲပူဂဵု")
elseif args.onlythird then
data.notes = data.notes .. "ကြိယာတဏအ်ဝွံမခၞံဗဒှ်လဝ်ပါဲနူသမ္ဗန္ဓပ္ဍဲဆေၚ်စပ်ကဵုပူဂဵုတတိယဟေၚ်ရ။"
only_third_verb(data)
end
if args.note then
if data.notes then
data.notes = data.notes .. "\n"
else
data.notes = ""
end
data.notes = data.notes .. args.note
end
if data.notes then data.notes = rsub(data.notes, "{stem}", data.stem) end
for key,val in pairs(data.forms) do
if type(val) == "table" then
for i,form in ipairs(val) do
if form ~= "—" then
if type(form) == "table" then
error(("Internal error: Saw table value for key '%s': %s"):format(key, mw.dumpObject(form)))
end
data.forms[key][i] = data.stem .. form
end
end
else
if val ~= "—" then
data.forms[key] = data.stem .. val
end
end
end
for _, pref_and_type in ipairs(verb_prefix_to_type) do
local prefty = pref_and_type[2]
if args[prefty] == "n" or args[prefty] == "no" then
if data.preftype == prefty then
data.preftype = nil
end
elseif args[prefty] then
data.preftype = prefty
end
end
if data.preftype then
for key, val in pairs(data.forms) do
m_core.pref_sufs[data.preftype](data, key, val)
end
end
local aux_prefix = data.prefix or ""
aux_prefix = rsub(aux_prefix, "l[ae] $", "l'")
if args.aux == "a" or args.aux == "avoir" then
data.aux = aux_prefix .. "avoir"
elseif args.aux == "e" or args.aux == "être" then
data.aux = aux_prefix .. "être"
elseif args.aux == "ae" or args.aux == "avoir,être" or args.aux == "avoir or être" then
data.aux = aux_prefix .. "avoir]] or [[être"
elseif args.aux then
error("Unrecognized value for aux=, should be 'a', 'e', 'ae', 'avoir', 'être', or 'avoir,être'")
end
data.forms.inf_nolink = data.forms.inf_nolink or data.forms.inf
data.forms.ppr_nolink = data.forms.ppr_nolink or data.forms.ppr
data.forms.pp_nolink = data.forms.pp_nolink or data.forms.pp
if not data.irregular then
if data.group == 1 or data.group == 2 then
data.irregular = "no"
else
data.irregular = "yes"
end
end
return data
end
function export.generate_forms(frame)
local args = clone_args(frame)
local data = export.do_generate_forms(args)
local retval = {}
for arraytype = 1, 2 do
local arrayname = arraytype == 1 and "forms" or "prons"
local array = data[arrayname]
for _, prop in ipairs(all_verb_props) do
local val = array[prop]
if type(val) ~= "table" then val = {val} end
local newval = {}
for _, form in ipairs(val) do
if not rmatch(form, "—") then
table.insert(newval, form)
end
end
-- Ignore pronunciation if dash present in form.
-- FIXME, we shouldn't generate the pronunciation at all in that
-- case, so we can support both dash and another form.
if arrayname == "prons" then
local val = data.forms[prop]
if type(val) == "string" then val = {val} end
local found_dash = false
for _, form in ipairs(val) do
if rmatch(form, "—") then
found_dash = true
break
end
end
if found_dash then
newval = {}
end
end
if #newval > 0 then
table.insert(retval, arrayname .. "." .. prop .. "=" .. table.concat(newval, ","))
end
end
end
return table.concat(retval, "|")
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local args = clone_args(frame)
local args_clone
if test_new_fr_verb_module then
-- clone in case export.do_generate_forms() modifies args
-- (I don't think it does currently)
args_clone = mw.clone(args)
end
local data = export.do_generate_forms(args)
-- Test code to compare existing module to new one.
if test_new_fr_verb_module then
local m_new_fr_verb = require("Module:User:Benwing2/fr-verb")
local newdata = m_new_fr_verb.do_generate_forms(args_clone)
local difconj = false
local difforms = {}
for arraytype = 1, 2 do
local arrayname = arraytype == 1 and "forms" or "prons"
local array = data[arrayname]
local newarray = newdata[arrayname]
for _, prop in ipairs(all_verb_props) do
local val = array[prop]
local newval = newarray[prop]
-- deal with possible impedance mismatch between plain string
-- and list
if type(val) == "string" then val = {val} end
if type(newval) == "string" then newval = {newval} end
if not m_table.deepEquals(val, newval) then
if test_new_fr_verb_module == "error" then
table.insert(difforms, arrayname .. "." .. prop .. " " .. (val and table.concat(val, ",") or "nil") .. " || " .. (newval and table.concat(newval, ",") or "nil"))
end
difconj = true
end
end
end
if #difforms > 0 then
error(table.concat(difforms, "; "))
end
track(difconj and "different-conj" or "same-conj")
end
m_core.link(data)
local categories = {}
if data.aux == "être" then
-- table.insert(categories, "French verbs taking être as auxiliary")
elseif data.aux == "avoir]] or [[être" then
-- table.insert(categories, "French verbs taking avoir or être as auxiliary")
end
if data.conjcat then
-- table.insert(categories, "French verbs with conjugation " .. data.conjcat)
end
for _, cat in ipairs(data.cat) do
-- table.insert(categories, "French " .. cat .. " verbs")
end
for _, group in ipairs(type(data.group) == "table" and data.group or {data.group}) do
if group == 1 then
-- table.insert(categories, "French first group verbs")
elseif group == 2 then
-- table.insert(categories, "French second group verbs")
else
-- table.insert(categories, "French third group verbs")
end
end
if data.irregular == "yes" then
table.insert(categories, "ကြိယာအတိုၚ်ပကတိဟွံသေၚ်နကဵုဘာသာပြၚ်သေတ်ဂမၠိုၚ်")
end
return m_conj.make_table(data) .. m_utilities.format_categories(categories, lang)
end
return export
0ejc9kjgvo99hg8wndqk5xlyrezt7tb
မဝ်ဂျူ:fr-conj
828
111354
397632
141868
2026-06-28T05:43:02Z
咽頭べさ
33
397632
Scribunto
text/plain
local export = {}
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("fr")
-- defined below
local format_links, categorize
--entry point
function export.frconj(frame)
--are we directly embedding through Template:fr-conj or calling the module?
local args = {}
if frame.args["direct"] == "yes" then
args = frame:getParent().args
else
args = frame.args
end
--create the forms
local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""}
data.aux = args["aux"]
if not (data.aux == "avoir" or data.aux == "être") then
data.aux = "avoir ''or'' être"
end
if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then
data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.inf_nolink = format_links(args["inf"])
end
data.forms.pp = format_links(args["pp"])
data.forms.ppr = format_links(args["ppr"])
if (args["pp"] == "—") then
data.forms.pp_nolink = "—"
elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then
data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.pp_nolink = format_links(args["pp"])
end
if (args["ppr"] == "—") then
data.forms.ppr_nolink = "—"
elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then
data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.ppr_nolink = format_links(args["ppr"])
end
local form_params = {
"ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p",
"ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p",
"ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p",
"ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p",
"cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p",
"sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p",
"sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p",
"imp.p.2s", "imp.p.1p", "imp.p.2p",
}
for _, form in ipairs(form_params) do
local key = form:gsub("%.", "_")
data.forms[key] = format_links(args[form])
local alt = form .. ".alt"
local alt_arg = args[alt]
if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then
data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg)
end
end
--a few ugly hacks
data.forms.ger = args["ger.override"]
data.forms.inf_comp = args["inf.override"]
data.forms.ger_comp = args["ger.comp.override"]
--finish up
if mw.title.getCurrentTitle().nsText == "" then
return export.make_table(data) .. categorize(args,data)
else
return export.make_table(data)
end
end
function format_links(link)
if (link == nil or link == "" or link == "—") then
return "—"
else
return m_links.full_link({lang = lang, term = link})
end
end
function categorize(args, data)
output = ""
if args.group == "1" or args.group == "1st" or args.group == "first" then
output = output .. " "
elseif args.group == "2" or args.group == "2st" or args.group == "second" then
output = output .. " "
elseif args.group == "3" or args.group == "3rd" or args.group == "third" then
output = output .. " "
end
if data.aux == "être" then
output = output .. " "
elseif data.aux == "avoir or être" then
output = output .. " "
end
return output
end
--split from Module:fr-verb/core
function export.make_table(data)
local aux_gerund = ""
if data.aux == "avoir" then
aux_gerund = "[[ayant]]"
elseif data.aux == "[[s']][[être]]" then
aux_gerund = "[[s']][[étant]]"
elseif data.aux == "s'en être" then
aux_gerund = "[[s']][[en]] [[étant]]"
elseif data.aux == "s'y être" then
aux_gerund = "[[s']][[y]] [[étant]]"
elseif data.aux == "s'y en être" then
aux_gerund = "[[s']][[y]] [[en]] [[étant]]"
elseif data.aux == "se l'être" then
aux_gerund = "[[se]] [[l']][[étant]]"
elseif data.aux == "se les être" then
aux_gerund = "[[se]] [[les]] [[étant]]"
elseif data.aux == "l'en avoir" then
aux_gerund = "[[l']][[en]] [[ayant]]"
elseif data.aux == "l'y en avoir" then
aux_gerund = "[[l']][[y]] [[en]] [[ayant]]"
elseif data.aux == "les en avoir" then
aux_gerund = "[[les]] [[en]] [[ayant]]"
elseif data.aux == "les y en avoir" then
aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]"
elseif data.aux == "se les y être" then
aux_gerund = "[[se]] [[les]] [[y]] [[étant]]"
elseif data.aux == "se l'y être" then
aux_gerund = "[[se]] [[l']][[y]] [[étant]]"
elseif data.aux == "l'avoir" then
aux_gerund = "[[l]]'[[ayant]]"
elseif data.aux == "l'être" then
aux_gerund = "[[l]]'[[étant]]"
elseif data.aux == "l'avoir ''or'' être" then
aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]"
elseif data.aux == "l'y avoir" then
aux_gerund = "[[l]]'[[y]] [[ayant]]"
elseif data.aux == "l'y être" then
aux_gerund = "[[l]]'[[y]] [[étant]]"
elseif data.aux == "l'y avoir ''or'' être" then
aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "les avoir" then
aux_gerund = "[[les]] [[ayant]]"
elseif data.aux == "les être" then
aux_gerund = "[[les]] [[étant]]"
elseif data.aux == "les avoir ''or'' être" then
aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "les y avoir" then
aux_gerund = "[[les]] [[y]] [[ayant]]"
elseif data.aux == "les y être" then
aux_gerund = "[[les]] [[y]] [[étant]]"
elseif data.aux == "les y avoir ''or'' être" then
aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "y avoir" then
aux_gerund = "[[y]] [[ayant]]"
elseif data.aux == "y être" then
aux_gerund = "[[y]] [[étant]]"
elseif data.aux == "y avoir ''or'' être" then
aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "y en avoir" then
aux_gerund = "[[y]] [[en]] [[ayant]]"
elseif data.aux == "y en être" then
aux_gerund = "[[y]] [[en]] [[étant]]"
elseif data.aux == "y en avoir ''or'' être" then
aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "en avoir" then
aux_gerund = "[[en]] [[ayant]]"
elseif data.aux == "en être" then
aux_gerund = "[[en]] [[étant]]"
elseif data.aux == "en avoir ''or'' être" then
aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "être" then
aux_gerund = "[[étant]]"
else
aux_gerund = "[[ayant]] <i>or</i> [[étant]]"
end
local result = {}
local inv = data.forms.pp_nolink
local inv_sub = data.forms.pp_nolink
local inversion_note = ""
local inversion_sub_note = ""
local replacement_note = "<sup>၂</sup>"
--Until someone implements a better solution
-- paître and pouvoir have identical past participles (pu), but special inversions must only apply to pouvoir
local pouvoir_check = mw.loadData("Module:headword/data").pagename
if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or pouvoir_check == "pouvoir" or inv == "trouvé" then
inversion_note = "<sup>၂</sup>"
inversion_sub_note = "<sup>၂</sup>"
replacement_note = "<sup>၃</sup>"
if pouvoir_check == "pouvoir" then
inv = "puis"
inv_sub = "puissé"
inversion_sub_note = "<sup>၃</sup>"
replacement_note = "<sup>၄</sup>"
end
end
-- Template parameter syntax refers to the corresponding item in the data.forms table:
-- {{{inf_nolink}}} -> data.forms.inf_nolink
if data.notes then table.insert(result, data.notes .. '\n') end
table.insert(result,
[=[
<div class="NavFrame">
<div class="NavHead" align=center>သမ္ဗန္ဓဆေၚ်စပ်ကဵု ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ဗဵုရံၚ်[[အဆက်လက္ကရဴ:ကြိယာပြၚ်သေတ်ဂမၠိုၚ်]]ညိကီု)</span></div>
<div class="NavContent" align=left>
{| class="roa-inflection-table"
|-
! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">ကြိယာဟွံကၠောံ</span>
! class="roa-nonfinite-header" style="height:3em;" | <small>ဓမ္မတာ</small>
| {{{inf_nolink}}}
|-
! class="roa-nonfinite-header" style="height:3em;" | <small>ဒပ်ပံၚ်</small>
]=])
if data.forms.inf_comp == "" then
table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n')
elseif data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်</span> or <span title="">gerund</span><sup>၁</sup>
! class="roa-nonfinite-header" style="height:3em;" | <small>ဓမ္မတာ</small>
| {{{ppr}}}
|-
! class="roa-nonfinite-header" style="height:3em;" | <small>ဒပ်ပံၚ်</small>
]=])
if data.forms.ger_comp == "" then
table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n')
elseif data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက် \n')
end
table.insert(result,
[=[
|-
! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်</span>
| {{{pp}}}
|-
! colspan="2" rowspan="2" class="roa-person-number-header" |
! colspan="3" class="roa-person-number-header" | ကိုန်ဨကဝုစ်
! colspan="3" class="roa-person-number-header" | ကိုန်ဗဟုဝစ်
|-
! class="roa-person-number-header" style="width:12.5%;" | ပထမ
! class="roa-person-number-header" style="width:12.5%;" | ဒုတိယ
! class="roa-person-number-header" style="width:12.5%;" | တတိယ
! class="roa-person-number-header" style="width:12.5%;" | ပထမ
! class="roa-person-number-header" style="width:12.5%;" | ဒုတိယ
! class="roa-person-number-header" style="width:12.5%;" | တတိယ
|-
! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">မစၞောန်ရန်</span>
! class="roa-indicative-left-rail" | je (j’)
! class="roa-indicative-left-rail" | tu
! class="roa-indicative-left-rail" | il, elle, on
! class="roa-indicative-left-rail" | nous
! class="roa-indicative-left-rail" | vous
! class="roa-indicative-left-rail" | ils, elles
|-
! rowspan="5" class="roa-indicative-left-rail" | <small>(ကာလ<br>ဓမ္မတာဂမၠိုၚ်)</small>
! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ပစ္စုပ္ပန်</span>
| {{{ind_p_1s}}}]=] .. inversion_note .. [=[
| {{{ind_p_2s}}}
| {{{ind_p_3s}}}
| {{{ind_p_1p}}}
| {{{ind_p_2p}}}
| {{{ind_p_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ဟွံဍိုက်ပေၚ်</span>
| {{{ind_i_1s}}}
| {{{ind_i_2s}}}
| {{{ind_i_3s}}}
| {{{ind_i_1p}}}
| {{{ind_i_2p}}}
| {{{ind_i_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">ဝၚ်မပြာကတ်အတိက်</span>]=] .. replacement_note .. [=[
| {{{ind_ps_1s}}}
| {{{ind_ps_2s}}}
| {{{ind_ps_3s}}}
| {{{ind_ps_1p}}}
| {{{ind_ps_2p}}}
| {{{ind_ps_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="အနာဂတ်ဓမ္မတာ">future</span>
| {{{ind_f_1s}}}
| {{{ind_f_2s}}}
| {{{ind_f_3s}}}
| {{{ind_f_1p}}}
| {{{ind_f_2p}}}
| {{{ind_f_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်</span>
| {{{cond_p_1s}}}
| {{{cond_p_2s}}}
| {{{cond_p_3s}}}
| {{{cond_p_1p}}}
| {{{cond_p_2p}}}
| {{{cond_p_3p}}}
|-
! rowspan="5" class="roa-indicative-left-rail" | <small>(ကာလ<br>ဒပ်ပံၚ်ဂမၠိုၚ်)</small>
! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ပစ္စုပ္ပန်မချိုတ်ပၠိုတ်</span>
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | မစၞောန်ရန်ပစ္စုပ္ပန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">ဗီုပြၚ်မဍိုက်ပေၚ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | မစၞောန်ရန်ဟွံဍိုက်ပေၚ်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">တံဝါဒိအတိက်တေံ</span>' .. replacement_note .. '\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | ဝၚ်မပြာကတ်အတိက်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">အနာဂတ်မချိုတ်ပၠိုတ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | future of <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်မချိုတ်ပၠိုတ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">အရေဝ်နိဒါန်</span>
! class="roa-subjunctive-left-rail" | que je (j’)
! class="roa-subjunctive-left-rail" | que tu
! class="roa-subjunctive-left-rail" | qu’il, qu’elle
! class="roa-subjunctive-left-rail" | que nous
! class="roa-subjunctive-left-rail" | que vous
! class="roa-subjunctive-left-rail" | qu’ils, qu’elles
|-
! rowspan="2" class="roa-subjunctive-left-rail" | <small>(ကာလ<br>ဓမ္မတာဂမၠိုၚ်)</small>
! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ပစ္စုပ္ပန်</span>
| {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[
| {{{sub_p_2s}}}
| {{{sub_p_3s}}}
| {{{sub_p_1p}}}
| {{{sub_p_2p}}}
| {{{sub_p_3p}}}
|-
! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ဟွံဍိုက်ပေၚ်</span>]=] .. replacement_note .. [=[
| {{{sub_pa_1s}}}
| {{{sub_pa_2s}}}
| {{{sub_pa_3s}}}
| {{{sub_pa_1p}}}
| {{{sub_pa_2p}}}
| {{{sub_pa_3p}}}
|-
! rowspan="2" class="roa-subjunctive-left-rail" | <small>(ကာလ<br>ဒပ်ပံၚ်ဂမၠိုၚ်)</small>
! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">အတိက်</span>
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | အရေဝ်နိဒါန်ပစ္စုပ္ပန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">ဗီုပြၚ်မဍိုက်ပေၚ်</span>' .. replacement_note .. '\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | အရေဝ်နိဒါန်ဟွံဍိုက်ပေၚ်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">ပါဲဗလေတ်ဟွံဗၠး</span>
! class="roa-imperative-left-rail" | –
! class="roa-imperative-left-rail" | <s>tu</s>
! class="roa-imperative-left-rail" | –
! class="roa-imperative-left-rail" | <s>nous</s>
! class="roa-imperative-left-rail" | <s>vous</s>
! class="roa-imperative-left-rail" | –
|-
! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">ဓမ္မတာ</span>
| —
| {{{imp_p_2s}}}
| —
| {{{imp_p_1p}}}
| {{{imp_p_2p}}}
| —
|-
! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">ဒပ်ပံၚ်</span>
| —
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
| —
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
| —
|-
| colspan="8" |<sup>၁</sup> မဆေၚ်စပ်ကဵုကြိယာစၞးနာမ်ပြၚ်သေတ်မရပ်စပ်ပါဲနူမၞုံကဵုဝိဘတ် <i>[[en]]</i>.
|-
]=])
if inversion_note ~= "" then
table.insert(result,
[=[
| colspan="8" |<sup>၂</sup> <i>[[]=] .. inv .. [=[]]</i> ကာလရုန်မဵုလဝ်။
|-
]=])
end
if inv ~= inv_sub then
table.insert(result,
[=[
| colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> ကာလရုန်မဵုလဝ်။
|-
]=])
end
table.insert(result,
[=[
| colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way:
: past historic → present perfect
: past anterior → pluperfect
: imperfect subjunctive → present subjunctive
: pluperfect subjunctive → past subjunctive
(Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]).
|}
</div>
</div>
]=])
--[[
setmetatable(data.forms, { __index =
function(t, k)
mw.log('No key for ' .. k)
end
})
--]]
return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}",
function(code)
return data.forms[code]
end)
end
return export
dryyc180ubhpkg4xvogjzlm2pa55h45
397634
397632
2026-06-28T05:49:37Z
咽頭べさ
33
397634
Scribunto
text/plain
local export = {}
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("fr")
-- defined below
local format_links, categorize
--entry point
function export.frconj(frame)
--are we directly embedding through Template:fr-conj or calling the module?
local args = {}
if frame.args["direct"] == "yes" then
args = frame:getParent().args
else
args = frame.args
end
--create the forms
local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""}
data.aux = args["aux"]
if not (data.aux == "avoir" or data.aux == "être") then
data.aux = "avoir ''or'' être"
end
if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then
data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.inf_nolink = format_links(args["inf"])
end
data.forms.pp = format_links(args["pp"])
data.forms.ppr = format_links(args["ppr"])
if (args["pp"] == "—") then
data.forms.pp_nolink = "—"
elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then
data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.pp_nolink = format_links(args["pp"])
end
if (args["ppr"] == "—") then
data.forms.ppr_nolink = "—"
elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then
data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename
else
data.forms.ppr_nolink = format_links(args["ppr"])
end
local form_params = {
"ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p",
"ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p",
"ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p",
"ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p",
"cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p",
"sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p",
"sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p",
"imp.p.2s", "imp.p.1p", "imp.p.2p",
}
for _, form in ipairs(form_params) do
local key = form:gsub("%.", "_")
data.forms[key] = format_links(args[form])
local alt = form .. ".alt"
local alt_arg = args[alt]
if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then
data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg)
end
end
--a few ugly hacks
data.forms.ger = args["ger.override"]
data.forms.inf_comp = args["inf.override"]
data.forms.ger_comp = args["ger.comp.override"]
--finish up
if mw.title.getCurrentTitle().nsText == "" then
return export.make_table(data) .. categorize(args,data)
else
return export.make_table(data)
end
end
function format_links(link)
if (link == nil or link == "" or link == "—") then
return "—"
else
return m_links.full_link({lang = lang, term = link})
end
end
function categorize(args, data)
output = ""
if args.group == "1" or args.group == "1st" or args.group == "first" then
output = output .. " "
elseif args.group == "2" or args.group == "2st" or args.group == "second" then
output = output .. " "
elseif args.group == "3" or args.group == "3rd" or args.group == "third" then
output = output .. " "
end
if data.aux == "être" then
output = output .. " "
elseif data.aux == "avoir or être" then
output = output .. " "
end
return output
end
--split from Module:fr-verb/core
function export.make_table(data)
local aux_gerund = ""
if data.aux == "avoir" then
aux_gerund = "[[ayant]]"
elseif data.aux == "[[s']][[être]]" then
aux_gerund = "[[s']][[étant]]"
elseif data.aux == "s'en être" then
aux_gerund = "[[s']][[en]] [[étant]]"
elseif data.aux == "s'y être" then
aux_gerund = "[[s']][[y]] [[étant]]"
elseif data.aux == "s'y en être" then
aux_gerund = "[[s']][[y]] [[en]] [[étant]]"
elseif data.aux == "se l'être" then
aux_gerund = "[[se]] [[l']][[étant]]"
elseif data.aux == "se les être" then
aux_gerund = "[[se]] [[les]] [[étant]]"
elseif data.aux == "l'en avoir" then
aux_gerund = "[[l']][[en]] [[ayant]]"
elseif data.aux == "l'y en avoir" then
aux_gerund = "[[l']][[y]] [[en]] [[ayant]]"
elseif data.aux == "les en avoir" then
aux_gerund = "[[les]] [[en]] [[ayant]]"
elseif data.aux == "les y en avoir" then
aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]"
elseif data.aux == "se les y être" then
aux_gerund = "[[se]] [[les]] [[y]] [[étant]]"
elseif data.aux == "se l'y être" then
aux_gerund = "[[se]] [[l']][[y]] [[étant]]"
elseif data.aux == "l'avoir" then
aux_gerund = "[[l]]'[[ayant]]"
elseif data.aux == "l'être" then
aux_gerund = "[[l]]'[[étant]]"
elseif data.aux == "l'avoir ''or'' être" then
aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]"
elseif data.aux == "l'y avoir" then
aux_gerund = "[[l]]'[[y]] [[ayant]]"
elseif data.aux == "l'y être" then
aux_gerund = "[[l]]'[[y]] [[étant]]"
elseif data.aux == "l'y avoir ''or'' être" then
aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "les avoir" then
aux_gerund = "[[les]] [[ayant]]"
elseif data.aux == "les être" then
aux_gerund = "[[les]] [[étant]]"
elseif data.aux == "les avoir ''or'' être" then
aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "les y avoir" then
aux_gerund = "[[les]] [[y]] [[ayant]]"
elseif data.aux == "les y être" then
aux_gerund = "[[les]] [[y]] [[étant]]"
elseif data.aux == "les y avoir ''or'' être" then
aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "y avoir" then
aux_gerund = "[[y]] [[ayant]]"
elseif data.aux == "y être" then
aux_gerund = "[[y]] [[étant]]"
elseif data.aux == "y avoir ''or'' être" then
aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "y en avoir" then
aux_gerund = "[[y]] [[en]] [[ayant]]"
elseif data.aux == "y en être" then
aux_gerund = "[[y]] [[en]] [[étant]]"
elseif data.aux == "y en avoir ''or'' être" then
aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "en avoir" then
aux_gerund = "[[en]] [[ayant]]"
elseif data.aux == "en être" then
aux_gerund = "[[en]] [[étant]]"
elseif data.aux == "en avoir ''or'' être" then
aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]"
elseif data.aux == "être" then
aux_gerund = "[[étant]]"
else
aux_gerund = "[[ayant]] <i>or</i> [[étant]]"
end
local result = {}
local inv = data.forms.pp_nolink
local inv_sub = data.forms.pp_nolink
local inversion_note = ""
local inversion_sub_note = ""
local replacement_note = "<sup>၂</sup>"
--Until someone implements a better solution
-- paître and pouvoir have identical past participles (pu), but special inversions must only apply to pouvoir
local pouvoir_check = mw.loadData("Module:headword/data").pagename
if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or pouvoir_check == "pouvoir" or inv == "trouvé" then
inversion_note = "<sup>၂</sup>"
inversion_sub_note = "<sup>၂</sup>"
replacement_note = "<sup>၃</sup>"
if pouvoir_check == "pouvoir" then
inv = "puis"
inv_sub = "puissé"
inversion_sub_note = "<sup>၃</sup>"
replacement_note = "<sup>၄</sup>"
end
end
-- Template parameter syntax refers to the corresponding item in the data.forms table:
-- {{{inf_nolink}}} -> data.forms.inf_nolink
if data.notes then table.insert(result, data.notes .. '\n') end
table.insert(result,
[=[
<div class="NavFrame">
<div class="NavHead" align=center>သမ္ဗန္ဓဆေၚ်စပ်ကဵု ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ဗဵုရံၚ်[[အဆက်လက္ကရဴ:ကြိယာပြၚ်သေတ်ဂမၠိုၚ်]]ညိကီု)</span></div>
<div class="NavContent" align=left>
{| class="roa-inflection-table"
|-
! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">ကြိယာဟွံကၠောံ</span>
! class="roa-nonfinite-header" style="height:3em;" | <small>ဓမ္မတာ</small>
| {{{inf_nolink}}}
|-
! class="roa-nonfinite-header" style="height:3em;" | <small>ဒပ်ပံၚ်</small>
]=])
if data.forms.inf_comp == "" then
table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n')
elseif data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်</span> ဝါ <span title="">ကြိယာစၞးနာမ်</span><sup>၁</sup>
! class="roa-nonfinite-header" style="height:3em;" | <small>ဓမ္မတာ</small>
| {{{ppr}}}
|-
! class="roa-nonfinite-header" style="height:3em;" | <small>ဒပ်ပံၚ်</small>
]=])
if data.forms.ger_comp == "" then
table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n')
elseif data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက် \n')
end
table.insert(result,
[=[
|-
! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်</span>
| {{{pp}}}
|-
! colspan="2" rowspan="2" class="roa-person-number-header" |
! colspan="3" class="roa-person-number-header" | ကိုန်ဨကဝုစ်
! colspan="3" class="roa-person-number-header" | ကိုန်ဗဟုဝစ်
|-
! class="roa-person-number-header" style="width:12.5%;" | ပထမ
! class="roa-person-number-header" style="width:12.5%;" | ဒုတိယ
! class="roa-person-number-header" style="width:12.5%;" | တတိယ
! class="roa-person-number-header" style="width:12.5%;" | ပထမ
! class="roa-person-number-header" style="width:12.5%;" | ဒုတိယ
! class="roa-person-number-header" style="width:12.5%;" | တတိယ
|-
! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">မစၞောန်ရန်</span>
! class="roa-indicative-left-rail" | je (j’)
! class="roa-indicative-left-rail" | tu
! class="roa-indicative-left-rail" | il, elle, on
! class="roa-indicative-left-rail" | nous
! class="roa-indicative-left-rail" | vous
! class="roa-indicative-left-rail" | ils, elles
|-
! rowspan="5" class="roa-indicative-left-rail" | <small>(ကာလ<br>ဓမ္မတာဂမၠိုၚ်)</small>
! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ပစ္စုပ္ပန်</span>
| {{{ind_p_1s}}}]=] .. inversion_note .. [=[
| {{{ind_p_2s}}}
| {{{ind_p_3s}}}
| {{{ind_p_1p}}}
| {{{ind_p_2p}}}
| {{{ind_p_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ဟွံဍိုက်ပေၚ်</span>
| {{{ind_i_1s}}}
| {{{ind_i_2s}}}
| {{{ind_i_3s}}}
| {{{ind_i_1p}}}
| {{{ind_i_2p}}}
| {{{ind_i_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">ဝၚ်မပြာကတ်အတိက်</span>]=] .. replacement_note .. [=[
| {{{ind_ps_1s}}}
| {{{ind_ps_2s}}}
| {{{ind_ps_3s}}}
| {{{ind_ps_1p}}}
| {{{ind_ps_2p}}}
| {{{ind_ps_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="အနာဂတ်ဓမ္မတာ">future</span>
| {{{ind_f_1s}}}
| {{{ind_f_2s}}}
| {{{ind_f_3s}}}
| {{{ind_f_1p}}}
| {{{ind_f_2p}}}
| {{{ind_f_3p}}}
|-
! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်</span>
| {{{cond_p_1s}}}
| {{{cond_p_2s}}}
| {{{cond_p_3s}}}
| {{{cond_p_1p}}}
| {{{cond_p_2p}}}
| {{{cond_p_3p}}}
|-
! rowspan="5" class="roa-indicative-left-rail" | <small>(ကာလ<br>ဒပ်ပံၚ်ဂမၠိုၚ်)</small>
! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ပစ္စုပ္ပန်မချိုတ်ပၠိုတ်</span>
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | မစၞောန်ရန်ပစ္စုပ္ပန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">ဗီုပြၚ်မဍိုက်ပေၚ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | မစၞောန်ရန်ဟွံဍိုက်ပေၚ်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">တံဝါဒိအတိက်တေံ</span>' .. replacement_note .. '\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | ဝၚ်မပြာကတ်အတိက်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">အနာဂတ်မချိုတ်ပၠိုတ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | အနာဂတ်ဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်မချိုတ်ပၠိုတ်</span>\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | တၚ်မကၞာတ်လဝ်စေဝ်ပၞောန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">အရေဝ်နိဒါန်</span>
! class="roa-subjunctive-left-rail" | que je (j’)
! class="roa-subjunctive-left-rail" | que tu
! class="roa-subjunctive-left-rail" | qu’il, qu’elle
! class="roa-subjunctive-left-rail" | que nous
! class="roa-subjunctive-left-rail" | que vous
! class="roa-subjunctive-left-rail" | qu’ils, qu’elles
|-
! rowspan="2" class="roa-subjunctive-left-rail" | <small>(ကာလ<br>ဓမ္မတာဂမၠိုၚ်)</small>
! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ပစ္စုပ္ပန်</span>
| {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[
| {{{sub_p_2s}}}
| {{{sub_p_3s}}}
| {{{sub_p_1p}}}
| {{{sub_p_2p}}}
| {{{sub_p_3p}}}
|-
! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ဟွံဍိုက်ပေၚ်</span>]=] .. replacement_note .. [=[
| {{{sub_pa_1s}}}
| {{{sub_pa_2s}}}
| {{{sub_pa_3s}}}
| {{{sub_pa_1p}}}
| {{{sub_pa_2p}}}
| {{{sub_pa_3p}}}
|-
! rowspan="2" class="roa-subjunctive-left-rail" | <small>(ကာလ<br>ဒပ်ပံၚ်ဂမၠိုၚ်)</small>
! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">အတိက်</span>
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | အရေဝ်နိဒါန်ပစ္စုပ္ပန်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">ဗီုပြၚ်မဍိုက်ပေၚ်</span>' .. replacement_note .. '\n')
if data.forms.pp_nolink == "—" then
table.insert(result, '! colspan="6" class="roa-compound-row" | — \n')
else
table.insert(result, '! colspan="6" class="roa-compound-row" | အရေဝ်နိဒါန်ဟွံဍိုက်ပေၚ်မဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
|-
! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">ပါဲဗလေတ်ဟွံဗၠး</span>
! class="roa-imperative-left-rail" | –
! class="roa-imperative-left-rail" | <s>tu</s>
! class="roa-imperative-left-rail" | –
! class="roa-imperative-left-rail" | <s>nous</s>
! class="roa-imperative-left-rail" | <s>vous</s>
! class="roa-imperative-left-rail" | –
|-
! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">ဓမ္မတာ</span>
| —
| {{{imp_p_2s}}}
| —
| {{{imp_p_1p}}}
| {{{imp_p_2p}}}
| —
|-
! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">ဒပ်ပံၚ်</span>
| —
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
| —
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
]=])
if data.forms.pp_nolink == "—" then
table.insert(result, '! class="roa-compound-row" | — \n')
else
table.insert(result, '! class="roa-compound-row" | ပါဲဗလေတ်ဟွံဗၠးဓမ္မတာမဆေၚ်စပ်ကဵု <i>[[' .. data.aux .. ']]</i> + လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်\n')
end
table.insert(result,
[=[
| —
|-
| colspan="8" |<sup>၁</sup> မဆေၚ်စပ်ကဵုကြိယာစၞးနာမ်ပြၚ်သေတ်မရပ်စပ်ပါဲနူမၞုံကဵုဝိဘတ် <i>[[en]]</i>.
|-
]=])
if inversion_note ~= "" then
table.insert(result,
[=[
| colspan="8" |<sup>၂</sup> <i>[[]=] .. inv .. [=[]]</i> ကာလရုန်မဵုလဝ်။
|-
]=])
end
if inv ~= inv_sub then
table.insert(result,
[=[
| colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> ကာလရုန်မဵုလဝ်။
|-
]=])
end
table.insert(result,
[=[
| colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way:
: past historic → present perfect
: past anterior → pluperfect
: imperfect subjunctive → present subjunctive
: pluperfect subjunctive → past subjunctive
(Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]).
|}
</div>
</div>
]=])
--[[
setmetatable(data.forms, { __index =
function(t, k)
mw.log('No key for ' .. k)
end
})
--]]
return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}",
function(code)
return data.forms[code]
end)
end
return export
fbgmo1w9h95psjeqbf6deoiksewt17y
မဝ်ဂျူ:gem-common
828
219638
397659
300199
2026-06-28T07:20:58Z
咽頭べさ
33
397659
Scribunto
text/plain
local export = {}
function export.tag_form(form, tag)
if form ~= "" then
return "<" .. (tag or "span") .. " lang=\"gem-pro\" class=\"Unicode\">*" .. form .. "</" .. (tag or "span") .. ">"
else
return "—"
end
end
-- Make a link out of a form, or show a dash if empty.
function export.link_form(form, tag)
if not SUBPAGENAME then
SUBPAGENAME = mw.loadData("Module:headword/data").pagename
end
if type(form) == "table" then
for n, subform in pairs(form) do
form[n] = export.link_form(subform, tag)
end
return table.concat(form, ", ")
else
if form ~= "" then
return "<" .. (tag or "span") .. " lang=\"gem-pro\" class=\"Unicode\">[[ဗီုပြၚ်သိုၚ်တၟိ:ဂျာမာန်-အခိုက်ကၞာ/" .. form .. "|*" .. form .. "]]</" .. (tag or "span") .. ">"
else
return "—"
end
end
end
-- Add a -t- to a word, which alters the final consonant.
function export.add_t(word)
word = word .. "t"
word = mw.ustring.gsub(word, "gdt$", "hst")
word = mw.ustring.gsub(word, "skt$", "st")
word = mw.ustring.gsub(word, "stt$", "st")
word = mw.ustring.gsub(word, "[bp]t$", "ft")
word = mw.ustring.gsub(word, "[dtþ]t$", "st")
word = mw.ustring.gsub(word, "[gk]t$", "ht")
word = mw.ustring.gsub(word, "[gkh]wt$", "ht")
return word
end
-- Change all e to i
function export.i_mutation(word)
return word:gsub("e", "i")
end
return export
mapmr4ihqw6sh0dvgp1zqpi60h47oyp
skænkter
0
296273
397625
2026-06-28T03:35:38Z
Hiyuune
1535
ခၞံကၠောန်လဝ် မုက်လိက် နကု "==သွဳဒေန်တြေံ== ===ကြိယာ=== {{head|gmq-osw|participle}} ====လဟုတ်စှ်ေ==== {{gmq-osw-decl-adj-strong|skænkt|nom_sg_neut=skænkt|acc_sg_neut=skænkt}} {{gmq-osw-decl-adj-weak|skænkt}}"
397625
wikitext
text/x-wiki
==သွဳဒေန်တြေံ==
===ကြိယာ===
{{head|gmq-osw|participle}}
====လဟုတ်စှ်ေ====
{{gmq-osw-decl-adj-strong|skænkt|nom_sg_neut=skænkt|acc_sg_neut=skænkt}}
{{gmq-osw-decl-adj-weak|skænkt}}
32cf8ah1dx5wzgnssm8twzkzsobndnj
397626
397625
2026-06-28T03:36:02Z
Hiyuune
1535
397626
wikitext
text/x-wiki
==သွဳဒေန်တြေံ==
===ကြိယာ===
{{head|gmq-osw|participle}}
# {{past participle of|gmq-osw|skænkia}}
====လဟုတ်စှ်ေ====
{{gmq-osw-decl-adj-strong|skænkt|nom_sg_neut=skænkt|acc_sg_neut=skænkt}}
{{gmq-osw-decl-adj-weak|skænkt}}
sm2d10kwtwsyz0xhr6fztpssmwimvbn
ကဏ္ဍ:ကာရန်:နဝ်ဝေ ဗော်ခ်မဝ်/ɑːʋər
14
296274
397627
2026-06-28T03:46:14Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာနဝ်ဝေ ဗော်ခ်မဝ်|နဝ်ဝေ ဗော..."
397627
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာနဝ်ဝေ ဗော်ခ်မဝ်|နဝ်ဝေ ဗော်ခ်မဝ်]] » [[:ကဏ္ဍ:ကာရန်:နဝ်ဝေ ဗော်ခ်မဝ်|ကာရန်ဂမၠိုၚ်]] » -ɑːʋər
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာနဝ်ဝေ ဗော်ခ်မဝ်|နဝ်ဝေ ဗော်ခ်မဝ်]]မနွံကာရန် ɑːʋər ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:နဝ်ဝေ ဗော်ခ်မဝ်|ɑːʋər]]
gsqvnfirm4v9jphk7h4db0q3fun5xud
ကဏ္ဍ:ကာရန်:ဒါတ်/aːvər
14
296275
397628
2026-06-28T03:50:07Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်|ဒါတ်]] » :ကဏ္ဍ:ကာရန်:ဒါ..."
397628
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဒါတ်|ဒါတ်]] » [[:ကဏ္ဍ:ကာရန်:ဒါတ်|ကာရန်ဂမၠိုၚ်]] » -aːvər
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာဒါတ်|ဒါတ်]]မနွံကာရန် [[ကာရန်:ဒါတ်/aːvər|-aːvər]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:ဒါတ်|aːvər]]
120je25ndqwnem8bi8xw7iq2rvjwhrg
ကာရန်:ဒါတ်/aːvər
106
296276
397629
2026-06-28T03:52:10Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|nl|aː|vər}} ==ဗွဟ်ရမ္သာၚ်== * {{IPA|nl|/aːvər/}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== * {{l|nl|braver}} * {{l|nl|daver}} * {{l|nl|haver}} * {{l|nl|klaver}} ===ဝဏ္ဏၜါ=== * {{l|nl|gedaver}} * {{l|nl|kadaver}}"
397629
wikitext
text/x-wiki
{{rhymes nav|nl|aː|vər}}
==ဗွဟ်ရမ္သာၚ်==
* {{IPA|nl|/aːvər/}}
==ကာရန်ဂမၠိုၚ်==
===ဝဏ္ဏမွဲ===
* {{l|nl|braver}}
* {{l|nl|daver}}
* {{l|nl|haver}}
* {{l|nl|klaver}}
===ဝဏ္ဏၜါ===
* {{l|nl|gedaver}}
* {{l|nl|kadaver}}
pm8yr9nua9p6g31t1mcehldblo68oir
ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်/eɪvə(ɹ)
14
296277
397630
2026-06-28T04:40:13Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » :ကဏ..."
397630
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]] » [[:ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|ကာရန်ဂမၠိုၚ်]] » -eɪvə(ɹ)
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာအၚ်္ဂလိက်|အၚ်္ဂလိက်]]မနွံကာရန် [[ကာရန်:အၚ်္ဂလိက်/eɪvə(ɹ)|-eɪvə(ɹ)]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:အၚ်္ဂလိက်|eɪvə(ɹ)]]
2zpx0ev8o16n6xyy5motpj1mg4io101
မဝ်ဂျူ:fr-verb/pron/doc
828
296278
397631
2026-06-28T04:47:29Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> {{module cat|type=ပွမပြံၚ်လှာဲ,ပတိတ်ရမျာၚ်}}"
397631
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
{{module cat|type=ပွမပြံၚ်လှာဲ,ပတိတ်ရမျာၚ်}}
btjayrtbsa68k1tx0eo7a6hinviep07
မဝ်ဂျူ:fr-conj/doc
828
296279
397633
2026-06-28T05:44:13Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "Call frconj from a page to produce the following conjugation table: {{fr-conj |inf={{{inf}}} |ger.override = {{{ger.override}}} |inf.override= {{{inf.override}}} |ger.comp.override = {{{ger.comp.override}}} |ppr = {{{ppr}}} |pp = {{{pp}}} |ind.p.1s = {{{ind.p.1s}}} |ind.p.2s = {{{ind.p.2s}}} |ind.p.3s = {{{ind.p.3s}}} |ind.p.1p = {{{ind.p.1p}}} |ind.p.2p = {{{ind.p.2p}}} |ind.p.3p = {{{ind.p.3p}}} |ind.i.1s = {{{ind.i..."
397633
wikitext
text/x-wiki
Call frconj from a page to produce the following conjugation table:
{{fr-conj
|inf={{{inf}}}
|ger.override = {{{ger.override}}}
|inf.override= {{{inf.override}}}
|ger.comp.override = {{{ger.comp.override}}}
|ppr = {{{ppr}}}
|pp = {{{pp}}}
|ind.p.1s = {{{ind.p.1s}}}
|ind.p.2s = {{{ind.p.2s}}}
|ind.p.3s = {{{ind.p.3s}}}
|ind.p.1p = {{{ind.p.1p}}}
|ind.p.2p = {{{ind.p.2p}}}
|ind.p.3p = {{{ind.p.3p}}}
|ind.i.1s = {{{ind.i.1s}}}
|ind.i.2s = {{{ind.i.2s}}}
|ind.i.3s = {{{ind.i.3s}}}
|ind.i.1p = {{{ind.i.1p}}}
|ind.i.2p = {{{ind.i.2p}}}
|ind.i.3p = {{{ind.i.3p}}}
|ind.ps.1s = {{{ind.ps.1s}}}
|ind.ps.2s = {{{ind.ps.2s}}}
|ind.ps.3s = {{{ind.ps.3s}}}
|ind.ps.1p = {{{ind.ps.1p}}}
|ind.ps.2p = {{{ind.ps.2p}}}
|ind.ps.3p = {{{ind.ps.3p}}}
|ind.f.1s = {{{ind.f.1s}}}
|ind.f.2s = {{{ind.f.2s}}}
|ind.f.3s = {{{ind.f.3s}}}
|ind.f.1p = {{{ind.f.1p}}}
|ind.f.2p = {{{ind.f.2p}}}
|ind.f.3p = {{{ind.f.3p}}}
|cond.p.1s = {{{cond.p.1s}}}
|cond.p.2s = {{{cond.p.2s}}}
|cond.p.3s = {{{cond.p.3s}}}
|cond.p.1p = {{{cond.p.1p}}}
|cond.p.2p = {{{cond.p.2p}}}
|cond.p.3p = {{{cond.p.3p}}}
|sub.p.1s = {{{sub.p.1s}}}
|sub.p.2s = {{{sub.p.2s}}}
|sub.p.3s = {{{sub.p.3s}}}
|sub.p.1p = {{{sub.p.1p}}}
|sub.p.2p = {{{sub.p.2p}}}
|sub.p.3p = {{{sub.p.3p}}}
|sub.pa.1s = {{{sub.pa.1s}}}
|sub.pa.2s = {{{sub.pa.2s}}}
|sub.pa.3s = {{{sub.pa.3s}}}
|sub.pa.1p = {{{sub.pa.1p}}}
|sub.pa.2p = {{{sub.pa.2p}}}
|sub.pa.3p = {{{sub.pa.3p}}}
|imp.p.2s = {{{imp.p.2s}}}
|imp.p.1p = {{{imp.p.1p}}}
|imp.p.2p = {{{imp.p.2p}}}
|ind.p.1s.alt = {{{ind.p.1s.alt}}}
|ind.p.2s.alt = {{{ind.p.2s.alt}}}
|ind.p.3s.alt = {{{ind.p.3s.alt}}}
|ind.p.1p.alt = {{{ind.p.1p.alt}}}
|ind.p.2p.alt = {{{ind.p.2p.alt}}}
|ind.p.3p.alt = {{{ind.p.3p.alt}}}
|ind.i.1s.alt = {{{ind.i.1s.alt}}}
|ind.i.2s.alt = {{{ind.i.2s.alt}}}
|ind.i.3s.alt = {{{ind.i.3s.alt}}}
|ind.i.1p.alt = {{{ind.i.1p.alt}}}
|ind.i.2p.alt = {{{ind.i.2p.alt}}}
|ind.i.3p.alt = {{{ind.i.3p.alt}}}
|ind.ps.1s.alt = {{{ind.ps.1s.alt}}}
|ind.ps.2s.alt = {{{ind.ps.2s.alt}}}
|ind.ps.3s.alt = {{{ind.ps.3s.alt}}}
|ind.ps.1p.alt = {{{ind.ps.1p.alt}}}
|ind.ps.2p.alt = {{{ind.ps.2p.alt}}}
|ind.ps.3p.alt = {{{ind.ps.3p.alt}}}
|ind.f.1s.alt = {{{ind.f.1s.alt}}}
|ind.f.2s.alt = {{{ind.f.2s.alt}}}
|ind.f.3s.alt = {{{ind.f.3s.alt}}}
|ind.f.1p.alt = {{{ind.f.1p.alt}}}
|ind.f.2p.alt = {{{ind.f.2p.alt}}}
|ind.f.3p.alt = {{{ind.f.3p.alt}}}
|cond.p.1s.alt = {{{cond.p.1s.alt}}}
|cond.p.2s.alt = {{{cond.p.2s.alt}}}
|cond.p.3s.alt = {{{cond.p.3s.alt}}}
|cond.p.1p.alt = {{{cond.p.1p.alt}}}
|cond.p.2p.alt = {{{cond.p.2p.alt}}}
|cond.p.3p.alt = {{{cond.p.3p.alt}}}
|sub.p.1s.alt = {{{sub.p.1s.alt}}}
|sub.p.2s.alt = {{{sub.p.2s.alt}}}
|sub.p.3s.alt = {{{sub.p.3s.alt}}}
|sub.p.1p.alt = {{{sub.p.1p.alt}}}
|sub.p.2p.alt = {{{sub.p.2p.alt}}}
|sub.p.3p.alt = {{{sub.p.3p.alt}}}
|sub.pa.1s.alt = {{{sub.pa.1s.alt}}}
|sub.pa.2s.alt = {{{sub.pa.2s.alt}}}
|sub.pa.3s.alt = {{{sub.pa.3s.alt}}}
|sub.pa.1p.alt = {{{sub.pa.1p.alt}}}
|sub.pa.2p.alt = {{{sub.pa.2p.alt}}}
|sub.pa.3p.alt = {{{sub.pa.3p.alt}}}
|imp.p.2s.alt = {{{imp.p.2s.alt}}}
|imp.p.1p.alt = {{{imp.p.1p.alt}}}
|imp.p.2p.alt = {{{imp.p.2p.alt}}}
}}
The auxiliary verb is set with aux.
Avoid using ger.override, inf.override, and ger.comp.override unless strictly necessary, as they are normally filled automatically.
<includeonly>
{{module cat|fr}}
</includeonly>
c7f5zphkjhdeq9gtcjhknfxehdsk5cr
gräver
0
296280
397635
2026-06-28T05:51:50Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|graver}} ==သွဳဒေန်== ===ကြိယာ=== {{head|sv|verb form}} # {{verb form of|sv|gräva||pres|ind}}"
397635
wikitext
text/x-wiki
{{also|graver}}
==သွဳဒေန်==
===ကြိယာ===
{{head|sv|verb form}}
# {{verb form of|sv|gräva||pres|ind}}
bnj9vc9m4r1ewgf5jeimbj79b752ywl
gräva
0
296281
397636
2026-06-28T05:58:14Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|grava|gravá|gravà}} ==သွဳဒေန်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|sv|gmq-osw|grava}}, {{m|gmq-osw|græva}}၊ နကဵုအဆက်နူ {{inh|sv|non|grafa}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|sv|gem-pro|*grabaną}}၊ နူအဆက်နကဵု {{der|sv|ine-pro|*gʰrābʰ-}} ===ဗွဟ်ရမ္သာၚ်=== * {{audio|s..."
397636
wikitext
text/x-wiki
{{also|grava|gravá|gravà}}
==သွဳဒေန်==
===နိရုတ်===
ဝေါဟာကၠုၚ်နူ {{inh|sv|gmq-osw|grava}}, {{m|gmq-osw|græva}}၊ နကဵုအဆက်နူ {{inh|sv|non|grafa}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|sv|gem-pro|*grabaną}}၊ နူအဆက်နကဵု {{der|sv|ine-pro|*gʰrābʰ-}}
===ဗွဟ်ရမ္သာၚ်===
* {{audio|sv|Sv-gräva.ogg}}
===ကြိယာ===
{{sv-verb-reg|gräv|er|de}}
# သကဵုခါဲ။
# သကဵုခါဲအပ္ဍဲတေံ၊ သကဵုခ္ဍာ် (မသ္ပသုတေသန)။
====သမ္ဗန္ဓ====
{{sv-conj-wk|gräv}}
{{sv-conj-st|class=6|gräv|grov|gräv|note=archaic}}
6o2k7cyt09oo5u3ftsz0jk5um34s37t
ထာမ်ပလိက်:sv-conj-wk
10
296282
397637
2026-06-28T05:59:41Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:sv-verbs|show|weak}}<noinclude>{{documentation}}</noinclude>"
397637
wikitext
text/x-wiki
{{#invoke:sv-verbs|show|weak}}<noinclude>{{documentation}}</noinclude>
ge1t424wabucmb7br8s14gzft5hv0rh
ထာမ်ပလိက်:sv-conj-wk/documentation
10
296283
397638
2026-06-28T06:01:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template creates a conjugation table for Swedish regular weak verbs. It is usable for most verbs. For strong verbs, use {{temp|sv-conj-st}} instead. ==Parameters== Numbered parameters: * <tt>1=</tt> The basic stem of the verb. ** Leave this empty for verbs with a present tense in -ar, whose stem is identical to the infinitive. * <tt>2=</tt> The past stem of the verb. ** This is needed..."
397638
wikitext
text/x-wiki
{{documentation subpage}}
This template creates a conjugation table for Swedish regular weak verbs. It is usable for most verbs. For strong verbs, use {{temp|sv-conj-st}} instead.
==Parameters==
Numbered parameters:
* <tt>1=</tt> The basic stem of the verb.
** Leave this empty for verbs with a present tense in -ar, whose stem is identical to the infinitive.
* <tt>2=</tt> The past stem of the verb.
** This is needed for verbs that have umlaut in the present but not in the past.
** If not specified, uses present stem.
Named parameters:
* <tt>end=</tt> The type of ending consonant of the stem.
** <tt>end=vl</tt> If the stem ends in a '''v'''oice'''l'''ess consonant. The past tense ends in -te rather than -de.
** <tt>end=vw</tt> If the stem is a single syllable that ends in a '''v'''o'''w'''el.
** <tt>end=dj</tt> If the infinitive ends in -dja. The first parameter should only contain -d. The present tense can be both -der and -djer, the passive present both -des and -djes.
** <tt>end=fv</tt> For a stem ending in -f, add -ver to emulate obsolete spelling used before 1906.
** <tt>end=mm</tt> / <tt>end=nn</tt> If the infinitive ends in -mma or -nna. The first parameter should contain only one -m or -n.
** <tt>end=r</tt> If the stem ends in -r. The present tense lacks the -er that is otherwise present.
** <tt>end=s</tt> If the stem ends in -s. The passive form does not have the form with -s, only -es.
** <tt>end=t</tt> / <tt>end=d</tt> If the stem ends in -t or -d preceded by another consonant. The past tense and supine do not get an additional -t or -d.
** If not specified, behaviour depends on the presence of the first parameter. If present, the verb is assumed to have a present in -er and a past tense in -de. If not, the verb is assumed to have a present in -ar and a past tense in -ade.
* <tt>full=</tt> The full infinitive of the verb.
** For short contracted verbs such as [[ha]], this specifies the full uncontracted infinitive.
** If not specified, defaults to the headword/page name.
* <tt>past=</tt> The past tense form.
** This is needed for some verbs where the general pattern doesn't apply (e.g. begynna).
** If not specified, uses stem + de, dde, te or tte.
* <tt>sup=</tt> The supine form.
** This is needed for verbs that have stems ending in -d, which assimilates to the -t of the supine.
** If not specified, uses past stem+t or +tt.
* <tt>pl=</tt> The (archaic) present indicative plural form.
** If not specified, uses the infinitive form.
* <tt>ppl=</tt> The (archaic) past indicative plural form.
** If not specified, uses the past form.
* <tt>sbj=</tt> The (archaic) present subjunctive form.
** If not specified, uses the present stem +e.
* <tt>psbj=</tt> The (dated) past subjunctive form.
** If not specified, uses the past form.
* <tt>prepart=</tt> Overrides the generated present participle form.
* <tt>pp=</tt> Overrides the generated past participle form.
* <tt>noa=1</tt> This verb has no active forms.
* <tt>nop=1</tt> This verb has no passive forms.
* <tt>noprepart=1</tt> This verb has no present participle form.
* <tt>nopp=1</tt> This verb has no past participle form.
* <tt>head=</tt> : The headword/infinitive.
** Defaults to the current page name.
* <tt>particle=</tt> For [[Appendix:Swedish phrasal verbs|phrasal verbs]] like {{m|sv|blåsa upp}}, use <tt>head=blåsa|particle=upp</tt>
* <tt>particle2=</tt> For phrasal verbs where triple consonant sequences must be avoided, such as {{m|sv|lägga till}}, use <tt>head=lägga|particle=till|particle2=til</tt>
For parameters that specify forms, multiple forms can be given separated by commas.
==Notes==
This template uses [[Module:sv-verbs]] internally.
==Usage==
===Normal weak verbs===
For a simple regular verb in -ar, no parameters are necessary.
'''On the page [[kalla]]:'''
* <tt><nowiki>{{sv-conj-wk}}</nowiki></tt>
{{sv-conj-wk|head=kalla}}
For a regular verb in -er and a past tense in -de, only the first numbered parameter is enough.
'''On the page [[stänga]]:'''
* <tt><nowiki>{{sv-conj-wk|stäng}}</nowiki></tt>
{{sv-conj-wk|head=stänga|stäng}}
For verbs in -er with a past tense in -te, you need to add <tt>end=vl</tt>.
'''On the page [[knäppa]]:'''
* <tt><nowiki>{{sv-conj-wk|knäpp|end=vl}}</nowiki></tt>
{{sv-conj-wk|head=knäppa|knäpp|end=vl}}
===Verbs in -d and -t===
Verbs with stems ending in -t and -d preceded by a consonant do not get an additional -t or -d in the past tense. Specify that with <tt>end=t</tt> and <tt>end=d</tt> respectively.
'''On the page [[smälta]]:'''
* <tt><nowiki>{{sv-conj-wk|smält|end=t}}</nowiki></tt>
{{sv-conj-wk|head=smälta|smält|end=t}}
In verbs with stems ending in -d, the final -d also assimilates to the -t of the supine form, giving -tt or -t when a consonant precedes. In this case, the supine form should be specified using the <tt>sup=</tt> parameter.
'''On the page [[betyda]]:'''
* <tt><nowiki>{{sv-conj-wk|betyd|sup=betytt}}</nowiki></tt>
{{sv-conj-wk|head=betyda|betyd|sup=betytt}}
'''On the page [[sända]]:'''
* <tt><nowiki>{{sv-conj-wk|sänd|sup=sänt|end=d}}</nowiki></tt>
{{sv-conj-wk|head=sända|sänd|sup=sänt|end=d}}
===Verbs in -r===
Verbs with stems in -r do not get an additional -er in the present tense. Specify this with <tt>end=r</tt>.
'''On the page [[höra]]:'''
* <tt><nowiki>{{sv-conj-wk|hör|end=r}}</nowiki></tt>
{{sv-conj-wk|head=höra|hör|end=r}}
===Verbs in -s===
Verbs with stems in -s do not have the passive ending -s, only -es. Specify this with <tt>end=s</tt>.
'''On the page [[läsa]]:'''
* <tt><nowiki>{{sv-conj-wk|läs|end=s}}</nowiki></tt>
{{sv-conj-wk|head=läsa|läs|end=s}}
===Verbs in -mm and -nn===
Verbs with stems in -mm and -nn drop one -m/n in their regular stem. These are then specified with <tt>end=mm</tt> or <tt>end=nn</tt>.
'''On the page [[glömma]]:'''
* <tt><nowiki>{{sv-conj-wk|glöm|end=mm}}</nowiki></tt>
{{sv-conj-wk|head=glömma|glöm|end=mm}}
'''On the page [[känna]]:'''
* <tt><nowiki>{{sv-conj-wk|kän|end=nn}}</nowiki></tt>
{{sv-conj-wk|head=känna|kän|end=nn}}
'''On the page [[begynna]]:'''
* <tt><nowiki>{{sv-conj-wk|begyn|past=begynte|end=nn}}</nowiki></tt>
{{sv-conj-wk|head=begynna|begyn|past=begynte|end=nn}}
===Verbs in -dj===
'''On the page [[glädja]]:'''
* <tt><nowiki>{{sv-conj-wk|gläd|glad|sup=glatt|end=dj}}</nowiki></tt>
{{sv-conj-wk|head=glädja|gläd|glad|sup=glatt|end=dj}}
===Short stems===
Verbs with single-syllable stems ending in a vowel behave somewhat differently. These are specified with <tt>end=vw</tt>.
'''On the page [[sy]]:'''
* <tt><nowiki>{{sv-conj-wk|sy|sy|end=vw}}</nowiki></tt>
{{sv-conj-wk|head=sy|sy|end=vw}}
===Stem-changing verbs===
A few verbs have a different stem in the past than they do in the present. For these, the second numbered parameter is used to specify the past stem.
'''On the page [[sälja]]:'''
* <tt><nowiki>{{sv-conj-wk|sälj|sål}}</nowiki></tt>
{{sv-conj-wk|head=sälja|sälj|sål}}
'''On the page [[göra]]:'''
* <tt><nowiki>{{sv-conj-wk|gör|gjor|end=r}}</nowiki></tt>
{{sv-conj-wk|head=göra|gör|gjor|end=r}}
'''On the page [[sätta]]:'''
* <tt><nowiki>{{sv-conj-wk|sätt|satt|end=t}}</nowiki></tt>
{{sv-conj-wk|head=sätta|sätt|satt|end=t}}
'''On the page [[lägga]]:'''
* <tt><nowiki>{{sv-conj-wk|lägg|lag|past=lade}}</nowiki></tt>
{{sv-conj-wk|head=lägga|lägg|lag|past=lade}}
For lägga, parameter 2 is the basis for supine (lag-t) and past participle (lag-d), but the past tense would become lag-de unless past= was specified.
<!-- '''On the page [[ge]]:'''
* <tt><nowiki>{{sv-conj-wk|past=gav|end=vw|noprepart=1|nopp=1}}</nowiki></tt>
{{sv-conj-wk|head=ge|past=gav|end=vw|noprepart=1|nopp=1}}
For ge, there is also a strong conjugation (giva, giver, gav, givit), from where the present and past participle (givande, given) are taken. The weak participles (geende, gedd) are not accepted as correct.
-->
===Active-only verbs===
Many verbs have only active forms, no passives. Use the <tt>nop=1</tt> parameter for these.
'''On the page [[dröja]]:'''
* <tt><nowiki>{{sv-conj-wk|dröj|nop=1|nopp=1}}</nowiki></tt>
{{sv-conj-wk|head=dröja|dröj|nop=1|nopp=1}}
===Passive-only (depondent) verbs===
Some verbs have only passive forms. Use the <tt>noa=1</tt> parameter for these.
'''On the page [[andas]]:'''
* <tt><nowiki>{{sv-conj-wk|noa=1}}</nowiki></tt>
{{sv-conj-wk|head=andas|noa=1}}
==See also==
* {{temp|sv-conj-st}}
* {{temp|sv-conj-irreg}}
<includeonly>[[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဂမၠိုၚ်|conj-wk]]</includeonly>
ozq6pcuegci8qs90yqnv1skf8w94s2w
မဝ်ဂျူ:sv-verbs
828
296284
397639
2026-06-28T06:14:33Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local m_utilities = require("Module:utilities") local m_links = require("Module:links") local export = {} local lang = require("Module:languages").getByCode("sv") local vowel = "[aeiouyåäö]" local consonant = "[bcdfghjklmnpqrstvwxz]" local inflections = {} local function postprocess(args, data) if args["noa"] then for key, form in pairs(data.forms) do if (key:find("actv$")) then data.forms[key] = nil..."
397639
Scribunto
text/plain
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("sv")
local vowel = "[aeiouyåäö]"
local consonant = "[bcdfghjklmnpqrstvwxz]"
local inflections = {}
local function postprocess(args, data)
if args["noa"] then
for key, form in pairs(data.forms) do
if (key:find("actv$")) then
data.forms[key] = nil
end
end
-- default handling of participles for passive-only verbs
if not args["prepart"] then
for key, form in pairs(data.forms) do
if key == "prespart" then
for i, subform in ipairs(form) do
form[i] = form[i] .. "s"
end
end
end
end
if not args["pp"] then
data.forms["pastpart"] = nil
end
else
-- only deponent verbs have passive imperative forms
data.forms["imppasv"] = nil
data.forms["impppasv"] = nil
end
if args["nop"] then
for key, form in pairs(data.forms) do
if (key:find("pasv$")) then
data.forms[key] = nil
end
end
end
if args["noprepart"] then
data.forms["prespart"] = nil
end
if args["nopp"] then
data.forms["pastpart"] = nil
end
-- add particle to participles; it is added separately for the table later
if args["particle"] or args["particle2"] then
data.particle = args["particle"]
table.insert(data.categories, "Swedish phrasal verbs")
local part = args["particle2"] or args["particle"] or ""
for key, form in pairs(data.forms) do
if key == "prespart" or key == "pastpart" then
for i, subform in ipairs(form) do
form[i] = part .. form[i]
end
end
end
end
if args["note"] and data.definitions and data.definitions:find("%)$") then
data.definitions = mw.ustring.sub(data.definitions, 1, mw.ustring.len(data.definitions) - 1) .. ", " .. args["note"] .. ")"
end
end
local function convert_to_accel(form)
-- no accel for now
return nil
end
-- Make the table
local function make_table(data)
local function show_form(form, accel, show_particle)
if not form then
return "—"
elseif type(form) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
end
local ret = {}
local part = ""
if show_particle and data.particle then
part = " " .. m_links.full_link({lang = lang, term = data.particle})
end
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = accel and { ["form"] = accel } or nil}) .. part)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "head" then
return data.particle and (data.head .. " " .. data.particle) or data.head
elseif param == "definitions" then
return data.definitions
else
return show_form(data.forms[param], convert_to_accel(param), param ~= "prespart" and param ~= "pastpart")
end
end
local wikicode = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'သမ္ဗန္ဓဆေၚ်စပ်ကဵု ' ..
mw.getCurrentFrame():expandTemplate{title = "m", args = {"sv", "", data.head}} .. ' {{{definitions}}}',
palette = 'indigo',
tall = 'yes',
}
} .. [=[
! class="outer" |
! colspan=2 class="outer" | မစိုပ်တရဴ
! colspan=2 class="outer" | ဟွံတဝ်စၞေဟ်
|-
! ကြိယာဟွံကၠောံ
| colspan=2 | {{{infactv}}}
| colspan=2 | {{{infpasv}}}
|-
! ဂၠဝ်
| colspan=2 | {{{supactv}}}
| colspan=2 | {{{suppasv}}}
|-
! ပါဲဗလေတ်ဟွံဗၠး
| colspan=2 | {{{impactv}}}
| colspan=2 | {{{imppasv}}}
|-
! ''imper. plural''<sup>၁</sup>
| colspan=2 | {{{imppactv}}}
| colspan=2 | {{{impppasv}}}
|-
!
! ပစ္စုပ္ပန်
! အတိက်
! ပစ္စုပ္ပန်
! အတိက်
|-
! indicative
| {{{indpresactv}}}
| {{{indpastactv}}}
| {{{indprespasv}}}
| {{{indpastpasv}}}
|-
! ''ind. plural''<sup>၁</sup>
| {{{indppresactv}}}
| {{{indppastactv}}}
| {{{indpprespasv}}}
| {{{indppastpasv}}}
|-
! ''subjunctive''<sup>၂</sup>
| {{{subjpresactv}}}
| {{{subjpastactv}}}
| {{{subjprespasv}}}
| {{{subjpastpasv}}}
|-
| colspan="3" class="separator" |
| colspan="2" class="separator" style="border-bottom:0" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်
| {{{prespart}}}
| colspan=2 rowspan=2 class="blank-end-row" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်
| {{{pastpart}}}
]=] .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '<sup>၁</sup> Archaic. <sup>၂</sup> Dated. ' ..
'ဗဵုရံၚ် [[အဆက်လက္ကရဴ:ကြိယာသွဳဒေန်ဂမၠိုၚ်#Dated and archaic forms|ဆေၚ်စပ်ကဵုအဆက်လက္ကရဴလ္တူကြိယာသွဳဒေန်ဂမၠိုၚ်]]။'
}
}
return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local infl_type = frame.args[1] or error("Inflection type has not been specified. Please pass parameter 1 to the module invocation")
local args = frame:getParent().args
if not inflections[infl_type] then
error("Unknown inflection type '" .. infl_type .. "'")
end
local data = {head = args["head"] or mw.loadData("Module:headword/data").pagename, definitions = "", forms = {}, categories = {}}
-- Generate the forms
inflections[infl_type](args, data)
-- Postprocess
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
local function split_multi(forms)
if not forms or forms == "" or forms == "-" then
return nil
end
return mw.text.split(forms, ",")
end
--[=[
Inflection functions
]=]--
local function make_passive(forms)
local pasv = {}
for i, subform in ipairs(forms) do
table.insert(pasv, subform .. "s")
end
return pasv
end
local weak_present_endings = {
["r"] = "",
["a"] = "r",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local weak_past_endings = {
["t"] = "",
["d"] = "",
["s"] = "t",
["vl"] = "t",
["vw"] = "dd"
}
local weak_sup_endings = {
["t"] = "",
["vw"] = "tt"
}
local weak_part_endings = {
["vw"] = "ende"
}
local weak_prespasv_endings1 = {
["nn"] = "ns"
}
local weak_prespasv_endings2 = {
["fv"] = "ves",
["mm"] = "mes",
["nn"] = "nes"
}
local weak_subj_endings = {
["mm"] = "me",
["nn"] = "ne"
}
local weak_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_weak_present_form(stem, endc)
local result = {stem .. (weak_present_endings[endc] or "er")}
if endc == "dj" then
table.insert(result, stem .. "jer")
end
return result
end
local function make_weak_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
inflections["weak"] = function(args, data)
data.definitions = "(weak)"
table.insert(data.categories, "Swedish weak verbs")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local basic = args[1] or head
local past = args[2] or basic
local full = args["full"] or head
local endc = args["end"] or (args[1] and "" or "a")
local bare = basic
local vowelstem = mw.ustring.find(basic, vowel .. "$")
if endc == "a" then
bare = mw.ustring.sub(bare, 1, mw.ustring.len(bare) - 1)
vowelstem = false
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = make_weak_present_form(basic, endc)
data.forms["indpastactv"] = args["past"] and split_multi(args["past"]) or {past .. (weak_past_endings[endc] or "d") .. "e"}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {past .. (weak_sup_endings[endc] or "t")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {basic .. ((endc == "nn") and "n" or "")}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {bare .. (weak_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. (not args["full"] and weak_part_endings[endc] or "nde")}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {past .. (weak_past_endings[endc] or "d")}
data.forms["indppresactv"] = data.forms["infactv"]
data.forms["indppastactv"] = data.forms["indpastactv"]
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or (vowelstem and data.forms["infactv"] or {bare .. (weak_subj_endings[endc] or "e")})
data.forms["subjpastactv"] = data.forms["indpastactv"]
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_weak_prespasv_form(basic, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = data.forms["infpasv"]
data.forms["indppastpasv"] = data.forms["indpastpasv"]
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = data.forms["indpastpasv"]
end
local strong_pres_endings = {
["r"] = "",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local strong_sup_endings = {
["fv"] = "vit",
["mm"] = "mit",
["nn"] = "nit"
}
local strong_pastpart_endings = {
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local strong_subj_endings = {
["vw"] = "",
["fv"] = "ve",
["mm"] = "me",
["nn"] = "ne"
}
local strong_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_strong_ppl_stem(class, endc, past, sup)
local base
if class == "3" or class == "4" then
base = sup
else
base = past
end
if endc == "mm" then
base = base .. "m"
elseif endc == "nn" then
base = base .. "n"
end
return base
end
local function make_strong_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
local function get_final_vowel(stem)
return mw.ustring.match(stem, ".*(" .. vowel .. ")")
end
local function try_detect_strong_class(pres, past, sup, endc)
local presv = get_final_vowel(pres)
local pastv = get_final_vowel(past)
local supv = get_final_vowel(sup)
if supv == "i" or supv == "ä" or supv == "e" then
if supv == "i" and pastv == "e" and presv == "i" then
return "1"
elseif (pastv == "a" or pastv == "å") and (presv == "e" or presv == "i" or presv == "ä") then
return "5"
end
elseif supv == "u" then
if pastv == "ö" and (presv == "u" or presv == "y") then
return "2"
elseif pastv == "a" then
if presv == "i" then
return "3"
elseif presv == "e" or presv == "ä" then
if pres:find(consonant .. consonant .. "$") then
return "3"
else
return "4"
end
end
end
elseif supv == "a" or supv == "å" then
if supv == "a" and pastv == "o" and presv == "a" then
return "6"
elseif (pastv == "ö" or pastv == "ä") and (presv == "å" or presv == "a") then
return "7"
end
end
return nil
end
inflections["strong"] = function(args, data)
table.insert(data.categories, "ကြိယာသွဳဒေန်မခိုၚ်ကၠိုက်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local endc = args["end"] or ""
local pres = args[1] or error("At least 3 arguments required for strong verb inflections (missing present stem)")
local past = args[2] or error("At least 3 arguments required for strong verb inflections (missing past stem)")
local sup = args[3]
-- it's fine to not specify the supine stem if supine and pp forms are manually given
if not sup and (not args["sup"] or not (args["pp"] or args["nopp"])) then
error("At least 3 arguments required for strong verb inflections (missing supine stem; alternatively specify supine and past participle forms manually)")
elseif not sup then
sup = mw.ustring.sub(args["sup"], 1, mw.ustring.len(args["sup"]) - 1)
end
local class = args["class"] or try_detect_strong_class(pres, past, sup, endc)
local full = args["full"] or (head .. (endc == "vw" and "e" or ""))
local ppl = args["ppl"] or make_strong_ppl_stem(class, endc, past, sup)
if class then
table.insert(data.categories, "Swedish class " .. class .. " strong verbs")
data.definitions = "(class " .. class .. " strong)"
else
data.definitions = "(strong)"
end
if class == "5" then -- for class 5, replace final -a- with -å- in plural/subjunctive stem
ppl = mw.ustring.gsub(ppl, "(.*)a(.*)", "%1å%2")
end
if endc == "fv" and ppl:find("f$") then
ppl = ppl .. "v"
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = {pres .. (strong_pres_endings[endc] or "er")}
data.forms["indpastactv"] = {past}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {sup .. (strong_sup_endings[endc] or "it")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {pres}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {pres .. (strong_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. "nde"}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {sup .. (strong_pastpart_endings[endc] or "en")}
data.forms["indppresactv"] = args["pl"] and split_multi(args["pl"]) or data.forms["infactv"]
data.forms["indppastactv"] = {ppl .. "o"}
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or {pres .. (strong_subj_endings[endc] or "e")}
data.forms["subjpastactv"] = args["psbj"] and split_multi(args["psbj"]) or {ppl .. "e"}
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_strong_prespasv_form(pres, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = make_passive(data.forms["indppresactv"])
data.forms["indppastpasv"] = make_passive(data.forms["indppastactv"])
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = make_passive(data.forms["subjpastactv"])
end
inflections["irreg"] = function(args, data)
table.insert(data.categories, "ကြိယာအတိုၚ်ပကတိဟွံသေၚ်နကဵုဘာသာသွဳဒေန်ဂမၠိုၚ်")
data.definitions = "(irregular)"
data.forms["infactv"] = split_multi(args[1])
data.forms["indpresactv"] = split_multi(args[2])
data.forms["indpastactv"] = split_multi(args[3])
data.forms["supactv"] = split_multi(args[4])
data.forms["impactv"] = split_multi(args[5])
data.forms["imppactv"] = split_multi(args["impp"])
data.forms["prespart"] = split_multi(args[6])
data.forms["pastpart"] = split_multi(args[7])
data.forms["indppresactv"] = split_multi(args["pl"])
data.forms["indppastactv"] = split_multi(args["ppl"])
data.forms["subjpresactv"] = split_multi(args["sbj"])
data.forms["subjpastactv"] = split_multi(args["psbj"])
end
return export
jrxmirxbmywgyb7eg89ak35gt0lowty
397641
397639
2026-06-28T06:21:27Z
咽頭べさ
33
397641
Scribunto
text/plain
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("sv")
local vowel = "[aeiouyåäö]"
local consonant = "[bcdfghjklmnpqrstvwxz]"
local inflections = {}
local function postprocess(args, data)
if args["noa"] then
for key, form in pairs(data.forms) do
if (key:find("actv$")) then
data.forms[key] = nil
end
end
-- default handling of participles for passive-only verbs
if not args["prepart"] then
for key, form in pairs(data.forms) do
if key == "prespart" then
for i, subform in ipairs(form) do
form[i] = form[i] .. "s"
end
end
end
end
if not args["pp"] then
data.forms["pastpart"] = nil
end
else
-- only deponent verbs have passive imperative forms
data.forms["imppasv"] = nil
data.forms["impppasv"] = nil
end
if args["nop"] then
for key, form in pairs(data.forms) do
if (key:find("pasv$")) then
data.forms[key] = nil
end
end
end
if args["noprepart"] then
data.forms["prespart"] = nil
end
if args["nopp"] then
data.forms["pastpart"] = nil
end
-- add particle to participles; it is added separately for the table later
if args["particle"] or args["particle2"] then
data.particle = args["particle"]
table.insert(data.categories, "Swedish phrasal verbs")
local part = args["particle2"] or args["particle"] or ""
for key, form in pairs(data.forms) do
if key == "prespart" or key == "pastpart" then
for i, subform in ipairs(form) do
form[i] = part .. form[i]
end
end
end
end
if args["note"] and data.definitions and data.definitions:find("%)$") then
data.definitions = mw.ustring.sub(data.definitions, 1, mw.ustring.len(data.definitions) - 1) .. ", " .. args["note"] .. ")"
end
end
local function convert_to_accel(form)
-- no accel for now
return nil
end
-- Make the table
local function make_table(data)
local function show_form(form, accel, show_particle)
if not form then
return "—"
elseif type(form) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
end
local ret = {}
local part = ""
if show_particle and data.particle then
part = " " .. m_links.full_link({lang = lang, term = data.particle})
end
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = accel and { ["form"] = accel } or nil}) .. part)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "head" then
return data.particle and (data.head .. " " .. data.particle) or data.head
elseif param == "definitions" then
return data.definitions
else
return show_form(data.forms[param], convert_to_accel(param), param ~= "prespart" and param ~= "pastpart")
end
end
local wikicode = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'သမ္ဗန္ဓဆေၚ်စပ်ကဵု ' ..
mw.getCurrentFrame():expandTemplate{title = "m", args = {"sv", "", data.head}} .. ' {{{definitions}}}',
palette = 'indigo',
tall = 'yes',
}
} .. [=[
! class="outer" |
! colspan=2 class="outer" | မစိုပ်တရဴ
! colspan=2 class="outer" | ဟွံတဝ်စၞေဟ်
|-
! ကြိယာဟွံကၠောံ
| colspan=2 | {{{infactv}}}
| colspan=2 | {{{infpasv}}}
|-
! ဂၠဝ်
| colspan=2 | {{{supactv}}}
| colspan=2 | {{{suppasv}}}
|-
! ပါဲဗလေတ်ဟွံဗၠး
| colspan=2 | {{{impactv}}}
| colspan=2 | {{{imppasv}}}
|-
! ''ပါဲဗလေတ်ဟွံဗၠး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| colspan=2 | {{{imppactv}}}
| colspan=2 | {{{impppasv}}}
|-
!
! ပစ္စုပ္ပန်
! အတိက်
! ပစ္စုပ္ပန်
! အတိက်
|-
! စၞောန်ထ္ၜး
| {{{indpresactv}}}
| {{{indpastactv}}}
| {{{indprespasv}}}
| {{{indpastpasv}}}
|-
! ''စၞောန်ထ္ၜး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| {{{indppresactv}}}
| {{{indppastactv}}}
| {{{indpprespasv}}}
| {{{indppastpasv}}}
|-
! ''အရေဝ်နိဒါန်''<sup>၂</sup>
| {{{subjpresactv}}}
| {{{subjpastactv}}}
| {{{subjprespasv}}}
| {{{subjpastpasv}}}
|-
| colspan="3" class="separator" |
| colspan="2" class="separator" style="border-bottom:0" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်
| {{{prespart}}}
| colspan=2 rowspan=2 class="blank-end-row" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်
| {{{pastpart}}}
]=] .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '<sup>၁</sup> ခေတ်တြေံ။ <sup>၂</sup> ခေတ်အိုတ်။ ' ..
'ဗဵုရံၚ် [[အဆက်လက္ကရဴ:ကြိယာသွဳဒေန်ဂမၠိုၚ်#Dated and archaic forms|ဆေၚ်စပ်ကဵုအဆက်လက္ကရဴလ္တူကြိယာသွဳဒေန်ဂမၠိုၚ်]]။'
}
}
return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local infl_type = frame.args[1] or error("Inflection type has not been specified. Please pass parameter 1 to the module invocation")
local args = frame:getParent().args
if not inflections[infl_type] then
error("Unknown inflection type '" .. infl_type .. "'")
end
local data = {head = args["head"] or mw.loadData("Module:headword/data").pagename, definitions = "", forms = {}, categories = {}}
-- Generate the forms
inflections[infl_type](args, data)
-- Postprocess
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
local function split_multi(forms)
if not forms or forms == "" or forms == "-" then
return nil
end
return mw.text.split(forms, ",")
end
--[=[
Inflection functions
]=]--
local function make_passive(forms)
local pasv = {}
for i, subform in ipairs(forms) do
table.insert(pasv, subform .. "s")
end
return pasv
end
local weak_present_endings = {
["r"] = "",
["a"] = "r",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local weak_past_endings = {
["t"] = "",
["d"] = "",
["s"] = "t",
["vl"] = "t",
["vw"] = "dd"
}
local weak_sup_endings = {
["t"] = "",
["vw"] = "tt"
}
local weak_part_endings = {
["vw"] = "ende"
}
local weak_prespasv_endings1 = {
["nn"] = "ns"
}
local weak_prespasv_endings2 = {
["fv"] = "ves",
["mm"] = "mes",
["nn"] = "nes"
}
local weak_subj_endings = {
["mm"] = "me",
["nn"] = "ne"
}
local weak_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_weak_present_form(stem, endc)
local result = {stem .. (weak_present_endings[endc] or "er")}
if endc == "dj" then
table.insert(result, stem .. "jer")
end
return result
end
local function make_weak_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
inflections["weak"] = function(args, data)
data.definitions = "(weak)"
table.insert(data.categories, "Swedish weak verbs")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local basic = args[1] or head
local past = args[2] or basic
local full = args["full"] or head
local endc = args["end"] or (args[1] and "" or "a")
local bare = basic
local vowelstem = mw.ustring.find(basic, vowel .. "$")
if endc == "a" then
bare = mw.ustring.sub(bare, 1, mw.ustring.len(bare) - 1)
vowelstem = false
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = make_weak_present_form(basic, endc)
data.forms["indpastactv"] = args["past"] and split_multi(args["past"]) or {past .. (weak_past_endings[endc] or "d") .. "e"}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {past .. (weak_sup_endings[endc] or "t")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {basic .. ((endc == "nn") and "n" or "")}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {bare .. (weak_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. (not args["full"] and weak_part_endings[endc] or "nde")}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {past .. (weak_past_endings[endc] or "d")}
data.forms["indppresactv"] = data.forms["infactv"]
data.forms["indppastactv"] = data.forms["indpastactv"]
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or (vowelstem and data.forms["infactv"] or {bare .. (weak_subj_endings[endc] or "e")})
data.forms["subjpastactv"] = data.forms["indpastactv"]
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_weak_prespasv_form(basic, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = data.forms["infpasv"]
data.forms["indppastpasv"] = data.forms["indpastpasv"]
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = data.forms["indpastpasv"]
end
local strong_pres_endings = {
["r"] = "",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local strong_sup_endings = {
["fv"] = "vit",
["mm"] = "mit",
["nn"] = "nit"
}
local strong_pastpart_endings = {
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local strong_subj_endings = {
["vw"] = "",
["fv"] = "ve",
["mm"] = "me",
["nn"] = "ne"
}
local strong_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_strong_ppl_stem(class, endc, past, sup)
local base
if class == "3" or class == "4" then
base = sup
else
base = past
end
if endc == "mm" then
base = base .. "m"
elseif endc == "nn" then
base = base .. "n"
end
return base
end
local function make_strong_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
local function get_final_vowel(stem)
return mw.ustring.match(stem, ".*(" .. vowel .. ")")
end
local function try_detect_strong_class(pres, past, sup, endc)
local presv = get_final_vowel(pres)
local pastv = get_final_vowel(past)
local supv = get_final_vowel(sup)
if supv == "i" or supv == "ä" or supv == "e" then
if supv == "i" and pastv == "e" and presv == "i" then
return "1"
elseif (pastv == "a" or pastv == "å") and (presv == "e" or presv == "i" or presv == "ä") then
return "5"
end
elseif supv == "u" then
if pastv == "ö" and (presv == "u" or presv == "y") then
return "2"
elseif pastv == "a" then
if presv == "i" then
return "3"
elseif presv == "e" or presv == "ä" then
if pres:find(consonant .. consonant .. "$") then
return "3"
else
return "4"
end
end
end
elseif supv == "a" or supv == "å" then
if supv == "a" and pastv == "o" and presv == "a" then
return "6"
elseif (pastv == "ö" or pastv == "ä") and (presv == "å" or presv == "a") then
return "7"
end
end
return nil
end
inflections["strong"] = function(args, data)
table.insert(data.categories, "ကြိယာသွဳဒေန်မခိုၚ်ကၠိုက်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local endc = args["end"] or ""
local pres = args[1] or error("At least 3 arguments required for strong verb inflections (missing present stem)")
local past = args[2] or error("At least 3 arguments required for strong verb inflections (missing past stem)")
local sup = args[3]
-- it's fine to not specify the supine stem if supine and pp forms are manually given
if not sup and (not args["sup"] or not (args["pp"] or args["nopp"])) then
error("At least 3 arguments required for strong verb inflections (missing supine stem; alternatively specify supine and past participle forms manually)")
elseif not sup then
sup = mw.ustring.sub(args["sup"], 1, mw.ustring.len(args["sup"]) - 1)
end
local class = args["class"] or try_detect_strong_class(pres, past, sup, endc)
local full = args["full"] or (head .. (endc == "vw" and "e" or ""))
local ppl = args["ppl"] or make_strong_ppl_stem(class, endc, past, sup)
if class then
table.insert(data.categories, "Swedish class " .. class .. " strong verbs")
data.definitions = "(class " .. class .. " strong)"
else
data.definitions = "(strong)"
end
if class == "5" then -- for class 5, replace final -a- with -å- in plural/subjunctive stem
ppl = mw.ustring.gsub(ppl, "(.*)a(.*)", "%1å%2")
end
if endc == "fv" and ppl:find("f$") then
ppl = ppl .. "v"
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = {pres .. (strong_pres_endings[endc] or "er")}
data.forms["indpastactv"] = {past}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {sup .. (strong_sup_endings[endc] or "it")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {pres}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {pres .. (strong_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. "nde"}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {sup .. (strong_pastpart_endings[endc] or "en")}
data.forms["indppresactv"] = args["pl"] and split_multi(args["pl"]) or data.forms["infactv"]
data.forms["indppastactv"] = {ppl .. "o"}
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or {pres .. (strong_subj_endings[endc] or "e")}
data.forms["subjpastactv"] = args["psbj"] and split_multi(args["psbj"]) or {ppl .. "e"}
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_strong_prespasv_form(pres, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = make_passive(data.forms["indppresactv"])
data.forms["indppastpasv"] = make_passive(data.forms["indppastactv"])
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = make_passive(data.forms["subjpastactv"])
end
inflections["irreg"] = function(args, data)
table.insert(data.categories, "ကြိယာအတိုၚ်ပကတိဟွံသေၚ်နကဵုဘာသာသွဳဒေန်ဂမၠိုၚ်")
data.definitions = "(irregular)"
data.forms["infactv"] = split_multi(args[1])
data.forms["indpresactv"] = split_multi(args[2])
data.forms["indpastactv"] = split_multi(args[3])
data.forms["supactv"] = split_multi(args[4])
data.forms["impactv"] = split_multi(args[5])
data.forms["imppactv"] = split_multi(args["impp"])
data.forms["prespart"] = split_multi(args[6])
data.forms["pastpart"] = split_multi(args[7])
data.forms["indppresactv"] = split_multi(args["pl"])
data.forms["indppastactv"] = split_multi(args["ppl"])
data.forms["subjpresactv"] = split_multi(args["sbj"])
data.forms["subjpastactv"] = split_multi(args["psbj"])
end
return export
lw8huo574gswigtpr9ab7k4zkx47wpd
397645
397641
2026-06-28T06:29:21Z
咽頭べさ
33
397645
Scribunto
text/plain
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("sv")
local vowel = "[aeiouyåäö]"
local consonant = "[bcdfghjklmnpqrstvwxz]"
local inflections = {}
local function postprocess(args, data)
if args["noa"] then
for key, form in pairs(data.forms) do
if (key:find("actv$")) then
data.forms[key] = nil
end
end
-- default handling of participles for passive-only verbs
if not args["prepart"] then
for key, form in pairs(data.forms) do
if key == "prespart" then
for i, subform in ipairs(form) do
form[i] = form[i] .. "s"
end
end
end
end
if not args["pp"] then
data.forms["pastpart"] = nil
end
else
-- only deponent verbs have passive imperative forms
data.forms["imppasv"] = nil
data.forms["impppasv"] = nil
end
if args["nop"] then
for key, form in pairs(data.forms) do
if (key:find("pasv$")) then
data.forms[key] = nil
end
end
end
if args["noprepart"] then
data.forms["prespart"] = nil
end
if args["nopp"] then
data.forms["pastpart"] = nil
end
-- add particle to participles; it is added separately for the table later
if args["particle"] or args["particle2"] then
data.particle = args["particle"]
table.insert(data.categories, "Swedish phrasal verbs")
local part = args["particle2"] or args["particle"] or ""
for key, form in pairs(data.forms) do
if key == "prespart" or key == "pastpart" then
for i, subform in ipairs(form) do
form[i] = part .. form[i]
end
end
end
end
if args["note"] and data.definitions and data.definitions:find("%)$") then
data.definitions = mw.ustring.sub(data.definitions, 1, mw.ustring.len(data.definitions) - 1) .. ", " .. args["note"] .. ")"
end
end
local function convert_to_accel(form)
-- no accel for now
return nil
end
-- Make the table
local function make_table(data)
local function show_form(form, accel, show_particle)
if not form then
return "—"
elseif type(form) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
end
local ret = {}
local part = ""
if show_particle and data.particle then
part = " " .. m_links.full_link({lang = lang, term = data.particle})
end
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = accel and { ["form"] = accel } or nil}) .. part)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "head" then
return data.particle and (data.head .. " " .. data.particle) or data.head
elseif param == "definitions" then
return data.definitions
else
return show_form(data.forms[param], convert_to_accel(param), param ~= "prespart" and param ~= "pastpart")
end
end
local wikicode = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'သမ္ဗန္ဓဆေၚ်စပ်ကဵု ' ..
mw.getCurrentFrame():expandTemplate{title = "m", args = {"sv", "", data.head}} .. ' {{{definitions}}}',
palette = 'indigo',
tall = 'yes',
}
} .. [=[
! class="outer" |
! colspan=2 class="outer" | မစိုပ်တရဴ
! colspan=2 class="outer" | ဟွံတဝ်စၞေဟ်
|-
! ကြိယာဟွံကၠောံ
| colspan=2 | {{{infactv}}}
| colspan=2 | {{{infpasv}}}
|-
! ဂၠဝ်
| colspan=2 | {{{supactv}}}
| colspan=2 | {{{suppasv}}}
|-
! ပါဲဗလေတ်ဟွံဗၠး
| colspan=2 | {{{impactv}}}
| colspan=2 | {{{imppasv}}}
|-
! ''ပါဲဗလေတ်ဟွံဗၠး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| colspan=2 | {{{imppactv}}}
| colspan=2 | {{{impppasv}}}
|-
!
! ပစ္စုပ္ပန်
! အတိက်
! ပစ္စုပ္ပန်
! အတိက်
|-
! စၞောန်ထ္ၜး
| {{{indpresactv}}}
| {{{indpastactv}}}
| {{{indprespasv}}}
| {{{indpastpasv}}}
|-
! ''စၞောန်ထ္ၜး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| {{{indppresactv}}}
| {{{indppastactv}}}
| {{{indpprespasv}}}
| {{{indppastpasv}}}
|-
! ''အရေဝ်နိဒါန်''<sup>၂</sup>
| {{{subjpresactv}}}
| {{{subjpastactv}}}
| {{{subjprespasv}}}
| {{{subjpastpasv}}}
|-
| colspan="3" class="separator" |
| colspan="2" class="separator" style="border-bottom:0" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်
| {{{prespart}}}
| colspan=2 rowspan=2 class="blank-end-row" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်
| {{{pastpart}}}
]=] .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '<sup>၁</sup> ခေတ်တြေံ။ <sup>၂</sup> ခေတ်အိုတ်။ ' ..
'ဗဵုရံၚ် [[အဆက်လက္ကရဴ:ကြိယာသွဳဒေန်ဂမၠိုၚ်#Dated and archaic forms|ဆေၚ်စပ်ကဵုအဆက်လက္ကရဴလ္တူကြိယာသွဳဒေန်ဂမၠိုၚ်]]။'
}
}
return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local infl_type = frame.args[1] or error("Inflection type has not been specified. Please pass parameter 1 to the module invocation")
local args = frame:getParent().args
if not inflections[infl_type] then
error("Unknown inflection type '" .. infl_type .. "'")
end
local data = {head = args["head"] or mw.loadData("Module:headword/data").pagename, definitions = "", forms = {}, categories = {}}
-- Generate the forms
inflections[infl_type](args, data)
-- Postprocess
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
local function split_multi(forms)
if not forms or forms == "" or forms == "-" then
return nil
end
return mw.text.split(forms, ",")
end
--[=[
Inflection functions
]=]--
local function make_passive(forms)
local pasv = {}
for i, subform in ipairs(forms) do
table.insert(pasv, subform .. "s")
end
return pasv
end
local weak_present_endings = {
["r"] = "",
["a"] = "r",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local weak_past_endings = {
["t"] = "",
["d"] = "",
["s"] = "t",
["vl"] = "t",
["vw"] = "dd"
}
local weak_sup_endings = {
["t"] = "",
["vw"] = "tt"
}
local weak_part_endings = {
["vw"] = "ende"
}
local weak_prespasv_endings1 = {
["nn"] = "ns"
}
local weak_prespasv_endings2 = {
["fv"] = "ves",
["mm"] = "mes",
["nn"] = "nes"
}
local weak_subj_endings = {
["mm"] = "me",
["nn"] = "ne"
}
local weak_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_weak_present_form(stem, endc)
local result = {stem .. (weak_present_endings[endc] or "er")}
if endc == "dj" then
table.insert(result, stem .. "jer")
end
return result
end
local function make_weak_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
inflections["weak"] = function(args, data)
data.definitions = "(weak)"
table.insert(data.categories, "ကြိယာသွဳဒေန်ဇြဟတ်မဍိုန်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local basic = args[1] or head
local past = args[2] or basic
local full = args["full"] or head
local endc = args["end"] or (args[1] and "" or "a")
local bare = basic
local vowelstem = mw.ustring.find(basic, vowel .. "$")
if endc == "a" then
bare = mw.ustring.sub(bare, 1, mw.ustring.len(bare) - 1)
vowelstem = false
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = make_weak_present_form(basic, endc)
data.forms["indpastactv"] = args["past"] and split_multi(args["past"]) or {past .. (weak_past_endings[endc] or "d") .. "e"}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {past .. (weak_sup_endings[endc] or "t")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {basic .. ((endc == "nn") and "n" or "")}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {bare .. (weak_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. (not args["full"] and weak_part_endings[endc] or "nde")}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {past .. (weak_past_endings[endc] or "d")}
data.forms["indppresactv"] = data.forms["infactv"]
data.forms["indppastactv"] = data.forms["indpastactv"]
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or (vowelstem and data.forms["infactv"] or {bare .. (weak_subj_endings[endc] or "e")})
data.forms["subjpastactv"] = data.forms["indpastactv"]
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_weak_prespasv_form(basic, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = data.forms["infpasv"]
data.forms["indppastpasv"] = data.forms["indpastpasv"]
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = data.forms["indpastpasv"]
end
local strong_pres_endings = {
["r"] = "",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local strong_sup_endings = {
["fv"] = "vit",
["mm"] = "mit",
["nn"] = "nit"
}
local strong_pastpart_endings = {
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local strong_subj_endings = {
["vw"] = "",
["fv"] = "ve",
["mm"] = "me",
["nn"] = "ne"
}
local strong_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_strong_ppl_stem(class, endc, past, sup)
local base
if class == "3" or class == "4" then
base = sup
else
base = past
end
if endc == "mm" then
base = base .. "m"
elseif endc == "nn" then
base = base .. "n"
end
return base
end
local function make_strong_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
local function get_final_vowel(stem)
return mw.ustring.match(stem, ".*(" .. vowel .. ")")
end
local function try_detect_strong_class(pres, past, sup, endc)
local presv = get_final_vowel(pres)
local pastv = get_final_vowel(past)
local supv = get_final_vowel(sup)
if supv == "i" or supv == "ä" or supv == "e" then
if supv == "i" and pastv == "e" and presv == "i" then
return "1"
elseif (pastv == "a" or pastv == "å") and (presv == "e" or presv == "i" or presv == "ä") then
return "5"
end
elseif supv == "u" then
if pastv == "ö" and (presv == "u" or presv == "y") then
return "2"
elseif pastv == "a" then
if presv == "i" then
return "3"
elseif presv == "e" or presv == "ä" then
if pres:find(consonant .. consonant .. "$") then
return "3"
else
return "4"
end
end
end
elseif supv == "a" or supv == "å" then
if supv == "a" and pastv == "o" and presv == "a" then
return "6"
elseif (pastv == "ö" or pastv == "ä") and (presv == "å" or presv == "a") then
return "7"
end
end
return nil
end
inflections["strong"] = function(args, data)
table.insert(data.categories, "ကြိယာသွဳဒေန်မခိုၚ်ကၠိုက်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local endc = args["end"] or ""
local pres = args[1] or error("At least 3 arguments required for strong verb inflections (missing present stem)")
local past = args[2] or error("At least 3 arguments required for strong verb inflections (missing past stem)")
local sup = args[3]
-- it's fine to not specify the supine stem if supine and pp forms are manually given
if not sup and (not args["sup"] or not (args["pp"] or args["nopp"])) then
error("At least 3 arguments required for strong verb inflections (missing supine stem; alternatively specify supine and past participle forms manually)")
elseif not sup then
sup = mw.ustring.sub(args["sup"], 1, mw.ustring.len(args["sup"]) - 1)
end
local class = args["class"] or try_detect_strong_class(pres, past, sup, endc)
local full = args["full"] or (head .. (endc == "vw" and "e" or ""))
local ppl = args["ppl"] or make_strong_ppl_stem(class, endc, past, sup)
if class then
table.insert(data.categories, "Swedish class " .. class .. " strong verbs")
data.definitions = "(class " .. class .. " strong)"
else
data.definitions = "(strong)"
end
if class == "5" then -- for class 5, replace final -a- with -å- in plural/subjunctive stem
ppl = mw.ustring.gsub(ppl, "(.*)a(.*)", "%1å%2")
end
if endc == "fv" and ppl:find("f$") then
ppl = ppl .. "v"
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = {pres .. (strong_pres_endings[endc] or "er")}
data.forms["indpastactv"] = {past}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {sup .. (strong_sup_endings[endc] or "it")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {pres}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {pres .. (strong_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. "nde"}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {sup .. (strong_pastpart_endings[endc] or "en")}
data.forms["indppresactv"] = args["pl"] and split_multi(args["pl"]) or data.forms["infactv"]
data.forms["indppastactv"] = {ppl .. "o"}
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or {pres .. (strong_subj_endings[endc] or "e")}
data.forms["subjpastactv"] = args["psbj"] and split_multi(args["psbj"]) or {ppl .. "e"}
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_strong_prespasv_form(pres, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = make_passive(data.forms["indppresactv"])
data.forms["indppastpasv"] = make_passive(data.forms["indppastactv"])
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = make_passive(data.forms["subjpastactv"])
end
inflections["irreg"] = function(args, data)
table.insert(data.categories, "ကြိယာအတိုၚ်ပကတိဟွံသေၚ်နကဵုဘာသာသွဳဒေန်ဂမၠိုၚ်")
data.definitions = "(irregular)"
data.forms["infactv"] = split_multi(args[1])
data.forms["indpresactv"] = split_multi(args[2])
data.forms["indpastactv"] = split_multi(args[3])
data.forms["supactv"] = split_multi(args[4])
data.forms["impactv"] = split_multi(args[5])
data.forms["imppactv"] = split_multi(args["impp"])
data.forms["prespart"] = split_multi(args[6])
data.forms["pastpart"] = split_multi(args[7])
data.forms["indppresactv"] = split_multi(args["pl"])
data.forms["indppastactv"] = split_multi(args["ppl"])
data.forms["subjpresactv"] = split_multi(args["sbj"])
data.forms["subjpastactv"] = split_multi(args["psbj"])
end
return export
4c3ne3f62unj3xq4hjgzjwp5tlbeoi1
397646
397645
2026-06-28T06:31:04Z
咽頭べさ
33
397646
Scribunto
text/plain
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("sv")
local vowel = "[aeiouyåäö]"
local consonant = "[bcdfghjklmnpqrstvwxz]"
local inflections = {}
local function postprocess(args, data)
if args["noa"] then
for key, form in pairs(data.forms) do
if (key:find("actv$")) then
data.forms[key] = nil
end
end
-- default handling of participles for passive-only verbs
if not args["prepart"] then
for key, form in pairs(data.forms) do
if key == "prespart" then
for i, subform in ipairs(form) do
form[i] = form[i] .. "s"
end
end
end
end
if not args["pp"] then
data.forms["pastpart"] = nil
end
else
-- only deponent verbs have passive imperative forms
data.forms["imppasv"] = nil
data.forms["impppasv"] = nil
end
if args["nop"] then
for key, form in pairs(data.forms) do
if (key:find("pasv$")) then
data.forms[key] = nil
end
end
end
if args["noprepart"] then
data.forms["prespart"] = nil
end
if args["nopp"] then
data.forms["pastpart"] = nil
end
-- add particle to participles; it is added separately for the table later
if args["particle"] or args["particle2"] then
data.particle = args["particle"]
table.insert(data.categories, "Swedish phrasal verbs")
local part = args["particle2"] or args["particle"] or ""
for key, form in pairs(data.forms) do
if key == "prespart" or key == "pastpart" then
for i, subform in ipairs(form) do
form[i] = part .. form[i]
end
end
end
end
if args["note"] and data.definitions and data.definitions:find("%)$") then
data.definitions = mw.ustring.sub(data.definitions, 1, mw.ustring.len(data.definitions) - 1) .. ", " .. args["note"] .. ")"
end
end
local function convert_to_accel(form)
-- no accel for now
return nil
end
-- Make the table
local function make_table(data)
local function show_form(form, accel, show_particle)
if not form then
return "—"
elseif type(form) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
end
local ret = {}
local part = ""
if show_particle and data.particle then
part = " " .. m_links.full_link({lang = lang, term = data.particle})
end
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = accel and { ["form"] = accel } or nil}) .. part)
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "head" then
return data.particle and (data.head .. " " .. data.particle) or data.head
elseif param == "definitions" then
return data.definitions
else
return show_form(data.forms[param], convert_to_accel(param), param ~= "prespart" and param ~= "pastpart")
end
end
local wikicode = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'သမ္ဗန္ဓဆေၚ်စပ်ကဵု ' ..
mw.getCurrentFrame():expandTemplate{title = "m", args = {"sv", "", data.head}} .. ' {{{definitions}}}',
palette = 'indigo',
tall = 'yes',
}
} .. [=[
! class="outer" |
! colspan=2 class="outer" | မစိုပ်တရဴ
! colspan=2 class="outer" | ဟွံတဝ်စၞေဟ်
|-
! ကြိယာဟွံကၠောံ
| colspan=2 | {{{infactv}}}
| colspan=2 | {{{infpasv}}}
|-
! ဂၠဝ်
| colspan=2 | {{{supactv}}}
| colspan=2 | {{{suppasv}}}
|-
! ပါဲဗလေတ်ဟွံဗၠး
| colspan=2 | {{{impactv}}}
| colspan=2 | {{{imppasv}}}
|-
! ''ပါဲဗလေတ်ဟွံဗၠး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| colspan=2 | {{{imppactv}}}
| colspan=2 | {{{impppasv}}}
|-
!
! ပစ္စုပ္ပန်
! အတိက်
! ပစ္စုပ္ပန်
! အတိက်
|-
! စၞောန်ထ္ၜး
| {{{indpresactv}}}
| {{{indpastactv}}}
| {{{indprespasv}}}
| {{{indpastpasv}}}
|-
! ''စၞောန်ထ္ၜး၊ ကိုန်ဗဟုဝစ်''<sup>၁</sup>
| {{{indppresactv}}}
| {{{indppastactv}}}
| {{{indpprespasv}}}
| {{{indppastpasv}}}
|-
! ''အရေဝ်နိဒါန်''<sup>၂</sup>
| {{{subjpresactv}}}
| {{{subjpastactv}}}
| {{{subjprespasv}}}
| {{{subjpastpasv}}}
|-
| colspan="3" class="separator" |
| colspan="2" class="separator" style="border-bottom:0" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်
| {{{prespart}}}
| colspan=2 rowspan=2 class="blank-end-row" |
|-
! colspan=2 | လုပ်ကၠောန်စွံလဝ်နကဵုအတိက်
| {{{pastpart}}}
]=] .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '<sup>၁</sup> ခေတ်တြေံ။ <sup>၂</sup> ခေတ်အိုတ်။ ' ..
'ဗဵုရံၚ် [[အဆက်လက္ကရဴ:ကြိယာသွဳဒေန်ဂမၠိုၚ်#Dated and archaic forms|ဆေၚ်စပ်ကဵုအဆက်လက္ကရဴလ္တူကြိယာသွဳဒေန်ဂမၠိုၚ်]]။'
}
}
return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local infl_type = frame.args[1] or error("Inflection type has not been specified. Please pass parameter 1 to the module invocation")
local args = frame:getParent().args
if not inflections[infl_type] then
error("Unknown inflection type '" .. infl_type .. "'")
end
local data = {head = args["head"] or mw.loadData("Module:headword/data").pagename, definitions = "", forms = {}, categories = {}}
-- Generate the forms
inflections[infl_type](args, data)
-- Postprocess
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
local function split_multi(forms)
if not forms or forms == "" or forms == "-" then
return nil
end
return mw.text.split(forms, ",")
end
--[=[
Inflection functions
]=]--
local function make_passive(forms)
local pasv = {}
for i, subform in ipairs(forms) do
table.insert(pasv, subform .. "s")
end
return pasv
end
local weak_present_endings = {
["r"] = "",
["a"] = "r",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local weak_past_endings = {
["t"] = "",
["d"] = "",
["s"] = "t",
["vl"] = "t",
["vw"] = "dd"
}
local weak_sup_endings = {
["t"] = "",
["vw"] = "tt"
}
local weak_part_endings = {
["vw"] = "ende"
}
local weak_prespasv_endings1 = {
["nn"] = "ns"
}
local weak_prespasv_endings2 = {
["fv"] = "ves",
["mm"] = "mes",
["nn"] = "nes"
}
local weak_subj_endings = {
["mm"] = "me",
["nn"] = "ne"
}
local weak_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_weak_present_form(stem, endc)
local result = {stem .. (weak_present_endings[endc] or "er")}
if endc == "dj" then
table.insert(result, stem .. "jer")
end
return result
end
local function make_weak_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
inflections["weak"] = function(args, data)
data.definitions = "(weak)"
table.insert(data.categories, "ကြိယာသွဳဒေန်ဇြဟတ်မဍိုန်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local basic = args[1] or head
local past = args[2] or basic
local full = args["full"] or head
local endc = args["end"] or (args[1] and "" or "a")
local bare = basic
local vowelstem = mw.ustring.find(basic, vowel .. "$")
if endc == "a" then
bare = mw.ustring.sub(bare, 1, mw.ustring.len(bare) - 1)
vowelstem = false
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = make_weak_present_form(basic, endc)
data.forms["indpastactv"] = args["past"] and split_multi(args["past"]) or {past .. (weak_past_endings[endc] or "d") .. "e"}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {past .. (weak_sup_endings[endc] or "t")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {basic .. ((endc == "nn") and "n" or "")}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {bare .. (weak_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. (not args["full"] and weak_part_endings[endc] or "nde")}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {past .. (weak_past_endings[endc] or "d")}
data.forms["indppresactv"] = data.forms["infactv"]
data.forms["indppastactv"] = data.forms["indpastactv"]
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or (vowelstem and data.forms["infactv"] or {bare .. (weak_subj_endings[endc] or "e")})
data.forms["subjpastactv"] = data.forms["indpastactv"]
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_weak_prespasv_form(basic, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = data.forms["infpasv"]
data.forms["indppastpasv"] = data.forms["indpastpasv"]
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = data.forms["indpastpasv"]
end
local strong_pres_endings = {
["r"] = "",
["vw"] = "r",
["fv"] = "ver",
["mm"] = "mer",
["nn"] = "ner"
}
local strong_sup_endings = {
["fv"] = "vit",
["mm"] = "mit",
["nn"] = "nit"
}
local strong_pastpart_endings = {
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local strong_subj_endings = {
["vw"] = "",
["fv"] = "ve",
["mm"] = "me",
["nn"] = "ne"
}
local strong_impp_endings = {
["vw"] = "n",
["fv"] = "ven",
["mm"] = "men",
["nn"] = "nen"
}
local function make_strong_ppl_stem(class, endc, past, sup)
local base
if class == "3" or class == "4" then
base = sup
else
base = past
end
if endc == "mm" then
base = base .. "m"
elseif endc == "nn" then
base = base .. "n"
end
return base
end
local function make_strong_prespasv_form(stem, endc)
if endc == "s" then
return {stem .. "es"}
end
local result = {stem .. (weak_prespasv_endings1[endc] or "s")}
if endc ~= "vw" and endc ~= "a" then
table.insert(result, stem .. (weak_prespasv_endings2[endc] or "es"))
end
if endc == "dj" then
table.insert(result, stem .. "jes")
end
return result
end
local function get_final_vowel(stem)
return mw.ustring.match(stem, ".*(" .. vowel .. ")")
end
local function try_detect_strong_class(pres, past, sup, endc)
local presv = get_final_vowel(pres)
local pastv = get_final_vowel(past)
local supv = get_final_vowel(sup)
if supv == "i" or supv == "ä" or supv == "e" then
if supv == "i" and pastv == "e" and presv == "i" then
return "1"
elseif (pastv == "a" or pastv == "å") and (presv == "e" or presv == "i" or presv == "ä") then
return "5"
end
elseif supv == "u" then
if pastv == "ö" and (presv == "u" or presv == "y") then
return "2"
elseif pastv == "a" then
if presv == "i" then
return "3"
elseif presv == "e" or presv == "ä" then
if pres:find(consonant .. consonant .. "$") then
return "3"
else
return "4"
end
end
end
elseif supv == "a" or supv == "å" then
if supv == "a" and pastv == "o" and presv == "a" then
return "6"
elseif (pastv == "ö" or pastv == "ä") and (presv == "å" or presv == "a") then
return "7"
end
end
return nil
end
inflections["strong"] = function(args, data)
table.insert(data.categories, "ကြိယာသွဳဒေန်မခိုၚ်ကၠိုက်ဂမၠိုၚ်")
local head = data.head
-- remove passive final -s to make forms correct
if head:find("s$") and args["noa"] then
head = mw.ustring.sub(head, 1, mw.ustring.len(head) - 1)
end
local endc = args["end"] or ""
local pres = args[1] or error("At least 3 arguments required for strong verb inflections (missing present stem)")
local past = args[2] or error("At least 3 arguments required for strong verb inflections (missing past stem)")
local sup = args[3]
-- it's fine to not specify the supine stem if supine and pp forms are manually given
if not sup and (not args["sup"] or not (args["pp"] or args["nopp"])) then
error("At least 3 arguments required for strong verb inflections (missing supine stem; alternatively specify supine and past participle forms manually)")
elseif not sup then
sup = mw.ustring.sub(args["sup"], 1, mw.ustring.len(args["sup"]) - 1)
end
local class = args["class"] or try_detect_strong_class(pres, past, sup, endc)
local full = args["full"] or (head .. (endc == "vw" and "e" or ""))
local ppl = args["ppl"] or make_strong_ppl_stem(class, endc, past, sup)
if class then
-- table.insert(data.categories, "Swedish class " .. class .. " strong verbs")
data.definitions = "(class " .. class .. " strong)"
else
data.definitions = "(strong)"
end
if class == "5" then -- for class 5, replace final -a- with -å- in plural/subjunctive stem
ppl = mw.ustring.gsub(ppl, "(.*)a(.*)", "%1å%2")
end
if endc == "fv" and ppl:find("f$") then
ppl = ppl .. "v"
end
data.forms["infactv"] = {head}
data.forms["indpresactv"] = {pres .. (strong_pres_endings[endc] or "er")}
data.forms["indpastactv"] = {past}
data.forms["supactv"] = args["sup"] and split_multi(args["sup"]) or {sup .. (strong_sup_endings[endc] or "it")}
data.forms["impactv"] = args["imp"] and split_multi(args["imp"]) or {pres}
data.forms["imppactv"] = args["impp"] and split_multi(args["impp"]) or {pres .. (strong_impp_endings[endc] or "en")}
data.forms["prespart"] = args["prepart"] and split_multi(args["prepart"]) or {full .. "nde"}
data.forms["pastpart"] = args["pp"] and split_multi(args["pp"]) or {sup .. (strong_pastpart_endings[endc] or "en")}
data.forms["indppresactv"] = args["pl"] and split_multi(args["pl"]) or data.forms["infactv"]
data.forms["indppastactv"] = {ppl .. "o"}
data.forms["subjpresactv"] = args["sbj"] and split_multi(args["sbj"]) or {pres .. (strong_subj_endings[endc] or "e")}
data.forms["subjpastactv"] = args["psbj"] and split_multi(args["psbj"]) or {ppl .. "e"}
data.forms["infpasv"] = make_passive(data.forms["infactv"])
data.forms["indprespasv"] = make_strong_prespasv_form(pres, endc)
data.forms["indpastpasv"] = make_passive(data.forms["indpastactv"])
data.forms["suppasv"] = make_passive(data.forms["supactv"])
data.forms["imppasv"] = make_passive(data.forms["impactv"])
data.forms["impppasv"] = make_passive(data.forms["imppactv"])
data.forms["indpprespasv"] = make_passive(data.forms["indppresactv"])
data.forms["indppastpasv"] = make_passive(data.forms["indppastactv"])
data.forms["subjprespasv"] = make_passive(data.forms["subjpresactv"])
data.forms["subjpastpasv"] = make_passive(data.forms["subjpastactv"])
end
inflections["irreg"] = function(args, data)
table.insert(data.categories, "ကြိယာအတိုၚ်ပကတိဟွံသေၚ်နကဵုဘာသာသွဳဒေန်ဂမၠိုၚ်")
data.definitions = "(irregular)"
data.forms["infactv"] = split_multi(args[1])
data.forms["indpresactv"] = split_multi(args[2])
data.forms["indpastactv"] = split_multi(args[3])
data.forms["supactv"] = split_multi(args[4])
data.forms["impactv"] = split_multi(args[5])
data.forms["imppactv"] = split_multi(args["impp"])
data.forms["prespart"] = split_multi(args[6])
data.forms["pastpart"] = split_multi(args[7])
data.forms["indppresactv"] = split_multi(args["pl"])
data.forms["indppastactv"] = split_multi(args["ppl"])
data.forms["subjpresactv"] = split_multi(args["sbj"])
data.forms["subjpastactv"] = split_multi(args["psbj"])
end
return export
9eoaz6ws77m23bdkrvp4peng6m6m1xe
မဝ်ဂျူ:sv-verbs/doc
828
296285
397640
2026-06-28T06:15:47Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|sv}} </includeonly>"
397640
wikitext
text/x-wiki
{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. -->
<includeonly>
{{module cat|sv}}
</includeonly>
0ktt9bsdq3gjkg64d6mxhxu0iyvtaxf
ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဂမၠိုၚ်
14
296286
397642
2026-06-28T06:24:18Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]"
397642
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]
nxgdz2mglthvf7d13dm3s2tugee6m3r
ထာမ်ပလိက်:sv-conj-st
10
296287
397643
2026-06-28T06:26:06Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "<includeonly>{{#invoke:sv-verbs|show|strong}}</includeonly><noinclude>{{documentation}}</noinclude>"
397643
wikitext
text/x-wiki
<includeonly>{{#invoke:sv-verbs|show|strong}}</includeonly><noinclude>{{documentation}}</noinclude>
murrag3usv1bjuksw46p2pzb87tob6u
ထာမ်ပလိက်:sv-conj-st/documentation
10
296288
397644
2026-06-28T06:27:17Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template creates a conjugation table for Swedish regular strong verbs. For regular weak verbs, use {{temp|sv-conj-wk}} instead. For (very) irregular verbs, use {{temp|sv-conj-irreg}}. ==Parameters== Numbered parameters: * <tt>1=</tt> The present stem of the verb. * <tt>2=</tt> The past stem of the verb. * <tt>3=</tt> The supine/past participle stem of the verb. Named parameters: * <..."
397644
wikitext
text/x-wiki
{{documentation subpage}}
This template creates a conjugation table for Swedish regular strong verbs. For regular weak verbs, use {{temp|sv-conj-wk}} instead. For (very) irregular verbs, use {{temp|sv-conj-irreg}}.
==Parameters==
Numbered parameters:
* <tt>1=</tt> The present stem of the verb.
* <tt>2=</tt> The past stem of the verb.
* <tt>3=</tt> The supine/past participle stem of the verb.
Named parameters:
* <tt>end=</tt> The type of ending consonant of the stem.
** If not specified, the verb is assumed to have a present in -er.
** <tt>end=vw</tt> If the stem is a single syllable that ends in a '''v'''o'''w'''el.
** <tt>end=r</tt> If the stem ends in -r. The present tense lacks the -er that is otherwise present.
** <tt>end=s</tt> If the stem ends in -s. The passive form does not have the form with -s, only -es.
** <tt>end=mm</tt> / <tt>end=nn</tt> If the infinitive ends in -mma or -nna. The first parameter should contain only one -m or -n.
** <tt>end=fv</tt> For a stem ending in -f, add -ver, -vit, -ven to emulate obsolete spelling used before 1906.
* <tt>full=</tt> The full infinitive of the verb.
** For short contracted verbs such as [[bli]], this specifies the full uncontracted infinitive.
** If not specified, defaults to the headword/page name.
* <tt>sup=</tt> The supine of the verb, in case this is different from the parameter 3 -it
* <tt>pl=</tt> The (archaic) present indicative plural form.
** If not specified, uses the infinitive form.
* <tt>ppl=</tt> The (archaic) past indicative plural form stem (+o for past indicative plural), also used for the past subjunctive (+e).
** If not specified, uses either the past or supine stem depending on the class of the verb (supine for 3 and 4, past otherwise).
* <tt>sbj=</tt> The (archaic) present subjunctive form.
** If not specified, uses the present stem +e.
* <tt>psbj=</tt> The (dated) past subjunctive form.
** If not specified, uses the past indicative plural stem (ppl) +e.
* <tt>prepart=</tt> Overrides the generated present participle form.
* <tt>pp=</tt> Overrides the generated past participle form.
* <tt>class=</tt> The class of the strong verb. If not specified, the template tries to automatically guess the class.
* <tt>nop=1</tt> This verb has no passive forms.
* <tt>noa=1</tt> This verb has no active forms.
* <tt>noprepart=1</tt> This verb has no present participle form.
* <tt>nopp=1</tt> This verb has no past participle form.
* <tt>head=</tt> : The headword/infinitive.
** Defaults to the current page name.
* <tt>particle=</tt> For [[Appendix:Swedish phrasal verbs|phrasal verbs]] like [[slå in]], use <tt>head=slå|particle=in</tt>
For parameters that specify forms, multiple forms can be given separated by commas.
==Notes==
This template uses [[Module:sv-verbs]] internally.
==Usage==
===Normal strong verbs===
For most strong verbs, just specifying the three stems with the three numbered parameters is enough.
'''On the page [[flyga]]:'''
* <tt><nowiki>{{sv-conj-st|flyg|flög|flug}}</nowiki></tt>
{{sv-conj-st|head=flyga|flyg|flög|flug}}
'''On the page [[binda]]:'''
* <tt><nowiki>{{sv-conj-st|bind|band|bund}}</nowiki></tt>
{{sv-conj-st|head=binda|bind|band|bund}}
===Verbs in -r===
Verbs with stems in -r do not get an additional -er in the present tense. Specify this with <tt>end=r</tt>. Some verbs in -l behave this way too.
'''On the page [[skära]]:'''
* <tt><nowiki>{{sv-conj-st|skär|skar|skur|end=r}}</nowiki></tt>
{{sv-conj-st|head=skära|skär|skar|skur|end=r}}
'''On the page [[stjäla]]:'''
* <tt><nowiki>{{sv-conj-st|stjäl|stal|stul|end=r}}</nowiki></tt>
{{sv-conj-st|head=stjäla|stjäl|stal|stul|end=r}}
===Verbs in -mm and -nn===
Some verbs with stems in -mm and -nn drop one -m/n in their regular stem. These are then specified with <tt>end=mm</tt> or <tt>end=nn</tt>.
'''On the page [[komma]]:'''
* <tt><nowiki>{{sv-conj-st|kom|kom|kom|end=mm}}</nowiki></tt>
{{sv-conj-st|head=komma|kom|kom|kom|end=mm}}
===Short stems===
Verbs with single-syllable stems ending in a vowel behave somewhat differently. These are specified with <tt>end=vw</tt>.
'''On the page [[gå]]:'''
*<tt><nowiki>{{sv-conj-st|gå|gick|gång|sup=gått|ppl=ging|sbj=gå,gånge|imp=gå,gack|end=vw}}</nowiki></tt>
{{sv-conj-st|head=gå|gå|gick|gång|sup=gått|ppl=ging|sbj=gå,gånge|imp=gå,gack|end=vw}}
'''On the page [[få]]:'''
*<tt><nowiki>{{sv-conj-st|få|fick|fång|sup=fått|ppl=fing|end=vw}}</nowiki></tt>
{{sv-conj-st|head=få|få|fick|fång|sup=fått|ppl=fing|end=vw}}
===Short and longer stems===
Some of these short stem verbs (bli, dra, ta) are old spoken forms for the more formally written ones (bliva, draga, taga). Only recently (late 20th century) have the shorter forms become the more common written form. For these verbs, the present participle is formed from longer form (blivande, not bliende), which needs to be specified as the <tt>full=</tt> parameter. Conjugations for the longer forms are listed as "somewhat dated" (not obsolete, not archaic) alternatives next to the shorter forms. To suppress the shorter present tense passive forms (drags, tags), use end=s (somewhat counterintuitive).
Note that [[ge]]/giva is treated somewhat differently. Ge behaves more like a weak conjugation.
'''On the page [[bli]]:'''
* <tt><nowiki>{{sv-conj-st|full=bliva|bli|blev|bliv|end=vw|nop=1}}</nowiki></tt>
{{sv-conj-st|head=bli|full=bliva|bli|blev|bliv|end=vw|nop=1}}
* <tt><nowiki>{{sv-conj-st|head=bliva|bliv|blev|bliv|nop=1|note=somewhat dated}}</nowiki></tt>
{{sv-conj-st|head=bliva|bliv|blev|bliv|nop=1|note=somewhat dated}}
'''On the page [[dra]]:'''
* <tt><nowiki>{{sv-conj-st|full=draga|dra|drog|drag|end=vw}}</nowiki></tt>
{{sv-conj-st|head=dra|full=draga|dra|drog|drag|end=vw}}
* <tt><nowiki>{{sv-conj-st|head=draga|drag|drog|drag|end=s|note=somewhat dated}}</nowiki></tt>
{{sv-conj-st|head=draga|drag|drog|drag|end=s|note=somewhat dated}}
'''On the page [[ta]]:'''
* <tt><nowiki>{{sv-conj-st|full=taga|ta|tog|tag|end=vw}}</nowiki></tt>
{{sv-conj-st|head=ta|full=taga|ta|tog|tag|end=vw}}
* <tt><nowiki>{{sv-conj-st|head=taga|tag|tog|tag|end=s|note=somewhat dated}}</nowiki></tt>
{{sv-conj-st|head=taga|tag|tog|tag|end=s|note=somewhat dated}}
===Supine not ending in -it===
The 3rd parameter (begång) is the stem of the past participle, but the supine is not based on this.
'''On the page [[begå]]:'''
* <tt><nowiki>{{sv-conj-st|begå|begick|begång|sup=begått|ppl=beging|end=vw}}</nowiki></tt>
{{sv-conj-st|head=begå|begå|begick|begång|sup=begått|ppl=beging|end=vw}}
===Active-only verbs===
Many verbs have only active forms, no passives. Use the <tt>nop=1</tt> parameter for these.
'''On the page [[falla]]:'''
* <tt><nowiki>{{sv-conj-st|fall|föll|fall|nop=1}}</nowiki></tt>
{{sv-conj-st|head=falla|fall|föll|fall|nop=1}}
===Passive-only (depondent) verbs===
Some verbs have only passive forms. Use the <tt>noa=1</tt> parameter for these.
'''On the page [[finnas]]:'''
* <tt><nowiki>{{sv-conj-st|class=3|finn|fann|funn|noa=1}}</nowiki></tt>
{{sv-conj-st|head=finnas|class=3|finn|fann|funn|noa=1}}
==See also==
* {{temp|sv-conj-wk}}
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဂမၠိုၚ်|conj-st]]
</includeonly>
06l2jrc3z1ueeo0iedzn4ps86mv9wnx
ကဏ္ဍ:ကြိယာသွဳဒေန်မခိုၚ်ကၠိုက်ဂမၠိုၚ်
14
296289
397647
2026-06-28T06:32:53Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသွဳဒေန်]]"
397647
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသွဳဒေန်]]
kxr7okilpqoqeb8xbqmxnvdksz3svwv
ကဏ္ဍ:ကြိယာသွဳဒေန်ဇြဟတ်မဍိုန်ဂမၠိုၚ်
14
296290
397648
2026-06-28T06:33:35Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသွဳဒေန်]]"
397648
wikitext
text/x-wiki
[[ကဏ္ဍ:ဘာသာသွဳဒေန်]]
kxr7okilpqoqeb8xbqmxnvdksz3svwv
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/gʰrābʰ-
118
296291
397649
2026-06-28T06:35:42Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{head|ine-pro|တံရိုဟ်}} # သကဵုခါဲ။"
397649
wikitext
text/x-wiki
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{head|ine-pro|တံရိုဟ်}}
# သကဵုခါဲ။
4lvf0dx5swv9snk3ek9v0vi2wxlrvbh
ဗီုပြၚ်သိုၚ်တၟိ:ဂျာမာန်-အခိုက်ကၞာ/grabaną
118
296292
397650
2026-06-28T06:41:01Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==ဂျာမာန်-အခိုက်ကၞာ== ===နိရုတ်=== {{root|gem-pro|ine-pro|*gʰrebʰ-}} ဝေါဟာကၠုၚ်နူ {{inh|gem-pro|ine-pro||*gʰróbʰ-}}၊ နူကဵုဝေါဟာ {{inh|gem-pro|ine-pro|*gʰrebʰ-}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|gem-pro|/ˈɣrɑ.βɑ.nɑ̃/}} * {{rhymes|gem-pro|ɑ.βɑ.nɑ̃|s=3}} ===ကြိယာ=== {{..."
397650
wikitext
text/x-wiki
{{reconstructed}}
==ဂျာမာန်-အခိုက်ကၞာ==
===နိရုတ်===
{{root|gem-pro|ine-pro|*gʰrebʰ-}}
ဝေါဟာကၠုၚ်နူ {{inh|gem-pro|ine-pro||*gʰróbʰ-}}၊ နူကဵုဝေါဟာ {{inh|gem-pro|ine-pro|*gʰrebʰ-}}
===ဗွဟ်ရမ္သာၚ်===
* {{IPA|gem-pro|/ˈɣrɑ.βɑ.nɑ̃/}}
* {{rhymes|gem-pro|ɑ.βɑ.nɑ̃|s=3}}
===ကြိယာ===
{{gem-verb}}
# သကဵုခါဲ။
# သကဵုပုတ်ဂၠတ်ကြာ၊ ခွာတ်။
====ပရေၚ်ကၠောံ====
{{gem-conj-st|class=6|grab|grōb|grōb|grab}}
===မဒုၚ်လွဳစ===
* {{desctree|gmw-pro|*graban}}
* {{desctree|non|grafa}}
* {{desc|got|𐌲𐍂𐌰𐌱𐌰𐌽}}
c5s35c290zdwbah6bxj2tw2lh969vtv
ထာမ်ပလိက်:gem-conj-st
10
296293
397651
2026-06-28T06:42:16Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:gem-verb|show|strong}}<!-- --><noinclude>{{documentation}}{{tcat|conj:st}}</noinclude>"
397651
wikitext
text/x-wiki
{{#invoke:gem-verb|show|strong}}<!--
--><noinclude>{{documentation}}{{tcat|conj:st}}</noinclude>
4rxxpgv5htso89ot8wxr07b33pe1n6d
မဝ်ဂျူ:gem-verb
828
296294
397652
2026-06-28T07:08:36Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local m_utilities = require("Module:utilities") local com = require("Module:gem-common") local export = {} local lang = require("Module:languages").getByCode("gem-pro") -- Within this module, conjugations are the functions that do the actual -- conjugating by creating the forms of a basic verb (not prefixed or -- separable). They are defined further down. local conjugations = {} -- The main entry point. -- This is..."
397652
Scribunto
text/plain
local m_utilities = require("Module:utilities")
local com = require("Module:gem-common")
local export = {}
local lang = require("Module:languages").getByCode("gem-pro")
-- Within this module, conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb (not prefixed or
-- separable). They are defined further down.
local conjugations = {}
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local conj_type = frame.args[1] or error("Conjugation type has not been specified. Please pass parameter 1 to the module invocation.")
local args = frame:getParent().args
SUBPAGENAME = mw.loadData("Module:headword/data").pagename
NAMESPACE = mw.title.getCurrentTitle().nsText
local forms, title, categories
if conjugations[conj_type] then
forms, title, categories = conjugations[conj_type](args)
else
error("Unknown conjugation type '" .. conj_type .. "'")
end
return make_table(forms, title) .. m_utilities.format_categories(categories, lang)
end
--[=[
*** STRONG VERBS ***
]=]--
-- Conjugate a strong verb
conjugations["strong"] = function(args)
local forms = {}
local class = args["class"] or ""; if class ~= "" then class = " class " .. class end
-- local categories = {"Proto-Germanic" .. class .. " strong verbs"}
local title = "strong" .. class
local pres_stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local past_sg_stem = args[2] or (NAMESPACE == "ထာမ်ပလိက်" and "(2)") or error("The second parameter is missing")
local past_stem = args[3] or (NAMESPACE == "ထာမ်ပလိက်" and "(3)") or error("The third parameter is missing")
local past_part_stem = args[4] or (NAMESPACE == "ထာမ်ပလိက်" and "(4)") or error("The fourth parameter is missing")
local past_indc_stem = args["past_indc_stem"] or past_stem
present_strong(forms, pres_stem)
past_strong(forms, past_stem, past_sg_stem, past_indc_stem)
forms["past_ptc"] = past_part_stem .. "anaz"
return forms, title, categories
end
-- Conjugate a strong j-present verb
conjugations["strong-j"] = function(args)
local forms = {}
local class = args["class"] or ""; if class ~= "" then class = " class " .. class end
-- local categories = {"Proto-Germanic" .. class .. " strong j-present verbs"}
local title = "strong" .. class .. " j-present"
local pres_stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local past_sg_stem = args[2] or (NAMESPACE == "ထာမ်ပလိက်" and "(2)") or error("The second parameter is missing")
local past_stem = args[3] or (NAMESPACE == "ထာမ်ပလိက်" and "(3)") or error("The third parameter is missing")
local past_part_stem = args[4] or (NAMESPACE == "ထာမ်ပလိက်" and "(4)") or error("The fourth parameter is missing")
local past_indc_stem = args["past_indc_stem"] or past_stem
local j = args["j"] or (NAMESPACE == "ထာမ်ပလိက်" and "j") or error("The parameter j= is missing")
present_weak1(forms, pres_stem, j)
past_strong(forms, past_stem, past_sg_stem, past_indc_stem)
forms["past_ptc"] = past_part_stem .. "anaz"
return forms, title, categories
end
-- Conjugate a weak verb with no suffix
conjugations["weak-nosuff"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic suffixless weak verbs"}
local title = "weak suffixless"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local past_stem = args[2]; if not past_stem or past_stem == "" then past_stem = stem .. "d" end
present_strong(forms, stem)
past_weak(forms, past_stem)
return forms, title, categories
end
-- Conjugate a weak class 1 verb
conjugations["weak1"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 1 weak verbs"}
local title = "weak class 1"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local j = args["j"] or (NAMESPACE == "ထာမ်ပလိက်" and "j") or error("The parameter j= is missing")
present_weak1(forms, stem, j)
past_weak(forms, stem .. "id")
return forms, title, categories
end
-- Conjugate a weak class 1 j-present verb
conjugations["weak1-j"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 1 weak j-present verbs"}
local title = "weak class 1 j-present"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local j = args["j"] or (NAMESPACE == "ထာမ်ပလိက်" and "j") or error("The parameter j= is missing")
present_weak1(forms, stem, j)
past_weak(forms, com.add_t(stem))
forms["past_ptc"] = stem .. "idaz"
return forms, title, categories
end
-- Conjugate a weak class 2 verb
conjugations["weak2"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 2 weak verbs"}
local title = "weak class 2"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
present_weak2(forms, stem)
past_weak(forms, stem .. "ōd")
return forms, title, categories
end
-- Conjugate a weak class 3 verb
conjugations["weak3"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 3 weak verbs"}
local title = "weak class 3"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
present_weak3_a(forms, stem)
past_weak(forms, stem .. "ad")
return forms, title, categories
end
-- Conjugate a weak class 3 j-present verb
conjugations["weak3-j"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 3 weak j-present verbs"}
local title = "weak class 3 j-present"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local j = args["j"] or (NAMESPACE == "ထာမ်ပလိက်" and "j") or error("The parameter j= is missing")
present_weak3_ja(forms, stem, j)
past_weak(forms, stem .. (j == "i" and "ī" or "") .. "d")
return forms, title, categories
end
-- Conjugate a weak class 4 verb
conjugations["weak4"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic class 4 weak verbs"}
local title = "weak class 4"
local stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
present_weak4(forms, stem)
past_weak(forms, stem .. "ōd")
forms["past_ptc"] = ""
return forms, title, categories
end
-- Conjugate a preterite-present verb
conjugations["pp"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic preterite-present verbs"}
local title = "[[preterite-present verb|preterite-present]]"
local pres_stem = args[1] or (NAMESPACE == "ထာမ်ပလိက်" and "(1)") or error("The first parameter is missing")
local pres_sg_stem = args[2] or (NAMESPACE == "ထာမ်ပလိက်" and "(2)") or error("The second parameter is missing")
local past_stem = args[3] or (NAMESPACE == "ထာမ်ပလိက်" and "(3)") or error("The third parameter is missing")
present_pp(forms, pres_stem, pres_sg_stem)
past_weak(forms, past_stem)
return forms, title, categories
end
--[=[
*** IRREGULAR VERBS ***
]=]--
conjugations["aiganą"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs"}
local title = "irregular"
past_weak(forms, "aiht")
forms["pres_ptc"] = "aigandz"
forms["infinitive"] = "aiganą"
forms["past_ptc"] = "aiganaz"
-- Indicative
forms["pres_indc_1sg"] = "aih"
forms["pres_indc_2sg"] = "aiht"
forms["pres_indc_3sg"] = "aih"
forms["pres_indc_1du"] = "aigū"
forms["pres_indc_2du"] = "aigudiz"
forms["pres_indc_1pl"] = "aigum"
forms["pres_indc_2pl"] = "aigud"
forms["pres_indc_3pl"] = "aigun"
-- Subjunctive
forms["pres_subj_1sg"] = "aigį̄"
forms["pres_subj_2sg"] = "aigīz"
forms["pres_subj_3sg"] = "aigī"
forms["pres_subj_1du"] = "aigīw"
forms["pres_subj_2du"] = "aigīdiz"
forms["pres_subj_1pl"] = "aigīm"
forms["pres_subj_2pl"] = "aigīd"
forms["pres_subj_3pl"] = "aigīn"
-- Imperative active
forms["impr_1sg"] = ""
forms["impr_2sg"] = ""
forms["impr_3sg"] = ""
forms["impr_1du"] = ""
forms["impr_2du"] = ""
forms["impr_1pl"] = ""
forms["impr_2pl"] = ""
forms["impr_3pl"] = ""
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["beuną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs", "Proto-Germanic suppletive verbs"}
local title = "irregular, suppletive"
past_strong(forms, "wēz", "was")
forms["infinitive"] = "beuną"
forms["pres_ptc"] = "wesandz"
forms["past_ptc"] = ""
-- Indicative
forms["pres_indc_1sg"] = "biumi"
forms["pres_indc_2sg"] = "biusi"
forms["pres_indc_3sg"] = "biuþi"
forms["pres_indc_1du"] = "beū?"
forms["pres_indc_2du"] = "biuþiz"
forms["pres_indc_1pl"] = "beum"
forms["pres_indc_2pl"] = "beud"
forms["pres_indc_3pl"] = "biunþi"
-- Subjunctive
forms["pres_subj_1sg"] = "biwjǭ?"
forms["pres_subj_2sg"] = "biwjēs?"
forms["pres_subj_3sg"] = "biwjē?"
forms["pres_subj_1du"] = "biwīw"
forms["pres_subj_2du"] = "biwīþiz"
forms["pres_subj_1pl"] = "biwīm"
forms["pres_subj_2pl"] = "biwīþ"
forms["pres_subj_3pl"] = "biwīn"
-- Imperative
forms["impr_2sg"] = "beu"
forms["impr_3sg"] = "beuþau"
forms["impr_2du"] = "biudiz"
forms["impr_2pl"] = "beuþ"
forms["impr_3pl"] = "beunþau"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["dōną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs"}
local title = "irregular"
present_weak2(forms, "d")
past_weak(forms, "d")
forms["pres_indc_1sg"] = "dōmi"
forms["past_indc_1sg"] = "dedǭ"
forms["past_indc_2sg"] = "dedēz"
forms["past_indc_3sg"] = "dedē"
forms["past_ptc"] = "dēnaz"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["gāną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs", "Proto-Germanic suppletive verbs"}
local title = "irregular, suppletive"
present_weak3_a(forms, "g")
past_weak(forms, "ijj")
forms["past_ptc"] = "gānaz"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["stāną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs"}
local title = "irregular"
present_weak3_a(forms, "st")
past_strong(forms, "stōd", "stōþ")
forms["past_ptc"] = "stadanaz"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["wesaną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs", "Proto-Germanic suppletive verbs"}
local title = "irregular, suppletive"
present_strong(forms, "wes")
past_strong(forms, "wēz", "was")
forms["past_ptc"] = ""
-- Indicative
forms["pres_indc_1sg"] = "immi"
forms["pres_indc_2sg"] = "izi"
forms["pres_indc_3sg"] = "isti"
forms["pres_indc_1du"] = "izū"
forms["pres_indc_2du"] = "izudiz"
forms["pres_indc_1pl"] = "izum"
forms["pres_indc_2pl"] = "izud"
forms["pres_indc_3pl"] = "sindi"
-- Subjunctive
forms["pres_subj_1sg"] = "sijǭ"
forms["pres_subj_2sg"] = "sijēs"
forms["pres_subj_3sg"] = "sijē"
forms["pres_subj_1du"] = "sīw"
forms["pres_subj_2du"] = "sīþiz"
forms["pres_subj_1pl"] = "sīm"
forms["pres_subj_2pl"] = "sīþ"
forms["pres_subj_3pl"] = "sīn"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
return forms, title, categories
end
conjugations["wiljaną"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs", "Proto-Germanic defective verbs"}
local title = "irregular, defective"
-- Indicative
forms["pres_indc_1sg"] = ""
forms["pres_indc_2sg"] = ""
forms["pres_indc_3sg"] = ""
forms["pres_indc_1du"] = ""
forms["pres_indc_2du"] = ""
forms["pres_indc_1pl"] = ""
forms["pres_indc_2pl"] = ""
forms["pres_indc_3pl"] = ""
-- Subjunctive
forms["pres_subj_1sg"] = "wiljų"
forms["pres_subj_2sg"] = "wilīz"
forms["pres_subj_3sg"] = "wilī"
forms["pres_subj_1du"] = "wilīw"
forms["pres_subj_2du"] = "wilīdiz"
forms["pres_subj_1pl"] = "wilīm"
forms["pres_subj_2pl"] = "wilīd"
forms["pres_subj_3pl"] = "wilīn"
-- Imperative
forms["impr_2sg"] = ""
forms["impr_3sg"] = ""
forms["impr_2du"] = ""
forms["impr_2pl"] = ""
forms["impr_3pl"] = ""
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
forms["infinitive"] = "wiljaną"
forms["pres_ptc"] = "wiljandz"
past_weak(forms, "weld")
forms["past_ptc"] = ""
return forms, title, categories
end
conjugations["waldaną2"] = function(args)
local forms = {}
-- local categories = {"Proto-Germanic irregular verbs", "Proto-Germanic defective verbs"}
local title = "irregular, defective"
-- Indicative
forms["pres_indc_1sg"] = ""
forms["pres_indc_2sg"] = ""
forms["pres_indc_3sg"] = ""
forms["pres_indc_1du"] = ""
forms["pres_indc_2du"] = ""
forms["pres_indc_1pl"] = ""
forms["pres_indc_2pl"] = ""
forms["pres_indc_3pl"] = ""
-- Subjunctive
forms["pres_subj_1sg"] = ""
forms["pres_subj_2sg"] = ""
forms["pres_subj_3sg"] = ""
forms["pres_subj_1du"] = ""
forms["pres_subj_2du"] = ""
forms["pres_subj_1pl"] = ""
forms["pres_subj_2pl"] = ""
forms["pres_subj_3pl"] = ""
-- Imperative
forms["impr_2sg"] = ""
forms["impr_3sg"] = ""
forms["impr_2du"] = ""
forms["impr_2pl"] = ""
forms["impr_3pl"] = ""
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
forms["infinitive"] = ""
forms["pres_ptc"] = ""
past_weak(forms, "wulþ")
forms["past_ptc"] = "wulþaz"
return forms, title, categories
end
--[=[
*** HELPER FUNCTIONS ***
]=]--
function present_strong(forms, stem)
local i_stem = com.i_mutation(stem) .. "i"
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = i_stem .. "zi"
forms["pres_indc_3sg"] = i_stem .. "di"
forms["pres_indc_1du"] = stem .. "ōz"
forms["pres_indc_2du"] = stem .. "adiz"
forms["pres_indc_1pl"] = stem .. "amaz"
forms["pres_indc_2pl"] = i_stem .. "d"
forms["pres_indc_3pl"] = stem .. "andi"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "aų"
forms["pres_subj_2sg"] = stem .. "aiz"
forms["pres_subj_3sg"] = stem .. "ai"
forms["pres_subj_1du"] = stem .. "aiw"
forms["pres_subj_2du"] = stem .. "aidiz"
forms["pres_subj_1pl"] = stem .. "aim"
forms["pres_subj_2pl"] = stem .. "aid"
forms["pres_subj_3pl"] = stem .. "ain"
-- Imperative
forms["impr_2sg"] = stem
forms["impr_3sg"] = stem .. "adau"
forms["impr_2du"] = stem .. "adiz"
forms["impr_2pl"] = i_stem .. "d"
forms["impr_3pl"] = stem .. "andau"
-- Indicative passive
forms["pasv_indc_1sg"] = stem .. "ai"
forms["pasv_indc_2sg"] = stem .. "azai"
forms["pasv_indc_3sg"] = stem .. "adai"
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = stem .. "andai"
forms["pasv_indc_2pl"] = stem .. "andai"
forms["pasv_indc_3pl"] = stem .. "andai"
-- Subjunctive passive
forms["pasv_subj_1sg"] = "?"
forms["pasv_subj_2sg"] = stem .. "aizau"
forms["pasv_subj_3sg"] = stem .. "aidau"
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = stem .. "aindau"
forms["pasv_subj_2pl"] = stem .. "aindau"
forms["pasv_subj_3pl"] = stem .. "aindau"
forms["infinitive"] = stem .. "aną"
forms["pres_ptc"] = stem .. "andz"
end
function present_weak1(forms, stem, j)
local i_stem = stem .. (j == "j" and "i" or "ī")
stem = stem .. j
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = i_stem .. "si"
forms["pres_indc_3sg"] = i_stem .. "þi"
forms["pres_indc_1du"] = stem .. "ōs"
forms["pres_indc_2du"] = stem .. "aþiz"
forms["pres_indc_1pl"] = stem .. "amaz"
forms["pres_indc_2pl"] = i_stem .. "þ"
forms["pres_indc_3pl"] = stem .. "anþi"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "aų"
forms["pres_subj_2sg"] = stem .. "ais"
forms["pres_subj_3sg"] = stem .. "ai"
forms["pres_subj_1du"] = stem .. "aiw"
forms["pres_subj_2du"] = stem .. "aiþiz"
forms["pres_subj_1pl"] = stem .. "aim"
forms["pres_subj_2pl"] = stem .. "aiþ"
forms["pres_subj_3pl"] = stem .. "ain"
-- Imperative
forms["impr_2sg"] = i_stem
forms["impr_3sg"] = stem .. "aþau"
forms["impr_2du"] = stem .. "aþiz"
forms["impr_2pl"] = i_stem .. "þ"
forms["impr_3pl"] = stem .. "anþau"
-- Indicative passive
forms["pasv_indc_1sg"] = stem .. "ai"
forms["pasv_indc_2sg"] = stem .. "asai"
forms["pasv_indc_3sg"] = stem .. "aþai"
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = stem .. "anþai"
forms["pasv_indc_2pl"] = stem .. "anþai"
forms["pasv_indc_3pl"] = stem .. "anþai"
-- Subjunctive passive
forms["pasv_subj_1sg"] = "?"
forms["pasv_subj_2sg"] = stem .. "aisau"
forms["pasv_subj_3sg"] = stem .. "aiþau"
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = stem .. "ainþau"
forms["pasv_subj_2pl"] = stem .. "ainþau"
forms["pasv_subj_3pl"] = stem .. "ainþau"
forms["infinitive"] = stem .. "aną"
forms["pres_ptc"] = stem .. "andz"
end
function present_weak2(forms, stem)
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = stem .. "ōsi"
forms["pres_indc_3sg"] = stem .. "ōþi"
forms["pres_indc_1du"] = stem .. "ōs"
forms["pres_indc_2du"] = stem .. "ōþiz"
forms["pres_indc_1pl"] = stem .. "ōmaz"
forms["pres_indc_2pl"] = stem .. "ōþ"
forms["pres_indc_3pl"] = stem .. "ōnþi"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "ǭ"
forms["pres_subj_2sg"] = stem .. "ōs"
forms["pres_subj_3sg"] = stem .. "ō"
forms["pres_subj_1du"] = stem .. "ōw"
forms["pres_subj_2du"] = stem .. "ōþiz"
forms["pres_subj_1pl"] = stem .. "ōm"
forms["pres_subj_2pl"] = stem .. "ōþ"
forms["pres_subj_3pl"] = stem .. "ōn"
-- Imperative
forms["impr_2sg"] = stem .. "ō"
forms["impr_3sg"] = stem .. "ōþau"
forms["impr_2du"] = stem .. "ōþiz"
forms["impr_2pl"] = stem .. "ōþ"
forms["impr_3pl"] = stem .. "ōnþau"
-- Indicative passive
forms["pasv_indc_1sg"] = stem .. "ōi"
forms["pasv_indc_2sg"] = stem .. "ōsai"
forms["pasv_indc_3sg"] = stem .. "ōþai"
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = stem .. "ōnþai"
forms["pasv_indc_2pl"] = stem .. "ōnþai"
forms["pasv_indc_3pl"] = stem .. "ōnþai"
-- Subjunctive passive
forms["pasv_subj_1sg"] = "?"
forms["pasv_subj_2sg"] = stem .. "ōsau"
forms["pasv_subj_3sg"] = stem .. "ōþau"
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = stem .. "ōnþau"
forms["pasv_subj_2pl"] = stem .. "ōnþau"
forms["pasv_subj_3pl"] = stem .. "ōnþau"
forms["infinitive"] = stem .. "ōną"
forms["pres_ptc"] = stem .. "ōndz"
end
function present_weak3_ja(forms, stem, j)
local i_stem = stem .. (j == "i" and "ij" or "") .. "ai"
stem = stem .. (j == "i" and "ij" or j)
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = i_stem .. "si"
forms["pres_indc_3sg"] = i_stem .. "þi"
forms["pres_indc_1du"] = stem .. "ōs"
forms["pres_indc_2du"] = stem .. "aþiz"
forms["pres_indc_1pl"] = stem .. "amaz"
forms["pres_indc_2pl"] = i_stem .. "þ"
forms["pres_indc_3pl"] = stem .. "anþi"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "aų"
forms["pres_subj_2sg"] = stem .. "ais"
forms["pres_subj_3sg"] = stem .. "ai"
forms["pres_subj_1du"] = stem .. "aiw"
forms["pres_subj_2du"] = stem .. "aiþiz"
forms["pres_subj_1pl"] = stem .. "aim"
forms["pres_subj_2pl"] = stem .. "aiþ"
forms["pres_subj_3pl"] = stem .. "ain"
-- Imperative
forms["impr_2sg"] = i_stem
forms["impr_3sg"] = stem .. "aþau"
forms["impr_2du"] = stem .. "aþiz"
forms["impr_2pl"] = i_stem .. "þ"
forms["impr_3pl"] = stem .. "anþau"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
forms["infinitive"] = stem .. "aną"
forms["pres_ptc"] = stem .. "andz"
end
function present_weak3_a(forms, stem)
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = stem .. "aisi"
forms["pres_indc_3sg"] = stem .. "aiþi"
forms["pres_indc_1du"] = stem .. "ōs"
forms["pres_indc_2du"] = stem .. "āþiz"
forms["pres_indc_1pl"] = stem .. "āmaz"
forms["pres_indc_2pl"] = stem .. "aiþ"
forms["pres_indc_3pl"] = stem .. "ānþi"
-- Subjunctive
forms["pres_subj_1sg"] = "?"
forms["pres_subj_2sg"] = "?"
forms["pres_subj_3sg"] = "?"
forms["pres_subj_1du"] = "?"
forms["pres_subj_2du"] = "?"
forms["pres_subj_1pl"] = "?"
forms["pres_subj_2pl"] = "?"
forms["pres_subj_3pl"] = "?"
-- Imperative
forms["impr_2sg"] = stem .. "ai"
forms["impr_3sg"] = stem .. "āþau"
forms["impr_2du"] = stem .. "āþiz"
forms["impr_2pl"] = stem .. "aiþ"
forms["impr_3pl"] = stem .. "ānþau"
-- Indicative passive
forms["pasv_indc_1sg"] = "?"
forms["pasv_indc_2sg"] = stem .. "āsai"
forms["pasv_indc_3sg"] = stem .. "āþai"
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = stem .. "ānþai"
forms["pasv_indc_2pl"] = stem .. "ānþai"
forms["pasv_indc_3pl"] = stem .. "ānþai"
-- Subjunctive passive
forms["pasv_subj_1sg"] = "?"
forms["pasv_subj_2sg"] = "?"
forms["pasv_subj_3sg"] = "?"
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = "?"
forms["pasv_subj_2pl"] = "?"
forms["pasv_subj_3pl"] = "?"
forms["infinitive"] = stem .. "āną"
forms["pres_ptc"] = stem .. "āndz"
end
function present_weak4(forms, stem)
-- Indicative
forms["pres_indc_1sg"] = stem .. "ō"
forms["pres_indc_2sg"] = stem .. "ōsi"
forms["pres_indc_3sg"] = stem .. "ōþi"
forms["pres_indc_1du"] = stem .. "ōs"
forms["pres_indc_2du"] = stem .. "aþiz"
forms["pres_indc_1pl"] = stem .. "amaz"
forms["pres_indc_2pl"] = stem .. "aþ"
forms["pres_indc_3pl"] = stem .. "anþi"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "aų"
forms["pres_subj_2sg"] = stem .. "ais"
forms["pres_subj_3sg"] = stem .. "ai"
forms["pres_subj_1du"] = stem .. "aiw"
forms["pres_subj_2du"] = stem .. "aiþiz"
forms["pres_subj_1pl"] = stem .. "aim"
forms["pres_subj_2pl"] = stem .. "aiþ"
forms["pres_subj_3pl"] = stem .. "ain"
-- Imperative
forms["impr_2sg"] = stem .. "ō"
forms["impr_3sg"] = stem .. "ōþau"
forms["impr_2du"] = stem .. "aþiz"
forms["impr_2pl"] = stem .. "aþ"
forms["impr_3pl"] = stem .. "anþau"
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
forms["infinitive"] = stem .. "aną"
forms["pres_ptc"] = stem .. "andz"
end
-- Create preterite-present present forms
function present_pp(forms, stem, sg_stem)
-- Indicative
forms["pres_indc_1sg"] = sg_stem
forms["pres_indc_2sg"] = com.add_t(sg_stem)
forms["pres_indc_3sg"] = sg_stem
forms["pres_indc_1du"] = stem .. "ū"
forms["pres_indc_2du"] = stem .. "udiz"
forms["pres_indc_1pl"] = stem .. "um"
forms["pres_indc_2pl"] = stem .. "ud"
forms["pres_indc_3pl"] = stem .. "un"
-- Subjunctive
forms["pres_subj_1sg"] = stem .. "į̄"
forms["pres_subj_2sg"] = stem .. "īz"
forms["pres_subj_3sg"] = stem .. "ī"
forms["pres_subj_1du"] = stem .. "īw"
forms["pres_subj_2du"] = stem .. "īdiz"
forms["pres_subj_1pl"] = stem .. "īm"
forms["pres_subj_2pl"] = stem .. "īd"
forms["pres_subj_3pl"] = stem .. "īn"
-- Imperative
forms["impr_2sg"] = ""
forms["impr_3sg"] = ""
forms["impr_2du"] = ""
forms["impr_2pl"] = ""
forms["impr_3pl"] = ""
-- Indicative passive
forms["pasv_indc_1sg"] = ""
forms["pasv_indc_2sg"] = ""
forms["pasv_indc_3sg"] = ""
forms["pasv_indc_1du"] = ""
forms["pasv_indc_2du"] = ""
forms["pasv_indc_1pl"] = ""
forms["pasv_indc_2pl"] = ""
forms["pasv_indc_3pl"] = ""
-- Subjunctive passive
forms["pasv_subj_1sg"] = ""
forms["pasv_subj_2sg"] = ""
forms["pasv_subj_3sg"] = ""
forms["pasv_subj_1du"] = ""
forms["pasv_subj_2du"] = ""
forms["pasv_subj_1pl"] = ""
forms["pasv_subj_2pl"] = ""
forms["pasv_subj_3pl"] = ""
forms["infinitive"] = stem .. "aną"
forms["pres_ptc"] = stem .. "andz"
end
-- Create strong past-tense forms
function past_strong(forms, stem, sg_stem, indc_stem)
forms["past_indc_1sg"] = sg_stem
forms["past_indc_2sg"] = com.add_t(sg_stem)
forms["past_indc_3sg"] = sg_stem
past_generic(forms, stem, indc_stem)
end
-- Create weak past-tense forms
function past_weak(forms, stem)
forms["past_indc_1sg"] = stem .. "ǭ"
forms["past_indc_2sg"] = stem .. "ēz"
forms["past_indc_3sg"] = stem .. "ē"
past_generic(forms, stem .. "ēd")
forms["past_ptc"] = stem .. "az"
end
-- Create general past-tense forms
function past_generic(forms, stem, indc_stem)
indc_stem = indc_stem or stem
-- Nonsingular indicative
forms["past_indc_1du"] = indc_stem .. "ū"
forms["past_indc_2du"] = indc_stem .. "udiz"
forms["past_indc_1pl"] = indc_stem .. "um"
forms["past_indc_2pl"] = indc_stem .. "ud"
forms["past_indc_3pl"] = indc_stem .. "un"
-- Subjunctive
forms["past_subj_1sg"] = stem .. "į̄"
forms["past_subj_2sg"] = stem .. "īz"
forms["past_subj_3sg"] = stem .. "ī"
forms["past_subj_1du"] = stem .. "īw"
forms["past_subj_2du"] = stem .. "īdiz"
forms["past_subj_1pl"] = stem .. "īm"
forms["past_subj_2pl"] = stem .. "īd"
forms["past_subj_3pl"] = stem .. "īn"
end
-- Make the table
function make_table(forms, title)
-- Make links out of all forms
for key, form in pairs(forms) do
if form ~= '?' then
forms[key] = com.link_form(form)
end
end
return mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = "သမ္ဗန္ဓဆေၚ်စပ်ကဵု ''" .. forms["infinitive"] .. "''" .. (title and " (" .. title .. ")" or ""),
palette = 'orange',
tall = 'yes'
}
} .. [=[
! colspan="1" class="outer" |
! colspan="3" class="outer" | ရမျာၚ် မစိုပ်တရဴ
| rowspan="10" class="separator" |
! colspan="2" class="outer" | ရမျာၚ် ဟွံတဝ်စၞေဟ်
|-
! [[ကာလ ပစ္စုပ္ပန်]]
! [[indicative mood|မစၞောန်ရန်]]
! [[subjunctive mood|အရေဝ်နိဒါန်]]
! [[imperative mood|ဟွံဍိုက်ပေၚ်]]
! [[indicative mood|မစၞောန်ရန်]]
! [[subjunctive mood|အရေဝ်နိဒါန်]]
|-
! ကိုန်ဨကဝုစ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["pres_indc_1sg"] .. " || " .. forms["pres_subj_1sg"] .. " || — || " .. forms["pasv_indc_1sg"] .. " || " .. forms["pasv_subj_1sg"] .. [=[
|-
! ကိုန်ဨကဝုစ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["pres_indc_2sg"] .. " || " .. forms["pres_subj_2sg"] .. " || " .. forms["impr_2sg"] .. " || " .. forms["pasv_indc_2sg"] .. " || " .. forms["pasv_subj_2sg"] .. [=[
|-
! ကိုန်ဨကဝုစ် [[third person|မရနုက်ကဵု၃]]
| ]=] .. forms["pres_indc_3sg"] .. " || " .. forms["pres_subj_3sg"] .. " || " .. forms["impr_3sg"] .. " || " .. forms["pasv_indc_3sg"] .. " || " .. forms["pasv_subj_3sg"] .. [=[
|-
! ၜါလ္ပာ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["pres_indc_1du"] .. " || " .. forms["pres_subj_1du"] .. " || — || " .. forms["pasv_indc_1du"] .. " || " .. forms["pasv_subj_1du"] .. [=[
|-
! ၜါလ္ပာ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["pres_indc_2du"] .. " || " .. forms["pres_subj_2du"] .. " || " .. forms["impr_2du"] .. " || " .. forms["pasv_indc_2du"] .. " || " .. forms["pasv_subj_2du"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["pres_indc_1pl"] .. " || " .. forms["pres_subj_1pl"] .. " || — || " .. forms["pasv_indc_1pl"] .. " || " .. forms["pasv_subj_1pl"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["pres_indc_2pl"] .. " || " .. forms["pres_subj_2pl"] .. " || " .. forms["impr_2pl"] .. " || " .. forms["pasv_indc_2pl"] .. " || " .. forms["pasv_subj_2pl"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[third person|မရနုက်ကဵု၃]]
| ]=] .. forms["pres_indc_3pl"] .. " || " .. forms["pres_subj_3pl"] .. " || " .. forms["impr_3pl"] .. " || " .. forms["pasv_indc_3pl"] .. " || " .. forms["pasv_subj_3pl"] .. [=[
|-
| class="separator" colspan="3" |
| colspan="4" rowspan="10" class="blank-end-row" |
|-
! colspan="1" | [[ကာလ အတိက်]]
! [[indicative mood|မစၞောန်ရန်]]
! [[subjunctive mood|အရေဝ်နိဒါန်]]
|-
! ကိုန်ဨကဝုစ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["past_indc_1sg"] .. " || " .. forms["past_subj_1sg"] .. [=[
|-
! ကိုန်ဨကဝုစ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["past_indc_2sg"] .. " || " .. forms["past_subj_2sg"] .. [=[
|-
! ကိုန်ဨကဝုစ် [[third person|မရနုက်ကဵု၃]]
| ]=] .. forms["past_indc_3sg"] .. " || " .. forms["past_subj_3sg"] .. [=[
|-
! ၜါလ္ပာ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["past_indc_1du"] .. " || " .. forms["past_subj_1du"] .. [=[
|-
! ၜါလ္ပာ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["past_indc_2du"] .. " || " .. forms["past_subj_2du"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[first person|မရနုက်ကဵု၁]]
| ]=] .. forms["past_indc_1pl"] .. " || " .. forms["past_subj_1pl"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[second person|မရနုက်ကဵု၂]]
| ]=] .. forms["past_indc_2pl"] .. " || " .. forms["past_subj_2pl"] .. [=[
|-
! ကိုန်ဗဟုဝစ် [[third person|မရနုက်ကဵု၃]]
| ]=] .. forms["past_indc_3pl"] .. " || " .. forms["past_subj_3pl"] .. [=[
|-
| class="separator" colspan="3" |
| colspan="4" rowspan="3" class="blank-end-row" |
|-
!
! [[present tense|ပစ္စုပ္ပန်]]
! [[past tense|အတိက်]]
|-
! လုပ်ကၠောန်စွံလဝ်
| ]=] .. forms["pres_ptc"] .. " || " .. forms["past_ptc"] .. [=[
]=] .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
}
end
function make_bot_list(forms, hasSep)
local ret = ""
if hasSep then
ret = ret .. "* sep=1\n"
end
for key, form in pairs(forms) do
ret = ret .. "* " .. key .. "=" .. form .. "\n"
end
return ret
end
return export
6qbbniw7xck0afm462idcbyq33twpk9
မဝ်ဂျူ:gem-verb/doc
828
296295
397653
2026-06-28T07:10:05Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "This module is used to create inflection tables for Proto-Germanic verbs. <includeonly> {{module cat|gem-pro}} </includeonly>"
397653
wikitext
text/x-wiki
This module is used to create inflection tables for Proto-Germanic verbs.
<includeonly>
{{module cat|gem-pro}}
</includeonly>
q3re8u96dl346j43267x469wlj075vx
ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်
14
296296
397654
2026-06-28T07:11:49Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ|ဂျာမာန်..."
397654
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ|ဂျာမာန်-အခိုက်ကၞာ]] » '''မဝ်ဂျူဂမၠိုၚ်'''
:[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာဂျာမာန်-အခိုက်ကၞာ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။
[[ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
3pq8e9kzno1i1c2izhavi0meyb099ba
ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်
14
296297
397655
2026-06-28T07:13:25Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]]ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ..."
397655
wikitext
text/x-wiki
[[ကဏ္ဍ:မဝ်ဂျူဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
3ou4in2xjdh0gt0m7v1z6wqyzv7w425
ထာမ်ပလိက်:gem-conj-st/documentation
10
296298
397656
2026-06-28T07:14:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ==References== * {{R:gem:PIEPG}}"
397656
wikitext
text/x-wiki
{{documentation subpage}}
==References==
* {{R:gem:PIEPG}}
f3g9usoh9joferw25u0cofdg7q9ejcz
ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဂမၠိုၚ်
14
296299
397657
2026-06-28T07:15:57Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
397657
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏကြိယာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
m0ldhofxrgk85adq31kj594116xdge4
ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်
14
296300
397658
2026-06-28T07:17:23Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]"
397658
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်ဂျာမာန်-အခိုက်ကၞာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဂ]]
h0dos8ibeuq4t5skpogyx7v0c4hd2f9
မဝ်ဂျူ:gem-common/doc
828
296301
397660
2026-06-28T07:22:48Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "This module contains common helper functions for Proto-Germanic, that are needed by other modules. <includeonly> {{module cat|gem-pro}} </includeonly>"
397660
wikitext
text/x-wiki
This module contains common helper functions for Proto-Germanic, that are needed by other modules.
<includeonly>
{{module cat|gem-pro}}
</includeonly>
ncbtjej7sscnxkjqsms9zppnj5o63l0
ကဏ္ဍ:ကာရန်:ဂျာမာန်-အခိုက်ကၞာ/ɑ.βɑ.nɑ̃
14
296302
397662
2026-06-28T07:27:29Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ|ဂျာမာန်..."
397662
wikitext
text/x-wiki
[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ|ဂျာမာန်-အခိုက်ကၞာ]] » [[:ကဏ္ဍ:ကာရန်:ဂျာမာန်-အခိုက်ကၞာ|ကာရန်ဂမၠိုၚ်]] » -ɑ.βɑ.nɑ̃
:စရၚ်မဆေၚ်စပ်ကဵုဝေါဟာ[[:ကဏ္ဍ:ဘာသာဂျာမာန်-အခိုက်ကၞာ|ဂျာမာန်-အခိုက်ကၞာ]]မနွံကာရန် [[ကာရန်:ဂျာမာန်-အခိုက်ကၞာ/ɑ.βɑ.nɑ̃|-ɑ.βɑ.nɑ̃]] ဂမၠိုၚ်။
[[ကဏ္ဍ:ကာရန်:ဂျာမာန်-အခိုက်ကၞာ|ɑ.βɑ.nɑ̃]]
cxdk3iszl4a0thtp1nj7621oplyt4s9
ကာရန်:ဂျာမာန်-အခိုက်ကၞာ/ɑ.βɑ.nɑ̃
106
296303
397663
2026-06-28T07:30:06Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{rhymes nav|gem-pro}} ==ကာရန်ဂမၠိုၚ်== ===ဝဏ္ဏမွဲ=== {{rhyme-top}} * {{l|gem-pro|*dabaną}} * {{l|gem-pro|*drabaną}} * {{l|gem-pro|*grabaną}} * {{l|gem-pro|*hnabaną}} * {{l|gem-pro|*skabaną}} {{rhyme-bottom}}"
397663
wikitext
text/x-wiki
{{rhymes nav|gem-pro}}
==ကာရန်ဂမၠိုၚ်==
===ဝဏ္ဏမွဲ===
{{rhyme-top}}
* {{l|gem-pro|*dabaną}}
* {{l|gem-pro|*drabaną}}
* {{l|gem-pro|*grabaną}}
* {{l|gem-pro|*hnabaną}}
* {{l|gem-pro|*skabaną}}
{{rhyme-bottom}}
8pcb4t12yq5g9a1oclyff5uendehjr2
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/gʰrebʰ-
118
296304
397664
2026-06-28T07:32:29Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{head|ine-pro|တံရိုဟ်}} # {{alt form|ine-pro|*gʰrebh₂-}}"
397664
wikitext
text/x-wiki
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{head|ine-pro|တံရိုဟ်}}
# {{alt form|ine-pro|*gʰrebh₂-}}
35325j7ifraghw36hqfdhzpa45wxvaj
ဗီုပြၚ်သိုၚ်တၟိ:အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ/gʰrebh₂-
118
296305
397665
2026-06-28T07:36:28Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{reconstructed}} ==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ== ===တံရိုဟ်=== {{head|ine-pro|တံရိုဟ်}} # သကဵုဂိုၚ်၊ ခတာ်ပၠံၚ်။ # သကဵုခါဲ၊ ခရး။ ===မဒုၚ်လွဳစ=== * {{desc|iir-pro|*grabʰ-}} ** {{desc|inc-pro|*grabʰ-}} *** {{desc|sa-ved|ग्रभ्}} **** {{desc|sa..."
397665
wikitext
text/x-wiki
{{reconstructed}}
==အိန်ဒဝ်-ယူရဝ်ပဳယာန်-အခိုက်ကၞာ==
===တံရိုဟ်===
{{head|ine-pro|တံရိုဟ်}}
# သကဵုဂိုၚ်၊ ခတာ်ပၠံၚ်။
# သကဵုခါဲ၊ ခရး။
===မဒုၚ်လွဳစ===
* {{desc|iir-pro|*grabʰ-}}
** {{desc|inc-pro|*grabʰ-}}
*** {{desc|sa-ved|ग्रभ्}}
**** {{desc|sa-cls|ग्रह्}}
j21236m8akuljp8ycfoyjf03nksp3kq