Module:category tree/poscatboiler/data/lang-specific/pt

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This module handles generating the descriptions and categorization for Portuguese category pages of the format "Portuguese LABEL" where LABEL can be any text. Examples are Category:Bulgarian conjugation 2.1 verbs and Category:Russian velar-stem neuter-form nouns. This module is part of the poscatboiler system, which is a general framework for generating the descriptions and categorization of category pages.

For more information, see Module:category tree/poscatboiler/data/lang-specific/documentation.

NOTE: If you add a new language-specific module, you must add the language code to the list at the top of Module:category tree/poscatboiler/data/lang-specific in order for the module to be recognized.


local labels = {}

-----------------------------------------------------------------------------
--                                                                         --
--                                METAPHONY                                --
--                                                                         --
-----------------------------------------------------------------------------

for _, pos in ipairs { "adjectives", "nouns", "participles", "suffixes" } do
	labels[pos .. " with metaphony"] = {
		description = "{{{langname}}} " .. pos .. " characterized by [[Appendix:Portuguese pronunciation#Metaphony|metaphony]] in their plural and feminine inflections; i.e. stressed {{IPAchar|/o/}} in the lemma changes to {{IPAchar|/ɔ/}}.",		parents = {"verbs by inflection type"},
		breadcrumb = "with metaphony",
		parents = {name = pos .. " by inflection type", sort = "metaphony"},
	}
end


-----------------------------------------------------------------------------
--                                                                         --
--                                  VERBS                                  --
--                                                                         --
-----------------------------------------------------------------------------


local conjugations = {
	["ar"] = "{{{langname}}} first conjugation verbs, derived from Latin [[:Category:Latin first conjugation verbs|first conjugation (-āre) verbs]].",
	["er"] = "{{{langname}}} second conjugation verbs, derived from Latin [[:Category:Latin second conjugation verbs|second conjugation (-ēre)]] or [[:Category:Latin third conjugation verbs|third conjugation (-ere)]] verbs.",
	["ir"] = "{{{langname}}} third conjugation verbs, derived from Latin [[:Category:Latin third conjugation verbs|third conjugation (-ere)]] or [[:Category:Latin fourth conjugation verbs|fourth conjugation (-īre)]] verbs.",
	["or"] = "{{{langname}}} verbs ending in {{m|pt||-or}} or {{m|pt||-ôr}}, all of which are derivatives of {{m|pt|pôr}}.",
}

labels["verbs by conjugation"] = {
	description = "{{{langname}}} verbs categorized by conjugation.",
	parents = {"verbs by inflection type"},
}

for conj, conjdesc in pairs(conjugations) do
	labels["verbs ending in -" .. conj] = {
		description = conjdesc,
		displaytitle = "{{{langname}}} verbs ending in {{m|pt||-" .. conj .. "}}",
		parents = {
			{name = "verbs by conjugation", sort = conj},
		},
		breadcrumb = "{{m|pt||-" .. conj .. "}}",
	}
end

labels["verbs by vowel alternation"] = {
	description = "{{{langname}}} verbs categorized by type of vowel alternation.",
	parents = {"verbs by inflection type"},
}

labels["verbs by consonant alternation"] = {
	description = "{{{langname}}} verbs categorized by type of consonant alternation.",
	parents = {"verbs by inflection type"},
}

-- Add labels for e.g. [[Category:Portuguese verbs with e becoming i when stressed]].
local vowel_alternations = {
	["i-e alternation in present singular"] = {
		desc = "with <i> in the first-person singular present indicative and throughout the present subjunctive, and <e> "
			.. "elsewhere when the stem is stressed",
		displaytitle = "<i-e> alternation in present singular",
	},
	["e becoming i when stressed"] = {
		desc = "with <i> in all forms where the stem is stressed (singular present indicative and imperative, third-person "
			.. "plural present indicative and imperative) and throughout the present subjunctive, and <e> elsewhere",
		displaytitle = "<e> becoming <i> when stressed",
	},
	["i becoming í when stressed"] = {
		desc = "with <í> in all forms where the stem is stressed (singular present indicative, subjunctive and imperative; "
			.. "third-person plural present indicative, subjunctive and imperative) and <i> elsewhere",
		displaytitle = "<i> becoming <í> when stressed",
	},
	["u-o alternation in present singular"] = {
		desc = "with <u> in the first-person singular present indicative and throughout the present subjunctive, and <o> "
			.. "elsewhere when the stem is stressed",
		displaytitle = "<u-o> alternation in present singular",
	},
	["o becoming u when stressed"] = {
		desc = "with <u> in all forms where the stem is stressed (singular present indicative and imperative, third-person "
			.. "plural present indicative and imperative) and throughout the present subjunctive, and <o> elsewhere",
		displaytitle = "<o> becoming <u> when stressed",
	},
	["u becoming ú when stressed"] = {
		desc = "with <ú> in all forms where the stem is stressed (singular present indicative, subjunctive and imperative; "
			.. "third-person plural present indicative, subjunctive and imperative) and <u> elsewhere",
		displaytitle = "<u> becoming <ú> when stressed",
	},
	["e becoming ei when stressed"] = {
		desc = "with <ei> in all forms where the stem is stressed (singular present indicative, subjunctive and imperative; "
			.. "third-person plural present indicative, subjunctive and imperative) and <e> elsewhere",
		displaytitle = "<e> becoming <ei> when stressed",
	},
	["i becoming ei when stressed"] = {
		desc = "with <ei> in all forms where the stem is stressed (singular present indicative, subjunctive and imperative; "
			.. "third-person plural present indicative, subjunctive and imperative) and <i> elsewhere",
		displaytitle = "<i> becoming <ei> when stressed",
	},
}

for alt, obj in pairs(vowel_alternations) do
	local function replace_angle_brackets(spec)
		local retval = spec:gsub("<(.-)>", "{{m|pt||%1}}") -- discard second return value
		return retval
	end
	local breadcrumb = replace_angle_brackets(obj.displaytitle)
	labels["verbs with " .. alt] = {
		description = "{{{langname}}} verbs " .. replace_angle_brackets(obj.desc) .. ".",
		displaytitle = "{{{langname}}} verbs with " .. breadcrumb,
		parents = {{name = "verbs by vowel alternation", sort = alt}},
		breadcrumb = breadcrumb,
	}
end


-- Add labels for e.g. [[Category:Portuguese verbs with c-qu alternation]].
local consonant_alternations = {
	["c-qu"] = {"qu", "c"},
	["c-ç"] = {"c", "ç"},
	["g-gu"] = {"gu", "g"},
	["g-j"] = {"g", "j"},
	["gu-gü"] = {"gü", "gu"},
}

for alt, frontback in pairs(consonant_alternations) do
	local desc
	local front, back = unpack(frontback)
	desc = "{{{langname}}} verbs whose final consonant alternates between ''" .. front .. "'' before front vowels (''e'', ''i'') " ..
		"and ''" .. back .. "'' before back vowels (''a'', ''o'', ''u'')."
	labels["verbs with " .. alt .. " alternation"] = {
		description = desc,
		displaytitle = "{{{langname}}} verbs with {{m|pt||" .. alt .. "}} alternation",
		parents = {{name = "verbs by consonant alternation", sort = alt}},
		breadcrumb = "{{m|pt||" .. alt .. "}}",
	}
end

labels["third-person-only verbs"] = {
	description = "{{{langname}}} verbs with forms that exist only in the third person, and have no imperatives.",
	parents = {{name = "defective verbs"}},
	breadcrumb = "third-person-only",
}

labels["verbs with irregular short past participle"] = {
	description = "{{{langname}}} verbs with an irregular short past participle (typically used with {{m|pt|ser}} "
		.. "and {{m|pt|estar}}) that contrasts with a regularly formed \"long\" past participle (typically used with "
		.. "{{m|pt|ter}} and {{m|pt|haver}}).",
	parents = {{name = "irregular verbs", sort = "short past participle"}},
	breadcrumb = "irregular short past participle",
}

return {LABELS = labels}