This module handles generating the descriptions and categorization for ලතින් category pages of the format "ලතින් 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 = {}

labels["terms with variable monophthongization"] = {
	description = "Several Classical Latin terms with /au̯/ or /ae̯/ also have attested variants with /oː/ or /eː/ instead, reflecting influence from regional dialects.",
	parents = {"terms by phonemic property"},
}

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


local conjugations = {
	first = "1",
	second = "2",
	third = "3",
	fourth = "4",
}

local function conjtext_conjlink(conjugation)
	local conjtext = conjugation .. " conjugation"
	local conjlink = "[[Appendix:Latin " .. conjtext .. "|" .. conjtext .. "]]"
	return conjtext, conjlink
end

for conjugation, conjnum in pairs(conjugations) do
	local conjtext, conjlink = conjtext_conjlink(conjugation)
	labels[conjtext .. " verbs"] = {
		description = "{{{langname}}} verbs of the " .. conjlink .. ".",
		parents = {
			{name = "verbs by inflection type", sort = conjnum},
		},
		breadcrumb = conjtext
	}
end

labels["verbs by perfect"] = {
	description = "{{{langname}}} verbs categorized by the formation of their perfect tense.",
	parents = {"verbs by derivation type"},
}

-- Add labels for e.g. [[Category:Latin verbs with perfect in -iv-]] and
-- [[Category:Latin third conjugation verbs with perfect in -s- or -x-]].
local perf_suffixes = {
	["-av-"] = {
		display = "{{m|la||-āv-}}",
		displaytitle = "{{m|la||-av-}}",
	},
	["-ev-"] = {
		display = "{{m|la||-ēv-}}",
		displaytitle = "{{m|la||-ev-}}",
	},
	["-iv-"] = {
		display = "{{m|la||-īv-}}",
		displaytitle = "{{m|la||-iv-}}",
	},
	["-i-"] = {
		display = "{{m|la||-i-}}",
	},
	["-u-"] = {
		display = "{{m|la||-u-}}",
	},
	["-s- or -x-"] = {
		display = "{{m|la||-s-}} or {{m|la||-x-}}",
		affix = "affixes",
	},
}
for perftype, obj in pairs(perf_suffixes) do
	local link = obj.link or obj.display
	local displaytitle = obj.displaytitle or obj.display
	local breadcrumb = obj.display
	local affix = obj.affix or "affix"
	labels["verbs with perfect in " .. perftype] = {
		description = "{{{langname}}} verbs whose perfect tense was formed using the " .. affix .. " " .. link .. ".",
		displaytitle = "{{{langname}}} verbs with perfect in " .. displaytitle,
		parents = {{name = "verbs by perfect", sort = perftype}},
		breadcrumb = breadcrumb,
	}
	for conjugation, conjnum in pairs(conjugations) do
		local conjtext, conjlink = conjtext_conjlink(conjugation)
		labels[conjtext .. " verbs with perfect in " .. perftype] = {
			description = "{{{langname}}} " .. conjlink .. " verbs whose perfect tense was formed using the " .. affix .. " " .. link .. ".",
			displaytitle = "{{{langname}}} " .. conjtext .. " verbs with perfect in " .. displaytitle,
			parents = {
				{name = conjtext .. " verbs", sort = "perfect in " .. perftype},
				{name = "verbs with perfect in " .. perftype, sort = conjnum},
			},
			breadcrumb = "perfect in " .. breadcrumb,
		}
	end
end


-- Add labels for e.g. [[Category:Latin verbs with irregular perfect]] and
-- [[Category:Latin third conjugation verbs with suffixless perfect]].
for perfvar, perfvartext in pairs({
	irregular = "irregularly",
	suffixless = "without a suffix",
}) do
	labels["verbs with " .. perfvar .. " perfect"] = {
		description = "{{{langname}}} verbs whose perfect tense was formed " .. perfvartext .. ".",
		parents = {{name = "verbs by perfect", sort = perfvar}},
		breadcrumb = perfvar,
	}
	for conjugation, conjnum in pairs(conjugations) do
		local conjtext, conjlink = conjtext_conjlink(conjugation)
		labels[conjtext .. " verbs with " .. perfvar .. " perfect"] = {
			description = "{{{langname}}} " .. conjlink .. " verbs whose perfect tense was formed " .. perfvartext .. ".",
			parents = {
				{name = conjtext .. " verbs", sort = perfvar .. " perfect"},
				{name = "verbs with " .. perfvar .. " perfect", sort = conjnum},
			},
			breadcrumb = perfvar .. " perfect",
		}
	end
end

labels["verbs with sigmatic forms"] = {
	description = "{{{langname}}} verbs attested in one of the [[sigmatic]] tenses, which are found in [[Old Latin]]; mostly notably used by [[w:Plautus|Plautus]] and [[w:Terence|Terence]].",
	parents = {"verbs"},
	breadcrumb = "sigmatic forms"
}

labels["verbs with passive sigmatic forms"] = {
	description = "{{{langname}}} verbs attested in the rare [[sigmatic]] future passive indicative tense, which is found in [[Old Latin]].",
	parents = {"verbs with sigmatic forms"},
	breadcrumb = "passive"
}

labels["verbs without the conjugation in their headwords"] = {
	description = "{{{langname}}} verbs whose headwords are missing the conjugation.",
	parents = {"ප්‍රවේශ නඩත්තුව"},
	hidden = true,
}



-----------------------------------------------------------------------------
--                                                                         --
--                                  NOUNS                                  --
--                                                                         --
-----------------------------------------------------------------------------


local genders = {
	"masculine",
	"feminine",
	"neuter",
	"unknown gender",
	"unattested gender",
}

local noun_declensions = {
	first = "1",
	second = "2",
	third = "3",
	fourth = "4",
	fifth = "5",
}

local function decltext_decllink(declension)
	local decltext = declension .. " declension"
	local decllink = "[[Appendix:Latin " .. decltext .. "|" .. decltext .. "]]"
	return decltext, decllink
end

for _, pos in ipairs({"නාම පද", "suffixes"}) do
	-- Add labels for e.g. [[Category:Latin fifth declension suffixes]] and
	-- [[Category:Latin feminine nouns in the fourth declension]].
	for decl, declnum in pairs(noun_declensions) do
		local decltext, decllink = decltext_decllink(decl)
		labels[decltext .. " " .. pos] = {
			description = "{{{langname}}} " .. pos .. " of the " .. decllink .. ".",
			parents = {{name = pos .. " by inflection type", sort = declnum}},
			breadcrumb = decltext,
		}

		for _, gender in ipairs(genders) do
			labels[gender .. " " .. pos .. " in the " .. decltext] = {
				description = "{{{langname}}} " .. gender .. " " .. pos .. " of the " .. decllink .. ".",
				parents = {
					{name = decltext .. " " .. pos, sort = gender},
					{name = gender .. " " .. pos, sort = declnum},
				},
				breadcrumb = gender,
			}
		end
	end

	-- Add labels for e.g. [[Category:Latin masculine indeclinable nouns]] and
	-- [[Category:Latin feminine irregular nouns]].
	for _, nounvar in ipairs({"indeclinable", "irregular"}) do
		for _, gender in ipairs(genders) do
			local decltext = nounvar
			local decllink = "{{glossary|" .. nounvar .. "}}"
			labels[gender .. " " .. decltext .. " " .. pos] = {
				description = "{{{langname}}} " .. gender .. " " .. decllink .. " " .. pos .. ".",
				parents = {
					{name = decltext .. " " .. pos, sort = gender},
					{name = gender .. " " .. pos, sort = decltext},
				},
				breadcrumb = gender,
			}
		end
	end
	
	-- Add labels for e.g. [[Category:Latin unknown gender nouns]].
	labels["unknown gender " .. pos] = {
		description = "{{{langname}}} unknown gender " .. pos .. ".",
		parents = {
			{name = "nouns by gender", sort = "unknown"},
		},
		breadcrumb = "unknown",
	}
	
	-- Add labels for e.g. [[Category:Latin unattested gender nouns]].
	labels["unattested gender " .. pos] = {
		description = "{{{langname}}} " .. pos .. " whose gender is unattested, typically because the term itself is barely attested.",
		parents = {
			{name = "nouns by gender", sort = "unattested"},
		},
		breadcrumb = "unattested",
	}
	
	-- Add labels for e.g. [[Category:Latin nouns with a genitive singular]].
	labels[pos .. " without a genitive singular"] = {
		description = "{{{langname}}} " .. pos .. " without a genitive singular.",
		parents = {
			{name = "irregular nouns", sort = "without a genitive singular"},
		},
		breadcrumb = "without a genitive singular",
	}
end

-----------------------------------------------------------------------------
--                                                                         --
--                                ADJECTIVES                               --
--                                                                         --
-----------------------------------------------------------------------------


-- First/second declension adjectival subtypes, e.g.
-- [[Category:Latin first and second declension numerals with genitive singular in -īus]].
local subtypes_12 = {
	["nominative masculine singular in -er"] = {
		display = "nominative masculine singular in {{m|la||-er}}",
	},
	["nominative masculine singular in -ur"] = {
		display = "nominative masculine singular in {{m|la||-ur}}",
	},
	["genitive singular in -īus"] = {
		display = "genitive singular in {{m|la||-īus}}",
		link = "genitive singular in {{m|la|-īus}}",
	},
	["Greek declension"] = {
		display = "Greek declension",
	},
}

-- Add labels for e.g. [[Category:Latin first and second declension participles]],
-- [[Category:Latin first and second declension adjectives with Greek declension]] and
-- [[Category:Latin third declension determiners]].
for _, pos in ipairs({"adjectives", "numerals", "determiners", "participles", "suffixes"}) do
	local decltext = "first and second declension"
	local decllink = "[[Appendix:Latin first declension|first]] and [[Appendix:Latin second declension|second declension]]"
	labels[decltext .. " " .. pos] = {
		description = "{{{langname}}} " .. pos .. " of the " .. decllink .. ".",
		parents = {{name = pos .. " by inflection type", sort = "12"}},
		breadcrumb = decltext,
	}
	for subtype, obj in pairs(subtypes_12) do 
		labels[decltext .. " " .. pos .. " with " .. subtype] = {
			description = "{{{langname}}} " .. pos .. " of the " .. decllink .. " with " .. (obj.link or obj.display) .. ".",
			displaytitle = "{{{langname}}} " .. decltext .. " " .. pos .. " with " .. obj.display,
			parents = {{name = decltext .. " " .. pos, sort = subtype}},
			breadcrumb = obj.display,
		}
	end
	local decltext3, decllink3 = decltext_decllink("third")
	labels[decltext3 .. " " .. pos] = {
		description = "{{{langname}}} " .. pos .. " of the " .. decllink3 .. ".",
		parents = {{name = pos .. " by inflection type", sort = "3"}},
		breadcrumb = decltext3,
	}
	for num_terms, third_decl_subtype in ipairs({"one termination", "two terminations", "three terminations"}) do
		labels[decltext3 .. " " .. pos .. " of " .. third_decl_subtype] = {
			description = "{{{langname}}} " .. pos .. " of the " .. decllink3 .. ", with " ..
				third_decl_subtype .. " in the nominative singular.",
			parents = {{name = decltext3 .. " " .. pos, sort = num_terms}},
			breadcrumb = third_decl_subtype,
		}
	end
end

-- Add labels for [[Category:Latin first declension adjectives]], [[Category:Latin second declension adjectives]].
for decl, declnum in pairs({first = "1", second = "2"}) do
	local decltext, decllink = decltext_decllink(decl)
	labels[decltext .. " adjectives"] = {
		description = "{{{langname}}} adjectives of the " .. decllink .. " (feminine forms identical to masculine forms).",
		parents = {{name = "adjectives by inflection type", sort = declnum}},
		breadcrumb = decltext,
	}
end

local decltext2, decllink2 = decltext_decllink("second")
labels["second declension adjectives with Greek declension"] = {
	description = "{{{langname}}} adjectives of the " .. decllink2 .. " (feminine forms identical to masculine forms), Greek declension.",
	parents = {{name = "second declension adjectives", sort = "Greek declension"}},
	breadcrumb = "Greek declension",
}


return {LABELS = labels}