Modul:category tree/grammatical classes
Penampilan
- Berikut merupakan pendokumenan yang dijana oleh Templat:category tree data submodule documentation. [sunting]
- Pautan berguna: akar laman • sublaman akar laman • pautan • transklusi • kes ujian • kotak pasir
Submodul data ini mentakrifkan sebahagian daripada struktur kategori Wikikamus.
Untuk pengenalan kepada sistem poscatboiler dan penerangan tentang cara menambah atau mengubah suai kategori, lihat Modul:category tree/data/doc.
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["Perkataan mengikut kategori tatabahasa"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "Asas",
parents = {{name = "{{{langcat}}}", raw = true}},
}
------- GENDER -------
for _, pos in ipairs { "Kata nama", "Kata ganti nama", "Kata nama khas", "Akhiran" } do
labels[pos .. " mengikut jantina"] = {
description = pos .. " bahasa {{{langname}}} mengikut jantina yang digolongnya.",
breadcrumb = "mengikut jantina",
parents = {{name = pos, sort = "jantina"}},
}
labels[pos .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. pos, sort = "irregular gender"}},
}
labels[pos .. " dengan berbilang jantina"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = pos .. " mengikut jantina", sort = "berbilang jantina"}},
}
labels["common-gender " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {pos .. " mengikut jantina"},
}
labels[pos .. " feminin"] = {
description = pos .. " bahasa {{{langname}}} dalam jantina {{glossary|feminin}}, yakni kategori jantina yang mengandungi makhluk wanita (dan lain-lain).",
breadcrumb = "feminin",
parents = {pos .. " mengikut jantina"},
}
labels[pos .. " maskulin"] = {
description = pos .. " bahasa {{{langname}}} dalam jantina {{glossary|maskulin}}, yakni kategori jantina yang mengandungi makhluk lelaki (dan lain-lain).",
breadcrumb = "maskulin",
parents = {pos .. " mengikut jantina"},
}
labels["masculine and feminine " .. pos .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "masculine and feminine by sense",
parents = {pos .. " mengikut jantina"},
}
labels[pos .. " neuter"] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "neuter",
parents = {pos .. " mengikut jantina"},
}
labels["gender-neutral " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {pos .. " mengikut jantina", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "suffixes"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. " mengikut jenis infleksi"},
}
end
------- NOUN CLASSES -------
labels["Kata nama mengikut kelas"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "mengikut kelas",
parents = {{name = "Kata nama", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"nouns"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"nouns"},
}
------- ANIMACY -------
for _, pos in ipairs({"nouns", "suffixes", "verbs"}) do
labels["animate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["inanimate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"nouns", "suffixes"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"Kata sifat",
"Adverba",
"determiners",
"Kata nama",
"Kata bilangan",
"Partisipel",
"Kata ganti nama",
"Kata nama khas",
"Akhiran",
"Kata kerja",
}
for _, pos in ipairs(inflected_poses) do
labels[pos .. " mengikut jenis infleksi"] = {
description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.",
breadcrumb = "mengikut jenis infleksi",
parents = {{name = pos, sort = "infleksi"}},
}
labels[pos .. " tak teratur"] = {
description = pos .. " bahasa {{{langname}}} yang mengikuti corak infleksi yang tidak piawai.",
breadcrumb = "tak teratur",
parents = {pos .. " mengikut jenis infleksi"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {"irregular " .. pos},
}
if pos ~= "Kata kerja" and pos ~= "Adverba" then
labels[pos .. " tegar"] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "tegar",
parents = {pos .. " mengikut jenis infleksi"},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. " mengikut jenis infleksi", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. " mengikut jenis infleksi", sort = "multiple plurals"}},
}
end
labels[pos .. " mengikut nada"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "mengikut nada",
parents = {{name = pos .. " mengikut jenis infleksi", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. " mengikut jenis infleksi", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives mengikut jenis infleksi"},
}
for _, pos in ipairs { "Kata nama", "Kata nama khas", "Kata ganti nama" } do
labels[pos .. " dengan bentuk jamak tak teratur"] = {
description = pos .. " bahasa {{{langname}}} dengan bentuk jamaknya terbentuk secara tak teratur.",
breadcrumb = "dengan bentuk jamak tak teratur",
parents = {{name = pos .. " tak teratur", sort = "bentuk jamak tak teratur"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. " by inflection type"},
}
end
------- GERMANIC VERB CLASSES -------
-- FIXME: Not clear this belongs among the general categories.
labels["Kata kerja kuat"] = {
description = "{{{langname}}} verbs that present different stem vowels in their typically regular conjugated forms.",
breadcrumb = "kuat",
parents = {"Kata kerja mengikut jenis infleksi"},
}
labels["Kata kerja lemah"] = {
description = "{{{langname}}} verbs that display dental suffixes in their past tense conjugated forms.",
breadcrumb = "lemah",
parents = {"Kata kerja mengikut jenis infleksi"},
}
labels["preterite-present verbs"] = {
description = "{{{langname}}} verbs that inflect in the present tense like the past tense of strong verbs.",
breadcrumb = "preterite-present",
parents = {"Kata kerja mengikut jenis infleksi"},
}
labels["Kata kerja kuat kelas 1"] = {
description = "Verbs where the [[ablaut]] vowel was followed by ''-y-'' in Proto-Indo-European.",
breadcrumb = "kelas 1",
parents = {{name = "Kata kerja kuat", sort = "1"}},
}
labels["Kata kerja lemah kelas 1"] = {
description = "Weak verbs of the first class.",
breadcrumb = "kelas 1",
parents = {{name = "Kata kerja lemah", sort = "1"}},
}
labels["Kata kerja kuat kelas 2"] = {
description = "Verbs where the [[ablaut]] vowel was followed by ''-w-'' in Proto-Indo-European.",
breadcrumb = "kelas 2",
parents = {{name = "Kata kerja kuat", sort = "2"}},
}
labels["Kata kerja kuat kelas 2a"] = {
description = "Verbs where the [[ablaut]] vowel was *eu in Proto-Germanic.",
breadcrumb = "kelas 2a",
parents = {{name = "Kata kerja kuat kelas 2", sort = "1"}},
}
labels["Kata kerja kuat kelas 2b"] = {
description = "Verbs where the [[ablaut]] vowel was *ū in Proto-Germanic.",
breadcrumb = "kelas 2b",
parents = {{name = "Kata kerja kuat kelas 2", sort = "2"}},
}
labels["Kata kerja lemah kelas 2"] = {
description = "Weak verbs of the second class.",
breadcrumb = "kelas 2",
parents = {{name = "Kata kerja lemah", sort = "2"}},
}
labels["Kata kerja lemah kelas 3"] = {
description = "Weak verbs of the third class.",
breadcrumb = "kelas 3",
parents = {{name = "Kata kerja lemah", sort = "3"}},
}
labels["Kata kerja kuat kelas 3"] = {
description = "Verbs where the [[ablaut]] vowel was followed by a [[consonant cluster]] in Proto-Indo-European.",
breadcrumb = "kelas 3",
parents = {{name = "Kata kerja kuat", sort = "3"}},
}
labels["Kata kerja kuat kelas 3a"] = {
description = "Verbs where the [[consonant cluster]] begins with a nasal consonant.",
breadcrumb = "kelas 3a",
parents = {{name = "Kata kerja kuat kelas 3", sort = "1"}},
}
labels["Kata kerja kuat kelas 3b"] = {
description = "Verbs where the [[consonant cluster]] begins with a lateral consonant or velar fricative.",
breadcrumb = "kelas 3b",
parents = {{name = "Kata kerja kuat kelas 3", sort = "2"}},
}
labels["Kata kerja kuat kelas 3c"] = {
description = "Verbs where the [[consonant cluster]] begins with a rhotic consonant.",
breadcrumb = "kelas 3c",
parents = {{name = "Kata kerja kuat kelas 3", sort = "3"}},
}
labels["Kata kerja kuat kelas 4"] = {
description = "Verbs where the [[ablaut]] vowel was followed by a [[sonorant]] (''m'', ''n'', ''l'', ''r'') but no other consonant in Proto-Indo-European.",
breadcrumb = "kelas 4",
parents = {{name = "Kata kerja kuat", sort = "4"}},
}
labels["Kata kerja lemah kelas 4"] = {
description = "Weak verbs of the fourth class.",
breadcrumb = "kelas 4",
parents = {{name = "Kata kerja lemah", sort = "4"}},
}
labels["Kata kerja kuat kelas 5"] = {
description = "Verbs where the [[ablaut]] vowel was followed by [[consonant]] other than a [[sonorant]] in Proto-Indo-European.",
breadcrumb = "kelas 5",
parents = {{name = "Kata kerja kuat", sort = "5"}},
}
labels["Kata kerja kuat kelas 6"] = {
description = "The Proto-Indo-European origin of this class is not securely known. It contains verbs with the stem vowel ''-a-'', except those where it is followed by a sonorant and another consonant (this combination was considered a diphthong in PIE and therefore belonged to class 7).",
breadcrumb = "kelas 6",
parents = {{name = "Kata kerja kuat", sort = "6"}},
}
labels["Kata kerja kuat kelas 7"] = {
description = "Verbs that retained their reduplication in the past tense in Proto-Germanic.",
breadcrumb = "kelas 7",
parents = {{name = "Kata kerja kuat", sort = "7"}},
}
labels["Kata kerja kuat kelas 7a"] = {
description = "Class 7 strong verbs where the root vowel was ''*ai'' in Proto-Germanic, analogous to class 1.",
breadcrumb = "kelas 7a",
parents = {{name = "Kata kerja kuat kelas 7", sort = "a"}},
}
labels["Kata kerja kuat kelas 7b"] = {
description = "Class 7 strong verbs where the root vowel was ''*au'' in Proto-Germanic, analogous to class 2.",
breadcrumb = "kelas 7b",
parents = {{name = "Kata kerja kuat kelas 7", sort = "b"}},
}
labels["Kata kerja kuat kelas 7c"] = {
description = "Class 7 strong verbs where the root vowel was ''*a'' followed by a [[consonant cluster]] in Proto-Germanic, analogous to class 3.",
breadcrumb = "kelas 7c",
parents = {{name = "Kata kerja kuat kelas 7", sort = "c"}},
}
labels["Kata kerja kuat kelas 7d"] = {
description = "Class 7 strong verbs where the root vowel was ''*ē'' in Proto-Germanic.",
breadcrumb = "kelas 7d",
parents = {{name = "Kata kerja kuat kelas 7", sort = "d"}},
}
labels["Kata kerja kuat kelas 7e"] = {
description = "Class 7 strong verbs where the root vowel was ''*ō'' in Proto-Germanic.",
breadcrumb = "kelas 7e",
parents = {{name = "Kata kerja kuat kelas 7", sort = "e"}},
}
------- TUPIAN LEMMA CLASSES -------
-- FIXME: Present in Old Tupi, Nheengatu, Guaraní and some other Tupian languages; not clear if this belongs among the general categories.
labels["pluriform adjectives"] = {
description = "{{{langname}}} adjectives that have a relational prefix added to their stem.",
breadcrumb = "pluriform",
parents = {"adjectives mengikut jenis infleksi"},
}
labels["pluriform nouns"] = {
description = "{{{langname}}} nouns that have a relational prefix added to their stem.",
breadcrumb = "pluriform",
parents = {"nouns mengikut jenis infleksi"},
}
labels["pluriform postpositions"] = {
description = "{{{langname}}} postpositions that have a relational prefix added to their stem.",
breadcrumb = "pluriform",
parents = {"postpositions mengikut jenis infleksi"},
}
labels["pluriform verbs"] = {
description = "{{{langname}}} verbs that have a relational prefix added to their stem.",
breadcrumb = "pluriform",
parents = {"Kata kerja mengikut jenis infleksi"},
}
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Subkategori perkataan mengikut kategori tatabahasa mengikut bahasa"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Subkategori perkataan mengikut kategori tatabahasa mengikut bahasa"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Metakategori payung",
{name = "Perkataan mengikut kategori tatabahasa", is_label = true, sort = " "},
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Metakategori payung",
"Subkategori perkataan mengikut kategori tatabahasa mengikut bahasa",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^Kata nama kelas ([0-9a-z]+)")
if class then
local classnum, suffix = class:match("^([0-9]+)([a-z]*)$")
return {
description =
"Kata nama bahasa {{{langname}}} yang tergolong dalam kelas " .. class .. ".",
breadcrumb = class,
umbrella = false,
parents = {{
name = "Kata nama mengikut kelas",
sort = classnum and ("#%02d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) dengan nada ([^ ]+)$")
if pos then
return {
description = pos .. " bahasa {{{langname}}} dengan nada " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " mengikut nada",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(Kata nama) dengan penjodoh bilangan (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = pos .. " bahasa {{{langname}}} yang menggunakan " .. linktext .. " sebagai penjodoh bilangan.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " mengikut penjodoh bilangan",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}