ဝိက်ရှေန်နရဳ 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", "&#91;&#91;") :gsub("\2", "&#93;&#93;") :gsub("%[", "&#91;") :gsub("]", "&#93;") -- 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 &lt;y&gt; of its stem may optionally be written as &lt;i&gt; " .. "when it precedes a silent &lt;e&gt; (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 "&mdash;" 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 "&mdash;" 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 "&mdash;" 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 "&mdash;" 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 "&mdash;" 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 "&mdash;" 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" | ရမျာၚ်&nbsp;မစိုပ်တရဴ | rowspan="10" class="separator" | ! colspan="2" class="outer" | ရမျာၚ်&nbsp;ဟွံတဝ်စၞေဟ် |- ! [[ကာလ&nbsp;ပစ္စုပ္ပန်]] ! [[indicative mood|မစၞောန်ရန်]] ! [[subjunctive mood|အရေဝ်နိဒါန်]] ! [[imperative mood|ဟွံဍိုက်ပေၚ်]] ! [[indicative mood|မစၞောန်ရန်]] ! [[subjunctive mood|အရေဝ်နိဒါန်]] |- ! ကိုန်ဨကဝုစ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["pres_indc_1sg"] .. " || " .. forms["pres_subj_1sg"] .. " || &mdash; || " .. forms["pasv_indc_1sg"] .. " || " .. forms["pasv_subj_1sg"] .. [=[ |- ! ကိုန်ဨကဝုစ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["pres_indc_2sg"] .. " || " .. forms["pres_subj_2sg"] .. " || " .. forms["impr_2sg"] .. " || " .. forms["pasv_indc_2sg"] .. " || " .. forms["pasv_subj_2sg"] .. [=[ |- ! ကိုန်ဨကဝုစ်&nbsp;[[third person|မရနုက်ကဵု၃]] | ]=] .. forms["pres_indc_3sg"] .. " || " .. forms["pres_subj_3sg"] .. " || " .. forms["impr_3sg"] .. " || " .. forms["pasv_indc_3sg"] .. " || " .. forms["pasv_subj_3sg"] .. [=[ |- ! ၜါလ္ပာ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["pres_indc_1du"] .. " || " .. forms["pres_subj_1du"] .. " || &mdash; || " .. forms["pasv_indc_1du"] .. " || " .. forms["pasv_subj_1du"] .. [=[ |- ! ၜါလ္ပာ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["pres_indc_2du"] .. " || " .. forms["pres_subj_2du"] .. " || " .. forms["impr_2du"] .. " || " .. forms["pasv_indc_2du"] .. " || " .. forms["pasv_subj_2du"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["pres_indc_1pl"] .. " || " .. forms["pres_subj_1pl"] .. " || &mdash; || " .. forms["pasv_indc_1pl"] .. " || " .. forms["pasv_subj_1pl"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["pres_indc_2pl"] .. " || " .. forms["pres_subj_2pl"] .. " || " .. forms["impr_2pl"] .. " || " .. forms["pasv_indc_2pl"] .. " || " .. forms["pasv_subj_2pl"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[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" | [[ကာလ&nbsp;အတိက်]] ! [[indicative mood|မစၞောန်ရန်]] ! [[subjunctive mood|အရေဝ်နိဒါန်]] |- ! ကိုန်ဨကဝုစ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["past_indc_1sg"] .. " || " .. forms["past_subj_1sg"] .. [=[ |- ! ကိုန်ဨကဝုစ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["past_indc_2sg"] .. " || " .. forms["past_subj_2sg"] .. [=[ |- ! ကိုန်ဨကဝုစ်&nbsp;[[third person|မရနုက်ကဵု၃]] | ]=] .. forms["past_indc_3sg"] .. " || " .. forms["past_subj_3sg"] .. [=[ |- ! ၜါလ္ပာ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["past_indc_1du"] .. " || " .. forms["past_subj_1du"] .. [=[ |- ! ၜါလ္ပာ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["past_indc_2du"] .. " || " .. forms["past_subj_2du"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[first person|မရနုက်ကဵု၁]] | ]=] .. forms["past_indc_1pl"] .. " || " .. forms["past_subj_1pl"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[second person|မရနုက်ကဵု၂]] | ]=] .. forms["past_indc_2pl"] .. " || " .. forms["past_subj_2pl"] .. [=[ |- ! ကိုန်ဗဟုဝစ်&nbsp;[[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