Wiktionary
siwiktionary
https://si.wiktionary.org/wiki/%E0%B7%80%E0%B7%92%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%B1%E0%B6%BB%E0%B7%92:%E0%B6%B8%E0%B7%94%E0%B6%BD%E0%B7%8A_%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B7%94%E0%B7%80
MediaWiki 1.47.0-wmf.1
case-sensitive
මාධ්යය
විශේෂ
සාකච්ඡාව
පරිශීලක
පරිශීලක සාකච්ඡාව
වික්ෂනරි
වික්ෂනරි සාකච්ඡාව
ගොනුව
ගොනුව සාකච්ඡාව
මාධ්යවිකි
මාධ්යවිකි සාකච්ඡාව
සැකිල්ල
සැකිලි සාකච්ඡාව
උදවු
උදවු සාකච්ඡාව
ප්රවර්ගය
ප්රවර්ග සාකච්ඡාව
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Module:category tree/entry maintenance
828
6010
233716
229696
2026-04-15T09:16:36Z
en>Surjection
0
Changed protection settings for "[[Module:category tree/entry maintenance]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
233716
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local functions_module = "Module:fun"
local languages_module = "Module:languages"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local table_module = "Module:table"
local extend = require(table_module).extend
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["entry maintenance"] = {
description = "{{{langname}}} entries, or entries in other languages containing {{{langname}}} terms, that are being tracked for attention and improvement by editors.",
parents = {{name = "{{{langcat}}}", raw = true}},
umbrella_parents = "Fundamental",
}
labels["entries with incorrect language header"] = {
description = "{{{langname}}} entries that have been placed under the wrong language header.",
additional = "This can happen for several reasons:\n" ..
"* Typos.\n" ..
"* Vandalism.\n" ..
"* Using the wrong language code.\n" ..
"* Using an alternative name for the language.\n" ..
"* Using special characters which haven't been used in the name given in the language data modules.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries without References header"] = {
description = "{{{langname}}} entries without a References header.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries without References or Further reading header"] = {
description = "{{{langname}}} entries without a References or Further reading header.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries that don't exist"] = {
description = "{{{langname}}} terms that do not meet the [[Wiktionary:Criteria for inclusion|criteria for inclusion]] (CFI). They are added to the category with the template {{tl|no entry|{{{langcode}}}}}.",
parents = {"entry maintenance"},
umbrella_parents = "Fundamental",
}
labels["entries with etymology trees"] = {
description = "{{{langname}}} entries that display an etymology tree generated by the template {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with etymology texts"] = {
description = "{{{langname}}} entries that display an etymology generated by the template {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing missing etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon that cannot be found, either because the target page does not exist (redlink) or because it has no {{tl|etymon}} template.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing ambiguous etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon without the ID, when the target page contains multiple {{tl|etymon}} templates, and an ID is therefore required to select the correct {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons with mismatched IDs"] = {
description = "Entries which use the {{tl|etymon}} template with a mismatched ID. For example, {{code|lang:entry<id:mismatched ID>}}",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has no Descendants section.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without this term in Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has a Descendants section, but does not list the current term there.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with language name categories using raw markup"] = {
description = "{{{langname}}} entries that have been placed in a language name category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langname}}} ...]]}}). They should be added using {{tl|cln|{{{langcode}}}|...}} instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with topic categories using raw markup"] = {
description = "{{{langname}}} entries that have been placed in a topic category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langcode}}}:...]]}}). They should be added using {{tl|C|{{{langcode}}}|...}} instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with outdated source"] = {
description = "{{{langname}}} entries that have been partly or fully imported from an outdated source.",
parents = {"entry maintenance"},
}
labels["entries with inflection not matching pagename"] = {
description = "{{{langname}}} entries which have an inflection table whose lemma form does not match the page name.",
additional = "This is usually the result of incorrect or missing parameters.",
breadcrumb_and_first_sort_key = "inflection not matching pagename",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["undefined derivations"] = {
description = "{{{langname}}} etymologies using {{tl|undefined derivation}}, where a more specific template such as {{tl|borrowed}} or {{tl|inherited}} should be used instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["descendants to be fixed in desctree"] = {
description = "Entries that use {{tl|desctree}} to link to {{{langname}}} entries with no Descendants section.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["term requests"] = {
description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["redlinks"] = {
description = "Links to {{{langname}}} entries that have not been created yet.",
parents = {"entry maintenance"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["terms with IPA pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of IPA.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with enPR pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of enPR.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with Indic pronunciation"] = {
description = "{{langname}} terms that include the pronunciation in the form of ISO 15919.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["IPA pronunciations with invalid separators"] = {
description = "{{{langname}}} terms with IPA using invalid separators such as /.ˈ/, /.ˌ/, a dot followed by primary or secondary stress; or /ˈ / or /ˌ /, primary or secondary stress followed by a space.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["terms with hyphenation"] = {
description = "{{{langname}}} terms that include hyphenation.",
parents = {"entry maintenance"},
}
labels["terms with audio pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of an audio file.",
additional = "For requests related to this category, see [[:Category:Requests for audio pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with nonstandard or incorrect audio pronunciations"] = {
description = "{{{langname}}} terms which have been tagged as having pronunciations which are nonstandard or incorrect.",
parents = {"terms with audio pronunciation"},
can_be_empty = true,
hidden = true,
}
labels["entries missing Template:reconstructed"] = {
description = "Reconstructed {{{langname}}} entries which do not have the {{tl|reconstructed}} template.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation)
labels[label] = {
description = desc or "Pages containing {{{langname}}} " .. label .. ".",
additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" ..
"Note that the pages in this category are not necessarily the same as the actual term in question. This " ..
"frequently happens, for example, with English pages with translation sections, where the term that " ..
"triggers the addition of the category is one of the translations."),
parents = {"entry maintenance"},
-- Set catfix = false because the page will have a mixture of native-language and
-- non-native-language pages, but include the normal native-language table of contents headers
-- because most pages are in the native language.
catfix = false,
toc_template = "{{{langcode}}}-categoryTOC",
toc_template_full = "{{{langcode}}}-categoryTOC/full",
can_be_empty = true,
hidden = true,
}
end
add_manual_param_category("terms in nonstandard scripts", nil,
"Pages are placed here if they contain terms written in a script that isn't in the language's " ..
"list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.",
true)
add_manual_param_category("terms with non-redundant manual transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with redundant transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant manual script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.",
true)
add_manual_param_category("terms with redundant script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant non-automated sortkeys",
"{{{langname}}} terms with non-redundant non-automated sortkeys.",
"Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " ..
"generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " ..
"parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " ..
"sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " ..
"page will also be added here.")
add_manual_param_category("terms with redundant sortkeys",
"{{{langname}}} terms with redundant sortkeys.",
"Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " ..
"as the one which is automatically generated.")
add_manual_param_category("links with redundant target parameters",
"Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " ..
"separately.",
"This occurs when the only difference between the link target and the alt text is that the alt text contains " ..
"diacritics (or other characters) which would have been ignored anyway had they been included in the link " ..
"target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " ..
"({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " ..
"displayed.")
add_manual_param_category("links with ignored alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.",
"This occurs when the alt text makes no difference to the output. For example, {{tl|l|en|foo|foo}} " ..
"({{l|en|foo|foo}}) is exactly the same as {{tl|l|en|foo}} ({{l|en|foo}}).")
add_manual_param_category("links with ignored id parameters",
"Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant wikilinks",
"Pages containing {{{langname}}} links which contain a redundant wikilink.",
"This occurs if link target consists of a single wikilink, which should instead be entered in the " ..
"conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " ..
"is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " ..
"{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " ..
"unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}")
add_manual_param_category("links with manual fragments",
"Pages containing {{{langname}}} links where a manual link fragment has been given.",
"This occurs when the link fragment has been specified using {{code|#}} after the term, " ..
"which overrides the normal fragment generated by link templates that points to the relevant " ..
"language section.\n\nLink fragments are used to point to a specific section on a target page, and " ..
"it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " ..
"additional content is added to the target page: for example, the fragment {{code|#Adjective}} " ..
"will start pointing to the wrong section if another language with an adjective section is added above " ..
"the intended language.")
labels["descendant hubs"] = {
description = "{{{langname}}} terms that do not mean more than the sum of their parts but exist for listing two or more inclusion-worthy descendants.",
parents = {"entry maintenance"},
}
labels["terms needing to be assigned to a sense"] = {
description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
--[=[
labels["terms with inflection tables"] = {
description = "{{{langname}}} entries that contain inflection tables.".
additional = "For requests related to this category," see [[:Category:Requests for inflections in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
]=]
labels["terms with collocations"] = {
description = "{{{langname}}} entries that contain [[collocation]]s that were added using templates such as {{tl|co}}.",
additional = "For requests related to this category, see [[:Category:Requests for collocations in {{{langname}}}]]. See also [[:Category:Requests for quotations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with usage examples"] = {
description = "{{{langname}}} entries that contain usage examples that were added using templates such as {{tl|ux}}.",
additional = "For requests related to this category, see [[:Category:Requests for example sentences in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for quotations in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with quotations"] = {
description = "{{{langname}}} entries that contain quotes that were added using templates such as {{tl|quote}}, {{tl|quote-book}}, {{tl|quote-journal}}, etc.",
additional = "For requests related to this category, see [[:Category:Requests for quotations in {{{langname}}}]]. See also [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with interlinear glossed text"] = {
description = "{{{langname}}} entries that contain interlinear glossed text added using {{tl|interlinear}}.",
parents = {"entry maintenance"},
}
labels["terms with redundant head parameter"] = {
description = "{{{langname}}} terms that contain a redundant head= parameter in their headword (called using {{tl|head}} or a language-specific equivalent).",
additional = "Individual languages can prevent terms from being added to this category by setting `data.no_redundant_head_cat`.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their headword lines"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"redlinks"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their inflection tables"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"redlinks"},
can_be_empty = true,
hidden = true,
}
labels["requests for English equivalent term"] = {
description = "{{{langname}}} entries with definitions that have been tagged with {{tl|rfeq}}. Read the documentation of the template for more information.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
for _, quot_type in ipairs { "quotations", "usage examples" } do
labels[quot_type .. " with omitted translation"] = {
description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying {{code|-}}. The translation should be supplied instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs({"nouns", "proper nouns", "verbs", "adjectives", "adverbs", "participles", "determiners", "pronouns", "numerals", "suffixes", "contractions"}) do
labels[pos .. " with red links in their headword lines"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"terms with red links in their headword lines"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
labels[pos .. " with red links in their inflection tables"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"terms with red links in their inflection tables"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
local label = pos .. " with unknown or uncertain plurals"
labels[label] = {
description = "{{{langname}}} " .. label .. ".",
additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " ..
"is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " ..
"using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " ..
"that a plural cannot be attested but the noun is theoretically countable.",
breadcrumb = "with unknown or uncertain plurals",
parents = {
{name = pos, sort = "unknown or uncertain plurals"},
"entry maintenance",
},
}
end
-- Add 'umbrella_parents' key if not already present.
for _, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Entry maintenance subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Entry maintenance subcategories by language"] = {
description = "Umbrella categories covering topics related to entry maintenance.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "entry maintenance", is_label = true, sort = " "},
},
}
raw_categories["Requests"] = {
topright = "{{shortcut|WT:CR|WT:RQ}}",
description = "A parent category for the various request categories.",
parents = {"Category:Wiktionary"},
}
raw_categories["Requests by language"] = {
description = "Categories with requests in various specific languages.",
additional = "{{{umbrella_msg}}}",
parents = {
{name = "Request subcategories by language", sort = " "},
{name = "Requests", sort = " "},
},
breadcrumb = "By language",
}
raw_categories["Request subcategories by language"] = {
description = "Umbrella categories covering topics related to requests.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "Requests", sort = " "},
},
}
raw_categories["Requests for quotations by source"] = {
description = "Categories with requests for quotation, broken out by the source of the quotation.",
additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].",
parents = {{name = "Requests for quotations", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for quotations"] = {
-- FIXME
description = "Words are added to this category by the inclusion in their entries of {{tl|rfv-quote}}.",
parents = {{name = "Requests", sort = "quotations"}},
breadcrumb = "Quotations",
}
raw_categories["Requests for date"] = {
description = "Requests for a date to be added to a quotation.",
additional = "To add an article to this category, use {{tl|rfdate}} or {{tl|rfdatek}} to include the author. " ..
"Please remove the template from the article once the date has been provided.",
parents = {{name = "Requests", sort = "date"}},
breadcrumb = "Date",
}
raw_categories["Requests for translations in user-competency categories by number of users"] = {
description = "Requests for translations to be added to user-competency categories, sorted by number of users with that competency.",
parents = {{name = "Requests", sort = "translations in user-competency categories by number of users"}},
breadcrumb = "Translations in user-competency categories by number of users",
}
raw_categories["Requests for translations in user-competency categories by language"] = {
description = "Requests for translations to be added to user-competency categories, sorted by language.",
parents = {{name = "Requests", sort = "translations in user-competency categories by language"}},
breadcrumb = "Translations in user-competency categories by language",
hidden = true,
}
raw_categories["Terms with translations by language"] = {
description = "Terms with translations, sorted by language.",
parents = {{name = "Entry maintenance subcategories by language", sort = "translations by language"}},
breadcrumb = "Translations",
}
raw_categories["Entries using missing taxonomic names"] = {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name." ..
"\n\nSee [[:Category:mul:Taxonomic names]].",
parents = {{name = "entry maintenance", is_label = true, lang = "mul", sort = "missing taxonomic names"}},
breadcrumb = "Missing taxonomic names",
hidden = true,
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function script_name_to_code(name)
local sc = require(scripts_module).getByCanonicalName(name)
if not sc then
error("Unrecognized script name '" .. name .. "'")
end
return sc:getCode()
end
--[=[
This array consists of category match specs. Each spec contains one or more properties, whose values are (a) strings
that may contain references to other properties using the {{{PROPERTY}}} syntax; (b) functions of one argument, an
`items` table of the same properties that are accessible using the {{{PROPERTY}} syntax. Each such spec should have at
least a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced in
other properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. (or using keys "1", "2", etc. in
functions). Property expansion happens recursively if needed (i.e. a property can reference another property, which in
turn references a third property).
If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a capturing
group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property is set, in
which case there is no language name associated with the category name. The language name must be the canonical name of
a recognized full language, or an error is thrown; however, if the `allow_etym_lang` property is set, the language name
may also be the canonical name of an etymology-only language. Based on the language name, the `language_code` and
`language_object` properties are automatically filled in. If `language_name` is an etymology-only language, additional
properties `parent_language_name`, `parent_language_code` and `parent_language_object` are set for the parent full
language of the etymology-only language.
If the `regex` values of multiple category specs match, the first one takes precedence.
Recognized or predefined properties:
`pagename`: Current pagename.
`regex`: See above.
`1`, `2`, `3`, ...: See above.
`language_name`, `language_code`, `language_object`: See above.
`parent_language_name`, `parent_language_code`, `parent_language_object`: See above.
`nolang`: See above.
`allow_etym_lang`: Language names may be etymology-only languages. See above.
`description`: Override the description (normally taken directly from the pagename).
`template_name`: Name of template which generates this category.
`template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}". Used to
display an example template call and the output of this call.
`template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when
generating example template output (but not when displaying an example template call) and is intended for a template
call that uses the |nocat=1 parameter.
`template_example_output`: Override the text that displays example template output (see `template_sample_call`).
`additional_template_description`: Extra text to be displayed after the example template output.
`parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name= and
sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will have
{{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form "Requests for FOO
by language", the parent will be "Request subcategories by language" with FOO as the sort key. Otherwise, the
`language_name` property must exist, and the parent will be "Requests concerning LANGNAME", with the pagename minus
any initial "Requests for " as the sort key. Note that this does *NOT* apply if an etymology-only language is
associated with the category, in which case `etym_parents` is used instead.
`etym_parents`: Parent categories for categories with associated etymology-only languages. The format is the same as
`parents`. If omitted, there are two parents by default: (1) The pagename (i.e. category name) with the language name
replaced by the corresponding parent language name, with the value of `language_name` as the sort key; (2) "Requests
concerning LANGNAME", with the pagename minus any initial "Requests for " as the sort key.
`umbrella`: Parent all-language category. Sort key is based on the language name. This applies *ONLY* if a full language
is associated with the category name (i.e. not if `nolang` is set or if `allow_etym_lang` is set and the associated
language is an etymology-only language); otherwise there will be no umbrella category.
`breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the
pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", the default breadcrumb will be
"FOO". Otherwise it is computed by removing the language name from the pagename and chopping out "Requests for" from
the beginning and "in entries" and "for terms" from the end. Note that this does *NOT* apply if an etymology-only
language is associated with the category, in which case `etym_breadcrumb` is used instead.
`etym_breadcrumb`: Specify the breadcrumb for categories with associated etymology-only languages. Defaults to the value
of `language_name`.
`not_hidden_category`: Don't hide the category.
`catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax is
expanded.
`toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except that
request-specific {{{PROPERTY}}} syntax is expanded.
In general, properties can contain references to templates (e.g. {{tl}} and {{para}}), which will be appropriately
expanded (this expansion happens in the poscatboiler code, not in this module). The major exception is in the
`template_sample_call` and `template_actual_sample_call` properties, which are surrounded by <pre>...</pre> when
inserted, so template references are not expanded. Triple-brace property references are still expanded in these
properties; but beware that if any of those property references contain template references, they won't be expanded.
(This actually happens in the handlers for 'Request for SCRIPT script for LANG terms'; the sample call references
{{{script_code}}}, whose definition therefore cannot contain template references. The solution is to define this
property using a function.)
]=]
local requests_categories = {
{
regex = "^Requests concerning (.+)$",
allow_etym_lang = true,
description = "Categories with {{{1}}} entries that need the attention of experienced editors.",
parents = {{name = "entry maintenance", is_label = true, sort = "requests"}},
etym_parents = {{name = "Requests concerning {{{parent_language_name}}}", sort = "{{{1}}}"},
{name = "{{{1}}}", sort = "Requests"}},
umbrella = "Requests by language",
breadcrumb = "Requests",
not_hidden_category = true,
},
{
regex = "^Requests for etymologies in (.+) entries$",
allow_etym_lang = true,
umbrella = "Requests for etymologies by language",
template_name = "rfe",
},
{
regex = "^Requests for expansion of etymologies in (.+) entries$",
umbrella = "Requests for expansion of etymologies by language",
template_name = "etystub",
},
{
regex = "^Requests for pronunciation in (.+) entries$",
umbrella = "Requests for pronunciation by language",
template_name = "rfp",
},
{
regex = "^Requests for audio pronunciation in (.+) entries$",
umbrella = "Requests for audio pronunciation by language",
template_name = "rfap",
},
{
regex = "^Requests for definitions in (.+) entries$",
umbrella = "Requests for definitions by language",
template_name = "rfdef",
},
{
regex = "^Requests for clarification of definitions in (.+) entries$",
umbrella = "Requests for clarification of definitions by language",
template_name = "rfclarify",
},
}
for _, spec_with_pos in ipairs {
{"inflections", "rfinfl"},
{"plural forms"},
{"tone", "rftone"},
{"accents"},
{"aspect", "rfaspect"},
{"animacy"},
{"gender", "rfgender"},
{"noun class"},
} do
local property, rftemplate = unpack(spec_with_pos)
table.insert(requests_categories,
{
-- This is for part-of-speech-specific categories such as
-- "Requests for inflections in Northern Ndebele noun entries" or
-- "Requests for accents in Ukrainian proper noun entries".
-- Here and below, we assume that the part of speech is begins with
-- a lowercase letter, while the preceding language name ends in a
-- capitalized word. Note that this entry comes before the
-- following one and takes precedence over it.
regex = ("^Requests for %s in (.-) ([a-z]+[a-z ]*) entries$"):format(property),
parents = {{name = ("Requests for %s in {{{language_name}}} entries"):format(property), sort = "{{{2}}}"}},
umbrella = ("Requests for %s of {{pluralize|{{{2}}}}} by language"):format(property),
breadcrumb = "{{{2}}}",
template_name = rftemplate,
template_sample_call = rftemplate and ("{{%s|{{{language_code}}}|{{{2}}}}}"):format(rftemplate) or nil,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s in (.+) entries$"):format(property),
umbrella = ("Requests for %s by language"):format(property),
template_name = rftemplate,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s of (.+) by language$"):format(property),
nolang = true,
}
)
end
extend(requests_categories, {
{
regex = "^Requests for example sentences in (.+)$",
umbrella = "Requests for example sentences by language",
template_name = "rfex",
},
{
regex = "^Requests for quotations in (.+)$",
umbrella = "Requests for quotations by language",
template_name = "rfquote",
},
{
regex = "^Requests for translations into (.+)$",
allow_etym_lang = true,
umbrella = "Requests for translations by language",
template_name = "t-needed",
catfix = "en",
},
{
regex = "^Requests for translations of (.+) usage examples$",
allow_etym_lang = true,
umbrella = "Requests for translations of usage examples by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|usex}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex|nocat=1}}",
additional_template_description = "The {{tl|ux}}, {{tl|uxi}}, {{tl|ja-usex}} and {{tl|zh-x}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for translations of (.+) quotations$",
allow_etym_lang = true,
umbrella = "Requests for translations of quotations by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|quote}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote|nocat=1}}",
additional_template_description = "The {{tl|quote}}, and {{tl|Q}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for review of (.+) translations$",
allow_etym_lang = true,
umbrella = "Requests for review of translations by language",
template_name = "t-check",
template_sample_call = "{{t-check|{{{language_code}}}|example}}",
template_example_output = "",
catfix = "en",
},
{
regex = "^Requests for transliteration of (.+) terms$",
umbrella = "Requests for transliteration by language",
template_name = "rftranslit",
additional_template_description = "The {{tl|head}} template, and the large number of language-specific variants of it, automatically add " ..
"the page to this category if the example is in a foreign language and no transliteration can be generated (particularly in languages without " ..
"automated transliteration, such as Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) usage examples$",
umbrella = "Requests for transliteration of usage examples by language",
template_name = "rftranslit",
template_sample_call = "{{rftranslit|{{{language_code}}}}}",
template_actual_sample_call = "{{rftranslit|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) quotations$",
umbrella = "Requests for transliteration of quotations by language",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for native script for (.+) terms$",
allow_etym_lang = true,
etym_parents = {
{name = "Requests for native script for {{{parent_language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "native script"},
},
umbrella = "Requests for native script by language",
template_name = "rfscript",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for native script in (.+) usage examples$",
umbrella = "Requests for native script in usage examples by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example itself is missing but the translation is supplied."
},
{
regex = "^Requests for native script in (.+) quotations$",
umbrella = "Requests for native script in quotations by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation itself is missing but the translation is supplied."
},
{
regex = "^Requests for (.+) script for (.+) terms$",
language_name = "{{{2}}}",
allow_etym_lang = true,
parents = {{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"}},
etym_parents = {
{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests for {{{1}}} script for {{{parent_language_name}}} terms", sort = "{{{language_name}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "{{{1}}} script"},
},
umbrella = "Requests for {{{1}}} script by language",
breadcrumb = "{{{1}}}",
etym_breadcrumb = "{{{1}}}",
template_name = "rfscript",
-- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the
-- conversion of script name to script code needs to be done using an inline function like this, instead of
-- a {{#invoke:...}} template call.
script_code = function(items)
return script_name_to_code(items["1"])
end,
template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for (.+) script by language$",
parents = {{name = "Requests for script by language", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
},
{
regex = "^Requests for script by language$",
nolang = true,
},
{
regex = "^Requests for images in (.+) entries$",
umbrella = "Requests for images by language",
template_name = "rfi",
},
{
regex = "^Requests for references for (.+) terms$",
umbrella = "Requests for references by language",
template_name = "rfref",
},
{
regex = "^Requests for references for etymologies in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}},
umbrella = "Requests for references for etymologies by language",
breadcrumb = "Etymologies",
template_name = "rfv-etym",
},
{
regex = "^Requests for references for pronunciations in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}},
umbrella = "Requests for references for pronunciations by language",
breadcrumb = "Pronunciations",
template_name = "rfv-pron",
},
{
regex = "^Requests for attention concerning (.+)$",
umbrella = "Requests for attention by language",
breadcrumb = "Attention",
template_name = "attention",
template_sample_call = "{{attention|{{{language_code}}}|insert a brief description of the request here}}",
template_example_output = "This template does not generate any text in entries, but can be visualised by enabling the Catch My Attention gadget. See {{section link|Template:attention#Visibility}}.",
-- These pages typically contain a mixture of English and native-language entries, so disable catfix.
catfix = false,
-- Setting catfix = false will normally trigger the English table of contents template.
-- We still want the native-language table of contents template, though.
toc_template = "{{{language_code}}}-categoryTOC",
toc_template_full = "{{{language_code}}}-categoryTOC/full",
},
{
regex = "^Requests for cleanup in (.+) entries$",
umbrella = "Requests for cleanup by language",
template_name = "rfc",
template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$",
umbrella = "Requests for cleanup of Pronunciation N headers by language",
template_name = "rfc-pron-n",
template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}",
template_example_output = "This template does not generate any text in entries.",
additional_template_description = [=[
The purpose of this category is to tag entries that use headers with "Pronunciation" and a number.
While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header.
[[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed.
This category is hidden.]=],
},
{
regex = "^Requests for deletion in (.+) entries$",
umbrella = "Requests for deletion by language",
template_name = "rfd",
template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for verification in (.+) entries$",
umbrella = "Requests for verification by language",
template_name = "rfv",
},
{
regex = "^Requests for attention in (.+) etymologies$",
umbrella = "Requests for attention by language"
},
{
regex = "^Requests for quotations/(.+)$",
description = "Requests for a quotation or for quotations from {{{1}}}.",
parents = {{name = "Requests for quotations by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfquotek",
template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfquotek|und|{{{1}}}}}",
},
{
regex = "^Requests for date in (.+) entries$",
umbrella = "Requests for date by language",
template_name = "rfdate",
additional_template_description = "The quotation templates, such as {{tl|quote-book}} and {{tl|quote-journal}}, " ..
"automatically add the page to this category if neither {{para|date}} nor {{para|year}} is provided. Providing the " ..
"parameter in each case on the page automatically removes the article from this category. See " ..
"[[Wiktionary:Quotations]] for information about formatting dates and quotations.",
},
{
regex = "^Requests for date/(.+)$",
description = "{{rfd|section=Category:Requests for date by source}}Requests for a date for a quotation or quotations from {{{1}}}.",
parents = {{name = "Requests for date by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfdatek",
template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfdatek|und|{{{1}}}}}",
},
{
regex = "^Requests for attestation of (.+) terms$",
umbrella = "Requests for attestation of terms by language",
breadcrumb = "Attestation",
additional_template_description = "The {{tl|LDL}} template adds this category when a language code is supplied in {{para|1}} (as it should be)."
},
})
local user_competency_additional_template_description = "This is added by user-competency categories such as " ..
"[[:Category:User fr-4]], which groups users who speak French at level 4 (near-native proficiency), when " ..
"the native-language text indicating this fact is missing. The appropriate translation should mirror the " ..
"English text also displayed (e.g. in this case \"These users speak French at a '''near native''' " ..
"level.\"), and should be supplied to {{tl|auto cat}} using the {{para|text}} parameter. The mention of the " ..
"language in the text should be surrounded by double angle brackets, e.g. \"<<français>>\", which " ..
"causes it to be automatically linked to the appropriate parent category."
local user_competency_parents = {{name = "Requests for translations in user-competency categories by number of users",
sort = function(items)
return " " .. ("%010d"):format(items["1"])
end,
}}
extend(requests_categories, {
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+)%-([0-9]+) users$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}}-{{{2}}} users.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}-{{{2}}}",
nolang = true,
},
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+) (users?)$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}} {{{2}}}.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}",
nolang = true,
}
})
table.insert(raw_handlers, function(data)
local items
local function init_items()
items = {pagename = data.category}
end
local function expand_value(item, val)
if not val then
return val
elseif is_callable(val) then
return expand_value(item .. " ⇒ function", val(items))
elseif type(val) == "table" then
for k, v in pairs(val) do
val[k] = expand_value(item .. " ⇒ " .. k, v)
end
return val
elseif type(val) == "number" then
val = tostring(val)
end
if type(val) ~= "string" then
error(("The item '%s' on page %s is of type %s and can't be concatenated"):format(
item, items.pagename, type(val)))
end
-- Replaces pseudo-template code {{{ }}} with the corresponding member of the "items" table. Has to be done
-- recursively, since some of the items are nested:
-- {{{template_sample_call_with_temp}}}
-- ⇓
-- {{{{{template_name}}}|{{{language_code}}}}}
-- ⇓
-- {{attention|en}}
if val:find("{{{") then
val = mw.ustring.gsub(val, "{{{([^%}%{]+)}}}", function(prop)
local propval = items[prop]
if not propval then
error(("The item '%s' (expanded from property '%s' on page %s) was not found in the 'items' table"):
format(prop, item, items.pagename))
end
return expand_value(item .. " ⇒ " .. prop, propval)
end
)
end
return val
end
local function expand_items_value(item)
return expand_value(item, items[item])
end
local function convert_items_to_category_data(items)
if not items.nolang then
items.language_name = items.language_name or "{{{1}}}"
items.language_name = expand_items_value("language_name")
items.language_object = require(languages_module).getByCanonicalName(items.language_name, true,
items.allow_etym_lang)
items.language_code = items.language_object:getCode()
items.is_etym_lang = items.language_object:hasType("etymology-only")
if items.is_etym_lang then
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In
-- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and
-- Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
else
end
end
if items.template_name then
items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}"
items.full_text_about_the_template = "To make this request, in this specific language, use this code in the entry (see also the documentation at [[Template:{{{template_name}}}]]):\n\n<pre>{{{template_sample_call}}}</pre>"
if items.template_example_output then
items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output
else
items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call
items.full_text_about_the_template = items.full_text_about_the_template .. "\nIt results in the message below:\n\n{{{template_actual_sample_call}}}"
end
if items.additional_template_description then
items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description
end
else
items.full_text_about_the_template = items.additional_template_description
end
local parents, breadcrumb
if items.is_etym_lang then
parents = items.etym_parents
breadcrumb = expand_items_value("etym_breadcrumb") or items.language_name
else
parents = items.parents
breadcrumb = expand_items_value("breadcrumb")
end
if parents then
for _, parent in ipairs(parents) do
parent.name = expand_value("parent.name", parent.name)
parent.sort = {sort_base = expand_value("parent.sort", parent.sort), lang = "en"}
end
else
local umbrella_type = items.pagename:match("^Requests for (.+) by language$")
if umbrella_type then
breadcrumb = breadcrumb or umbrella_type
parents = {{name = "Request subcategories by language", sort = umbrella_type}}
elseif not items.language_name then
error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'")
else
local requests_concerning_breadcrumb = items.pagename:gsub(" " .. pattern_escape(items.language_name), "")
requests_concerning_breadcrumb =
requests_concerning_breadcrumb:gsub("^Requests for ", ""):gsub(" in entries$", ""):gsub(" for terms$", "")
local requests_concerning_parent =
{
name = "Requests concerning " .. items.language_name,
sort = {sort_base = requests_concerning_breadcrumb, lang = "en"}
}
if items.is_etym_lang then
local parent_lang_cat = items.pagename:gsub(pattern_escape(items.language_name), replacement_escape(items.parent_language_name))
parents = {
{name = parent_lang_cat, sort = {sort_base = items.language_name, lang = "en"}},
requests_concerning_parent
}
else
breadcrumb = breadcrumb or requests_concerning_breadcrumb
parents = {requests_concerning_parent}
end
end
end
if not items.nolang and not items.is_etym_lang and items.umbrella ~= false then
table.insert(parents, {
name = expand_items_value("umbrella"),
sort = {sort_base = items.language_name, lang = "en"}
})
end
local additional = expand_items_value("full_text_about_the_template")
if items.pagename:find(" by language$") then
additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "")
end
return {
description = expand_items_value("description") or items.pagename .. ".",
lang = items.parent_language_code or items.language_code,
additional = additional,
parents = parents,
-- If no breadcrumb= and not an etym-only language, it will default to the category name
breadcrumb = breadcrumb,
catfix = expand_items_value("catfix"),
toc_template = expand_items_value("toc_template"),
toc_template_full = expand_items_value("toc_template_full"),
hidden = not items.nolang and not items.not_hidden_category,
can_be_empty = true,
}
end
-- First look for a regular (usually language or script-specific) category.
for _, category in ipairs(requests_categories) do
local matchvals = {mw.ustring.match(data.category, category.regex)}
if #matchvals > 0 then
init_items()
for key, value in pairs(category) do
items[key] = value
end
for key, value in ipairs(matchvals) do
items["" .. key] = value
end
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
-- Now look for umbrella categories.
for _, category in ipairs(requests_categories) do
if data.category == category.umbrella then
init_items()
items.nolang = true
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
return nil
end)
table.insert(raw_handlers, function(data)
local langname = data.category:match("^Terms with (.+) translations$")
local lang = langname and require(languages_module).getByCanonicalName(langname, true, true)
if lang then
local langcode = lang:getCode()
local parents, breadcrumb_and_first_sort_key
if lang:hasType("etymology-only") then
parents = {
"Terms with " .. lang:getFullName() .. " translations",
{name = langname, sort = "Translations"},
}
breadcrumb_and_first_sort_key = lang:getCanonicalName()
else
parents = {
{name = "entry maintenance", is_label = true, lang = langcode},
{
name = "Terms with translations by language",
sort = {sort_base = langname, lang = "en"}
},
}
breadcrumb_and_first_sort_key = "Translations"
end
return {
description = "Entries that contain translations into " .. langname .. " which were added using one of the translation templates, such as {{tl|t|" .. langcode .. "|...}}, {{tl|t+|" .. langcode .. "|...}}, etc.",
parents = parents,
breadcrumb_and_first_sort_key = breadcrumb_and_first_sort_key,
catfix = false,
can_be_empty = true,
hidden = true,
}
end
end)
local recognized_taxtypes = require(table_module).listToSet {
"ambiguous",
"binomial",
"branch",
"clade",
"cladus",
"class",
"cohort",
"convariety",
"cultivar group",
"cultivar",
"division",
"empire",
"epifamily",
"epithet",
"family",
"form taxon",
"form",
"genus",
"grade",
"grandorder",
"group",
"hybrid",
"informal group",
"infraclass",
"infracohort",
"infrakingdom",
"infraorder",
"infraphylum",
"infraspecies",
"kingdom",
"magnorder",
"megacohort",
"mirorder",
"morph",
"nothogenus",
"nothospecies",
"nothosubspecies",
"nothovariety",
"obsolete",
"oofamily",
"order",
"parvclass",
"parvorder",
"phylum",
"section",
"series",
"serovar",
"species group",
"species",
"stem",
"stirps",
"strain",
"subclass",
"subcohort",
"subdivision",
"subfamily",
"subgenus",
"subgroup",
"subinfraorder",
"subkingdom",
"suborder",
"subphylum",
"subsection",
"subspecies",
"subterclass",
"subtribe",
"superclass",
"supercohort",
"superfamily",
"supergroup",
"superorder",
"superphylum",
"supertribe",
"taxon",
"tribe",
"trinomial",
"undescribed species",
"unknown",
"unranked group",
"variety",
"virus complex",
}
table.insert(raw_handlers, function(data)
local taxtype = data.category:match("^Entries using missing taxonomic name %((.*)%)$")
if taxtype and recognized_taxtypes[taxtype] then
return {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name.",
parents = {{name = "Entries using missing taxonomic names", sort = {sort_base = taxtype, lang = "en"}}},
breadcrumb = taxtype,
hidden = true,
}
end
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
lel548mkfr82xcfn67z5xid81ea6nga
233717
233716
2026-05-09T04:35:28Z
Lee
19
[[:en:Module:category_tree/entry_maintenance]] වෙතින් එක් සංශෝධනයක්
233716
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local functions_module = "Module:fun"
local languages_module = "Module:languages"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local table_module = "Module:table"
local extend = require(table_module).extend
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["entry maintenance"] = {
description = "{{{langname}}} entries, or entries in other languages containing {{{langname}}} terms, that are being tracked for attention and improvement by editors.",
parents = {{name = "{{{langcat}}}", raw = true}},
umbrella_parents = "Fundamental",
}
labels["entries with incorrect language header"] = {
description = "{{{langname}}} entries that have been placed under the wrong language header.",
additional = "This can happen for several reasons:\n" ..
"* Typos.\n" ..
"* Vandalism.\n" ..
"* Using the wrong language code.\n" ..
"* Using an alternative name for the language.\n" ..
"* Using special characters which haven't been used in the name given in the language data modules.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries without References header"] = {
description = "{{{langname}}} entries without a References header.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries without References or Further reading header"] = {
description = "{{{langname}}} entries without a References or Further reading header.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries that don't exist"] = {
description = "{{{langname}}} terms that do not meet the [[Wiktionary:Criteria for inclusion|criteria for inclusion]] (CFI). They are added to the category with the template {{tl|no entry|{{{langcode}}}}}.",
parents = {"entry maintenance"},
umbrella_parents = "Fundamental",
}
labels["entries with etymology trees"] = {
description = "{{{langname}}} entries that display an etymology tree generated by the template {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with etymology texts"] = {
description = "{{{langname}}} entries that display an etymology generated by the template {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing missing etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon that cannot be found, either because the target page does not exist (redlink) or because it has no {{tl|etymon}} template.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing ambiguous etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon without the ID, when the target page contains multiple {{tl|etymon}} templates, and an ID is therefore required to select the correct {{tl|etymon}}.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons with mismatched IDs"] = {
description = "Entries which use the {{tl|etymon}} template with a mismatched ID. For example, {{code|lang:entry<id:mismatched ID>}}",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has no Descendants section.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without this term in Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has a Descendants section, but does not list the current term there.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with language name categories using raw markup"] = {
description = "{{{langname}}} entries that have been placed in a language name category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langname}}} ...]]}}). They should be added using {{tl|cln|{{{langcode}}}|...}} instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with topic categories using raw markup"] = {
description = "{{{langname}}} entries that have been placed in a topic category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langcode}}}:...]]}}). They should be added using {{tl|C|{{{langcode}}}|...}} instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["entries with outdated source"] = {
description = "{{{langname}}} entries that have been partly or fully imported from an outdated source.",
parents = {"entry maintenance"},
}
labels["entries with inflection not matching pagename"] = {
description = "{{{langname}}} entries which have an inflection table whose lemma form does not match the page name.",
additional = "This is usually the result of incorrect or missing parameters.",
breadcrumb_and_first_sort_key = "inflection not matching pagename",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["undefined derivations"] = {
description = "{{{langname}}} etymologies using {{tl|undefined derivation}}, where a more specific template such as {{tl|borrowed}} or {{tl|inherited}} should be used instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["descendants to be fixed in desctree"] = {
description = "Entries that use {{tl|desctree}} to link to {{{langname}}} entries with no Descendants section.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["term requests"] = {
description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["redlinks"] = {
description = "Links to {{{langname}}} entries that have not been created yet.",
parents = {"entry maintenance"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["terms with IPA pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of IPA.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with enPR pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of enPR.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with Indic pronunciation"] = {
description = "{{langname}} terms that include the pronunciation in the form of ISO 15919.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["IPA pronunciations with invalid separators"] = {
description = "{{{langname}}} terms with IPA using invalid separators such as /.ˈ/, /.ˌ/, a dot followed by primary or secondary stress; or /ˈ / or /ˌ /, primary or secondary stress followed by a space.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["terms with hyphenation"] = {
description = "{{{langname}}} terms that include hyphenation.",
parents = {"entry maintenance"},
}
labels["terms with audio pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of an audio file.",
additional = "For requests related to this category, see [[:Category:Requests for audio pronunciation in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
labels["terms with nonstandard or incorrect audio pronunciations"] = {
description = "{{{langname}}} terms which have been tagged as having pronunciations which are nonstandard or incorrect.",
parents = {"terms with audio pronunciation"},
can_be_empty = true,
hidden = true,
}
labels["entries missing Template:reconstructed"] = {
description = "Reconstructed {{{langname}}} entries which do not have the {{tl|reconstructed}} template.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation)
labels[label] = {
description = desc or "Pages containing {{{langname}}} " .. label .. ".",
additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" ..
"Note that the pages in this category are not necessarily the same as the actual term in question. This " ..
"frequently happens, for example, with English pages with translation sections, where the term that " ..
"triggers the addition of the category is one of the translations."),
parents = {"entry maintenance"},
-- Set catfix = false because the page will have a mixture of native-language and
-- non-native-language pages, but include the normal native-language table of contents headers
-- because most pages are in the native language.
catfix = false,
toc_template = "{{{langcode}}}-categoryTOC",
toc_template_full = "{{{langcode}}}-categoryTOC/full",
can_be_empty = true,
hidden = true,
}
end
add_manual_param_category("terms in nonstandard scripts", nil,
"Pages are placed here if they contain terms written in a script that isn't in the language's " ..
"list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.",
true)
add_manual_param_category("terms with non-redundant manual transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with redundant transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant manual script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.",
true)
add_manual_param_category("terms with redundant script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant non-automated sortkeys",
"{{{langname}}} terms with non-redundant non-automated sortkeys.",
"Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " ..
"generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " ..
"parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " ..
"sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " ..
"page will also be added here.")
add_manual_param_category("terms with redundant sortkeys",
"{{{langname}}} terms with redundant sortkeys.",
"Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " ..
"as the one which is automatically generated.")
add_manual_param_category("links with redundant target parameters",
"Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " ..
"separately.",
"This occurs when the only difference between the link target and the alt text is that the alt text contains " ..
"diacritics (or other characters) which would have been ignored anyway had they been included in the link " ..
"target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " ..
"({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " ..
"displayed.")
add_manual_param_category("links with ignored alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.",
"This occurs when the alt text makes no difference to the output. For example, {{tl|l|en|foo|foo}} " ..
"({{l|en|foo|foo}}) is exactly the same as {{tl|l|en|foo}} ({{l|en|foo}}).")
add_manual_param_category("links with ignored id parameters",
"Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant wikilinks",
"Pages containing {{{langname}}} links which contain a redundant wikilink.",
"This occurs if link target consists of a single wikilink, which should instead be entered in the " ..
"conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " ..
"is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " ..
"{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " ..
"unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}")
add_manual_param_category("links with manual fragments",
"Pages containing {{{langname}}} links where a manual link fragment has been given.",
"This occurs when the link fragment has been specified using {{code|#}} after the term, " ..
"which overrides the normal fragment generated by link templates that points to the relevant " ..
"language section.\n\nLink fragments are used to point to a specific section on a target page, and " ..
"it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " ..
"additional content is added to the target page: for example, the fragment {{code|#Adjective}} " ..
"will start pointing to the wrong section if another language with an adjective section is added above " ..
"the intended language.")
labels["descendant hubs"] = {
description = "{{{langname}}} terms that do not mean more than the sum of their parts but exist for listing two or more inclusion-worthy descendants.",
parents = {"entry maintenance"},
}
labels["terms needing to be assigned to a sense"] = {
description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
--[=[
labels["terms with inflection tables"] = {
description = "{{{langname}}} entries that contain inflection tables.".
additional = "For requests related to this category," see [[:Category:Requests for inflections in {{{langname}}} entries]].",
parents = {"entry maintenance"},
}
]=]
labels["terms with collocations"] = {
description = "{{{langname}}} entries that contain [[collocation]]s that were added using templates such as {{tl|co}}.",
additional = "For requests related to this category, see [[:Category:Requests for collocations in {{{langname}}}]]. See also [[:Category:Requests for quotations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with usage examples"] = {
description = "{{{langname}}} entries that contain usage examples that were added using templates such as {{tl|ux}}.",
additional = "For requests related to this category, see [[:Category:Requests for example sentences in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for quotations in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with quotations"] = {
description = "{{{langname}}} entries that contain quotes that were added using templates such as {{tl|quote}}, {{tl|quote-book}}, {{tl|quote-journal}}, etc.",
additional = "For requests related to this category, see [[:Category:Requests for quotations in {{{langname}}}]]. See also [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"entry maintenance"},
}
labels["terms with interlinear glossed text"] = {
description = "{{{langname}}} entries that contain interlinear glossed text added using {{tl|interlinear}}.",
parents = {"entry maintenance"},
}
labels["terms with redundant head parameter"] = {
description = "{{{langname}}} terms that contain a redundant head= parameter in their headword (called using {{tl|head}} or a language-specific equivalent).",
additional = "Individual languages can prevent terms from being added to this category by setting `data.no_redundant_head_cat`.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their headword lines"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"redlinks"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their inflection tables"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"redlinks"},
can_be_empty = true,
hidden = true,
}
labels["requests for English equivalent term"] = {
description = "{{{langname}}} entries with definitions that have been tagged with {{tl|rfeq}}. Read the documentation of the template for more information.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
for _, quot_type in ipairs { "quotations", "usage examples" } do
labels[quot_type .. " with omitted translation"] = {
description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying {{code|-}}. The translation should be supplied instead.",
parents = {"entry maintenance"},
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs({"nouns", "proper nouns", "verbs", "adjectives", "adverbs", "participles", "determiners", "pronouns", "numerals", "suffixes", "contractions"}) do
labels[pos .. " with red links in their headword lines"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"terms with red links in their headword lines"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
labels[pos .. " with red links in their inflection tables"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"terms with red links in their inflection tables"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
local label = pos .. " with unknown or uncertain plurals"
labels[label] = {
description = "{{{langname}}} " .. label .. ".",
additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " ..
"is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " ..
"using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " ..
"that a plural cannot be attested but the noun is theoretically countable.",
breadcrumb = "with unknown or uncertain plurals",
parents = {
{name = pos, sort = "unknown or uncertain plurals"},
"entry maintenance",
},
}
end
-- Add 'umbrella_parents' key if not already present.
for _, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Entry maintenance subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Entry maintenance subcategories by language"] = {
description = "Umbrella categories covering topics related to entry maintenance.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "entry maintenance", is_label = true, sort = " "},
},
}
raw_categories["Requests"] = {
topright = "{{shortcut|WT:CR|WT:RQ}}",
description = "A parent category for the various request categories.",
parents = {"Category:Wiktionary"},
}
raw_categories["Requests by language"] = {
description = "Categories with requests in various specific languages.",
additional = "{{{umbrella_msg}}}",
parents = {
{name = "Request subcategories by language", sort = " "},
{name = "Requests", sort = " "},
},
breadcrumb = "By language",
}
raw_categories["Request subcategories by language"] = {
description = "Umbrella categories covering topics related to requests.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "Requests", sort = " "},
},
}
raw_categories["Requests for quotations by source"] = {
description = "Categories with requests for quotation, broken out by the source of the quotation.",
additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].",
parents = {{name = "Requests for quotations", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for quotations"] = {
-- FIXME
description = "Words are added to this category by the inclusion in their entries of {{tl|rfv-quote}}.",
parents = {{name = "Requests", sort = "quotations"}},
breadcrumb = "Quotations",
}
raw_categories["Requests for date"] = {
description = "Requests for a date to be added to a quotation.",
additional = "To add an article to this category, use {{tl|rfdate}} or {{tl|rfdatek}} to include the author. " ..
"Please remove the template from the article once the date has been provided.",
parents = {{name = "Requests", sort = "date"}},
breadcrumb = "Date",
}
raw_categories["Requests for translations in user-competency categories by number of users"] = {
description = "Requests for translations to be added to user-competency categories, sorted by number of users with that competency.",
parents = {{name = "Requests", sort = "translations in user-competency categories by number of users"}},
breadcrumb = "Translations in user-competency categories by number of users",
}
raw_categories["Requests for translations in user-competency categories by language"] = {
description = "Requests for translations to be added to user-competency categories, sorted by language.",
parents = {{name = "Requests", sort = "translations in user-competency categories by language"}},
breadcrumb = "Translations in user-competency categories by language",
hidden = true,
}
raw_categories["Terms with translations by language"] = {
description = "Terms with translations, sorted by language.",
parents = {{name = "Entry maintenance subcategories by language", sort = "translations by language"}},
breadcrumb = "Translations",
}
raw_categories["Entries using missing taxonomic names"] = {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name." ..
"\n\nSee [[:Category:mul:Taxonomic names]].",
parents = {{name = "entry maintenance", is_label = true, lang = "mul", sort = "missing taxonomic names"}},
breadcrumb = "Missing taxonomic names",
hidden = true,
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function script_name_to_code(name)
local sc = require(scripts_module).getByCanonicalName(name)
if not sc then
error("Unrecognized script name '" .. name .. "'")
end
return sc:getCode()
end
--[=[
This array consists of category match specs. Each spec contains one or more properties, whose values are (a) strings
that may contain references to other properties using the {{{PROPERTY}}} syntax; (b) functions of one argument, an
`items` table of the same properties that are accessible using the {{{PROPERTY}} syntax. Each such spec should have at
least a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced in
other properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. (or using keys "1", "2", etc. in
functions). Property expansion happens recursively if needed (i.e. a property can reference another property, which in
turn references a third property).
If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a capturing
group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property is set, in
which case there is no language name associated with the category name. The language name must be the canonical name of
a recognized full language, or an error is thrown; however, if the `allow_etym_lang` property is set, the language name
may also be the canonical name of an etymology-only language. Based on the language name, the `language_code` and
`language_object` properties are automatically filled in. If `language_name` is an etymology-only language, additional
properties `parent_language_name`, `parent_language_code` and `parent_language_object` are set for the parent full
language of the etymology-only language.
If the `regex` values of multiple category specs match, the first one takes precedence.
Recognized or predefined properties:
`pagename`: Current pagename.
`regex`: See above.
`1`, `2`, `3`, ...: See above.
`language_name`, `language_code`, `language_object`: See above.
`parent_language_name`, `parent_language_code`, `parent_language_object`: See above.
`nolang`: See above.
`allow_etym_lang`: Language names may be etymology-only languages. See above.
`description`: Override the description (normally taken directly from the pagename).
`template_name`: Name of template which generates this category.
`template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}". Used to
display an example template call and the output of this call.
`template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when
generating example template output (but not when displaying an example template call) and is intended for a template
call that uses the |nocat=1 parameter.
`template_example_output`: Override the text that displays example template output (see `template_sample_call`).
`additional_template_description`: Extra text to be displayed after the example template output.
`parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name= and
sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will have
{{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form "Requests for FOO
by language", the parent will be "Request subcategories by language" with FOO as the sort key. Otherwise, the
`language_name` property must exist, and the parent will be "Requests concerning LANGNAME", with the pagename minus
any initial "Requests for " as the sort key. Note that this does *NOT* apply if an etymology-only language is
associated with the category, in which case `etym_parents` is used instead.
`etym_parents`: Parent categories for categories with associated etymology-only languages. The format is the same as
`parents`. If omitted, there are two parents by default: (1) The pagename (i.e. category name) with the language name
replaced by the corresponding parent language name, with the value of `language_name` as the sort key; (2) "Requests
concerning LANGNAME", with the pagename minus any initial "Requests for " as the sort key.
`umbrella`: Parent all-language category. Sort key is based on the language name. This applies *ONLY* if a full language
is associated with the category name (i.e. not if `nolang` is set or if `allow_etym_lang` is set and the associated
language is an etymology-only language); otherwise there will be no umbrella category.
`breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the
pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", the default breadcrumb will be
"FOO". Otherwise it is computed by removing the language name from the pagename and chopping out "Requests for" from
the beginning and "in entries" and "for terms" from the end. Note that this does *NOT* apply if an etymology-only
language is associated with the category, in which case `etym_breadcrumb` is used instead.
`etym_breadcrumb`: Specify the breadcrumb for categories with associated etymology-only languages. Defaults to the value
of `language_name`.
`not_hidden_category`: Don't hide the category.
`catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax is
expanded.
`toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except that
request-specific {{{PROPERTY}}} syntax is expanded.
In general, properties can contain references to templates (e.g. {{tl}} and {{para}}), which will be appropriately
expanded (this expansion happens in the poscatboiler code, not in this module). The major exception is in the
`template_sample_call` and `template_actual_sample_call` properties, which are surrounded by <pre>...</pre> when
inserted, so template references are not expanded. Triple-brace property references are still expanded in these
properties; but beware that if any of those property references contain template references, they won't be expanded.
(This actually happens in the handlers for 'Request for SCRIPT script for LANG terms'; the sample call references
{{{script_code}}}, whose definition therefore cannot contain template references. The solution is to define this
property using a function.)
]=]
local requests_categories = {
{
regex = "^Requests concerning (.+)$",
allow_etym_lang = true,
description = "Categories with {{{1}}} entries that need the attention of experienced editors.",
parents = {{name = "entry maintenance", is_label = true, sort = "requests"}},
etym_parents = {{name = "Requests concerning {{{parent_language_name}}}", sort = "{{{1}}}"},
{name = "{{{1}}}", sort = "Requests"}},
umbrella = "Requests by language",
breadcrumb = "Requests",
not_hidden_category = true,
},
{
regex = "^Requests for etymologies in (.+) entries$",
allow_etym_lang = true,
umbrella = "Requests for etymologies by language",
template_name = "rfe",
},
{
regex = "^Requests for expansion of etymologies in (.+) entries$",
umbrella = "Requests for expansion of etymologies by language",
template_name = "etystub",
},
{
regex = "^Requests for pronunciation in (.+) entries$",
umbrella = "Requests for pronunciation by language",
template_name = "rfp",
},
{
regex = "^Requests for audio pronunciation in (.+) entries$",
umbrella = "Requests for audio pronunciation by language",
template_name = "rfap",
},
{
regex = "^Requests for definitions in (.+) entries$",
umbrella = "Requests for definitions by language",
template_name = "rfdef",
},
{
regex = "^Requests for clarification of definitions in (.+) entries$",
umbrella = "Requests for clarification of definitions by language",
template_name = "rfclarify",
},
}
for _, spec_with_pos in ipairs {
{"inflections", "rfinfl"},
{"plural forms"},
{"tone", "rftone"},
{"accents"},
{"aspect", "rfaspect"},
{"animacy"},
{"gender", "rfgender"},
{"noun class"},
} do
local property, rftemplate = unpack(spec_with_pos)
table.insert(requests_categories,
{
-- This is for part-of-speech-specific categories such as
-- "Requests for inflections in Northern Ndebele noun entries" or
-- "Requests for accents in Ukrainian proper noun entries".
-- Here and below, we assume that the part of speech is begins with
-- a lowercase letter, while the preceding language name ends in a
-- capitalized word. Note that this entry comes before the
-- following one and takes precedence over it.
regex = ("^Requests for %s in (.-) ([a-z]+[a-z ]*) entries$"):format(property),
parents = {{name = ("Requests for %s in {{{language_name}}} entries"):format(property), sort = "{{{2}}}"}},
umbrella = ("Requests for %s of {{pluralize|{{{2}}}}} by language"):format(property),
breadcrumb = "{{{2}}}",
template_name = rftemplate,
template_sample_call = rftemplate and ("{{%s|{{{language_code}}}|{{{2}}}}}"):format(rftemplate) or nil,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s in (.+) entries$"):format(property),
umbrella = ("Requests for %s by language"):format(property),
template_name = rftemplate,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s of (.+) by language$"):format(property),
nolang = true,
}
)
end
extend(requests_categories, {
{
regex = "^Requests for example sentences in (.+)$",
umbrella = "Requests for example sentences by language",
template_name = "rfex",
},
{
regex = "^Requests for quotations in (.+)$",
umbrella = "Requests for quotations by language",
template_name = "rfquote",
},
{
regex = "^Requests for translations into (.+)$",
allow_etym_lang = true,
umbrella = "Requests for translations by language",
template_name = "t-needed",
catfix = "en",
},
{
regex = "^Requests for translations of (.+) usage examples$",
allow_etym_lang = true,
umbrella = "Requests for translations of usage examples by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|usex}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex|nocat=1}}",
additional_template_description = "The {{tl|ux}}, {{tl|uxi}}, {{tl|ja-usex}} and {{tl|zh-x}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for translations of (.+) quotations$",
allow_etym_lang = true,
umbrella = "Requests for translations of quotations by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|quote}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote|nocat=1}}",
additional_template_description = "The {{tl|quote}}, and {{tl|Q}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for review of (.+) translations$",
allow_etym_lang = true,
umbrella = "Requests for review of translations by language",
template_name = "t-check",
template_sample_call = "{{t-check|{{{language_code}}}|example}}",
template_example_output = "",
catfix = "en",
},
{
regex = "^Requests for transliteration of (.+) terms$",
umbrella = "Requests for transliteration by language",
template_name = "rftranslit",
additional_template_description = "The {{tl|head}} template, and the large number of language-specific variants of it, automatically add " ..
"the page to this category if the example is in a foreign language and no transliteration can be generated (particularly in languages without " ..
"automated transliteration, such as Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) usage examples$",
umbrella = "Requests for transliteration of usage examples by language",
template_name = "rftranslit",
template_sample_call = "{{rftranslit|{{{language_code}}}}}",
template_actual_sample_call = "{{rftranslit|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) quotations$",
umbrella = "Requests for transliteration of quotations by language",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for native script for (.+) terms$",
allow_etym_lang = true,
etym_parents = {
{name = "Requests for native script for {{{parent_language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "native script"},
},
umbrella = "Requests for native script by language",
template_name = "rfscript",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for native script in (.+) usage examples$",
umbrella = "Requests for native script in usage examples by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example itself is missing but the translation is supplied."
},
{
regex = "^Requests for native script in (.+) quotations$",
umbrella = "Requests for native script in quotations by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation itself is missing but the translation is supplied."
},
{
regex = "^Requests for (.+) script for (.+) terms$",
language_name = "{{{2}}}",
allow_etym_lang = true,
parents = {{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"}},
etym_parents = {
{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests for {{{1}}} script for {{{parent_language_name}}} terms", sort = "{{{language_name}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "{{{1}}} script"},
},
umbrella = "Requests for {{{1}}} script by language",
breadcrumb = "{{{1}}}",
etym_breadcrumb = "{{{1}}}",
template_name = "rfscript",
-- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the
-- conversion of script name to script code needs to be done using an inline function like this, instead of
-- a {{#invoke:...}} template call.
script_code = function(items)
return script_name_to_code(items["1"])
end,
template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for (.+) script by language$",
parents = {{name = "Requests for script by language", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
},
{
regex = "^Requests for script by language$",
nolang = true,
},
{
regex = "^Requests for images in (.+) entries$",
umbrella = "Requests for images by language",
template_name = "rfi",
},
{
regex = "^Requests for references for (.+) terms$",
umbrella = "Requests for references by language",
template_name = "rfref",
},
{
regex = "^Requests for references for etymologies in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}},
umbrella = "Requests for references for etymologies by language",
breadcrumb = "Etymologies",
template_name = "rfv-etym",
},
{
regex = "^Requests for references for pronunciations in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}},
umbrella = "Requests for references for pronunciations by language",
breadcrumb = "Pronunciations",
template_name = "rfv-pron",
},
{
regex = "^Requests for attention concerning (.+)$",
umbrella = "Requests for attention by language",
breadcrumb = "Attention",
template_name = "attention",
template_sample_call = "{{attention|{{{language_code}}}|insert a brief description of the request here}}",
template_example_output = "This template does not generate any text in entries, but can be visualised by enabling the Catch My Attention gadget. See {{section link|Template:attention#Visibility}}.",
-- These pages typically contain a mixture of English and native-language entries, so disable catfix.
catfix = false,
-- Setting catfix = false will normally trigger the English table of contents template.
-- We still want the native-language table of contents template, though.
toc_template = "{{{language_code}}}-categoryTOC",
toc_template_full = "{{{language_code}}}-categoryTOC/full",
},
{
regex = "^Requests for cleanup in (.+) entries$",
umbrella = "Requests for cleanup by language",
template_name = "rfc",
template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$",
umbrella = "Requests for cleanup of Pronunciation N headers by language",
template_name = "rfc-pron-n",
template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}",
template_example_output = "This template does not generate any text in entries.",
additional_template_description = [=[
The purpose of this category is to tag entries that use headers with "Pronunciation" and a number.
While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header.
[[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed.
This category is hidden.]=],
},
{
regex = "^Requests for deletion in (.+) entries$",
umbrella = "Requests for deletion by language",
template_name = "rfd",
template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for verification in (.+) entries$",
umbrella = "Requests for verification by language",
template_name = "rfv",
},
{
regex = "^Requests for attention in (.+) etymologies$",
umbrella = "Requests for attention by language"
},
{
regex = "^Requests for quotations/(.+)$",
description = "Requests for a quotation or for quotations from {{{1}}}.",
parents = {{name = "Requests for quotations by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfquotek",
template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfquotek|und|{{{1}}}}}",
},
{
regex = "^Requests for date in (.+) entries$",
umbrella = "Requests for date by language",
template_name = "rfdate",
additional_template_description = "The quotation templates, such as {{tl|quote-book}} and {{tl|quote-journal}}, " ..
"automatically add the page to this category if neither {{para|date}} nor {{para|year}} is provided. Providing the " ..
"parameter in each case on the page automatically removes the article from this category. See " ..
"[[Wiktionary:Quotations]] for information about formatting dates and quotations.",
},
{
regex = "^Requests for date/(.+)$",
description = "{{rfd|section=Category:Requests for date by source}}Requests for a date for a quotation or quotations from {{{1}}}.",
parents = {{name = "Requests for date by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfdatek",
template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfdatek|und|{{{1}}}}}",
},
{
regex = "^Requests for attestation of (.+) terms$",
umbrella = "Requests for attestation of terms by language",
breadcrumb = "Attestation",
additional_template_description = "The {{tl|LDL}} template adds this category when a language code is supplied in {{para|1}} (as it should be)."
},
})
local user_competency_additional_template_description = "This is added by user-competency categories such as " ..
"[[:Category:User fr-4]], which groups users who speak French at level 4 (near-native proficiency), when " ..
"the native-language text indicating this fact is missing. The appropriate translation should mirror the " ..
"English text also displayed (e.g. in this case \"These users speak French at a '''near native''' " ..
"level.\"), and should be supplied to {{tl|auto cat}} using the {{para|text}} parameter. The mention of the " ..
"language in the text should be surrounded by double angle brackets, e.g. \"<<français>>\", which " ..
"causes it to be automatically linked to the appropriate parent category."
local user_competency_parents = {{name = "Requests for translations in user-competency categories by number of users",
sort = function(items)
return " " .. ("%010d"):format(items["1"])
end,
}}
extend(requests_categories, {
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+)%-([0-9]+) users$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}}-{{{2}}} users.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}-{{{2}}}",
nolang = true,
},
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+) (users?)$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}} {{{2}}}.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}",
nolang = true,
}
})
table.insert(raw_handlers, function(data)
local items
local function init_items()
items = {pagename = data.category}
end
local function expand_value(item, val)
if not val then
return val
elseif is_callable(val) then
return expand_value(item .. " ⇒ function", val(items))
elseif type(val) == "table" then
for k, v in pairs(val) do
val[k] = expand_value(item .. " ⇒ " .. k, v)
end
return val
elseif type(val) == "number" then
val = tostring(val)
end
if type(val) ~= "string" then
error(("The item '%s' on page %s is of type %s and can't be concatenated"):format(
item, items.pagename, type(val)))
end
-- Replaces pseudo-template code {{{ }}} with the corresponding member of the "items" table. Has to be done
-- recursively, since some of the items are nested:
-- {{{template_sample_call_with_temp}}}
-- ⇓
-- {{{{{template_name}}}|{{{language_code}}}}}
-- ⇓
-- {{attention|en}}
if val:find("{{{") then
val = mw.ustring.gsub(val, "{{{([^%}%{]+)}}}", function(prop)
local propval = items[prop]
if not propval then
error(("The item '%s' (expanded from property '%s' on page %s) was not found in the 'items' table"):
format(prop, item, items.pagename))
end
return expand_value(item .. " ⇒ " .. prop, propval)
end
)
end
return val
end
local function expand_items_value(item)
return expand_value(item, items[item])
end
local function convert_items_to_category_data(items)
if not items.nolang then
items.language_name = items.language_name or "{{{1}}}"
items.language_name = expand_items_value("language_name")
items.language_object = require(languages_module).getByCanonicalName(items.language_name, true,
items.allow_etym_lang)
items.language_code = items.language_object:getCode()
items.is_etym_lang = items.language_object:hasType("etymology-only")
if items.is_etym_lang then
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In
-- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and
-- Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
else
end
end
if items.template_name then
items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}"
items.full_text_about_the_template = "To make this request, in this specific language, use this code in the entry (see also the documentation at [[Template:{{{template_name}}}]]):\n\n<pre>{{{template_sample_call}}}</pre>"
if items.template_example_output then
items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output
else
items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call
items.full_text_about_the_template = items.full_text_about_the_template .. "\nIt results in the message below:\n\n{{{template_actual_sample_call}}}"
end
if items.additional_template_description then
items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description
end
else
items.full_text_about_the_template = items.additional_template_description
end
local parents, breadcrumb
if items.is_etym_lang then
parents = items.etym_parents
breadcrumb = expand_items_value("etym_breadcrumb") or items.language_name
else
parents = items.parents
breadcrumb = expand_items_value("breadcrumb")
end
if parents then
for _, parent in ipairs(parents) do
parent.name = expand_value("parent.name", parent.name)
parent.sort = {sort_base = expand_value("parent.sort", parent.sort), lang = "en"}
end
else
local umbrella_type = items.pagename:match("^Requests for (.+) by language$")
if umbrella_type then
breadcrumb = breadcrumb or umbrella_type
parents = {{name = "Request subcategories by language", sort = umbrella_type}}
elseif not items.language_name then
error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'")
else
local requests_concerning_breadcrumb = items.pagename:gsub(" " .. pattern_escape(items.language_name), "")
requests_concerning_breadcrumb =
requests_concerning_breadcrumb:gsub("^Requests for ", ""):gsub(" in entries$", ""):gsub(" for terms$", "")
local requests_concerning_parent =
{
name = "Requests concerning " .. items.language_name,
sort = {sort_base = requests_concerning_breadcrumb, lang = "en"}
}
if items.is_etym_lang then
local parent_lang_cat = items.pagename:gsub(pattern_escape(items.language_name), replacement_escape(items.parent_language_name))
parents = {
{name = parent_lang_cat, sort = {sort_base = items.language_name, lang = "en"}},
requests_concerning_parent
}
else
breadcrumb = breadcrumb or requests_concerning_breadcrumb
parents = {requests_concerning_parent}
end
end
end
if not items.nolang and not items.is_etym_lang and items.umbrella ~= false then
table.insert(parents, {
name = expand_items_value("umbrella"),
sort = {sort_base = items.language_name, lang = "en"}
})
end
local additional = expand_items_value("full_text_about_the_template")
if items.pagename:find(" by language$") then
additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "")
end
return {
description = expand_items_value("description") or items.pagename .. ".",
lang = items.parent_language_code or items.language_code,
additional = additional,
parents = parents,
-- If no breadcrumb= and not an etym-only language, it will default to the category name
breadcrumb = breadcrumb,
catfix = expand_items_value("catfix"),
toc_template = expand_items_value("toc_template"),
toc_template_full = expand_items_value("toc_template_full"),
hidden = not items.nolang and not items.not_hidden_category,
can_be_empty = true,
}
end
-- First look for a regular (usually language or script-specific) category.
for _, category in ipairs(requests_categories) do
local matchvals = {mw.ustring.match(data.category, category.regex)}
if #matchvals > 0 then
init_items()
for key, value in pairs(category) do
items[key] = value
end
for key, value in ipairs(matchvals) do
items["" .. key] = value
end
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
-- Now look for umbrella categories.
for _, category in ipairs(requests_categories) do
if data.category == category.umbrella then
init_items()
items.nolang = true
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
return nil
end)
table.insert(raw_handlers, function(data)
local langname = data.category:match("^Terms with (.+) translations$")
local lang = langname and require(languages_module).getByCanonicalName(langname, true, true)
if lang then
local langcode = lang:getCode()
local parents, breadcrumb_and_first_sort_key
if lang:hasType("etymology-only") then
parents = {
"Terms with " .. lang:getFullName() .. " translations",
{name = langname, sort = "Translations"},
}
breadcrumb_and_first_sort_key = lang:getCanonicalName()
else
parents = {
{name = "entry maintenance", is_label = true, lang = langcode},
{
name = "Terms with translations by language",
sort = {sort_base = langname, lang = "en"}
},
}
breadcrumb_and_first_sort_key = "Translations"
end
return {
description = "Entries that contain translations into " .. langname .. " which were added using one of the translation templates, such as {{tl|t|" .. langcode .. "|...}}, {{tl|t+|" .. langcode .. "|...}}, etc.",
parents = parents,
breadcrumb_and_first_sort_key = breadcrumb_and_first_sort_key,
catfix = false,
can_be_empty = true,
hidden = true,
}
end
end)
local recognized_taxtypes = require(table_module).listToSet {
"ambiguous",
"binomial",
"branch",
"clade",
"cladus",
"class",
"cohort",
"convariety",
"cultivar group",
"cultivar",
"division",
"empire",
"epifamily",
"epithet",
"family",
"form taxon",
"form",
"genus",
"grade",
"grandorder",
"group",
"hybrid",
"informal group",
"infraclass",
"infracohort",
"infrakingdom",
"infraorder",
"infraphylum",
"infraspecies",
"kingdom",
"magnorder",
"megacohort",
"mirorder",
"morph",
"nothogenus",
"nothospecies",
"nothosubspecies",
"nothovariety",
"obsolete",
"oofamily",
"order",
"parvclass",
"parvorder",
"phylum",
"section",
"series",
"serovar",
"species group",
"species",
"stem",
"stirps",
"strain",
"subclass",
"subcohort",
"subdivision",
"subfamily",
"subgenus",
"subgroup",
"subinfraorder",
"subkingdom",
"suborder",
"subphylum",
"subsection",
"subspecies",
"subterclass",
"subtribe",
"superclass",
"supercohort",
"superfamily",
"supergroup",
"superorder",
"superphylum",
"supertribe",
"taxon",
"tribe",
"trinomial",
"undescribed species",
"unknown",
"unranked group",
"variety",
"virus complex",
}
table.insert(raw_handlers, function(data)
local taxtype = data.category:match("^Entries using missing taxonomic name %((.*)%)$")
if taxtype and recognized_taxtypes[taxtype] then
return {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name.",
parents = {{name = "Entries using missing taxonomic names", sort = {sort_base = taxtype, lang = "en"}}},
breadcrumb = taxtype,
hidden = true,
}
end
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
lel548mkfr82xcfn67z5xid81ea6nga
233718
233717
2026-05-09T04:35:46Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
233718
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local functions_module = "Module:fun"
local languages_module = "Module:languages"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local table_module = "Module:table"
local extend = require(table_module).extend
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["ප්රවේශ නඩත්තුව"] = {
description = "{{{langname}}} entries, or entries in other languages containing {{{langname}}} terms, that are being tracked for attention and improvement by editors.",
parents = {{name = "{{{langcat}}}", raw = true}},
umbrella_parents = "මූලධර්ම",
}
labels["ප්රවේශ, දෝෂ සහගත භාෂා ශීර්ෂක සහිත"] = {
description = "{{{langname}}} ප්රවේශ, වැරදි භාෂා ශීර්ෂක යටතේ දක්වා ඇති.",
additional = "හේතු කිහිපයක් නිසා මෙය සිදුවිය හැකිය:\n" ..
"* අක්ෂර වින්යාසය දෝෂ (Typos).\n" ..
"* විනාශ කිරීම් (Vandalism).\n" ..
"* වැරදි භාෂා කේතය භාවිතා කිරීම.\n" ..
"* භාෂාව සඳහා වන විකල්ප නාමයක් භාවිතා කිරීම.\n" ..
"* භාෂා දත්ත මොඩියුල තුළ භාෂා නාම සඳහා දක්වා නොමැති විශේෂ අනුකල්ෂණ භාවිතා කිරීම.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries without References header"] = {
description = "{{{langname}}} entries without a References header.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries without References or Further reading header"] = {
description = "{{{langname}}} entries without a References or Further reading header.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries that don't exist"] = {
description = "{{{langname}}} terms that do not meet the [[Wiktionary:Criteria for inclusion|criteria for inclusion]] (CFI). They are added to the category with the template {{tl|no entry|{{{langcode}}}}}.",
parents = {"ප්රවේශ නඩත්තුව"},
umbrella_parents = "මූලධර්ම",
}
labels["entries with etymology trees"] = {
description = "{{{langname}}} entries that display an etymology tree generated by the template {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries with etymology texts"] = {
description = "{{{langname}}} entries that display an etymology generated by the template {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing missing etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon that cannot be found, either because the target page does not exist (redlink) or because it has no {{tl|etymon}} template.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing ambiguous etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon without the ID, when the target page contains multiple {{tl|etymon}} templates, and an ID is therefore required to select the correct {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons with mismatched IDs"] = {
description = "Entries which use the {{tl|etymon}} template with a mismatched ID. For example, {{code|lang:entry<id:mismatched ID>}}",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has no Descendants section.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without this term in Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has a Descendants section, but does not list the current term there.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["ප්රවේශ, ඍජු එක් කිරීම මගින් භාෂා නාම ප්රවර්ග දක්වා ඇති"] = {
description = "{{{langname}}} entries that have been placed in a language name category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langname}}} ...]]}}). They should be added using {{tl|cln|{{{langcode}}}|...}} instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["ප්රවේශ, ඍජු එක් කිරීම මගින් මාතෘකා ප්රවර්ග දක්වා ඇති"] = {
description = "{{{langname}}} entries that have been placed in a topic category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langcode}}}:...]]}}). They should be added using {{tl|C|{{{langcode}}}|...}} instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries with outdated source"] = {
description = "{{{langname}}} entries that have been partly or fully imported from an outdated source.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["entries with inflection not matching pagename"] = {
description = "{{{langname}}} entries which have an inflection table whose lemma form does not match the page name.",
additional = "This is usually the result of incorrect or missing parameters.",
breadcrumb_and_first_sort_key = "inflection not matching pagename",
parents = {"ප්රවේශ නඩත්තුව"},
hidden = true,
can_be_empty = true,
}
labels["undefined derivations"] = {
description = "{{{langname}}} etymologies using {{tl|undefined derivation}}, where a more specific template such as {{tl|borrowed}} or {{tl|inherited}} should be used instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["descendants to be fixed in desctree"] = {
description = "Entries that use {{tl|desctree}} to link to {{{langname}}} entries with no Descendants section.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["term requests"] = {
description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["රතු සබැඳි"] = {
description = "Links to {{{langname}}} entries that have not been created yet.",
parents = {"ප්රවේශ නඩත්තුව"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["යෙදුම්, ස්වරශාස්ත්ර හෝඩි උච්චාරණ සහිත"] = {
description = "{{{langname}}} යෙදුම්, ජාත්යන්තර ස්වරශාස්ත්ර හෝඩිය (IPA) භාවිතා කොට උච්චාරණය දක්වා ඇති.",
additional = "මෙම ප්රවර්ගය හා සබැඳි ඉල්ලීම් සඳහා, [[:Category:Requests for pronunciation in {{{langname}}} entries]] වෙත යොමු වන්න.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with enPR pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of enPR.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with Indic pronunciation"] = {
description = "{{langname}} terms that include the pronunciation in the form of ISO 15919.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["IPA pronunciations with invalid separators"] = {
description = "{{{langname}}} terms with IPA using invalid separators such as /.ˈ/, /.ˌ/, a dot followed by primary or secondary stress; or /ˈ / or /ˌ /, primary or secondary stress followed by a space.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["terms with hyphenation"] = {
description = "{{{langname}}} terms that include hyphenation.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, ඕඩියෝ උච්චාරණ සහිත"] = {
description = "{{{langname}}} යෙදුම්, ඕඩියෝ ගොනුවක් භාවිතයෙන් උච්චාරණය දක්වා ඇති.",
additional = "For requests related to this category, see [[:Category:Requests for audio pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with nonstandard or incorrect audio pronunciations"] = {
description = "{{{langname}}} terms which have been tagged as having pronunciations which are nonstandard or incorrect.",
parents = {"යෙදුම්, ඕඩියෝ උච්චාරණ සහිත"},
can_be_empty = true,
hidden = true,
}
labels["entries missing Template:reconstructed"] = {
description = "Reconstructed {{{langname}}} entries which do not have the {{tl|reconstructed}} template.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation)
labels[label] = {
description = desc or "Pages containing {{{langname}}} " .. label .. ".",
additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" ..
"Note that the pages in this category are not necessarily the same as the actual term in question. This " ..
"frequently happens, for example, with English pages with translation sections, where the term that " ..
"triggers the addition of the category is one of the translations."),
parents = {"ප්රවේශ නඩත්තුව"},
-- Set catfix = false because the page will have a mixture of native-language and
-- non-native-language pages, but include the normal native-language table of contents headers
-- because most pages are in the native language.
catfix = false,
toc_template = "{{{langcode}}}-categoryTOC",
toc_template_full = "{{{langcode}}}-categoryTOC/full",
can_be_empty = true,
hidden = true,
}
end
add_manual_param_category("terms in nonstandard scripts", nil,
"Pages are placed here if they contain terms written in a script that isn't in the language's " ..
"list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.",
true)
add_manual_param_category("terms with non-redundant manual transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with redundant transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant manual script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.",
true)
add_manual_param_category("terms with redundant script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.",
true)
add_manual_param_category("යෙදුම්, non-redundant non-automated සෝට්කී සහිත",
"{{{langname}}} terms with non-redundant non-automated sortkeys.",
"Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " ..
"generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " ..
"parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " ..
"sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " ..
"page will also be added here.")
add_manual_param_category("යෙදුම්, අනු පිටපත් කළ සෝට්කී සහිත",
"{{{langname}}} terms with redundant sortkeys.",
"Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " ..
"as the one which is automatically generated.")
add_manual_param_category("links with redundant target parameters",
"Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " ..
"separately.",
"This occurs when the only difference between the link target and the alt text is that the alt text contains " ..
"diacritics (or other characters) which would have been ignored anyway had they been included in the link " ..
"target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " ..
"({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " ..
"displayed.")
add_manual_param_category("links with ignored alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.",
"This occurs when the alt text makes no difference to the output. For example, {{tl|l|en|foo|foo}} " ..
"({{l|en|foo|foo}}) is exactly the same as {{tl|l|en|foo}} ({{l|en|foo}}).")
add_manual_param_category("links with ignored id parameters",
"Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("සබැඳි, අනු පිටපත් කළ විකි සබැඳි සහිත",
"Pages containing {{{langname}}} links which contain a redundant wikilink.",
"This occurs if link target consists of a single wikilink, which should instead be entered in the " ..
"conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " ..
"is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " ..
"{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " ..
"unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}")
add_manual_param_category("links with manual fragments",
"Pages containing {{{langname}}} links where a manual link fragment has been given.",
"This occurs when the link fragment has been specified using {{code|#}} after the term, " ..
"which overrides the normal fragment generated by link templates that points to the relevant " ..
"language section.\n\nLink fragments are used to point to a specific section on a target page, and " ..
"it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " ..
"additional content is added to the target page: for example, the fragment {{code|#Adjective}} " ..
"will start pointing to the wrong section if another language with an adjective section is added above " ..
"the intended language.")
labels["descendant hubs"] = {
description = "{{{langname}}} terms that do not mean more than the sum of their parts but exist for listing two or more inclusion-worthy descendants.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms needing to be assigned to a sense"] = {
description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
--[=[
labels["terms with inflection tables"] = {
description = "{{{langname}}} entries that contain inflection tables.".
additional = "For requests related to this category," see [[:Category:Requests for inflections in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
]=]
labels["terms with collocations"] = {
description = "{{{langname}}} entries that contain [[collocation]]s that were added using templates such as {{tl|co}}.",
additional = "For requests related to this category, see [[:Category:Requests for collocations in {{{langname}}}]]. See also [[:Category:Requests for quotations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, භාවිත නිදර්ශන සහිත"] = {
description = "{{{langname}}} entries that contain usage examples that were added using templates such as {{tl|ux}}.",
additional = "For requests related to this category, see [[:Category:Requests for example sentences in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for quotations in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, උපුටා දැක්වීම් සහිත"] = {
description = "{{{langname}}} entries that contain quotes that were added using templates such as {{tl|quote}}, {{tl|quote-book}}, {{tl|quote-journal}}, etc.",
additional = "For requests related to this category, see [[:Category:Requests for quotations in {{{langname}}}]]. See also [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with interlinear glossed text"] = {
description = "{{{langname}}} entries that contain interlinear glossed text added using {{tl|interlinear}}.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["පද, අනු පිටපත් කළ යොමු පරාමිති සහිත"] = {
description = "{{{langname}}} terms that contain a redundant head= parameter in their headword (called using {{tl|head}} or a language-specific equivalent).",
additional = "Individual languages can prevent terms from being added to this category by setting `data.no_redundant_head_cat`.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["පද, යොමු වචන පේළි තුළ රතු සබැඳි සහිත"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"රතු සබැඳි"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their inflection tables"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"රතු සබැඳි"},
can_be_empty = true,
hidden = true,
}
labels["requests for English equivalent term"] = {
description = "{{{langname}}} entries with definitions that have been tagged with {{tl|rfeq}}. Read the documentation of the template for more information.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
for _, quot_type in ipairs { "quotations", "usage examples" } do
labels[quot_type .. " with omitted translation"] = {
description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying {{code|-}}. The translation should be supplied instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs({"nouns", "proper nouns", "verbs", "adjectives", "adverbs", "participles", "determiners", "pronouns", "numerals", "suffixes", "contractions"}) do
labels[m_sinhala.sinhala(pos) .. ", යොමු වචන පේළි තුළ රතු සබැඳි සහිත"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"පද, යොමු වචන පේළි තුළ රතු සබැඳි සහිත"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
labels[pos .. " with red links in their inflection tables"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"terms with red links in their inflection tables"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
local label = pos .. " with unknown or uncertain plurals"
labels[label] = {
description = "{{{langname}}} " .. label .. ".",
additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " ..
"is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " ..
"using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " ..
"that a plural cannot be attested but the noun is theoretically countable.",
breadcrumb = "with unknown or uncertain plurals",
parents = {
{name = pos, sort = "unknown or uncertain plurals"},
"ප්රවේශ නඩත්තුව",
},
}
end
-- Add 'umbrella_parents' key if not already present.
for _, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග"] = {
description = "Umbrella categories covering topics related to entry maintenance.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "ප්රවේශ නඩත්තුව", is_label = true, sort = " "},
},
}
raw_categories["ඉල්ලීම්"] = {
topright = "{{shortcut|WT:CR|WT:RQ}}",
description = "A parent category for the various request categories.",
parents = {"ප්රවර්ගය:වික්ෂනරිය"},
}
raw_categories["Requests by language"] = {
description = "Categories with requests in various specific languages.",
additional = "{{{umbrella_msg}}}",
parents = {
{name = "Request subcategories by language", sort = " "},
{name = "ඉල්ලීම්", sort = " "},
},
breadcrumb = "By language",
}
raw_categories["Request subcategories by language"] = {
description = "Umbrella categories covering topics related to requests.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "ඉල්ලීම්", sort = " "},
},
}
raw_categories["Requests for quotations by source"] = {
description = "Categories with requests for quotation, broken out by the source of the quotation.",
additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].",
parents = {{name = "Requests for quotations", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for quotations"] = {
-- FIXME
description = "Words are added to this category by the inclusion in their entries of {{tl|rfv-quote}}.",
parents = {{name = "ඉල්ලීම්", sort = "quotations"}},
breadcrumb = "Quotations",
}
raw_categories["Requests for date"] = {
description = "Requests for a date to be added to a quotation.",
additional = "To add an article to this category, use {{tl|rfdate}} or {{tl|rfdatek}} to include the author. " ..
"Please remove the template from the article once the date has been provided.",
parents = {{name = "ඉල්ලීම්", sort = "date"}},
breadcrumb = "Date",
}
raw_categories["Requests for translations in user-competency categories by number of users"] = {
description = "Requests for translations to be added to user-competency categories, sorted by number of users with that competency.",
parents = {{name = "ඉල්ලීම්", sort = "translations in user-competency categories by number of users"}},
breadcrumb = "Translations in user-competency categories by number of users",
}
raw_categories["Requests for translations in user-competency categories by language"] = {
description = "Requests for translations to be added to user-competency categories, sorted by language.",
parents = {{name = "ඉල්ලීම්", sort = "translations in user-competency categories by language"}},
breadcrumb = "Translations in user-competency categories by language",
hidden = true,
}
raw_categories["භාෂාව අනුව යෙදුම්, පරිවර්තන සහිත"] = {
description = "Terms with translations, sorted by language.",
parents = {{name = "භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග", sort = "translations by language"}},
breadcrumb = "පරිවර්තන",
}
raw_categories["Entries using missing taxonomic names"] = {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name." ..
"\n\nSee [[:Category:mul:Taxonomic names]].",
parents = {{name = "ප්රවේශ නඩත්තුව", is_label = true, lang = "mul", sort = "missing taxonomic names"}},
breadcrumb = "Missing taxonomic names",
hidden = true,
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function script_name_to_code(name)
local sc = require(scripts_module).getByCanonicalName(name)
if not sc then
error("Unrecognized script name '" .. name .. "'")
end
return sc:getCode()
end
--[=[
This array consists of category match specs. Each spec contains one or more properties, whose values are (a) strings
that may contain references to other properties using the {{{PROPERTY}}} syntax; (b) functions of one argument, an
`items` table of the same properties that are accessible using the {{{PROPERTY}} syntax. Each such spec should have at
least a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced in
other properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. (or using keys "1", "2", etc. in
functions). Property expansion happens recursively if needed (i.e. a property can reference another property, which in
turn references a third property).
If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a capturing
group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property is set, in
which case there is no language name associated with the category name. The language name must be the canonical name of
a recognized full language, or an error is thrown; however, if the `allow_etym_lang` property is set, the language name
may also be the canonical name of an etymology-only language. Based on the language name, the `language_code` and
`language_object` properties are automatically filled in. If `language_name` is an etymology-only language, additional
properties `parent_language_name`, `parent_language_code` and `parent_language_object` are set for the parent full
language of the etymology-only language.
If the `regex` values of multiple category specs match, the first one takes precedence.
Recognized or predefined properties:
`pagename`: Current pagename.
`regex`: See above.
`1`, `2`, `3`, ...: See above.
`language_name`, `language_code`, `language_object`: See above.
`parent_language_name`, `parent_language_code`, `parent_language_object`: See above.
`nolang`: See above.
`allow_etym_lang`: Language names may be etymology-only languages. See above.
`description`: Override the description (normally taken directly from the pagename).
`template_name`: Name of template which generates this category.
`template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}". Used to
display an example template call and the output of this call.
`template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when
generating example template output (but not when displaying an example template call) and is intended for a template
call that uses the |nocat=1 parameter.
`template_example_output`: Override the text that displays example template output (see `template_sample_call`).
`additional_template_description`: Extra text to be displayed after the example template output.
`parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name= and
sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will have
{{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form "Requests for FOO
by language", the parent will be "Request subcategories by language" with FOO as the sort key. Otherwise, the
`language_name` property must exist, and the parent will be "Requests concerning LANGNAME", with the pagename minus
any initial "Requests for " as the sort key. Note that this does *NOT* apply if an etymology-only language is
associated with the category, in which case `etym_parents` is used instead.
`etym_parents`: Parent categories for categories with associated etymology-only languages. The format is the same as
`parents`. If omitted, there are two parents by default: (1) The pagename (i.e. category name) with the language name
replaced by the corresponding parent language name, with the value of `language_name` as the sort key; (2) "Requests
concerning LANGNAME", with the pagename minus any initial "Requests for " as the sort key.
`umbrella`: Parent all-language category. Sort key is based on the language name. This applies *ONLY* if a full language
is associated with the category name (i.e. not if `nolang` is set or if `allow_etym_lang` is set and the associated
language is an etymology-only language); otherwise there will be no umbrella category.
`breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the
pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", the default breadcrumb will be
"FOO". Otherwise it is computed by removing the language name from the pagename and chopping out "Requests for" from
the beginning and "in entries" and "for terms" from the end. Note that this does *NOT* apply if an etymology-only
language is associated with the category, in which case `etym_breadcrumb` is used instead.
`etym_breadcrumb`: Specify the breadcrumb for categories with associated etymology-only languages. Defaults to the value
of `language_name`.
`not_hidden_category`: Don't hide the category.
`catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax is
expanded.
`toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except that
request-specific {{{PROPERTY}}} syntax is expanded.
In general, properties can contain references to templates (e.g. {{tl}} and {{para}}), which will be appropriately
expanded (this expansion happens in the poscatboiler code, not in this module). The major exception is in the
`template_sample_call` and `template_actual_sample_call` properties, which are surrounded by <pre>...</pre> when
inserted, so template references are not expanded. Triple-brace property references are still expanded in these
properties; but beware that if any of those property references contain template references, they won't be expanded.
(This actually happens in the handlers for 'Request for SCRIPT script for LANG terms'; the sample call references
{{{script_code}}}, whose definition therefore cannot contain template references. The solution is to define this
property using a function.)
]=]
local requests_categories = {
{
regex = "^Requests concerning (.+)$",
allow_etym_lang = true,
description = "Categories with {{{1}}} entries that need the attention of experienced editors.",
parents = {{name = "ප්රවේශ නඩත්තුව", is_label = true, sort = "requests"}},
etym_parents = {{name = "Requests concerning {{{parent_language_name}}}", sort = "{{{1}}}"},
{name = "{{{1}}}", sort = "ඉල්ලීම්"}},
umbrella = "Requests by language",
breadcrumb = "ඉල්ලීම්",
not_hidden_category = true,
},
{
regex = "^Requests for etymologies in (.+) entries$",
allow_etym_lang = true,
umbrella = "Requests for etymologies by language",
template_name = "rfe",
},
{
regex = "^Requests for expansion of etymologies in (.+) entries$",
umbrella = "Requests for expansion of etymologies by language",
template_name = "etystub",
},
{
regex = "^Requests for pronunciation in (.+) entries$",
umbrella = "Requests for pronunciation by language",
template_name = "rfp",
},
{
regex = "^Requests for audio pronunciation in (.+) entries$",
umbrella = "Requests for audio pronunciation by language",
template_name = "rfap",
},
{
regex = "^Requests for definitions in (.+) entries$",
umbrella = "Requests for definitions by language",
template_name = "rfdef",
},
{
regex = "^Requests for clarification of definitions in (.+) entries$",
umbrella = "Requests for clarification of definitions by language",
template_name = "rfclarify",
},
}
for _, spec_with_pos in ipairs {
{"inflections", "rfinfl"},
{"plural forms"},
{"tone", "rftone"},
{"accents"},
{"aspect", "rfaspect"},
{"animacy"},
{"gender", "rfgender"},
{"noun class"},
} do
local property, rftemplate = unpack(spec_with_pos)
table.insert(requests_categories,
{
-- This is for part-of-speech-specific categories such as
-- "Requests for inflections in Northern Ndebele noun entries" or
-- "Requests for accents in Ukrainian proper noun entries".
-- Here and below, we assume that the part of speech is begins with
-- a lowercase letter, while the preceding language name ends in a
-- capitalized word. Note that this entry comes before the
-- following one and takes precedence over it.
regex = ("^Requests for %s in (.-) ([a-z]+[a-z ]*) entries$"):format(property),
parents = {{name = ("Requests for %s in {{{language_name}}} entries"):format(property), sort = "{{{2}}}"}},
umbrella = ("Requests for %s of {{pluralize|{{{2}}}}} by language"):format(property),
breadcrumb = "{{{2}}}",
template_name = rftemplate,
template_sample_call = rftemplate and ("{{%s|{{{language_code}}}|{{{2}}}}}"):format(rftemplate) or nil,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s in (.+) entries$"):format(property),
umbrella = ("Requests for %s by language"):format(property),
template_name = rftemplate,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s of (.+) by language$"):format(property),
nolang = true,
}
)
end
extend(requests_categories, {
{
regex = "^Requests for example sentences in (.+)$",
umbrella = "Requests for example sentences by language",
template_name = "rfex",
},
{
regex = "^Requests for quotations in (.+)$",
umbrella = "Requests for quotations by language",
template_name = "rfquote",
},
{
regex = "^Requests for translations into (.+)$",
allow_etym_lang = true,
umbrella = "Requests for translations by language",
template_name = "t-needed",
catfix = "en",
},
{
regex = "^Requests for translations of (.+) usage examples$",
allow_etym_lang = true,
umbrella = "Requests for translations of usage examples by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|usex}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex|nocat=1}}",
additional_template_description = "The {{tl|ux}}, {{tl|uxi}}, {{tl|ja-usex}} and {{tl|zh-x}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for translations of (.+) quotations$",
allow_etym_lang = true,
umbrella = "Requests for translations of quotations by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|quote}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote|nocat=1}}",
additional_template_description = "The {{tl|quote}}, and {{tl|Q}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for review of (.+) translations$",
allow_etym_lang = true,
umbrella = "Requests for review of translations by language",
template_name = "t-check",
template_sample_call = "{{t-check|{{{language_code}}}|example}}",
template_example_output = "",
catfix = "en",
},
{
regex = "^Requests for transliteration of (.+) terms$",
umbrella = "Requests for transliteration by language",
template_name = "rftranslit",
additional_template_description = "The {{tl|head}} template, and the large number of language-specific variants of it, automatically add " ..
"the page to this category if the example is in a foreign language and no transliteration can be generated (particularly in languages without " ..
"automated transliteration, such as Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) usage examples$",
umbrella = "Requests for transliteration of usage examples by language",
template_name = "rftranslit",
template_sample_call = "{{rftranslit|{{{language_code}}}}}",
template_actual_sample_call = "{{rftranslit|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) quotations$",
umbrella = "Requests for transliteration of quotations by language",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for native script for (.+) terms$",
allow_etym_lang = true,
etym_parents = {
{name = "Requests for native script for {{{parent_language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "native script"},
},
umbrella = "Requests for native script by language",
template_name = "rfscript",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for native script in (.+) usage examples$",
umbrella = "Requests for native script in usage examples by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example itself is missing but the translation is supplied."
},
{
regex = "^Requests for native script in (.+) quotations$",
umbrella = "Requests for native script in quotations by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation itself is missing but the translation is supplied."
},
{
regex = "^Requests for (.+) script for (.+) terms$",
language_name = "{{{2}}}",
allow_etym_lang = true,
parents = {{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"}},
etym_parents = {
{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests for {{{1}}} script for {{{parent_language_name}}} terms", sort = "{{{language_name}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "{{{1}}} script"},
},
umbrella = "Requests for {{{1}}} script by language",
breadcrumb = "{{{1}}}",
etym_breadcrumb = "{{{1}}}",
template_name = "rfscript",
-- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the
-- conversion of script name to script code needs to be done using an inline function like this, instead of
-- a {{#invoke:...}} template call.
script_code = function(items)
return script_name_to_code(items["1"])
end,
template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for (.+) script by language$",
parents = {{name = "Requests for script by language", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
},
{
regex = "^Requests for script by language$",
nolang = true,
},
{
regex = "^Requests for images in (.+) entries$",
umbrella = "Requests for images by language",
template_name = "rfi",
},
{
regex = "^Requests for references for (.+) terms$",
umbrella = "Requests for references by language",
template_name = "rfref",
},
{
regex = "^Requests for references for etymologies in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}},
umbrella = "Requests for references for etymologies by language",
breadcrumb = "නිරුක්ති",
template_name = "rfv-etym",
},
{
regex = "^Requests for references for pronunciations in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}},
umbrella = "Requests for references for pronunciations by language",
breadcrumb = "Pronunciations",
template_name = "rfv-pron",
},
{
regex = "^Requests for attention concerning (.+)$",
umbrella = "Requests for attention by language",
breadcrumb = "Attention",
template_name = "attention",
template_sample_call = "{{attention|{{{language_code}}}|insert a brief description of the request here}}",
template_example_output = "This template does not generate any text in entries, but can be visualised by enabling the Catch My Attention gadget. See {{section link|Template:attention#Visibility}}.",
-- These pages typically contain a mixture of English and native-language entries, so disable catfix.
catfix = false,
-- Setting catfix = false will normally trigger the English table of contents template.
-- We still want the native-language table of contents template, though.
toc_template = "{{{language_code}}}-categoryTOC",
toc_template_full = "{{{language_code}}}-categoryTOC/full",
},
{
regex = "^Requests for cleanup in (.+) entries$",
umbrella = "Requests for cleanup by language",
template_name = "rfc",
template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$",
umbrella = "Requests for cleanup of Pronunciation N headers by language",
template_name = "rfc-pron-n",
template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}",
template_example_output = "This template does not generate any text in entries.",
additional_template_description = [=[
The purpose of this category is to tag entries that use headers with "Pronunciation" and a number.
While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header.
[[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed.
This category is hidden.]=],
},
{
regex = "^Requests for deletion in (.+) entries$",
umbrella = "Requests for deletion by language",
template_name = "rfd",
template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for verification in (.+) entries$",
umbrella = "Requests for verification by language",
template_name = "rfv",
},
{
regex = "^Requests for attention in (.+) etymologies$",
umbrella = "Requests for attention by language"
},
{
regex = "^Requests for quotations/(.+)$",
description = "Requests for a quotation or for quotations from {{{1}}}.",
parents = {{name = "Requests for quotations by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfquotek",
template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{rfquotek|und|{{{1}}}}}",
},
{
regex = "^Requests for date in (.+) entries$",
umbrella = "Requests for date by language",
template_name = "rfdate",
additional_template_description = "The quotation templates, such as {{tl|quote-book}} and {{tl|quote-journal}}, " ..
"automatically add the page to this category if neither {{para|date}} nor {{para|year}} is provided. Providing the " ..
"parameter in each case on the page automatically removes the article from this category. See " ..
"[[Wiktionary:Quotations]] for information about formatting dates and quotations.",
},
{
regex = "^Requests for date/(.+)$",
description = "{{rfd|section=Category:Requests for date by source}}Requests for a date for a quotation or quotations from {{{1}}}.",
parents = {{name = "Requests for date by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfdatek",
template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{rfdatek|und|{{{1}}}}}",
},
{
regex = "^Requests for attestation of (.+) terms$",
umbrella = "Requests for attestation of terms by language",
breadcrumb = "Attestation",
additional_template_description = "The {{tl|LDL}} template adds this category when a language code is supplied in {{para|1}} (as it should be)."
},
})
local user_competency_additional_template_description = "This is added by user-competency categories such as " ..
"[[:Category:User fr-4]], which groups users who speak French at level 4 (near-native proficiency), when " ..
"the native-language text indicating this fact is missing. The appropriate translation should mirror the " ..
"English text also displayed (e.g. in this case \"These users speak French at a '''near native''' " ..
"level.\"), and should be supplied to {{tl|auto cat}} using the {{para|text}} parameter. The mention of the " ..
"language in the text should be surrounded by double angle brackets, e.g. \"<<français>>\", which " ..
"causes it to be automatically linked to the appropriate parent category."
local user_competency_parents = {{name = "Requests for translations in user-competency categories by number of users",
sort = function(items)
return " " .. ("%010d"):format(items["1"])
end,
}}
extend(requests_categories, {
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+)%-([0-9]+) users$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}}-{{{2}}} users.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}-{{{2}}}",
nolang = true,
},
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+) (users?)$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}} {{{2}}}.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}",
nolang = true,
}
})
table.insert(raw_handlers, function(data)
local items
local function init_items()
items = {pagename = data.category}
end
local function expand_value(item, val)
if not val then
return val
elseif is_callable(val) then
return expand_value(item .. " ⇒ function", val(items))
elseif type(val) == "table" then
for k, v in pairs(val) do
val[k] = expand_value(item .. " ⇒ " .. k, v)
end
return val
elseif type(val) == "number" then
val = tostring(val)
end
if type(val) ~= "string" then
error(("The item '%s' on page %s is of type %s and can't be concatenated"):format(
item, items.pagename, type(val)))
end
-- Replaces pseudo-template code {{{ }}} with the corresponding member of the "items" table. Has to be done
-- recursively, since some of the items are nested:
-- {{{template_sample_call_with_temp}}}
-- ⇓
-- {{{{{template_name}}}|{{{language_code}}}}}
-- ⇓
-- {{attention|en}}
if val:find("{{{") then
val = mw.ustring.gsub(val, "{{{([^%}%{]+)}}}", function(prop)
local propval = items[prop]
if not propval then
error(("The item '%s' (expanded from property '%s' on page %s) was not found in the 'items' table"):
format(prop, item, items.pagename))
end
return expand_value(item .. " ⇒ " .. prop, propval)
end
)
end
return val
end
local function expand_items_value(item)
return expand_value(item, items[item])
end
local function convert_items_to_category_data(items)
if not items.nolang then
items.language_name = items.language_name or "{{{1}}}"
items.language_name = expand_items_value("language_name")
items.language_object = require(languages_module).getByCanonicalName(items.language_name, true,
items.allow_etym_lang)
items.language_code = items.language_object:getCode()
items.is_etym_lang = items.language_object:hasType("etymology-only")
if items.is_etym_lang then
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In
-- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and
-- Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
else
end
end
if items.template_name then
items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}"
items.full_text_about_the_template = "මෙම ඉල්ලීම කිරීම සඳහා, මෙම භාෂාව සඳහා, අදාළ ප්රවේශය තුළ මෙම කේතය භාවිතා කරන්න ([[Template:{{{template_name}}}]] සඳහා වන උපදෙස් පත්රිකාව වෙත ද අවධානය යොමු කරන්න):\n\n<pre>{{{template_sample_call}}}</pre>"
if items.template_example_output then
items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output
else
items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call
items.full_text_about_the_template = items.full_text_about_the_template .. "\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{{template_actual_sample_call}}}"
end
if items.additional_template_description then
items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description
end
else
items.full_text_about_the_template = items.additional_template_description
end
local parents, breadcrumb
if items.is_etym_lang then
parents = items.etym_parents
breadcrumb = expand_items_value("etym_breadcrumb") or items.language_name
else
parents = items.parents
breadcrumb = expand_items_value("breadcrumb")
end
if parents then
for _, parent in ipairs(parents) do
parent.name = expand_value("parent.name", parent.name)
parent.sort = {sort_base = expand_value("parent.sort", parent.sort), lang = "en"}
end
else
local umbrella_type = items.pagename:match("^Requests for (.+) by language$")
if umbrella_type then
breadcrumb = breadcrumb or umbrella_type
parents = {{name = "Request subcategories by language", sort = umbrella_type}}
elseif not items.language_name then
error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'")
else
local requests_concerning_breadcrumb = items.pagename:gsub(" " .. pattern_escape(items.language_name), "")
requests_concerning_breadcrumb =
requests_concerning_breadcrumb:gsub("^Requests for ", ""):gsub(" in entries$", ""):gsub(" for terms$", "")
local requests_concerning_parent =
{
name = "Requests concerning " .. items.language_name,
sort = {sort_base = requests_concerning_breadcrumb, lang = "en"}
}
if items.is_etym_lang then
local parent_lang_cat = items.pagename:gsub(pattern_escape(items.language_name), replacement_escape(items.parent_language_name))
parents = {
{name = parent_lang_cat, sort = {sort_base = items.language_name, lang = "en"}},
requests_concerning_parent
}
else
breadcrumb = breadcrumb or requests_concerning_breadcrumb
parents = {requests_concerning_parent}
end
end
end
if not items.nolang and not items.is_etym_lang and items.umbrella ~= false then
table.insert(parents, {
name = expand_items_value("umbrella"),
sort = {sort_base = items.language_name, lang = "en"}
})
end
local additional = expand_items_value("full_text_about_the_template")
if items.pagename:find(" by language$") then
additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "")
end
return {
description = expand_items_value("description") or items.pagename .. ".",
lang = items.parent_language_code or items.language_code,
additional = additional,
parents = parents,
-- If no breadcrumb= and not an etym-only language, it will default to the category name
breadcrumb = breadcrumb,
catfix = expand_items_value("catfix"),
toc_template = expand_items_value("toc_template"),
toc_template_full = expand_items_value("toc_template_full"),
hidden = not items.nolang and not items.not_hidden_category,
can_be_empty = true,
}
end
-- First look for a regular (usually language or script-specific) category.
for _, category in ipairs(requests_categories) do
local matchvals = {mw.ustring.match(data.category, category.regex)}
if #matchvals > 0 then
init_items()
for key, value in pairs(category) do
items[key] = value
end
for key, value in ipairs(matchvals) do
items["" .. key] = value
end
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
-- Now look for umbrella categories.
for _, category in ipairs(requests_categories) do
if data.category == category.umbrella then
init_items()
items.nolang = true
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
return nil
end)
table.insert(raw_handlers, function(data)
local langname = data.category:match("^යෙදුම්, (.+) පරිවර්තන සහිත$")
local lang = langname and require(languages_module).getByCanonicalName(langname, true, true)
if lang then
local langcode = lang:getCode()
local parents, breadcrumb_and_first_sort_key
if lang:hasType("etymology-only") then
parents = {
"Terms with " .. lang:getFullName() .. " translations",
{name = langname, sort = "පරිවර්තන"},
}
breadcrumb_and_first_sort_key = lang:getCanonicalName()
else
parents = {
{name = "ප්රවේශ නඩත්තුව", is_label = true, lang = langcode},
{
name = "Terms with translations by language",
sort = {sort_base = langname, lang = "en"}
},
}
breadcrumb_and_first_sort_key = "පරිවර්තන"
end
return {
description = "Entries that contain translations into " .. langname .. " which were added using one of the translation templates, such as {{tl|t|" .. langcode .. "|...}}, {{tl|t+|" .. langcode .. "|...}}, etc.",
parents = parents,
breadcrumb_and_first_sort_key = breadcrumb_and_first_sort_key,
catfix = false,
can_be_empty = true,
hidden = true,
}
end
end)
local recognized_taxtypes = require(table_module).listToSet {
"ambiguous",
"binomial",
"branch",
"clade",
"cladus",
"class",
"cohort",
"convariety",
"cultivar group",
"cultivar",
"division",
"empire",
"epifamily",
"epithet",
"family",
"form taxon",
"form",
"genus",
"grade",
"grandorder",
"group",
"hybrid",
"informal group",
"infraclass",
"infracohort",
"infrakingdom",
"infraorder",
"infraphylum",
"infraspecies",
"kingdom",
"magnorder",
"megacohort",
"mirorder",
"morph",
"nothogenus",
"nothospecies",
"nothosubspecies",
"nothovariety",
"obsolete",
"oofamily",
"order",
"parvclass",
"parvorder",
"phylum",
"section",
"series",
"serovar",
"species group",
"species",
"stem",
"stirps",
"strain",
"subclass",
"subcohort",
"subdivision",
"subfamily",
"subgenus",
"subgroup",
"subinfraorder",
"subkingdom",
"suborder",
"subphylum",
"subsection",
"subspecies",
"subterclass",
"subtribe",
"superclass",
"supercohort",
"superfamily",
"supergroup",
"superorder",
"superphylum",
"supertribe",
"taxon",
"tribe",
"trinomial",
"undescribed species",
"unknown",
"unranked group",
"variety",
"virus complex",
}
table.insert(raw_handlers, function(data)
local taxtype = data.category:match("^Entries using missing taxonomic name %((.*)%)$")
if taxtype and recognized_taxtypes[taxtype] then
return {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name.",
parents = {{name = "Entries using missing taxonomic names", sort = {sort_base = taxtype, lang = "en"}}},
breadcrumb = taxtype,
hidden = true,
}
end
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
5nkrw6qvd3si3agnbm5n19orze24xlp
233719
233718
2026-05-09T04:38:28Z
Lee
19
"Terms with translations by language" සිට "භාෂාව අනුව යෙදුම්, පරිවර්තන සහිත" වෙතට
233719
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local functions_module = "Module:fun"
local languages_module = "Module:languages"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local table_module = "Module:table"
local extend = require(table_module).extend
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["ප්රවේශ නඩත්තුව"] = {
description = "{{{langname}}} entries, or entries in other languages containing {{{langname}}} terms, that are being tracked for attention and improvement by editors.",
parents = {{name = "{{{langcat}}}", raw = true}},
umbrella_parents = "මූලධර්ම",
}
labels["ප්රවේශ, දෝෂ සහගත භාෂා ශීර්ෂක සහිත"] = {
description = "{{{langname}}} ප්රවේශ, වැරදි භාෂා ශීර්ෂක යටතේ දක්වා ඇති.",
additional = "හේතු කිහිපයක් නිසා මෙය සිදුවිය හැකිය:\n" ..
"* අක්ෂර වින්යාසය දෝෂ (Typos).\n" ..
"* විනාශ කිරීම් (Vandalism).\n" ..
"* වැරදි භාෂා කේතය භාවිතා කිරීම.\n" ..
"* භාෂාව සඳහා වන විකල්ප නාමයක් භාවිතා කිරීම.\n" ..
"* භාෂා දත්ත මොඩියුල තුළ භාෂා නාම සඳහා දක්වා නොමැති විශේෂ අනුකල්ෂණ භාවිතා කිරීම.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries without References header"] = {
description = "{{{langname}}} entries without a References header.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries without References or Further reading header"] = {
description = "{{{langname}}} entries without a References or Further reading header.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries that don't exist"] = {
description = "{{{langname}}} terms that do not meet the [[Wiktionary:Criteria for inclusion|criteria for inclusion]] (CFI). They are added to the category with the template {{tl|no entry|{{{langcode}}}}}.",
parents = {"ප්රවේශ නඩත්තුව"},
umbrella_parents = "මූලධර්ම",
}
labels["entries with etymology trees"] = {
description = "{{{langname}}} entries that display an etymology tree generated by the template {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries with etymology texts"] = {
description = "{{{langname}}} entries that display an etymology generated by the template {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing missing etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon that cannot be found, either because the target page does not exist (redlink) or because it has no {{tl|etymon}} template.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing ambiguous etymons"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon without the ID, when the target page contains multiple {{tl|etymon}} templates, and an ID is therefore required to select the correct {{tl|etymon}}.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons with mismatched IDs"] = {
description = "Entries which use the {{tl|etymon}} template with a mismatched ID. For example, {{code|lang:entry<id:mismatched ID>}}",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has no Descendants section.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries referencing etymons without this term in Descendants sections"] = {
description = "Entries which use the {{tl|etymon}} template to reference an etymon whose source entry has a Descendants section, but does not list the current term there.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["ප්රවේශ, ඍජු එක් කිරීම මගින් භාෂා නාම ප්රවර්ග දක්වා ඇති"] = {
description = "{{{langname}}} entries that have been placed in a language name category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langname}}} ...]]}}). They should be added using {{tl|cln|{{{langcode}}}|...}} instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["ප්රවේශ, ඍජු එක් කිරීම මගින් මාතෘකා ප්රවර්ග දක්වා ඇති"] = {
description = "{{{langname}}} entries that have been placed in a topic category using raw wiki markup (i.e. {{code|[[<nowiki/>Category:{{{langcode}}}:...]]}}). They should be added using {{tl|C|{{{langcode}}}|...}} instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["entries with outdated source"] = {
description = "{{{langname}}} entries that have been partly or fully imported from an outdated source.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["entries with inflection not matching pagename"] = {
description = "{{{langname}}} entries which have an inflection table whose lemma form does not match the page name.",
additional = "This is usually the result of incorrect or missing parameters.",
breadcrumb_and_first_sort_key = "inflection not matching pagename",
parents = {"ප්රවේශ නඩත්තුව"},
hidden = true,
can_be_empty = true,
}
labels["undefined derivations"] = {
description = "{{{langname}}} etymologies using {{tl|undefined derivation}}, where a more specific template such as {{tl|borrowed}} or {{tl|inherited}} should be used instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["descendants to be fixed in desctree"] = {
description = "Entries that use {{tl|desctree}} to link to {{{langname}}} entries with no Descendants section.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["term requests"] = {
description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["රතු සබැඳි"] = {
description = "Links to {{{langname}}} entries that have not been created yet.",
parents = {"ප්රවේශ නඩත්තුව"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["යෙදුම්, ස්වරශාස්ත්ර හෝඩි උච්චාරණ සහිත"] = {
description = "{{{langname}}} යෙදුම්, ජාත්යන්තර ස්වරශාස්ත්ර හෝඩිය (IPA) භාවිතා කොට උච්චාරණය දක්වා ඇති.",
additional = "මෙම ප්රවර්ගය හා සබැඳි ඉල්ලීම් සඳහා, [[:Category:Requests for pronunciation in {{{langname}}} entries]] වෙත යොමු වන්න.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with enPR pronunciation"] = {
description = "{{{langname}}} terms that include the pronunciation in the form of enPR.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with Indic pronunciation"] = {
description = "{{langname}} terms that include the pronunciation in the form of ISO 15919.",
additional = "For requests related to this category, see [[:Category:Requests for pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["IPA pronunciations with invalid separators"] = {
description = "{{{langname}}} terms with IPA using invalid separators such as /.ˈ/, /.ˌ/, a dot followed by primary or secondary stress; or /ˈ / or /ˌ /, primary or secondary stress followed by a space.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["terms with hyphenation"] = {
description = "{{{langname}}} terms that include hyphenation.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, ඕඩියෝ උච්චාරණ සහිත"] = {
description = "{{{langname}}} යෙදුම්, ඕඩියෝ ගොනුවක් භාවිතයෙන් උච්චාරණය දක්වා ඇති.",
additional = "For requests related to this category, see [[:Category:Requests for audio pronunciation in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with nonstandard or incorrect audio pronunciations"] = {
description = "{{{langname}}} terms which have been tagged as having pronunciations which are nonstandard or incorrect.",
parents = {"යෙදුම්, ඕඩියෝ උච්චාරණ සහිත"},
can_be_empty = true,
hidden = true,
}
labels["entries missing Template:reconstructed"] = {
description = "Reconstructed {{{langname}}} entries which do not have the {{tl|reconstructed}} template.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation)
labels[label] = {
description = desc or "Pages containing {{{langname}}} " .. label .. ".",
additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" ..
"Note that the pages in this category are not necessarily the same as the actual term in question. This " ..
"frequently happens, for example, with English pages with translation sections, where the term that " ..
"triggers the addition of the category is one of the translations."),
parents = {"ප්රවේශ නඩත්තුව"},
-- Set catfix = false because the page will have a mixture of native-language and
-- non-native-language pages, but include the normal native-language table of contents headers
-- because most pages are in the native language.
catfix = false,
toc_template = "{{{langcode}}}-categoryTOC",
toc_template_full = "{{{langcode}}}-categoryTOC/full",
can_be_empty = true,
hidden = true,
}
end
add_manual_param_category("terms in nonstandard scripts", nil,
"Pages are placed here if they contain terms written in a script that isn't in the language's " ..
"list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.",
true)
add_manual_param_category("terms with non-redundant manual transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with redundant transliterations", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant manual script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.",
true)
add_manual_param_category("terms with redundant script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.",
true)
add_manual_param_category("යෙදුම්, non-redundant non-automated සෝට්කී සහිත",
"{{{langname}}} terms with non-redundant non-automated sortkeys.",
"Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " ..
"generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " ..
"parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " ..
"sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " ..
"page will also be added here.")
add_manual_param_category("යෙදුම්, අනු පිටපත් කළ සෝට්කී සහිත",
"{{{langname}}} terms with redundant sortkeys.",
"Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " ..
"as the one which is automatically generated.")
add_manual_param_category("links with redundant target parameters",
"Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " ..
"separately.",
"This occurs when the only difference between the link target and the alt text is that the alt text contains " ..
"diacritics (or other characters) which would have been ignored anyway had they been included in the link " ..
"target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " ..
"({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " ..
"displayed.")
add_manual_param_category("links with ignored alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant alt parameters",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.",
"This occurs when the alt text makes no difference to the output. For example, {{tl|l|en|foo|foo}} " ..
"({{l|en|foo|foo}}) is exactly the same as {{tl|l|en|foo}} ({{l|en|foo}}).")
add_manual_param_category("links with ignored id parameters",
"Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("සබැඳි, අනු පිටපත් කළ විකි සබැඳි සහිත",
"Pages containing {{{langname}}} links which contain a redundant wikilink.",
"This occurs if link target consists of a single wikilink, which should instead be entered in the " ..
"conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " ..
"is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " ..
"{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " ..
"unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}")
add_manual_param_category("links with manual fragments",
"Pages containing {{{langname}}} links where a manual link fragment has been given.",
"This occurs when the link fragment has been specified using {{code|#}} after the term, " ..
"which overrides the normal fragment generated by link templates that points to the relevant " ..
"language section.\n\nLink fragments are used to point to a specific section on a target page, and " ..
"it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " ..
"additional content is added to the target page: for example, the fragment {{code|#Adjective}} " ..
"will start pointing to the wrong section if another language with an adjective section is added above " ..
"the intended language.")
labels["descendant hubs"] = {
description = "{{{langname}}} terms that do not mean more than the sum of their parts but exist for listing two or more inclusion-worthy descendants.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms needing to be assigned to a sense"] = {
description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
--[=[
labels["terms with inflection tables"] = {
description = "{{{langname}}} entries that contain inflection tables.".
additional = "For requests related to this category," see [[:Category:Requests for inflections in {{{langname}}} entries]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
]=]
labels["terms with collocations"] = {
description = "{{{langname}}} entries that contain [[collocation]]s that were added using templates such as {{tl|co}}.",
additional = "For requests related to this category, see [[:Category:Requests for collocations in {{{langname}}}]]. See also [[:Category:Requests for quotations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, භාවිත නිදර්ශන සහිත"] = {
description = "{{{langname}}} entries that contain usage examples that were added using templates such as {{tl|ux}}.",
additional = "For requests related to this category, see [[:Category:Requests for example sentences in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for quotations in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["යෙදුම්, උපුටා දැක්වීම් සහිත"] = {
description = "{{{langname}}} entries that contain quotes that were added using templates such as {{tl|quote}}, {{tl|quote-book}}, {{tl|quote-journal}}, etc.",
additional = "For requests related to this category, see [[:Category:Requests for quotations in {{{langname}}}]]. See also [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["terms with interlinear glossed text"] = {
description = "{{{langname}}} entries that contain interlinear glossed text added using {{tl|interlinear}}.",
parents = {"ප්රවේශ නඩත්තුව"},
}
labels["පද, අනු පිටපත් කළ යොමු පරාමිති සහිත"] = {
description = "{{{langname}}} terms that contain a redundant head= parameter in their headword (called using {{tl|head}} or a language-specific equivalent).",
additional = "Individual languages can prevent terms from being added to this category by setting `data.no_redundant_head_cat`.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
labels["පද, යොමු වචන පේළි තුළ රතු සබැඳි සහිත"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"රතු සබැඳි"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their inflection tables"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"රතු සබැඳි"},
can_be_empty = true,
hidden = true,
}
labels["requests for English equivalent term"] = {
description = "{{{langname}}} entries with definitions that have been tagged with {{tl|rfeq}}. Read the documentation of the template for more information.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
for _, quot_type in ipairs { "quotations", "usage examples" } do
labels[quot_type .. " with omitted translation"] = {
description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying {{code|-}}. The translation should be supplied instead.",
parents = {"ප්රවේශ නඩත්තුව"},
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs({"nouns", "proper nouns", "verbs", "adjectives", "adverbs", "participles", "determiners", "pronouns", "numerals", "suffixes", "contractions"}) do
labels[m_sinhala.sinhala(pos) .. ", යොමු වචන පේළි තුළ රතු සබැඳි සහිත"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their headword lines.",
parents = {"පද, යොමු වචන පේළි තුළ රතු සබැඳි සහිත"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
labels[pos .. " with red links in their inflection tables"] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"terms with red links in their inflection tables"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
local label = pos .. " with unknown or uncertain plurals"
labels[label] = {
description = "{{{langname}}} " .. label .. ".",
additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " ..
"is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " ..
"using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " ..
"that a plural cannot be attested but the noun is theoretically countable.",
breadcrumb = "with unknown or uncertain plurals",
parents = {
{name = pos, sort = "unknown or uncertain plurals"},
"ප්රවේශ නඩත්තුව",
},
}
end
-- Add 'umbrella_parents' key if not already present.
for _, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග"] = {
description = "Umbrella categories covering topics related to entry maintenance.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "ප්රවේශ නඩත්තුව", is_label = true, sort = " "},
},
}
raw_categories["ඉල්ලීම්"] = {
topright = "{{shortcut|WT:CR|WT:RQ}}",
description = "A parent category for the various request categories.",
parents = {"ප්රවර්ගය:වික්ෂනරිය"},
}
raw_categories["Requests by language"] = {
description = "Categories with requests in various specific languages.",
additional = "{{{umbrella_msg}}}",
parents = {
{name = "Request subcategories by language", sort = " "},
{name = "ඉල්ලීම්", sort = " "},
},
breadcrumb = "By language",
}
raw_categories["Request subcategories by language"] = {
description = "Umbrella categories covering topics related to requests.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "ඉල්ලීම්", sort = " "},
},
}
raw_categories["Requests for quotations by source"] = {
description = "Categories with requests for quotation, broken out by the source of the quotation.",
additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].",
parents = {{name = "Requests for quotations", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for quotations"] = {
-- FIXME
description = "Words are added to this category by the inclusion in their entries of {{tl|rfv-quote}}.",
parents = {{name = "ඉල්ලීම්", sort = "quotations"}},
breadcrumb = "Quotations",
}
raw_categories["Requests for date"] = {
description = "Requests for a date to be added to a quotation.",
additional = "To add an article to this category, use {{tl|rfdate}} or {{tl|rfdatek}} to include the author. " ..
"Please remove the template from the article once the date has been provided.",
parents = {{name = "ඉල්ලීම්", sort = "date"}},
breadcrumb = "Date",
}
raw_categories["Requests for translations in user-competency categories by number of users"] = {
description = "Requests for translations to be added to user-competency categories, sorted by number of users with that competency.",
parents = {{name = "ඉල්ලීම්", sort = "translations in user-competency categories by number of users"}},
breadcrumb = "Translations in user-competency categories by number of users",
}
raw_categories["Requests for translations in user-competency categories by language"] = {
description = "Requests for translations to be added to user-competency categories, sorted by language.",
parents = {{name = "ඉල්ලීම්", sort = "translations in user-competency categories by language"}},
breadcrumb = "Translations in user-competency categories by language",
hidden = true,
}
raw_categories["භාෂාව අනුව යෙදුම්, පරිවර්තන සහිත"] = {
description = "Terms with translations, sorted by language.",
parents = {{name = "භාෂාව අනුව ප්රවේශ නඩත්තු උපප්රවර්ග", sort = "translations by language"}},
breadcrumb = "පරිවර්තන",
}
raw_categories["Entries using missing taxonomic names"] = {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name." ..
"\n\nSee [[:Category:mul:Taxonomic names]].",
parents = {{name = "ප්රවේශ නඩත්තුව", is_label = true, lang = "mul", sort = "missing taxonomic names"}},
breadcrumb = "Missing taxonomic names",
hidden = true,
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function script_name_to_code(name)
local sc = require(scripts_module).getByCanonicalName(name)
if not sc then
error("Unrecognized script name '" .. name .. "'")
end
return sc:getCode()
end
--[=[
This array consists of category match specs. Each spec contains one or more properties, whose values are (a) strings
that may contain references to other properties using the {{{PROPERTY}}} syntax; (b) functions of one argument, an
`items` table of the same properties that are accessible using the {{{PROPERTY}} syntax. Each such spec should have at
least a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced in
other properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. (or using keys "1", "2", etc. in
functions). Property expansion happens recursively if needed (i.e. a property can reference another property, which in
turn references a third property).
If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a capturing
group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property is set, in
which case there is no language name associated with the category name. The language name must be the canonical name of
a recognized full language, or an error is thrown; however, if the `allow_etym_lang` property is set, the language name
may also be the canonical name of an etymology-only language. Based on the language name, the `language_code` and
`language_object` properties are automatically filled in. If `language_name` is an etymology-only language, additional
properties `parent_language_name`, `parent_language_code` and `parent_language_object` are set for the parent full
language of the etymology-only language.
If the `regex` values of multiple category specs match, the first one takes precedence.
Recognized or predefined properties:
`pagename`: Current pagename.
`regex`: See above.
`1`, `2`, `3`, ...: See above.
`language_name`, `language_code`, `language_object`: See above.
`parent_language_name`, `parent_language_code`, `parent_language_object`: See above.
`nolang`: See above.
`allow_etym_lang`: Language names may be etymology-only languages. See above.
`description`: Override the description (normally taken directly from the pagename).
`template_name`: Name of template which generates this category.
`template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}". Used to
display an example template call and the output of this call.
`template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when
generating example template output (but not when displaying an example template call) and is intended for a template
call that uses the |nocat=1 parameter.
`template_example_output`: Override the text that displays example template output (see `template_sample_call`).
`additional_template_description`: Extra text to be displayed after the example template output.
`parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name= and
sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will have
{{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form "Requests for FOO
by language", the parent will be "Request subcategories by language" with FOO as the sort key. Otherwise, the
`language_name` property must exist, and the parent will be "Requests concerning LANGNAME", with the pagename minus
any initial "Requests for " as the sort key. Note that this does *NOT* apply if an etymology-only language is
associated with the category, in which case `etym_parents` is used instead.
`etym_parents`: Parent categories for categories with associated etymology-only languages. The format is the same as
`parents`. If omitted, there are two parents by default: (1) The pagename (i.e. category name) with the language name
replaced by the corresponding parent language name, with the value of `language_name` as the sort key; (2) "Requests
concerning LANGNAME", with the pagename minus any initial "Requests for " as the sort key.
`umbrella`: Parent all-language category. Sort key is based on the language name. This applies *ONLY* if a full language
is associated with the category name (i.e. not if `nolang` is set or if `allow_etym_lang` is set and the associated
language is an etymology-only language); otherwise there will be no umbrella category.
`breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the
pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", the default breadcrumb will be
"FOO". Otherwise it is computed by removing the language name from the pagename and chopping out "Requests for" from
the beginning and "in entries" and "for terms" from the end. Note that this does *NOT* apply if an etymology-only
language is associated with the category, in which case `etym_breadcrumb` is used instead.
`etym_breadcrumb`: Specify the breadcrumb for categories with associated etymology-only languages. Defaults to the value
of `language_name`.
`not_hidden_category`: Don't hide the category.
`catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax is
expanded.
`toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except that
request-specific {{{PROPERTY}}} syntax is expanded.
In general, properties can contain references to templates (e.g. {{tl}} and {{para}}), which will be appropriately
expanded (this expansion happens in the poscatboiler code, not in this module). The major exception is in the
`template_sample_call` and `template_actual_sample_call` properties, which are surrounded by <pre>...</pre> when
inserted, so template references are not expanded. Triple-brace property references are still expanded in these
properties; but beware that if any of those property references contain template references, they won't be expanded.
(This actually happens in the handlers for 'Request for SCRIPT script for LANG terms'; the sample call references
{{{script_code}}}, whose definition therefore cannot contain template references. The solution is to define this
property using a function.)
]=]
local requests_categories = {
{
regex = "^Requests concerning (.+)$",
allow_etym_lang = true,
description = "Categories with {{{1}}} entries that need the attention of experienced editors.",
parents = {{name = "ප්රවේශ නඩත්තුව", is_label = true, sort = "requests"}},
etym_parents = {{name = "Requests concerning {{{parent_language_name}}}", sort = "{{{1}}}"},
{name = "{{{1}}}", sort = "ඉල්ලීම්"}},
umbrella = "Requests by language",
breadcrumb = "ඉල්ලීම්",
not_hidden_category = true,
},
{
regex = "^Requests for etymologies in (.+) entries$",
allow_etym_lang = true,
umbrella = "Requests for etymologies by language",
template_name = "rfe",
},
{
regex = "^Requests for expansion of etymologies in (.+) entries$",
umbrella = "Requests for expansion of etymologies by language",
template_name = "etystub",
},
{
regex = "^Requests for pronunciation in (.+) entries$",
umbrella = "Requests for pronunciation by language",
template_name = "rfp",
},
{
regex = "^Requests for audio pronunciation in (.+) entries$",
umbrella = "Requests for audio pronunciation by language",
template_name = "rfap",
},
{
regex = "^Requests for definitions in (.+) entries$",
umbrella = "Requests for definitions by language",
template_name = "rfdef",
},
{
regex = "^Requests for clarification of definitions in (.+) entries$",
umbrella = "Requests for clarification of definitions by language",
template_name = "rfclarify",
},
}
for _, spec_with_pos in ipairs {
{"inflections", "rfinfl"},
{"plural forms"},
{"tone", "rftone"},
{"accents"},
{"aspect", "rfaspect"},
{"animacy"},
{"gender", "rfgender"},
{"noun class"},
} do
local property, rftemplate = unpack(spec_with_pos)
table.insert(requests_categories,
{
-- This is for part-of-speech-specific categories such as
-- "Requests for inflections in Northern Ndebele noun entries" or
-- "Requests for accents in Ukrainian proper noun entries".
-- Here and below, we assume that the part of speech is begins with
-- a lowercase letter, while the preceding language name ends in a
-- capitalized word. Note that this entry comes before the
-- following one and takes precedence over it.
regex = ("^Requests for %s in (.-) ([a-z]+[a-z ]*) entries$"):format(property),
parents = {{name = ("Requests for %s in {{{language_name}}} entries"):format(property), sort = "{{{2}}}"}},
umbrella = ("Requests for %s of {{pluralize|{{{2}}}}} by language"):format(property),
breadcrumb = "{{{2}}}",
template_name = rftemplate,
template_sample_call = rftemplate and ("{{%s|{{{language_code}}}|{{{2}}}}}"):format(rftemplate) or nil,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s in (.+) entries$"):format(property),
umbrella = ("Requests for %s by language"):format(property),
template_name = rftemplate,
}
)
table.insert(requests_categories,
{
regex = ("^Requests for %s of (.+) by language$"):format(property),
nolang = true,
}
)
end
extend(requests_categories, {
{
regex = "^Requests for example sentences in (.+)$",
umbrella = "Requests for example sentences by language",
template_name = "rfex",
},
{
regex = "^Requests for quotations in (.+)$",
umbrella = "Requests for quotations by language",
template_name = "rfquote",
},
{
regex = "^Requests for translations into (.+)$",
allow_etym_lang = true,
umbrella = "Requests for translations by language",
template_name = "t-needed",
catfix = "en",
},
{
regex = "^Requests for translations of (.+) usage examples$",
allow_etym_lang = true,
umbrella = "Requests for translations of usage examples by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|usex}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex|nocat=1}}",
additional_template_description = "The {{tl|ux}}, {{tl|uxi}}, {{tl|ja-usex}} and {{tl|zh-x}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for translations of (.+) quotations$",
allow_etym_lang = true,
umbrella = "Requests for translations of quotations by language",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|quote}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote|nocat=1}}",
additional_template_description = "The {{tl|quote}}, and {{tl|Q}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing."
},
{
regex = "^Requests for review of (.+) translations$",
allow_etym_lang = true,
umbrella = "Requests for review of translations by language",
template_name = "t-check",
template_sample_call = "{{t-check|{{{language_code}}}|example}}",
template_example_output = "",
catfix = "en",
},
{
regex = "^Requests for transliteration of (.+) terms$",
umbrella = "Requests for transliteration by language",
template_name = "rftranslit",
additional_template_description = "The {{tl|head}} template, and the large number of language-specific variants of it, automatically add " ..
"the page to this category if the example is in a foreign language and no transliteration can be generated (particularly in languages without " ..
"automated transliteration, such as Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) usage examples$",
umbrella = "Requests for transliteration of usage examples by language",
template_name = "rftranslit",
template_sample_call = "{{rftranslit|{{{language_code}}}}}",
template_actual_sample_call = "{{rftranslit|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for transliteration of (.+) quotations$",
umbrella = "Requests for transliteration of quotations by language",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation " ..
"is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " ..
"Hebrew and Persian).",
},
{
regex = "^Requests for native script for (.+) terms$",
allow_etym_lang = true,
etym_parents = {
{name = "Requests for native script for {{{parent_language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "native script"},
},
umbrella = "Requests for native script by language",
template_name = "rfscript",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for native script in (.+) usage examples$",
umbrella = "Requests for native script in usage examples by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example itself is missing but the translation is supplied."
},
{
regex = "^Requests for native script in (.+) quotations$",
umbrella = "Requests for native script in quotations by language",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}",
catfix = false,
additional_template_description = "The {{tl|quote}} and {{code|<nowiki>{{quote-*}}</nowiki>}} templates automatically add the page to this category if the quotation itself is missing but the translation is supplied."
},
{
regex = "^Requests for (.+) script for (.+) terms$",
language_name = "{{{2}}}",
allow_etym_lang = true,
parents = {{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"}},
etym_parents = {
{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}}"},
{name = "Requests for {{{1}}} script for {{{parent_language_name}}} terms", sort = "{{{language_name}}}"},
{name = "Requests concerning {{{language_name}}}", sort = "{{{1}}} script"},
},
umbrella = "Requests for {{{1}}} script by language",
breadcrumb = "{{{1}}}",
etym_breadcrumb = "{{{1}}}",
template_name = "rfscript",
-- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the
-- conversion of script name to script code needs to be done using an inline function like this, instead of
-- a {{#invoke:...}} template call.
script_code = function(items)
return script_name_to_code(items["1"])
end,
template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration."
},
{
regex = "^Requests for (.+) script by language$",
parents = {{name = "Requests for script by language", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
},
{
regex = "^Requests for script by language$",
nolang = true,
},
{
regex = "^Requests for images in (.+) entries$",
umbrella = "Requests for images by language",
template_name = "rfi",
},
{
regex = "^Requests for references for (.+) terms$",
umbrella = "Requests for references by language",
template_name = "rfref",
},
{
regex = "^Requests for references for etymologies in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}},
umbrella = "Requests for references for etymologies by language",
breadcrumb = "නිරුක්ති",
template_name = "rfv-etym",
},
{
regex = "^Requests for references for pronunciations in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}},
umbrella = "Requests for references for pronunciations by language",
breadcrumb = "Pronunciations",
template_name = "rfv-pron",
},
{
regex = "^Requests for attention concerning (.+)$",
umbrella = "Requests for attention by language",
breadcrumb = "Attention",
template_name = "attention",
template_sample_call = "{{attention|{{{language_code}}}|insert a brief description of the request here}}",
template_example_output = "This template does not generate any text in entries, but can be visualised by enabling the Catch My Attention gadget. See {{section link|Template:attention#Visibility}}.",
-- These pages typically contain a mixture of English and native-language entries, so disable catfix.
catfix = false,
-- Setting catfix = false will normally trigger the English table of contents template.
-- We still want the native-language table of contents template, though.
toc_template = "{{{language_code}}}-categoryTOC",
toc_template_full = "{{{language_code}}}-categoryTOC/full",
},
{
regex = "^Requests for cleanup in (.+) entries$",
umbrella = "Requests for cleanup by language",
template_name = "rfc",
template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$",
umbrella = "Requests for cleanup of Pronunciation N headers by language",
template_name = "rfc-pron-n",
template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}",
template_example_output = "This template does not generate any text in entries.",
additional_template_description = [=[
The purpose of this category is to tag entries that use headers with "Pronunciation" and a number.
While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header.
[[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed.
This category is hidden.]=],
},
{
regex = "^Requests for deletion in (.+) entries$",
umbrella = "Requests for deletion by language",
template_name = "rfd",
template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for verification in (.+) entries$",
umbrella = "Requests for verification by language",
template_name = "rfv",
},
{
regex = "^Requests for attention in (.+) etymologies$",
umbrella = "Requests for attention by language"
},
{
regex = "^Requests for quotations/(.+)$",
description = "Requests for a quotation or for quotations from {{{1}}}.",
parents = {{name = "Requests for quotations by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfquotek",
template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{rfquotek|und|{{{1}}}}}",
},
{
regex = "^Requests for date in (.+) entries$",
umbrella = "Requests for date by language",
template_name = "rfdate",
additional_template_description = "The quotation templates, such as {{tl|quote-book}} and {{tl|quote-journal}}, " ..
"automatically add the page to this category if neither {{para|date}} nor {{para|year}} is provided. Providing the " ..
"parameter in each case on the page automatically removes the article from this category. See " ..
"[[Wiktionary:Quotations]] for information about formatting dates and quotations.",
},
{
regex = "^Requests for date/(.+)$",
description = "{{rfd|section=Category:Requests for date by source}}Requests for a date for a quotation or quotations from {{{1}}}.",
parents = {{name = "Requests for date by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfdatek",
template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{rfdatek|und|{{{1}}}}}",
},
{
regex = "^Requests for attestation of (.+) terms$",
umbrella = "Requests for attestation of terms by language",
breadcrumb = "Attestation",
additional_template_description = "The {{tl|LDL}} template adds this category when a language code is supplied in {{para|1}} (as it should be)."
},
})
local user_competency_additional_template_description = "This is added by user-competency categories such as " ..
"[[:Category:User fr-4]], which groups users who speak French at level 4 (near-native proficiency), when " ..
"the native-language text indicating this fact is missing. The appropriate translation should mirror the " ..
"English text also displayed (e.g. in this case \"These users speak French at a '''near native''' " ..
"level.\"), and should be supplied to {{tl|auto cat}} using the {{para|text}} parameter. The mention of the " ..
"language in the text should be surrounded by double angle brackets, e.g. \"<<français>>\", which " ..
"causes it to be automatically linked to the appropriate parent category."
local user_competency_parents = {{name = "Requests for translations in user-competency categories by number of users",
sort = function(items)
return " " .. ("%010d"):format(items["1"])
end,
}}
extend(requests_categories, {
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+)%-([0-9]+) users$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}}-{{{2}}} users.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}-{{{2}}}",
nolang = true,
},
{
regex = "^Requests for translations in user%-competency categories with ([0-9]+) (users?)$",
description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}} {{{2}}}.",
additional_template_description = user_competency_additional_template_description,
parents = user_competency_parents,
breadcrumb = "{{{1}}}",
nolang = true,
}
})
table.insert(raw_handlers, function(data)
local items
local function init_items()
items = {pagename = data.category}
end
local function expand_value(item, val)
if not val then
return val
elseif is_callable(val) then
return expand_value(item .. " ⇒ function", val(items))
elseif type(val) == "table" then
for k, v in pairs(val) do
val[k] = expand_value(item .. " ⇒ " .. k, v)
end
return val
elseif type(val) == "number" then
val = tostring(val)
end
if type(val) ~= "string" then
error(("The item '%s' on page %s is of type %s and can't be concatenated"):format(
item, items.pagename, type(val)))
end
-- Replaces pseudo-template code {{{ }}} with the corresponding member of the "items" table. Has to be done
-- recursively, since some of the items are nested:
-- {{{template_sample_call_with_temp}}}
-- ⇓
-- {{{{{template_name}}}|{{{language_code}}}}}
-- ⇓
-- {{attention|en}}
if val:find("{{{") then
val = mw.ustring.gsub(val, "{{{([^%}%{]+)}}}", function(prop)
local propval = items[prop]
if not propval then
error(("The item '%s' (expanded from property '%s' on page %s) was not found in the 'items' table"):
format(prop, item, items.pagename))
end
return expand_value(item .. " ⇒ " .. prop, propval)
end
)
end
return val
end
local function expand_items_value(item)
return expand_value(item, items[item])
end
local function convert_items_to_category_data(items)
if not items.nolang then
items.language_name = items.language_name or "{{{1}}}"
items.language_name = expand_items_value("language_name")
items.language_object = require(languages_module).getByCanonicalName(items.language_name, true,
items.allow_etym_lang)
items.language_code = items.language_object:getCode()
items.is_etym_lang = items.language_object:hasType("etymology-only")
if items.is_etym_lang then
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In
-- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and
-- Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
else
end
end
if items.template_name then
items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}"
items.full_text_about_the_template = "මෙම ඉල්ලීම කිරීම සඳහා, මෙම භාෂාව සඳහා, අදාළ ප්රවේශය තුළ මෙම කේතය භාවිතා කරන්න ([[Template:{{{template_name}}}]] සඳහා වන උපදෙස් පත්රිකාව වෙත ද අවධානය යොමු කරන්න):\n\n<pre>{{{template_sample_call}}}</pre>"
if items.template_example_output then
items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output
else
items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call
items.full_text_about_the_template = items.full_text_about_the_template .. "\nඑමගින් පහත දැක්වෙන නිවේදනය ප්රදර්ශනය වෙයි:\n\n{{{template_actual_sample_call}}}"
end
if items.additional_template_description then
items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description
end
else
items.full_text_about_the_template = items.additional_template_description
end
local parents, breadcrumb
if items.is_etym_lang then
parents = items.etym_parents
breadcrumb = expand_items_value("etym_breadcrumb") or items.language_name
else
parents = items.parents
breadcrumb = expand_items_value("breadcrumb")
end
if parents then
for _, parent in ipairs(parents) do
parent.name = expand_value("parent.name", parent.name)
parent.sort = {sort_base = expand_value("parent.sort", parent.sort), lang = "en"}
end
else
local umbrella_type = items.pagename:match("^Requests for (.+) by language$")
if umbrella_type then
breadcrumb = breadcrumb or umbrella_type
parents = {{name = "Request subcategories by language", sort = umbrella_type}}
elseif not items.language_name then
error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'")
else
local requests_concerning_breadcrumb = items.pagename:gsub(" " .. pattern_escape(items.language_name), "")
requests_concerning_breadcrumb =
requests_concerning_breadcrumb:gsub("^Requests for ", ""):gsub(" in entries$", ""):gsub(" for terms$", "")
local requests_concerning_parent =
{
name = "Requests concerning " .. items.language_name,
sort = {sort_base = requests_concerning_breadcrumb, lang = "en"}
}
if items.is_etym_lang then
local parent_lang_cat = items.pagename:gsub(pattern_escape(items.language_name), replacement_escape(items.parent_language_name))
parents = {
{name = parent_lang_cat, sort = {sort_base = items.language_name, lang = "en"}},
requests_concerning_parent
}
else
breadcrumb = breadcrumb or requests_concerning_breadcrumb
parents = {requests_concerning_parent}
end
end
end
if not items.nolang and not items.is_etym_lang and items.umbrella ~= false then
table.insert(parents, {
name = expand_items_value("umbrella"),
sort = {sort_base = items.language_name, lang = "en"}
})
end
local additional = expand_items_value("full_text_about_the_template")
if items.pagename:find(" by language$") then
additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "")
end
return {
description = expand_items_value("description") or items.pagename .. ".",
lang = items.parent_language_code or items.language_code,
additional = additional,
parents = parents,
-- If no breadcrumb= and not an etym-only language, it will default to the category name
breadcrumb = breadcrumb,
catfix = expand_items_value("catfix"),
toc_template = expand_items_value("toc_template"),
toc_template_full = expand_items_value("toc_template_full"),
hidden = not items.nolang and not items.not_hidden_category,
can_be_empty = true,
}
end
-- First look for a regular (usually language or script-specific) category.
for _, category in ipairs(requests_categories) do
local matchvals = {mw.ustring.match(data.category, category.regex)}
if #matchvals > 0 then
init_items()
for key, value in pairs(category) do
items[key] = value
end
for key, value in ipairs(matchvals) do
items["" .. key] = value
end
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
-- Now look for umbrella categories.
for _, category in ipairs(requests_categories) do
if data.category == category.umbrella then
init_items()
items.nolang = true
local catdata = convert_items_to_category_data(items)
if catdata then
return catdata
end
end
end
return nil
end)
table.insert(raw_handlers, function(data)
local langname = data.category:match("^යෙදුම්, (.+) පරිවර්තන සහිත$")
local lang = langname and require(languages_module).getByCanonicalName(langname, true, true)
if lang then
local langcode = lang:getCode()
local parents, breadcrumb_and_first_sort_key
if lang:hasType("etymology-only") then
parents = {
"Terms with " .. lang:getFullName() .. " translations",
{name = langname, sort = "පරිවර්තන"},
}
breadcrumb_and_first_sort_key = lang:getCanonicalName()
else
parents = {
{name = "ප්රවේශ නඩත්තුව", is_label = true, lang = langcode},
{
name = "භාෂාව අනුව යෙදුම්, පරිවර්තන සහිත",
sort = {sort_base = langname, lang = "en"}
},
}
breadcrumb_and_first_sort_key = "පරිවර්තන"
end
return {
description = "Entries that contain translations into " .. langname .. " which were added using one of the translation templates, such as {{tl|t|" .. langcode .. "|...}}, {{tl|t+|" .. langcode .. "|...}}, etc.",
parents = parents,
breadcrumb_and_first_sort_key = breadcrumb_and_first_sort_key,
catfix = false,
can_be_empty = true,
hidden = true,
}
end
end)
local recognized_taxtypes = require(table_module).listToSet {
"ambiguous",
"binomial",
"branch",
"clade",
"cladus",
"class",
"cohort",
"convariety",
"cultivar group",
"cultivar",
"division",
"empire",
"epifamily",
"epithet",
"family",
"form taxon",
"form",
"genus",
"grade",
"grandorder",
"group",
"hybrid",
"informal group",
"infraclass",
"infracohort",
"infrakingdom",
"infraorder",
"infraphylum",
"infraspecies",
"kingdom",
"magnorder",
"megacohort",
"mirorder",
"morph",
"nothogenus",
"nothospecies",
"nothosubspecies",
"nothovariety",
"obsolete",
"oofamily",
"order",
"parvclass",
"parvorder",
"phylum",
"section",
"series",
"serovar",
"species group",
"species",
"stem",
"stirps",
"strain",
"subclass",
"subcohort",
"subdivision",
"subfamily",
"subgenus",
"subgroup",
"subinfraorder",
"subkingdom",
"suborder",
"subphylum",
"subsection",
"subspecies",
"subterclass",
"subtribe",
"superclass",
"supercohort",
"superfamily",
"supergroup",
"superorder",
"superphylum",
"supertribe",
"taxon",
"tribe",
"trinomial",
"undescribed species",
"unknown",
"unranked group",
"variety",
"virus complex",
}
table.insert(raw_handlers, function(data)
local taxtype = data.category:match("^Entries using missing taxonomic name %((.*)%)$")
if taxtype and recognized_taxtypes[taxtype] then
return {
description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.",
additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name.",
parents = {{name = "Entries using missing taxonomic names", sort = {sort_base = taxtype, lang = "en"}}},
breadcrumb = taxtype,
hidden = true,
}
end
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
a0mnres5k4wmptbbidruz4mdznqnkup
Module:category tree/modules
828
6016
233606
220768
2026-04-27T20:22:13Z
en>Fenakhay
0
233606
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]], which contain Lua code to create and manage entries.",
umbrella = {
parents = {{name = "Modules", sort = " "}},
breadcrumb = "by language",
},
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by other modules.",
umbrella = {
parents = {{name = "Data modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "data",
parents = {"modules"},
}
labels["dialect synonyms data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by {{tl|dialect synonyms}}.",
umbrella = {
parents = {{name = "Dialect synonyms data modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "dialect synonyms",
parents = {"data modules"},
}
labels["inflection modules"] = {
description = "{{{langname}}} [[inflection]] [[Wiktionary:Modules|modules]], which contain Lua code for generating conjugation and declension tables.",
umbrella = {
parents = {{name = "Inflection modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "inflection",
parents = {"modules", {name = "inflection-table templates", sort = " "}},
}
labels["testcase modules"] = {
description = "{{{langname}}} [[testcase]] [[Wiktionary:Modules|modules]], which contain Lua code for testing other modules.",
umbrella = {
parents = {{name = "Testcase modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "testcase",
parents = {"modules"},
}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
--[=[
Correctly defining a new module type here:
1. The breadcrumb generally does not need to be given because there is code at the bottom of this file
to generate the breadcrumb in a smart fashion by chopping off a suffix derived from the parent or any of
its ancestors.
2. Module types can be nested under other module types, but also list them directly under 'Modules' as a
secondary parent. (This violates a principle of non-duplication of categories but makes it much easier to
locate a given module type.)
]=]
raw_categories["Modules"] = {
description = "This is a general holder category for modules.",
additional = "For more information on what modules are and how they work, see [[Wiktionary:Scribunto]]. For a complete list of all modules, see [[Special:PrefixIndex/Module:|here]].",
parents = {"Category:Wiktionary"},
}
raw_categories["Uncategorized modules"] = {
description = "Uncategorized modules.",
additional = "Modules are placed here by [[Module:documentation]] under certain circumstances. See the documentation of that module for more info.",
parents = { {name = "Modules", sort = " "} },
}
raw_categories["Appendix modules"] = {
preceding = "{{also|:Category:Appendix templates}}",
description = "Modules with functions that generate content for or extract information from pages in the Appendix namespace.",
parents = { "Modules" },
}
raw_categories["Bot support modules"] = {
description = "Modules for supporting individual bot accounts.",
parents = { "Modules" },
}
raw_categories["Category modules"] = {
preceding = "{{also|:Category:Categorization templates|:Category:Category templates}}",
description = "Modules for adding categories to pages or generating the description and subcategories of category pages.",
parents = { "Modules" },
}
raw_categories["Character info modules"] = {
preceding = "{{also|:Category:Character info templates}}",
description = "Modules containing information on individual characters, or containing functions generating such information.",
parents = { "Modules" },
}
raw_categories["Character insertion modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules that implement templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Chemical element data modules"] = {
preceding = "{{also|:Category:Chemistry templates}}",
description = "Modules containing per-language [[chemical element]] name data consumed by {{tl|chemical element box}} and {{tl|chemical element table}}.",
parents = { "Data modules" },
}
raw_categories["Collections modules"] = {
description = "Modules containing functions used to implement collections (arrays, maps, etc.).",
parents = { "Utility modules", "Modules" },
}
raw_categories["Data modules"] = {
description = "Modules that do not contain functions, but only export a table of data that is used by other modules.",
additional = "Modules that are in this category should be imported using <code>mw.loadData</code> rather than <code>require</code>.",
parents = { "Modules" },
}
raw_categories["Category tree data modules"] = {
preceding = "{{also|:Category:Category tree data modules/lang|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of categories.",
parents = { "Data modules", "Category modules" },
}
raw_categories["Category tree data modules/lang"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of language-specific categories.",
breadcrumb = "lang",
parents = { {name = "Category tree data modules", sort = "lang"} },
}
raw_categories["Category tree data modules/topic"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/lang}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of topic categories.",
breadcrumb = "topic",
parents = { {name = "Category tree data modules", sort = "topic"} },
}
raw_categories["Character insertion data modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules containing data for use by {{temp|chars}}.",
parents = { "Data modules", "Character insertion modules" },
}
raw_categories["Dialect synonyms data modules"] = {
description = "Modules containing data for use by {{tl|dialect synonyms}}.",
parents = { "Data modules" },
}
raw_categories["Date modules"] = {
description = "Modules that implement functionality to convert or otherwise manipulate dates in various calendar systems.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Debugging modules"] = {
description = "Modules used for debugging.",
additional = "Some should only be used in sandbox modules or when using the " ..
"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] button in the edit page of modules and templates.",
parents = { "Modules" },
}
raw_categories["Definition modules"] = {
preceding = "{{also|:Category:Definition templates}}",
description = "Modules that implement templates used in [[Wiktionary:Glossary#definition line|definition lines]] of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Deprecated modules"] = {
description = "Modules that should not be used, as their functions are performed by newer modules.",
parents = { "Modules", "Category:Wiktionary maintenance" },
}
raw_categories["Discussion modules"] = {
preceding = "{{also|:Category:Discussion templates}}",
description = "Modules concerning discussion pages.",
parents = { "Modules" },
}
raw_categories["Display text-generating modules"] = {
description = "Modules that are used to generate display text.",
additional = "Display text determines what is shown to the reader. In some languages it must be normalized, " ..
"due to common errors caused by confusable characters, or so as to ensure a consistent display format.",
parents = { "Modules" },
}
raw_categories["Documentation modules"] = {
preceding = "{{also|:Category:Documentation templates}}",
description = "Modules for generating documentation pages.",
parents = { "Modules" },
}
raw_categories["Encoding modules"] = {
description = "Modules for converting between different textual encodings.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Entry-generating modules"] = {
preceding = "{{also|:Category:Entry templates}}",
description = "Modules with functions that are used to generate new entries.",
parents = { "Modules" },
}
raw_categories["Diacritic-stripping modules"] = {
description = "Modules that strip diacritics from the displayed text in order to create the logical pagename.",
parents = { "Modules" },
}
raw_categories["External link modules"] = {
preceding = "{{also|:Category:External link templates}}",
description = "Modules that are used in [[:Category:External link templates|external link templates]], i.e. which link to websites outside of the MediaWiki Foundation purview.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Etymology modules"] = {
preceding = "{{also|:Category:Etymology templates}}",
description = "Modules that implement templates that define the etymology of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Form-of modules"] = {
preceding = "{{also|:Category:Form-of templates}}",
description = "Modules that generate the definition line of non-lemma forms, e.g. verb forms and noun forms.",
parents = { "Definition modules", "Page generation modules", "Modules" },
}
raw_categories["Headword-line modules"] = {
preceding = "{{also|:Category:Headword-line templates}}",
description = "Modules that support [[:Category:Headword-line templates by language|headword-line templates]] for a specific language.",
additional = "See also [[:Category:Headword-line templates]].",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Inflection modules"] = {
description = "Modules used to support [[:Category:Inflection-table templates by language|inflection templates]] for a specific language.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Internal link modules"] = {
preceding = "{{also|:Category:Internal link templates}}",
description = "Modules that are used in [[:Category:Internal link templates|internal link templates]], i.e. which link between Wiktionary entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Interwiki modules"] = {
preceding = "{{also|:Category:Interwiki templates}}",
description = "Modules that are used in [[:Category:Interwiki templates|interwiki templates]], i.e. which link to other MediaWiki projects.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["JSON-generating modules"] = {
description = "Modules with functions that generate data in JSON format.",
parents = { "Modules" },
}
raw_categories["Language and script modules"] = {
description = "Modules that process language and script codes and return data on them.",
parents = { "Modules" },
}
raw_categories["List modules"] = {
preceding = "{{also|:Category:List templates}}",
description = "Modules that generate lists, tables or tree diagrams of entries or other structured data.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Maintenance modules"] = {
preceding = "{{also|:Category:Maintenance templates}}",
description = "Modules that implement templates used for maintaining entries.",
additional = "Examples are cleanup templates (e.g. {{tl|attention}}), deletion templates (e.g. {{tl|rfd}}) and " ..
"verification templates (e.g. {{tl|rfv}}).",
parents = { "Modules" },
}
raw_categories["Morphology modules"] = {
description = "Modules used to support [[:Category:Morphology templates|morphology templates]].",
parents = { "Modules" },
}
raw_categories["Number modules"] = {
preceding = "{{also|:Category:Number templates}}",
description = "Modules that handle conversion and/or formatting of numbers and numerals in various representations.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Page generation modules"] = {
description = "Modules that generate parts of a mainspace page (e.g. headword line, definition, inflection, links, etc.).",
parents = { "Modules" },
}
raw_categories["Parameter parsing modules"] = {
description = "Modules containing functions used to parse template parameters.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Pronunciation modules"] = {
preceding = "{{also|:Category:Pronunciation templates}}",
description = "Modules that implement templates used to create the language-specific pronunciation of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Pronunciation testcase modules"] = {
description = "Modules used to test other pronunciation modules.",
parents = { "Testcase modules", {name = "Pronunciation modules", sort = "Testcase"} },
}
raw_categories["Quotation and usage example modules"] = {
description = "Modules that implement templates used to format quotations and usage examples.",
parents = { "Definition modules", "Page generation modules", "Modules" },
}
raw_categories["Reference modules"] = {
preceding = "{{also|:Category:Reference templates}}",
description = "Modules that are used for [[:Category:Reference templates|reference templates]].",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Sandbox modules"] = {
description = "Test versions of modules intended for production use.",
parents = { "Modules" },
}
raw_categories["Semantic relation modules"] = {
preceding = "{{also|:Category:Semantic relation templates}}",
description = "Modules that implement templates used to indicate other terms semantically related to a " ..
"particular sense, e.g. [[synonym]]s or [[antonym]]s.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Sign language modules"] = {
description = "Modules used for sign languages.",
parents = { "Modules" },
}
raw_categories["Sortkey-generating modules"] = {
description = "Modules that generate sortkeys, which determine the order of pagenames in categories.",
parents = { "Modules" },
}
raw_categories["String modules"] = {
description = "Modules containing functions used to manipulate strings.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Swadesh modules"] = {
description = "Modules containing [[Swadesh list]]s.",
parents = { "Modules" },
}
raw_categories["Template interface modules"] = {
description = "Modules whose purpose is to provide an interface between templates and the functions of a module.",
additional = "They are usually named <code>.../templates</code>, and the functions present within them usually all " ..
"have only a \"frame\" parameter.",
parents = { "Modules" },
}
raw_categories["Testcase modules"] = {
description = "Modules used to test other modules.",
parents = { "Modules" },
}
raw_categories["Failing testcase modules"] = {
description = "Modules which contain failures in their unit tests.",
additional = "This category is added automatically by [[Module:UnitTests]] when a test case fails.",
parents = { "Testcase modules" },
}
raw_categories["Tracking modules"] = {
description = "Modules that add tracking templates.",
parents = { "Debugging modules", "Modules" },
}
raw_categories["Transliteration modules"] = {
description = "Modules that automatically convert text in one script to another.",
additional = "Most of them convert non-Latin scripts to Latin (romanisation/romanization), and are used by " ..
"templates or modules to generate transliteration of text that is tagged with a particular language. Each " ..
"language's transliteration module is specified in its data table (for which, see the category {{catlink|Language data modules}}).",
parents = { "Modules" },
}
raw_categories["Transliteration testcase modules"] = {
description = "Modules used to test other transliteration modules.",
parents = { "Testcase modules", {name = "Transliteration modules", sort = "Testcase"} },
}
raw_categories["Unused modules"] = {
description = "Unused modules.",
parents = { "Modules" },
}
raw_categories["User sandbox modules"] = {
description = "Modules that are for personal use and testing by individual editors.",
additional = "These should all begin with <code>User:</code> followed by the user's name. If several " ..
"sandbox modules are needed by a single user, subpages can be created. These modules should not be used in real " ..
"Wiktionary content pages, as all content on those pages should be editable by anyone and, if necessary, edit protected.",
parents = { "Sandbox modules", "Modules" },
}
raw_categories["Utility modules"] = {
description = "Modules that serve some sort of utility purpose in various entries.",
additional = "Avoid categorizing directly into this category, but use one of the more specific (and semantically " ..
"well-defined) module categories. Note also that modules used by multiple languages should go directly in this " ..
"category if necessary, while modules only used by one language should be in [[:Category:Language-specific utility modules]].",
parents = { "Modules" },
}
raw_categories["Language-specific utility modules"] = {
description = "Modules that deal with several utilities needed by a certain language.",
additional = "Usually their names end with {{cd|-utilities}} or {{cd|-common}} (preceded by the language code), " ..
"although more specific utility modules that one language uses may reside here as well. If a utility is used by " ..
"many languages, it should be in [[:Category:Utility modules]].",
parents = {{name = "Utility modules", sort = " "}},
}
raw_categories["Vote modules"] = {
description = "Modules used to manage Wiktionary votes.",
parents = { "Modules" },
}
raw_categories["Wikitext parsing modules"] = {
description = "Modules that contain functions that grab the wikitext of a page and get information from it by " ..
"performing string operations on it.",
parents = { "Modules" },
}
-- Don't modify `raw_categories` while processing it, or items may be skipped.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
local by_script = raw_cat .. " by script"
if raw_cat ~= "Modules" and raw_cat ~= "Data modules" and not raw_categories[by_script] then
new_cats[by_script] = {
description = raw_cat .. ", categorized by the script they operate on or with.",
additional = raw_cat .. " are " .. mw.getContentLanguage():lcfirst(obj.description),
breadcrumb = "by script",
parents = {{name = raw_cat, sort = " "}},
}
end
end
for new_cat, obj in pairs(new_cats) do
raw_categories[new_cat] = obj
end
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
for _, mod_type in ipairs {"Diacritic-stripping", "Sortkey-generating", "Transliteration"} do
insert(raw_handlers, function(data)
local n, suffix = data.category:match(("^%s modules used by (%%d+) language(s?)$"):format(pattern_escape(mod_type)))
-- Only match if there are no leading zeroes and the suffix is correct.
if not (n and not n:match("^0%d") and suffix == (n == "1" and "" or "s")) then
return
end
return {
breadcrumb = ("used by %d language%s"):format(n, suffix),
description = data.category .. ".",
can_be_empty = true,
parents = {
{name = ("%s modules"):format(mod_type), sort = require("Module:category tree").numeral_sortkey(n)},
},
}
end)
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
for key, data in pairs(raw_categories) do
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if raw_categories[parent] then
parent = raw_categories[parent].parents[1]
else
break
end
else
break
end
end
end
end
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
d3uknkrafwuaw93gummxf73khug7yn6
233607
233606
2026-05-08T12:11:07Z
Lee
19
[[:en:Module:category_tree/modules]] වෙතින් එක් සංශෝධනයක්
233606
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]], which contain Lua code to create and manage entries.",
umbrella = {
parents = {{name = "Modules", sort = " "}},
breadcrumb = "by language",
},
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by other modules.",
umbrella = {
parents = {{name = "Data modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "data",
parents = {"modules"},
}
labels["dialect synonyms data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by {{tl|dialect synonyms}}.",
umbrella = {
parents = {{name = "Dialect synonyms data modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "dialect synonyms",
parents = {"data modules"},
}
labels["inflection modules"] = {
description = "{{{langname}}} [[inflection]] [[Wiktionary:Modules|modules]], which contain Lua code for generating conjugation and declension tables.",
umbrella = {
parents = {{name = "Inflection modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "inflection",
parents = {"modules", {name = "inflection-table templates", sort = " "}},
}
labels["testcase modules"] = {
description = "{{{langname}}} [[testcase]] [[Wiktionary:Modules|modules]], which contain Lua code for testing other modules.",
umbrella = {
parents = {{name = "Testcase modules", sort = " "}},
breadcrumb = "by language",
},
breadcrumb = "testcase",
parents = {"modules"},
}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
--[=[
Correctly defining a new module type here:
1. The breadcrumb generally does not need to be given because there is code at the bottom of this file
to generate the breadcrumb in a smart fashion by chopping off a suffix derived from the parent or any of
its ancestors.
2. Module types can be nested under other module types, but also list them directly under 'Modules' as a
secondary parent. (This violates a principle of non-duplication of categories but makes it much easier to
locate a given module type.)
]=]
raw_categories["Modules"] = {
description = "This is a general holder category for modules.",
additional = "For more information on what modules are and how they work, see [[Wiktionary:Scribunto]]. For a complete list of all modules, see [[Special:PrefixIndex/Module:|here]].",
parents = {"Category:Wiktionary"},
}
raw_categories["Uncategorized modules"] = {
description = "Uncategorized modules.",
additional = "Modules are placed here by [[Module:documentation]] under certain circumstances. See the documentation of that module for more info.",
parents = { {name = "Modules", sort = " "} },
}
raw_categories["Appendix modules"] = {
preceding = "{{also|:Category:Appendix templates}}",
description = "Modules with functions that generate content for or extract information from pages in the Appendix namespace.",
parents = { "Modules" },
}
raw_categories["Bot support modules"] = {
description = "Modules for supporting individual bot accounts.",
parents = { "Modules" },
}
raw_categories["Category modules"] = {
preceding = "{{also|:Category:Categorization templates|:Category:Category templates}}",
description = "Modules for adding categories to pages or generating the description and subcategories of category pages.",
parents = { "Modules" },
}
raw_categories["Character info modules"] = {
preceding = "{{also|:Category:Character info templates}}",
description = "Modules containing information on individual characters, or containing functions generating such information.",
parents = { "Modules" },
}
raw_categories["Character insertion modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules that implement templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Chemical element data modules"] = {
preceding = "{{also|:Category:Chemistry templates}}",
description = "Modules containing per-language [[chemical element]] name data consumed by {{tl|chemical element box}} and {{tl|chemical element table}}.",
parents = { "Data modules" },
}
raw_categories["Collections modules"] = {
description = "Modules containing functions used to implement collections (arrays, maps, etc.).",
parents = { "Utility modules", "Modules" },
}
raw_categories["Data modules"] = {
description = "Modules that do not contain functions, but only export a table of data that is used by other modules.",
additional = "Modules that are in this category should be imported using <code>mw.loadData</code> rather than <code>require</code>.",
parents = { "Modules" },
}
raw_categories["Category tree data modules"] = {
preceding = "{{also|:Category:Category tree data modules/lang|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of categories.",
parents = { "Data modules", "Category modules" },
}
raw_categories["Category tree data modules/lang"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of language-specific categories.",
breadcrumb = "lang",
parents = { {name = "Category tree data modules", sort = "lang"} },
}
raw_categories["Category tree data modules/topic"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/lang}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of topic categories.",
breadcrumb = "topic",
parents = { {name = "Category tree data modules", sort = "topic"} },
}
raw_categories["Character insertion data modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules containing data for use by {{temp|chars}}.",
parents = { "Data modules", "Character insertion modules" },
}
raw_categories["Dialect synonyms data modules"] = {
description = "Modules containing data for use by {{tl|dialect synonyms}}.",
parents = { "Data modules" },
}
raw_categories["Date modules"] = {
description = "Modules that implement functionality to convert or otherwise manipulate dates in various calendar systems.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Debugging modules"] = {
description = "Modules used for debugging.",
additional = "Some should only be used in sandbox modules or when using the " ..
"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] button in the edit page of modules and templates.",
parents = { "Modules" },
}
raw_categories["Definition modules"] = {
preceding = "{{also|:Category:Definition templates}}",
description = "Modules that implement templates used in [[Wiktionary:Glossary#definition line|definition lines]] of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Deprecated modules"] = {
description = "Modules that should not be used, as their functions are performed by newer modules.",
parents = { "Modules", "Category:Wiktionary maintenance" },
}
raw_categories["Discussion modules"] = {
preceding = "{{also|:Category:Discussion templates}}",
description = "Modules concerning discussion pages.",
parents = { "Modules" },
}
raw_categories["Display text-generating modules"] = {
description = "Modules that are used to generate display text.",
additional = "Display text determines what is shown to the reader. In some languages it must be normalized, " ..
"due to common errors caused by confusable characters, or so as to ensure a consistent display format.",
parents = { "Modules" },
}
raw_categories["Documentation modules"] = {
preceding = "{{also|:Category:Documentation templates}}",
description = "Modules for generating documentation pages.",
parents = { "Modules" },
}
raw_categories["Encoding modules"] = {
description = "Modules for converting between different textual encodings.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Entry-generating modules"] = {
preceding = "{{also|:Category:Entry templates}}",
description = "Modules with functions that are used to generate new entries.",
parents = { "Modules" },
}
raw_categories["Diacritic-stripping modules"] = {
description = "Modules that strip diacritics from the displayed text in order to create the logical pagename.",
parents = { "Modules" },
}
raw_categories["External link modules"] = {
preceding = "{{also|:Category:External link templates}}",
description = "Modules that are used in [[:Category:External link templates|external link templates]], i.e. which link to websites outside of the MediaWiki Foundation purview.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Etymology modules"] = {
preceding = "{{also|:Category:Etymology templates}}",
description = "Modules that implement templates that define the etymology of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Form-of modules"] = {
preceding = "{{also|:Category:Form-of templates}}",
description = "Modules that generate the definition line of non-lemma forms, e.g. verb forms and noun forms.",
parents = { "Definition modules", "Page generation modules", "Modules" },
}
raw_categories["Headword-line modules"] = {
preceding = "{{also|:Category:Headword-line templates}}",
description = "Modules that support [[:Category:Headword-line templates by language|headword-line templates]] for a specific language.",
additional = "See also [[:Category:Headword-line templates]].",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Inflection modules"] = {
description = "Modules used to support [[:Category:Inflection-table templates by language|inflection templates]] for a specific language.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Internal link modules"] = {
preceding = "{{also|:Category:Internal link templates}}",
description = "Modules that are used in [[:Category:Internal link templates|internal link templates]], i.e. which link between Wiktionary entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Interwiki modules"] = {
preceding = "{{also|:Category:Interwiki templates}}",
description = "Modules that are used in [[:Category:Interwiki templates|interwiki templates]], i.e. which link to other MediaWiki projects.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["JSON-generating modules"] = {
description = "Modules with functions that generate data in JSON format.",
parents = { "Modules" },
}
raw_categories["Language and script modules"] = {
description = "Modules that process language and script codes and return data on them.",
parents = { "Modules" },
}
raw_categories["List modules"] = {
preceding = "{{also|:Category:List templates}}",
description = "Modules that generate lists, tables or tree diagrams of entries or other structured data.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Maintenance modules"] = {
preceding = "{{also|:Category:Maintenance templates}}",
description = "Modules that implement templates used for maintaining entries.",
additional = "Examples are cleanup templates (e.g. {{tl|attention}}), deletion templates (e.g. {{tl|rfd}}) and " ..
"verification templates (e.g. {{tl|rfv}}).",
parents = { "Modules" },
}
raw_categories["Morphology modules"] = {
description = "Modules used to support [[:Category:Morphology templates|morphology templates]].",
parents = { "Modules" },
}
raw_categories["Number modules"] = {
preceding = "{{also|:Category:Number templates}}",
description = "Modules that handle conversion and/or formatting of numbers and numerals in various representations.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Page generation modules"] = {
description = "Modules that generate parts of a mainspace page (e.g. headword line, definition, inflection, links, etc.).",
parents = { "Modules" },
}
raw_categories["Parameter parsing modules"] = {
description = "Modules containing functions used to parse template parameters.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Pronunciation modules"] = {
preceding = "{{also|:Category:Pronunciation templates}}",
description = "Modules that implement templates used to create the language-specific pronunciation of entries.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Pronunciation testcase modules"] = {
description = "Modules used to test other pronunciation modules.",
parents = { "Testcase modules", {name = "Pronunciation modules", sort = "Testcase"} },
}
raw_categories["Quotation and usage example modules"] = {
description = "Modules that implement templates used to format quotations and usage examples.",
parents = { "Definition modules", "Page generation modules", "Modules" },
}
raw_categories["Reference modules"] = {
preceding = "{{also|:Category:Reference templates}}",
description = "Modules that are used for [[:Category:Reference templates|reference templates]].",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Sandbox modules"] = {
description = "Test versions of modules intended for production use.",
parents = { "Modules" },
}
raw_categories["Semantic relation modules"] = {
preceding = "{{also|:Category:Semantic relation templates}}",
description = "Modules that implement templates used to indicate other terms semantically related to a " ..
"particular sense, e.g. [[synonym]]s or [[antonym]]s.",
parents = { "Page generation modules", "Modules" },
}
raw_categories["Sign language modules"] = {
description = "Modules used for sign languages.",
parents = { "Modules" },
}
raw_categories["Sortkey-generating modules"] = {
description = "Modules that generate sortkeys, which determine the order of pagenames in categories.",
parents = { "Modules" },
}
raw_categories["String modules"] = {
description = "Modules containing functions used to manipulate strings.",
parents = { "Utility modules", "Modules" },
}
raw_categories["Swadesh modules"] = {
description = "Modules containing [[Swadesh list]]s.",
parents = { "Modules" },
}
raw_categories["Template interface modules"] = {
description = "Modules whose purpose is to provide an interface between templates and the functions of a module.",
additional = "They are usually named <code>.../templates</code>, and the functions present within them usually all " ..
"have only a \"frame\" parameter.",
parents = { "Modules" },
}
raw_categories["Testcase modules"] = {
description = "Modules used to test other modules.",
parents = { "Modules" },
}
raw_categories["Failing testcase modules"] = {
description = "Modules which contain failures in their unit tests.",
additional = "This category is added automatically by [[Module:UnitTests]] when a test case fails.",
parents = { "Testcase modules" },
}
raw_categories["Tracking modules"] = {
description = "Modules that add tracking templates.",
parents = { "Debugging modules", "Modules" },
}
raw_categories["Transliteration modules"] = {
description = "Modules that automatically convert text in one script to another.",
additional = "Most of them convert non-Latin scripts to Latin (romanisation/romanization), and are used by " ..
"templates or modules to generate transliteration of text that is tagged with a particular language. Each " ..
"language's transliteration module is specified in its data table (for which, see the category {{catlink|Language data modules}}).",
parents = { "Modules" },
}
raw_categories["Transliteration testcase modules"] = {
description = "Modules used to test other transliteration modules.",
parents = { "Testcase modules", {name = "Transliteration modules", sort = "Testcase"} },
}
raw_categories["Unused modules"] = {
description = "Unused modules.",
parents = { "Modules" },
}
raw_categories["User sandbox modules"] = {
description = "Modules that are for personal use and testing by individual editors.",
additional = "These should all begin with <code>User:</code> followed by the user's name. If several " ..
"sandbox modules are needed by a single user, subpages can be created. These modules should not be used in real " ..
"Wiktionary content pages, as all content on those pages should be editable by anyone and, if necessary, edit protected.",
parents = { "Sandbox modules", "Modules" },
}
raw_categories["Utility modules"] = {
description = "Modules that serve some sort of utility purpose in various entries.",
additional = "Avoid categorizing directly into this category, but use one of the more specific (and semantically " ..
"well-defined) module categories. Note also that modules used by multiple languages should go directly in this " ..
"category if necessary, while modules only used by one language should be in [[:Category:Language-specific utility modules]].",
parents = { "Modules" },
}
raw_categories["Language-specific utility modules"] = {
description = "Modules that deal with several utilities needed by a certain language.",
additional = "Usually their names end with {{cd|-utilities}} or {{cd|-common}} (preceded by the language code), " ..
"although more specific utility modules that one language uses may reside here as well. If a utility is used by " ..
"many languages, it should be in [[:Category:Utility modules]].",
parents = {{name = "Utility modules", sort = " "}},
}
raw_categories["Vote modules"] = {
description = "Modules used to manage Wiktionary votes.",
parents = { "Modules" },
}
raw_categories["Wikitext parsing modules"] = {
description = "Modules that contain functions that grab the wikitext of a page and get information from it by " ..
"performing string operations on it.",
parents = { "Modules" },
}
-- Don't modify `raw_categories` while processing it, or items may be skipped.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
local by_script = raw_cat .. " by script"
if raw_cat ~= "Modules" and raw_cat ~= "Data modules" and not raw_categories[by_script] then
new_cats[by_script] = {
description = raw_cat .. ", categorized by the script they operate on or with.",
additional = raw_cat .. " are " .. mw.getContentLanguage():lcfirst(obj.description),
breadcrumb = "by script",
parents = {{name = raw_cat, sort = " "}},
}
end
end
for new_cat, obj in pairs(new_cats) do
raw_categories[new_cat] = obj
end
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
for _, mod_type in ipairs {"Diacritic-stripping", "Sortkey-generating", "Transliteration"} do
insert(raw_handlers, function(data)
local n, suffix = data.category:match(("^%s modules used by (%%d+) language(s?)$"):format(pattern_escape(mod_type)))
-- Only match if there are no leading zeroes and the suffix is correct.
if not (n and not n:match("^0%d") and suffix == (n == "1" and "" or "s")) then
return
end
return {
breadcrumb = ("used by %d language%s"):format(n, suffix),
description = data.category .. ".",
can_be_empty = true,
parents = {
{name = ("%s modules"):format(mod_type), sort = require("Module:category tree").numeral_sortkey(n)},
},
}
end)
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
for key, data in pairs(raw_categories) do
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if raw_categories[parent] then
parent = raw_categories[parent].parents[1]
else
break
end
else
break
end
end
end
end
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
d3uknkrafwuaw93gummxf73khug7yn6
233620
233607
2026-05-08T16:39:28Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
233620
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local m_sinhala = require("Module:sinhala")
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]], which contain Lua code to create and manage entries.",
umbrella = {
parents = {{name = "මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["දත්ත මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by other modules.",
umbrella = {
parents = {{name = "දත්ත මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "data",
parents = {"මොඩියුල"},
}
labels["dialect synonyms data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by {{tl|dialect synonyms}}.",
umbrella = {
parents = {{name = "Dialect synonyms data modules", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "dialect synonyms",
parents = {"දත්ත මොඩියුල"},
}
labels["වරනැගීම් මොඩියුල"] = {
description = "{{{langname}}} [[inflection]] [[Wiktionary:Modules|modules]], which contain Lua code for generating conjugation and declension tables.",
umbrella = {
parents = {{name = "වරනැගීම් මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "වරනැගීම්",
parents = {"මොඩියුල", {name = "වරනැගීම්-වගු සැකිලි", sort = " "}},
}
labels["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "{{{langname}}} [[testcase]] [[Wiktionary:Modules|modules]], which contain Lua code for testing other modules.",
umbrella = {
parents = {{name = "පිරික්සුම් ආදර්ශක මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "testcase",
parents = {"මොඩියුල"},
}
local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
--[=[
Correctly defining a new module type here:
1. The breadcrumb generally does not need to be given because there is code at the bottom of this file
to generate the breadcrumb in a smart fashion by chopping off a suffix derived from the parent or any of
its ancestors.
2. Module types can be nested under other module types, but also list them directly under 'Modules' as a
secondary parent. (This violates a principle of non-duplication of categories but makes it much easier to
locate a given module type.)
]=]
raw_categories["මොඩියුල"] = {
description = "This is a general holder category for modules.",
additional = "For more information on what modules are and how they work, see [[Wiktionary:Scribunto]]. For a complete list of all modules, see [[Special:PrefixIndex/Module:|here]].",
parents = {"ප්රවර්ගය:වික්ෂනරිය"},
}
raw_categories["ප්රවර්ගීකරණය නොවූ මොඩියුල"] = {
description = "Uncategorized modules.",
additional = "Modules are placed here by [[Module:documentation]] under certain circumstances. See the documentation of that module for more info.",
parents = { {name = "මොඩියුල", sort = " "} },
}
raw_categories["Appendix modules"] = {
preceding = "{{also|:Category:Appendix templates}}",
description = "Modules with functions that generate content for or extract information from pages in the Appendix namespace.",
parents = { "මොඩියුල" },
}
raw_categories["Bot support modules"] = {
description = "Modules for supporting individual bot accounts.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවර්ග මොඩියුල"] = {
preceding = "{{also|:Category:Categorization templates|:Category:Category templates}}",
description = "Modules for adding categories to pages or generating the description and subcategories of category pages.",
parents = { "මොඩියුල" },
}
raw_categories["Character info මොඩියුල"] = {
preceding = "{{also|:Category:Character info templates}}",
description = "Modules containing information on individual characters, or containing functions generating such information.",
parents = { "මොඩියුල" },
}
raw_categories["Character insertion modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules that implement templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Chemical element data modules"] = {
preceding = "{{also|:Category:Chemistry templates}}",
description = "Modules containing per-language [[chemical element]] name data consumed by {{tl|chemical element box}} and {{tl|chemical element table}}.",
parents = { "Data modules" },
}
raw_categories["Collections modules"] = {
description = "Modules containing functions used to implement collections (arrays, maps, etc.).",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["දත්ත මොඩියුල"] = {
description = "Modules that do not contain functions, but only export a table of data that is used by other modules.",
additional = "Modules that are in this category should be imported using <code>mw.loadData</code> rather than <code>require</code>.",
parents = { "මොඩියුල" },
}
raw_categories["Category tree data modules"] = {
preceding = "{{also|:Category:Category tree data modules/lang|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of categories.",
parents = { "Data modules", "Category modules" },
}
raw_categories["Category tree data modules/lang"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of language-specific categories.",
breadcrumb = "lang",
parents = { {name = "Category tree data modules", sort = "lang"} },
}
raw_categories["Category tree data modules/topic"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/lang}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of topic categories.",
breadcrumb = "topic",
parents = { {name = "Category tree data modules", sort = "topic"} },
}
raw_categories["Character insertion data modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules containing data for use by {{temp|chars}}.",
parents = { "දත්ත මොඩියුල", "Character insertion modules" },
}
raw_categories["Dialect synonyms data modules"] = {
description = "Modules containing data for use by {{tl|dialect synonyms}}.",
parents = { "දත්ත මොඩියුල" },
}
raw_categories["Date modules"] = {
description = "Modules that implement functionality to convert or otherwise manipulate dates in various calendar systems.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ඩිබග් මොඩියුල"] = {
description = "Modules used for debugging.",
additional = "Some should only be used in sandbox modules or when using the " ..
"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] button in the edit page of modules and templates.",
parents = { "මොඩියුල" },
}
raw_categories["අර්ථ දැක්වීම් මොඩියුල"] = {
preceding = "{{also|:Category:Definition templates}}",
description = "Modules that implement templates used in [[Wiktionary:Glossary#definition line|definition lines]] of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Deprecated modules"] = {
description = "Modules that should not be used, as their functions are performed by newer modules.",
parents = { "මොඩියුල", "ප්රවර්ගය:වික්ෂනරි නඩත්තු කටයුතු" },
}
raw_categories["සාකච්ඡා මොඩියුල"] = {
preceding = "{{also|:Category:Discussion templates}}",
description = "Modules concerning discussion pages.",
parents = { "මොඩියුල" },
}
raw_categories["Display text-generating modules"] = {
description = "Modules that are used to generate display text.",
additional = "Display text determines what is shown to the reader. In some languages it must be normalized, " ..
"due to common errors caused by confusable characters, or so as to ensure a consistent display format.",
parents = { "මොඩියුල" },
}
raw_categories["උපදෙස් මොඩියුල"] = {
preceding = "{{also|:Category:Documentation templates}}",
description = "උපදෙස් පිටු ජනනය සඳහා භාවිතාවන මොඩියුල.",
parents = { "මොඩියුල" },
}
raw_categories["Encoding modules"] = {
description = "Modules for converting between different textual encodings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ප්රවේශ-ජනක මොඩියුල"] = {
preceding = "{{also|:Category:Entry templates}}",
description = "Modules with functions that are used to generate new entries.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවේශ නාම-ජනක මොඩියුල"] = {
description = "Modules that generate entry names, which typically have certain diacritics stripped compared with the form in links and headwords.",
parents = { "මොඩියුල" },
}
raw_categories["External link modules"] = {
preceding = "{{also|:Category:External link templates}}",
description = "Modules that are used in [[:Category:External link templates|external link templates]], i.e. which link to websites outside of the MediaWiki Foundation purview.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නිරුක්ති මොඩියුල"] = {
preceding = "{{also|:Category:Etymology templates}}",
description = "Modules that implement templates that define the etymology of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["රූපාකාර මොඩියුල"] = {
preceding = "{{also|:Category:Form-of templates}}",
description = "Modules that generate the definition line of non-lemma forms, e.g. verb forms and noun forms.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["යොමු වචන පේළි මොඩියුල"] = {
preceding = "{{also|:Category:Headword-line templates}}",
description = "යම් භාෂාවක් සඳහා [[:ප්රවර්ගය:භාෂාව අනුව යොමු වචන පේළි සැකිලි|යොමු වචන පේළි සැකිලි]] සඳහා සහයෝගය දක්වන මොඩියුල.",
additional = "මෙයත් බලන්න: [[:ප්රවර්ගය:යොමු වචන පේළි සැකිලි]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වරනැගීම් මොඩියුල"] = {
description = "Modules used to support [[:Category:Inflection-table templates by language|inflection templates]] for a specific language.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["අභ්යන්තර සබැඳි මොඩියුල"] = {
preceding = "{{also|:Category:Internal link templates}}",
description = "Modules that are used in [[:Category:Internal link templates|internal link templates]], i.e. which link between Wiktionary entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Interwiki modules"] = {
preceding = "{{also|:Category:Interwiki templates}}",
description = "Modules that are used in [[:Category:Interwiki templates|interwiki templates]], i.e. which link to other MediaWiki projects.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["ජේසන්-ජනක මොඩියුල"] = {
description = "Modules with functions that generate data in JSON format.",
parents = { "මොඩියුල" },
}
raw_categories["භාෂා සහ අක්ෂරක්රම මොඩියුල"] = {
description = "Modules that process language and script codes and return data on them.",
parents = { "මොඩියුල" },
}
raw_categories["ලැයිස්තු මොඩියුල"] = {
preceding = "{{also|:Category:List templates}}",
description = "Modules that generate lists, tables or tree diagrams of entries or other structured data.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නඩත්තු කටයුතු මොඩියුල"] = {
preceding = "{{also|:Category:Maintenance templates}}",
description = "Modules that implement templates used for maintaining entries.",
additional = "Examples are cleanup templates (e.g. {{tl|attention}}), deletion templates (e.g. {{tl|rfd}}) and " ..
"verification templates (e.g. {{tl|rfv}}).",
parents = { "මොඩියුල" },
}
raw_categories["සංඛ්යා මොඩියුල"] = {
preceding = "{{also|:Category:Number templates}}",
description = "Modules that handle conversion and/or formatting of numbers and numerals in various representations.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["පිටු ජනක මොඩියුල"] = {
description = "Modules that generate parts of a mainspace page (e.g. headword line, definition, inflection, links, etc.).",
parents = { "මොඩියුල" },
}
raw_categories["Parameter parsing modules"] = {
description = "Modules containing functions used to parse template parameters.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ මොඩියුල"] = {
preceding = "{{also|:Category:Pronunciation templates}}",
description = "Modules that implement templates used to create the language-specific pronunciation of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other pronunciation modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "උච්චාරණ මොඩියුල", sort = "Testcase"} },
}
raw_categories["උපුටා දැක්වීම් සහ භාවිත නිදර්ශන මොඩියුල"] = {
description = "Modules that implement templates used to format quotations and usage examples.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Reference modules"] = {
preceding = "{{also|:Category:Reference templates}}",
description = "Modules that are used for [[:Category:Reference templates|reference templates]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වැලිපිලි මොඩියුල"] = {
description = "Test versions of modules intended for production use.",
parents = { "මොඩියුල" },
}
raw_categories["Semantic relation modules"] = {
preceding = "{{also|:Category:Semantic relation templates}}",
description = "Modules that implement templates used to indicate other terms semantically related to a " ..
"particular sense, e.g. [[synonym]]s or [[antonym]]s.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["සෝට්කී-ජනක මොඩියුල"] = {
description = "Modules that generate sortkeys, which determine the order of entry names in categories.",
parents = { "මොඩියුල" },
}
raw_categories["String modules"] = {
description = "Modules containing functions used to manipulate strings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["Swadesh modules"] = {
description = "Modules containing [[Swadesh list]]s.",
parents = { "මොඩියුල" },
}
raw_categories["Template interface modules"] = {
description = "Modules whose purpose is to provide an interface between templates and the functions of a module.",
additional = "They are usually named <code>.../templates</code>, and the functions present within them usually all " ..
"have only a \"frame\" parameter.",
parents = { "මොඩියුල" },
}
raw_categories["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other modules.",
parents = { "මොඩියුල" },
}
raw_categories["අසමත්වන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules which contain failures in their unit tests.",
additional = "This category is added automatically by [[Module:UnitTests]] when a test case fails.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල" },
}
raw_categories["නිරීක්ෂණ මොඩියුල"] = {
description = "Modules that add tracking templates.",
parents = { "ඩිබග් මොඩියුල", "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන මොඩියුල"] = {
description = "Modules that automatically convert text in one script to another.",
additional = "Most of them convert non-Latin scripts to Latin (romanisation/romanization), and are used by " ..
"templates or modules to generate transliteration of text that is tagged with a particular language. Each " ..
"language's transliteration module is specified in its data table (for which, see the category {{catlink|Language data modules}}).",
parents = { "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other transliteration modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "අක්ෂර පරිවර්තන මොඩියුල", sort = "Testcase"} },
}
raw_categories["Unused modules"] = {
description = "Unused modules.",
parents = { "මොඩියුල" },
}
raw_categories["User sandbox modules"] = {
description = "Modules that are for personal use and testing by individual editors.",
additional = "These should all begin with <code>User:</code> followed by the user's name. If several " ..
"sandbox modules are needed by a single user, subpages can be created. These modules should not be used in real " ..
"Wiktionary content pages, as all content on those pages should be editable by anyone and, if necessary, edit protected.",
parents = { "Sandbox modules", "මොඩියුල" },
}
raw_categories["උපයෝගිතා මොඩියුල"] = {
description = "Modules that serve some sort of utility purpose in various entries.",
additional = "Avoid categorizing directly into this category, but use one of the more specific (and semantically " ..
"well-defined) module categories. Note also that modules used by multiple languages should go directly in this " ..
"category if necessary, while modules only used by one language should be in [[:ප්රවර්ගය:භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල]].",
parents = { "මොඩියුල" },
}
raw_categories["භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල"] = {
description = "Modules that deal with several utilities needed by a certain language.",
additional = "Usually their names end with {{cd|-utilities}} or {{cd|-common}} (preceded by the language code), " ..
"although more specific utility modules that one language uses may reside here as well. If a utility is used by " ..
"many languages, it should be in [[:Category:Utility modules]].",
parents = {{name = "උපයෝගිතා මොඩියුල", sort = " "}},
}
raw_categories["Vote modules"] = {
description = "Modules used to manage Wiktionary votes.",
parents = { "මොඩියුල" },
}
raw_categories["විකි පෙළ විශ්ලේෂණ මොඩියුල"] = {
description = "Modules that contain functions that grab the wikitext of a page and get information from it by " ..
"performing string operations on it.",
parents = { "මොඩියුල" },
}
-- Don't modify `raw_categories` while processing it, or items may be skipped.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
local by_script = "අක්ෂරක්රමය අනුව " .. raw_cat
if raw_cat ~= "මොඩියුල" and raw_cat ~= "දත්ත මොඩියුල" and not raw_categories[by_script] then
new_cats[by_script] = {
description = raw_cat .. ", categorized by the script they operate on or with.",
additional = raw_cat .. " are " .. mw.getContentLanguage():lcfirst(obj.description),
breadcrumb = "අක්ෂරක්රමය අනුව",
parents = {{name = raw_cat, sort = " "}},
}
end
end
for new_cat, obj in pairs(new_cats) do
raw_categories[new_cat] = obj
end
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
for _, mod_type in ipairs { "ප්රවේශ නාම-ජනක", "සෝට්කී-ජනක", "අක්ෂර පරිවර්තන" } do
table.insert(raw_handlers, function(data)
local languages, count = data.category:match(("^(භාෂා) ([0-9]+) ක් මගින් භාවිතා වන %s මොඩියුල$"):format(
-- need to escape the hyphen in 'Entry name-generating' and 'Sortkey-generating'
require("Module:string utilities").pattern_escape(mod_type)))
if count then
return {
description = data.category .. ".",
breadcrumb = languages .. " " .. count .. " ක් මගින් භාවිතාවන",
parents = {
{ name = mod_type .. " මොඩියුල", sort = count },
},
}
end
end)
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
for key, data in pairs(raw_categories) do
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if raw_categories[parent] then
parent = raw_categories[parent].parents[1]
else
break
end
else
break
end
end
end
end
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
bqov610lnfp877m6ntw6cwctb2fl7w4
233621
233620
2026-05-08T16:43:27Z
Lee
19
"data modules" සිට "දත්ත මොඩියුල" වෙතට
233621
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local m_sinhala = require("Module:sinhala")
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]], which contain Lua code to create and manage entries.",
umbrella = {
parents = {{name = "මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["දත්ත මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by other modules.",
umbrella = {
parents = {{name = "දත්ත මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "data",
parents = {"මොඩියුල"},
}
labels["dialect synonyms data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by {{tl|dialect synonyms}}.",
umbrella = {
parents = {{name = "Dialect synonyms data modules", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "dialect synonyms",
parents = {"දත්ත මොඩියුල"},
}
labels["වරනැගීම් මොඩියුල"] = {
description = "{{{langname}}} [[inflection]] [[Wiktionary:Modules|modules]], which contain Lua code for generating conjugation and declension tables.",
umbrella = {
parents = {{name = "වරනැගීම් මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "වරනැගීම්",
parents = {"මොඩියුල", {name = "වරනැගීම්-වගු සැකිලි", sort = " "}},
}
labels["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "{{{langname}}} [[testcase]] [[Wiktionary:Modules|modules]], which contain Lua code for testing other modules.",
umbrella = {
parents = {{name = "පිරික්සුම් ආදර්ශක මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "testcase",
parents = {"මොඩියුල"},
}
local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
--[=[
Correctly defining a new module type here:
1. The breadcrumb generally does not need to be given because there is code at the bottom of this file
to generate the breadcrumb in a smart fashion by chopping off a suffix derived from the parent or any of
its ancestors.
2. Module types can be nested under other module types, but also list them directly under 'Modules' as a
secondary parent. (This violates a principle of non-duplication of categories but makes it much easier to
locate a given module type.)
]=]
raw_categories["මොඩියුල"] = {
description = "This is a general holder category for modules.",
additional = "For more information on what modules are and how they work, see [[Wiktionary:Scribunto]]. For a complete list of all modules, see [[Special:PrefixIndex/Module:|here]].",
parents = {"ප්රවර්ගය:වික්ෂනරිය"},
}
raw_categories["ප්රවර්ගීකරණය නොවූ මොඩියුල"] = {
description = "Uncategorized modules.",
additional = "Modules are placed here by [[Module:documentation]] under certain circumstances. See the documentation of that module for more info.",
parents = { {name = "මොඩියුල", sort = " "} },
}
raw_categories["Appendix modules"] = {
preceding = "{{also|:Category:Appendix templates}}",
description = "Modules with functions that generate content for or extract information from pages in the Appendix namespace.",
parents = { "මොඩියුල" },
}
raw_categories["Bot support modules"] = {
description = "Modules for supporting individual bot accounts.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවර්ග මොඩියුල"] = {
preceding = "{{also|:Category:Categorization templates|:Category:Category templates}}",
description = "Modules for adding categories to pages or generating the description and subcategories of category pages.",
parents = { "මොඩියුල" },
}
raw_categories["Character info මොඩියුල"] = {
preceding = "{{also|:Category:Character info templates}}",
description = "Modules containing information on individual characters, or containing functions generating such information.",
parents = { "මොඩියුල" },
}
raw_categories["Character insertion modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules that implement templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Chemical element data modules"] = {
preceding = "{{also|:Category:Chemistry templates}}",
description = "Modules containing per-language [[chemical element]] name data consumed by {{tl|chemical element box}} and {{tl|chemical element table}}.",
parents = { "දත්ත මොඩියුල" },
}
raw_categories["Collections modules"] = {
description = "Modules containing functions used to implement collections (arrays, maps, etc.).",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["දත්ත මොඩියුල"] = {
description = "Modules that do not contain functions, but only export a table of data that is used by other modules.",
additional = "Modules that are in this category should be imported using <code>mw.loadData</code> rather than <code>require</code>.",
parents = { "මොඩියුල" },
}
raw_categories["Category tree data modules"] = {
preceding = "{{also|:Category:Category tree data modules/lang|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of categories.",
parents = { "දත්ත මොඩියුල", "Category modules" },
}
raw_categories["Category tree data modules/lang"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of language-specific categories.",
breadcrumb = "lang",
parents = { {name = "Category tree data modules", sort = "lang"} },
}
raw_categories["Category tree data modules/topic"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/lang}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of topic categories.",
breadcrumb = "topic",
parents = { {name = "Category tree data modules", sort = "topic"} },
}
raw_categories["Character insertion data modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules containing data for use by {{temp|chars}}.",
parents = { "දත්ත මොඩියුල", "Character insertion modules" },
}
raw_categories["Dialect synonyms data modules"] = {
description = "Modules containing data for use by {{tl|dialect synonyms}}.",
parents = { "දත්ත මොඩියුල" },
}
raw_categories["Date modules"] = {
description = "Modules that implement functionality to convert or otherwise manipulate dates in various calendar systems.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ඩිබග් මොඩියුල"] = {
description = "Modules used for debugging.",
additional = "Some should only be used in sandbox modules or when using the " ..
"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] button in the edit page of modules and templates.",
parents = { "මොඩියුල" },
}
raw_categories["අර්ථ දැක්වීම් මොඩියුල"] = {
preceding = "{{also|:Category:Definition templates}}",
description = "Modules that implement templates used in [[Wiktionary:Glossary#definition line|definition lines]] of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Deprecated modules"] = {
description = "Modules that should not be used, as their functions are performed by newer modules.",
parents = { "මොඩියුල", "ප්රවර්ගය:වික්ෂනරි නඩත්තු කටයුතු" },
}
raw_categories["සාකච්ඡා මොඩියුල"] = {
preceding = "{{also|:Category:Discussion templates}}",
description = "Modules concerning discussion pages.",
parents = { "මොඩියුල" },
}
raw_categories["Display text-generating modules"] = {
description = "Modules that are used to generate display text.",
additional = "Display text determines what is shown to the reader. In some languages it must be normalized, " ..
"due to common errors caused by confusable characters, or so as to ensure a consistent display format.",
parents = { "මොඩියුල" },
}
raw_categories["උපදෙස් මොඩියුල"] = {
preceding = "{{also|:Category:Documentation templates}}",
description = "උපදෙස් පිටු ජනනය සඳහා භාවිතාවන මොඩියුල.",
parents = { "මොඩියුල" },
}
raw_categories["Encoding modules"] = {
description = "Modules for converting between different textual encodings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ප්රවේශ-ජනක මොඩියුල"] = {
preceding = "{{also|:Category:Entry templates}}",
description = "Modules with functions that are used to generate new entries.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවේශ නාම-ජනක මොඩියුල"] = {
description = "Modules that generate entry names, which typically have certain diacritics stripped compared with the form in links and headwords.",
parents = { "මොඩියුල" },
}
raw_categories["External link modules"] = {
preceding = "{{also|:Category:External link templates}}",
description = "Modules that are used in [[:Category:External link templates|external link templates]], i.e. which link to websites outside of the MediaWiki Foundation purview.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නිරුක්ති මොඩියුල"] = {
preceding = "{{also|:Category:Etymology templates}}",
description = "Modules that implement templates that define the etymology of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["රූපාකාර මොඩියුල"] = {
preceding = "{{also|:Category:Form-of templates}}",
description = "Modules that generate the definition line of non-lemma forms, e.g. verb forms and noun forms.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["යොමු වචන පේළි මොඩියුල"] = {
preceding = "{{also|:Category:Headword-line templates}}",
description = "යම් භාෂාවක් සඳහා [[:ප්රවර්ගය:භාෂාව අනුව යොමු වචන පේළි සැකිලි|යොමු වචන පේළි සැකිලි]] සඳහා සහයෝගය දක්වන මොඩියුල.",
additional = "මෙයත් බලන්න: [[:ප්රවර්ගය:යොමු වචන පේළි සැකිලි]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වරනැගීම් මොඩියුල"] = {
description = "Modules used to support [[:Category:Inflection-table templates by language|inflection templates]] for a specific language.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["අභ්යන්තර සබැඳි මොඩියුල"] = {
preceding = "{{also|:Category:Internal link templates}}",
description = "Modules that are used in [[:Category:Internal link templates|internal link templates]], i.e. which link between Wiktionary entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Interwiki modules"] = {
preceding = "{{also|:Category:Interwiki templates}}",
description = "Modules that are used in [[:Category:Interwiki templates|interwiki templates]], i.e. which link to other MediaWiki projects.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["ජේසන්-ජනක මොඩියුල"] = {
description = "Modules with functions that generate data in JSON format.",
parents = { "මොඩියුල" },
}
raw_categories["භාෂා සහ අක්ෂරක්රම මොඩියුල"] = {
description = "Modules that process language and script codes and return data on them.",
parents = { "මොඩියුල" },
}
raw_categories["ලැයිස්තු මොඩියුල"] = {
preceding = "{{also|:Category:List templates}}",
description = "Modules that generate lists, tables or tree diagrams of entries or other structured data.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නඩත්තු කටයුතු මොඩියුල"] = {
preceding = "{{also|:Category:Maintenance templates}}",
description = "Modules that implement templates used for maintaining entries.",
additional = "Examples are cleanup templates (e.g. {{tl|attention}}), deletion templates (e.g. {{tl|rfd}}) and " ..
"verification templates (e.g. {{tl|rfv}}).",
parents = { "මොඩියුල" },
}
raw_categories["සංඛ්යා මොඩියුල"] = {
preceding = "{{also|:Category:Number templates}}",
description = "Modules that handle conversion and/or formatting of numbers and numerals in various representations.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["පිටු ජනක මොඩියුල"] = {
description = "Modules that generate parts of a mainspace page (e.g. headword line, definition, inflection, links, etc.).",
parents = { "මොඩියුල" },
}
raw_categories["Parameter parsing modules"] = {
description = "Modules containing functions used to parse template parameters.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ මොඩියුල"] = {
preceding = "{{also|:Category:Pronunciation templates}}",
description = "Modules that implement templates used to create the language-specific pronunciation of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other pronunciation modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "උච්චාරණ මොඩියුල", sort = "Testcase"} },
}
raw_categories["උපුටා දැක්වීම් සහ භාවිත නිදර්ශන මොඩියුල"] = {
description = "Modules that implement templates used to format quotations and usage examples.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Reference modules"] = {
preceding = "{{also|:Category:Reference templates}}",
description = "Modules that are used for [[:Category:Reference templates|reference templates]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වැලිපිලි මොඩියුල"] = {
description = "Test versions of modules intended for production use.",
parents = { "මොඩියුල" },
}
raw_categories["Semantic relation modules"] = {
preceding = "{{also|:Category:Semantic relation templates}}",
description = "Modules that implement templates used to indicate other terms semantically related to a " ..
"particular sense, e.g. [[synonym]]s or [[antonym]]s.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["සෝට්කී-ජනක මොඩියුල"] = {
description = "Modules that generate sortkeys, which determine the order of entry names in categories.",
parents = { "මොඩියුල" },
}
raw_categories["String modules"] = {
description = "Modules containing functions used to manipulate strings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["Swadesh modules"] = {
description = "Modules containing [[Swadesh list]]s.",
parents = { "මොඩියුල" },
}
raw_categories["Template interface modules"] = {
description = "Modules whose purpose is to provide an interface between templates and the functions of a module.",
additional = "They are usually named <code>.../templates</code>, and the functions present within them usually all " ..
"have only a \"frame\" parameter.",
parents = { "මොඩියුල" },
}
raw_categories["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other modules.",
parents = { "මොඩියුල" },
}
raw_categories["අසමත්වන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules which contain failures in their unit tests.",
additional = "This category is added automatically by [[Module:UnitTests]] when a test case fails.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල" },
}
raw_categories["නිරීක්ෂණ මොඩියුල"] = {
description = "Modules that add tracking templates.",
parents = { "ඩිබග් මොඩියුල", "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන මොඩියුල"] = {
description = "Modules that automatically convert text in one script to another.",
additional = "Most of them convert non-Latin scripts to Latin (romanisation/romanization), and are used by " ..
"templates or modules to generate transliteration of text that is tagged with a particular language. Each " ..
"language's transliteration module is specified in its data table (for which, see the category {{catlink|Language data modules}}).",
parents = { "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other transliteration modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "අක්ෂර පරිවර්තන මොඩියුල", sort = "Testcase"} },
}
raw_categories["Unused modules"] = {
description = "Unused modules.",
parents = { "මොඩියුල" },
}
raw_categories["User sandbox modules"] = {
description = "Modules that are for personal use and testing by individual editors.",
additional = "These should all begin with <code>User:</code> followed by the user's name. If several " ..
"sandbox modules are needed by a single user, subpages can be created. These modules should not be used in real " ..
"Wiktionary content pages, as all content on those pages should be editable by anyone and, if necessary, edit protected.",
parents = { "Sandbox modules", "මොඩියුල" },
}
raw_categories["උපයෝගිතා මොඩියුල"] = {
description = "Modules that serve some sort of utility purpose in various entries.",
additional = "Avoid categorizing directly into this category, but use one of the more specific (and semantically " ..
"well-defined) module categories. Note also that modules used by multiple languages should go directly in this " ..
"category if necessary, while modules only used by one language should be in [[:ප්රවර්ගය:භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල]].",
parents = { "මොඩියුල" },
}
raw_categories["භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල"] = {
description = "Modules that deal with several utilities needed by a certain language.",
additional = "Usually their names end with {{cd|-utilities}} or {{cd|-common}} (preceded by the language code), " ..
"although more specific utility modules that one language uses may reside here as well. If a utility is used by " ..
"many languages, it should be in [[:Category:Utility modules]].",
parents = {{name = "උපයෝගිතා මොඩියුල", sort = " "}},
}
raw_categories["Vote modules"] = {
description = "Modules used to manage Wiktionary votes.",
parents = { "මොඩියුල" },
}
raw_categories["විකි පෙළ විශ්ලේෂණ මොඩියුල"] = {
description = "Modules that contain functions that grab the wikitext of a page and get information from it by " ..
"performing string operations on it.",
parents = { "මොඩියුල" },
}
-- Don't modify `raw_categories` while processing it, or items may be skipped.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
local by_script = "අක්ෂරක්රමය අනුව " .. raw_cat
if raw_cat ~= "මොඩියුල" and raw_cat ~= "දත්ත මොඩියුල" and not raw_categories[by_script] then
new_cats[by_script] = {
description = raw_cat .. ", categorized by the script they operate on or with.",
additional = raw_cat .. " are " .. mw.getContentLanguage():lcfirst(obj.description),
breadcrumb = "අක්ෂරක්රමය අනුව",
parents = {{name = raw_cat, sort = " "}},
}
end
end
for new_cat, obj in pairs(new_cats) do
raw_categories[new_cat] = obj
end
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
for _, mod_type in ipairs { "ප්රවේශ නාම-ජනක", "සෝට්කී-ජනක", "අක්ෂර පරිවර්තන" } do
table.insert(raw_handlers, function(data)
local languages, count = data.category:match(("^(භාෂා) ([0-9]+) ක් මගින් භාවිතා වන %s මොඩියුල$"):format(
-- need to escape the hyphen in 'Entry name-generating' and 'Sortkey-generating'
require("Module:string utilities").pattern_escape(mod_type)))
if count then
return {
description = data.category .. ".",
breadcrumb = languages .. " " .. count .. " ක් මගින් භාවිතාවන",
parents = {
{ name = mod_type .. " මොඩියුල", sort = count },
},
}
end
end)
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
for key, data in pairs(raw_categories) do
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if raw_categories[parent] then
parent = raw_categories[parent].parents[1]
else
break
end
else
break
end
end
end
end
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
tmyv1rjf3gzlh5eppo4n6wc22hupte5
233622
233621
2026-05-08T16:44:45Z
Lee
19
"Category modules" සිට "ප්රවර්ග මොඩියුල" වෙතට
233622
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local m_sinhala = require("Module:sinhala")
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]], which contain Lua code to create and manage entries.",
umbrella = {
parents = {{name = "මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["දත්ත මොඩියුල"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by other modules.",
umbrella = {
parents = {{name = "දත්ත මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "data",
parents = {"මොඩියුල"},
}
labels["dialect synonyms data modules"] = {
description = "{{{langname}}} [[Wiktionary:Modules|modules]] containing data used by {{tl|dialect synonyms}}.",
umbrella = {
parents = {{name = "Dialect synonyms data modules", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "dialect synonyms",
parents = {"දත්ත මොඩියුල"},
}
labels["වරනැගීම් මොඩියුල"] = {
description = "{{{langname}}} [[inflection]] [[Wiktionary:Modules|modules]], which contain Lua code for generating conjugation and declension tables.",
umbrella = {
parents = {{name = "වරනැගීම් මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "වරනැගීම්",
parents = {"මොඩියුල", {name = "වරනැගීම්-වගු සැකිලි", sort = " "}},
}
labels["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "{{{langname}}} [[testcase]] [[Wiktionary:Modules|modules]], which contain Lua code for testing other modules.",
umbrella = {
parents = {{name = "පිරික්සුම් ආදර්ශක මොඩියුල", sort = " "}},
breadcrumb = "භාෂාව අනුව",
},
breadcrumb = "testcase",
parents = {"මොඩියුල"},
}
local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
--[=[
Correctly defining a new module type here:
1. The breadcrumb generally does not need to be given because there is code at the bottom of this file
to generate the breadcrumb in a smart fashion by chopping off a suffix derived from the parent or any of
its ancestors.
2. Module types can be nested under other module types, but also list them directly under 'Modules' as a
secondary parent. (This violates a principle of non-duplication of categories but makes it much easier to
locate a given module type.)
]=]
raw_categories["මොඩියුල"] = {
description = "This is a general holder category for modules.",
additional = "For more information on what modules are and how they work, see [[Wiktionary:Scribunto]]. For a complete list of all modules, see [[Special:PrefixIndex/Module:|here]].",
parents = {"ප්රවර්ගය:වික්ෂනරිය"},
}
raw_categories["ප්රවර්ගීකරණය නොවූ මොඩියුල"] = {
description = "Uncategorized modules.",
additional = "Modules are placed here by [[Module:documentation]] under certain circumstances. See the documentation of that module for more info.",
parents = { {name = "මොඩියුල", sort = " "} },
}
raw_categories["Appendix modules"] = {
preceding = "{{also|:Category:Appendix templates}}",
description = "Modules with functions that generate content for or extract information from pages in the Appendix namespace.",
parents = { "මොඩියුල" },
}
raw_categories["Bot support modules"] = {
description = "Modules for supporting individual bot accounts.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවර්ග මොඩියුල"] = {
preceding = "{{also|:Category:Categorization templates|:Category:Category templates}}",
description = "Modules for adding categories to pages or generating the description and subcategories of category pages.",
parents = { "මොඩියුල" },
}
raw_categories["Character info මොඩියුල"] = {
preceding = "{{also|:Category:Character info templates}}",
description = "Modules containing information on individual characters, or containing functions generating such information.",
parents = { "මොඩියුල" },
}
raw_categories["Character insertion modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules that implement templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Chemical element data modules"] = {
preceding = "{{also|:Category:Chemistry templates}}",
description = "Modules containing per-language [[chemical element]] name data consumed by {{tl|chemical element box}} and {{tl|chemical element table}}.",
parents = { "දත්ත මොඩියුල" },
}
raw_categories["Collections modules"] = {
description = "Modules containing functions used to implement collections (arrays, maps, etc.).",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["දත්ත මොඩියුල"] = {
description = "Modules that do not contain functions, but only export a table of data that is used by other modules.",
additional = "Modules that are in this category should be imported using <code>mw.loadData</code> rather than <code>require</code>.",
parents = { "මොඩියුල" },
}
raw_categories["Category tree data modules"] = {
preceding = "{{also|:Category:Category tree data modules/lang|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of categories.",
parents = { "දත්ත මොඩියුල", "ප්රවර්ග මොඩියුල" },
}
raw_categories["Category tree data modules/lang"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/topic}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of language-specific categories.",
breadcrumb = "lang",
parents = { {name = "Category tree data modules", sort = "lang"} },
}
raw_categories["Category tree data modules/topic"] = {
preceding = "{{also|:Category:Category tree data modules|:Category:Category tree data modules/lang}}",
description = "[[Wiktionary:Modules|Modules]] containing data and code used by the category tree system for constructing the descriptions of topic categories.",
breadcrumb = "topic",
parents = { {name = "Category tree data modules", sort = "topic"} },
}
raw_categories["Character insertion data modules"] = {
preceding = "{{also|:Category:Character insertion templates}}",
description = "Modules containing data for use by {{temp|chars}}.",
parents = { "දත්ත මොඩියුල", "Character insertion modules" },
}
raw_categories["Dialect synonyms data modules"] = {
description = "Modules containing data for use by {{tl|dialect synonyms}}.",
parents = { "දත්ත මොඩියුල" },
}
raw_categories["Date modules"] = {
description = "Modules that implement functionality to convert or otherwise manipulate dates in various calendar systems.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ඩිබග් මොඩියුල"] = {
description = "Modules used for debugging.",
additional = "Some should only be used in sandbox modules or when using the " ..
"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] button in the edit page of modules and templates.",
parents = { "මොඩියුල" },
}
raw_categories["අර්ථ දැක්වීම් මොඩියුල"] = {
preceding = "{{also|:Category:Definition templates}}",
description = "Modules that implement templates used in [[Wiktionary:Glossary#definition line|definition lines]] of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Deprecated modules"] = {
description = "Modules that should not be used, as their functions are performed by newer modules.",
parents = { "මොඩියුල", "ප්රවර්ගය:වික්ෂනරි නඩත්තු කටයුතු" },
}
raw_categories["සාකච්ඡා මොඩියුල"] = {
preceding = "{{also|:Category:Discussion templates}}",
description = "Modules concerning discussion pages.",
parents = { "මොඩියුල" },
}
raw_categories["Display text-generating modules"] = {
description = "Modules that are used to generate display text.",
additional = "Display text determines what is shown to the reader. In some languages it must be normalized, " ..
"due to common errors caused by confusable characters, or so as to ensure a consistent display format.",
parents = { "මොඩියුල" },
}
raw_categories["උපදෙස් මොඩියුල"] = {
preceding = "{{also|:Category:Documentation templates}}",
description = "උපදෙස් පිටු ජනනය සඳහා භාවිතාවන මොඩියුල.",
parents = { "මොඩියුල" },
}
raw_categories["Encoding modules"] = {
description = "Modules for converting between different textual encodings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["ප්රවේශ-ජනක මොඩියුල"] = {
preceding = "{{also|:Category:Entry templates}}",
description = "Modules with functions that are used to generate new entries.",
parents = { "මොඩියුල" },
}
raw_categories["ප්රවේශ නාම-ජනක මොඩියුල"] = {
description = "Modules that generate entry names, which typically have certain diacritics stripped compared with the form in links and headwords.",
parents = { "මොඩියුල" },
}
raw_categories["External link modules"] = {
preceding = "{{also|:Category:External link templates}}",
description = "Modules that are used in [[:Category:External link templates|external link templates]], i.e. which link to websites outside of the MediaWiki Foundation purview.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නිරුක්ති මොඩියුල"] = {
preceding = "{{also|:Category:Etymology templates}}",
description = "Modules that implement templates that define the etymology of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["රූපාකාර මොඩියුල"] = {
preceding = "{{also|:Category:Form-of templates}}",
description = "Modules that generate the definition line of non-lemma forms, e.g. verb forms and noun forms.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["යොමු වචන පේළි මොඩියුල"] = {
preceding = "{{also|:Category:Headword-line templates}}",
description = "යම් භාෂාවක් සඳහා [[:ප්රවර්ගය:භාෂාව අනුව යොමු වචන පේළි සැකිලි|යොමු වචන පේළි සැකිලි]] සඳහා සහයෝගය දක්වන මොඩියුල.",
additional = "මෙයත් බලන්න: [[:ප්රවර්ගය:යොමු වචන පේළි සැකිලි]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වරනැගීම් මොඩියුල"] = {
description = "Modules used to support [[:Category:Inflection-table templates by language|inflection templates]] for a specific language.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["අභ්යන්තර සබැඳි මොඩියුල"] = {
preceding = "{{also|:Category:Internal link templates}}",
description = "Modules that are used in [[:Category:Internal link templates|internal link templates]], i.e. which link between Wiktionary entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Interwiki modules"] = {
preceding = "{{also|:Category:Interwiki templates}}",
description = "Modules that are used in [[:Category:Interwiki templates|interwiki templates]], i.e. which link to other MediaWiki projects.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["ජේසන්-ජනක මොඩියුල"] = {
description = "Modules with functions that generate data in JSON format.",
parents = { "මොඩියුල" },
}
raw_categories["භාෂා සහ අක්ෂරක්රම මොඩියුල"] = {
description = "Modules that process language and script codes and return data on them.",
parents = { "මොඩියුල" },
}
raw_categories["ලැයිස්තු මොඩියුල"] = {
preceding = "{{also|:Category:List templates}}",
description = "Modules that generate lists, tables or tree diagrams of entries or other structured data.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["නඩත්තු කටයුතු මොඩියුල"] = {
preceding = "{{also|:Category:Maintenance templates}}",
description = "Modules that implement templates used for maintaining entries.",
additional = "Examples are cleanup templates (e.g. {{tl|attention}}), deletion templates (e.g. {{tl|rfd}}) and " ..
"verification templates (e.g. {{tl|rfv}}).",
parents = { "මොඩියුල" },
}
raw_categories["සංඛ්යා මොඩියුල"] = {
preceding = "{{also|:Category:Number templates}}",
description = "Modules that handle conversion and/or formatting of numbers and numerals in various representations.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["පිටු ජනක මොඩියුල"] = {
description = "Modules that generate parts of a mainspace page (e.g. headword line, definition, inflection, links, etc.).",
parents = { "මොඩියුල" },
}
raw_categories["Parameter parsing modules"] = {
description = "Modules containing functions used to parse template parameters.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ මොඩියුල"] = {
preceding = "{{also|:Category:Pronunciation templates}}",
description = "Modules that implement templates used to create the language-specific pronunciation of entries.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["උච්චාරණ පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other pronunciation modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "උච්චාරණ මොඩියුල", sort = "Testcase"} },
}
raw_categories["උපුටා දැක්වීම් සහ භාවිත නිදර්ශන මොඩියුල"] = {
description = "Modules that implement templates used to format quotations and usage examples.",
parents = { "අර්ථ දැක්වීම් මොඩියුල", "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["Reference modules"] = {
preceding = "{{also|:Category:Reference templates}}",
description = "Modules that are used for [[:Category:Reference templates|reference templates]].",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["වැලිපිලි මොඩියුල"] = {
description = "Test versions of modules intended for production use.",
parents = { "මොඩියුල" },
}
raw_categories["Semantic relation modules"] = {
preceding = "{{also|:Category:Semantic relation templates}}",
description = "Modules that implement templates used to indicate other terms semantically related to a " ..
"particular sense, e.g. [[synonym]]s or [[antonym]]s.",
parents = { "පිටු ජනක මොඩියුල", "මොඩියුල" },
}
raw_categories["සෝට්කී-ජනක මොඩියුල"] = {
description = "Modules that generate sortkeys, which determine the order of entry names in categories.",
parents = { "මොඩියුල" },
}
raw_categories["String modules"] = {
description = "Modules containing functions used to manipulate strings.",
parents = { "උපයෝගිතා මොඩියුල", "මොඩියුල" },
}
raw_categories["Swadesh modules"] = {
description = "Modules containing [[Swadesh list]]s.",
parents = { "මොඩියුල" },
}
raw_categories["Template interface modules"] = {
description = "Modules whose purpose is to provide an interface between templates and the functions of a module.",
additional = "They are usually named <code>.../templates</code>, and the functions present within them usually all " ..
"have only a \"frame\" parameter.",
parents = { "මොඩියුල" },
}
raw_categories["පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other modules.",
parents = { "මොඩියුල" },
}
raw_categories["අසමත්වන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules which contain failures in their unit tests.",
additional = "This category is added automatically by [[Module:UnitTests]] when a test case fails.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල" },
}
raw_categories["නිරීක්ෂණ මොඩියුල"] = {
description = "Modules that add tracking templates.",
parents = { "ඩිබග් මොඩියුල", "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන මොඩියුල"] = {
description = "Modules that automatically convert text in one script to another.",
additional = "Most of them convert non-Latin scripts to Latin (romanisation/romanization), and are used by " ..
"templates or modules to generate transliteration of text that is tagged with a particular language. Each " ..
"language's transliteration module is specified in its data table (for which, see the category {{catlink|Language data modules}}).",
parents = { "මොඩියුල" },
}
raw_categories["අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක මොඩියුල"] = {
description = "Modules used to test other transliteration modules.",
parents = { "පිරික්සුම් ආදර්ශක මොඩියුල", {name = "අක්ෂර පරිවර්තන මොඩියුල", sort = "Testcase"} },
}
raw_categories["Unused modules"] = {
description = "Unused modules.",
parents = { "මොඩියුල" },
}
raw_categories["User sandbox modules"] = {
description = "Modules that are for personal use and testing by individual editors.",
additional = "These should all begin with <code>User:</code> followed by the user's name. If several " ..
"sandbox modules are needed by a single user, subpages can be created. These modules should not be used in real " ..
"Wiktionary content pages, as all content on those pages should be editable by anyone and, if necessary, edit protected.",
parents = { "Sandbox modules", "මොඩියුල" },
}
raw_categories["උපයෝගිතා මොඩියුල"] = {
description = "Modules that serve some sort of utility purpose in various entries.",
additional = "Avoid categorizing directly into this category, but use one of the more specific (and semantically " ..
"well-defined) module categories. Note also that modules used by multiple languages should go directly in this " ..
"category if necessary, while modules only used by one language should be in [[:ප්රවර්ගය:භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල]].",
parents = { "මොඩියුල" },
}
raw_categories["භාෂාවක් හා සබැඳි උපයෝගිතා මොඩියුල"] = {
description = "Modules that deal with several utilities needed by a certain language.",
additional = "Usually their names end with {{cd|-utilities}} or {{cd|-common}} (preceded by the language code), " ..
"although more specific utility modules that one language uses may reside here as well. If a utility is used by " ..
"many languages, it should be in [[:Category:Utility modules]].",
parents = {{name = "උපයෝගිතා මොඩියුල", sort = " "}},
}
raw_categories["Vote modules"] = {
description = "Modules used to manage Wiktionary votes.",
parents = { "මොඩියුල" },
}
raw_categories["විකි පෙළ විශ්ලේෂණ මොඩියුල"] = {
description = "Modules that contain functions that grab the wikitext of a page and get information from it by " ..
"performing string operations on it.",
parents = { "මොඩියුල" },
}
-- Don't modify `raw_categories` while processing it, or items may be skipped.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
local by_script = "අක්ෂරක්රමය අනුව " .. raw_cat
if raw_cat ~= "මොඩියුල" and raw_cat ~= "දත්ත මොඩියුල" and not raw_categories[by_script] then
new_cats[by_script] = {
description = raw_cat .. ", categorized by the script they operate on or with.",
additional = raw_cat .. " are " .. mw.getContentLanguage():lcfirst(obj.description),
breadcrumb = "අක්ෂරක්රමය අනුව",
parents = {{name = raw_cat, sort = " "}},
}
end
end
for new_cat, obj in pairs(new_cats) do
raw_categories[new_cat] = obj
end
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
for _, mod_type in ipairs { "ප්රවේශ නාම-ජනක", "සෝට්කී-ජනක", "අක්ෂර පරිවර්තන" } do
table.insert(raw_handlers, function(data)
local languages, count = data.category:match(("^(භාෂා) ([0-9]+) ක් මගින් භාවිතා වන %s මොඩියුල$"):format(
-- need to escape the hyphen in 'Entry name-generating' and 'Sortkey-generating'
require("Module:string utilities").pattern_escape(mod_type)))
if count then
return {
description = data.category .. ".",
breadcrumb = languages .. " " .. count .. " ක් මගින් භාවිතාවන",
parents = {
{ name = mod_type .. " මොඩියුල", sort = count },
},
}
end
end)
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
for key, data in pairs(raw_categories) do
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if raw_categories[parent] then
parent = raw_categories[parent].parents[1]
else
break
end
else
break
end
end
end
end
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
lzt49lmtjoctnclqfirtvofdtgeb92v
Module:category tree/topic
828
6027
233688
230172
2026-05-09T04:10:57Z
Lee
19
[[:ප්රවර්ගය:the Bahamas තුළ භාවිතා වන භාෂා]] සඳහා සහාය
233688
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local raw_handlers = {}
local raw_categories = {}
--[=[
This module implements the topic category subsystem. It is currently implemented with a single raw handler that
handlers both language-specific and umbrella topic categories, and a corresponding handler for thesaurus categories.
The topmost topic category [[:Category:මාතෘකා සියල්ල]] is special and potentially could be handled as a separate raw
category, but currently it's handled as part of the raw topic handler. The topmost thesaurus category
[[:Category:Thesaurus]] is in fact handled as a raw category.
]=]
local functions_module = "Module:fun"
local labels_utilities_module = "Module:labels/utilities"
local languages_module = "Module:languages"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local topic_data_module = "Module:category tree/topic/data"
local topic_utilities_module = "Module:category tree/topic/utilities"
local thesaurus_data_module = "Module:category tree/topic/thesaurus data"
local concat = table.concat
local insert = table.insert
local dump = mw.dumpObject
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local split = require(string_utilities_module).split
local type_data = {
["related-to"] = {
desc = "යෙදුම්, %s හා සබැඳි",
additional = "'''සටහන''': මෙය \"ආශ්රිත\" ප්රවර්ගයකි. මෙහි පැවතිය යුත්තේ " ..
"{{{topic}}} හා ඍජුව සබැඳි යෙදුම් ය. {{{topic}}} හා යාන්තමින් ස්පර්ශ වන යෙදුම් මෙහි ලැයිස්තු ගත නොකරන්න. " ..
"මෙම මාතෘකාවේ වර්ග සහ නිදර්ශන වෙනත් ප්රවර්ගයකට යන බව අමතක නොකරන්න .",
},
set = {
desc = "යෙදුම්, %s වර්ග හෝ නිදර්ශන වන",
additional = "'''සටහන''': මෙය කුලක ප්රවර්ගයකි. මෙය තුළ පැවතිය යුත්තේ {{{topic}}} සඳහා වන යෙදුම් මිස, " ..
"{{{topic}}} හා සබැඳි යෙදුම් නොවේ. සමහර යෙදුම් සඳහා වීශේෂිත වූ ආශ්රිත ප්රවර්ග පැවතිය ද, වඩා පොදු යෙදුම් (උදාහරණ: {{{topic}}} වර්ග) හෝ යම් " ..
"විශේෂිත යෙදුම් (උදාහරණ: යම් නිශ්චිත {{{topic}}} නාම), "..
"මෙය තුළ පැවතිය හැකිය.",
},
name = {
desc = "names of specific %s",
additional = "'''NOTE''': This is a name category. It should contain names of specific {{{topic}}}, not " ..
"merely terms related to {{{topic}}}, and should also not contain general terms for types of {{{topic}}}.",
},
type = {
desc = "terms for types of %s",
additional = "'''NOTE''': This is a type category. It should contain terms for types of {{{topic}}}, not " ..
"merely terms related to {{{topic}}}, and should also not contain names of specific {{{topic}}}.",
},
grouping = {
desc = "categories concerning more specific variants of %s",
additional = "'''NOTE''': This is a grouping category. It should not directly contain any terms, but " ..
"only subcategories. If there are any terms directly in this category, please move them to a subcategory.",
},
toplevel = {
desc = "UNUSED %s", -- all categories of this type hardcode their description
additional = "'''NOTE''': This is a top-level list category. It should not directly contain any terms, but " ..
"only a {{{topic}}}.",
},
}
local function invalid_type(types)
local valid_types = {}
for typ, _ in pairs(type_data) do
insert(valid_types, ("'%s'"):format(typ))
end
error(("Invalid type '%s', should be one or more of %s, comma-separated")
:format(types, mw.text.listToText(valid_types)))
end
local function split_types(types)
types = types or "related-to"
local splitvals = split(types, "%s*,%s*")
for i, typ in ipairs(splitvals) do
-- FIXME: Temporary
if typ == "topic" then
typ = "related-to"
end
if not type_data[typ] then
invalid_type(types)
end
splitvals[i] = typ
end
return splitvals
end
local function gsub_escaping_replacement(str, from, to)
return (str:gsub(pattern_escape(from), replacement_escape(to)))
end
function ucfirst(txt)
local italics, raw_txt = txt:match("^('*)(.-)$")
return italics .. mw.getContentLanguage():ucfirst(raw_txt)
end
function lcfirst(txt)
local italics, raw_txt = txt:match("^('*)(.-)$")
return italics .. mw.getContentLanguage():lcfirst(raw_txt)
end
local function convert_spec_to_string(data, desc)
if not desc then
return desc
end
local desc_type = type(desc)
if desc_type == "string" then
return desc
elseif desc_type == "number" then
return tostring(desc)
elseif not is_callable(desc) then
error("Internal error: `desc` must be a string, number, function, callable table or nil; received a " ..
desc_type)
end
desc = desc {
lang = data.lang,
sc = data.sc,
label = data.label,
category = data.category,
topic_data = data.topdata,
}
if not desc then
return desc
end
desc_type = type(desc)
if desc_type == "string" then
return desc
end
error("Internal error: the value returned by `desc` must be a string or nil; received a " .. desc_type)
end
local function get_and_cache(data, obj, key)
local val = convert_spec_to_string(data, obj[key])
obj[key] = val
return val
end
local function process_default(desc)
local stripped_desc = desc
local no_singularize, wikify, add_the
while true do
local new_stripped_desc = stripped_desc:match("^(.+) no singularize$")
if new_stripped_desc then
no_singularize = true
end
if not new_stripped_desc then
new_stripped_desc = stripped_desc:match("^(.+) wikify$")
if new_stripped_desc then
wikify = true
end
end
if not new_stripped_desc then
new_stripped_desc = stripped_desc:match("^(.+) with the$")
if new_stripped_desc then
add_the = true
end
end
if new_stripped_desc then
stripped_desc = new_stripped_desc
else
break
end
end
if stripped_desc == "default" then
return true, no_singularize, wikify, add_the
else
return false
end
end
local function format_desc(data, desc)
local desc_parts = {}
local types = split_types(data.topdata.type)
for _, typ in ipairs(types) do
insert(desc_parts, (type_data[typ].desc):format(desc))
end
return "{{{langname}}} " .. require(table_module).serialCommaJoin(desc_parts) .. "."
end
local substitute_template_specs
local function format_displaytitle(data, include_lang_prefix, upcase)
local topdata, lang, label = data.topdata, data.lang, data.label
local displaytitle = substitute_template_specs(data, topdata.displaytitle)
if not displaytitle then
return nil
end
if upcase then
displaytitle = ucfirst(displaytitle)
end
if include_lang_prefix and lang then
displaytitle = ("%s:%s"):format(lang:getCode(), displaytitle)
end
return displaytitle
end
local function get_breadcrumb(data)
local topdata, lang, label = data.topdata, data.lang, data.label
local ret
if not lang and topdata.umbrella then
ret = topdata.umbrella.breadcrumb or topdata.umbrella.breadcrumb_and_first_sort_key
end
if not ret then
ret = topdata.breadcrumb or topdata.breadcrumb_and_first_sort_key or
format_displaytitle(data, false, "upcase") or label
end
if type(ret) == "string" or type(ret) == "number" then
ret = {name = ret}
end
local name = substitute_template_specs(data, ret.name)
local nocap = ret.nocap
return {name = name, nocap = nocap}
end
local function make_category_name(lang, label)
if lang then
return lang:getCode() .. ":" .. ucfirst(label)
else
return ucfirst(label)
end
end
local function replace_special_descriptions(data, desc)
if not desc then
return desc
end
if desc:find("^=") then
desc = desc:gsub("^=", "")
return format_desc(data, desc)
end
local is_default, no_singularize, wikify, add_the = process_default(desc)
if is_default then
local linked_label = require(topic_utilities_module).link_label(data.label, no_singularize, wikify)
if add_the then
linked_label = "the " .. linked_label
end
return format_desc(data, linked_label)
else
return desc
end
end
local function get_displaytitle_or_label(data)
return format_displaytitle(data, false) or data.label
end
local function process_default_add_the(data, topic)
local is_default, _, _, add_the = process_default(topic)
if is_default then
topic = get_displaytitle_or_label(data)
if add_the then
topic = "the " .. topic
end
end
return topic, is_default
end
substitute_template_specs = function(data, desc)
desc = convert_spec_to_string(data, desc)
if not desc then
return nil
end
local topdata, lang, label = data.topdata, data.lang, data.label
if desc:find("{{{umbrella_msg}}}") then
local catname = ucfirst(label)
desc = gsub_escaping_replacement(desc, "{{{umbrella_msg}}}",
"මෙම ප්රවර්ගය තුළ ශබ්දකෝෂ යොමු කිසිවක් අන්තර්ගත නොවේ, ඇත්තේ වෙනත් ප්රවර්ග පමණි. මෙහි උප ප්රවර්ග දෙ ආකාරයක වේ:" ..
":\n\n* \"{{{thespref}}}aa:" .. catname ..
"\" ආකාරයේ නාම සහිත උප ප්රවර්ග (භාෂා කේතයක් මුලට යොදා ඇති), යම් භාෂාවකට අදාළ පද දක්වයි. " ..
"සිංහල පද සඳහා, [[:ප්රවර්ගය:{{{thespref}}}si:" .. catname .. "]] ඔබ විශේෂයෙන්ම උනන්දුවක් දැක්වීමට ඉඩ ඇත.\n" ..
"* මෙහි වන භාෂා කේත උපසර්ග රහිත උප ප්රවර්ග, මෙයට සමාන ප්රවර්ග වන මුත්, ඒවා තව දුරටත් වඩා සියුම්ව මාතෘකා වලට බෙදා ඇත" ..
"."
)
end
if desc:find("{{{topic}}}") then
-- Compute the value for {{{topic}}}. If the user specified `topic`, use it. (If we're an umbrella category,
-- allow a separate value for `umbrella.topic`, falling back to `topic`.) Otherwise, see if the description
-- was specified as 'default' or a variant; if so, parse it to determine whether to add "the" to the label.
-- Otherwise, just use the label directly.
local topic = not lang and topdata.umbrella and topdata.umbrella.topic or topdata.topic
if topic then
topic = process_default_add_the(data, topic)
else
local desc
if not lang then
desc = topdata.umbrella and get_and_cache(data, topdata.umbrella, "description") or
get_and_cache(data, topdata, "umbrella_description")
end
desc = desc or get_and_cache(data, topdata, "description")
local defaulted_desc, is_default = process_default_add_the(data, desc)
if is_default then
topic = defaulted_desc
else
topic = get_displaytitle_or_label(data)
end
end
desc = gsub_escaping_replacement(desc, "{{{topic}}}", topic)
end
desc = desc:gsub("{{{thespref}}}", data.thesaurus_data and "Thesaurus:" or "")
return desc
end
local function process_box(data, def_topright_parts, val, pattern)
if not val then
return
end
local defval = ucfirst(data.label)
if type(val) ~= "table" then
val = {val}
end
for _, v in ipairs(val) do
if v == true then
insert(def_topright_parts, pattern:format(defval))
else
insert(def_topright_parts, pattern:format(v))
end
end
end
local function get_topright(data)
local topdata, lang = data.topdata, data.lang
local def_topright_parts = {}
process_box(data, def_topright_parts, topdata.wp, "{{wp|%s}}")
process_box(data, def_topright_parts, topdata.wpcat, "{{wp|cat=%s}}")
process_box(data, def_topright_parts, topdata.commonscat, "{{commonscat|%s}}")
local def_topright
if #def_topright_parts > 0 then
def_topright = concat(def_topright_parts, "\n")
end
if lang then
return substitute_template_specs(data, topdata.topright or def_topright)
else
return topdata.umbrella and substitute_template_specs(data, topdata.umbrella.topright) or
substitute_template_specs(data, def_topright)
end
end
local function remove_lang_params(desc)
desc = desc:gsub("මෙහි දැක්වෙන්නේ, ", "")
desc = desc:gsub("^{{{langname}}} ", "")
desc = desc:gsub("{{{langcode}}}:", "")
desc = desc:gsub("^{{{langcode}}} ", "")
desc = desc:gsub("^{{{langcat}}} ", "")
return desc
end
local function get_additional_msg(data)
local types = split_types(data.topdata.type)
if #types > 1 then
local parts = {"'''NOTE''': This is a mixed category. It may contain terms of any of the following category types:"}
for i, typ in ipairs(types) do
insert(parts, ("* %s {{{topic}}}%s"):format(type_data[typ].desc, i == #types and "." or ";"))
end
insert(parts, "'''WARNING''': Such categories are strongly dispreferred and should be split into separate per-type categories.")
return concat(parts, "\n")
elseif label == "මාතෘකා සියල්ල" then
return "'''NOTE''': This is the topmost topic category for {{{langname}}}. It should not directly contain " ..
"any terms, but only lists of topic categories organized by type."
else
return type_data[types[1]].additional
end
end
local function get_labels_categorizing(data)
local m_labels_utilities = require(labels_utilities_module)
return m_labels_utilities.format_labels_categorizing(
m_labels_utilities.find_labels_for_category(data.label, "topic", data.lang), nil, data.lang)
end
-- Return the description along with the text following and preceding the description. The description and additional
-- (i.e. following) text are returned in the form of closures so the work of calculating the text (which can be
-- expensive, especially in the case of the additional text, where get_labels_categorizing() scans the entire set of
-- labels for any that categorize into this category) is not done when not needed, e.g. in higher levels of the
-- breadcrumb chain, where only the breadcrumb and parents (in fact, really just the first parent) are actually needed.
local function get_description_additional_preceding(data)
local topdata, lang, label = data.topdata, data.lang, data.label
local desc, additional, preceding
-- This is kind of hacky, but it works for now.
local function postprocess_thesaurus(txt)
if not txt then
return nil
end
if not data.thesaurus_data then
return txt
end
txt = txt:gsub(" terms([ .,])", " thesaurus entries%1")
return txt
end
if lang then
desc = function()
return postprocess_thesaurus(substitute_template_specs(data,
replace_special_descriptions(data, get_and_cache(data, topdata, "description"))))
end
preceding = topdata.preceding
additional = function()
local additional_parts = {}
if topdata.additional then
insert(additional_parts, topdata.additional)
end
if not data.thesaurus_data then
insert(additional_parts, get_additional_msg(data))
local labels_msg = get_labels_categorizing(data)
if labels_msg then
insert(additional_parts, labels_msg)
end
end
return postprocess_thesaurus(substitute_template_specs(data, concat(additional_parts, "\n\n")))
end
else
if label == "මාතෘකා සියල්ල" then
desc = "This is the topmost topic category for all languages."
additional = "It contains no dictionary entries, only other categories. The subcategories are of two " ..
"sorts:\n\n" ..
"* Subcategories listed at the beginning, without a prefixed language code, are grouping " ..
"categories similar to this category, but are devoted to general subject areas. Under them are " ..
"finer-grained subject areas.\n" ..
"* Subcategories named like \"aa:මාතෘකා සියල්ල\" (with a prefixed language code) are top-level " ..
"categories like this one, but for specific languages. You may be interested especially in " ..
"[[:Category:en:මාතෘකා සියල්ල]], for English terms.\n" ..
"Note that categories under this tree categorize terms semantically rather than grammatically. " ..
"Grammatical categories (such as all French verbs, or all English irregular plural forms) " ..
"have a different naming structure, with the language name spelled out, such as " ..
"[[:Category:French verbs]] or [[:Category:English irregular plurals]]."
return desc, additional
end
-- Assume that if the description field contains a function, the function will return non-nil, so we don't
-- have to call the function at this point (in case it is heavyweight).
local has_umbrella_desc = topdata.umbrella and topdata.umbrella.description or topdata.umbrella_description
desc = function()
local desc = topdata.umbrella and get_and_cache(data, topdata.umbrella, "description") or
get_and_cache(data, topdata, "umbrella_description")
if not desc then
desc = get_and_cache(data, topdata, "description")
if desc then
desc = replace_special_descriptions(data, desc)
desc = remove_lang_params(desc)
desc = desc:gsub("%.$", "")
desc = "මෙම ප්රවර්ගය මතු දැක්වෙන මාතෘකාව පිළිබඳව ය: " .. desc .. "."
end
end
if not desc then
desc = "Categories concerning " .. label .. " in various specific languages."
end
return postprocess_thesaurus(substitute_template_specs(data, desc))
end
preceding = topdata.umbrella and topdata.umbrella.preceding or not has_umbrella_desc and topdata.preceding
if preceding then
preceding = remove_lang_params(preceding)
end
additional = function()
local additional_parts = {}
local topdata_additional = topdata.umbrella and topdata.umbrella.additional or
not has_umbrella_desc and topdata.additional
if topdata_additional then
insert(additional_parts, remove_lang_params(topdata_additional))
end
insert(additional_parts, "{{{umbrella_msg}}}")
if not data.thesaurus_data then
insert(additional_parts, get_additional_msg(data))
local labels_msg = get_labels_categorizing(data)
if labels_msg then
insert(additional_parts, labels_msg)
end
end
return postprocess_thesaurus(substitute_template_specs(data, concat(additional_parts, "\n\n")))
end
end
preceding = substitute_template_specs(data, preceding)
return desc, additional, preceding
end
local function normalize_sort_key(data, sort, parent_index)
local topdata, lang, label = data.topdata, data.lang, data.label
sort = sort or parent_index == 1 and (not lang and topdata.umbrella and
topdata.umbrella.breadcrumb_and_first_sort_key or topdata.breadcrumb_and_first_sort_key) or nil
if not sort then
-- When defaulting sort key to label, strip 'The ' (e.g. in 'The Matrix', 'The Hunger Games')
-- and 'A ' (e.g. in 'A Song of Ice and Fire', 'A Christmas Carol') from label.
local stripped_sort = label:match("^[Tt]he (.*)$")
if stripped_sort then
sort = stripped_sort
end
if not stripped_sort then
stripped_sort = label:match("^[Aa] (.*)$")
if stripped_sort then
sort = stripped_sort
end
end
if not stripped_sort then
sort = label
end
end
sort = substitute_template_specs(data, sort)
if not lang then
sort = " " .. sort
end
return sort
end
local function get_topic_parents(data)
local topdata, lang, label = data.topdata, data.lang, data.label
local parents = topdata.parents
if not lang and label == "මාතෘකා සියල්ල" then
return {{ name = "මූලධර්ම", sort = "topics" }}
end
if not parents or #parents == 0 then
return nil
end
local ret = {}
for i, parent in ipairs(parents) do
parent = mw.clone(parent)
if type(parent) ~= "table" then
parent = {name = parent}
end
parent.sort = normalize_sort_key(data, parent.sort, i)
if type(parent.name) ~= "string" then
error(("Internal error: parent.name is not a string: parent = %s"):format(dump(parent)))
end
if parent.name:find("^Category:") or parent.nontopic then
-- leave as-is
parent.nontopic = nil
else
parent.name = make_category_name(lang, parent.name)
end
parent.name = substitute_template_specs(data, parent.name)
insert(ret, parent)
end
local function make_list_of_type_parent(typ)
return {
name = make_category_name(lang, ("%s ප්රවර්ග ලැයිස්තුව"):format(m_sinhala.sinhala_adjective(typ))),
sort = (not lang and " " or "") .. label,
}
end
if topdata.type ~= "toplevel" then
local types = split_types(topdata.type)
for _, typ in ipairs(types) do
insert(ret, make_list_of_type_parent(typ))
end
if #types > 1 then
insert(ret, make_list_of_type_parent("mixed"))
end
end
-- Add umbrella category.
if lang then
insert(ret, {
name = make_category_name(nil, label),
sort = lang:getCanonicalName(),
})
end
return ret
end
local function get_thesaurus_parents(data)
local topdata, lang, label = data.topdata, data.lang, data.label
local parent_substitutions = data.thesaurus_data.parent_substitutions
local parents = topdata.parents
if not parents or #parents == 0 then
return nil
end
local ret = {}
for i, parent in ipairs(parents) do
-- Process parent categories as follows:
-- 1. skip non-topic cats and meta-categories that start with "List of"
-- 2. map "en:මාතෘකා සියල්ල" to "English thesaurus entries" (and same for other languages), but map "මාතෘකා සියල්ල" itself to the root "Thesaurus" category
-- 3. check if this parent is to be substituted, if so, substitute it
-- 4. prepend "Thesaurus:" to all other category names
parent = mw.clone(parent)
if type(parent) ~= "table" then
parent = {name = parent}
end
parent.sort = normalize_sort_key(data, parent.sort, i)
if type(parent.name) ~= "string" then
error(("Internal error: parent.name is not a string: parent = %s"):format(dump(parent)))
end
if parent.name:find("^Category:") or parent.nontopic then
-- skip
elseif parent.name == "මාතෘකා සියල්ල" or parent_substitutions[parent.name] == "මාතෘකා සියල්ල" then
if not lang then
insert(ret, {
name = "Thesaurus",
sort = label,
})
else
insert(ret, {
name = "thesaurus entries",
sort = parent.sort,
lang = lang:getCode(),
is_label = true,
})
end
else
parent.name = "Thesaurus:" .. make_category_name(lang, parent_substitutions[parent.name] or parent.name)
parent.name = substitute_template_specs(data, parent.name)
insert(ret, parent)
end
end
-- Add the non-thesaurus version of this category as a parent, unless it is a thesaurus-only category.
if not topdata.thesaurusonly then
insert(ret, { name = make_category_name(lang, label), sort = " " })
end
-- Add umbrella category.
if lang then
insert(ret, {
name = "Thesaurus:" .. make_category_name(nil, label),
sort = lang:getCanonicalName(),
})
end
return ret
end
local function generate_spec(category, lang, upcase_label, thesaurus_data)
local label_data = require(topic_data_module)
local label
-- Convert label to lowercase if possible
local lowercase_label = mw.getContentLanguage():lcfirst(upcase_label)
local uppercase_label = mw.getContentLanguage():ucfirst(upcase_label)
-- Make sure that the label is either uppercase or caseless.
-- FIXME: Will this run into weirdness if this code is used on the Turkish Wiktionary?
-- if lowercase_label ~= uppercase_label and upcase_label ~= uppercase_label then
-- error(("Topic category label '%s' needs to be uppercase in the category name"):format(
-- upcase_label))
-- end
-- Check if the label exists
local labels = label_data["LABELS"]
if labels[lowercase_label] then
label = lowercase_label
else
label = upcase_label
end
local topdata = labels[label]
-- Go through handlers
if not topdata then
for _, handler in ipairs(label_data["HANDLERS"]) do
topdata = handler.handler(label)
if topdata then
topdata.module = handler.module
break
end
end
end
if not topdata then
return nil
end
local data = {
category = category,
lang = lang,
label = label,
topdata = topdata,
thesaurus_data = thesaurus_data,
}
local description, additional, preceding = get_description_additional_preceding(data)
local parents
if thesaurus_data then
parents = get_thesaurus_parents(data)
else
parents = get_topic_parents(data)
end
return {
lang = lang and lang:getCode() or nil,
description = description,
additional = additional,
preceding = preceding,
parents = parents,
breadcrumb = get_breadcrumb(data),
displaytitle = format_displaytitle(data, "include lang prefix", "upcase"),
topright = get_topright(data),
module = topdata.module,
can_be_empty = not lang,
hidden = false,
}
end
-- Handler for `Thesaurus:...` categories.
table.insert(raw_handlers, function(data)
local code, upcase_label = data.category:match("^Thesaurus:(%l[%a-]*%a):(.+)$")
local lang
if code then
lang = require(languages_module).getByCode(code)
if not lang then
mw.log(("Category '%s' looks like a language-specific thesaurus category but unable to match language prefix"):
format(data.category))
return nil
end
else
upcase_label = data.category:match("^Thesaurus:(.+)$")
end
if upcase_label then
local thesaurus_data = require(thesaurus_data_module)
-- substituted category names are not allowed
if thesaurus_data.parent_substitutions[lcfirst(upcase_label)] then
error(("Category is not allowed as a Thesaurus category: %s (see the list of parent substitutions at " ..
"[[Module:category tree/topic/thesaurus]])"):format(data.category))
end
return generate_spec(data.category, lang, upcase_label, thesaurus_data)
end
end)
-- Handler for regular topic categories.
table.insert(raw_handlers, function(data)
local code, upcase_label = data.category:match("^(%l[%a-]*%a):(.+)$")
local lang
if code then
lang = require(languages_module).getByCode(code)
if not lang then
mw.log(("Category '%s' looks like a language-specific topic category but unable to match language prefix"):
format(data.category))
return nil
end
else
upcase_label = data.category
end
return generate_spec(data.category, lang, upcase_label)
end)
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Thesaurus"] = {
description = "Category for entries of the Wiktionary thesaurus, located in a separate namespace.",
additional = [=[
There are '''three ways to browse''' the thesaurus:
* Look under '''[[:Category:Thesaurus entries by language]]''' to get started.
* Use the search box below.
* Browse the thesaurus by topic using the links under "Subcategories" below.
The main project page is [[Wiktionary:Thesaurus]].
{{ws header|<nowiki/>|link=}}]=],
parents = {
"Category:Fundamental",
"Category:Wiktionary projects",
},
}
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
8jq1kdxpl6f2sdll4fa720316d6ypp4
Module:families
828
6157
233724
221289
2026-04-15T18:33:53Z
en>Surjection
0
233724
Scribunto
text/plain
local export = {}
local families_by_name_module = "Module:families/canonical names"
local families_data_module = "Module:families/data"
local json_module = "Module:JSON"
local language_like_module = "Module:language-like"
local languages_module = "Module:languages"
local load_module = "Module:load"
local table_module = "Module:table"
local get_by_code -- Defined below.
local gmatch = string.gmatch
local insert = table.insert
local ipairs = ipairs
local make_object -- Defined below.
local pairs = pairs
local require = require
local setmetatable = setmetatable
local type = type
--[==[
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 category_name_has_suffix(...)
category_name_has_suffix = require(language_like_module).categoryNameHasSuffix
return category_name_has_suffix(...)
end
local function category_name_to_code(...)
category_name_to_code = require(language_like_module).categoryNameToCode
return category_name_to_code(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function keys_to_list(...)
keys_to_list = require(table_module).keysToList
return keys_to_list(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function make_lang_object(...)
make_lang_object = require(languages_module).makeObject
return make_lang_object(...)
end
local function to_json(...)
to_json = require(json_module).toJSON
return to_json(...)
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 families_by_name
local function get_families_by_name()
families_by_name, get_families_by_name = load_data(families_by_name_module), nil
return families_by_name
end
local families_data
local function get_families_data()
families_data, get_families_data = load_data(families_data_module), nil
return families_data
end
local families_suffixes
local function get_families_suffixes()
families_suffixes, get_families_suffixes = {
"languages",
"lects"
}, nil
return families_suffixes
end
local Family = {}
Family.__index = Family
--[==[
Return the family code of the family, e.g. {"ine"} for the Indo-European languages.
]==]
function Family:getCode()
return self._code
end
--[==[
Return the canonical name of the family. This is the name used to represent that language family on Wiktionary,
and is guaranteed to be unique to that family alone. Example: {"Indo-European"} for the Indo-European languages.
]==]
function Family:getCanonicalName()
local name = self._name
if name == nil then
name = self._data[1]
self._name = name
end
return name
end
--[==[
Return the display form of the family. For families, this is usually the same as the value returned by
{getCategoryName("nocap")}, i.e. it reads <code>"<var>name</var> languages"</code> (e.g.
{"Indo-Iranian languages"}). For full and etymology-only languages, this is the same as the canonical name, and
for scripts, it reads <code>"<var>name</var> script"</code> (e.g. {"Arabic script"}). The displayed text used in
{makeCategoryLink()} is always the same as the display form.
]==]
function Family:getDisplayForm()
local name = self._data[1]
if category_name_has_suffix(name, families_suffixes or get_families_suffixes()) then
name = name .. " languages"
end
return name
end
function Family:getAliases()
Family.getAliases = require(language_like_module).getAliases
return self:getAliases()
end
function Family:getVarieties(flatten)
Family.getVarieties = require(language_like_module).getVarieties
return self:getVarieties(flatten)
end
function Family:getOtherNames()
Family.getOtherNames = require(language_like_module).getOtherNames
return self:getOtherNames()
end
function Family:getAllNames()
Family.getAllNames = require(language_like_module).getAllNames
return self:getAllNames()
end
--[==[Returns a table of types as a lookup table (with the types as keys).
The possible types are
* {family}: This object is a family.
* {full}: This object is a "full" family. This includes all families but a couple of etymology-only
families for Old and Middle Iranian languages.
* {etymology-only}: This object is an etymology-only family, similar to etymology-only languages. There
are currently only two such families, for Old Iranian languages and Middle Iranian
languages (which do not represent proper clades and have no proto-languages, hence
cannot be full families).
]==]
function Family:getTypes()
local types = self._types
if types == nil then
types = {family = true}
if self:getFullCode() == self:getCode() then
types.full = true
else
types["etymology-only"] = true
end
local rawtypes = self._data.type
if rawtypes then
for t in gmatch(rawtypes, "[^,]+") do
types[t] = true
end
end
self._types = types
end
return types
end
--[==[Given a list of types as strings, returns true if the family has all of them.]==]
function Family:hasType(...)
Family.hasType = require(language_like_module).hasType
return self:hasType(...)
end
--[==[Returns a {Family} object for the superfamily that the family belongs to.]==]
function Family:getFamily()
if self._familyObject == nil then
local familyCode = self:getFamilyCode()
if familyCode then
self._familyObject = get_by_code(familyCode)
else
self._familyObject = false
end
end
return self._familyObject or nil
end
--[==[Returns the code of the family's superfamily.]==]
function Family:getFamilyCode()
if not self._familyCode then
self._familyCode = self._data[3]
end
return self._familyCode
end
--[==[Returns the canonical name of the family's superfamily.]==]
function Family:getFamilyName()
if self._familyName == nil then
local family = self:getFamily()
if family then
self._familyName = family:getCanonicalName()
else
self._familyName = false
end
end
return self._familyName or nil
end
--[==[Check whether the family belongs to {superfamily} (which can be a family code or object), and returns a boolean. If more than one is given, returns {true} if the family belongs to any of them. A family is '''not''' considered to belong to itself.]==]
function Family:inFamily(...)
for _, superfamily in ipairs{...} do
if type(superfamily) == "table" then
superfamily = superfamily:getCode()
end
local family, code = self:getFamily()
while family do
code = family:getCode()
if code == superfamily then
return true
end
family = family:getFamily()
-- If family is parent to itself, return false.
if family and family:getCode() == code then
return false
end
end
return false
end
end
function Family:getParent()
if self._parentObject == nil then
local parentCode = self:getParentCode()
if parentCode then
self._parentObject = get_lang(parentCode, nil, true, true)
else
self._parentObject = false
end
end
return self._parentObject or nil
end
function Family:getParentCode()
if not self._parentCode then
self._parentCode = self._data.parent
end
return self._parentCode
end
function Family:getParentName()
if self._parentName == nil then
local parent = self:getParent()
if parent then
self._parentName = parent:getCanonicalName()
else
self._parentName = false
end
end
return self._parentName or nil
end
function Family:getParentChain()
if not self._parentChain then
self._parentChain = {}
local parent = self:getParent()
while parent do
insert(self._parentChain, parent)
parent = parent:getParent()
end
end
return self._parentChain
end
function Family:hasParent(...)
--checkObject("family", nil, ...)
for _, other_family in ipairs{...} do
for _, parent in ipairs(self:getParentChain()) do
if type(other_family) == "string" then
if other_family == parent:getCode() then return true end
else
if other_family:getCode() == parent:getCode() then return true end
end
end
end
return false
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding object is returned. If the family is a full family, then it simply returns itself.
]==]
function Family:getFull()
if not self._fullObject then
local fullCode = self:getFullCode()
if fullCode ~= self:getCode() then
self._fullObject = get_lang(fullCode, nil, nil, true)
else
self._fullObject = self
end
end
return self._fullObject
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding code is returned. If the family is a full family, then it simply returns the family code.
]==]
function Family:getFullCode()
return self._fullCode or self:getCode()
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding canonical name is returned. If the family is a full family, then it simply returns the canonical name
of the family.
]==]
function Family:getFullName()
if self._fullName == nil then
local full = self:getFull()
if full then
self._fullName = full:getCanonicalName()
else
self._fullName = false
end
end
return self._fullName or nil
end
--[==[
Return a {Language} object (see [[Module:languages]]) for the proto-language of this family, if one exists.
Otherwise, return {nil}.
]==]
function Family:getProtoLanguage()
if self._protoLanguageObject == nil then
self._protoLanguageObject = get_lang(self._data.protoLanguage or self:getCode() .. "-pro", nil, true) or false
end
return self._protoLanguageObject or nil
end
function Family:getProtoLanguageCode()
if self._protoLanguageCode == nil then
local protoLanguage = self:getProtoLanguage()
self._protoLanguageCode = protoLanguage and protoLanguage:getCode() or false
end
return self._protoLanguageCode or nil
end
function Family:getProtoLanguageName()
if not self._protoLanguageName then
self._protoLanguageName = self:getProtoLanguage():getCanonicalName()
end
return self._protoLanguageName
end
function Family:hasAncestor(...)
-- Go up the family tree until a protolanguage is found.
local family = self
local protolang = family:getProtoLanguage()
while not protolang do
family = family:getFamily()
protolang = family:getProtoLanguage()
-- Return false if the family is its own family, to avoid an infinite loop.
if family:getFamilyCode() == family:getCode() then
return false
end
end
-- If the protolanguage is not in the family, it must therefore be ancestral to it. Check if it is a match.
for _, otherlang in ipairs{...} do
if (
type(otherlang) == "string" and protolang:getCode() == otherlang or
type(otherlang) == "table" and protolang:getCode() == otherlang:getCode()
) and not protolang:inFamily(self) then
return true
end
end
-- If not, check the protolanguage's ancestry.
return protolang:hasAncestor(...)
end
local function fetch_descendants(self, format)
local languages = require("Module:languages/code to canonical name")
local etymology_languages = require("Module:etymology languages/code to canonical name")
local families = require("Module:families/code to canonical name")
local descendants = {}
-- Iterate over all three datasets.
for _, data in ipairs{languages, etymology_languages, families} do
for code in pairs(data) do
local lang = get_lang(code, nil, true, true)
if lang:inFamily(self) then
if format == "object" then
insert(descendants, lang)
elseif format == "code" then
insert(descendants, code)
elseif format == "name" then
insert(descendants, lang:getCanonicalName())
end
end
end
end
return descendants
end
function Family:getDescendants()
if not self._descendantObjects then
self._descendantObjects = fetch_descendants(self, "object")
end
return self._descendantObjects
end
function Family:getDescendantCodes()
if not self._descendantCodes then
self._descendantCodes = fetch_descendants(self, "code")
end
return self._descendantCodes
end
function Family:getDescendantNames()
if not self._descendantNames then
self._descendantNames = fetch_descendants(self, "name")
end
return self._descendantNames
end
function Family:hasDescendant(...)
for _, lang in ipairs{...} do
if type(lang) == "string" then
lang = get_lang(lang, nil, true)
end
if lang:inFamily(self) then
return true
end
end
return false
end
--[==[
Return the name of the main category of that family. Example: {"Germanic languages"} for the Germanic languages,
whose category is at [[:Category:Germanic languages]].
Unless optional argument `nocap` is given, the family name at the beginning of the returned value will be
capitalized. This capitalization is correct for category names, but not if the family name is lowercase and
the returned value of this function is used in the middle of a sentence. (For example, the pseudo-family with
the code {qfa-mix} has the name {"mixed"}, which should remain lowercase when used as part of the category name
[[:Category:Terms derived from mixed languages]] but should be capitalized in [[:Category:Mixed languages]].)
If you are considering using {getCategoryName("nocap")}, use {getDisplayForm()} instead.
]==]
function Family:getCategoryName(nocap)
local name = self._data.categoryName or self:getDisplayForm()
if not nocap then
name = mw.getContentLanguage():ucfirst(name)
end
return name
end
function Family:makeCategoryLink()
return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getDisplayForm() .. "]]"
end
--[==[Returns the Wikidata item id for the family or <code>nil</code>. This corresponds to the the second field in the data modules.]==]
function Family:getWikidataItem()
Family.getWikidataItem = require(language_like_module).getWikidataItem
return self:getWikidataItem()
end
--[==[
Returns the name of the Wikipedia article for the family. `project` specifies the language and project to retrieve
the article from, defaulting to {"enwiki"} for the English Wikipedia. Normally if specified it should be the project
code for a specific-language Wikipedia e.g. "zhwiki" for the Chinese Wikipedia, but it can be any project, including
non-Wikipedia ones. If the project is the English Wikipedia and the property {wikipedia_article} is present in the data
module it will be used first. In all other cases, a sitelink will be generated from {:getWikidataItem} (if set). The
resulting value (or lack of value) is cached so that subsequent calls are fast. If no value could be determined, and
`noCategoryFallback` is {false}, {:getCategoryName} is used as fallback; otherwise, {nil} is returned. Note that if
`noCategoryFallback` is {nil} or omitted, it defaults to {false} if the project is the English Wikipedia, otherwise
to {true}. In other words, under normal circumstances, if the English Wikipedia article couldn't be retrieved, the
return value will fall back to a link to the family's category, but this won't normally happen for any other project.
]==]
function Family:getWikipediaArticle(noCategoryFallback, project)
Family.getWikipediaArticle = require(language_like_module).getWikipediaArticle
return self:getWikipediaArticle(noCategoryFallback, project)
end
function Family:makeWikipediaLink()
return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]"
end
--[==[Returns the name of the Wikimedia Commons category page for the family.]==]
function Family:getCommonsCategory()
Family.getCommonsCategory = require(language_like_module).getCommonsCategory
return self:getCommonsCategory()
end
function Family:toJSON(opts)
local ret = {
canonicalName = self:getCanonicalName(),
categoryName = self:getCategoryName("nocap"),
code = self:getCode(),
parent = self:getParentCode(),
full = self:getFullCode(),
family = self:getFamilyCode(),
protoLanguage = self:getProtoLanguageCode(),
aliases = self:getAliases(),
varieties = self:getVarieties(),
otherNames = self:getOtherNames(),
type = keys_to_list(self:getTypes()),
wikidataItem = self:getWikidataItem(),
wikipediaArticle = self:getWikipediaArticle(true),
}
-- Use `deep_copy` when returning a table, so that there are no editing restrictions imposed by `mw.loadData`.
return opts and opts.lua_table and deep_copy(ret) or to_json(ret, opts)
end
function Family:getData()
return self._data
end
function export.makeObject(code, data)
local data_type = type(data)
if data_type ~= "table" then
error(("bad argument #2 to 'makeObject' (table expected, got %s)"):format(data_type))
end
return setmetatable({_data = data, _code = code, _fullCode = code}, Family)
end
make_object = export.makeObject
--[==[
Finds the family whose code matches the one provided. If it exists, it returns a {Family} object representing the
family. Otherwise, it returns {nil}.]==]
function export.getByCode(code)
local data = (families_data or get_families_data())[code]
if data == nil then
return nil
elseif data.parent == nil then
return make_object(code, data)
end
return make_lang_object(code, data)
end
get_by_code = export.getByCode
--[==[
Look for the family whose canonical name (the name used to represent that family on Wiktionary) matches the one
provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. The
canonical name of families should always be unique (it is an error for two families on Wiktionary to share the same
canonical name), so this is guaranteed to give at most one result.]==]
function export.getByCanonicalName(name)
if name == nil then
return nil
end
local code = (families_by_name or get_families_by_name())[name]
if code == nil then
return nil
end
return get_by_code(code)
end
--[==[
Look for the family whose category name (the name used in categories for that family) matches the one provided.
If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. In almost all cases,
the category name for a family is its canonical name plus the word "languages", e.g. "Indo-European" has the category
name "Indo-European languages". Where a canonical name ends with "languages" or "lects", the category name is identical
to the canonical name.]==]
function export.getByCategoryName(name)
if name == nil then
return nil
end
local code = category_name_to_code(
name,
" languages",
families_by_name or get_families_by_name(),
families_suffixes or get_families_suffixes()
)
if code == nil then
return nil
end
return get_by_code(code)
end
return export
lbb6204ki1w17483059izgsyw1n271z
233725
233724
2026-05-09T04:51:03Z
Lee
19
[[:en:Module:families]] වෙතින් එක් සංශෝධනයක්
233724
Scribunto
text/plain
local export = {}
local families_by_name_module = "Module:families/canonical names"
local families_data_module = "Module:families/data"
local json_module = "Module:JSON"
local language_like_module = "Module:language-like"
local languages_module = "Module:languages"
local load_module = "Module:load"
local table_module = "Module:table"
local get_by_code -- Defined below.
local gmatch = string.gmatch
local insert = table.insert
local ipairs = ipairs
local make_object -- Defined below.
local pairs = pairs
local require = require
local setmetatable = setmetatable
local type = type
--[==[
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 category_name_has_suffix(...)
category_name_has_suffix = require(language_like_module).categoryNameHasSuffix
return category_name_has_suffix(...)
end
local function category_name_to_code(...)
category_name_to_code = require(language_like_module).categoryNameToCode
return category_name_to_code(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function keys_to_list(...)
keys_to_list = require(table_module).keysToList
return keys_to_list(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function make_lang_object(...)
make_lang_object = require(languages_module).makeObject
return make_lang_object(...)
end
local function to_json(...)
to_json = require(json_module).toJSON
return to_json(...)
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 families_by_name
local function get_families_by_name()
families_by_name, get_families_by_name = load_data(families_by_name_module), nil
return families_by_name
end
local families_data
local function get_families_data()
families_data, get_families_data = load_data(families_data_module), nil
return families_data
end
local families_suffixes
local function get_families_suffixes()
families_suffixes, get_families_suffixes = {
"languages",
"lects"
}, nil
return families_suffixes
end
local Family = {}
Family.__index = Family
--[==[
Return the family code of the family, e.g. {"ine"} for the Indo-European languages.
]==]
function Family:getCode()
return self._code
end
--[==[
Return the canonical name of the family. This is the name used to represent that language family on Wiktionary,
and is guaranteed to be unique to that family alone. Example: {"Indo-European"} for the Indo-European languages.
]==]
function Family:getCanonicalName()
local name = self._name
if name == nil then
name = self._data[1]
self._name = name
end
return name
end
--[==[
Return the display form of the family. For families, this is usually the same as the value returned by
{getCategoryName("nocap")}, i.e. it reads <code>"<var>name</var> languages"</code> (e.g.
{"Indo-Iranian languages"}). For full and etymology-only languages, this is the same as the canonical name, and
for scripts, it reads <code>"<var>name</var> script"</code> (e.g. {"Arabic script"}). The displayed text used in
{makeCategoryLink()} is always the same as the display form.
]==]
function Family:getDisplayForm()
local name = self._data[1]
if category_name_has_suffix(name, families_suffixes or get_families_suffixes()) then
name = name .. " languages"
end
return name
end
function Family:getAliases()
Family.getAliases = require(language_like_module).getAliases
return self:getAliases()
end
function Family:getVarieties(flatten)
Family.getVarieties = require(language_like_module).getVarieties
return self:getVarieties(flatten)
end
function Family:getOtherNames()
Family.getOtherNames = require(language_like_module).getOtherNames
return self:getOtherNames()
end
function Family:getAllNames()
Family.getAllNames = require(language_like_module).getAllNames
return self:getAllNames()
end
--[==[Returns a table of types as a lookup table (with the types as keys).
The possible types are
* {family}: This object is a family.
* {full}: This object is a "full" family. This includes all families but a couple of etymology-only
families for Old and Middle Iranian languages.
* {etymology-only}: This object is an etymology-only family, similar to etymology-only languages. There
are currently only two such families, for Old Iranian languages and Middle Iranian
languages (which do not represent proper clades and have no proto-languages, hence
cannot be full families).
]==]
function Family:getTypes()
local types = self._types
if types == nil then
types = {family = true}
if self:getFullCode() == self:getCode() then
types.full = true
else
types["etymology-only"] = true
end
local rawtypes = self._data.type
if rawtypes then
for t in gmatch(rawtypes, "[^,]+") do
types[t] = true
end
end
self._types = types
end
return types
end
--[==[Given a list of types as strings, returns true if the family has all of them.]==]
function Family:hasType(...)
Family.hasType = require(language_like_module).hasType
return self:hasType(...)
end
--[==[Returns a {Family} object for the superfamily that the family belongs to.]==]
function Family:getFamily()
if self._familyObject == nil then
local familyCode = self:getFamilyCode()
if familyCode then
self._familyObject = get_by_code(familyCode)
else
self._familyObject = false
end
end
return self._familyObject or nil
end
--[==[Returns the code of the family's superfamily.]==]
function Family:getFamilyCode()
if not self._familyCode then
self._familyCode = self._data[3]
end
return self._familyCode
end
--[==[Returns the canonical name of the family's superfamily.]==]
function Family:getFamilyName()
if self._familyName == nil then
local family = self:getFamily()
if family then
self._familyName = family:getCanonicalName()
else
self._familyName = false
end
end
return self._familyName or nil
end
--[==[Check whether the family belongs to {superfamily} (which can be a family code or object), and returns a boolean. If more than one is given, returns {true} if the family belongs to any of them. A family is '''not''' considered to belong to itself.]==]
function Family:inFamily(...)
for _, superfamily in ipairs{...} do
if type(superfamily) == "table" then
superfamily = superfamily:getCode()
end
local family, code = self:getFamily()
while family do
code = family:getCode()
if code == superfamily then
return true
end
family = family:getFamily()
-- If family is parent to itself, return false.
if family and family:getCode() == code then
return false
end
end
return false
end
end
function Family:getParent()
if self._parentObject == nil then
local parentCode = self:getParentCode()
if parentCode then
self._parentObject = get_lang(parentCode, nil, true, true)
else
self._parentObject = false
end
end
return self._parentObject or nil
end
function Family:getParentCode()
if not self._parentCode then
self._parentCode = self._data.parent
end
return self._parentCode
end
function Family:getParentName()
if self._parentName == nil then
local parent = self:getParent()
if parent then
self._parentName = parent:getCanonicalName()
else
self._parentName = false
end
end
return self._parentName or nil
end
function Family:getParentChain()
if not self._parentChain then
self._parentChain = {}
local parent = self:getParent()
while parent do
insert(self._parentChain, parent)
parent = parent:getParent()
end
end
return self._parentChain
end
function Family:hasParent(...)
--checkObject("family", nil, ...)
for _, other_family in ipairs{...} do
for _, parent in ipairs(self:getParentChain()) do
if type(other_family) == "string" then
if other_family == parent:getCode() then return true end
else
if other_family:getCode() == parent:getCode() then return true end
end
end
end
return false
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding object is returned. If the family is a full family, then it simply returns itself.
]==]
function Family:getFull()
if not self._fullObject then
local fullCode = self:getFullCode()
if fullCode ~= self:getCode() then
self._fullObject = get_lang(fullCode, nil, nil, true)
else
self._fullObject = self
end
end
return self._fullObject
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding code is returned. If the family is a full family, then it simply returns the family code.
]==]
function Family:getFullCode()
return self._fullCode or self:getCode()
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding canonical name is returned. If the family is a full family, then it simply returns the canonical name
of the family.
]==]
function Family:getFullName()
if self._fullName == nil then
local full = self:getFull()
if full then
self._fullName = full:getCanonicalName()
else
self._fullName = false
end
end
return self._fullName or nil
end
--[==[
Return a {Language} object (see [[Module:languages]]) for the proto-language of this family, if one exists.
Otherwise, return {nil}.
]==]
function Family:getProtoLanguage()
if self._protoLanguageObject == nil then
self._protoLanguageObject = get_lang(self._data.protoLanguage or self:getCode() .. "-pro", nil, true) or false
end
return self._protoLanguageObject or nil
end
function Family:getProtoLanguageCode()
if self._protoLanguageCode == nil then
local protoLanguage = self:getProtoLanguage()
self._protoLanguageCode = protoLanguage and protoLanguage:getCode() or false
end
return self._protoLanguageCode or nil
end
function Family:getProtoLanguageName()
if not self._protoLanguageName then
self._protoLanguageName = self:getProtoLanguage():getCanonicalName()
end
return self._protoLanguageName
end
function Family:hasAncestor(...)
-- Go up the family tree until a protolanguage is found.
local family = self
local protolang = family:getProtoLanguage()
while not protolang do
family = family:getFamily()
protolang = family:getProtoLanguage()
-- Return false if the family is its own family, to avoid an infinite loop.
if family:getFamilyCode() == family:getCode() then
return false
end
end
-- If the protolanguage is not in the family, it must therefore be ancestral to it. Check if it is a match.
for _, otherlang in ipairs{...} do
if (
type(otherlang) == "string" and protolang:getCode() == otherlang or
type(otherlang) == "table" and protolang:getCode() == otherlang:getCode()
) and not protolang:inFamily(self) then
return true
end
end
-- If not, check the protolanguage's ancestry.
return protolang:hasAncestor(...)
end
local function fetch_descendants(self, format)
local languages = require("Module:languages/code to canonical name")
local etymology_languages = require("Module:etymology languages/code to canonical name")
local families = require("Module:families/code to canonical name")
local descendants = {}
-- Iterate over all three datasets.
for _, data in ipairs{languages, etymology_languages, families} do
for code in pairs(data) do
local lang = get_lang(code, nil, true, true)
if lang:inFamily(self) then
if format == "object" then
insert(descendants, lang)
elseif format == "code" then
insert(descendants, code)
elseif format == "name" then
insert(descendants, lang:getCanonicalName())
end
end
end
end
return descendants
end
function Family:getDescendants()
if not self._descendantObjects then
self._descendantObjects = fetch_descendants(self, "object")
end
return self._descendantObjects
end
function Family:getDescendantCodes()
if not self._descendantCodes then
self._descendantCodes = fetch_descendants(self, "code")
end
return self._descendantCodes
end
function Family:getDescendantNames()
if not self._descendantNames then
self._descendantNames = fetch_descendants(self, "name")
end
return self._descendantNames
end
function Family:hasDescendant(...)
for _, lang in ipairs{...} do
if type(lang) == "string" then
lang = get_lang(lang, nil, true)
end
if lang:inFamily(self) then
return true
end
end
return false
end
--[==[
Return the name of the main category of that family. Example: {"Germanic languages"} for the Germanic languages,
whose category is at [[:Category:Germanic languages]].
Unless optional argument `nocap` is given, the family name at the beginning of the returned value will be
capitalized. This capitalization is correct for category names, but not if the family name is lowercase and
the returned value of this function is used in the middle of a sentence. (For example, the pseudo-family with
the code {qfa-mix} has the name {"mixed"}, which should remain lowercase when used as part of the category name
[[:Category:Terms derived from mixed languages]] but should be capitalized in [[:Category:Mixed languages]].)
If you are considering using {getCategoryName("nocap")}, use {getDisplayForm()} instead.
]==]
function Family:getCategoryName(nocap)
local name = self._data.categoryName or self:getDisplayForm()
if not nocap then
name = mw.getContentLanguage():ucfirst(name)
end
return name
end
function Family:makeCategoryLink()
return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getDisplayForm() .. "]]"
end
--[==[Returns the Wikidata item id for the family or <code>nil</code>. This corresponds to the the second field in the data modules.]==]
function Family:getWikidataItem()
Family.getWikidataItem = require(language_like_module).getWikidataItem
return self:getWikidataItem()
end
--[==[
Returns the name of the Wikipedia article for the family. `project` specifies the language and project to retrieve
the article from, defaulting to {"enwiki"} for the English Wikipedia. Normally if specified it should be the project
code for a specific-language Wikipedia e.g. "zhwiki" for the Chinese Wikipedia, but it can be any project, including
non-Wikipedia ones. If the project is the English Wikipedia and the property {wikipedia_article} is present in the data
module it will be used first. In all other cases, a sitelink will be generated from {:getWikidataItem} (if set). The
resulting value (or lack of value) is cached so that subsequent calls are fast. If no value could be determined, and
`noCategoryFallback` is {false}, {:getCategoryName} is used as fallback; otherwise, {nil} is returned. Note that if
`noCategoryFallback` is {nil} or omitted, it defaults to {false} if the project is the English Wikipedia, otherwise
to {true}. In other words, under normal circumstances, if the English Wikipedia article couldn't be retrieved, the
return value will fall back to a link to the family's category, but this won't normally happen for any other project.
]==]
function Family:getWikipediaArticle(noCategoryFallback, project)
Family.getWikipediaArticle = require(language_like_module).getWikipediaArticle
return self:getWikipediaArticle(noCategoryFallback, project)
end
function Family:makeWikipediaLink()
return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]"
end
--[==[Returns the name of the Wikimedia Commons category page for the family.]==]
function Family:getCommonsCategory()
Family.getCommonsCategory = require(language_like_module).getCommonsCategory
return self:getCommonsCategory()
end
function Family:toJSON(opts)
local ret = {
canonicalName = self:getCanonicalName(),
categoryName = self:getCategoryName("nocap"),
code = self:getCode(),
parent = self:getParentCode(),
full = self:getFullCode(),
family = self:getFamilyCode(),
protoLanguage = self:getProtoLanguageCode(),
aliases = self:getAliases(),
varieties = self:getVarieties(),
otherNames = self:getOtherNames(),
type = keys_to_list(self:getTypes()),
wikidataItem = self:getWikidataItem(),
wikipediaArticle = self:getWikipediaArticle(true),
}
-- Use `deep_copy` when returning a table, so that there are no editing restrictions imposed by `mw.loadData`.
return opts and opts.lua_table and deep_copy(ret) or to_json(ret, opts)
end
function Family:getData()
return self._data
end
function export.makeObject(code, data)
local data_type = type(data)
if data_type ~= "table" then
error(("bad argument #2 to 'makeObject' (table expected, got %s)"):format(data_type))
end
return setmetatable({_data = data, _code = code, _fullCode = code}, Family)
end
make_object = export.makeObject
--[==[
Finds the family whose code matches the one provided. If it exists, it returns a {Family} object representing the
family. Otherwise, it returns {nil}.]==]
function export.getByCode(code)
local data = (families_data or get_families_data())[code]
if data == nil then
return nil
elseif data.parent == nil then
return make_object(code, data)
end
return make_lang_object(code, data)
end
get_by_code = export.getByCode
--[==[
Look for the family whose canonical name (the name used to represent that family on Wiktionary) matches the one
provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. The
canonical name of families should always be unique (it is an error for two families on Wiktionary to share the same
canonical name), so this is guaranteed to give at most one result.]==]
function export.getByCanonicalName(name)
if name == nil then
return nil
end
local code = (families_by_name or get_families_by_name())[name]
if code == nil then
return nil
end
return get_by_code(code)
end
--[==[
Look for the family whose category name (the name used in categories for that family) matches the one provided.
If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. In almost all cases,
the category name for a family is its canonical name plus the word "languages", e.g. "Indo-European" has the category
name "Indo-European languages". Where a canonical name ends with "languages" or "lects", the category name is identical
to the canonical name.]==]
function export.getByCategoryName(name)
if name == nil then
return nil
end
local code = category_name_to_code(
name,
" languages",
families_by_name or get_families_by_name(),
families_suffixes or get_families_suffixes()
)
if code == nil then
return nil
end
return get_by_code(code)
end
return export
lbb6204ki1w17483059izgsyw1n271z
233726
233725
2026-05-09T04:52:13Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
233726
Scribunto
text/plain
local export = {}
local families_by_name_module = "Module:families/canonical names"
local families_data_module = "Module:families/data"
local json_module = "Module:JSON"
local language_like_module = "Module:language-like"
local languages_module = "Module:languages"
local load_module = "Module:load"
local table_module = "Module:table"
local get_by_code -- Defined below.
local gmatch = string.gmatch
local insert = table.insert
local ipairs = ipairs
local make_object -- Defined below.
local pairs = pairs
local require = require
local setmetatable = setmetatable
local type = type
--[==[
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 category_name_has_suffix(...)
category_name_has_suffix = require(language_like_module).categoryNameHasSuffix
return category_name_has_suffix(...)
end
local function category_name_to_code(...)
category_name_to_code = require(language_like_module).categoryNameToCode
return category_name_to_code(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function keys_to_list(...)
keys_to_list = require(table_module).keysToList
return keys_to_list(...)
end
local function load_data(...)
load_data = require(load_module).load_data
return load_data(...)
end
local function make_lang_object(...)
make_lang_object = require(languages_module).makeObject
return make_lang_object(...)
end
local function to_json(...)
to_json = require(json_module).toJSON
return to_json(...)
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 families_by_name
local function get_families_by_name()
families_by_name, get_families_by_name = load_data(families_by_name_module), nil
return families_by_name
end
local families_data
local function get_families_data()
families_data, get_families_data = load_data(families_data_module), nil
return families_data
end
local families_suffixes
local function get_families_suffixes()
families_suffixes, get_families_suffixes = {
"භාෂා",
"lects"
}, nil
return families_suffixes
end
local Family = {}
Family.__index = Family
--[==[
Return the family code of the family, e.g. {"ine"} for the Indo-European languages.
]==]
function Family:getCode()
return self._code
end
--[==[
Return the canonical name of the family. This is the name used to represent that language family on Wiktionary,
and is guaranteed to be unique to that family alone. Example: {"Indo-European"} for the Indo-European languages.
]==]
function Family:getCanonicalName()
local name = self._name
if name == nil then
name = self._data[1]
self._name = name
end
return name
end
--[==[
Return the display form of the family. For families, this is usually the same as the value returned by
{getCategoryName("nocap")}, i.e. it reads <code>"<var>name</var> languages"</code> (e.g.
{"Indo-Iranian languages"}). For full and etymology-only languages, this is the same as the canonical name, and
for scripts, it reads <code>"<var>name</var> script"</code> (e.g. {"Arabic script"}). The displayed text used in
{makeCategoryLink()} is always the same as the display form.
]==]
function Family:getDisplayForm()
local name = self._data[1]
if category_name_has_suffix(name, families_suffixes or get_families_suffixes()) then
name = name .. " භාෂා"
end
return name
end
function Family:getAliases()
Family.getAliases = require(language_like_module).getAliases
return self:getAliases()
end
function Family:getVarieties(flatten)
Family.getVarieties = require(language_like_module).getVarieties
return self:getVarieties(flatten)
end
function Family:getOtherNames()
Family.getOtherNames = require(language_like_module).getOtherNames
return self:getOtherNames()
end
function Family:getAllNames()
Family.getAllNames = require(language_like_module).getAllNames
return self:getAllNames()
end
--[==[Returns a table of types as a lookup table (with the types as keys).
The possible types are
* {family}: This object is a family.
* {full}: This object is a "full" family. This includes all families but a couple of etymology-only
families for Old and Middle Iranian languages.
* {etymology-only}: This object is an etymology-only family, similar to etymology-only languages. There
are currently only two such families, for Old Iranian languages and Middle Iranian
languages (which do not represent proper clades and have no proto-languages, hence
cannot be full families).
]==]
function Family:getTypes()
local types = self._types
if types == nil then
types = {family = true}
if self:getFullCode() == self:getCode() then
types.full = true
else
types["etymology-only"] = true
end
local rawtypes = self._data.type
if rawtypes then
for t in gmatch(rawtypes, "[^,]+") do
types[t] = true
end
end
self._types = types
end
return types
end
--[==[Given a list of types as strings, returns true if the family has all of them.]==]
function Family:hasType(...)
Family.hasType = require(language_like_module).hasType
return self:hasType(...)
end
--[==[Returns a {Family} object for the superfamily that the family belongs to.]==]
function Family:getFamily()
if self._familyObject == nil then
local familyCode = self:getFamilyCode()
if familyCode then
self._familyObject = get_by_code(familyCode)
else
self._familyObject = false
end
end
return self._familyObject or nil
end
--[==[Returns the code of the family's superfamily.]==]
function Family:getFamilyCode()
if not self._familyCode then
self._familyCode = self._data[3]
end
return self._familyCode
end
--[==[Returns the canonical name of the family's superfamily.]==]
function Family:getFamilyName()
if self._familyName == nil then
local family = self:getFamily()
if family then
self._familyName = family:getCanonicalName()
else
self._familyName = false
end
end
return self._familyName or nil
end
--[==[Check whether the family belongs to {superfamily} (which can be a family code or object), and returns a boolean. If more than one is given, returns {true} if the family belongs to any of them. A family is '''not''' considered to belong to itself.]==]
function Family:inFamily(...)
for _, superfamily in ipairs{...} do
if type(superfamily) == "table" then
superfamily = superfamily:getCode()
end
local family, code = self:getFamily()
while family do
code = family:getCode()
if code == superfamily then
return true
end
family = family:getFamily()
-- If family is parent to itself, return false.
if family and family:getCode() == code then
return false
end
end
return false
end
end
function Family:getParent()
if self._parentObject == nil then
local parentCode = self:getParentCode()
if parentCode then
self._parentObject = get_lang(parentCode, nil, true, true)
else
self._parentObject = false
end
end
return self._parentObject or nil
end
function Family:getParentCode()
if not self._parentCode then
self._parentCode = self._data.parent
end
return self._parentCode
end
function Family:getParentName()
if self._parentName == nil then
local parent = self:getParent()
if parent then
self._parentName = parent:getCanonicalName()
else
self._parentName = false
end
end
return self._parentName or nil
end
function Family:getParentChain()
if not self._parentChain then
self._parentChain = {}
local parent = self:getParent()
while parent do
insert(self._parentChain, parent)
parent = parent:getParent()
end
end
return self._parentChain
end
function Family:hasParent(...)
--checkObject("family", nil, ...)
for _, other_family in ipairs{...} do
for _, parent in ipairs(self:getParentChain()) do
if type(other_family) == "string" then
if other_family == parent:getCode() then return true end
else
if other_family:getCode() == parent:getCode() then return true end
end
end
end
return false
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding object is returned. If the family is a full family, then it simply returns itself.
]==]
function Family:getFull()
if not self._fullObject then
local fullCode = self:getFullCode()
if fullCode ~= self:getCode() then
self._fullObject = get_lang(fullCode, nil, nil, true)
else
self._fullObject = self
end
end
return self._fullObject
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding code is returned. If the family is a full family, then it simply returns the family code.
]==]
function Family:getFullCode()
return self._fullCode or self:getCode()
end
--[==[
If the family is etymology-only, this iterates through its parents until a full family is found, and the
corresponding canonical name is returned. If the family is a full family, then it simply returns the canonical name
of the family.
]==]
function Family:getFullName()
if self._fullName == nil then
local full = self:getFull()
if full then
self._fullName = full:getCanonicalName()
else
self._fullName = false
end
end
return self._fullName or nil
end
--[==[
Return a {Language} object (see [[Module:languages]]) for the proto-language of this family, if one exists.
Otherwise, return {nil}.
]==]
function Family:getProtoLanguage()
if self._protoLanguageObject == nil then
self._protoLanguageObject = get_lang(self._data.protoLanguage or self:getCode() .. "-pro", nil, true) or false
end
return self._protoLanguageObject or nil
end
function Family:getProtoLanguageCode()
if self._protoLanguageCode == nil then
local protoLanguage = self:getProtoLanguage()
self._protoLanguageCode = protoLanguage and protoLanguage:getCode() or false
end
return self._protoLanguageCode or nil
end
function Family:getProtoLanguageName()
if not self._protoLanguageName then
self._protoLanguageName = self:getProtoLanguage():getCanonicalName()
end
return self._protoLanguageName
end
function Family:hasAncestor(...)
-- Go up the family tree until a protolanguage is found.
local family = self
local protolang = family:getProtoLanguage()
while not protolang do
family = family:getFamily()
protolang = family:getProtoLanguage()
-- Return false if the family is its own family, to avoid an infinite loop.
if family:getFamilyCode() == family:getCode() then
return false
end
end
-- If the protolanguage is not in the family, it must therefore be ancestral to it. Check if it is a match.
for _, otherlang in ipairs{...} do
if (
type(otherlang) == "string" and protolang:getCode() == otherlang or
type(otherlang) == "table" and protolang:getCode() == otherlang:getCode()
) and not protolang:inFamily(self) then
return true
end
end
-- If not, check the protolanguage's ancestry.
return protolang:hasAncestor(...)
end
local function fetch_descendants(self, format)
local languages = require("Module:languages/code to canonical name")
local etymology_languages = require("Module:etymology languages/code to canonical name")
local families = require("Module:families/code to canonical name")
local descendants = {}
-- Iterate over all three datasets.
for _, data in ipairs{languages, etymology_languages, families} do
for code in pairs(data) do
local lang = get_lang(code, nil, true, true)
if lang:inFamily(self) then
if format == "object" then
insert(descendants, lang)
elseif format == "code" then
insert(descendants, code)
elseif format == "name" then
insert(descendants, lang:getCanonicalName())
end
end
end
end
return descendants
end
function Family:getDescendants()
if not self._descendantObjects then
self._descendantObjects = fetch_descendants(self, "object")
end
return self._descendantObjects
end
function Family:getDescendantCodes()
if not self._descendantCodes then
self._descendantCodes = fetch_descendants(self, "code")
end
return self._descendantCodes
end
function Family:getDescendantNames()
if not self._descendantNames then
self._descendantNames = fetch_descendants(self, "name")
end
return self._descendantNames
end
function Family:hasDescendant(...)
for _, lang in ipairs{...} do
if type(lang) == "string" then
lang = get_lang(lang, nil, true)
end
if lang:inFamily(self) then
return true
end
end
return false
end
--[==[
Return the name of the main category of that family. Example: {"Germanic languages"} for the Germanic languages,
whose category is at [[:Category:Germanic languages]].
Unless optional argument `nocap` is given, the family name at the beginning of the returned value will be
capitalized. This capitalization is correct for category names, but not if the family name is lowercase and
the returned value of this function is used in the middle of a sentence. (For example, the pseudo-family with
the code {qfa-mix} has the name {"mixed"}, which should remain lowercase when used as part of the category name
[[:Category:Terms derived from mixed languages]] but should be capitalized in [[:Category:Mixed languages]].)
If you are considering using {getCategoryName("nocap")}, use {getDisplayForm()} instead.
]==]
function Family:getCategoryName(nocap)
local name = self._data.categoryName or self:getDisplayForm()
if not nocap then
name = mw.getContentLanguage():ucfirst(name)
end
return name
end
function Family:makeCategoryLink()
return "[[:ප්රවර්ගය:" .. self:getCategoryName() .. "|" .. self:getDisplayForm() .. "]]"
end
--[==[Returns the Wikidata item id for the family or <code>nil</code>. This corresponds to the the second field in the data modules.]==]
function Family:getWikidataItem()
Family.getWikidataItem = require(language_like_module).getWikidataItem
return self:getWikidataItem()
end
--[==[
Returns the name of the Wikipedia article for the family. `project` specifies the language and project to retrieve
the article from, defaulting to {"enwiki"} for the English Wikipedia. Normally if specified it should be the project
code for a specific-language Wikipedia e.g. "zhwiki" for the Chinese Wikipedia, but it can be any project, including
non-Wikipedia ones. If the project is the English Wikipedia and the property {wikipedia_article} is present in the data
module it will be used first. In all other cases, a sitelink will be generated from {:getWikidataItem} (if set). The
resulting value (or lack of value) is cached so that subsequent calls are fast. If no value could be determined, and
`noCategoryFallback` is {false}, {:getCategoryName} is used as fallback; otherwise, {nil} is returned. Note that if
`noCategoryFallback` is {nil} or omitted, it defaults to {false} if the project is the English Wikipedia, otherwise
to {true}. In other words, under normal circumstances, if the English Wikipedia article couldn't be retrieved, the
return value will fall back to a link to the family's category, but this won't normally happen for any other project.
]==]
function Family:getWikipediaArticle(noCategoryFallback, project)
Family.getWikipediaArticle = require(language_like_module).getWikipediaArticle
return self:getWikipediaArticle(noCategoryFallback, project)
end
function Family:makeWikipediaLink()
return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]"
end
--[==[Returns the name of the Wikimedia Commons category page for the family.]==]
function Family:getCommonsCategory()
Family.getCommonsCategory = require(language_like_module).getCommonsCategory
return self:getCommonsCategory()
end
function Family:toJSON(opts)
local ret = {
canonicalName = self:getCanonicalName(),
categoryName = self:getCategoryName("nocap"),
code = self:getCode(),
parent = self:getParentCode(),
full = self:getFullCode(),
family = self:getFamilyCode(),
protoLanguage = self:getProtoLanguageCode(),
aliases = self:getAliases(),
varieties = self:getVarieties(),
otherNames = self:getOtherNames(),
type = keys_to_list(self:getTypes()),
wikidataItem = self:getWikidataItem(),
wikipediaArticle = self:getWikipediaArticle(true),
}
-- Use `deep_copy` when returning a table, so that there are no editing restrictions imposed by `mw.loadData`.
return opts and opts.lua_table and deep_copy(ret) or to_json(ret, opts)
end
function Family:getData()
return self._data
end
function export.makeObject(code, data)
local data_type = type(data)
if data_type ~= "table" then
error(("bad argument #2 to 'makeObject' (table expected, got %s)"):format(data_type))
end
return setmetatable({_data = data, _code = code, _fullCode = code}, Family)
end
make_object = export.makeObject
--[==[
Finds the family whose code matches the one provided. If it exists, it returns a {Family} object representing the
family. Otherwise, it returns {nil}.]==]
function export.getByCode(code)
local data = (families_data or get_families_data())[code]
if data == nil then
return nil
elseif data.parent == nil then
return make_object(code, data)
end
return make_lang_object(code, data)
end
get_by_code = export.getByCode
--[==[
Look for the family whose canonical name (the name used to represent that family on Wiktionary) matches the one
provided. If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. The
canonical name of families should always be unique (it is an error for two families on Wiktionary to share the same
canonical name), so this is guaranteed to give at most one result.]==]
function export.getByCanonicalName(name)
if name == nil then
return nil
end
local code = (families_by_name or get_families_by_name())[name]
if code == nil then
return nil
end
return get_by_code(code)
end
--[==[
Look for the family whose category name (the name used in categories for that family) matches the one provided.
If it exists, it returns a {Family} object representing the family. Otherwise, it returns {nil}. In almost all cases,
the category name for a family is its canonical name plus the word "languages", e.g. "Indo-European" has the category
name "Indo-European languages". Where a canonical name ends with "languages" or "lects", the category name is identical
to the canonical name.]==]
function export.getByCategoryName(name)
if name == nil then
return nil
end
local code = category_name_to_code(
name,
" භාෂා",
families_by_name or get_families_by_name(),
families_suffixes or get_families_suffixes()
)
if code == nil then
return nil
end
return get_by_code(code)
end
return export
0zwmbc121z38ngp3uamf9htf48gf05j
Module:families/data
828
6238
233727
231360
2026-04-15T18:29:42Z
en>Surjection
0
233727
Scribunto
text/plain
--[=[
This module contains definitions for all language family codes on Wiktionary.
]=]--
local m = {}
m["aav"] = {
"Austroasiatic",
33199,
aliases = {"Austro-Asiatic"},
}
m["aav-khs"] = {
"Khasian",
3073734,
"aav",
aliases = {"Khasic"},
}
m["aav-nic"] = {
"Nicobarese",
217380,
"aav",
}
m["aav-pkl"] = {
"Pnar-Khasi-Lyngngam",
nil,
"aav-khs",
}
m["afa"] = {
"Afroasiatic",
25268,
aliases = {"Afro-Asiatic"},
}
m["alg"] = {
"Algonquian",
33392,
"aql",
}
m["alg-abp"] = {
"Abenaki-Penobscot",
197936,
"alg-eas",
}
m["alg-ara"] = {
"Arapahoan",
2153686,
"alg",
}
m["alg-eas"] = {
"Eastern Algonquian",
2257525,
"alg",
}
m["alg-sfk"] = {
"Sac-Fox-Kickapoo",
1440172,
"alg",
}
m["alv"] = {
"Atlantic-Congo",
771124,
"nic",
}
m["alv-aah"] = {
"Ayere-Ahan",
750953,
"alv-von",
}
m["alv-ada"] = {
"Adamawa",
32906,
"alv-sav",
}
m["alv-bag"] = {
"Baga",
2746083,
"alv-mel",
}
m["alv-bak"] = {
"Bak",
1708174,
"alv-sng",
}
m["alv-bam"] = {
"Bambukic",
4853456,
"alv-ada",
aliases = {"Yungur-Jen"},
}
m["alv-bny"] = {
"Banyum",
2892477,
"alv-nyn",
}
m["alv-bua"] = {
"Bua",
4982094,
"alv-mbd",
}
m["alv-bwj"] = {
"Bikwin-Jen",
84542501,
"alv-bam",
}
m["alv-cng"] = {
"Cangin",
1033184,
"alv-fwo",
}
m["alv-ctn"] = {
"Central Tano",
1658486,
"alv-ptn",
aliases = {"Akan"},
}
m["alv-dlt"] = {
"Delta Edoid",
nil,
"alv-edo",
}
m["alv-dur"] = {
"Duru",
5316788,
"alv-lni",
}
m["alv-ede"] = {
"Ede",
35368,
"alv-yor",
}
m["alv-edk"] = {
"Edekiri",
5336735,
"alv-yrd",
}
m["alv-edo"] = {
"Edoid",
1287469,
"alv-von",
}
m["alv-eeo"] = {
"Edo-Esan-Ora",
12630439,
"alv-nce",
}
m["alv-fli"] = {
"Fali",
3450166,
"alv",
}
m["alv-fwo"] = {
"Fula-Wolof",
12631267,
"alv-sng",
}
m["alv-gbe"] = {
"Gbe",
668284,
"alv-von",
}
m["alv-gda"] = {
"Ga-Dangme",
3443338,
"alv-kwa",
}
m["alv-gng"] = {
"Guang",
684009,
"alv-ptn",
}
m["alv-gtm"] = {
"Ghana-Togo Mountain",
493020,
"alv-kwa",
aliases = {"Togo Remnant", "Central Togo"},
}
m["alv-hei"] = {
"Heiban",
108752116,
"alv-the",
}
m["alv-ido"] = {
"Idomoid",
974196,
"alv-von",
}
m["alv-igb"] = {
"Igboid",
1429100,
"alv-von",
}
m["alv-jfe"] = {
"Jola-Felupe",
1708174,
"alv-jol",
aliases = {"Ejamat"},
}
m["alv-jol"] = {
"Jola",
35176,
"alv-bak",
aliases = {"Diola"},
}
m["alv-kim"] = {
"Kim",
6409701,
"alv-mbd",
}
m["alv-kis"] = {
"Kissi",
35696,
"alv-mel",
}
m["alv-krb"] = {
"Karaboro",
4213541,
"alv-snf",
}
m["alv-ktg"] = {
"Ka-Togo",
5972796,
"alv-gtm",
}
m["alv-kul"] = {
"Kulango",
16977424,
"alv-sav",
aliases = {"Kulango-Lorhon", "Kulango-Lorom"},
}
m["alv-kwa"] = {
"Kwa",
33430,
"nic-vco",
}
m["alv-lag"] = {
"Lagoon",
111210042,
"alv-kwa",
}
m["alv-lek"] = {
"Leko",
6520642,
other_names = {"Sambaic"}, -- appears to be an alias in Glottolog
"alv-lni",
}
m["alv-lim"] = {
"Limba",
35825,
"alv",
}
m["alv-lni"] = {
"Leko-Nimbari",
1708170,
"alv-ada",
other_names = {"Central Adamawa"},
aliases = {"Chamba-Mumuye"},
}
m["alv-mbd"] = {
"Mbum-Day",
6799816,
"alv-ada",
}
m["alv-mbm"] = {
"Mbum",
6799814,
"alv-mbd",
}
m["alv-mel"] = {
"Mel",
12122355,
"alv",
}
m["alv-mum"] = {
"Mumuye",
84607009,
"alv-mye",
}
m["alv-mye"] = {
"Mumuye-Yendang",
6935539,
"alv-lni",
}
m["alv-nal"] = {
"Nalu",
nil,
"alv-sng",
}
m["alv-nce"] = {
"North-Central Edoid",
16110869,
"alv-edo",
}
m["alv-ngb"] = {
"Nupe-Gbagyi",
12638649,
"alv-nup",
aliases = {"Nupe-Gbari"},
}
m["alv-ntg"] = {
"Na-Togo",
nil,
"alv-gtm",
}
m["alv-nup"] = {
"Nupoid",
1429143,
"alv-von",
}
m["alv-nwd"] = {
"Northwestern Edoid",
16111012,
"alv-edo",
}
m["alv-nyn"] = {
"Nyun",
nil,
"alv-fwo",
}
m["alv-pap"] = {
"Papel",
7132562,
"alv-bak",
}
m["alv-pph"] = {
"Phla-Pherá",
3849625,
"alv-gbe",
}
m["alv-ptn"] = {
"Potou-Tano",
1475003,
"alv-kwa",
}
m["alv-sav"] = {
"Savanna",
4403672,
"nic-vco",
aliases = {"Savannas"},
}
m["alv-sma"] = {
"Supyire-Mamara",
4446348,
"alv-snf",
aliases = {"Suppire-Mamara"},
}
m["alv-snf"] = {
"Senufo",
33795,
"alv",
aliases = {"Senufic", "Senoufo", "Sénoufo"},
}
m["alv-sng"] = {
"Senegambian",
1708753,
"alv",
}
m["alv-snr"] = {
"Senari",
4416084,
"alv-snf",
}
m["alv-swd"] = {
"Southwestern Edoid",
12633903,
"alv-edo",
}
m["alv-tal"] = {
"Talodi",
12643302,
"alv-the",
}
m["alv-tdj"] = {
"Tagwana-Djimini",
7675362,
"alv-snf",
}
m["alv-ten"] = {
"Tenda",
3217535,
"alv-fwo",
}
m["alv-the"] = {
"Talodi-Heiban",
1521145,
"alv",
}
m["alv-von"] = {
"Volta-Niger",
34177,
"nic-vco",
}
m["alv-wan"] = {
"Wara-Natyoro",
7968830,
"alv-sav",
}
m["alv-wjk"] = {
"Waja-Kam",
nil,
"alv-ada",
}
m["alv-yek"] = {
"Yekhee",
nil,
"alv-nce",
}
m["alv-yor"] = {
"Yoruba",
nil,
"alv-edk",
}
m["alv-yrd"] = {
"Yoruboid",
1789745,
"alv-von",
}
m["alv-yun"] = {
"Yungur",
84601642,
"alv-bam",
aliases = {"Bena-Mboi"},
}
m["apa"] = {
"Apachean",
27758,
"ath",
aliases = {"Southern Athabaskan"},
}
m["aqa"] = {
"Alacalufan",
1288430,
}
m["aql"] = {
"Algic",
721612,
aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"},
}
m["art"] = {
"constructed",
33215,
"qfa-not",
aliases = {"artificial", "planned"},
}
m["ath"] = {
"Athabaskan",
27475,
"xnd",
}
m["ath-nor"] = {
"North Athabaskan",
20738,
"ath",
aliases = {"Northern Athabaskan"},
}
m["ath-pco"] = {
"Pacific Coast Athabaskan",
20654,
"ath",
}
m["auf"] = {
"Arauan",
626772,
aliases = {"Arahuan", "Arauán", "Arawa", "Arawan", "Arawán"},
}
--[=[
Exceptional language and family codes for Australian Aboriginal languages
can use the prefix "aus-", though "aus" is no longer itself a family code.
]=]--
m["aus-arn"] = {
"Arnhem",
2581700,
aliases = {"Gunwinyguan", "Macro-Gunwinyguan"},
}
m["aus-bub"] = {
"Bunuban",
2495148,
aliases = {"Bunaban"},
}
m["aus-cww"] = {
"Central New South Wales",
5061507,
"aus-pam",
}
m["aus-dal"] = {
"Daly",
2478079,
}
m["aus-dyb"] = {
"Dyirbalic",
1850666,
"aus-pam",
}
m["aus-gar"] = {
"Garawan",
5521951,
}
m["aus-gun"] = {
"Gunwinyguan",
2581700,
"aus-arn",
aliases = {"Gunwingguan"},
}
m["aus-jar"] = {
"Jarrakan",
2039423,
}
m["aus-kar"] = {
"Karnic",
4215578,
"aus-pam",
}
m["aus-mir"] = {
"Mirndi",
4294095,
}
m["aus-nga"] = {
"Ngayarda",
16153490,
"aus-psw",
}
m["aus-nyu"] = {
"Nyulnyulan",
2039408,
}
m["aus-pam"] = {
"Pama-Nyungan",
33942,
}
m["aus-pmn"] = {
"Paman",
2640654,
"aus-pam",
}
m["aus-psw"] = {
"Southwest Pama-Nyungan",
2258160,
"aus-pam",
}
m["aus-rnd"] = {
"Arandic",
4784071,
"aus-pam",
}
m["aus-tnk"] = {
"Tangkic",
1823065,
}
m["aus-wdj"] = {
"Iwaidjan",
4196968,
aliases = {"Yiwaidjan"},
}
m["aus-wor"] = {
"Worrorran",
2038619,
}
m["aus-yid"] = {
"Yidinyic",
4205849,
"aus-pam",
}
m["aus-yng"] = {
"Yangmanic",
42727644,
}
m["aus-yol"] = {
"Yolngu",
2511254,
"aus-pam",
aliases = {"Yolŋu", "Yolngu Matha"},
}
m["aus-yuk"] = {
"Yuin-Kuric",
3833021,
"aus-pam",
}
m["awd"] = {
"Arawak",
626753,
aliases = {"Arawakan", "Maipurean", "Maipuran"},
}
m["awd-nwk"] = {
"Nawiki",
nil,
"awd",
aliases = {"Newiki"},
}
m["awd-taa"] = {
"Ta-Arawak",
7672731,
"awd",
aliases = {"Ta-Arawakan", "Ta-Maipurean"},
}
m["azc"] = {
"Uto-Aztecan",
34073,
aliases = {"Uto-Aztekan"},
}
m["azc-cup"] = {
"Cupan",
19866871,
"azc-tak",
}
m["azc-dur"] = {
"Durango Nahuatl",
2386361,
"azc-nah",
aliases = {"Mexicanero"}
}
m["azc-hua"] = {
"Huasteca Nahuatl",
3832950,
"azc-nah",
}
m["azc-nah"] = {
"Nahuan",
11965602,
"azc",
aliases = {"Aztecan"},
}
m["azc-num"] = {
"Numic",
2657541,
"azc",
}
m["azc-pim"] = {
"Piman",
7194600,
"azc",
aliases = {"Tepiman"},
}
m["azc-tak"] = {
"Takic",
1280305,
"azc",
}
m["azc-trc"] = {
"Taracahitic",
4245032,
"azc",
aliases = {"Taracahitan"},
}
m["bad"] = {
"Banda",
806234,
"nic-ubg",
}
m["bad-cnt"] = {
"Central Banda",
3438391,
"bad",
}
m["bai"] = {
"Bamileke",
806005,
"nic-gre",
}
m["bat"] = {
"Baltic",
33136,
"ine-bsl",
}
m["bat-eas"] = {
"East Baltic",
149944,
"bat",
}
m["bat-wes"] = {
"West Baltic",
149946,
"bat",
}
m["ber"] = {
"Berber",
25448,
"afa",
aliases = {"Tamazight"},
}
m["bnt"] = {
"Bantu",
33146,
"nic-bds",
}
m["bnt-baf"] = {
"Bafia",
799784,
"bnt",
}
m["bnt-bbo"] = {
"Bafo-Bonkeng",
nil,
"bnt-saw",
}
m["bnt-bdz"] = {
"Boma-Dzing",
1729203,
"bnt",
}
m["bnt-bek"] = {
"Bekwilic",
nil,
"bnt-ndb",
}
m["bnt-bki"] = {
"Bena-Kinga",
16113307,
"bnt-bne",
}
m["bnt-bmo"] = {
"Bangi-Moi",
nil,
"bnt-bnm",
}
m["bnt-bne"] = {
"Northeast Bantu",
7057832,
"bnt",
}
m["bnt-bnm"] = {
"Bangi-Ntomba",
806477,
"bnt-bte",
}
m["bnt-boa"] = {
"Boan",
4931250,
"bnt",
aliases = {"Buan", "Ababuan"},
}
m["bnt-bot"] = {
"Botatwe",
4948532,
"bnt",
}
m["bnt-bsa"] = {
"Basaa",
809739,
"bnt",
}
m["bnt-bsh"] = {
"Bushoong",
5001551,
"bnt-bte",
}
m["bnt-bso"] = {
"Southern Bantu",
980498,
"bnt",
}
m["bnt-bta"] = {
"Bati-Angba",
4869303,
"bnt-boa",
other_names = {"Late Bomokandian"},
aliases = {"Bwa"},
}
m["bnt-btb"] = {
"Beti",
35118,
"bnt",
}
m["bnt-bte"] = {
"Bangi-Tetela",
4855181,
"bnt",
}
m["bnt-bun"] = {
"Buja-Ngombe",
4986733,
"bnt-mbb",
}
m["bnt-chg"] = {
"Chaga",
33016,
"bnt-cht",
}
m["bnt-cht"] = {
"Chaga-Taita",
nil,
"bnt-bne",
}
m["bnt-clu"] = {
"Chokwe-Luchazi",
3339273,
"bnt",
}
m["bnt-com"] = {
"Comorian",
33077,
"bnt-sab",
}
m["bnt-glb"] = {
"Great Lakes Bantu",
5599420,
"bnt-bne",
}
m["bnt-haj"] = {
"Haya-Jita",
25502360,
"bnt-glb",
}
m["bnt-kak"] = {
"Kako",
nil,
"bnt-pob",
}
m["bnt-kav"] = {
"Kavango",
116544179,
"bnt-ksb",
}
m["bnt-kbi"] = {
"Komo-Bira",
6428591,
"bnt-boa",
}
m["bnt-kel"] = {
"Kele",
1738162,
"bnt-kts",
aliases = {"Sheke"},
}
m["bnt-kil"] = {
"Kilombero",
6408121,
"bnt",
}
m["bnt-kka"] = {
"Kikuyu-Kamba",
16114410,
"bnt-bne",
aliases = {"Thagiicu"},
}
m["bnt-kmb"] = {
"Kimbundu",
16947687,
"bnt",
}
m["bnt-kng"] = {
"Kongo",
6429214,
"bnt",
}
m["bnt-kpw"] = {
"Kpwe",
36428,
"bnt-saw",
}
m["bnt-ksb"] = {
"Kavango-Southwest Bantu",
6379098,
"bnt",
}
m["bnt-kts"] = {
"Kele-Tsogo",
6385577,
"bnt",
}
m["bnt-lbn"] = {
"Luban",
4536504,
"bnt",
}
m["bnt-leb"] = {
"Lebonya",
6511395,
"bnt",
}
m["bnt-lgb"] = {
"Lega-Binja",
6517694,
"bnt",
}
m["bnt-lok"] = {
"Logooli-Kuria",
nil,
"bnt-glb",
}
m["bnt-lub"] = {
"Luba",
nil,
"bnt-lbn",
}
m["bnt-lun"] = {
"Lunda",
6704091,
"bnt",
}
m["bnt-mak"] = {
"Makua",
6740431,
"bnt-bso",
aliases = {"Makhuwa"},
}
m["bnt-mbb"] = {
"Mboshi-Buja",
6799764,
"bnt",
}
m["bnt-mbe"] = {
"Mbole-Enya",
6799728,
"bnt",
}
m["bnt-mbi"] = {
"Mbinga",
nil,
"bnt-rur",
}
m["bnt-mbo"] = {
"Mboshi",
6799763,
"bnt-mbb",
}
m["bnt-mbt"] = {
"Mbete",
1346910,
"bnt-tmb",
aliases = {"Mbere"},
}
m["bnt-mby"] = {
"Mbeya",
nil,
"bnt-ruk",
}
m["bnt-mij"] = {
"Mijikenda",
6845474,
"bnt-sab",
}
m["bnt-mka"] = {
"Makaa",
nil,
"bnt-ndb",
}
m["bnt-mne"] = {
"Manenguba",
31147471,
"bnt",
aliases = {"Mbo", "Ngoe"},
}
m["bnt-mnj"] = {
"Makaa-Njem",
1603899,
"bnt-pob",
}
m["bnt-mon"] = {
"Mongo",
nil,
"bnt-bnm",
}
m["bnt-mra"] = {
"Mbugwe-Rangi",
6799795,
"bnt",
}
m["bnt-msl"] = {
"Masaba-Luhya",
12636428,
"bnt-glb",
}
m["bnt-mwi"] = {
"Mwika",
nil,
"bnt-ruk",
}
m["bnt-ncb"] = {
"Northeast Coast Bantu",
7057848,
"bnt-bne",
}
m["bnt-ndb"] = {
"Ndzem-Bomwali",
nil,
"bnt-mnj",
}
m["bnt-ngn"] = {
"Ngondi-Ngiri",
7022532,
"bnt-mbb",
}
m["bnt-ngu"] = {
"Nguni",
961559,
"bnt-bso",
aliases = {"Ngoni"},
}
m["bnt-nya"] = {
"Nyali",
7070832,
"bnt-leb",
}
m["bnt-nyb"] = {
"Nyanga-Buyi",
7070882,
"bnt",
}
m["bnt-nyg"] = {
"Nyoro-Ganda",
12638666,
"bnt-glb",
}
m["bnt-nys"] = {
"Nyasa",
7070921,
"bnt",
}
m["bnt-nze"] = {
"Nzebi",
1755498,
"bnt-tmb",
aliases = {"Njebi"},
}
m["bnt-ova"] = {
"Ovambo",
36489,
"bnt-swb",
aliases = {"Oshivambo", "Oshiwambo", "Owambo"},
}
m["bnt-par"] = {
"Pare",
nil,
"bnt-ncb",
}
m["bnt-pen"] = {
"Pende",
7162373,
"bnt",
}
m["bnt-pob"] = {
"Pomo-Bomwali",
nil,
"bnt",
}
m["bnt-ruk"] = {
"Rukwa",
7378902,
"bnt",
}
m["bnt-run"] = {
"Rungwe",
nil,
"bnt-ruk",
}
m["bnt-rur"] = {
"Rufiji-Ruvuma",
7377947,
"bnt",
}
m["bnt-ruv"] = {
"Ruvu",
nil,
"bnt-ncb",
}
m["bnt-rvm"] = {
"Ruvuma",
nil,
"bnt-rur",
}
m["bnt-sab"] = {
"Sabaki",
2209395,
"bnt-ncb",
}
m["bnt-saw"] = {
"Sawabantu",
532003,
"bnt",
}
m["bnt-sbi"] = {
"Sabi",
7396071,
"bnt",
}
m["bnt-seu"] = {
"Seuta",
nil,
"bnt-ncb",
}
m["bnt-shh"] = {
"Shi-Havu",
nil,
"bnt-glb",
}
m["bnt-sho"] = {
"Shona",
2904660,
"bnt",
}
m["bnt-sir"] = {
"Sira",
1436372,
"bnt",
aliases = {"Shira-Punu"},
}
m["bnt-ske"] = {
"Soko-Kele",
nil,
"bnt-bte",
}
m["bnt-sna"] = {
"Sena",
nil,
"bnt-nys",
}
m["bnt-sts"] = {
"Sotho-Tswana",
2038386,
"bnt-bso",
}
m["bnt-swb"] = {
"Southwest Bantu",
116543539,
"bnt-ksb",
}
m["bnt-swh"] = {
"Swahili",
nil,
"bnt-sab",
}
m["bnt-tek"] = {
"Teke",
36528,
"bnt-tmb",
}
m["bnt-tet"] = {
"Tetela",
7706059,
"bnt-bte",
}
m["bnt-tkc"] = {
"Central Teke",
36473,
"bnt-tek",
}
m["bnt-tkm"] = {
"Takama",
nil,
"bnt-bne",
}
m["bnt-tmb"] = {
"Teke-Mbede",
7695332,
"bnt",
aliases = {"Teke-Mbere"},
}
m["bnt-tso"] = {
"Tsogo",
2458420,
other_names = {"Okani"}, --appears to be an alias in Glottolog
"bnt-kts",
}
m["bnt-tsr"] = {
"Tswa-Ronga",
12643962,
"bnt-bso",
}
m["bnt-yak"] = {
"Yaka",
8047027,
"bnt",
}
m["bnt-yko"] = {
"Yasa-Kombe",
nil,
"bnt-saw",
}
m["bnt-zbi"] = {
"Zamba-Binza",
nil,
"bnt-bnm",
}
m["btk"] = {
"Batak",
1998595,
"poz-nws",
}
--[=[
Exceptional language and family codes for Central American Indian languages
may use the prefix "cai-", though "cai" is no longer itself a family code.
]=]--
--[=[
Exceptional language and family codes for Caucasian languages can use
the prefix "cau-", though "cau" is no longer itself a family code.
]=]--
m["cau-abz"] = {
"Abkhaz-Abaza",
4663617,
"cau-nwc",
other_names = {"Abkhaz-Tapanta"},
aliases = {"Abazgi"},
}
m["cau-and"] = {
"Andian",
492152,
"cau-ava",
aliases = {"Andic"},
}
m["cau-ava"] = {
"Avaro-Andian",
4055404,
"cau-nec",
aliases = {"Avar-Andian", "Avar-Andi", "Avar-Andic"},
}
m["cau-cir"] = {
"Circassian",
858543,
"cau-nwc",
aliases = {"Cherkess"},
}
m["cau-drg"] = {
"Dargwa",
5222637,
"cau-nec",
other_names = {"Dargin"},
}
m["cau-esm"] = {
"Eastern Samur",
nil,
"cau-sam",
}
m["cau-ets"] = {
"East Tsezian",
121437666,
"cau-tsz",
aliases = {"East Tsezic", "East Didoic"},
}
m["cau-lzg"] = {
"Lezghian",
2144370,
"cau-nec",
aliases = {"Lezgi", "Lezgian", "Lezgic"},
}
m["cau-nkh"] = {
"Nakh",
24441,
"cau-nec",
aliases = {"North-Central Caucasian"},
}
m["cau-nec"] = {
"Northeast Caucasian",
27387,
aliases = {"Dagestanian", "Nakho-Dagestanian", "Caspian"},
}
m["cau-nwc"] = {
"Northwest Caucasian",
33852,
aliases = {"Abkhazo-Adyghean", "Abkhaz-Adyghe", "Pontic"},
}
m["cau-sam"] = {
"Samur",
15229151,
"cau-lzg",
}
m["cau-ssm"] = {
"Southern Samur",
nil,
"cau-sam",
}
m["cau-tsz"] = {
"Tsezian",
1651530,
"cau-nec",
aliases = {"Tsezic", "Didoic"},
}
m["cau-vay"] = {
"Vainakh",
4102486,
"cau-nkh",
aliases = {"Veinakh", "Vaynakh"},
}
m["cau-wsm"] = {
"Western Samur",
nil,
"cau-sam",
}
m["cau-wts"] = {
"West Tsezian",
121437697,
"cau-tsz",
aliases = {"West Tsezic", "West Didoic"},
}
m["cba"] = {
"Chibchan",
520478,
"qfa-mch", -- or none if Macro-Chibchan is considered undemonstrated
}
m["ccs"] = {
"Kartvelian",
34030,
aliases = {"South Caucasian"},
}
m["ccs-gzn"] = {
"Georgian-Zan",
34030,
"ccs",
aliases = {"Karto-Zan"},
}
m["ccs-zan"] = {
"Zan",
2606912,
"ccs-gzn",
aliases = {"Zanuri", "Colchian"},
}
m["cdc"] = {
"Chadic",
33184,
"afa",
}
m["cdc-cbm"] = {
"Central Chadic",
2251547,
"cdc",
aliases = {"Biu-Mandara"},
}
m["cdc-est"] = {
"East Chadic",
2276221,
"cdc",
}
m["cdc-mas"] = {
"Masa",
2136092,
"cdc",
}
m["cdc-wst"] = {
"West Chadic",
2447774,
"cdc",
}
m["cdd"] = {
"Caddoan",
1025090,
}
m["cel"] = {
"Celtic",
25293,
"ine",
}
m["cel-bry"] = {
"Brythonic",
156877,
"cel-ins",
aliases = {"Brittonic"},
}
m["cel-brs"] = {
"Southwestern Brythonic",
2612853,
"cel-bry",
aliases = {"Southwestern Brittonic"},
}
m["cel-brw"] = {
"Western Brythonic",
593069,
"cel-bry",
aliases = {"Western Brittonic"},
}
m["cel-gae"] = {
"Goidelic",
56433,
"cel-ins",
aliases = {"Gaelic"},
protoLanguage = "pgl",
}
m["cel-his"] = {
"Hispano-Celtic",
4204136,
"cel",
}
m["cel-ins"] = {
"Insular Celtic",
214506,
"cel",
}
m["chi"] = {
"Chimakuan",
1073088,
}
m["chm"] = {
"Mari",
973685,
"urj",
}
m["cmc"] = {
"Chamic",
2997506,
"poz-mcm",
}
m["crp"] = {
"creole or pidgin",
19682167,
"qfa-cnt",
}
m["csu"] = {
"Central Sudanic",
190822,
"ssa",
}
m["csu-bba"] = {
"Bongo-Bagirmi",
3505042,
"csu",
}
m["csu-bbk"] = {
"Bongo-Baka",
4941917,
"csu-bba",
}
m["csu-bgr"] = {
"Bagirmi",
4841948,
"csu-bba",
aliases = {"Bagirmic"},
}
m["csu-bkr"] = {
"Birri-Kresh",
nil,
"csu",
}
m["csu-ecs"] = {
"Eastern Central Sudanic",
16911698,
"csu",
aliases = {"East Central Sudanic", "Central Sudanic East", "Lendu-Mangbetu"},
}
m["csu-kab"] = {
"Kaba",
6343715,
"csu-bba",
}
m["csu-lnd"] = {
"Lendu",
6522357,
"csu-ecs",
aliases = {"Lenduic"},
}
m["csu-maa"] = {
"Mangbetu",
6748874,
"csu-ecs",
aliases = {"Mangbetu-Asoa", "Mangbetu-Asua"},
}
m["csu-mle"] = {
"Mangbutu-Lese",
17009406,
"csu-ecs",
aliases = {"Mangbutu-Efe", "Mangbutu", "Membi-Mangbutu-Efe"},
}
m["csu-mma"] = {
"Moru-Madi",
6915156,
"csu-ecs",
}
m["csu-sar"] = {
"Sara",
2036691,
"csu-bba",
}
m["csu-val"] = {
"Vale",
7909520,
"csu-bba",
}
m["cus"] = {
"Cushitic",
33248,
"afa",
}
m["cus-cen"] = {
"Central Cushitic",
56569,
"cus",
}
m["cus-eas"] = {
"East Cushitic",
56568,
"cus",
}
m["cus-hec"] = {
"Highland East Cushitic",
56524,
"cus-eas",
}
m["cus-som"] = {
"Somaloid",
56774,
"cus-eas",
aliases = {"Sam", "Macro-Somali"},
}
m["cus-sou"] = {
"South Cushitic",
56525,
"cus",
}
m["day"] = {
"Land Dayak",
2760613,
"poz",
}
m["del"] = {
"Lenape",
2665761,
"alg-eas",
aliases = {"Delaware"},
}
m["den"] = {
"Slavey",
13272,
"ath-nor",
aliases = {"Slave", "Slavé"},
}
m["dmn"] = {
"Mande",
33681,
"nic",
}
m["dmn-bbu"] = {
"Bisa-Busa",
12627956,
"dmn-mde",
}
m["dmn-emn"] = {
"East Manding",
nil,
"dmn-man",
}
m["dmn-jje"] = {
"Jogo-Jeri",
nil,
"dmn-mjo",
}
m["dmn-man"] = {
"Manding",
35772,
"dmn-mmo",
}
m["dmn-mda"] = {
"Mano-Dan",
nil,
"dmn-mse",
}
m["dmn-mdc"] = {
"Central Mande",
5972907,
"dmn-mdw",
}
m["dmn-mde"] = {
"Eastern Mande",
12633080,
"dmn",
}
m["dmn-mdw"] = {
"Western Mande",
16113831,
"dmn",
}
m["dmn-mjo"] = {
"Manding-Jogo",
12636153,
"dmn-mdc",
}
m["dmn-mmo"] = {
"Manding-Mokole",
nil,
"dmn-mva",
}
m["dmn-mnk"] = {
"Maninka",
36186,
"dmn-emn",
}
m["dmn-mnw"] = {
"Northwestern Mande",
5972910,
"dmn-mdw",
}
m["dmn-mok"] = {
"Mokole",
16935447,
"dmn-mmo",
}
m["dmn-mse"] = {
"Southeastern Mande",
5972912,
"dmn-mde",
}
m["dmn-msw"] = {
"Southwestern Mande",
12633904,
"dmn-mdw",
}
m["dmn-mva"] = {
"Manding-Vai",
nil,
"dmn-mjo",
}
m["dmn-nbe"] = {
"Nwa-Beng",
nil,
"dmn-mse",
}
m["dmn-sam"] = {
"Samo",
36327,
"dmn-bbu",
aliases = {"Samuic"},
}
m["dmn-smg"] = {
"Samogo",
7410000,
"dmn-mnw",
aliases = {"Duun-Seenku"},
}
m["dmn-snb"] = {
"Soninke-Bobo",
16111680,
"dmn-mnw",
}
m["dmn-sya"] = {
"Susu-Yalunka",
nil,
"dmn-mdc",
}
m["dmn-vak"] = {
"Vai-Kono",
nil,
"dmn-mva",
}
m["dmn-wmn"] = {
"West Manding",
nil,
"dmn-man",
}
m["dra"] = {
"Dravidian",
33311,
}
m["dra-cen"] = {
"Central Dravidian",
12628823,
"dra",
}
m["dra-gki"] = {
"Gondi-Kui",
12631610,
"dra-sdt",
}
m["dra-gon"] = {
"Gondi",
55639812,
"dra-gki",
}
m["dra-imd"] = {
"Irula-Muduga",
nil,
"dra-tkn",
}
m["dra-kan"] = {
"Kannadoid",
6363888,
"dra-tkn",
protoLanguage = "dra-okn",
}
m["dra-kki"] = {
"Konda-Kui",
nil,
"dra-gki",
}
m["dra-kml"] = {
"Kurux-Malto",
68002822,
"dra-nor",
}
m["dra-knk"] = {
"Kolami-Naiki",
10547037,
"dra-cen",
}
m["dra-kod"] = {
"Kodagu",
67983106,
"dra-tkd",
}
m["dra-kor"] = {
"Koraga",
33394,
"dra-tlk",
}
m["dra-mal"] = {
"Malayalamoid",
6741581,
"dra-tml",
}
m["dra-mdy"] = {
"Madiya",
27602,
"dra-gon",
}
m["dra-mlo"] = {
"Malto",
nil,
"dra-kml",
}
m["dra-mur"] = {
"Muria",
6938499,
"dra-gon",
}
m["dra-nor"] = {
"North Dravidian",
16110967,
"dra",
}
m["dra-pgd"] = {
"Parji-Gadaba",
10620428,
"dra-cen",
}
m["dra-sdo"] = {
"South Dravidian I",
16112843, -- Wikipedia's "South Dravidian" is South Dravidian I in this scheme.
"dra-sou",
aliases = {"South Dravidian"}, -- This is why I and II are used.
}
m["dra-sdt"] = {
"South Dravidian II",
12633975,
"dra-sou",
aliases = {"South-Central Dravidian"},
}
m["dra-sou"] = {
"South Dravidian",
128886618,
"dra",
aliases = {"Southern Dravidian"},
}
m["dra-tam"] = {
"Tamiloid",
7681417,
"dra-tml",
protoLanguage = "oty",
}
m["dra-tel"] = {
"Teluguic",
nil,
"dra-sdt",
protoLanguage = "dra-ote",
}
m["dra-tkd"] = {
"Tamil-Kodagu",
25494510,
"dra-tkn",
}
m["dra-tkn"] = {
"Tamil-Kannada",
6478506,
"dra-sdo",
}
m["dra-tkt"] = {
"Toda-Kota",
67983857,
"dra-tkd",
}
m["dra-tlk"] = {
"Tulu-Koraga",
nil,
"dra-sdo",
}
m["dra-tml"] = {
"Tamil-Malayalam",
10690507,
"dra-tkd",
}
m["egx"] = {
"Egyptian",
50868,
"afa",
protoLanguage = "egy",
}
m["ero"] = {
"Horpa",
56854,
"sit-wgy",
}
m["esx"] = {
"Eskimo-Aleut",
25946,
}
m["esx-esk"] = {
"Eskimo",
25946,
"esx",
}
m["esx-inu"] = {
"Inuit",
27796,
"esx-esk",
}
m["euq"] = {
"Vasconic",
4669240,
}
m["gba"] = {
"Gbaya",
3099986,
"alv-sav",
}
m["gba-eas"] = {
"Eastern Gbaya",
nil,
"gba",
}
m["gba-sou"] = {
"Southern Gbaya",
nil,
"gba",
}
m["gba-wes"] = {
"Western Gbaya",
nil,
"gba",
}
m["gem"] = {
"Germanic",
21200,
"ine",
}
m["gio"] = {
"Gelao",
56401,
"qfa-kra",
}
m["gme"] = {
"East Germanic",
108662,
"gem",
}
m["gmq"] = {
"North Germanic",
106085,
"gem",
}
m["gmq-eas"] = {
"East Scandinavian",
3090263,
"gmq",
protoLanguage = "non-oen",
}
m["gmq-ins"] = {
"Insular Scandinavian",
nil,
"gmq-wes",
}
m["gmq-wes"] = {
"West Scandinavian",
1792570,
"gmq",
protoLanguage = "non-own",
}
m["gmw"] = {
"West Germanic",
26721,
"gem",
}
m["gmw-afr"] = {
"Anglo-Frisian",
5329170,
"gmw-nsg",
}
m["gmw-ang"] = {
"Anglic",
1346342,
"gmw-afr",
protoLanguage = "ang",
}
m["gmw-fri"] = {
"Frisian",
25325,
"gmw-afr",
protoLanguage = "ofs",
}
m["gmw-frk"] = {
"Low Franconian",
153050,
"gmw",
protoLanguage = "frk",
}
m["gmw-hgm"] = {
"High German",
52040,
"gmw",
protoLanguage = "goh",
}
m["gmw-ian"] = {
"Irish Anglo-Norman",
120719384,
"gmw-ang",
protoLanguage = "enm",
}
m["gmw-lgm"] = {
"Low German",
25433,
"gmw-nsg",
protoLanguage = "osx",
}
m["gmw-nsg"] = {
"North Sea Germanic",
30134,
"gmw",
aliases = {"Ingvaeonic"},
}
m["gn"] = {
"Guarani",
35876,
"tup-gua",
aliases = {"Guaraní"},
}
m["grb"] = {
"Grebo proper",
35257,
"kro-grb",
}
m["grk"] = {
"Hellenic",
2042538,
"ine",
aliases = {"Greek"},
}
m["him"] = {
"Western Pahari",
10939493,
"inc-pah",
aliases = {"Himachali"},
}
m["hmn"] = {
"Hmongic",
3307894,
"hmx",
}
m["hmx"] = {
"Hmong-Mien",
33322,
aliases = {"Miao-Yao"},
}
m["hmx-mie"] = {
"Mienic",
7992695,
"hmx",
}
m["hok"] = {
"Hokan",
33406,
}
m["hyx"] = {
"Armenian",
8785,
"ine",
}
m["iir"] = {
"Indo-Iranian",
33514,
"ine",
}
m["iir-nur"] = {
"Nuristani",
161804,
"iir",
}
m["nur-nor"] = {
"Northern Nuristani",
nil,
"iir-nur",
}
m["nur-sou"] = {
"Southern Nuristani",
nil,
"iir-nur",
}
m["ijo"] = {
"Ijoid",
1325759,
"nic",
other_names = {"Ijaw"}, -- Ijaw may be a subfamily
}
m["inc"] = {
"Indo-Aryan",
33577,
"iir",
aliases = {"Indic"},
}
m["inc-bas"] = {
"Bengali-Assamese",
4179137,
"inc-eas",
aliases = {"Assamese-Bengali", "Gauda-Kamarupa"},
}
m["inc-bhi"] = {
"Bhil",
4901727,
"inc-cen",
}
m["inc-bih"] = {
"Bihari",
135305,
"inc-eas",
}
m["inc-cen"] = {
"Central Indo-Aryan",
10979187,
"inc",
protoLanguage = "inc-asa",
}
m["inc-chi"] = {
"Chitrali",
11732797,
"inc-dar",
}
m["inc-dar"] = {
"Dardic",
161101,
"inc",
protoLanguage = "inc-ash",
}
m["inc-dre"] = {
"Eastern Dardic",
nil,
"inc-dar",
}
m["inc-dng"] = {
"Dangari",
nil,
"inc-shn",
}
m["inc-eas"] = {
"Eastern Indo-Aryan",
12593391,
"inc",
protoLanguage = "inc-aav",
}
m["inc-hal"] = {
"Halbic",
16910593,
"inc-eas",
aliases = {"Halbi"},
}
m["inc-hie"] = {
"Eastern Hindi",
4126648,
"inc-cen",
aliases = {"Purabiyā"},
protoLanguage = "inc-apa",
}
m["inc-hiw"] = {
"Western Hindi",
12600937,
"inc-cen",
protoLanguage = "inc-ohi",
}
m["inc-hnd"] = {
"Hindustani",
11051,
"inc-hiw",
aliases = {"Hindi-Urdu"},
protoLanguage = "hi-mid",
}
m["inc-ins"] = {
"Insular Indo-Aryan",
12179302,
"inc",
protoLanguage = "inc-apa",
}
m["inc-kas"] = {
"Kashmiric",
nil,
"inc-dre",
aliases = {"Kashmiri"},
}
m["inc-koh"] = {
"Kohistani",
13018610,
"inc-dre",
}
m["inc-krd"] = {
"KRDS languages",
6356154,
"inc-eas",
aliases = {"Kamta, Rajbanshi, Deshi and Surjapuri", "KRNB languages", "Kamta, Rajbanshi and Northern Deshi Bangla"},
}
m["inc-kun"] = {
"Kunar",
nil,
"inc-dar",
}
m["inc-mid"] = {
"Middle Indo-Aryan",
3236316,
"inc",
aliases = {"Middle Indic"},
}
m["inc-nwe"] = {
"Northwestern Indo-Aryan",
16111018,
"inc",
protoLanguage = "inc-apa",
}
m["inc-nor"] = {
"Northern Indo-Aryan",
946077,
"inc",
protoLanguage = "inc-aka",
}
m["inc-old"] = {
"Old Indo-Aryan",
118976896,
"inc",
aliases = {"Old Indic"},
}
m["inc-pah"] = {
"Pahari",
946077,
"inc-nor",
aliases = {"Pahadi"},
protoLanguage = "inc-aka",
}
m["inc-pan"] = {
"Punjabic",
2656685,
"inc-nwe",
aliases = {"Greater Punjabic"},
protoLanguage = "inc-opa",
}
m["inc-pas"] = {
"Pashayi",
36670,
"inc-dar",
aliases = {"Pashai"},
}
m["inc-rom"] = {
"Romani",
13201,
"inc-wes",
aliases = {"Romany", "Gypsy", "Gipsy"},
}
m["inc-shn"] = {
"Shinaic",
12646125,
"inc-dre",
}
m["inc-snd"] = {
"Sindhic",
7522212,
"inc-nwe",
protoLanguage = "inc-avr",
}
m["inc-sou"] = {
"Southern Indo-Aryan",
10856062,
"inc",
protoLanguage = "inc-ama",
}
m["inc-tha"] = {
"Tharu",
34035,
"inc-eas",
}
m["inc-wes"] = {
"Western Indo-Aryan",
nil,
"inc",
protoLanguage = "inc-agu",
}
m["ine"] = {
"Indo-European",
19860,
aliases = {"Indo-Germanic"},
}
m["ine-ana"] = {
"Anatolian",
147085,
"ine",
}
m["ine-bsl"] = {
"Balto-Slavic",
147356,
"ine",
}
m["ine-toc"] = {
"Tocharian",
37029,
"ine",
aliases = {"Tokharian"},
}
m["ira"] = {
"Iranian",
33527,
"iir",
}
m["ira-csp"] = {
"Caspian",
5049123,
"ira-mpr",
}
m["ira-cen"] = {
"Central Iranian",
nil,
"ira",
}
m["ira-kms"] = {
"Komisenian",
nil,
"ira-mpr",
aliases = {"Semnani"},
}
m["ine-luw"] = {
"Luwic",
115748615,
"ine-ana",
aliases = {"Luvic"},
}
m["ira-mid"] = {
"Middle Iranian",
6841465,
"ira",
}
m["ira-mny"] = {
"Munji-Yidgha",
nil,
"ira-sym",
aliases = {"Yidgha-Munji"},
}
m["ira-msh"] = {
"Mazanderani-Shahmirzadi",
nil,
"ira-csp",
}
m["ira-nei"] = {
"Northeastern Iranian",
10775567,
"ira",
}
m["ira-nwi"] = {
"Northwestern Iranian",
390576,
"ira-wes",
}
m["ira-old"] = {
"Old Iranian",
23301845,
"ira",
}
m["ira-orp"] = {
"Ormuri-Parachi",
nil,
"ira-sei",
}
m["ira-pat"] = {
"Pathan",
nil,
"ira-sei",
}
m["ira-sbc"] = {
"Sogdo-Bactrian",
nil,
"ira-nei",
}
m["ira-mpr"] = {
"Medo-Parthian",
nil,
"ira-nwi",
aliases = {"Partho-Median"},
}
m["ira-sgi"] = {
"Sanglechi-Ishkashimi",
18711232,
"ira-sei",
}
m["ira-shr"] = {
"Shughni-Roshani",
11732824,
"ira-shy",
}
m["ira-shy"] = {
"Shughni-Yazghulami",
nil,
"ira-sym",
}
m["ira-sgc"] = {
"Sogdic",
nil,
"ira-sbc",
aliases = {"Sogdian"},
}
m["ira-sei"] = {
"Southeastern Iranian",
3833002,
"ira",
}
m["ira-swi"] = {
"Southwestern Iranian",
390424,
"ira-wes",
}
m["ira-sym"] = {
"Shughni-Yazghulami-Munji",
nil,
"ira-sei",
}
m["ira-wes"] = {
"Western Iranian",
129850,
"ira",
}
m["ira-zgr"] = {
"Zaza-Gorani",
167854,
"ira-mpr",
aliases = {"Zaza-Gurani", "Gorani-Zaza"},
}
m["iro"] = {
"Iroquoian",
33623,
}
m["iro-nor"] = {
"North Iroquoian",
nil,
"iro",
}
m["itc"] = {
"Italic",
131848,
"ine",
}
m["itc-laf"] = {
"Latino-Faliscan",
33478,
"itc",
aliases = {"Latinian"},
}
m["itc-sbl"] = {
"Osco-Umbrian",
515194,
"itc",
aliases = {"Sabellic", "Sabellian"},
}
m["jpx"] = {
"Japonic",
33612,
aliases = {"Japanese", "Japanese-Ryukyuan"},
}
m["jpx-nry"] = {
"Northern Ryukyuan",
20862796,
"jpx-ryu",
}
m["jpx-ryu"] = {
"Ryukyuan",
56393,
"jpx",
}
m["jpx-sry"] = {
"Southern Ryukyuan",
18392243,
"jpx-ryu",
}
m["kar"] = {
"Karen",
1364815,
"sit",
}
m["kca"] = {
"Khanty",
33563,
"urj-ugr",
aliases = {"Khantyic", "Khantic"},
}
--[=[
Exceptional language and family codes for Khoisan and Kordofanian languages can use
the prefix "khi-" and "kdo-" respectively, though they are no longer family codes themselves.
]=]--
m["khi-kal"] = {
"Kalahari Khoe",
nil,
"khi-kho",
}
m["khi-khk"] = {
"Khoekhoe",
nil,
"khi-kho",
}
m["khi-kkw"] = {
"Khoe-Kwadi",
60785084,
aliases = {"Kwadi-Khoe"},
}
m["khi-kho"] = {
"Khoe",
2736449,
"khi-kkw",
aliases = {"Central Khoisan"},
}
m["khi-kxa"] = {
"Kx'a",
6450587,
aliases = {"Kxa", "Ju-ǂHoan"},
}
m["khi-tuu"] = {
"Tuu",
631046,
aliases = {"Kwi", "Taa-Kwi", "Southern Khoisan", "Taa-ǃKwi", "Taa-ǃUi", "ǃUi-Taa"},
}
m["kro"] = {
"Kru",
33535,
"nic-vco",
}
m["kro-aiz"] = {
"Aizi",
4699431,
"kro",
}
m["kro-bet"] = {
"Bété",
32956,
"kro-ekr",
}
m["kro-did"] = {
"Dida",
32685,
"kro-ekr",
}
m["kro-ekr"] = {
"Eastern Kru",
5972899,
"kro",
}
m["kro-grb"] = {
"Grebo",
5601537,
"kro-wkr",
}
m["kro-wee"] = {
"Wee",
nil,
"kro-wkr",
}
m["kro-wkr"] = {
"Western Kru",
5972897,
"kro",
}
m["ku"] = {
"Kurdish",
36368,
"ira-nwi",
}
m["kv"] = {
"Komi",
36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family
"urj-prm",
}
m["map"] = {
"Austronesian",
49228,
}
m["map-ata"] = {
"Atayalic",
716610,
"map",
}
m["mjg"] = {
"Monguor",
34214,
"xgn-shr",
}
m["mkh"] = {
"Mon-Khmer",
33199,
"aav",
}
m["mkh-asl"] = {
"Aslian",
3111082,
"mkh",
}
m["mkh-ban"] = {
"Bahnaric",
56309,
"mkh",
}
m["mkh-kat"] = {
"Katuic",
56697,
"mkh",
}
m["mkh-khm"] = {
"Khmuic",
1323245,
"mkh",
}
m["mkh-kmr"] = {
"Khmeric",
nil,
"mkh",
}
m["mkh-mnc"] = {
"Monic",
3217497,
"mkh",
}
m["mkh-mng"] = {
"Mangic",
3509556,
"mkh",
}
m["mkh-nbn"] = {
"North Bahnaric",
56309,
"mkh-ban",
}
m["mkh-pal"] = {
"Palaungic",
2391173,
"mkh",
}
m["mkh-pea"] = {
"Pearic",
3073022,
"mkh",
}
m["mkh-pkn"] = {
"Pakanic",
nil,
"mkh-mng",
}
m["mkh-vie"] = {
"Vietic",
2355546,
"mkh",
}
m["mno"] = {
"Manobo",
3217483,
"phi",
}
m["mns"] = {
"Mansi",
33759,
"urj-ugr",
aliases = {"Mansic"},
}
m["mun"] = {
"Munda",
33892,
"aav",
}
m["myn"] = {
"Mayan",
33738,
}
--[=[
Exceptional language and family codes for North American Indian languages
can use the prefix "nai-", though "nai" is no longer itself a family code.
]=]--
m["nai-cat"] = {
"Catawban",
3446638,
"nai-sca",
}
m["nai-chu"] = {
"Chumashan",
1288420,
}
m["nai-ckn"] = {
"Chinookan",
610586,
}
m["nai-coo"] = {
"Coosan",
940278,
}
m["nai-jcq"] = {
"Jicaquean",
12179308,
"hok"
}
m["nai-ker"] = {
"Keresan",
35878,
}
m["nai-klp"] = {
"Kalapuyan",
1569040,
}
m["nai-kta"] = {
"Kiowa-Tanoan",
386288,
}
m["nai-len"] = {
"Lencan",
36189,
aliases = {"Lenca"},
}
m["nai-mdu"] = {
"Maiduan",
33502,
}
m["nai-miz"] = {
"Mixe-Zoquean",
954016,
aliases = {"Mixe-Zoque"},
}
m["nai-min"] = {
"Misumalpan",
281693,
"qfa-mch",
aliases = {"Misuluan", "Misumalpa"},
}
m["nai-mus"] = {
"Muskogean",
902978,
aliases = {"Muskhogean"},
}
m["nai-pak"] = {
"Pakawan",
65085487,
"hok",
}
m["nai-pal"] = {
"Palaihnihan",
1288332,
}
m["nai-plp"] = {
"Plateau Penutian",
2307476,
}
m["nai-pom"] = {
"Pomoan",
2618420,
"hok",
aliases = {"Pomo", "Kulanapan"},
}
m["nai-sca"] = {
"Siouan-Catawban",
34181,
}
m["nai-shp"] = {
"Sahaptian",
114782,
"nai-plp",
}
m["nai-shs"] = {
"Shastan",
2991735,
"hok",
}
m["nai-tot"] = {
"Totozoquean",
7828419,
}
m["nai-ttn"] = {
"Totonacan",
34039,
aliases = {"Totonac-Tepehua", "Totonacan-Tepehuan"},
varieties = {"Totonac"},
}
m["nai-tqn"] = {
"Tequistlatecan",
1568317,
"hok",
aliases = {"Tequistlatec", "Chontal", "Chontalan", "Oaxacan Chontal", "Chontal of Oaxaca"},
}
m["nai-tsi"] = {
"Tsimshianic",
34134,
}
m["nai-utn"] = {
"Utian",
13371763,
"nai-you",
aliases = {"Miwok-Costanoan", "Mutsun"},
}
m["nai-wtq"] = {
"Wintuan",
1294259,
aliases = {"Wintun"},
}
m["nai-xin"] = {
"Xincan",
1546494,
aliases = {"Xinca"},
}
m["nai-ykn"] = {
"Yukian",
2406722,
aliases = {"Yuki-Wappo"},
}
m["nai-you"] = {
"Yok-Utian",
2886186,
}
m["nai-yuc"] = {
"Yuman-Cochimí",
579137,
}
m["ngf"] = {
"Trans-New Guinea",
34018,
}
m["ngf-ais"] = {
"Aisian",
nil,
"ngf-eso",
}
m["ngf-ang"] = {
"Angan",
3217366,
"ngf",
aliases = {"Kratke Range"}, -- Usher
}
m["ngf-ank"] = {
"Angal-Kewa",
12626916, -- exist in dewiki and hrwiki
"ngf-sak",
}
m["ngf-ask"] = {
"Asmat-Kamoro",
3031400,
"ngf",
-- Wikipedia uses Asmat-Kamoro to refer to a narrower group excluding the Sabakor languages (Buruwai and Kamberau,
-- which Glottolog splits into North Kamrau and South Kamrau [sic]), and uses Asmat-Kamrau to refer to what we and
-- Glottolog call Asmat-Kamoro. Glottolog does not recognize the narrower grouping.
aliases = {"Asmat-Kamrau", -- Wikipedia
"Asmat-Kamrau Bay", -- Usher
},
}
m["ngf-asm"] = {
"Asmat",
4807421,
"ngf-ask",
}
m["ngf-ata"] = {
"Ankave-Tainae-Akoye",
nil,
"ngf-ang",
aliases = {"Southwest Kratke Range"}, -- Usher
}
m["ngf-awd"] = {
"Awyu-Dumut", -- [[w:Awyu-Dumut languages]] redirects to [[w:Greater Awyu languages]]
4830163, -- exist in eswiki, hrwiki and ruwiki
"ngf-gaw",
aliases = {"Central Digul River"}, -- Usher
}
m["ngf-awy"] = {
"Awyu",
96372866,
"ngf-awd",
}
m["ngf-bda"] = {
"Becking-Dawi",
nil, -- Q55993716 ([[Category:Becking–Dawi languages]]) exists in enwiki
"ngf-gaw",
aliases = {"Becking and Dawi Rivers"}, -- Usher
}
m["ngf-bin"] = {
"Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf-gbi",
aliases = {"Oro"}, -- Usher (2020)
}
m["ngf-boa"] = {
"Boane",
nil,
"ngf-era",
aliases = {"Boana", -- Glottolog's name
"Wain"}, -- not in Usher; "Wain" often excludes Mungkip, perhaps because it's poorly documented
}
m["ngf-bos"] = {
"Bosavi",
4947122,
"ngf",
aliases = {"Papuan Plateau"}, -- alternative name given by Wikipedia
}
m["ngf-bsi"] = {
"Baruya-Simbari",
nil,
"ngf-ang",
aliases = {"Northwest Kratke Range"}, -- Usher
}
m["ngf-cda"] = {
"Central Dani",
nil,
"ngf-dan",
aliases = {"Dani"}, -- Usher
}
m["ngf-chw"] = {
"Chimbu-Wahgi",
3217383,
"ngf",
aliases = {"Simbu-Western Highlands"}, -- alternative name given by Wikipedia
}
m["ngf-dag"] = {
"Dagan",
5208454,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Meneao Range"},
}
m["ngf-dal"] = {
"Dallman",
nil,
"ngf-huo",
aliases = {"Kinalakna-Kumukio", -- Pawley-Hammarström, who exclude Nomu, but they only had a numeral list of that language to work from
"Northeast Huon", -- Usher
},
}
m["ngf-dan"] = {
"Dani",
3217389,
"ngf",
-- Wikipedia renames the Dani languages to the Baliem Valley languages and sometimes (but not consistently)
-- reserves the name Dani (or "Dani proper") for a narrower group excluding Wano and the poorly attested Ngalik
-- languages (Nduga, Silimo, and the Yali dialect cluster, which we, following Ethnologue and Glottolog, split into
-- Anggurk Yali, Ninia Yali and Pass Valley Yali). Glottolog does not recognize the narrower grouping.
aliases = {"Baliem Valley", -- Wikipedia
"Balim Valley", -- Usher
},
}
m["ngf-dum"] = {
"Dumut", -- [[w:Dumut languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Wambon"}, -- Usher
}
m["ngf-ehu"] = {
"Eastern Huon", -- Glottolog adds Ono and Sialum, Pawley-Hammarström adds Dedua
10567087,
"ngf-huo",
aliases = {"East Huon"}, -- Usher
}
m["ngf-eku"] = {
"East Kutubuan",
5328752,
"ngf", -- Not in TNG per Glottolog but accepted by all others. Sometimes grouped with Fasu to form a Kutubuan family.
aliases = {"East Kutubu"}, -- Glottolog's name
}
m["ngf-enc"] = {
"Engic",
nil,
"ngf-eng",
aliases = {"Engan", -- Glottolog
"Engan proper", -- Wikipedia
"North Engan", -- alternative name given by Wikipedia
"Trans-Enga", -- Usher
},
}
m["ngf-eng"] = {
"Engan",
3217449,
"ngf",
aliases = {"Enga-Kewa-Huli", -- Glottolog, Pawley-Hammarström
"Enga-Southern Highlands", -- Usher
},
}
m["ngf-era"] = {
"Erap",
nil,
"ngf-fin",
aliases = {"Erap River"}, -- Usher?
}
m["ngf-eso"] = {
"East Sogeram",
nil,
"ngf-sog",
}
m["ngf-est"] = {
"East Strickland",
5329440,
"ngf",
aliases = {"Strickland River"}, -- alternative name given by Wikipedia
}
m["ngf-eva"] = {
"Evapia",
nil,
"ngf-rai",
aliases = {"Evapia River"}, -- Usher
}
m["ngf-fgi"] = {
"Fore-Gimi",
nil,
"ngf-gor",
aliases = {"South Goroka"}, -- Usher
}
m["ngf-fhu"] = {
"Finisterre-Huon",
3217453,
"ngf",
aliases = {"Finisterre Range-Huon Peninsula"}, -- per Usher
}
m["ngf-fin"] = {
"Finisterre",
5450373,
"ngf-fhu",
aliases = {"Finisterre-Saruwaged", -- Glottolog's name
"Finisterre Range"}, -- per Usher
}
m["ngf-gah"] = {
"Gahuku",
nil,
"ngf-gor",
aliases = {"Alekano-Asaro River"}, -- Usher
}
m["ngf-gau"] = {
"Gauwa",
nil,
"ngf-kai",
aliases = {"West Kainantu"}, -- Usher
}
m["ngf-gaw"] = {
"Greater Awyu",
12627424,
"ngf",
aliases = {"Digul River"}, -- used by Usher (2020)
}
m["ngf-gbi"] = {
"Greater Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf", -- not placed in Trans-New Guinea in Usher (2020)
aliases = {"Guhu-Oro"}, -- Guhu-Oro is used in Usher (2020)
}
m["ngf-gko"] = {
"Gaena-Korafe",
11732347, -- considered a single Korafe language by Wikipedia
"ngf-bin",
aliases = {"Gaina-Korafe"}, -- Usher
}
m["ngf-gmo"] = {
"Gusap-Mot",
16110857,
"ngf-fin",
aliases = {"Mot River"}, -- Usher?
}
m["ngf-gor"] = {
"Goroka",
15478597,
"ngf-kgo",
}
m["ngf-gsu"] = {
"Gogodala-Suki",
5577428,
"ngf", -- Possibly in the proposed Papuan Gulf family. Not in TNG per Glottolog but accepted by all others.
aliases = {"Suki-Gogodala", -- Glottolog's name
"Suki-Aramia River", -- Used in Usher (2020)
},
}
m["ngf-gum"] = {
"Gum",
5618008,
"ngf-mab",
}
m["ngf-gvd"] = {
"Grand Valley Dani", -- considered a single language by Wikipedia
5595219,
"ngf-cda",
}
m["ngf-hag"] = {
"Hagen", -- [[w:Hagen languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Melpa-Kaugel River"}, -- Usher
}
m["ngf-han"] = {
"Hanseman",
5651020,
"ngf-mab",
aliases = {"Hansemann Range"}, -- Usher
}
m["ngf-huo"] = {
"Huon",
5946109,
"ngf-fhu",
aliases = {"Huon Peninsula"}, -- per Usher
}
m["ngf-jim"] = {
"Jimi", -- [[w:Jimi languages]] and [[w:Jimi River languages]] redirect to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Jimi River"}, -- Usher
}
m["ngf-kab"] = {
"Kabwum",
nil,
"ngf-huo",
aliases = {"Timbe-Selepet-Komba", -- Pawley-Hammarström,
"Northwest Huon", -- Usher
},
}
m["ngf-kai"] = {
"Kainantu", -- Kambaira: under "unclassified Kainantu" (Glottolog), Tairora (Pawley-Hammarström), Gauwa (Usher)
15478590,
"ngf-kgo",
aliases = {"Gadsup-Auyana-Awa-Tairora"}, -- Wurm,
}
m["ngf-kak"] = {
"Kalam-Kobon",
6350303,
"ngf-ksa",
aliases = {"Kalam",
"Kaironk River"}, -- Usher (2020)
}
m["ngf-kau"] = {
"Kaukombar",
nil,
"ngf-nad",
aliases = {"Kaukombaran", -- Glottolog following Z'graggen (1975)
"Kaukombar River"}, -- Usher's term
}
m["ngf-kbm"] = {
"Kosorong-Burum-Mindik",
nil,
"ngf-huo",
aliases = {"Bulum River"}, -- Usher
}
m["ngf-kgo"] = {
"Kainantu-Goroka",
3217463,
"ngf",
aliases = {"Eastern Highlands"}, -- per Usher (2020)
}
m["ngf-khu"] = {
"Kewa-Huli",
nil,
"ngf-eng",
aliases = {"Huli-Southern Highlands"}, -- Usher
}
m["ngf-kma"] = {
"Kâte-Mape",
nil,
"ngf-ehu",
aliases = {"Kate-Mape-Sene", -- Pawley-Hammarström (with Sene),
"Southeast Huon", -- Usher
},
}
m["ngf-kme"] = {
"Kapau-Menya",
nil,
"ngf-ang",
aliases = {"Southeast Kratke Range"}, -- Usher
}
m["ngf-koi"] = {
"Koiarian",
11154240,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Koiari-Managalas Plateau"},
}
m["ngf-kok"] = {
"Kokon", -- Usher calls it South Mabuso but includes Gum in it
nil,
"ngf-mab",
}
m["ngf-kow"] = {
"Kowan",
6435004,
"ngf-mad",
aliases = {"Isumrud Strait"}, -- per Usher (2020)
}
m["ngf-ksa"] = {
"Kalam-Southern Adelbert",
nil,
"ngf-mad",
aliases = {"Kalamic-South Adelbert", -- Glottolog
"West Madang"}, -- Usher (2020)
}
m["ngf-kto"] = {
"Kube-Tobo", -- per Glottolog, one language "Kulungtfu-Yuanggeng-Tobo"
1173235, -- code for Tobo-Kube language
"ngf-huo",
aliases = {"Tobo-Kube"},
}
m["ngf-kts"] = {
"Komyandaret-Tsaukambo",
nil,
"ngf-bda",
aliases = {"Becking River"}, -- Usher
}
m["ngf-kum"] = {
"Kumil",
nil,
"ngf-nad",
aliases = {"Kumilan", -- Pawley-Hammarström following Z'graggen (1975)
"Kumil River"}, -- Usher's term
}
m["ngf-kya"] = {
"Kamano-Yagaria",
nil,
"ngf-gor",
aliases = {"Henganofi", -- Usher
"Kamano-Yagaria-Keigana",
},
}
m["ngf-lok"] = {
"Lowland Ok",
nil,
"ngf-okk",
}
m["ngf-mab"] = {
"Mabuso",
6721668,
"ngf-mad",
}
m["ngf-mad"] = {
"Madang",
11217556,
"ngf",
aliases = {"Madang-Adelbert Range"}, -- Z'graggen (1975), corresponding to today's Madang except in lacking Kalam and Gants
}
m["ngf-mek"] = {
"Mek",
6810515,
"ngf",
aliases = {"Goliath"}, -- outdated alternative name given by Wikipedia
}
m["ngf-min"] = {
"Mindjim",
86749913,
"ngf-mad",
aliases = {"Lower Minjim", -- Glottolog, placed in Rai Coast by Glottolog and Pawley-Hammarström; Glottolog's
-- Mindjim has 6 languages, including "Upper Minjim" (Rerau and Sgi Bara)
"Mindjim River", -- Usher
"Minjim", "Minjim River",
},
}
-- Add if Molet is separated from Asaro'o
-- m["ngf-moa"] = {
-- "Molet-Asaro'o",
-- nil,
-- "ngf-war",
-- }
m["ngf-mok"] = {
"Mountain Ok", -- [[w:Mountain Ok languages]] redirects to [[w:Ok languages]]
nil,
"ngf-okk",
}
m["ngf-mom"] = {
"Mombum",
6897077,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Mombum-Koneraw", "Komolom", "Muli Strait"}, -- Pawley-Hammarström uses Komolom, Usher uses Muli Strait
}
m["ngf-msu"] = {
"Mian-Suganga", -- considred a single Mian language by Wikipedia
12952846,
"ngf-mok",
aliases = {"Mianic"}, -- Glottolog
}
m["ngf-nad"] = {
"Northern Adelbert", -- not accepted by Pawley-Hammarström
16952821, -- code for Croisilles linkage
"ngf-mad",
aliases = {"Adelbert Range-Isumrud Strait", -- Usher (2020)
"North Adelbert",
"Pihom-Isumrud"}, -- Ross?
}
m["ngf-nbi"] = {
"North Binanderean",
nil,
"ngf-bin",
aliases = {"Suena-Zia"}, -- Usher
}
m["ngf-nde"] = {
"Ndeiram", -- [[w:Ndeiram River languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Ndeiram River"}, -- Usher?
}
m["ngf-ngn"] = {
"Ngalik-Nduga", -- [[w:Ngalik languages]] redirects to [[w:Baliem Valley languages]] = Dani languages
nil,
"ngf-dan",
aliases = {"Ngalik"}, -- Usher
}
m["ngf-nso"] = {
"North Sogeram",
nil,
"ngf-sog",
aliases = {"Mum-Sirva", -- Usher
"North Central Sogeram", -- used by those who accept Central Sogeram (= North Sogeram + Apali and Manat)
"North-Central Sogeram", -- rarer than without the dash
"Sikan"}, -- Z’graggen (1975?)
}
m["ngf-num"] = {
"Numugen",
nil,
"ngf-nad",
aliases = {"Numugenan", -- Glottolog following Z'graggen 1975
"Numugen River"}, -- Usher's term
}
m["ngf-nur"] = {
"Nuru", -- Usher excludes Yangulam, Pawley-Hammarström include Jilim and Rerau
nil,
"ngf-rai",
aliases = {"Nuru River"}, -- Usher?
}
m["ngf-nwh"] = {
"Northwest Hanseman", -- Usher
nil,
"ngf-han",
aliases = {"Wamas-Samosa-Murupi-Mosimo"}, -- Glottolog, Greenhill, and Pawley-Hammarström following Z'graggen; the most common name, but very unwieldy
}
m["ngf-oen"] = {
"Outer Engan", -- considered a single Nete language by Wikipedia
6998869,
"ngf-enc",
aliases = {"Nete-Bisorio"}, -- Usher
}
m["ngf-okk"] = {
"Ok",
7081687,
"ngf",
}
m["ngf-omo"] = {
"Omosan", -- not included in (Greater) Northern Adelbert by Glottolog, but a sister
nil,
"ngf-nad",
}
m["ngf-oro"] = {
"Orokaivic",
7103752, -- considered a single Orokaiva language by Wikipedia
"ngf-bin",
aliases = {"Central Oro"}, -- Usher
}
m["ngf-pan"] = {
"Paniai Lakes",
6035631,
"ngf",
aliases = {"Wissel Lakes", "Wissel Lakes-Kemandoga River"}, -- alternative names given by Wikipedia
}
m["ngf-pek"] = {
"Peka",
nil,
"ngf-rai",
aliases = {"Peka River"}, -- Usher?
}
m["ngf-pom"] = {
"Pomoikan",
nil,
"ngf-sad",
}
m["ngf-rai"] = {
"Rai Coast",
7283663,
"ngf-mad",
aliases = {"South Madang"}, -- Usher
}
m["ngf-sab"] = {
"Sabakor", -- [[w:Sabakor languages]] redirects to [[w:Asmat–Kamrau languages]]
nil, -- 55994614 is for [[Category:Kamrau Bay languages]], which exists on enwiki
"ngf-ask",
aliases = {"Kamrau Bay"}, -- Usher
}
m["ngf-sad"] = {
"Southern Adelbert",
12633980,
"ngf-ksa",
aliases = {"South Adelbert", -- Glottolog
"Southern Adelbert Range", -- Z'graggen (1980)
"Sogeram and Tomul Rivers"}, -- Usher (2020)?
}
m["ngf-sak"] = {
"Sau-Angal-Kewa",
nil,
"ngf-khu",
aliases = {"Southern Highlands"}, -- Usher
}
m["ngf-san"] = {
"Sankwep",
nil,
"ngf-huo",
aliases = {"Nabak-Momolili", -- Pawley-Hammarström,
"Southwest Huon", -- Usher
},
}
m["ngf-sbh"] = {
"South Bird's Head",
7566330,
"ngf",
}
m["ngf-sim"] = {
"Simbu",
nil,
"ngf-chw",
}
m["ngf-sog"] = {
"Sogeram",
86750419,
"ngf-sad",
aliases = {"Sogeram River", -- Usher
"Wanang"},
}
m["ngf-sop"] = {
"Sopac",
nil,
"ngf-ehu",
aliases = {"Momare-Migabac", -- Pawley-Hammarström,
"Masaweng River", -- Usher
},
}
m["ngf-taa"] = {
"Tainae-Akoye",
nil,
"ngf-ata",
aliases = {"Akoye-Tainae"}, -- Usher
}
m["ngf-tai"] = {
"Tairora",
nil,
"ngf-kai",
aliases = {"Tairoric", -- Glottolog,
"East Kainantu", -- Usher
},
}
m["ngf-tib"] = {
"Tiboran",
nil,
"ngf-nad",
aliases = {"Nuclear Tibor", -- Glottolog, excluding Wanambre/Mokati
"Tiboran River", -- Usher (2020)
"Tibor", -- Pick (2020) and Glottolog including Wanambre/Mokati
}
}
m["ngf-tna"] = {
"Tangko-Nakai",
nil,
"ngf-okk",
aliases = {"Central Ok"}, -- Usher
}
m["ngf-uru"] = {
"Uruwa",
nil,
"ngf-fin",
aliases = {"Uruwa River"}, -- Usher?
}
m["ngf-usi"] = {
"Utu-Silopi",
nil,
"ngf-han",
aliases = {"Silopi-Utu"}, -- Usher
}
m["ngf-waa"] = {
"Wantoat-Awara", -- not in Usher but Wantoat and Awara form a dialect chain
nil,
"ngf-wan",
aliases = {"Awara-Wantoat"}, -- per Wikipedia
}
m["ngf-wah"] = {
"Wahgi", -- [[w:Wahgi languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Wahgi Valley"}, -- Usher
}
m["ngf-wan"] = {
"Wantoatic",
nil,
"ngf-fin",
aliases = {"Wantoat",
"Wantoat River", -- Usher?
},
}
m["ngf-war"] = {
"Warup",
12645082,
"ngf-fin",
aliases = {"Warup River"}, -- Usher?
}
m["ngf-woj"] = {
"Wojokesic",
nil,
"ngf-ang",
aliases = {"Northeast Kratke Range"}, -- Usher
}
m["ngf-wok"] = {
"West Ok",
nil,
"ngf-okk",
aliases = {"Kwer-Kopkaka-Burumakok"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-wso"] = {
"West Sogeram",
nil,
"ngf-sog",
aliases = {"Mand-Nend", -- Usher
"Atan", -- Wurm following Z'graggen
},
}
m["ngf-yag"] = {
"Yaganon", -- placed in Rai Coast by Glottolog and Pawley-Hammarström
35323986,
"ngf-mad",
aliases = {"Yaganon River"}, -- Usher
}
m["ngf-yal"] = {
"Yali", -- considered a single language by Wikipedia
8047468,
"ngf-ngn",
aliases = {"Ngalik"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-yar"] = {
"Yareban",
16977672,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Musa River"},
}
m["ngf-ynu"] = {
"Yau-Nungon",
12953319, -- for the single Yau language in Wikipedia ([[w:Yau language (Trans–New Guinea)]])
"ngf-uru",
}
m["ngf-yup"] = {
"Yupna",
nil,
"ngf-fin",
aliases = {"Yupna River"}, -- Usher?
}
m["nic"] = {
"Niger-Congo",
33838,
aliases = {"Niger-Kordofanian"},
}
m["nic-alu"] = {
"Alumic",
4737355,
"nic-plt",
}
m["nic-bas"] = {
"Basa",
4866154,
"nic-knj",
}
m["nic-bbe"] = {
"Eastern Beboid",
nil,
"nic-beb",
}
m["nic-bco"] = {
"Benue-Congo",
33253,
"nic-vco",
}
m["nic-bcr"] = {
"Bantoid-Cross",
806983,
"nic-bco",
}
m["nic-bdn"] = {
"Northern Bantoid",
nil,
"nic-bod",
aliases = {"North Bantoid"},
}
m["nic-bds"] = {
"Southern Bantoid",
3183152,
"nic-bod",
aliases = {"Wide Bantu", "Bin"},
}
m["nic-beb"] = {
"Beboid",
813549,
"nic-bds",
}
m["nic-ben"] = {
"Bendi",
4887065,
"nic-bcr",
}
m["nic-beo"] = {
"Beromic",
4894642,
"nic-plt",
}
m["nic-bod"] = {
"Bantoid",
806992,
"nic-bcr",
}
m["nic-buk"] = {
"Buli-Koma",
nil,
"nic-ovo",
}
m["nic-bwa"] = {
"Bwa",
12628562,
"nic-gur",
other_names = {"Bwamu", "Bomu"},
}
m["nic-cde"] = {
"Central Delta",
3813191,
"nic-cri",
}
m["nic-cri"] = {
"Cross River",
1141096,
"nic-bcr",
}
m["nic-dag"] = {
"Dagbani",
nil,
"nic-wov",
}
m["nic-dak"] = {
"Dakoid",
1157745,
"nic-bdn",
}
m["nic-dge"] = {
"Escarpment Dogon",
5397128,
"qfa-dgn",
}
m["nic-dgw"] = {
"West Dogon",
nil,
"qfa-dgn",
}
m["nic-eko"] = {
"Ekoid",
1323395,
"nic-bds",
}
m["nic-eov"] = {
"Eastern Oti-Volta",
nil,
"nic-ovo",
aliases = {"Samba"},
}
m["nic-fru"] = {
"Furu",
5509783,
"nic-bds",
}
m["nic-gne"] = {
"Eastern Gurunsi",
12633072,
"nic-gns",
aliases = {"Eastern Grũsi"},
}
m["nic-gnn"] = {
"Northern Gurunsi",
nil,
"nic-gns",
aliases = {"Northern Grũsi"},
}
m["nic-gnw"] = {
"Western Gurunsi",
nil,
"nic-gns",
aliases = {"Western Grũsi"},
}
m["nic-gns"] = {
"Gurunsi",
721007,
"nic-gur",
aliases = {"Grũsi"},
}
m["nic-gre"] = {
"Eastern Grassfields",
5330160,
"nic-grf",
}
m["nic-grf"] = {
"Grassfields",
750932,
"nic-bds",
aliases = {"Grassfields Bantu", "Wide Grassfields"},
}
m["nic-grm"] = {
"Gurma",
30587833,
"nic-ovo",
}
m["nic-grs"] = {
"Southwest Grassfields",
7571285,
"nic-grf",
}
m["nic-gur"] = {
"Gur",
33536,
"alv-sav",
aliases = {"Voltaic"},
}
m["nic-ief"] = {
"Ibibio-Efik",
2743643,
"nic-lcr",
}
m["nic-jer"] = {
"Jera",
nil,
"nic-kne",
}
m["nic-jkn"] = {
"Jukunoid",
1711622,
"nic-pla",
}
m["nic-jrn"] = {
"Jarawan",
1683430,
"nic-mba",
}
m["nic-jrw"] = {
"Jarawa",
35423,
"nic-jrn",
}
m["nic-kam"] = {
"Kambari",
6356294,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
nil,
"nic",
}
m["nic-kau"] = {
"Kauru",
nil,
"nic-kne",
}
m["nic-kmk"] = {
"Kamuku",
6359821,
"nic-knj",
}
m["nic-kne"] = {
"East Kainji",
5328687,
"nic-knj",
}
m["nic-knj"] = {
"Kainji",
681495,
"nic-pla",
}
m["nic-knn"] = {
"Northwest Kainji",
7060098,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
6377681,
"nic",
aliases = {"Katla", "Katla-Tima"},
}
m["nic-lcr"] = {
"Lower Cross River",
3813193,
"nic-cri",
}
m["nic-mam"] = {
"Mamfe",
2005898,
"nic-bds",
aliases = {"Nyang"},
}
m["nic-mba"] = {
"Mbam",
687826,
"nic-bds",
}
m["nic-mbc"] = {
"Mba",
6799561,
"nic-ubg",
}
m["nic-mbw"] = {
"West Mbam",
nil,
"nic-mba",
}
m["nic-mmb"] = {
"Mambiloid",
1888151,
other_names = {"North Bantoid"}, -- per Wikipedia, North Bantoid is the parent family
"nic-bdn",
}
m["nic-mom"] = {
"Momo",
6897393,
"nic-grf",
}
m["nic-mre"] = {
"Moré",
nil,
"nic-wov",
}
m["nic-ngd"] = {
"Ngbandi",
36439,
"nic-ubg",
}
m["nic-nge"] = {
"Ngemba",
7022271,
"nic-gre",
}
m["nic-ngk"] = {
"Ngbaka",
3217499,
"nic-ubg",
}
m["nic-nin"] = {
"Ninzic",
7039282,
"nic-plt",
}
m["nic-nka"] = {
"Nkambe",
7042520,
"nic-gre",
}
m["nic-nkb"] = {
"Baka",
nil,
"nic-nkw",
}
m["nic-nke"] = {
"Eastern Ngbaka",
nil,
"nic-ngk",
}
m["nic-nkg"] = {
"Gbanziri",
nil,
"nic-nkw",
}
m["nic-nkk"] = {
"Kpala",
nil,
"nic-nkw",
}
m["nic-nkm"] = {
"Mbaka",
nil,
"nic-nkw",
}
m["nic-nkw"] = {
"Western Ngbaka",
nil,
"nic-ngk",
}
m["nic-npd"] = {
"North Plateau Dogon",
nil,
"qfa-dgn",
}
m["nic-nun"] = {
"Nun",
13654297,
"nic-gre",
}
m["nic-nwa"] = {
"Nanga-Walo",
nil,
"qfa-dgn",
}
m["nic-ogo"] = {
"Ogoni",
2350726,
"nic-cri",
aliases = {"Ogonoid"},
}
m["nic-ovo"] = {
"Oti-Volta",
1157178,
"nic-gur",
}
m["nic-pla"] = {
"Platoid",
453244,
"nic-bco",
aliases = {"Central Nigerian"},
}
m["nic-plc"] = {
"Central Plateau",
5061668,
"nic-plt",
}
m["nic-pld"] = {
"Plains Dogon",
nil,
"qfa-dgn",
}
m["nic-ple"] = {
"East Plateau",
5329154,
"nic-plt",
}
m["nic-pls"] = {
"South Plateau",
7568236,
"nic-plt",
aliases = {"Jilic-Eggonic"},
}
m["nic-plt"] = {
"Plateau",
1267471,
"nic-pla",
}
m["nic-ras"] = {
"Rashad",
3401986,
"nic",
}
m["nic-rnc"] = {
"Central Ring",
nil,
"nic-rng",
}
m["nic-rng"] = {
"Ring",
2269051,
"nic-grf",
aliases = {"Ring Road"},
}
m["nic-rnn"] = {
"Northern Ring",
nil,
"nic-rng",
}
m["nic-rnw"] = {
"Western Ring",
nil,
"nic-rng",
}
m["nic-ser"] = {
"Sere",
7453058,
"nic-ubg",
}
m["nic-shi"] = {
"Shiroro",
7498953,
"nic-knj",
aliases = {"Pongu"},
}
m["nic-sis"] = {
"Sisaala",
36532,
"nic-gnw",
}
m["nic-tar"] = {
"Tarokoid",
2394472,
"nic-plt",
}
m["nic-tiv"] = {
"Tivoid",
752377,
"nic-bds",
}
m["nic-tvc"] = {
"Central Tivoid",
nil,
"nic-tiv",
}
m["nic-tvn"] = {
"Northern Tivoid",
nil,
"nic-tiv",
}
m["nic-ubg"] = {
"Ubangian",
33932,
"nic-vco", -- or none
}
m["nic-uce"] = {
"East-West Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucn"] = {
"North-South Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucr"] = {
"Upper Cross River",
4108624,
"nic-cri",
aliases = {"Upper Cross"},
}
m["nic-vco"] = {
"Volta-Congo",
37228,
"alv",
}
m["nic-wov"] = {
"Western Oti-Volta",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nic-ykb"] = {
"Yukubenic",
16909196,
"nic-plt",
aliases = {"Oohum"},
}
m["nic-ymb"] = {
"Yambasa",
nil,
"nic-mba",
}
m["nic-yon"] = {
"Yom-Nawdm",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nub"] = {
"Nubian",
1517194,
"sdv-nes",
}
m["nub-hil"] = {
"Hill Nubian",
5762211,
"nub",
aliases = {"Kordofan Nubian"},
}
m["omq"] = {
"Oto-Manguean",
33669,
}
m["omq-cha"] = {
"Chatino",
35111,
"omq-zap",
}
m["omq-chi"] = {
"Chinantecan",
35828,
"omq",
}
m["omq-cui"] = {
"Cuicatec",
616024,
"omq-mix",
}
m["omq-maz"] = {
"Mazatecan",
36230,
"omq",
aliases = {"Mazatec"},
}
m["omq-mix"] = {
"Mixtecan",
21083066,
"omq",
}
m["omq-mxt"] = {
"Mixtec",
36363,
"omq-mix",
}
m["omq-otp"] = {
"Oto-Pamean",
1270220,
"omq",
}
m["omq-pop"] = {
"Popolocan",
5132273,
"omq",
}
m["omq-tri"] = {
"Triqui",
780200,
"omq-mix",
aliases = {"Trique"},
}
m["omq-zap"] = {
"Zapotecan",
8066463,
"omq",
}
m["omq-zpc"] = {
"Zapotec",
13214,
"omq-zap",
}
m["omv"] = {
"Omotic",
33860,
"afa",
}
m["omv-aro"] = {
"Aroid",
3699526,
"omv",
aliases = {"Ari-Banna", "South Omotic", "Somotic"},
}
m["omv-diz"] = {
"Dizoid",
430251,
"omv",
aliases = {"Maji", "Majoid"},
}
m["omv-eom"] = {
"East Ometo",
20527288,
"omv-ome",
}
m["omv-gon"] = {
"Gonga",
4143043,
"omv",
aliases = {"Kefoid"},
}
m["omv-mao"] = {
"Mao",
1351495,
"omv",
}
m["omv-nom"] = {
"North Ometo",
nil,
"omv-ome",
}
m["omv-ome"] = {
"Ometo",
36310,
"omv",
}
m["oto"] = {
"Otomian",
130372545,
"omq-otp",
}
m["oto-otm"] = {
"Otomi",
36355,
"oto",
}
m["paa"] = {
"Papuan",
236425,
"qfa-not",
}
m["paa-aia"] = {
"Aian",
4767739, -- Annaberg languages
"paa-ram",
aliases = {"Middle Ramu", -- Foley (with Rao),
"Annaberg", -- with Rao
"Aram-Aren", -- Usher
},
}
m["paa-alp"] = {
"Alor-Pantar",
3502429,
"paa-tap",
}
m["paa-amu"] = {
"Amto-Musan",
480281,
aliases = {"Samaia River"},
}
m["paa-ani"] = {
"Anim",
55603991,
aliases = {"Fly River"},
}
m["paa-ara"] = {
"Arapesh",
4784223,
"paa-koa",
aliases = {"Arapeshan"}, -- Foley
}
m["paa-arf"] = {
"Arafundi",
4783702,
}
m["paa-ata"] = {
"Ataitan",
4812652,
"paa-ram",
aliases = {"Tangu", -- Foley
"Tanggu", -- alternative name given by Wikipedia
"Moam River", -- Usher
},
}
m["paa-baa"] = {
"Bayono-Awbono",
2424781,
}
m["paa-bai"] = {
"Baining",
748487,
aliases = {"East New Britain"},
}
m["paa-baw"] = {
"Bosngun-Awar",
nil,
"paa-ott",
aliases = {"East Ramu Coast", -- Usher
"Bosman-Awar", -- Wikipedia
},
}
m["paa-bew"] = {
"Bewani", -- [[w:Bewani languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
16113460,
"paa-bor",
aliases = {"Poal River"}, -- Usher
}
m["paa-boa"] = {
"Boazi",
48803717,
"paa-mby",
aliases = {"Lake Murray"}, -- Usher
}
m["paa-bor"] = {
"Border",
1752158,
aliases = {"Upper Tami",
"Tami River-Bewani Range", -- Usher
},
}
m["paa-bul"] = {
"Bulaka River",
4987195,
aliases = {"Yelmek-Maklew", "Jabga"}, -- Yelmek-Maklew in Evans (2018) and Gregor (2021)
}
m["paa-bvi"] = {
"Betaf-Vitou", -- Glottolog
nil,
"paa-tor",
aliases = {"Vitou-Betaf", -- Wikipedia
"Fitou-Tena", -- Usher
"Manirem",
},
}
m["paa-clp"] = {
"Central Lakes Plain", -- [[w:Central Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86780132 is for the corresponding category, which exists in enwiki
"paa-lpl",
aliases = {"East Tariku", -- Glottolog
"Central Lakes Plains", -- Usher
},
}
m["paa-dtu"] = {
"Doso-Turumsa",
16917784,
-- possibly related to East Strickland languages
aliases = {"Soari River"}, -- Usher's name
}
m["paa-ebh"] = {
"East Bird's Head",
338064,
aliases = {"Mantion-Meax", "Mantion-Meyah", -- Mantion-Meax is Wikipedia's term
"Southeast Bird's Head", -- Usher (2020)
},
}
m["paa-eel"] = {
"Eastern Eleman",
nil,
"paa-ele",
aliases = {"East Eleman"},
}
m["paa-egb"] = {
"East Geelvink Bay",
1497678,
aliases = {"Geelvink Bay", "East Cenderawasih"}, -- Geelvink Bay per Glottolog
}
m["paa-eke"] = {
"East Keram",
nil,
"paa-ker",
}
m["paa-ele"] = {
"Eleman",
3034298,
aliases = {"Kerema Bay"},
}
m["paa-elp"] = {
"East Lakes Plain", -- [[w:East Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]; but Croatian Wikipedia has an entry
12633078,
"paa-lpl",
aliases = {"East Lakes Plains"}, -- Usher
}
m["paa-epw"] = {
"Eastern Pauwasi",
16115496,
aliases = {"East Pauwasi"},
}
m["paa-etf"] = {
"Eastern Trans-Fly",
5330530,
aliases = {"Oriomo"}, -- in increasing recent use, probably originating in Evans (2018)
}
m["paa-eti"] = {
"East Timor",
15496066,
"paa-tap",
aliases = {"Oirata-Makasae", -- Wikipedia's name
"Eastern Timor", -- alternative name given by Wikipedia
"Fataluku-Makasai", "Oirata-Makasai", -- alternative names given by Wikidata
},
}
m["paa-fas"] = {
"Fas",
3502658,
aliases = {"Baibai-Fas"}, -- Glottolog's name
}
m["paa-flp"] = {
"Far West Lakes Plain", -- [[w:Wapoga River languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86808337 is for the corresponding Wapoga languages category, which exists in enwiki
"paa-lpl",
aliases = {"Rasawa", -- Clouse (1997)
"Wapoga River", -- Usher, including Kehu/Keuw (unclassified by others)
},
}
m["paa-gkw"] = {
"Greater Kwerba",
12635134,
aliases = {"West Foja Range", -- Usher
"Kwerbic", -- Wikipedia
"Kwerba", -- Foley (2018)
},
}
m["paa-gto"] = {
"Galela-Tobelo",
nil,
"paa-nnh",
aliases = {"Mainland North Halmaheran", -- Glottolog
"Mainland North Halmahera", "Northeast Halmahera", -- alternative names
"Northeast Halmaheran", -- Wikipedia, from Verhoeve 1988
},
}
m["paa-hya"] = {
"Heyo-Yahang",
nil,
"paa-mam",
aliases = {"Yahang-Heyo"}, -- Wikipedia's name
}
m["paa-ing"] = {
"Inland Gulf",
6034783,
"paa-ani",
aliases = {"Inland Gulf of Papua"}, -- Glottolog
}
m["paa-isk"] = {
"Inner Sko",
65043889,
"paa-sko",
aliases = {"Skouic", -- Glottolog
"West Vanimo Coast", -- Usher
"Western Skou", -- Wikipedia
"Inner Skou", "Nuclear Skou", -- alternative names given by Wikipedia
},
}
m["paa-iwa"] = {
"Iwam",
15147853,
"paa-sep",
}
m["paa-kae"] = {
"Kamula-Elevala",
130390498,
-- often placed in TNG
aliases = {"Kamula-Elevala River"},
}
m["paa-kan"] = {
"Kanum", -- removed from Tonda by Glottolog
nil,
"paa-ton",
}
m["paa-kay"] = {
"Kayagaric",
7566330,
aliases = {"Kayagar", -- formerly common
"Cook River"}, -- per Usher (2020)
}
m["paa-ker"] = {
"Keram",
48768173,
-- often grouped within or coordinate with the Ramu languages
aliases = {"Keram River"},
}
m["paa-kiw"] = {
"Kiwaian",
338449,
aliases = {"Kiwai"}, -- formerly common, still sees some use
}
m["paa-kko"] = {
"Kaure-Kosare", -- rejected by Pawley-Hammarström but accepted by Glottolog, Foley (2018) and Usher (2020)
48767891,
aliases = {"Nawa River"}, -- Usher's term
}
m["paa-koa"] = {
"Kombio-Arapesh",
16115049,
"paa-trr",
aliases = {"Kombio-Arapeshan", -- Laycock, who includes Wom
"Kombio-Arapesh-Urat", -- Glottolog, including Urat
},
}
m["paa-kol"] = {
"Kolopom",
6427807,
}
m["paa-kom"] = {
"Kombio",
65044238,
"paa-koa",
aliases = {"Kombian", -- Laycock
"Kombio-Yambes", -- Glottolog
},
}
m["paa-kun"] = {
"Kunimaipan",
134973258,
aliases = {"Northwest Wharton Range"}, -- per Usher (2020)
-- often considered a subfamily of Goilalan
}
m["paa-kwa"] = {
"Kwalean",
6450053,
aliases = {"Humene-Uare"},
}
m["paa-kwe"] = {
"Kwerba proper",
12635134,
"paa-gkw",
aliases = {"Kwerba", -- Usher
"Kwerbaic", -- Glottolog
},
}
m["paa-kwo"] = {
"Kwomtari",
2075415,
aliases = {"Kwomtari-Nai"}, -- Senu River is a larger unproven proposal
}
m["paa-lla"] = {
"Loloda-Laba", -- a single language in Glottolog (Loloda-Laba) and Wikipedia (Loloda)
11732388, -- for the Loloda language
"paa-gto",
aliases = {"Loloda"}, -- Wikipedia's name
}
m["paa-lma"] = {
"Left May",
614468,
aliases = {"Arai River"}, -- per Usher (2020)
-- Sometimes in a putative Arai-Samaia family along with Amto-Musan and the Pyu language
}
m["paa-lmu"] = {
"Lepki-Murkim", -- Kembra accepted by Glottolog and Usher; not by Foley (2020) but does not exclude the possibility
-- of a relationship
85776285,
-- independent family per Glottolog, part of South Pauwasi River family (under Pauwasi) per Usher (2020)
aliases = {"Lepki-Murkim-Kembra"}, -- Glottolog
}
m["paa-lpl"] = {
"Lakes Plain",
6478969,
aliases = {"Lakes Plains"},
}
m["paa-lra"] = {
"Lower Ramu",
65089469,
"paa-ram",
aliases = {"Ottilien-Misegian"}, -- alternative name given by Wikipedia
}
m["paa-lse"] = {
"Lower Sepik",
7061700,
aliases = {"Nor-Pondo"},
}
m["paa-mai"] = {
"Mairasi",
6736896,
aliases = {"Mairasic"}, -- per Glottolog
}
m["paa-mal"] = {
"Mailuan",
6735839,
aliases = {"Cloudy Bay"},
}
m["paa-mam"] = {
"Maimai", -- Foley's Maimai is expanded
53679325, -- this is the code for the expanded Maimai with 6 languages, as opposed to the 3 in "Nuclear Maimai"
"paa-trr",
aliases = {"Nuclear Maimai", -- Glottolog's name
"Maimai proper", -- Wikipedia's name
},
}
m["paa-man"] = {
"Manubaran",
6752335,
aliases = {"Mount Brown"},
}
m["paa-mar"] = {
"Marienberg",
1570589,
"paa-trr",
aliases = {"Marienberg Hills"}, -- Usher
}
m["paa-may"] = {
"Maybratic",
4830892, -- the code for the Maybrat language in Wikipedia, which subsumes the two languages of this family
-- putatively included in West Papuan but generally considered an isolated family
aliases = {"Maybrat-Karon"},
}
m["paa-mbi"] = {
"Mbaham-Iha",
85784512,
"qfa-dis", -- Papuan languages; Glottolog groups Karas (Kalamang) with Mbaham-Iha into a (mainland) West Bomberai
-- family and stops there; Wikipedia, following Usher and Schapper (2022), groups Karas, Mbaham-Iha
-- and the large Timor-Alor-Pantar family into a (Greater) West Bomberai family, saying that Karas is no
-- closer to Mbaham-Iha than to Timor-Alor-Pantar.
aliases = {"Mbahaam-Iha", -- used by Wikidata
"Nuclear West Bomberai", -- Glottolog's name
},
}
m["paa-mby"] = {
"Marind-Boazi-Yaqay",
3217484,
"paa-ani",
aliases = {"Marind-Boazi-Yaqai", -- Glottolog
"Marind-Yakhai", -- Usher, without Boazi
"Marind-Yaqai", -- Wikidata
"Marind", -- alternative name given by Wikipedia
"Marind-Arandai", -- alternative name given by Spanish Wikipedia
},
}
m["paa-mmu"] = {
"Mandi-Muniwara",
nil,
"paa-mar",
aliases = {"West Marienberg Hills"}, -- Usher
}
m["paa-mon"] = {
"Monumbo", -- per Glottolog: "No evidence for the Bogia (Monumbo) languages being related to other Torricelli languages was ever presented"
16928417,
aliases = {"Bogia", -- Glottolog
"Bogia Bay", -- Usher (2020)
},
}
m["paa-mri"] = {
"Marindic", -- [[w:Marindic languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Marind"}, -- Usher; a single language
}
m["paa-nam"] = {
"Nambu",
6961418,
"paa-yam",
aliases = {"East Morehead River"}, -- Usher
}
m["paa-nbo"] = {
"North Bougainville",
749496,
}
m["paa-ndu"] = {
"Ndu",
3217498,
"paa-sep", -- Not accepted by Glottolog
aliases = {"Ndu-Nggala"}, -- Usher
}
m["paa-ngk"] = {
"Ngkolmpu", -- considered a single language by Wikipedia
5908646,
"paa-kan",
aliases = {"Ngkantr", -- Glottolog
"Ngkolmpu Kanum", -- Wikipedia
"Ngkontar", -- alternative name given by Wikipedia
"Kanum", -- used by Wikidata
},
}
m["paa-nha"] = {
"North Halmahera",
3217358,
-- possibly in a proposed West Papuan family or an independent family
}
m["paa-nim"] = {
"Nimboran",
12638426,
aliases = {"Nimboranic", -- per Glottolog
"Grime River", -- per Usher (2020)
}
}
m["paa-nnd"] = {
"Nuclear Ndu",
nil,
"paa-ndu",
aliases = {"Ndu", -- Usher, with Boiken/Boikin
"Ndu proper", -- Wikipedia
},
}
m["paa-nnh"] = {
"Northern North Halmahera",
nil,
"paa-nha",
aliases = {"Northern North Halmaheran", -- Glottolog
"Halmahera", -- Usher
"Core Halmaheran", -- Wikipedia
},
}
m["paa-nto"] = {
"Namla-Tofanma",
16918187,
-- independent family per Glottolog and Foley (2018), part of West Pauwasi family (under Pauwasi) per Usher (2020)
}
m["paa-ott"] = {
"Ottilien",
7109477,
"paa-lra",
aliases = {"Ramu Coast", -- Usher
"Watam-Awar-Gamay", -- alternative name given by Wikipedia
},
}
m["paa-pah"] = {
"Pahoturi River",
17049141,
aliases = {"Pahoturi"}, -- per Glottolog
}
m["paa-pal"] = {
"Palei", -- Laycock adds Agi and Nabi/Nambi(-Metan)
65089113,
"paa-wpa",
aliases = {"Nuclear Palai"},
}
m["paa-pia"] = {
"Piawi", -- per Wikipedia, grouped with Arafundi languages to form Upper Yuat, which is a sister to Madang
7190400,
aliases = {"Schraeder Range", -- Usher?
"Waibuk"},
}
m["paa-pio"] = {
"Piore River",
65043152,
"paa-sko",
aliases = {"Barupu Lagoon", -- Glottolog
"Lagoon", -- alternative name given by Wikipedia
},
}
m["paa-por"] = {
"Porapora", -- Foley includes Ambakich (which we, Glottolog, and Usher treat as Keram)
65044258,
"paa-ram",
aliases = {"Agoan", -- Glottolog
"Porapora River", -- Usher
"core Grass", -- alternative name given by Wikipedia
},
}
m["paa-ram"] = {
"Ramu",
3442808,
aliases = {"Ramu River"}, -- per Usher (2020)
}
m["paa-rsa"] = {
"Rasawa-Saponi", -- [[w:Rasawa-Saponi languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q9859418 is for the coresponding category, which exists in the Piedmontese Wikipedia (?!)
"paa-flp",
aliases = {"Rombak River"}, -- Usher
}
m["paa-rub"] = {
"Ruboni",
6875319,
"paa-lra",
aliases = {"Misegian", -- Wikipedia's name
"Mikarew", -- alternative name given by Wikipedia
"Ruboni Range"}, -- Usher
}
m["paa-saa"] = {
"Samarokena-Airoran",
96417699,
"paa-gkw",
aliases = {"Apauwar Coast"}, -- Usher
}
m["paa-sah"] = {
"Sahu",
nil,
"paa-nnh",
}
m["paa-sbo"] = {
"South Bougainville",
3217380,
}
m["paa-sen"] = {
"Sentani",
17044584,
-- no consensus on higher affiliations, if any
aliases = {"Sentanic", "Demta-Sentani", "Demta-Lake Sentani"}, -- Sentanic per Glottolog, Demta-Sentani per Wikipedia
}
m["paa-sep"] = {
"Sepik",
3508772,
}
m["paa-shi"] = {
"Serra Hills",
65043154,
"paa-sko",
}
m["paa-sko"] = {
"Sko",
953509,
aliases = {"Skou"},
}
m["paa-sng"] = {
"Senagi",
2066550,
}
m["paa-taa"] = {
"Taikat-Awyi", -- [[w:Taikat languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12643265,
"paa-bor",
aliases = {"Taikat", -- Foley
"Upper Tami River", -- Usher
},
}
m["paa-tam"] = {
"Tamolan",
7681634,
"paa-ram",
aliases = {"Guam River"}, -- Usher
}
m["paa-tap"] = {
"Timor-Alor-Pantar",
16590002,
}
m["paa-teb"] = {
"Teberan",
7692052,
-- Often grouped with Trans-New Guinea, but per Pawley-Hammarström (2018), it has "weaker or disputed claims to membership in TNG".
aliases = {"Dadibi-Folopa"},
}
m["paa-tir"] = {
"Tirio",
7809225,
"paa-ani",
aliases = {"Nuclear Lower Fly", -- Pawley-Hammarström ("Lower Fly" includes Abom)
"Nuclear Tirio", -- Glottolog ("Tirio" includes Abom)
"Lower Fly River", -- Usher (without Abom)
},
}
m["paa-tki"] = {
"Turama-Kikori",
7853680,
aliases = {"Turama-Kikorian", "Rumu-Omati River"},
}
m["paa-ton"] = {
"Tonda",
8581005,
"paa-yam",
aliases = {"West Morehead River"}, -- Usher
}
m["paa-too"] = {
"Tor-Orya",
16590099,
aliases = {"Orya-Tor"},
}
m["paa-tor"] = {
"Tor", -- [[w:Tor languages]] redirects to [[w:Orya–Tor languages]]
nil,
"paa-too",
}
m["paa-trr"] = {
"Torricelli",
1333831,
}
m["paa-tti"] = {
"Ternate-Tidore",
nil,
"paa-nnh",
}
m["paa-wal"] = {
"Walio",
16919872,
-- Often placed in Sepik (e.g. by Laycock and Z'graggen (1975)), but not by Foley (2018), and not accepted by Glottolog.
aliases = {"Walioic", -- Glottolog
"Central Leonhard Schultze River",
},
}
m["paa-wap"] = {
"Wapei", -- Glottolog includes Nabi/Nambi(-Metan) in Wapeic
65089115,
"paa-wpa",
aliases = {"Wapeic"}, -- Glottolog
}
m["paa-war"] = {
"Waris", -- [[w:Waris languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12645076,
"paa-bor",
aliases = {"Warisic", -- Glottolog
"Bapi River", -- Usher (without Manem or Senggi)
},
}
m["paa-wbh"] = {
"West Bird's Head",
5330530,
-- Kuwani is sometimes included; probably related to North Halmahera languages.
}
m["paa-wel"] = {
"Western Eleman",
nil,
"paa-ele",
aliases = {"West Eleman"},
}
m["paa-wig"] = {
"West Inland Gulf",
nil,
"paa-ing",
aliases = {"West Inland Gulf of Papua"}, -- Glottolog
}
m["paa-wke"] = {
"West Keram",
nil,
"paa-ker",
aliases = {"Koam", "Mongol-Langam", "Ulmapo"}, -- Koam used by Foley, Ulmapo used by Glottolog
}
m["paa-wko"] = {
"Wára-Kómnzo", -- since we split out Kómnzo as a separate language
11732474, -- for the Wara language
"paa-ton",
aliases = {"Anta-Komnzo-Wára-Wérè-Kémä", -- Glottolog's name
"Wára", "Wara", -- Wikipedia
},
}
m["paa-wlp"] = {
"West Lakes Plain", -- [[w:Tariku languages]] redirects to [[w:Lakes Plain languages]]
47007503, -- actually for "Tariku languages", which per Wikipedia covers Fayu, Kirikiri, Iau and Tause
"paa-lpl",
aliases = {"West Tariku", -- Glottolog
"West Lakes Plains"}, -- Usher, with Edopi/Iau
}
m["paa-wpa"] = {
"Wapei-Palei",
65043156,
"paa-trr",
}
m["paa-wpw"] = { -- paa-wpa already used by Wapei-Palei
"Western Pauwasi", -- 2 langs per Glottolog and Pawley-Hammarström; Usher also includes Namla-Tofanma and Usku
85815062,
aliases = {"West Pauwasi", -- Wikipedia, Usher
"Tebi-Towe", "Dubu-Towei"},
}
m["paa-yam"] = {
"Yam",
15062272,
aliases = {"Morehead and Upper Maro River",
"Morehead River", -- Usher
},
}
m["paa-yaq"] = {
"Yaqayic", -- [[w:Yaqai languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Yakhai-Warkay"}, -- Usher
}
m["paa-ysa"] = {
"Yawa-Saweru",
3217545,
aliases = {"Yawa", "Yawan", "Yapen"},
}
m["paa-yua"] = {
"Yuat",
8060096,
}
m["phi"] = {
"Philippine",
947858,
"poz",
}
m["phi-kal"] = {
"Kalamian",
3217466,
"phi",
aliases = {"Calamian"},
}
m["poz"] = {
"Malayo-Polynesian",
143158,
"map",
}
m["poz-aay"] = {
"Admiralty Islands",
2701306,
"poz-oce",
}
m["poz-bnn"] = {
"North Bornean",
1427907,
"poz",
}
m["poz-bre"] = {
"East Barito",
2701314,
"poz",
}
m["poz-brw"] = {
"West Barito",
2761679,
"poz",
}
m["poz-bss"] = {
"Bali-Sasak-Sumbawa",
3396043,
"poz-msa",
}
m["poz-btk"] = {
"Bungku-Tolaki",
3217381,
"poz-clb",
}
m["poz-cet"] = {
"Central-Eastern Malayo-Polynesian",
2269883,
"poz",
}
m["poz-clb"] = {
"Celebic",
1078041,
"poz",
}
m["poz-cln"] = {
"New Caledonian",
3091221,
"poz-ocs",
}
m["poz-cma"] = {
"Central Maluku",
3217479,
"poz-cet",
}
m["poz-hce"] = {
"Halmahera-Cenderawasih",
2526616,
"pqe",
}
m["poz-kal"] = {
"Kaili-Pamona",
3217465,
"poz-clb",
}
m["poz-lgx"] = {
"Lampungic",
49215,
"poz",
}
m["poz-mcm"] = {
"Malayo-Chamic",
nil,
"poz-msa",
}
m["poz-mic"] = {
"Micronesian",
420591,
"poz-occ",
}
m["poz-mly"] = {
"Malayic",
662628,
"poz-mcm",
}
m["poz-msa"] = {
"Malayo-Sumbawan",
1363818,
"poz",
}
m["poz-mun"] = {
"Muna-Buton",
3037924,
"poz-clb",
}
m["poz-nws"] = {
"Northwest Sumatran",
2071308,
"poz",
}
m["poz-occ"] = {
"Central-Eastern Oceanic",
2068435,
"poz-oce",
}
m["poz-oce"] = {
"Oceanic",
324457,
"pqe",
}
m["poz-ocs"] = {
"Southern Oceanic",
3039118,
"poz-occ",
}
m["poz-ocw"] = {
"Western Oceanic",
2701282,
"poz-oce",
}
m["poz-pcc"] = {
"Central Pacific",
3130237,
"poz-occ",
}
m["poz-pep"] = {
"Eastern Polynesian",
390979,
"poz-pnp",
}
m["poz-pnp"] = {
"Nuclear Polynesian",
743851,
"poz-pol",
}
m["poz-pol"] = {
"Polynesian",
390979,
"poz-pcc",
}
m["poz-san"] = {
"Sabahan",
3217517,
"poz-bnn",
}
m["poz-sbj"] = {
"Sama-Bajaw",
2160409,
"poz",
}
m["poz-slb"] = {
"Saluan-Banggai",
3217519,
"poz-clb",
}
m["poz-sls"] = {
"Southeast Solomonic",
3119671,
"poz-occ",
}
m["poz-ssw"] = {
"South Sulawesi",
2778190,
"poz",
}
m["poz-stm"] = {
"St. Matthias",
6484143,
"poz-oce",
aliases = {"St Matthias"},
}
m["poz-swa"] = {
"North Sarawakan",
538569,
"poz-bnn",
}
m["poz-tem"] = {
"Temotu",
3075769,
"poz-oce",
}
m["poz-tim"] = {
"Timoric",
7806987,
"poz-cet",
}
m["poz-ton"] = {
"Tongic",
3397263,
"poz-pol",
}
m["poz-tot"] = {
"Tomini-Tolitoli",
3217541,
"poz-clb",
}
m["poz-vnc"] = {
"Central Vanuatu",
5061988,
"poz-ocs",
}
m["poz-vnn"] = {
"North Vanuatu",
85789650,
"poz-ocs",
}
m["poz-vns"] = {
"South Vanuatu",
3070173,
"poz-ocs",
}
m["poz-wot"] = {
"Wotu-Wolio",
1041317,
"poz-clb",
aliases = {"Island Kaili-Wolio"}, -- Glottolog
}
m["pqe"] = {
"Eastern Malayo-Polynesian",
2269883,
"poz-cet",
}
m["qfa-adc"] = {
"Central Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-adm"] = {
"Great Andamanese",
3515103,
}
m["qfa-adn"] = {
"Northern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ads"] = {
"Southern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ain"] = {
"Ainuic",
50111972,
aliases = {"Ainu"},
}
m["qfa-bej"] = {
"Be-Jizhao",
nil,
"qfa-bet",
}
m["qfa-bet"] = {
"Be-Tai",
12627719,
"qfa-tak",
aliases = {"Tai-Be", "Daic-Beic", "Beic-Daic"},
}
m["qfa-buy"] = {
"Buyang",
1109927,
"qfa-kra",
}
m["qfa-cka"] = {
"Chukotko-Kamchatkan",
33255,
}
m["qfa-cre"] = {
"creole",
33289,
"crp",
}
m["qfa-ckn"] = {
"Chukotkan",
2606732,
"qfa-cka",
}
m["qfa-cnt"] = {
"contact",
133253514,
"qfa-not",
}
m["qfa-dis"] = {
-- Languages that are not unclassifiable (qfa-unc) but where there is no consensus on classification. Usually
-- this is because the languages are divergent and it's disputed whether they are isolates or distantly related
-- to other languages.
"disputed affiliation",
nil,
"qfa-not",
categoryName = "Languages of disputed affiliation",
}
m["qfa-dgn"] = {
"Dogon",
1234776,
"nic",
}
m["qfa-dny"] = {
"Dene-Yeniseian",
21103,
aliases = {"Dené-Yeniseian"},
}
m["qfa-hur"] = {
"Hurro-Urartian",
1144159,
}
m["qfa-iso"] = {
"isolate",
33648,
"qfa-not",
categoryName = "Language isolates",
}
m["qfa-kad"] = {
"Kadu", -- considered either Nilo-Saharan or independent/none
1720989,
}
m["qfa-kms"] = {
"Kam-Sui",
1023641,
"qfa-tak",
}
m["qfa-kor"] = {
"Koreanic",
11263525,
}
m["qfa-kra"] = {
"Kra",
1022087,
"qfa-tak",
}
m["qfa-lic"] = {
"Hlai",
1023648,
"qfa-tak",
aliases = {"Hlaic"},
}
m["qfa-mch"] = { -- used in both N and S America
"Macro-Chibchan",
3438062,
}
m["qfa-mix"] = {
"mixed",
33694,
"qfa-cnt",
}
m["qfa-not"] = {
"not a family",
nil,
"qfa-not",
}
m["qfa-onb"] = {
"Be",
nil,
"qfa-bej",
aliases = {"Ong-Be", "Beic"},
}
m["qfa-ong"] = {
"Ongan",
2090575,
aliases = {"Angan", "South Andamanese", "Jarawa-Onge"},
}
m["qfa-pid"] = {
"pidgin",
33831,
"crp",
}
m["qfa-sub"] = {
"substrate",
20730913,
"qfa-not",
}
m["qfa-tak"] = {
"Kra-Dai",
34171,
aliases = {"Tai-Kadai", "Kadai"},
}
m["qfa-tyn"] = {
"Tyrsenian",
1344038,
}
m["qfa-unc"] = {
-- This corresponds to languages normally called "unclassified", i.e. there is insufficient data or research to
-- classify them, whereas our [[:Category:Unclassified languages]] is just languages that no Wiktionary editor
-- has classified yet (the family code in the language data is missing).
"unclassifiable",
33956,
"qfa-not",
}
m["qfa-xgs"] = {
"Serbi-Mongolic",
108887939,
}
m["qfa-xgx"] = {
"Para-Mongolic",
107619002,
"qfa-xgs",
}
m["qfa-yen"] = {
"Yeniseian",
27639,
"qfa-dny",
aliases = {"Yeniseic", "Yenisei-Ostyak"},
}
m["qfa-yke"] = {
"Ketic",
nil,
"qfa-yen",
}
m["qfa-yko"] = {
"Kottic",
nil,
"qfa-yen",
}
m["qfa-yrn"] = {
"Arinic",
nil,
"qfa-yen",
}
m["qfa-ypm"] = {
"Pumpokolic",
nil,
"qfa-yen",
}
m["qfa-yuk"] = {
"Yukaghir",
34164,
aliases = {"Yukagir", "Jukagir"},
}
m["qwe"] = {
"Quechuan",
5218,
}
m["raj"] = {
"Rajasthani",
13196,
"inc-wes",
protoLanguage = "inc-ogu",
}
m["roa"] = {
"Romance",
19814,
"itc",
aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"},
protoLanguage = "la",
}
m["roa-asl"] = {
"Asturleonese",
35390,
"roa-ibe",
protoLanguage = "roa-ole",
}
m["roa-cas"] = {
"Castilian",
71924,
"roa-ibe",
aliases = {"Castillian", "Castilic", "Castillic"},
protoLanguage = "osp",
}
m["roa-dal"] = {
"Dalmatian Romance",
97646077,
"roa-itd",
}
m["roa-eas"] = {
"Eastern Romance",
147576,
"roa",
}
m["roa-emr"] = {
"Emilian-Romagnol",
242648,
"roa-git",
}
m["roa-gap"] = {
"Galician-Portuguese",
9080204,
"roa-ibe",
aliases = {"Galician Romance", "Galaic-Portuguese"},
protoLanguage = "roa-opt",
}
m["roa-gar"] = {
"Gallo-Romance",
500394,
"roa-wes",
}
m["roa-itd"] = {
"Italo-Dalmatian",
3313381,
"roa-iwr",
aliases = {"Central Romance"}
}
m["roa-itr"] = {
"Italo-Romance",
3356483,
"roa-itd",
}
m["roa-iwr"] = {
"Italo-Western Romance",
112608,
"roa",
aliases = {"Italo-Western"},
}
m["roa-git"] = {
"Gallo-Italic",
516074,
"roa-gar",
aliases = {"Gallo-Italian", "Gallo-Cisalpine", "Cisalpine"},
}
m["roa-grh"] = {
"Gallo-Rhaetian",
97646466,
"roa-gar",
}
m["roa-ibe"] = {
"Ibero-Romance",
749533,
"roa-wes",
aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"}
}
m["roa-nar"] = {
"Navarro-Aragonese",
133252927,
"roa-ibe",
protoLanguage = "roa-ona",
}
m["roa-oil"] = {
"Oïl",
37351,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
protoLanguage = "fro",
}
m["roa-ocr"] = {
"Occitano-Romance",
599958,
"roa-gar",
aliases = {"Gallo-Narbonnese", "East Iberian", "Eastern Iberian"},
}
m["roa-rhe"] = {
"Rhaeto-Romance",
515593,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
}
m["roa-sou"] = {
"Southern Romance",
145345,
"roa",
}
m["roa-wes"] = {
"Western Romance",
2714388,
"roa-iwr",
}
--[=[
Exceptional language and family codes for South American Indian languages
can use the prefix "sai-", though "sai" is no longer itself a family code.
]=]--
m["sai-ara"] = {
"Araucanian",
626630,
}
m["sai-aym"] = {
"Aymaran",
33010,
}
m["sai-bar"] = {
"Barbacoan",
807304,
aliases = {"Barbakoan"},
}
m["sai-bor"] = {
"Boran",
5371776,
}
m["sai-cah"] = {
"Cahuapanan",
1025793,
}
m["sai-car"] = {
"Cariban",
33090,
aliases = {"Carib"},
}
m["sai-cer"] = {
"Cerrado",
98078151,
"sai-jee",
aliases = {"Amazonian Jê"},
}
m["sai-chc"] = {
"Chocoan",
1075616,
aliases = {"Choco", "Chocó"},
}
m["sai-cho"] = {
"Chonan",
33019,
aliases = {"Chon"},
}
m["sai-cje"] = {
"Central Jê",
18010843,
"sai-cer",
aliases = {"Akuwẽ"},
}
m["sai-cpc"] = {
"Chapacuran",
1062626,
}
m["sai-crn"] = {
"Charruan",
3112423,
aliases = {"Charrúan"},
}
m["sai-ctc"] = {
"Catacaoan",
5051139,
}
m["sai-guc"] = {
"Guaicuruan",
1974973,
"sai-mgc",
aliases = {"Guaicurú", "Guaycuruana", "Guaikurú", "Guaycuruano", "Guaykuruan", "Waikurúan"},
}
m["sai-guh"] = {
"Guahiban",
944056,
aliases = {"Guahiboan", "Guajiboan", "Wahivoan"},
}
m["sai-gui"] = {
"Guianan",
nil,
"sai-car",
aliases = {"Guianan Carib", "Guiana Carib"},
}
m["sai-har"] = {
"Harákmbut",
1584402,
"sai-hkt",
aliases = {"Harákmbet"},
}
m["sai-hkt"] = {
"Harákmbut-Katukinan",
17107635,
}
m["sai-hrp"] = {
"Huarpean",
1578336,
aliases = {"Warpean", "Huarpe", "Warpe"},
}
m["sai-jee"] = {
"Jê",
1483594,
"sai-mje",
aliases = {"Gê", "Jean", "Gean", "Jê-Kaingang", "Ye"},
}
m["sai-jir"] = {
"Jirajaran",
3028651,
aliases = {"Hiraháran"},
}
m["sai-jiv"] = {
"Jivaroan",
1393074,
aliases = {"Hívaro", "Jibaro", "Jibaroan", "Jibaroana", "Jívaro"},
}
m["sai-ktk"] = {
"Katukinan",
2636000,
"sai-hkt",
aliases = {"Catuquinan"},
}
m["sai-kui"] = {
"Kuikuroan",
nil,
"sai-car",
aliases = {"Kuikuro", "Nahukwa"},
}
m["sai-map"] = {
"Mapoyan",
61096301,
"sai-ven",
aliases = {"Mapoyo", "Mapoyo-Yabarana", "Mapoyo-Yavarana", "Mapoyo-Yawarana"},
}
m["sai-mas"] = {
"Mascoian",
1906952,
aliases = {"Mascoyan", "Maskoian", "Enlhet-Enenlhet"},
}
m["sai-mgc"] = {
"Mataco-Guaicuru",
255512,
}
m["sai-mje"] = {
"Macro-Jê",
887133,
aliases = {"Macro-Gê"},
}
m["sai-mtc"] = {
"Matacoan",
2447424,
"sai-mgc",
}
m["sai-mur"] = {
"Muran",
33826,
aliases = {"Mura"},
}
m["sai-nad"] = {
"Nadahup",
1856439,
aliases = {"Makú", "Macú", "Vaupés-Japurá"},
}
m["sai-nje"] = {
"Northern Jê",
98078225,
"sai-cer",
aliases = {"Core Jê"},
}
m["sai-nmk"] = {
"Nambikwaran",
15548027,
aliases = {"Nambicuaran", "Nambiquaran", "Nambikuaran"},
}
m["sai-otm"] = {
"Otomacoan",
3217503,
aliases = {"Otomákoan", "Otomakoan"},
}
m["sai-pan"] = {
"Panoan",
1544537,
"sai-pat",
aliases = {"Pano"},
}
m["sai-pat"] = {
"Pano-Tacanan",
2475746,
aliases = {"Pano-Tacana", "Pano-Takana", "Páno-Takána", "Pano-Takánan"},
}
m["sai-pek"] = {
"Pekodian",
107451736,
"sai-car",
aliases = {"South Amazonian Carib", "Southern Cariban", "Pekodi"},
}
m["sai-pem"] = {
"Pemongan",
nil,
"sai-ven",
aliases = {"Pemong", "Pemóng", "Purukoto"},
}
m["sai-pey"] = {
"Peba-Yaguan",
174015,
aliases = {"Peba-Yagua", "Yaguan", "Peban", "Yáwan"},
}
m["sai-prk"] = {
"Parukotoan",
107451482,
"sai-car",
aliases = {"Parukoto"},
}
m["sai-sje"] = {
"Southern Jê",
98078245,
"sai-jee",
}
m["sai-tac"] = {
"Tacanan",
3113762,
"sai-pat",
}
m["sai-tar"] = {
"Taranoan",
105097814,
"sai-gui",
aliases = {"Trio", "Tarano"},
}
m["sai-tuc"] = {
"Tucanoan",
788144,
}
m["sai-tyu"] = {
"Ticuna-Yuri",
4467010,
}
m["sai-ucp"] = {
"Uru-Chipaya",
2475488,
aliases = {"Uru-Chipayan"},
}
m["sai-ven"] = {
"Venezuelan Cariban",
nil,
"sai-car",
aliases = {"Venezuelan Carib", "Venezuelan", "Venezuelano"},
}
m["sai-wic"] = {
"Wichí",
3027047,
}
m["sai-wit"] = {
"Witotoan",
43079317,
aliases = {"Huitotoan", "Uitotoan"},
}
m["sai-ynm"] = {
"Yanomami",
nil,
aliases = {"Yanomam", "Shamatari", "Yamomami", "Yanomaman"},
}
m["sai-yuk"] = {
"Yukpan",
nil,
"sai-car",
aliases = {"Yukpa", "Yukpano", "Yukpa-Japreria"},
}
m["sai-zam"] = {
"Zamucoan",
3048461,
aliases = {"Samúkoan"},
}
m["sai-zap"] = {
"Zaparoan",
33911,
aliases = {"Záparoan", "Saparoan", "Sáparoan", "Záparo", "Zaparoano", "Zaparoana"},
}
m["sal"] = {
"Salish",
33985,
}
m["sdv"] = {
"Eastern Sudanic",
2036148,
"ssa",
}
m["sdv-bri"] = {
"Bari",
nil,
"sdv-nie",
}
m["sdv-daj"] = {
"Daju",
956724,
"sdv",
}
m["sdv-dnu"] = {
"Dinka-Nuer",
nil,
"sdv-niw",
}
m["sdv-eje"] = {
"Eastern Jebel",
3408878,
"sdv",
}
m["sdv-kln"] = {
"Kalenjin",
637228,
"sdv-nis",
}
m["sdv-lma"] = {
"Lotuko-Maa",
nil,
"sdv-nie",
}
m["sdv-lon"] = {
"Northern Luo",
nil,
"sdv-luo",
}
m["sdv-los"] = {
"Southern Luo",
7570103,
"sdv-luo",
}
m["sdv-luo"] = {
"Luo",
nil,
"sdv-niw",
}
m["sdv-nes"] = {
"Northern Eastern Sudanic",
4810496,
"sdv",
aliases = {"Astaboran", "Ek Sudanic"},
}
m["sdv-nie"] = {
"Eastern Nilotic",
153795,
"sdv-nil",
}
m["sdv-nil"] = {
"Nilotic",
513408,
"sdv",
}
m["sdv-nis"] = {
"Southern Nilotic",
1552410,
"sdv-nil",
}
m["sdv-niw"] = {
"Western Nilotic",
3114989,
"sdv-nil",
}
m["sdv-nma"] = {
"Nandi-Markweta",
nil,
"sdv-kln",
}
m["sdv-nyi"] = {
"Nyima",
11688746,
"sdv-nes",
aliases = {"Nyimang"},
}
m["sdv-tmn"] = {
"Taman",
3408873,
"sdv-nes",
aliases = {"Tamaic"},
}
m["sdv-ttu"] = {
"Teso-Turkana",
7705551,
"sdv-nie",
aliases = {"Ateker"},
}
m["sel"] = {
"Selkup",
34008,
"syd",
}
m["sem"] = {
"Semitic",
34049,
"afa",
}
m["sem-ara"] = {
"Aramaic",
28602,
"sem-nwe",
protoLanguage = "arc",
}
m["sem-arb"] = {
"Arabic",
164667,
"sem-cen",
protoLanguage = "ar",
}
m["sem-are"] = {
"Eastern Aramaic",
3410322,
"sem-ara",
}
m["sem-arw"] = {
"Western Aramaic",
3394214,
"sem-ara",
}
m["sem-ase"] = {
"Southeastern Aramaic",
3410322,
"sem-are",
}
m["sem-can"] = {
"Canaanite",
747547,
"sem-nwe",
}
m["sem-cen"] = {
"Central Semitic",
3433228,
"sem-wes",
}
m["sem-cna"] = {
"Central Neo-Aramaic",
3410322,
"sem-are",
}
m["sem-eas"] = {
"East Semitic",
164273,
"sem",
}
m["sem-eth"] = {
"Ethiopian Semitic",
163629,
"sem-wes",
aliases = {"Afro-Semitic", "Ethiopian", "Ethiopic", "Ethiosemitic"},
}
m["sem-nna"] = {
"Northeastern Neo-Aramaic",
2560578,
"sem-are",
}
m["sem-nwe"] = {
"Northwest Semitic",
162996,
"sem-cen",
}
m["sem-osa"] = {
"Old South Arabian",
35025,
"sem-cen",
aliases = {"Epigraphic South Arabian", "Sayhadic"},
}
m["sem-sar"] = {
"Modern South Arabian",
1981908,
"sem-wes",
}
m["sem-wes"] = {
"West Semitic",
124901,
"sem",
}
m["sgn"] = {
"sign",
34228,
"qfa-not",
}
m["sgn-fsl"] = {
"French Sign Languages",
5501921,
"sgn",
}
m["sgn-gsl"] = {
"German Sign Languages",
5551235,
"sgn",
}
m["sgn-jsl"] = {
"Japanese Sign Languages",
11722508,
"sgn",
}
m["sio"] = {
"Siouan",
34181,
"nai-sca",
}
m["sio-dhe"] = {
"Dhegihan",
3217420,
"sio-msv",
}
m["sio-dkt"] = {
"Dakotan",
4154122,
"sio-msv",
}
m["sio-mor"] = {
"Missouri River Siouan",
26807266,
"sio",
}
m["sio-msv"] = {
"Mississippi Valley Siouan",
12637104,
"sio",
}
m["sio-ohv"] = {
"Ohio Valley Siouan",
21070931,
"sio",
}
m["sit"] = {
"Sino-Tibetan",
45961,
aliases = {"Trans-Himalayan"},
}
m["sit-aao"] = {
"Central Naga",
615474,
"sit",
}
m["sit-alm"] = {
"Almora",
nil,
"sit-whm",
}
m["sit-bai"] = {
"Bai",
35103,
"sit-mba",
}
m["sit-bdi"] = {
"Bodish",
1814078,
"sit",
}
m["sit-cln"] = {
"Cai-Long",
107182612,
"sit-mba",
aliases = {"Ta-Li"},
}
m["sit-dhi"] = {
"Dhimalish",
1207648,
"sit",
}
m["sit-ebo"] = {
"East Bodish",
56402,
"sit-bdi",
}
m["sit-egy"] = {
"East rGyalrongic",
832026,
"sit-rgy",
}
m["sit-ers"] = {
"Ersuic",
56335,
"sit",
}
m["sit-gma"] = {
"Greater Magaric",
55612963,
"sit",
}
m["sit-gsi"] = {
"Greater Siangic",
52698851,
"sit",
}
m["sit-hrs"] = {
"Hrusish",
1632501,
"sit",
aliases = {"Southeast Kamengic"},
}
m["sit-jnp"] = {
"Jingphoic",
nil,
"sit-jpl",
aliases = {"Jingpho"},
}
m["sit-jpl"] = {
"Kachin-Luic",
1515454,
"tbq-bkj",
aliases = {"Jingpho-Luish", "Jingpho-Asakian", "Kachinic"},
}
m["sit-kch"] = {
"Konyak-Chang",
nil,
"sit-kon",
}
m["sit-kha"] = {
"Kham",
33305,
"sit-gma",
}
m["sit-khb"] = {
"Kho-Bwa",
6401917,
"sit",
aliases = {"Bugunish", "Kamengic"},
}
m["sit-khw"] = {
"Western Kho-Bwa",
nil,
"sit-khb",
}
m["sit-khc"] = {
"Chug-Lish",
nil,
"sit-khw",
aliases = {"Duhumbi-Khispi"},
}
m["sit-khm"] = {
"Mey-Sartang",
nil,
"sit-khw",
aliases = {"Sartang-Sherdukpen"},
}
m["sit-kic"] = {
"Central Kiranti",
nil,
"sit-kir",
}
m["sit-kie"] = {
"Eastern Kiranti",
nil,
"sit-kir",
}
m["sit-kin"] = {
"Kinnauric",
nil,
"sit-whm",
aliases = {"Kinnauri"},
}
m["sit-kir"] = {
"Kiranti",
922148,
"sit",
}
m["sit-kiw"] = {
"Western Kiranti",
922148,
"sit-kir",
}
m["sit-kon"] = {
"Northern Naga",
774590,
"tbq-bkj",
aliases = {"Konyakian", "Konyak"},
}
m["sit-kyk"] = {
"Kyirong-Kagate",
6450957,
"sit-tib",
}
m["sit-lab"] = {
"Ladakhi-Balti",
6450957,
"sit-tib",
}
m["sit-las"] = {
"Lahuli-Spiti",
6473510,
"sit-tib",
}
m["sit-luu"] = {
"Luish",
55621439,
"sit-jpl",
aliases = {"Asakian", "Sak"},
}
m["sit-mar"] = {
"Maringic",
nil,
"sit-tma",
}
m["sit-mba"] = {
"Macro-Bai",
16963847,
"sit-sba",
aliases = {"Greater Bai"},
}
m["sit-mdz"] = {
"Midzu",
6843504,
"sit",
aliases = {"Geman", "Midzuish", "Miju-Meyor", "Southern Mishmi"},
}
m["sit-mnz"] = {
"Mondzish",
6898839,
"tbq-lob",
aliases = {"Mangish"},
}
m["sit-mru"] = {
"Mruic",
16908870,
"sit",
aliases = {"Mru-Hkongso"},
}
m["sit-nas"] = {
"Naish",
25047956,
"sit-nax",
}
m["sit-nax"] = {
"Naic",
6982999,
"tbq-buq",
aliases = {"Naxish"},
}
m["sit-nba"] = {
"Northern Bai",
122463830,
"sit-bai",
}
m["sit-new"] = {
"Newaric",
55625069,
"sit",
}
m["sit-nng"] = {
"Nungish",
1515482,
"sit",
aliases = {"Nung"},
}
m["sit-qia"] = {
"Qiangic",
1636765,
"tbq-buq",
}
m["sit-rgy"] = {
"Rgyalrongic",
56936,
"sit-qia",
aliases = {"Jiarongic"},
}
m["sit-sba"] = {
"Sino-Bai",
nil,
"sit",
aliases = {"Greater Bai"},
}
m["sit-tam"] = {
"Tamangic",
3309439,
"sit",
aliases = {"West Bodish"},
}
m["sit-tan"] = {
"Tani",
3217538,
"sit",
}
m["sit-tib"] = {
"Tibetic",
1641150,
"sit-bdi",
protoLanguage = "otb",
}
m["sit-tja"] = {
"Tujia",
nil,
"sit",
}
m["sit-tma"] = {
"Tangkhul-Maring",
nil,
"sit",
}
m["sit-tng"] = {
"Tangkhulic",
1516657,
"sit-tma",
aliases = {"Tangkhul"},
}
m["sit-tno"] = {
"Tangsa-Nocte",
nil,
"sit-kon",
}
m["sit-tsk"] = {
"Tshangla",
nil,
"sit",
}
m["sit-wgy"] = {
"West rGyalrongic",
nil,
"sit-rgy"
}
m["sit-whm"] = {
"West Himalayish",
2301695,
"sit",
}
m["sit-zem"] = {
"Zeme",
189291,
"sit",
aliases = {"Zeliangrong", "Zemeic"},
}
m["sla"] = {
"Slavic",
23526,
"ine-bsl",
aliases = {"Slavonic"},
}
m["smi"] = {
"Sami",
56463,
"urj",
aliases = {"Saami", "Samic", "Saamic"},
}
m["son"] = {
"Songhay",
505198,
"ssa",
aliases = {"Songhai"},
}
m["sqj"] = {
"Albanian",
8748,
"ine",
}
m["ssa"] = {
"Nilo-Saharan", -- possibly not a genetic grouping
33705,
}
m["ssa-fur"] = {
"Fur",
2989512,
"ssa",
}
m["ssa-klk"] = {
"Kuliak",
1791476,
"ssa",
aliases = {"Rub"},
}
m["ssa-kom"] = {
"Koman",
1781084,
"ssa",
}
m["ssa-sah"] = {
"Saharan",
1757661,
"ssa",
}
m["syd"] = {
"Samoyedic",
34005,
"urj",
aliases = {"Samoyed", "Samodeic"},
}
m["syd-ene"] = {
"Enets",
29942,
"syd",
}
m["tai"] = {
"Tai",
749720,
"qfa-bet",
aliases = {"Daic"},
}
m["tai-wen"] = {
"Wenma-Southwestern Tai",
nil,
"tai",
}
m["tai-tay"] = {
"Tày",
nil,
"tai-wen",
}
m["tai-sap"] = {
"Sapa-Southwestern Tai",
nil,
"tai-wen",
aliases = {"Sapa-Thai"},
}
m["tai-swe"] = {
"Southwestern Tai",
10889250,
"tai-sap",
}
m["tai-cho"] = {
"Chongzuo Tai",
13216,
"tai",
}
m["tai-cen"] = {
"Central Tai",
5061891,
"tai",
}
m["tai-nor"] = {
"Northern Tai",
7059014,
"tai",
}
m["tbq"] = {
"Tibeto-Burman",
34064,
"sit",
}
m["tbq-anp"] = {
"Angami-Pochuri",
530460,
"sit",
}
m["tbq-axi"] = {
"Axioid",
nil,
"tbq-sel",
}
m["tbq-bdg"] = {
"Bodo-Garo",
4090000,
"tbq-bkj",
}
m["tbq-bis"] = {
"Bisoid",
48844742,
"tbq-slo",
}
m["tbq-bka"] = {
"Bi-Ka",
12627890,
"tbq-slo",
}
m["tbq-bkj"] = {
"Sal",
889900,
"sit",
-- Brahmaputran appears to be Glottolog's term
aliases = {"Bodo-Konyak-Jinghpaw", "Brahmaputran", "Jingpho-Konyak-Bodo"},
}
m["tbq-brm"] = {
"Burmish",
865713,
"tbq-lob",
}
m["tbq-buq"] = {
"Burmo-Qiangic",
16056278,
"sit",
aliases = {"Eastern Tibeto-Burman"},
}
m["tbq-drp"] = {
"Downriver Phula",
7188378,
"tbq-rph",
}
m["tbq-han"] = {
"Hanoid",
17004185,
"tbq-slo",
}
m["tbq-hph"] = {
"Highland Phula",
nil,
"tbq-sel",
}
m["tbq-jin"] = {
"Jino",
6202716,
"tbq-slo",
}
m["tbq-kzh"] = {
"Kazhuoish",
48834669,
"tbq-lol",
}
m["tbq-kuk"] = {
"Kuki-Chin",
832413,
"sit",
aliases = {"Kukish", "South-Central Tibeto-Burman"},
}
m["tbq-lal"] = {
"Lalo",
56548,
"tbq-lso",
}
m["tbq-lho"] = {
"Lahoish",
nil,
"tbq-lol",
}
m["tbq-llo"] = {
"Lipo-Lolopo",
nil,
"tbq-lso",
}
m["tbq-lob"] = {
"Lolo-Burmese",
1635712,
"tbq-buq",
}
m["tbq-lol"] = {
"Loloish",
37035,
"tbq-lob",
aliases = {"Yi", "Ngwi", "Nisoic"},
}
m["tbq-lso"] = {
"Lisoish",
6559055,
"tbq-lol",
}
m["tbq-lwo"] = {
"Lawoish",
48847673,
"tbq-lol",
}
m["tbq-muj"] = {
"Muji",
11221327,
"tbq-hph",
}
m["tbq-nas"] = {
"Nasoid",
nil,
"tbq-nlo",
}
m["tbq-nis"] = {
"Nisu",
56404,
"tbq-nlo",
}
m["tbq-nlo"] = {
"Northern Loloish",
7058676,
"tbq-nso",
}
m["tbq-nso"] = {
"Nisoish",
56990,
"tbq-lol",
}
m["tbq-nus"] = {
"Nusoish",
114245231,
"tbq-lol",
}
m["tbq-phw"] = {
"Phowa",
7187959,
"tbq-hph",
}
m["tbq-rph"] = {
"Riverine Phula",
nil,
"tbq-sel",
}
m["tbq-sel"] = {
"Southeastern Loloish",
16111894,
"tbq-nso",
}
m["tbq-sil"] = {
"Siloid",
60787071,
"tbq-slo",
}
m["tbq-slo"] = {
"Southern Loloish",
5649340,
"tbq-lol",
}
m["tbq-tal"] = {
"Taloid",
48804018,
"tbq-lso",
}
m["tbq-urp"] = {
"Upriver Phula",
7187058,
"tbq-rph",
}
m["trk"] = {
"Turkic",
34090,
}
m["trk-cmn"] = {
"Common Turkic",
1126028,
"trk",
aliases = {"Shaz Turkic", "Shaz-Turkic"},
}
m["trk-kar"] = {
"Karluk",
703173,
"trk-cmn",
aliases = {"Qarluq", "Uyghur-Uzbek", "Southeastern Turkic"},
}
m["trk-kbu"] = {
"Kipchak-Bulgar",
3512539,
"trk-kip",
aliases = {"Uralian", "Uralo-Caspian"},
}
m["trk-kcu"] = {
"Kipchak-Cuman",
4370412,
"trk-kip",
aliases = {"Ponto-Caspian"},
}
m["trk-kip"] = {
"Kipchak",
1339898,
"trk-cmn",
-- Russian Wikipedia article [[w:ru:Западнотюркские_языки]] says "Western Turkic" is used by N.A. Baskakov and includes Oghuz, Kipchak and Karluk.
-- Azerbaijani Wikipedia article [[w:az:Qərbi_türk_dilləri]] clarifies that "Western Turkic" is not a clade.
other_names = {"Western Turkic"},
aliases = {"Kypchak", "Qypchaq", "Northwestern Turkic"},
protoLanguage = "qwm",
}
m["trk-kkp"] = {
"Kyrgyz-Kipchak",
4221189,
"trk-kip",
}
m["trk-kno"] = {
"Kipchak-Nogai",
4326954,
"trk-kip",
aliases = {"Aralo-Caspian"},
}
m["trk-nsb"] = {
"North Siberian Turkic",
4537269,
"trk-sib",
aliases = {"Northern Siberian Turkic"},
}
m["trk-ogr"] = {
"Oghur",
1422731,
"trk",
aliases = {"Lir-Turkic", "r-Turkic"},
}
m["trk-ogz"] = {
"Oghuz",
494600,
"trk-cmn",
aliases = {"Southwestern Turkic"},
}
m["trk-sib"] = {
"Siberian Turkic",
354353,
"trk-cmn",
other_names = {"Northern Turkic"},
-- per [[w:ru:Восточнотюркские_языки]], "Eastern Turkic" is an alias for Siberian Turkic in the work of O.A. Mudrak,
-- but has a different non-clade meaning in the older work of N.A. Baskakov.
aliases = {"Eastern Turkic", "Northeastern Turkic"},
}
m["trk-ssb"] = {
"South Siberian Turkic",
nil,
"trk-sib",
aliases = {"Southern Siberian Turkic"},
}
m["tup"] = {
"Tupian",
34070,
aliases = {"Tupi"},
}
m["tup-gua"] = {
"Tupi-Guarani",
148610,
"tup",
aliases = {"Tupí-Guaraní"},
}
m["tuw"] = {
"Tungusic",
34230,
aliases = {"Manchu-Tungus", "Tungus"},
}
m["tuw-ewe"] = {
"Ewenic",
105889448,
"tuw",
aliases = {"Northern Tungusic"},
}
m["tuw-jrc"] = {
"Jurchenic",
105889432,
"tuw",
aliases = {"Manchuric"},
}
m["tuw-nan"] = {
"Nanaic",
105889264,
"tuw",
}
m["tuw-udg"] = {
"Udegheic",
105889266,
"tuw",
}
m["urj"] = {
"Uralic",
34113,
varieties = {"Finno-Ugric"},
}
m["urj-fin"] = {
"Finnic",
33328,
"urj",
aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"},
}
m["urj-mdv"] = {
"Mordvinic",
627313,
"urj",
}
m["urj-prm"] = {
"Permic",
161493,
"urj",
}
m["urj-ugr"] = {
"Ugric",
156631,
"urj",
}
m["wak"] = {
"Wakashan",
60069,
}
m["wen"] = {
"Sorbian",
25442,
"zlw",
aliases = {"Lusatian", "Wendish"},
}
m["xgn"] = {
"Mongolic",
33750,
"qfa-xgs",
aliases = {"Mongolian"},
}
m["xgn-cen"] = {
"Central Mongolic",
28719447,
"xgn",
protoLanguage = "xng-lat",
}
m["xgn-sou"] = {
"Southern Mongolic",
nil,
"xgn",
protoLanguage = "xng-ear",
}
m["xgn-shr"] = {
"Shirongolic",
107539435,
"xgn-sou",
}
m["xme"] = {
"Median",
nil,
"ira-mpr",
protoLanguage = "xme-old",
}
m["xme-ttc"] = {
"Tatic",
nil,
"xme",
}
m["xnd"] = {
"Na-Dene",
26986,
"qfa-dny",
aliases = {"Na-Dené"},
}
m["xsc"] = {
"Scythian",
nil,
"ira-nei",
}
m["xsc-sak"] = {
"Saka",
nil,
"xsc-skw",
aliases = {"Sakan"},
}
m["xsc-sar"] = {
"Sarmatian",
nil,
"xsc",
}
m["xsc-skw"] = {
"Saka-Wakhi",
nil,
"xsc",
}
m["yok"] = {
"Yokuts",
34249,
"nai-you",
aliases = {"Yokutsan", "Mariposan", "Mariposa"},
}
m["ypk"] = {
"Yupik",
27970,
"esx-esk",
aliases = {"Yup'ik", "Yuit"},
}
m["yrk"] = {
"Nenets",
36452,
"syd",
}
m["zhx"] = {
"Sinitic",
33857,
"sit-sba",
aliases = {"Chinese"},
protoLanguage = "och",
}
m["zhx-com"] = {
"Coastal Min",
20667215,
"zhx-min",
}
m["zhx-inm"] = {
"Inland Min",
20667237,
"zhx-min",
}
m["zhx-man"] = {
"Mandarinic",
nil,
"zhx",
protoLanguage = "cmn-ear",
}
m["zhx-min"] = {
"Min",
56504,
"zhx",
}
m["zhx-nan"] = {
"Southern Min",
36495,
"zhx-com",
}
m["zhx-pin"] = {
"Pinghua",
2735715,
"zhx",
protoLanguage = "ltc",
}
m["zhx-yue"] = {
"Yue",
7033959,
"zhx",
protoLanguage = "ltc",
}
m["zle"] = {
"East Slavic",
144713,
"sla",
}
m["zls"] = {
"South Slavic",
146665,
"sla",
}
m["zlw"] = {
"West Slavic",
145852,
"sla",
}
m["zlw-lch"] = {
"Lechitic",
742782,
"zlw",
aliases = {"Lekhitic"},
}
m["zlw-pom"] = {
"Pomeranian",
nil,
"zlw-lch",
}
m["znd"] = {
"Zande",
8066072,
"nic-ubg",
}
return require("Module:languages").finalizeData(m, "family")
0nolmu8koyeowvbapmfrmq16i6o4a8e
233728
233727
2026-05-09T04:53:55Z
Lee
19
[[:en:Module:families/data]] වෙතින් එක් සංශෝධනයක්
233727
Scribunto
text/plain
--[=[
This module contains definitions for all language family codes on Wiktionary.
]=]--
local m = {}
m["aav"] = {
"Austroasiatic",
33199,
aliases = {"Austro-Asiatic"},
}
m["aav-khs"] = {
"Khasian",
3073734,
"aav",
aliases = {"Khasic"},
}
m["aav-nic"] = {
"Nicobarese",
217380,
"aav",
}
m["aav-pkl"] = {
"Pnar-Khasi-Lyngngam",
nil,
"aav-khs",
}
m["afa"] = {
"Afroasiatic",
25268,
aliases = {"Afro-Asiatic"},
}
m["alg"] = {
"Algonquian",
33392,
"aql",
}
m["alg-abp"] = {
"Abenaki-Penobscot",
197936,
"alg-eas",
}
m["alg-ara"] = {
"Arapahoan",
2153686,
"alg",
}
m["alg-eas"] = {
"Eastern Algonquian",
2257525,
"alg",
}
m["alg-sfk"] = {
"Sac-Fox-Kickapoo",
1440172,
"alg",
}
m["alv"] = {
"Atlantic-Congo",
771124,
"nic",
}
m["alv-aah"] = {
"Ayere-Ahan",
750953,
"alv-von",
}
m["alv-ada"] = {
"Adamawa",
32906,
"alv-sav",
}
m["alv-bag"] = {
"Baga",
2746083,
"alv-mel",
}
m["alv-bak"] = {
"Bak",
1708174,
"alv-sng",
}
m["alv-bam"] = {
"Bambukic",
4853456,
"alv-ada",
aliases = {"Yungur-Jen"},
}
m["alv-bny"] = {
"Banyum",
2892477,
"alv-nyn",
}
m["alv-bua"] = {
"Bua",
4982094,
"alv-mbd",
}
m["alv-bwj"] = {
"Bikwin-Jen",
84542501,
"alv-bam",
}
m["alv-cng"] = {
"Cangin",
1033184,
"alv-fwo",
}
m["alv-ctn"] = {
"Central Tano",
1658486,
"alv-ptn",
aliases = {"Akan"},
}
m["alv-dlt"] = {
"Delta Edoid",
nil,
"alv-edo",
}
m["alv-dur"] = {
"Duru",
5316788,
"alv-lni",
}
m["alv-ede"] = {
"Ede",
35368,
"alv-yor",
}
m["alv-edk"] = {
"Edekiri",
5336735,
"alv-yrd",
}
m["alv-edo"] = {
"Edoid",
1287469,
"alv-von",
}
m["alv-eeo"] = {
"Edo-Esan-Ora",
12630439,
"alv-nce",
}
m["alv-fli"] = {
"Fali",
3450166,
"alv",
}
m["alv-fwo"] = {
"Fula-Wolof",
12631267,
"alv-sng",
}
m["alv-gbe"] = {
"Gbe",
668284,
"alv-von",
}
m["alv-gda"] = {
"Ga-Dangme",
3443338,
"alv-kwa",
}
m["alv-gng"] = {
"Guang",
684009,
"alv-ptn",
}
m["alv-gtm"] = {
"Ghana-Togo Mountain",
493020,
"alv-kwa",
aliases = {"Togo Remnant", "Central Togo"},
}
m["alv-hei"] = {
"Heiban",
108752116,
"alv-the",
}
m["alv-ido"] = {
"Idomoid",
974196,
"alv-von",
}
m["alv-igb"] = {
"Igboid",
1429100,
"alv-von",
}
m["alv-jfe"] = {
"Jola-Felupe",
1708174,
"alv-jol",
aliases = {"Ejamat"},
}
m["alv-jol"] = {
"Jola",
35176,
"alv-bak",
aliases = {"Diola"},
}
m["alv-kim"] = {
"Kim",
6409701,
"alv-mbd",
}
m["alv-kis"] = {
"Kissi",
35696,
"alv-mel",
}
m["alv-krb"] = {
"Karaboro",
4213541,
"alv-snf",
}
m["alv-ktg"] = {
"Ka-Togo",
5972796,
"alv-gtm",
}
m["alv-kul"] = {
"Kulango",
16977424,
"alv-sav",
aliases = {"Kulango-Lorhon", "Kulango-Lorom"},
}
m["alv-kwa"] = {
"Kwa",
33430,
"nic-vco",
}
m["alv-lag"] = {
"Lagoon",
111210042,
"alv-kwa",
}
m["alv-lek"] = {
"Leko",
6520642,
other_names = {"Sambaic"}, -- appears to be an alias in Glottolog
"alv-lni",
}
m["alv-lim"] = {
"Limba",
35825,
"alv",
}
m["alv-lni"] = {
"Leko-Nimbari",
1708170,
"alv-ada",
other_names = {"Central Adamawa"},
aliases = {"Chamba-Mumuye"},
}
m["alv-mbd"] = {
"Mbum-Day",
6799816,
"alv-ada",
}
m["alv-mbm"] = {
"Mbum",
6799814,
"alv-mbd",
}
m["alv-mel"] = {
"Mel",
12122355,
"alv",
}
m["alv-mum"] = {
"Mumuye",
84607009,
"alv-mye",
}
m["alv-mye"] = {
"Mumuye-Yendang",
6935539,
"alv-lni",
}
m["alv-nal"] = {
"Nalu",
nil,
"alv-sng",
}
m["alv-nce"] = {
"North-Central Edoid",
16110869,
"alv-edo",
}
m["alv-ngb"] = {
"Nupe-Gbagyi",
12638649,
"alv-nup",
aliases = {"Nupe-Gbari"},
}
m["alv-ntg"] = {
"Na-Togo",
nil,
"alv-gtm",
}
m["alv-nup"] = {
"Nupoid",
1429143,
"alv-von",
}
m["alv-nwd"] = {
"Northwestern Edoid",
16111012,
"alv-edo",
}
m["alv-nyn"] = {
"Nyun",
nil,
"alv-fwo",
}
m["alv-pap"] = {
"Papel",
7132562,
"alv-bak",
}
m["alv-pph"] = {
"Phla-Pherá",
3849625,
"alv-gbe",
}
m["alv-ptn"] = {
"Potou-Tano",
1475003,
"alv-kwa",
}
m["alv-sav"] = {
"Savanna",
4403672,
"nic-vco",
aliases = {"Savannas"},
}
m["alv-sma"] = {
"Supyire-Mamara",
4446348,
"alv-snf",
aliases = {"Suppire-Mamara"},
}
m["alv-snf"] = {
"Senufo",
33795,
"alv",
aliases = {"Senufic", "Senoufo", "Sénoufo"},
}
m["alv-sng"] = {
"Senegambian",
1708753,
"alv",
}
m["alv-snr"] = {
"Senari",
4416084,
"alv-snf",
}
m["alv-swd"] = {
"Southwestern Edoid",
12633903,
"alv-edo",
}
m["alv-tal"] = {
"Talodi",
12643302,
"alv-the",
}
m["alv-tdj"] = {
"Tagwana-Djimini",
7675362,
"alv-snf",
}
m["alv-ten"] = {
"Tenda",
3217535,
"alv-fwo",
}
m["alv-the"] = {
"Talodi-Heiban",
1521145,
"alv",
}
m["alv-von"] = {
"Volta-Niger",
34177,
"nic-vco",
}
m["alv-wan"] = {
"Wara-Natyoro",
7968830,
"alv-sav",
}
m["alv-wjk"] = {
"Waja-Kam",
nil,
"alv-ada",
}
m["alv-yek"] = {
"Yekhee",
nil,
"alv-nce",
}
m["alv-yor"] = {
"Yoruba",
nil,
"alv-edk",
}
m["alv-yrd"] = {
"Yoruboid",
1789745,
"alv-von",
}
m["alv-yun"] = {
"Yungur",
84601642,
"alv-bam",
aliases = {"Bena-Mboi"},
}
m["apa"] = {
"Apachean",
27758,
"ath",
aliases = {"Southern Athabaskan"},
}
m["aqa"] = {
"Alacalufan",
1288430,
}
m["aql"] = {
"Algic",
721612,
aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"},
}
m["art"] = {
"constructed",
33215,
"qfa-not",
aliases = {"artificial", "planned"},
}
m["ath"] = {
"Athabaskan",
27475,
"xnd",
}
m["ath-nor"] = {
"North Athabaskan",
20738,
"ath",
aliases = {"Northern Athabaskan"},
}
m["ath-pco"] = {
"Pacific Coast Athabaskan",
20654,
"ath",
}
m["auf"] = {
"Arauan",
626772,
aliases = {"Arahuan", "Arauán", "Arawa", "Arawan", "Arawán"},
}
--[=[
Exceptional language and family codes for Australian Aboriginal languages
can use the prefix "aus-", though "aus" is no longer itself a family code.
]=]--
m["aus-arn"] = {
"Arnhem",
2581700,
aliases = {"Gunwinyguan", "Macro-Gunwinyguan"},
}
m["aus-bub"] = {
"Bunuban",
2495148,
aliases = {"Bunaban"},
}
m["aus-cww"] = {
"Central New South Wales",
5061507,
"aus-pam",
}
m["aus-dal"] = {
"Daly",
2478079,
}
m["aus-dyb"] = {
"Dyirbalic",
1850666,
"aus-pam",
}
m["aus-gar"] = {
"Garawan",
5521951,
}
m["aus-gun"] = {
"Gunwinyguan",
2581700,
"aus-arn",
aliases = {"Gunwingguan"},
}
m["aus-jar"] = {
"Jarrakan",
2039423,
}
m["aus-kar"] = {
"Karnic",
4215578,
"aus-pam",
}
m["aus-mir"] = {
"Mirndi",
4294095,
}
m["aus-nga"] = {
"Ngayarda",
16153490,
"aus-psw",
}
m["aus-nyu"] = {
"Nyulnyulan",
2039408,
}
m["aus-pam"] = {
"Pama-Nyungan",
33942,
}
m["aus-pmn"] = {
"Paman",
2640654,
"aus-pam",
}
m["aus-psw"] = {
"Southwest Pama-Nyungan",
2258160,
"aus-pam",
}
m["aus-rnd"] = {
"Arandic",
4784071,
"aus-pam",
}
m["aus-tnk"] = {
"Tangkic",
1823065,
}
m["aus-wdj"] = {
"Iwaidjan",
4196968,
aliases = {"Yiwaidjan"},
}
m["aus-wor"] = {
"Worrorran",
2038619,
}
m["aus-yid"] = {
"Yidinyic",
4205849,
"aus-pam",
}
m["aus-yng"] = {
"Yangmanic",
42727644,
}
m["aus-yol"] = {
"Yolngu",
2511254,
"aus-pam",
aliases = {"Yolŋu", "Yolngu Matha"},
}
m["aus-yuk"] = {
"Yuin-Kuric",
3833021,
"aus-pam",
}
m["awd"] = {
"Arawak",
626753,
aliases = {"Arawakan", "Maipurean", "Maipuran"},
}
m["awd-nwk"] = {
"Nawiki",
nil,
"awd",
aliases = {"Newiki"},
}
m["awd-taa"] = {
"Ta-Arawak",
7672731,
"awd",
aliases = {"Ta-Arawakan", "Ta-Maipurean"},
}
m["azc"] = {
"Uto-Aztecan",
34073,
aliases = {"Uto-Aztekan"},
}
m["azc-cup"] = {
"Cupan",
19866871,
"azc-tak",
}
m["azc-dur"] = {
"Durango Nahuatl",
2386361,
"azc-nah",
aliases = {"Mexicanero"}
}
m["azc-hua"] = {
"Huasteca Nahuatl",
3832950,
"azc-nah",
}
m["azc-nah"] = {
"Nahuan",
11965602,
"azc",
aliases = {"Aztecan"},
}
m["azc-num"] = {
"Numic",
2657541,
"azc",
}
m["azc-pim"] = {
"Piman",
7194600,
"azc",
aliases = {"Tepiman"},
}
m["azc-tak"] = {
"Takic",
1280305,
"azc",
}
m["azc-trc"] = {
"Taracahitic",
4245032,
"azc",
aliases = {"Taracahitan"},
}
m["bad"] = {
"Banda",
806234,
"nic-ubg",
}
m["bad-cnt"] = {
"Central Banda",
3438391,
"bad",
}
m["bai"] = {
"Bamileke",
806005,
"nic-gre",
}
m["bat"] = {
"Baltic",
33136,
"ine-bsl",
}
m["bat-eas"] = {
"East Baltic",
149944,
"bat",
}
m["bat-wes"] = {
"West Baltic",
149946,
"bat",
}
m["ber"] = {
"Berber",
25448,
"afa",
aliases = {"Tamazight"},
}
m["bnt"] = {
"Bantu",
33146,
"nic-bds",
}
m["bnt-baf"] = {
"Bafia",
799784,
"bnt",
}
m["bnt-bbo"] = {
"Bafo-Bonkeng",
nil,
"bnt-saw",
}
m["bnt-bdz"] = {
"Boma-Dzing",
1729203,
"bnt",
}
m["bnt-bek"] = {
"Bekwilic",
nil,
"bnt-ndb",
}
m["bnt-bki"] = {
"Bena-Kinga",
16113307,
"bnt-bne",
}
m["bnt-bmo"] = {
"Bangi-Moi",
nil,
"bnt-bnm",
}
m["bnt-bne"] = {
"Northeast Bantu",
7057832,
"bnt",
}
m["bnt-bnm"] = {
"Bangi-Ntomba",
806477,
"bnt-bte",
}
m["bnt-boa"] = {
"Boan",
4931250,
"bnt",
aliases = {"Buan", "Ababuan"},
}
m["bnt-bot"] = {
"Botatwe",
4948532,
"bnt",
}
m["bnt-bsa"] = {
"Basaa",
809739,
"bnt",
}
m["bnt-bsh"] = {
"Bushoong",
5001551,
"bnt-bte",
}
m["bnt-bso"] = {
"Southern Bantu",
980498,
"bnt",
}
m["bnt-bta"] = {
"Bati-Angba",
4869303,
"bnt-boa",
other_names = {"Late Bomokandian"},
aliases = {"Bwa"},
}
m["bnt-btb"] = {
"Beti",
35118,
"bnt",
}
m["bnt-bte"] = {
"Bangi-Tetela",
4855181,
"bnt",
}
m["bnt-bun"] = {
"Buja-Ngombe",
4986733,
"bnt-mbb",
}
m["bnt-chg"] = {
"Chaga",
33016,
"bnt-cht",
}
m["bnt-cht"] = {
"Chaga-Taita",
nil,
"bnt-bne",
}
m["bnt-clu"] = {
"Chokwe-Luchazi",
3339273,
"bnt",
}
m["bnt-com"] = {
"Comorian",
33077,
"bnt-sab",
}
m["bnt-glb"] = {
"Great Lakes Bantu",
5599420,
"bnt-bne",
}
m["bnt-haj"] = {
"Haya-Jita",
25502360,
"bnt-glb",
}
m["bnt-kak"] = {
"Kako",
nil,
"bnt-pob",
}
m["bnt-kav"] = {
"Kavango",
116544179,
"bnt-ksb",
}
m["bnt-kbi"] = {
"Komo-Bira",
6428591,
"bnt-boa",
}
m["bnt-kel"] = {
"Kele",
1738162,
"bnt-kts",
aliases = {"Sheke"},
}
m["bnt-kil"] = {
"Kilombero",
6408121,
"bnt",
}
m["bnt-kka"] = {
"Kikuyu-Kamba",
16114410,
"bnt-bne",
aliases = {"Thagiicu"},
}
m["bnt-kmb"] = {
"Kimbundu",
16947687,
"bnt",
}
m["bnt-kng"] = {
"Kongo",
6429214,
"bnt",
}
m["bnt-kpw"] = {
"Kpwe",
36428,
"bnt-saw",
}
m["bnt-ksb"] = {
"Kavango-Southwest Bantu",
6379098,
"bnt",
}
m["bnt-kts"] = {
"Kele-Tsogo",
6385577,
"bnt",
}
m["bnt-lbn"] = {
"Luban",
4536504,
"bnt",
}
m["bnt-leb"] = {
"Lebonya",
6511395,
"bnt",
}
m["bnt-lgb"] = {
"Lega-Binja",
6517694,
"bnt",
}
m["bnt-lok"] = {
"Logooli-Kuria",
nil,
"bnt-glb",
}
m["bnt-lub"] = {
"Luba",
nil,
"bnt-lbn",
}
m["bnt-lun"] = {
"Lunda",
6704091,
"bnt",
}
m["bnt-mak"] = {
"Makua",
6740431,
"bnt-bso",
aliases = {"Makhuwa"},
}
m["bnt-mbb"] = {
"Mboshi-Buja",
6799764,
"bnt",
}
m["bnt-mbe"] = {
"Mbole-Enya",
6799728,
"bnt",
}
m["bnt-mbi"] = {
"Mbinga",
nil,
"bnt-rur",
}
m["bnt-mbo"] = {
"Mboshi",
6799763,
"bnt-mbb",
}
m["bnt-mbt"] = {
"Mbete",
1346910,
"bnt-tmb",
aliases = {"Mbere"},
}
m["bnt-mby"] = {
"Mbeya",
nil,
"bnt-ruk",
}
m["bnt-mij"] = {
"Mijikenda",
6845474,
"bnt-sab",
}
m["bnt-mka"] = {
"Makaa",
nil,
"bnt-ndb",
}
m["bnt-mne"] = {
"Manenguba",
31147471,
"bnt",
aliases = {"Mbo", "Ngoe"},
}
m["bnt-mnj"] = {
"Makaa-Njem",
1603899,
"bnt-pob",
}
m["bnt-mon"] = {
"Mongo",
nil,
"bnt-bnm",
}
m["bnt-mra"] = {
"Mbugwe-Rangi",
6799795,
"bnt",
}
m["bnt-msl"] = {
"Masaba-Luhya",
12636428,
"bnt-glb",
}
m["bnt-mwi"] = {
"Mwika",
nil,
"bnt-ruk",
}
m["bnt-ncb"] = {
"Northeast Coast Bantu",
7057848,
"bnt-bne",
}
m["bnt-ndb"] = {
"Ndzem-Bomwali",
nil,
"bnt-mnj",
}
m["bnt-ngn"] = {
"Ngondi-Ngiri",
7022532,
"bnt-mbb",
}
m["bnt-ngu"] = {
"Nguni",
961559,
"bnt-bso",
aliases = {"Ngoni"},
}
m["bnt-nya"] = {
"Nyali",
7070832,
"bnt-leb",
}
m["bnt-nyb"] = {
"Nyanga-Buyi",
7070882,
"bnt",
}
m["bnt-nyg"] = {
"Nyoro-Ganda",
12638666,
"bnt-glb",
}
m["bnt-nys"] = {
"Nyasa",
7070921,
"bnt",
}
m["bnt-nze"] = {
"Nzebi",
1755498,
"bnt-tmb",
aliases = {"Njebi"},
}
m["bnt-ova"] = {
"Ovambo",
36489,
"bnt-swb",
aliases = {"Oshivambo", "Oshiwambo", "Owambo"},
}
m["bnt-par"] = {
"Pare",
nil,
"bnt-ncb",
}
m["bnt-pen"] = {
"Pende",
7162373,
"bnt",
}
m["bnt-pob"] = {
"Pomo-Bomwali",
nil,
"bnt",
}
m["bnt-ruk"] = {
"Rukwa",
7378902,
"bnt",
}
m["bnt-run"] = {
"Rungwe",
nil,
"bnt-ruk",
}
m["bnt-rur"] = {
"Rufiji-Ruvuma",
7377947,
"bnt",
}
m["bnt-ruv"] = {
"Ruvu",
nil,
"bnt-ncb",
}
m["bnt-rvm"] = {
"Ruvuma",
nil,
"bnt-rur",
}
m["bnt-sab"] = {
"Sabaki",
2209395,
"bnt-ncb",
}
m["bnt-saw"] = {
"Sawabantu",
532003,
"bnt",
}
m["bnt-sbi"] = {
"Sabi",
7396071,
"bnt",
}
m["bnt-seu"] = {
"Seuta",
nil,
"bnt-ncb",
}
m["bnt-shh"] = {
"Shi-Havu",
nil,
"bnt-glb",
}
m["bnt-sho"] = {
"Shona",
2904660,
"bnt",
}
m["bnt-sir"] = {
"Sira",
1436372,
"bnt",
aliases = {"Shira-Punu"},
}
m["bnt-ske"] = {
"Soko-Kele",
nil,
"bnt-bte",
}
m["bnt-sna"] = {
"Sena",
nil,
"bnt-nys",
}
m["bnt-sts"] = {
"Sotho-Tswana",
2038386,
"bnt-bso",
}
m["bnt-swb"] = {
"Southwest Bantu",
116543539,
"bnt-ksb",
}
m["bnt-swh"] = {
"Swahili",
nil,
"bnt-sab",
}
m["bnt-tek"] = {
"Teke",
36528,
"bnt-tmb",
}
m["bnt-tet"] = {
"Tetela",
7706059,
"bnt-bte",
}
m["bnt-tkc"] = {
"Central Teke",
36473,
"bnt-tek",
}
m["bnt-tkm"] = {
"Takama",
nil,
"bnt-bne",
}
m["bnt-tmb"] = {
"Teke-Mbede",
7695332,
"bnt",
aliases = {"Teke-Mbere"},
}
m["bnt-tso"] = {
"Tsogo",
2458420,
other_names = {"Okani"}, --appears to be an alias in Glottolog
"bnt-kts",
}
m["bnt-tsr"] = {
"Tswa-Ronga",
12643962,
"bnt-bso",
}
m["bnt-yak"] = {
"Yaka",
8047027,
"bnt",
}
m["bnt-yko"] = {
"Yasa-Kombe",
nil,
"bnt-saw",
}
m["bnt-zbi"] = {
"Zamba-Binza",
nil,
"bnt-bnm",
}
m["btk"] = {
"Batak",
1998595,
"poz-nws",
}
--[=[
Exceptional language and family codes for Central American Indian languages
may use the prefix "cai-", though "cai" is no longer itself a family code.
]=]--
--[=[
Exceptional language and family codes for Caucasian languages can use
the prefix "cau-", though "cau" is no longer itself a family code.
]=]--
m["cau-abz"] = {
"Abkhaz-Abaza",
4663617,
"cau-nwc",
other_names = {"Abkhaz-Tapanta"},
aliases = {"Abazgi"},
}
m["cau-and"] = {
"Andian",
492152,
"cau-ava",
aliases = {"Andic"},
}
m["cau-ava"] = {
"Avaro-Andian",
4055404,
"cau-nec",
aliases = {"Avar-Andian", "Avar-Andi", "Avar-Andic"},
}
m["cau-cir"] = {
"Circassian",
858543,
"cau-nwc",
aliases = {"Cherkess"},
}
m["cau-drg"] = {
"Dargwa",
5222637,
"cau-nec",
other_names = {"Dargin"},
}
m["cau-esm"] = {
"Eastern Samur",
nil,
"cau-sam",
}
m["cau-ets"] = {
"East Tsezian",
121437666,
"cau-tsz",
aliases = {"East Tsezic", "East Didoic"},
}
m["cau-lzg"] = {
"Lezghian",
2144370,
"cau-nec",
aliases = {"Lezgi", "Lezgian", "Lezgic"},
}
m["cau-nkh"] = {
"Nakh",
24441,
"cau-nec",
aliases = {"North-Central Caucasian"},
}
m["cau-nec"] = {
"Northeast Caucasian",
27387,
aliases = {"Dagestanian", "Nakho-Dagestanian", "Caspian"},
}
m["cau-nwc"] = {
"Northwest Caucasian",
33852,
aliases = {"Abkhazo-Adyghean", "Abkhaz-Adyghe", "Pontic"},
}
m["cau-sam"] = {
"Samur",
15229151,
"cau-lzg",
}
m["cau-ssm"] = {
"Southern Samur",
nil,
"cau-sam",
}
m["cau-tsz"] = {
"Tsezian",
1651530,
"cau-nec",
aliases = {"Tsezic", "Didoic"},
}
m["cau-vay"] = {
"Vainakh",
4102486,
"cau-nkh",
aliases = {"Veinakh", "Vaynakh"},
}
m["cau-wsm"] = {
"Western Samur",
nil,
"cau-sam",
}
m["cau-wts"] = {
"West Tsezian",
121437697,
"cau-tsz",
aliases = {"West Tsezic", "West Didoic"},
}
m["cba"] = {
"Chibchan",
520478,
"qfa-mch", -- or none if Macro-Chibchan is considered undemonstrated
}
m["ccs"] = {
"Kartvelian",
34030,
aliases = {"South Caucasian"},
}
m["ccs-gzn"] = {
"Georgian-Zan",
34030,
"ccs",
aliases = {"Karto-Zan"},
}
m["ccs-zan"] = {
"Zan",
2606912,
"ccs-gzn",
aliases = {"Zanuri", "Colchian"},
}
m["cdc"] = {
"Chadic",
33184,
"afa",
}
m["cdc-cbm"] = {
"Central Chadic",
2251547,
"cdc",
aliases = {"Biu-Mandara"},
}
m["cdc-est"] = {
"East Chadic",
2276221,
"cdc",
}
m["cdc-mas"] = {
"Masa",
2136092,
"cdc",
}
m["cdc-wst"] = {
"West Chadic",
2447774,
"cdc",
}
m["cdd"] = {
"Caddoan",
1025090,
}
m["cel"] = {
"Celtic",
25293,
"ine",
}
m["cel-bry"] = {
"Brythonic",
156877,
"cel-ins",
aliases = {"Brittonic"},
}
m["cel-brs"] = {
"Southwestern Brythonic",
2612853,
"cel-bry",
aliases = {"Southwestern Brittonic"},
}
m["cel-brw"] = {
"Western Brythonic",
593069,
"cel-bry",
aliases = {"Western Brittonic"},
}
m["cel-gae"] = {
"Goidelic",
56433,
"cel-ins",
aliases = {"Gaelic"},
protoLanguage = "pgl",
}
m["cel-his"] = {
"Hispano-Celtic",
4204136,
"cel",
}
m["cel-ins"] = {
"Insular Celtic",
214506,
"cel",
}
m["chi"] = {
"Chimakuan",
1073088,
}
m["chm"] = {
"Mari",
973685,
"urj",
}
m["cmc"] = {
"Chamic",
2997506,
"poz-mcm",
}
m["crp"] = {
"creole or pidgin",
19682167,
"qfa-cnt",
}
m["csu"] = {
"Central Sudanic",
190822,
"ssa",
}
m["csu-bba"] = {
"Bongo-Bagirmi",
3505042,
"csu",
}
m["csu-bbk"] = {
"Bongo-Baka",
4941917,
"csu-bba",
}
m["csu-bgr"] = {
"Bagirmi",
4841948,
"csu-bba",
aliases = {"Bagirmic"},
}
m["csu-bkr"] = {
"Birri-Kresh",
nil,
"csu",
}
m["csu-ecs"] = {
"Eastern Central Sudanic",
16911698,
"csu",
aliases = {"East Central Sudanic", "Central Sudanic East", "Lendu-Mangbetu"},
}
m["csu-kab"] = {
"Kaba",
6343715,
"csu-bba",
}
m["csu-lnd"] = {
"Lendu",
6522357,
"csu-ecs",
aliases = {"Lenduic"},
}
m["csu-maa"] = {
"Mangbetu",
6748874,
"csu-ecs",
aliases = {"Mangbetu-Asoa", "Mangbetu-Asua"},
}
m["csu-mle"] = {
"Mangbutu-Lese",
17009406,
"csu-ecs",
aliases = {"Mangbutu-Efe", "Mangbutu", "Membi-Mangbutu-Efe"},
}
m["csu-mma"] = {
"Moru-Madi",
6915156,
"csu-ecs",
}
m["csu-sar"] = {
"Sara",
2036691,
"csu-bba",
}
m["csu-val"] = {
"Vale",
7909520,
"csu-bba",
}
m["cus"] = {
"Cushitic",
33248,
"afa",
}
m["cus-cen"] = {
"Central Cushitic",
56569,
"cus",
}
m["cus-eas"] = {
"East Cushitic",
56568,
"cus",
}
m["cus-hec"] = {
"Highland East Cushitic",
56524,
"cus-eas",
}
m["cus-som"] = {
"Somaloid",
56774,
"cus-eas",
aliases = {"Sam", "Macro-Somali"},
}
m["cus-sou"] = {
"South Cushitic",
56525,
"cus",
}
m["day"] = {
"Land Dayak",
2760613,
"poz",
}
m["del"] = {
"Lenape",
2665761,
"alg-eas",
aliases = {"Delaware"},
}
m["den"] = {
"Slavey",
13272,
"ath-nor",
aliases = {"Slave", "Slavé"},
}
m["dmn"] = {
"Mande",
33681,
"nic",
}
m["dmn-bbu"] = {
"Bisa-Busa",
12627956,
"dmn-mde",
}
m["dmn-emn"] = {
"East Manding",
nil,
"dmn-man",
}
m["dmn-jje"] = {
"Jogo-Jeri",
nil,
"dmn-mjo",
}
m["dmn-man"] = {
"Manding",
35772,
"dmn-mmo",
}
m["dmn-mda"] = {
"Mano-Dan",
nil,
"dmn-mse",
}
m["dmn-mdc"] = {
"Central Mande",
5972907,
"dmn-mdw",
}
m["dmn-mde"] = {
"Eastern Mande",
12633080,
"dmn",
}
m["dmn-mdw"] = {
"Western Mande",
16113831,
"dmn",
}
m["dmn-mjo"] = {
"Manding-Jogo",
12636153,
"dmn-mdc",
}
m["dmn-mmo"] = {
"Manding-Mokole",
nil,
"dmn-mva",
}
m["dmn-mnk"] = {
"Maninka",
36186,
"dmn-emn",
}
m["dmn-mnw"] = {
"Northwestern Mande",
5972910,
"dmn-mdw",
}
m["dmn-mok"] = {
"Mokole",
16935447,
"dmn-mmo",
}
m["dmn-mse"] = {
"Southeastern Mande",
5972912,
"dmn-mde",
}
m["dmn-msw"] = {
"Southwestern Mande",
12633904,
"dmn-mdw",
}
m["dmn-mva"] = {
"Manding-Vai",
nil,
"dmn-mjo",
}
m["dmn-nbe"] = {
"Nwa-Beng",
nil,
"dmn-mse",
}
m["dmn-sam"] = {
"Samo",
36327,
"dmn-bbu",
aliases = {"Samuic"},
}
m["dmn-smg"] = {
"Samogo",
7410000,
"dmn-mnw",
aliases = {"Duun-Seenku"},
}
m["dmn-snb"] = {
"Soninke-Bobo",
16111680,
"dmn-mnw",
}
m["dmn-sya"] = {
"Susu-Yalunka",
nil,
"dmn-mdc",
}
m["dmn-vak"] = {
"Vai-Kono",
nil,
"dmn-mva",
}
m["dmn-wmn"] = {
"West Manding",
nil,
"dmn-man",
}
m["dra"] = {
"Dravidian",
33311,
}
m["dra-cen"] = {
"Central Dravidian",
12628823,
"dra",
}
m["dra-gki"] = {
"Gondi-Kui",
12631610,
"dra-sdt",
}
m["dra-gon"] = {
"Gondi",
55639812,
"dra-gki",
}
m["dra-imd"] = {
"Irula-Muduga",
nil,
"dra-tkn",
}
m["dra-kan"] = {
"Kannadoid",
6363888,
"dra-tkn",
protoLanguage = "dra-okn",
}
m["dra-kki"] = {
"Konda-Kui",
nil,
"dra-gki",
}
m["dra-kml"] = {
"Kurux-Malto",
68002822,
"dra-nor",
}
m["dra-knk"] = {
"Kolami-Naiki",
10547037,
"dra-cen",
}
m["dra-kod"] = {
"Kodagu",
67983106,
"dra-tkd",
}
m["dra-kor"] = {
"Koraga",
33394,
"dra-tlk",
}
m["dra-mal"] = {
"Malayalamoid",
6741581,
"dra-tml",
}
m["dra-mdy"] = {
"Madiya",
27602,
"dra-gon",
}
m["dra-mlo"] = {
"Malto",
nil,
"dra-kml",
}
m["dra-mur"] = {
"Muria",
6938499,
"dra-gon",
}
m["dra-nor"] = {
"North Dravidian",
16110967,
"dra",
}
m["dra-pgd"] = {
"Parji-Gadaba",
10620428,
"dra-cen",
}
m["dra-sdo"] = {
"South Dravidian I",
16112843, -- Wikipedia's "South Dravidian" is South Dravidian I in this scheme.
"dra-sou",
aliases = {"South Dravidian"}, -- This is why I and II are used.
}
m["dra-sdt"] = {
"South Dravidian II",
12633975,
"dra-sou",
aliases = {"South-Central Dravidian"},
}
m["dra-sou"] = {
"South Dravidian",
128886618,
"dra",
aliases = {"Southern Dravidian"},
}
m["dra-tam"] = {
"Tamiloid",
7681417,
"dra-tml",
protoLanguage = "oty",
}
m["dra-tel"] = {
"Teluguic",
nil,
"dra-sdt",
protoLanguage = "dra-ote",
}
m["dra-tkd"] = {
"Tamil-Kodagu",
25494510,
"dra-tkn",
}
m["dra-tkn"] = {
"Tamil-Kannada",
6478506,
"dra-sdo",
}
m["dra-tkt"] = {
"Toda-Kota",
67983857,
"dra-tkd",
}
m["dra-tlk"] = {
"Tulu-Koraga",
nil,
"dra-sdo",
}
m["dra-tml"] = {
"Tamil-Malayalam",
10690507,
"dra-tkd",
}
m["egx"] = {
"Egyptian",
50868,
"afa",
protoLanguage = "egy",
}
m["ero"] = {
"Horpa",
56854,
"sit-wgy",
}
m["esx"] = {
"Eskimo-Aleut",
25946,
}
m["esx-esk"] = {
"Eskimo",
25946,
"esx",
}
m["esx-inu"] = {
"Inuit",
27796,
"esx-esk",
}
m["euq"] = {
"Vasconic",
4669240,
}
m["gba"] = {
"Gbaya",
3099986,
"alv-sav",
}
m["gba-eas"] = {
"Eastern Gbaya",
nil,
"gba",
}
m["gba-sou"] = {
"Southern Gbaya",
nil,
"gba",
}
m["gba-wes"] = {
"Western Gbaya",
nil,
"gba",
}
m["gem"] = {
"Germanic",
21200,
"ine",
}
m["gio"] = {
"Gelao",
56401,
"qfa-kra",
}
m["gme"] = {
"East Germanic",
108662,
"gem",
}
m["gmq"] = {
"North Germanic",
106085,
"gem",
}
m["gmq-eas"] = {
"East Scandinavian",
3090263,
"gmq",
protoLanguage = "non-oen",
}
m["gmq-ins"] = {
"Insular Scandinavian",
nil,
"gmq-wes",
}
m["gmq-wes"] = {
"West Scandinavian",
1792570,
"gmq",
protoLanguage = "non-own",
}
m["gmw"] = {
"West Germanic",
26721,
"gem",
}
m["gmw-afr"] = {
"Anglo-Frisian",
5329170,
"gmw-nsg",
}
m["gmw-ang"] = {
"Anglic",
1346342,
"gmw-afr",
protoLanguage = "ang",
}
m["gmw-fri"] = {
"Frisian",
25325,
"gmw-afr",
protoLanguage = "ofs",
}
m["gmw-frk"] = {
"Low Franconian",
153050,
"gmw",
protoLanguage = "frk",
}
m["gmw-hgm"] = {
"High German",
52040,
"gmw",
protoLanguage = "goh",
}
m["gmw-ian"] = {
"Irish Anglo-Norman",
120719384,
"gmw-ang",
protoLanguage = "enm",
}
m["gmw-lgm"] = {
"Low German",
25433,
"gmw-nsg",
protoLanguage = "osx",
}
m["gmw-nsg"] = {
"North Sea Germanic",
30134,
"gmw",
aliases = {"Ingvaeonic"},
}
m["gn"] = {
"Guarani",
35876,
"tup-gua",
aliases = {"Guaraní"},
}
m["grb"] = {
"Grebo proper",
35257,
"kro-grb",
}
m["grk"] = {
"Hellenic",
2042538,
"ine",
aliases = {"Greek"},
}
m["him"] = {
"Western Pahari",
10939493,
"inc-pah",
aliases = {"Himachali"},
}
m["hmn"] = {
"Hmongic",
3307894,
"hmx",
}
m["hmx"] = {
"Hmong-Mien",
33322,
aliases = {"Miao-Yao"},
}
m["hmx-mie"] = {
"Mienic",
7992695,
"hmx",
}
m["hok"] = {
"Hokan",
33406,
}
m["hyx"] = {
"Armenian",
8785,
"ine",
}
m["iir"] = {
"Indo-Iranian",
33514,
"ine",
}
m["iir-nur"] = {
"Nuristani",
161804,
"iir",
}
m["nur-nor"] = {
"Northern Nuristani",
nil,
"iir-nur",
}
m["nur-sou"] = {
"Southern Nuristani",
nil,
"iir-nur",
}
m["ijo"] = {
"Ijoid",
1325759,
"nic",
other_names = {"Ijaw"}, -- Ijaw may be a subfamily
}
m["inc"] = {
"Indo-Aryan",
33577,
"iir",
aliases = {"Indic"},
}
m["inc-bas"] = {
"Bengali-Assamese",
4179137,
"inc-eas",
aliases = {"Assamese-Bengali", "Gauda-Kamarupa"},
}
m["inc-bhi"] = {
"Bhil",
4901727,
"inc-cen",
}
m["inc-bih"] = {
"Bihari",
135305,
"inc-eas",
}
m["inc-cen"] = {
"Central Indo-Aryan",
10979187,
"inc",
protoLanguage = "inc-asa",
}
m["inc-chi"] = {
"Chitrali",
11732797,
"inc-dar",
}
m["inc-dar"] = {
"Dardic",
161101,
"inc",
protoLanguage = "inc-ash",
}
m["inc-dre"] = {
"Eastern Dardic",
nil,
"inc-dar",
}
m["inc-dng"] = {
"Dangari",
nil,
"inc-shn",
}
m["inc-eas"] = {
"Eastern Indo-Aryan",
12593391,
"inc",
protoLanguage = "inc-aav",
}
m["inc-hal"] = {
"Halbic",
16910593,
"inc-eas",
aliases = {"Halbi"},
}
m["inc-hie"] = {
"Eastern Hindi",
4126648,
"inc-cen",
aliases = {"Purabiyā"},
protoLanguage = "inc-apa",
}
m["inc-hiw"] = {
"Western Hindi",
12600937,
"inc-cen",
protoLanguage = "inc-ohi",
}
m["inc-hnd"] = {
"Hindustani",
11051,
"inc-hiw",
aliases = {"Hindi-Urdu"},
protoLanguage = "hi-mid",
}
m["inc-ins"] = {
"Insular Indo-Aryan",
12179302,
"inc",
protoLanguage = "inc-apa",
}
m["inc-kas"] = {
"Kashmiric",
nil,
"inc-dre",
aliases = {"Kashmiri"},
}
m["inc-koh"] = {
"Kohistani",
13018610,
"inc-dre",
}
m["inc-krd"] = {
"KRDS languages",
6356154,
"inc-eas",
aliases = {"Kamta, Rajbanshi, Deshi and Surjapuri", "KRNB languages", "Kamta, Rajbanshi and Northern Deshi Bangla"},
}
m["inc-kun"] = {
"Kunar",
nil,
"inc-dar",
}
m["inc-mid"] = {
"Middle Indo-Aryan",
3236316,
"inc",
aliases = {"Middle Indic"},
}
m["inc-nwe"] = {
"Northwestern Indo-Aryan",
16111018,
"inc",
protoLanguage = "inc-apa",
}
m["inc-nor"] = {
"Northern Indo-Aryan",
946077,
"inc",
protoLanguage = "inc-aka",
}
m["inc-old"] = {
"Old Indo-Aryan",
118976896,
"inc",
aliases = {"Old Indic"},
}
m["inc-pah"] = {
"Pahari",
946077,
"inc-nor",
aliases = {"Pahadi"},
protoLanguage = "inc-aka",
}
m["inc-pan"] = {
"Punjabic",
2656685,
"inc-nwe",
aliases = {"Greater Punjabic"},
protoLanguage = "inc-opa",
}
m["inc-pas"] = {
"Pashayi",
36670,
"inc-dar",
aliases = {"Pashai"},
}
m["inc-rom"] = {
"Romani",
13201,
"inc-wes",
aliases = {"Romany", "Gypsy", "Gipsy"},
}
m["inc-shn"] = {
"Shinaic",
12646125,
"inc-dre",
}
m["inc-snd"] = {
"Sindhic",
7522212,
"inc-nwe",
protoLanguage = "inc-avr",
}
m["inc-sou"] = {
"Southern Indo-Aryan",
10856062,
"inc",
protoLanguage = "inc-ama",
}
m["inc-tha"] = {
"Tharu",
34035,
"inc-eas",
}
m["inc-wes"] = {
"Western Indo-Aryan",
nil,
"inc",
protoLanguage = "inc-agu",
}
m["ine"] = {
"Indo-European",
19860,
aliases = {"Indo-Germanic"},
}
m["ine-ana"] = {
"Anatolian",
147085,
"ine",
}
m["ine-bsl"] = {
"Balto-Slavic",
147356,
"ine",
}
m["ine-toc"] = {
"Tocharian",
37029,
"ine",
aliases = {"Tokharian"},
}
m["ira"] = {
"Iranian",
33527,
"iir",
}
m["ira-csp"] = {
"Caspian",
5049123,
"ira-mpr",
}
m["ira-cen"] = {
"Central Iranian",
nil,
"ira",
}
m["ira-kms"] = {
"Komisenian",
nil,
"ira-mpr",
aliases = {"Semnani"},
}
m["ine-luw"] = {
"Luwic",
115748615,
"ine-ana",
aliases = {"Luvic"},
}
m["ira-mid"] = {
"Middle Iranian",
6841465,
"ira",
}
m["ira-mny"] = {
"Munji-Yidgha",
nil,
"ira-sym",
aliases = {"Yidgha-Munji"},
}
m["ira-msh"] = {
"Mazanderani-Shahmirzadi",
nil,
"ira-csp",
}
m["ira-nei"] = {
"Northeastern Iranian",
10775567,
"ira",
}
m["ira-nwi"] = {
"Northwestern Iranian",
390576,
"ira-wes",
}
m["ira-old"] = {
"Old Iranian",
23301845,
"ira",
}
m["ira-orp"] = {
"Ormuri-Parachi",
nil,
"ira-sei",
}
m["ira-pat"] = {
"Pathan",
nil,
"ira-sei",
}
m["ira-sbc"] = {
"Sogdo-Bactrian",
nil,
"ira-nei",
}
m["ira-mpr"] = {
"Medo-Parthian",
nil,
"ira-nwi",
aliases = {"Partho-Median"},
}
m["ira-sgi"] = {
"Sanglechi-Ishkashimi",
18711232,
"ira-sei",
}
m["ira-shr"] = {
"Shughni-Roshani",
11732824,
"ira-shy",
}
m["ira-shy"] = {
"Shughni-Yazghulami",
nil,
"ira-sym",
}
m["ira-sgc"] = {
"Sogdic",
nil,
"ira-sbc",
aliases = {"Sogdian"},
}
m["ira-sei"] = {
"Southeastern Iranian",
3833002,
"ira",
}
m["ira-swi"] = {
"Southwestern Iranian",
390424,
"ira-wes",
}
m["ira-sym"] = {
"Shughni-Yazghulami-Munji",
nil,
"ira-sei",
}
m["ira-wes"] = {
"Western Iranian",
129850,
"ira",
}
m["ira-zgr"] = {
"Zaza-Gorani",
167854,
"ira-mpr",
aliases = {"Zaza-Gurani", "Gorani-Zaza"},
}
m["iro"] = {
"Iroquoian",
33623,
}
m["iro-nor"] = {
"North Iroquoian",
nil,
"iro",
}
m["itc"] = {
"Italic",
131848,
"ine",
}
m["itc-laf"] = {
"Latino-Faliscan",
33478,
"itc",
aliases = {"Latinian"},
}
m["itc-sbl"] = {
"Osco-Umbrian",
515194,
"itc",
aliases = {"Sabellic", "Sabellian"},
}
m["jpx"] = {
"Japonic",
33612,
aliases = {"Japanese", "Japanese-Ryukyuan"},
}
m["jpx-nry"] = {
"Northern Ryukyuan",
20862796,
"jpx-ryu",
}
m["jpx-ryu"] = {
"Ryukyuan",
56393,
"jpx",
}
m["jpx-sry"] = {
"Southern Ryukyuan",
18392243,
"jpx-ryu",
}
m["kar"] = {
"Karen",
1364815,
"sit",
}
m["kca"] = {
"Khanty",
33563,
"urj-ugr",
aliases = {"Khantyic", "Khantic"},
}
--[=[
Exceptional language and family codes for Khoisan and Kordofanian languages can use
the prefix "khi-" and "kdo-" respectively, though they are no longer family codes themselves.
]=]--
m["khi-kal"] = {
"Kalahari Khoe",
nil,
"khi-kho",
}
m["khi-khk"] = {
"Khoekhoe",
nil,
"khi-kho",
}
m["khi-kkw"] = {
"Khoe-Kwadi",
60785084,
aliases = {"Kwadi-Khoe"},
}
m["khi-kho"] = {
"Khoe",
2736449,
"khi-kkw",
aliases = {"Central Khoisan"},
}
m["khi-kxa"] = {
"Kx'a",
6450587,
aliases = {"Kxa", "Ju-ǂHoan"},
}
m["khi-tuu"] = {
"Tuu",
631046,
aliases = {"Kwi", "Taa-Kwi", "Southern Khoisan", "Taa-ǃKwi", "Taa-ǃUi", "ǃUi-Taa"},
}
m["kro"] = {
"Kru",
33535,
"nic-vco",
}
m["kro-aiz"] = {
"Aizi",
4699431,
"kro",
}
m["kro-bet"] = {
"Bété",
32956,
"kro-ekr",
}
m["kro-did"] = {
"Dida",
32685,
"kro-ekr",
}
m["kro-ekr"] = {
"Eastern Kru",
5972899,
"kro",
}
m["kro-grb"] = {
"Grebo",
5601537,
"kro-wkr",
}
m["kro-wee"] = {
"Wee",
nil,
"kro-wkr",
}
m["kro-wkr"] = {
"Western Kru",
5972897,
"kro",
}
m["ku"] = {
"Kurdish",
36368,
"ira-nwi",
}
m["kv"] = {
"Komi",
36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family
"urj-prm",
}
m["map"] = {
"Austronesian",
49228,
}
m["map-ata"] = {
"Atayalic",
716610,
"map",
}
m["mjg"] = {
"Monguor",
34214,
"xgn-shr",
}
m["mkh"] = {
"Mon-Khmer",
33199,
"aav",
}
m["mkh-asl"] = {
"Aslian",
3111082,
"mkh",
}
m["mkh-ban"] = {
"Bahnaric",
56309,
"mkh",
}
m["mkh-kat"] = {
"Katuic",
56697,
"mkh",
}
m["mkh-khm"] = {
"Khmuic",
1323245,
"mkh",
}
m["mkh-kmr"] = {
"Khmeric",
nil,
"mkh",
}
m["mkh-mnc"] = {
"Monic",
3217497,
"mkh",
}
m["mkh-mng"] = {
"Mangic",
3509556,
"mkh",
}
m["mkh-nbn"] = {
"North Bahnaric",
56309,
"mkh-ban",
}
m["mkh-pal"] = {
"Palaungic",
2391173,
"mkh",
}
m["mkh-pea"] = {
"Pearic",
3073022,
"mkh",
}
m["mkh-pkn"] = {
"Pakanic",
nil,
"mkh-mng",
}
m["mkh-vie"] = {
"Vietic",
2355546,
"mkh",
}
m["mno"] = {
"Manobo",
3217483,
"phi",
}
m["mns"] = {
"Mansi",
33759,
"urj-ugr",
aliases = {"Mansic"},
}
m["mun"] = {
"Munda",
33892,
"aav",
}
m["myn"] = {
"Mayan",
33738,
}
--[=[
Exceptional language and family codes for North American Indian languages
can use the prefix "nai-", though "nai" is no longer itself a family code.
]=]--
m["nai-cat"] = {
"Catawban",
3446638,
"nai-sca",
}
m["nai-chu"] = {
"Chumashan",
1288420,
}
m["nai-ckn"] = {
"Chinookan",
610586,
}
m["nai-coo"] = {
"Coosan",
940278,
}
m["nai-jcq"] = {
"Jicaquean",
12179308,
"hok"
}
m["nai-ker"] = {
"Keresan",
35878,
}
m["nai-klp"] = {
"Kalapuyan",
1569040,
}
m["nai-kta"] = {
"Kiowa-Tanoan",
386288,
}
m["nai-len"] = {
"Lencan",
36189,
aliases = {"Lenca"},
}
m["nai-mdu"] = {
"Maiduan",
33502,
}
m["nai-miz"] = {
"Mixe-Zoquean",
954016,
aliases = {"Mixe-Zoque"},
}
m["nai-min"] = {
"Misumalpan",
281693,
"qfa-mch",
aliases = {"Misuluan", "Misumalpa"},
}
m["nai-mus"] = {
"Muskogean",
902978,
aliases = {"Muskhogean"},
}
m["nai-pak"] = {
"Pakawan",
65085487,
"hok",
}
m["nai-pal"] = {
"Palaihnihan",
1288332,
}
m["nai-plp"] = {
"Plateau Penutian",
2307476,
}
m["nai-pom"] = {
"Pomoan",
2618420,
"hok",
aliases = {"Pomo", "Kulanapan"},
}
m["nai-sca"] = {
"Siouan-Catawban",
34181,
}
m["nai-shp"] = {
"Sahaptian",
114782,
"nai-plp",
}
m["nai-shs"] = {
"Shastan",
2991735,
"hok",
}
m["nai-tot"] = {
"Totozoquean",
7828419,
}
m["nai-ttn"] = {
"Totonacan",
34039,
aliases = {"Totonac-Tepehua", "Totonacan-Tepehuan"},
varieties = {"Totonac"},
}
m["nai-tqn"] = {
"Tequistlatecan",
1568317,
"hok",
aliases = {"Tequistlatec", "Chontal", "Chontalan", "Oaxacan Chontal", "Chontal of Oaxaca"},
}
m["nai-tsi"] = {
"Tsimshianic",
34134,
}
m["nai-utn"] = {
"Utian",
13371763,
"nai-you",
aliases = {"Miwok-Costanoan", "Mutsun"},
}
m["nai-wtq"] = {
"Wintuan",
1294259,
aliases = {"Wintun"},
}
m["nai-xin"] = {
"Xincan",
1546494,
aliases = {"Xinca"},
}
m["nai-ykn"] = {
"Yukian",
2406722,
aliases = {"Yuki-Wappo"},
}
m["nai-you"] = {
"Yok-Utian",
2886186,
}
m["nai-yuc"] = {
"Yuman-Cochimí",
579137,
}
m["ngf"] = {
"Trans-New Guinea",
34018,
}
m["ngf-ais"] = {
"Aisian",
nil,
"ngf-eso",
}
m["ngf-ang"] = {
"Angan",
3217366,
"ngf",
aliases = {"Kratke Range"}, -- Usher
}
m["ngf-ank"] = {
"Angal-Kewa",
12626916, -- exist in dewiki and hrwiki
"ngf-sak",
}
m["ngf-ask"] = {
"Asmat-Kamoro",
3031400,
"ngf",
-- Wikipedia uses Asmat-Kamoro to refer to a narrower group excluding the Sabakor languages (Buruwai and Kamberau,
-- which Glottolog splits into North Kamrau and South Kamrau [sic]), and uses Asmat-Kamrau to refer to what we and
-- Glottolog call Asmat-Kamoro. Glottolog does not recognize the narrower grouping.
aliases = {"Asmat-Kamrau", -- Wikipedia
"Asmat-Kamrau Bay", -- Usher
},
}
m["ngf-asm"] = {
"Asmat",
4807421,
"ngf-ask",
}
m["ngf-ata"] = {
"Ankave-Tainae-Akoye",
nil,
"ngf-ang",
aliases = {"Southwest Kratke Range"}, -- Usher
}
m["ngf-awd"] = {
"Awyu-Dumut", -- [[w:Awyu-Dumut languages]] redirects to [[w:Greater Awyu languages]]
4830163, -- exist in eswiki, hrwiki and ruwiki
"ngf-gaw",
aliases = {"Central Digul River"}, -- Usher
}
m["ngf-awy"] = {
"Awyu",
96372866,
"ngf-awd",
}
m["ngf-bda"] = {
"Becking-Dawi",
nil, -- Q55993716 ([[Category:Becking–Dawi languages]]) exists in enwiki
"ngf-gaw",
aliases = {"Becking and Dawi Rivers"}, -- Usher
}
m["ngf-bin"] = {
"Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf-gbi",
aliases = {"Oro"}, -- Usher (2020)
}
m["ngf-boa"] = {
"Boane",
nil,
"ngf-era",
aliases = {"Boana", -- Glottolog's name
"Wain"}, -- not in Usher; "Wain" often excludes Mungkip, perhaps because it's poorly documented
}
m["ngf-bos"] = {
"Bosavi",
4947122,
"ngf",
aliases = {"Papuan Plateau"}, -- alternative name given by Wikipedia
}
m["ngf-bsi"] = {
"Baruya-Simbari",
nil,
"ngf-ang",
aliases = {"Northwest Kratke Range"}, -- Usher
}
m["ngf-cda"] = {
"Central Dani",
nil,
"ngf-dan",
aliases = {"Dani"}, -- Usher
}
m["ngf-chw"] = {
"Chimbu-Wahgi",
3217383,
"ngf",
aliases = {"Simbu-Western Highlands"}, -- alternative name given by Wikipedia
}
m["ngf-dag"] = {
"Dagan",
5208454,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Meneao Range"},
}
m["ngf-dal"] = {
"Dallman",
nil,
"ngf-huo",
aliases = {"Kinalakna-Kumukio", -- Pawley-Hammarström, who exclude Nomu, but they only had a numeral list of that language to work from
"Northeast Huon", -- Usher
},
}
m["ngf-dan"] = {
"Dani",
3217389,
"ngf",
-- Wikipedia renames the Dani languages to the Baliem Valley languages and sometimes (but not consistently)
-- reserves the name Dani (or "Dani proper") for a narrower group excluding Wano and the poorly attested Ngalik
-- languages (Nduga, Silimo, and the Yali dialect cluster, which we, following Ethnologue and Glottolog, split into
-- Anggurk Yali, Ninia Yali and Pass Valley Yali). Glottolog does not recognize the narrower grouping.
aliases = {"Baliem Valley", -- Wikipedia
"Balim Valley", -- Usher
},
}
m["ngf-dum"] = {
"Dumut", -- [[w:Dumut languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Wambon"}, -- Usher
}
m["ngf-ehu"] = {
"Eastern Huon", -- Glottolog adds Ono and Sialum, Pawley-Hammarström adds Dedua
10567087,
"ngf-huo",
aliases = {"East Huon"}, -- Usher
}
m["ngf-eku"] = {
"East Kutubuan",
5328752,
"ngf", -- Not in TNG per Glottolog but accepted by all others. Sometimes grouped with Fasu to form a Kutubuan family.
aliases = {"East Kutubu"}, -- Glottolog's name
}
m["ngf-enc"] = {
"Engic",
nil,
"ngf-eng",
aliases = {"Engan", -- Glottolog
"Engan proper", -- Wikipedia
"North Engan", -- alternative name given by Wikipedia
"Trans-Enga", -- Usher
},
}
m["ngf-eng"] = {
"Engan",
3217449,
"ngf",
aliases = {"Enga-Kewa-Huli", -- Glottolog, Pawley-Hammarström
"Enga-Southern Highlands", -- Usher
},
}
m["ngf-era"] = {
"Erap",
nil,
"ngf-fin",
aliases = {"Erap River"}, -- Usher?
}
m["ngf-eso"] = {
"East Sogeram",
nil,
"ngf-sog",
}
m["ngf-est"] = {
"East Strickland",
5329440,
"ngf",
aliases = {"Strickland River"}, -- alternative name given by Wikipedia
}
m["ngf-eva"] = {
"Evapia",
nil,
"ngf-rai",
aliases = {"Evapia River"}, -- Usher
}
m["ngf-fgi"] = {
"Fore-Gimi",
nil,
"ngf-gor",
aliases = {"South Goroka"}, -- Usher
}
m["ngf-fhu"] = {
"Finisterre-Huon",
3217453,
"ngf",
aliases = {"Finisterre Range-Huon Peninsula"}, -- per Usher
}
m["ngf-fin"] = {
"Finisterre",
5450373,
"ngf-fhu",
aliases = {"Finisterre-Saruwaged", -- Glottolog's name
"Finisterre Range"}, -- per Usher
}
m["ngf-gah"] = {
"Gahuku",
nil,
"ngf-gor",
aliases = {"Alekano-Asaro River"}, -- Usher
}
m["ngf-gau"] = {
"Gauwa",
nil,
"ngf-kai",
aliases = {"West Kainantu"}, -- Usher
}
m["ngf-gaw"] = {
"Greater Awyu",
12627424,
"ngf",
aliases = {"Digul River"}, -- used by Usher (2020)
}
m["ngf-gbi"] = {
"Greater Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf", -- not placed in Trans-New Guinea in Usher (2020)
aliases = {"Guhu-Oro"}, -- Guhu-Oro is used in Usher (2020)
}
m["ngf-gko"] = {
"Gaena-Korafe",
11732347, -- considered a single Korafe language by Wikipedia
"ngf-bin",
aliases = {"Gaina-Korafe"}, -- Usher
}
m["ngf-gmo"] = {
"Gusap-Mot",
16110857,
"ngf-fin",
aliases = {"Mot River"}, -- Usher?
}
m["ngf-gor"] = {
"Goroka",
15478597,
"ngf-kgo",
}
m["ngf-gsu"] = {
"Gogodala-Suki",
5577428,
"ngf", -- Possibly in the proposed Papuan Gulf family. Not in TNG per Glottolog but accepted by all others.
aliases = {"Suki-Gogodala", -- Glottolog's name
"Suki-Aramia River", -- Used in Usher (2020)
},
}
m["ngf-gum"] = {
"Gum",
5618008,
"ngf-mab",
}
m["ngf-gvd"] = {
"Grand Valley Dani", -- considered a single language by Wikipedia
5595219,
"ngf-cda",
}
m["ngf-hag"] = {
"Hagen", -- [[w:Hagen languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Melpa-Kaugel River"}, -- Usher
}
m["ngf-han"] = {
"Hanseman",
5651020,
"ngf-mab",
aliases = {"Hansemann Range"}, -- Usher
}
m["ngf-huo"] = {
"Huon",
5946109,
"ngf-fhu",
aliases = {"Huon Peninsula"}, -- per Usher
}
m["ngf-jim"] = {
"Jimi", -- [[w:Jimi languages]] and [[w:Jimi River languages]] redirect to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Jimi River"}, -- Usher
}
m["ngf-kab"] = {
"Kabwum",
nil,
"ngf-huo",
aliases = {"Timbe-Selepet-Komba", -- Pawley-Hammarström,
"Northwest Huon", -- Usher
},
}
m["ngf-kai"] = {
"Kainantu", -- Kambaira: under "unclassified Kainantu" (Glottolog), Tairora (Pawley-Hammarström), Gauwa (Usher)
15478590,
"ngf-kgo",
aliases = {"Gadsup-Auyana-Awa-Tairora"}, -- Wurm,
}
m["ngf-kak"] = {
"Kalam-Kobon",
6350303,
"ngf-ksa",
aliases = {"Kalam",
"Kaironk River"}, -- Usher (2020)
}
m["ngf-kau"] = {
"Kaukombar",
nil,
"ngf-nad",
aliases = {"Kaukombaran", -- Glottolog following Z'graggen (1975)
"Kaukombar River"}, -- Usher's term
}
m["ngf-kbm"] = {
"Kosorong-Burum-Mindik",
nil,
"ngf-huo",
aliases = {"Bulum River"}, -- Usher
}
m["ngf-kgo"] = {
"Kainantu-Goroka",
3217463,
"ngf",
aliases = {"Eastern Highlands"}, -- per Usher (2020)
}
m["ngf-khu"] = {
"Kewa-Huli",
nil,
"ngf-eng",
aliases = {"Huli-Southern Highlands"}, -- Usher
}
m["ngf-kma"] = {
"Kâte-Mape",
nil,
"ngf-ehu",
aliases = {"Kate-Mape-Sene", -- Pawley-Hammarström (with Sene),
"Southeast Huon", -- Usher
},
}
m["ngf-kme"] = {
"Kapau-Menya",
nil,
"ngf-ang",
aliases = {"Southeast Kratke Range"}, -- Usher
}
m["ngf-koi"] = {
"Koiarian",
11154240,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Koiari-Managalas Plateau"},
}
m["ngf-kok"] = {
"Kokon", -- Usher calls it South Mabuso but includes Gum in it
nil,
"ngf-mab",
}
m["ngf-kow"] = {
"Kowan",
6435004,
"ngf-mad",
aliases = {"Isumrud Strait"}, -- per Usher (2020)
}
m["ngf-ksa"] = {
"Kalam-Southern Adelbert",
nil,
"ngf-mad",
aliases = {"Kalamic-South Adelbert", -- Glottolog
"West Madang"}, -- Usher (2020)
}
m["ngf-kto"] = {
"Kube-Tobo", -- per Glottolog, one language "Kulungtfu-Yuanggeng-Tobo"
1173235, -- code for Tobo-Kube language
"ngf-huo",
aliases = {"Tobo-Kube"},
}
m["ngf-kts"] = {
"Komyandaret-Tsaukambo",
nil,
"ngf-bda",
aliases = {"Becking River"}, -- Usher
}
m["ngf-kum"] = {
"Kumil",
nil,
"ngf-nad",
aliases = {"Kumilan", -- Pawley-Hammarström following Z'graggen (1975)
"Kumil River"}, -- Usher's term
}
m["ngf-kya"] = {
"Kamano-Yagaria",
nil,
"ngf-gor",
aliases = {"Henganofi", -- Usher
"Kamano-Yagaria-Keigana",
},
}
m["ngf-lok"] = {
"Lowland Ok",
nil,
"ngf-okk",
}
m["ngf-mab"] = {
"Mabuso",
6721668,
"ngf-mad",
}
m["ngf-mad"] = {
"Madang",
11217556,
"ngf",
aliases = {"Madang-Adelbert Range"}, -- Z'graggen (1975), corresponding to today's Madang except in lacking Kalam and Gants
}
m["ngf-mek"] = {
"Mek",
6810515,
"ngf",
aliases = {"Goliath"}, -- outdated alternative name given by Wikipedia
}
m["ngf-min"] = {
"Mindjim",
86749913,
"ngf-mad",
aliases = {"Lower Minjim", -- Glottolog, placed in Rai Coast by Glottolog and Pawley-Hammarström; Glottolog's
-- Mindjim has 6 languages, including "Upper Minjim" (Rerau and Sgi Bara)
"Mindjim River", -- Usher
"Minjim", "Minjim River",
},
}
-- Add if Molet is separated from Asaro'o
-- m["ngf-moa"] = {
-- "Molet-Asaro'o",
-- nil,
-- "ngf-war",
-- }
m["ngf-mok"] = {
"Mountain Ok", -- [[w:Mountain Ok languages]] redirects to [[w:Ok languages]]
nil,
"ngf-okk",
}
m["ngf-mom"] = {
"Mombum",
6897077,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Mombum-Koneraw", "Komolom", "Muli Strait"}, -- Pawley-Hammarström uses Komolom, Usher uses Muli Strait
}
m["ngf-msu"] = {
"Mian-Suganga", -- considred a single Mian language by Wikipedia
12952846,
"ngf-mok",
aliases = {"Mianic"}, -- Glottolog
}
m["ngf-nad"] = {
"Northern Adelbert", -- not accepted by Pawley-Hammarström
16952821, -- code for Croisilles linkage
"ngf-mad",
aliases = {"Adelbert Range-Isumrud Strait", -- Usher (2020)
"North Adelbert",
"Pihom-Isumrud"}, -- Ross?
}
m["ngf-nbi"] = {
"North Binanderean",
nil,
"ngf-bin",
aliases = {"Suena-Zia"}, -- Usher
}
m["ngf-nde"] = {
"Ndeiram", -- [[w:Ndeiram River languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Ndeiram River"}, -- Usher?
}
m["ngf-ngn"] = {
"Ngalik-Nduga", -- [[w:Ngalik languages]] redirects to [[w:Baliem Valley languages]] = Dani languages
nil,
"ngf-dan",
aliases = {"Ngalik"}, -- Usher
}
m["ngf-nso"] = {
"North Sogeram",
nil,
"ngf-sog",
aliases = {"Mum-Sirva", -- Usher
"North Central Sogeram", -- used by those who accept Central Sogeram (= North Sogeram + Apali and Manat)
"North-Central Sogeram", -- rarer than without the dash
"Sikan"}, -- Z’graggen (1975?)
}
m["ngf-num"] = {
"Numugen",
nil,
"ngf-nad",
aliases = {"Numugenan", -- Glottolog following Z'graggen 1975
"Numugen River"}, -- Usher's term
}
m["ngf-nur"] = {
"Nuru", -- Usher excludes Yangulam, Pawley-Hammarström include Jilim and Rerau
nil,
"ngf-rai",
aliases = {"Nuru River"}, -- Usher?
}
m["ngf-nwh"] = {
"Northwest Hanseman", -- Usher
nil,
"ngf-han",
aliases = {"Wamas-Samosa-Murupi-Mosimo"}, -- Glottolog, Greenhill, and Pawley-Hammarström following Z'graggen; the most common name, but very unwieldy
}
m["ngf-oen"] = {
"Outer Engan", -- considered a single Nete language by Wikipedia
6998869,
"ngf-enc",
aliases = {"Nete-Bisorio"}, -- Usher
}
m["ngf-okk"] = {
"Ok",
7081687,
"ngf",
}
m["ngf-omo"] = {
"Omosan", -- not included in (Greater) Northern Adelbert by Glottolog, but a sister
nil,
"ngf-nad",
}
m["ngf-oro"] = {
"Orokaivic",
7103752, -- considered a single Orokaiva language by Wikipedia
"ngf-bin",
aliases = {"Central Oro"}, -- Usher
}
m["ngf-pan"] = {
"Paniai Lakes",
6035631,
"ngf",
aliases = {"Wissel Lakes", "Wissel Lakes-Kemandoga River"}, -- alternative names given by Wikipedia
}
m["ngf-pek"] = {
"Peka",
nil,
"ngf-rai",
aliases = {"Peka River"}, -- Usher?
}
m["ngf-pom"] = {
"Pomoikan",
nil,
"ngf-sad",
}
m["ngf-rai"] = {
"Rai Coast",
7283663,
"ngf-mad",
aliases = {"South Madang"}, -- Usher
}
m["ngf-sab"] = {
"Sabakor", -- [[w:Sabakor languages]] redirects to [[w:Asmat–Kamrau languages]]
nil, -- 55994614 is for [[Category:Kamrau Bay languages]], which exists on enwiki
"ngf-ask",
aliases = {"Kamrau Bay"}, -- Usher
}
m["ngf-sad"] = {
"Southern Adelbert",
12633980,
"ngf-ksa",
aliases = {"South Adelbert", -- Glottolog
"Southern Adelbert Range", -- Z'graggen (1980)
"Sogeram and Tomul Rivers"}, -- Usher (2020)?
}
m["ngf-sak"] = {
"Sau-Angal-Kewa",
nil,
"ngf-khu",
aliases = {"Southern Highlands"}, -- Usher
}
m["ngf-san"] = {
"Sankwep",
nil,
"ngf-huo",
aliases = {"Nabak-Momolili", -- Pawley-Hammarström,
"Southwest Huon", -- Usher
},
}
m["ngf-sbh"] = {
"South Bird's Head",
7566330,
"ngf",
}
m["ngf-sim"] = {
"Simbu",
nil,
"ngf-chw",
}
m["ngf-sog"] = {
"Sogeram",
86750419,
"ngf-sad",
aliases = {"Sogeram River", -- Usher
"Wanang"},
}
m["ngf-sop"] = {
"Sopac",
nil,
"ngf-ehu",
aliases = {"Momare-Migabac", -- Pawley-Hammarström,
"Masaweng River", -- Usher
},
}
m["ngf-taa"] = {
"Tainae-Akoye",
nil,
"ngf-ata",
aliases = {"Akoye-Tainae"}, -- Usher
}
m["ngf-tai"] = {
"Tairora",
nil,
"ngf-kai",
aliases = {"Tairoric", -- Glottolog,
"East Kainantu", -- Usher
},
}
m["ngf-tib"] = {
"Tiboran",
nil,
"ngf-nad",
aliases = {"Nuclear Tibor", -- Glottolog, excluding Wanambre/Mokati
"Tiboran River", -- Usher (2020)
"Tibor", -- Pick (2020) and Glottolog including Wanambre/Mokati
}
}
m["ngf-tna"] = {
"Tangko-Nakai",
nil,
"ngf-okk",
aliases = {"Central Ok"}, -- Usher
}
m["ngf-uru"] = {
"Uruwa",
nil,
"ngf-fin",
aliases = {"Uruwa River"}, -- Usher?
}
m["ngf-usi"] = {
"Utu-Silopi",
nil,
"ngf-han",
aliases = {"Silopi-Utu"}, -- Usher
}
m["ngf-waa"] = {
"Wantoat-Awara", -- not in Usher but Wantoat and Awara form a dialect chain
nil,
"ngf-wan",
aliases = {"Awara-Wantoat"}, -- per Wikipedia
}
m["ngf-wah"] = {
"Wahgi", -- [[w:Wahgi languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Wahgi Valley"}, -- Usher
}
m["ngf-wan"] = {
"Wantoatic",
nil,
"ngf-fin",
aliases = {"Wantoat",
"Wantoat River", -- Usher?
},
}
m["ngf-war"] = {
"Warup",
12645082,
"ngf-fin",
aliases = {"Warup River"}, -- Usher?
}
m["ngf-woj"] = {
"Wojokesic",
nil,
"ngf-ang",
aliases = {"Northeast Kratke Range"}, -- Usher
}
m["ngf-wok"] = {
"West Ok",
nil,
"ngf-okk",
aliases = {"Kwer-Kopkaka-Burumakok"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-wso"] = {
"West Sogeram",
nil,
"ngf-sog",
aliases = {"Mand-Nend", -- Usher
"Atan", -- Wurm following Z'graggen
},
}
m["ngf-yag"] = {
"Yaganon", -- placed in Rai Coast by Glottolog and Pawley-Hammarström
35323986,
"ngf-mad",
aliases = {"Yaganon River"}, -- Usher
}
m["ngf-yal"] = {
"Yali", -- considered a single language by Wikipedia
8047468,
"ngf-ngn",
aliases = {"Ngalik"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-yar"] = {
"Yareban",
16977672,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Musa River"},
}
m["ngf-ynu"] = {
"Yau-Nungon",
12953319, -- for the single Yau language in Wikipedia ([[w:Yau language (Trans–New Guinea)]])
"ngf-uru",
}
m["ngf-yup"] = {
"Yupna",
nil,
"ngf-fin",
aliases = {"Yupna River"}, -- Usher?
}
m["nic"] = {
"Niger-Congo",
33838,
aliases = {"Niger-Kordofanian"},
}
m["nic-alu"] = {
"Alumic",
4737355,
"nic-plt",
}
m["nic-bas"] = {
"Basa",
4866154,
"nic-knj",
}
m["nic-bbe"] = {
"Eastern Beboid",
nil,
"nic-beb",
}
m["nic-bco"] = {
"Benue-Congo",
33253,
"nic-vco",
}
m["nic-bcr"] = {
"Bantoid-Cross",
806983,
"nic-bco",
}
m["nic-bdn"] = {
"Northern Bantoid",
nil,
"nic-bod",
aliases = {"North Bantoid"},
}
m["nic-bds"] = {
"Southern Bantoid",
3183152,
"nic-bod",
aliases = {"Wide Bantu", "Bin"},
}
m["nic-beb"] = {
"Beboid",
813549,
"nic-bds",
}
m["nic-ben"] = {
"Bendi",
4887065,
"nic-bcr",
}
m["nic-beo"] = {
"Beromic",
4894642,
"nic-plt",
}
m["nic-bod"] = {
"Bantoid",
806992,
"nic-bcr",
}
m["nic-buk"] = {
"Buli-Koma",
nil,
"nic-ovo",
}
m["nic-bwa"] = {
"Bwa",
12628562,
"nic-gur",
other_names = {"Bwamu", "Bomu"},
}
m["nic-cde"] = {
"Central Delta",
3813191,
"nic-cri",
}
m["nic-cri"] = {
"Cross River",
1141096,
"nic-bcr",
}
m["nic-dag"] = {
"Dagbani",
nil,
"nic-wov",
}
m["nic-dak"] = {
"Dakoid",
1157745,
"nic-bdn",
}
m["nic-dge"] = {
"Escarpment Dogon",
5397128,
"qfa-dgn",
}
m["nic-dgw"] = {
"West Dogon",
nil,
"qfa-dgn",
}
m["nic-eko"] = {
"Ekoid",
1323395,
"nic-bds",
}
m["nic-eov"] = {
"Eastern Oti-Volta",
nil,
"nic-ovo",
aliases = {"Samba"},
}
m["nic-fru"] = {
"Furu",
5509783,
"nic-bds",
}
m["nic-gne"] = {
"Eastern Gurunsi",
12633072,
"nic-gns",
aliases = {"Eastern Grũsi"},
}
m["nic-gnn"] = {
"Northern Gurunsi",
nil,
"nic-gns",
aliases = {"Northern Grũsi"},
}
m["nic-gnw"] = {
"Western Gurunsi",
nil,
"nic-gns",
aliases = {"Western Grũsi"},
}
m["nic-gns"] = {
"Gurunsi",
721007,
"nic-gur",
aliases = {"Grũsi"},
}
m["nic-gre"] = {
"Eastern Grassfields",
5330160,
"nic-grf",
}
m["nic-grf"] = {
"Grassfields",
750932,
"nic-bds",
aliases = {"Grassfields Bantu", "Wide Grassfields"},
}
m["nic-grm"] = {
"Gurma",
30587833,
"nic-ovo",
}
m["nic-grs"] = {
"Southwest Grassfields",
7571285,
"nic-grf",
}
m["nic-gur"] = {
"Gur",
33536,
"alv-sav",
aliases = {"Voltaic"},
}
m["nic-ief"] = {
"Ibibio-Efik",
2743643,
"nic-lcr",
}
m["nic-jer"] = {
"Jera",
nil,
"nic-kne",
}
m["nic-jkn"] = {
"Jukunoid",
1711622,
"nic-pla",
}
m["nic-jrn"] = {
"Jarawan",
1683430,
"nic-mba",
}
m["nic-jrw"] = {
"Jarawa",
35423,
"nic-jrn",
}
m["nic-kam"] = {
"Kambari",
6356294,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
nil,
"nic",
}
m["nic-kau"] = {
"Kauru",
nil,
"nic-kne",
}
m["nic-kmk"] = {
"Kamuku",
6359821,
"nic-knj",
}
m["nic-kne"] = {
"East Kainji",
5328687,
"nic-knj",
}
m["nic-knj"] = {
"Kainji",
681495,
"nic-pla",
}
m["nic-knn"] = {
"Northwest Kainji",
7060098,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
6377681,
"nic",
aliases = {"Katla", "Katla-Tima"},
}
m["nic-lcr"] = {
"Lower Cross River",
3813193,
"nic-cri",
}
m["nic-mam"] = {
"Mamfe",
2005898,
"nic-bds",
aliases = {"Nyang"},
}
m["nic-mba"] = {
"Mbam",
687826,
"nic-bds",
}
m["nic-mbc"] = {
"Mba",
6799561,
"nic-ubg",
}
m["nic-mbw"] = {
"West Mbam",
nil,
"nic-mba",
}
m["nic-mmb"] = {
"Mambiloid",
1888151,
other_names = {"North Bantoid"}, -- per Wikipedia, North Bantoid is the parent family
"nic-bdn",
}
m["nic-mom"] = {
"Momo",
6897393,
"nic-grf",
}
m["nic-mre"] = {
"Moré",
nil,
"nic-wov",
}
m["nic-ngd"] = {
"Ngbandi",
36439,
"nic-ubg",
}
m["nic-nge"] = {
"Ngemba",
7022271,
"nic-gre",
}
m["nic-ngk"] = {
"Ngbaka",
3217499,
"nic-ubg",
}
m["nic-nin"] = {
"Ninzic",
7039282,
"nic-plt",
}
m["nic-nka"] = {
"Nkambe",
7042520,
"nic-gre",
}
m["nic-nkb"] = {
"Baka",
nil,
"nic-nkw",
}
m["nic-nke"] = {
"Eastern Ngbaka",
nil,
"nic-ngk",
}
m["nic-nkg"] = {
"Gbanziri",
nil,
"nic-nkw",
}
m["nic-nkk"] = {
"Kpala",
nil,
"nic-nkw",
}
m["nic-nkm"] = {
"Mbaka",
nil,
"nic-nkw",
}
m["nic-nkw"] = {
"Western Ngbaka",
nil,
"nic-ngk",
}
m["nic-npd"] = {
"North Plateau Dogon",
nil,
"qfa-dgn",
}
m["nic-nun"] = {
"Nun",
13654297,
"nic-gre",
}
m["nic-nwa"] = {
"Nanga-Walo",
nil,
"qfa-dgn",
}
m["nic-ogo"] = {
"Ogoni",
2350726,
"nic-cri",
aliases = {"Ogonoid"},
}
m["nic-ovo"] = {
"Oti-Volta",
1157178,
"nic-gur",
}
m["nic-pla"] = {
"Platoid",
453244,
"nic-bco",
aliases = {"Central Nigerian"},
}
m["nic-plc"] = {
"Central Plateau",
5061668,
"nic-plt",
}
m["nic-pld"] = {
"Plains Dogon",
nil,
"qfa-dgn",
}
m["nic-ple"] = {
"East Plateau",
5329154,
"nic-plt",
}
m["nic-pls"] = {
"South Plateau",
7568236,
"nic-plt",
aliases = {"Jilic-Eggonic"},
}
m["nic-plt"] = {
"Plateau",
1267471,
"nic-pla",
}
m["nic-ras"] = {
"Rashad",
3401986,
"nic",
}
m["nic-rnc"] = {
"Central Ring",
nil,
"nic-rng",
}
m["nic-rng"] = {
"Ring",
2269051,
"nic-grf",
aliases = {"Ring Road"},
}
m["nic-rnn"] = {
"Northern Ring",
nil,
"nic-rng",
}
m["nic-rnw"] = {
"Western Ring",
nil,
"nic-rng",
}
m["nic-ser"] = {
"Sere",
7453058,
"nic-ubg",
}
m["nic-shi"] = {
"Shiroro",
7498953,
"nic-knj",
aliases = {"Pongu"},
}
m["nic-sis"] = {
"Sisaala",
36532,
"nic-gnw",
}
m["nic-tar"] = {
"Tarokoid",
2394472,
"nic-plt",
}
m["nic-tiv"] = {
"Tivoid",
752377,
"nic-bds",
}
m["nic-tvc"] = {
"Central Tivoid",
nil,
"nic-tiv",
}
m["nic-tvn"] = {
"Northern Tivoid",
nil,
"nic-tiv",
}
m["nic-ubg"] = {
"Ubangian",
33932,
"nic-vco", -- or none
}
m["nic-uce"] = {
"East-West Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucn"] = {
"North-South Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucr"] = {
"Upper Cross River",
4108624,
"nic-cri",
aliases = {"Upper Cross"},
}
m["nic-vco"] = {
"Volta-Congo",
37228,
"alv",
}
m["nic-wov"] = {
"Western Oti-Volta",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nic-ykb"] = {
"Yukubenic",
16909196,
"nic-plt",
aliases = {"Oohum"},
}
m["nic-ymb"] = {
"Yambasa",
nil,
"nic-mba",
}
m["nic-yon"] = {
"Yom-Nawdm",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nub"] = {
"Nubian",
1517194,
"sdv-nes",
}
m["nub-hil"] = {
"Hill Nubian",
5762211,
"nub",
aliases = {"Kordofan Nubian"},
}
m["omq"] = {
"Oto-Manguean",
33669,
}
m["omq-cha"] = {
"Chatino",
35111,
"omq-zap",
}
m["omq-chi"] = {
"Chinantecan",
35828,
"omq",
}
m["omq-cui"] = {
"Cuicatec",
616024,
"omq-mix",
}
m["omq-maz"] = {
"Mazatecan",
36230,
"omq",
aliases = {"Mazatec"},
}
m["omq-mix"] = {
"Mixtecan",
21083066,
"omq",
}
m["omq-mxt"] = {
"Mixtec",
36363,
"omq-mix",
}
m["omq-otp"] = {
"Oto-Pamean",
1270220,
"omq",
}
m["omq-pop"] = {
"Popolocan",
5132273,
"omq",
}
m["omq-tri"] = {
"Triqui",
780200,
"omq-mix",
aliases = {"Trique"},
}
m["omq-zap"] = {
"Zapotecan",
8066463,
"omq",
}
m["omq-zpc"] = {
"Zapotec",
13214,
"omq-zap",
}
m["omv"] = {
"Omotic",
33860,
"afa",
}
m["omv-aro"] = {
"Aroid",
3699526,
"omv",
aliases = {"Ari-Banna", "South Omotic", "Somotic"},
}
m["omv-diz"] = {
"Dizoid",
430251,
"omv",
aliases = {"Maji", "Majoid"},
}
m["omv-eom"] = {
"East Ometo",
20527288,
"omv-ome",
}
m["omv-gon"] = {
"Gonga",
4143043,
"omv",
aliases = {"Kefoid"},
}
m["omv-mao"] = {
"Mao",
1351495,
"omv",
}
m["omv-nom"] = {
"North Ometo",
nil,
"omv-ome",
}
m["omv-ome"] = {
"Ometo",
36310,
"omv",
}
m["oto"] = {
"Otomian",
130372545,
"omq-otp",
}
m["oto-otm"] = {
"Otomi",
36355,
"oto",
}
m["paa"] = {
"Papuan",
236425,
"qfa-not",
}
m["paa-aia"] = {
"Aian",
4767739, -- Annaberg languages
"paa-ram",
aliases = {"Middle Ramu", -- Foley (with Rao),
"Annaberg", -- with Rao
"Aram-Aren", -- Usher
},
}
m["paa-alp"] = {
"Alor-Pantar",
3502429,
"paa-tap",
}
m["paa-amu"] = {
"Amto-Musan",
480281,
aliases = {"Samaia River"},
}
m["paa-ani"] = {
"Anim",
55603991,
aliases = {"Fly River"},
}
m["paa-ara"] = {
"Arapesh",
4784223,
"paa-koa",
aliases = {"Arapeshan"}, -- Foley
}
m["paa-arf"] = {
"Arafundi",
4783702,
}
m["paa-ata"] = {
"Ataitan",
4812652,
"paa-ram",
aliases = {"Tangu", -- Foley
"Tanggu", -- alternative name given by Wikipedia
"Moam River", -- Usher
},
}
m["paa-baa"] = {
"Bayono-Awbono",
2424781,
}
m["paa-bai"] = {
"Baining",
748487,
aliases = {"East New Britain"},
}
m["paa-baw"] = {
"Bosngun-Awar",
nil,
"paa-ott",
aliases = {"East Ramu Coast", -- Usher
"Bosman-Awar", -- Wikipedia
},
}
m["paa-bew"] = {
"Bewani", -- [[w:Bewani languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
16113460,
"paa-bor",
aliases = {"Poal River"}, -- Usher
}
m["paa-boa"] = {
"Boazi",
48803717,
"paa-mby",
aliases = {"Lake Murray"}, -- Usher
}
m["paa-bor"] = {
"Border",
1752158,
aliases = {"Upper Tami",
"Tami River-Bewani Range", -- Usher
},
}
m["paa-bul"] = {
"Bulaka River",
4987195,
aliases = {"Yelmek-Maklew", "Jabga"}, -- Yelmek-Maklew in Evans (2018) and Gregor (2021)
}
m["paa-bvi"] = {
"Betaf-Vitou", -- Glottolog
nil,
"paa-tor",
aliases = {"Vitou-Betaf", -- Wikipedia
"Fitou-Tena", -- Usher
"Manirem",
},
}
m["paa-clp"] = {
"Central Lakes Plain", -- [[w:Central Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86780132 is for the corresponding category, which exists in enwiki
"paa-lpl",
aliases = {"East Tariku", -- Glottolog
"Central Lakes Plains", -- Usher
},
}
m["paa-dtu"] = {
"Doso-Turumsa",
16917784,
-- possibly related to East Strickland languages
aliases = {"Soari River"}, -- Usher's name
}
m["paa-ebh"] = {
"East Bird's Head",
338064,
aliases = {"Mantion-Meax", "Mantion-Meyah", -- Mantion-Meax is Wikipedia's term
"Southeast Bird's Head", -- Usher (2020)
},
}
m["paa-eel"] = {
"Eastern Eleman",
nil,
"paa-ele",
aliases = {"East Eleman"},
}
m["paa-egb"] = {
"East Geelvink Bay",
1497678,
aliases = {"Geelvink Bay", "East Cenderawasih"}, -- Geelvink Bay per Glottolog
}
m["paa-eke"] = {
"East Keram",
nil,
"paa-ker",
}
m["paa-ele"] = {
"Eleman",
3034298,
aliases = {"Kerema Bay"},
}
m["paa-elp"] = {
"East Lakes Plain", -- [[w:East Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]; but Croatian Wikipedia has an entry
12633078,
"paa-lpl",
aliases = {"East Lakes Plains"}, -- Usher
}
m["paa-epw"] = {
"Eastern Pauwasi",
16115496,
aliases = {"East Pauwasi"},
}
m["paa-etf"] = {
"Eastern Trans-Fly",
5330530,
aliases = {"Oriomo"}, -- in increasing recent use, probably originating in Evans (2018)
}
m["paa-eti"] = {
"East Timor",
15496066,
"paa-tap",
aliases = {"Oirata-Makasae", -- Wikipedia's name
"Eastern Timor", -- alternative name given by Wikipedia
"Fataluku-Makasai", "Oirata-Makasai", -- alternative names given by Wikidata
},
}
m["paa-fas"] = {
"Fas",
3502658,
aliases = {"Baibai-Fas"}, -- Glottolog's name
}
m["paa-flp"] = {
"Far West Lakes Plain", -- [[w:Wapoga River languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86808337 is for the corresponding Wapoga languages category, which exists in enwiki
"paa-lpl",
aliases = {"Rasawa", -- Clouse (1997)
"Wapoga River", -- Usher, including Kehu/Keuw (unclassified by others)
},
}
m["paa-gkw"] = {
"Greater Kwerba",
12635134,
aliases = {"West Foja Range", -- Usher
"Kwerbic", -- Wikipedia
"Kwerba", -- Foley (2018)
},
}
m["paa-gto"] = {
"Galela-Tobelo",
nil,
"paa-nnh",
aliases = {"Mainland North Halmaheran", -- Glottolog
"Mainland North Halmahera", "Northeast Halmahera", -- alternative names
"Northeast Halmaheran", -- Wikipedia, from Verhoeve 1988
},
}
m["paa-hya"] = {
"Heyo-Yahang",
nil,
"paa-mam",
aliases = {"Yahang-Heyo"}, -- Wikipedia's name
}
m["paa-ing"] = {
"Inland Gulf",
6034783,
"paa-ani",
aliases = {"Inland Gulf of Papua"}, -- Glottolog
}
m["paa-isk"] = {
"Inner Sko",
65043889,
"paa-sko",
aliases = {"Skouic", -- Glottolog
"West Vanimo Coast", -- Usher
"Western Skou", -- Wikipedia
"Inner Skou", "Nuclear Skou", -- alternative names given by Wikipedia
},
}
m["paa-iwa"] = {
"Iwam",
15147853,
"paa-sep",
}
m["paa-kae"] = {
"Kamula-Elevala",
130390498,
-- often placed in TNG
aliases = {"Kamula-Elevala River"},
}
m["paa-kan"] = {
"Kanum", -- removed from Tonda by Glottolog
nil,
"paa-ton",
}
m["paa-kay"] = {
"Kayagaric",
7566330,
aliases = {"Kayagar", -- formerly common
"Cook River"}, -- per Usher (2020)
}
m["paa-ker"] = {
"Keram",
48768173,
-- often grouped within or coordinate with the Ramu languages
aliases = {"Keram River"},
}
m["paa-kiw"] = {
"Kiwaian",
338449,
aliases = {"Kiwai"}, -- formerly common, still sees some use
}
m["paa-kko"] = {
"Kaure-Kosare", -- rejected by Pawley-Hammarström but accepted by Glottolog, Foley (2018) and Usher (2020)
48767891,
aliases = {"Nawa River"}, -- Usher's term
}
m["paa-koa"] = {
"Kombio-Arapesh",
16115049,
"paa-trr",
aliases = {"Kombio-Arapeshan", -- Laycock, who includes Wom
"Kombio-Arapesh-Urat", -- Glottolog, including Urat
},
}
m["paa-kol"] = {
"Kolopom",
6427807,
}
m["paa-kom"] = {
"Kombio",
65044238,
"paa-koa",
aliases = {"Kombian", -- Laycock
"Kombio-Yambes", -- Glottolog
},
}
m["paa-kun"] = {
"Kunimaipan",
134973258,
aliases = {"Northwest Wharton Range"}, -- per Usher (2020)
-- often considered a subfamily of Goilalan
}
m["paa-kwa"] = {
"Kwalean",
6450053,
aliases = {"Humene-Uare"},
}
m["paa-kwe"] = {
"Kwerba proper",
12635134,
"paa-gkw",
aliases = {"Kwerba", -- Usher
"Kwerbaic", -- Glottolog
},
}
m["paa-kwo"] = {
"Kwomtari",
2075415,
aliases = {"Kwomtari-Nai"}, -- Senu River is a larger unproven proposal
}
m["paa-lla"] = {
"Loloda-Laba", -- a single language in Glottolog (Loloda-Laba) and Wikipedia (Loloda)
11732388, -- for the Loloda language
"paa-gto",
aliases = {"Loloda"}, -- Wikipedia's name
}
m["paa-lma"] = {
"Left May",
614468,
aliases = {"Arai River"}, -- per Usher (2020)
-- Sometimes in a putative Arai-Samaia family along with Amto-Musan and the Pyu language
}
m["paa-lmu"] = {
"Lepki-Murkim", -- Kembra accepted by Glottolog and Usher; not by Foley (2020) but does not exclude the possibility
-- of a relationship
85776285,
-- independent family per Glottolog, part of South Pauwasi River family (under Pauwasi) per Usher (2020)
aliases = {"Lepki-Murkim-Kembra"}, -- Glottolog
}
m["paa-lpl"] = {
"Lakes Plain",
6478969,
aliases = {"Lakes Plains"},
}
m["paa-lra"] = {
"Lower Ramu",
65089469,
"paa-ram",
aliases = {"Ottilien-Misegian"}, -- alternative name given by Wikipedia
}
m["paa-lse"] = {
"Lower Sepik",
7061700,
aliases = {"Nor-Pondo"},
}
m["paa-mai"] = {
"Mairasi",
6736896,
aliases = {"Mairasic"}, -- per Glottolog
}
m["paa-mal"] = {
"Mailuan",
6735839,
aliases = {"Cloudy Bay"},
}
m["paa-mam"] = {
"Maimai", -- Foley's Maimai is expanded
53679325, -- this is the code for the expanded Maimai with 6 languages, as opposed to the 3 in "Nuclear Maimai"
"paa-trr",
aliases = {"Nuclear Maimai", -- Glottolog's name
"Maimai proper", -- Wikipedia's name
},
}
m["paa-man"] = {
"Manubaran",
6752335,
aliases = {"Mount Brown"},
}
m["paa-mar"] = {
"Marienberg",
1570589,
"paa-trr",
aliases = {"Marienberg Hills"}, -- Usher
}
m["paa-may"] = {
"Maybratic",
4830892, -- the code for the Maybrat language in Wikipedia, which subsumes the two languages of this family
-- putatively included in West Papuan but generally considered an isolated family
aliases = {"Maybrat-Karon"},
}
m["paa-mbi"] = {
"Mbaham-Iha",
85784512,
"qfa-dis", -- Papuan languages; Glottolog groups Karas (Kalamang) with Mbaham-Iha into a (mainland) West Bomberai
-- family and stops there; Wikipedia, following Usher and Schapper (2022), groups Karas, Mbaham-Iha
-- and the large Timor-Alor-Pantar family into a (Greater) West Bomberai family, saying that Karas is no
-- closer to Mbaham-Iha than to Timor-Alor-Pantar.
aliases = {"Mbahaam-Iha", -- used by Wikidata
"Nuclear West Bomberai", -- Glottolog's name
},
}
m["paa-mby"] = {
"Marind-Boazi-Yaqay",
3217484,
"paa-ani",
aliases = {"Marind-Boazi-Yaqai", -- Glottolog
"Marind-Yakhai", -- Usher, without Boazi
"Marind-Yaqai", -- Wikidata
"Marind", -- alternative name given by Wikipedia
"Marind-Arandai", -- alternative name given by Spanish Wikipedia
},
}
m["paa-mmu"] = {
"Mandi-Muniwara",
nil,
"paa-mar",
aliases = {"West Marienberg Hills"}, -- Usher
}
m["paa-mon"] = {
"Monumbo", -- per Glottolog: "No evidence for the Bogia (Monumbo) languages being related to other Torricelli languages was ever presented"
16928417,
aliases = {"Bogia", -- Glottolog
"Bogia Bay", -- Usher (2020)
},
}
m["paa-mri"] = {
"Marindic", -- [[w:Marindic languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Marind"}, -- Usher; a single language
}
m["paa-nam"] = {
"Nambu",
6961418,
"paa-yam",
aliases = {"East Morehead River"}, -- Usher
}
m["paa-nbo"] = {
"North Bougainville",
749496,
}
m["paa-ndu"] = {
"Ndu",
3217498,
"paa-sep", -- Not accepted by Glottolog
aliases = {"Ndu-Nggala"}, -- Usher
}
m["paa-ngk"] = {
"Ngkolmpu", -- considered a single language by Wikipedia
5908646,
"paa-kan",
aliases = {"Ngkantr", -- Glottolog
"Ngkolmpu Kanum", -- Wikipedia
"Ngkontar", -- alternative name given by Wikipedia
"Kanum", -- used by Wikidata
},
}
m["paa-nha"] = {
"North Halmahera",
3217358,
-- possibly in a proposed West Papuan family or an independent family
}
m["paa-nim"] = {
"Nimboran",
12638426,
aliases = {"Nimboranic", -- per Glottolog
"Grime River", -- per Usher (2020)
}
}
m["paa-nnd"] = {
"Nuclear Ndu",
nil,
"paa-ndu",
aliases = {"Ndu", -- Usher, with Boiken/Boikin
"Ndu proper", -- Wikipedia
},
}
m["paa-nnh"] = {
"Northern North Halmahera",
nil,
"paa-nha",
aliases = {"Northern North Halmaheran", -- Glottolog
"Halmahera", -- Usher
"Core Halmaheran", -- Wikipedia
},
}
m["paa-nto"] = {
"Namla-Tofanma",
16918187,
-- independent family per Glottolog and Foley (2018), part of West Pauwasi family (under Pauwasi) per Usher (2020)
}
m["paa-ott"] = {
"Ottilien",
7109477,
"paa-lra",
aliases = {"Ramu Coast", -- Usher
"Watam-Awar-Gamay", -- alternative name given by Wikipedia
},
}
m["paa-pah"] = {
"Pahoturi River",
17049141,
aliases = {"Pahoturi"}, -- per Glottolog
}
m["paa-pal"] = {
"Palei", -- Laycock adds Agi and Nabi/Nambi(-Metan)
65089113,
"paa-wpa",
aliases = {"Nuclear Palai"},
}
m["paa-pia"] = {
"Piawi", -- per Wikipedia, grouped with Arafundi languages to form Upper Yuat, which is a sister to Madang
7190400,
aliases = {"Schraeder Range", -- Usher?
"Waibuk"},
}
m["paa-pio"] = {
"Piore River",
65043152,
"paa-sko",
aliases = {"Barupu Lagoon", -- Glottolog
"Lagoon", -- alternative name given by Wikipedia
},
}
m["paa-por"] = {
"Porapora", -- Foley includes Ambakich (which we, Glottolog, and Usher treat as Keram)
65044258,
"paa-ram",
aliases = {"Agoan", -- Glottolog
"Porapora River", -- Usher
"core Grass", -- alternative name given by Wikipedia
},
}
m["paa-ram"] = {
"Ramu",
3442808,
aliases = {"Ramu River"}, -- per Usher (2020)
}
m["paa-rsa"] = {
"Rasawa-Saponi", -- [[w:Rasawa-Saponi languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q9859418 is for the coresponding category, which exists in the Piedmontese Wikipedia (?!)
"paa-flp",
aliases = {"Rombak River"}, -- Usher
}
m["paa-rub"] = {
"Ruboni",
6875319,
"paa-lra",
aliases = {"Misegian", -- Wikipedia's name
"Mikarew", -- alternative name given by Wikipedia
"Ruboni Range"}, -- Usher
}
m["paa-saa"] = {
"Samarokena-Airoran",
96417699,
"paa-gkw",
aliases = {"Apauwar Coast"}, -- Usher
}
m["paa-sah"] = {
"Sahu",
nil,
"paa-nnh",
}
m["paa-sbo"] = {
"South Bougainville",
3217380,
}
m["paa-sen"] = {
"Sentani",
17044584,
-- no consensus on higher affiliations, if any
aliases = {"Sentanic", "Demta-Sentani", "Demta-Lake Sentani"}, -- Sentanic per Glottolog, Demta-Sentani per Wikipedia
}
m["paa-sep"] = {
"Sepik",
3508772,
}
m["paa-shi"] = {
"Serra Hills",
65043154,
"paa-sko",
}
m["paa-sko"] = {
"Sko",
953509,
aliases = {"Skou"},
}
m["paa-sng"] = {
"Senagi",
2066550,
}
m["paa-taa"] = {
"Taikat-Awyi", -- [[w:Taikat languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12643265,
"paa-bor",
aliases = {"Taikat", -- Foley
"Upper Tami River", -- Usher
},
}
m["paa-tam"] = {
"Tamolan",
7681634,
"paa-ram",
aliases = {"Guam River"}, -- Usher
}
m["paa-tap"] = {
"Timor-Alor-Pantar",
16590002,
}
m["paa-teb"] = {
"Teberan",
7692052,
-- Often grouped with Trans-New Guinea, but per Pawley-Hammarström (2018), it has "weaker or disputed claims to membership in TNG".
aliases = {"Dadibi-Folopa"},
}
m["paa-tir"] = {
"Tirio",
7809225,
"paa-ani",
aliases = {"Nuclear Lower Fly", -- Pawley-Hammarström ("Lower Fly" includes Abom)
"Nuclear Tirio", -- Glottolog ("Tirio" includes Abom)
"Lower Fly River", -- Usher (without Abom)
},
}
m["paa-tki"] = {
"Turama-Kikori",
7853680,
aliases = {"Turama-Kikorian", "Rumu-Omati River"},
}
m["paa-ton"] = {
"Tonda",
8581005,
"paa-yam",
aliases = {"West Morehead River"}, -- Usher
}
m["paa-too"] = {
"Tor-Orya",
16590099,
aliases = {"Orya-Tor"},
}
m["paa-tor"] = {
"Tor", -- [[w:Tor languages]] redirects to [[w:Orya–Tor languages]]
nil,
"paa-too",
}
m["paa-trr"] = {
"Torricelli",
1333831,
}
m["paa-tti"] = {
"Ternate-Tidore",
nil,
"paa-nnh",
}
m["paa-wal"] = {
"Walio",
16919872,
-- Often placed in Sepik (e.g. by Laycock and Z'graggen (1975)), but not by Foley (2018), and not accepted by Glottolog.
aliases = {"Walioic", -- Glottolog
"Central Leonhard Schultze River",
},
}
m["paa-wap"] = {
"Wapei", -- Glottolog includes Nabi/Nambi(-Metan) in Wapeic
65089115,
"paa-wpa",
aliases = {"Wapeic"}, -- Glottolog
}
m["paa-war"] = {
"Waris", -- [[w:Waris languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12645076,
"paa-bor",
aliases = {"Warisic", -- Glottolog
"Bapi River", -- Usher (without Manem or Senggi)
},
}
m["paa-wbh"] = {
"West Bird's Head",
5330530,
-- Kuwani is sometimes included; probably related to North Halmahera languages.
}
m["paa-wel"] = {
"Western Eleman",
nil,
"paa-ele",
aliases = {"West Eleman"},
}
m["paa-wig"] = {
"West Inland Gulf",
nil,
"paa-ing",
aliases = {"West Inland Gulf of Papua"}, -- Glottolog
}
m["paa-wke"] = {
"West Keram",
nil,
"paa-ker",
aliases = {"Koam", "Mongol-Langam", "Ulmapo"}, -- Koam used by Foley, Ulmapo used by Glottolog
}
m["paa-wko"] = {
"Wára-Kómnzo", -- since we split out Kómnzo as a separate language
11732474, -- for the Wara language
"paa-ton",
aliases = {"Anta-Komnzo-Wára-Wérè-Kémä", -- Glottolog's name
"Wára", "Wara", -- Wikipedia
},
}
m["paa-wlp"] = {
"West Lakes Plain", -- [[w:Tariku languages]] redirects to [[w:Lakes Plain languages]]
47007503, -- actually for "Tariku languages", which per Wikipedia covers Fayu, Kirikiri, Iau and Tause
"paa-lpl",
aliases = {"West Tariku", -- Glottolog
"West Lakes Plains"}, -- Usher, with Edopi/Iau
}
m["paa-wpa"] = {
"Wapei-Palei",
65043156,
"paa-trr",
}
m["paa-wpw"] = { -- paa-wpa already used by Wapei-Palei
"Western Pauwasi", -- 2 langs per Glottolog and Pawley-Hammarström; Usher also includes Namla-Tofanma and Usku
85815062,
aliases = {"West Pauwasi", -- Wikipedia, Usher
"Tebi-Towe", "Dubu-Towei"},
}
m["paa-yam"] = {
"Yam",
15062272,
aliases = {"Morehead and Upper Maro River",
"Morehead River", -- Usher
},
}
m["paa-yaq"] = {
"Yaqayic", -- [[w:Yaqai languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Yakhai-Warkay"}, -- Usher
}
m["paa-ysa"] = {
"Yawa-Saweru",
3217545,
aliases = {"Yawa", "Yawan", "Yapen"},
}
m["paa-yua"] = {
"Yuat",
8060096,
}
m["phi"] = {
"Philippine",
947858,
"poz",
}
m["phi-kal"] = {
"Kalamian",
3217466,
"phi",
aliases = {"Calamian"},
}
m["poz"] = {
"Malayo-Polynesian",
143158,
"map",
}
m["poz-aay"] = {
"Admiralty Islands",
2701306,
"poz-oce",
}
m["poz-bnn"] = {
"North Bornean",
1427907,
"poz",
}
m["poz-bre"] = {
"East Barito",
2701314,
"poz",
}
m["poz-brw"] = {
"West Barito",
2761679,
"poz",
}
m["poz-bss"] = {
"Bali-Sasak-Sumbawa",
3396043,
"poz-msa",
}
m["poz-btk"] = {
"Bungku-Tolaki",
3217381,
"poz-clb",
}
m["poz-cet"] = {
"Central-Eastern Malayo-Polynesian",
2269883,
"poz",
}
m["poz-clb"] = {
"Celebic",
1078041,
"poz",
}
m["poz-cln"] = {
"New Caledonian",
3091221,
"poz-ocs",
}
m["poz-cma"] = {
"Central Maluku",
3217479,
"poz-cet",
}
m["poz-hce"] = {
"Halmahera-Cenderawasih",
2526616,
"pqe",
}
m["poz-kal"] = {
"Kaili-Pamona",
3217465,
"poz-clb",
}
m["poz-lgx"] = {
"Lampungic",
49215,
"poz",
}
m["poz-mcm"] = {
"Malayo-Chamic",
nil,
"poz-msa",
}
m["poz-mic"] = {
"Micronesian",
420591,
"poz-occ",
}
m["poz-mly"] = {
"Malayic",
662628,
"poz-mcm",
}
m["poz-msa"] = {
"Malayo-Sumbawan",
1363818,
"poz",
}
m["poz-mun"] = {
"Muna-Buton",
3037924,
"poz-clb",
}
m["poz-nws"] = {
"Northwest Sumatran",
2071308,
"poz",
}
m["poz-occ"] = {
"Central-Eastern Oceanic",
2068435,
"poz-oce",
}
m["poz-oce"] = {
"Oceanic",
324457,
"pqe",
}
m["poz-ocs"] = {
"Southern Oceanic",
3039118,
"poz-occ",
}
m["poz-ocw"] = {
"Western Oceanic",
2701282,
"poz-oce",
}
m["poz-pcc"] = {
"Central Pacific",
3130237,
"poz-occ",
}
m["poz-pep"] = {
"Eastern Polynesian",
390979,
"poz-pnp",
}
m["poz-pnp"] = {
"Nuclear Polynesian",
743851,
"poz-pol",
}
m["poz-pol"] = {
"Polynesian",
390979,
"poz-pcc",
}
m["poz-san"] = {
"Sabahan",
3217517,
"poz-bnn",
}
m["poz-sbj"] = {
"Sama-Bajaw",
2160409,
"poz",
}
m["poz-slb"] = {
"Saluan-Banggai",
3217519,
"poz-clb",
}
m["poz-sls"] = {
"Southeast Solomonic",
3119671,
"poz-occ",
}
m["poz-ssw"] = {
"South Sulawesi",
2778190,
"poz",
}
m["poz-stm"] = {
"St. Matthias",
6484143,
"poz-oce",
aliases = {"St Matthias"},
}
m["poz-swa"] = {
"North Sarawakan",
538569,
"poz-bnn",
}
m["poz-tem"] = {
"Temotu",
3075769,
"poz-oce",
}
m["poz-tim"] = {
"Timoric",
7806987,
"poz-cet",
}
m["poz-ton"] = {
"Tongic",
3397263,
"poz-pol",
}
m["poz-tot"] = {
"Tomini-Tolitoli",
3217541,
"poz-clb",
}
m["poz-vnc"] = {
"Central Vanuatu",
5061988,
"poz-ocs",
}
m["poz-vnn"] = {
"North Vanuatu",
85789650,
"poz-ocs",
}
m["poz-vns"] = {
"South Vanuatu",
3070173,
"poz-ocs",
}
m["poz-wot"] = {
"Wotu-Wolio",
1041317,
"poz-clb",
aliases = {"Island Kaili-Wolio"}, -- Glottolog
}
m["pqe"] = {
"Eastern Malayo-Polynesian",
2269883,
"poz-cet",
}
m["qfa-adc"] = {
"Central Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-adm"] = {
"Great Andamanese",
3515103,
}
m["qfa-adn"] = {
"Northern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ads"] = {
"Southern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ain"] = {
"Ainuic",
50111972,
aliases = {"Ainu"},
}
m["qfa-bej"] = {
"Be-Jizhao",
nil,
"qfa-bet",
}
m["qfa-bet"] = {
"Be-Tai",
12627719,
"qfa-tak",
aliases = {"Tai-Be", "Daic-Beic", "Beic-Daic"},
}
m["qfa-buy"] = {
"Buyang",
1109927,
"qfa-kra",
}
m["qfa-cka"] = {
"Chukotko-Kamchatkan",
33255,
}
m["qfa-cre"] = {
"creole",
33289,
"crp",
}
m["qfa-ckn"] = {
"Chukotkan",
2606732,
"qfa-cka",
}
m["qfa-cnt"] = {
"contact",
133253514,
"qfa-not",
}
m["qfa-dis"] = {
-- Languages that are not unclassifiable (qfa-unc) but where there is no consensus on classification. Usually
-- this is because the languages are divergent and it's disputed whether they are isolates or distantly related
-- to other languages.
"disputed affiliation",
nil,
"qfa-not",
categoryName = "Languages of disputed affiliation",
}
m["qfa-dgn"] = {
"Dogon",
1234776,
"nic",
}
m["qfa-dny"] = {
"Dene-Yeniseian",
21103,
aliases = {"Dené-Yeniseian"},
}
m["qfa-hur"] = {
"Hurro-Urartian",
1144159,
}
m["qfa-iso"] = {
"isolate",
33648,
"qfa-not",
categoryName = "Language isolates",
}
m["qfa-kad"] = {
"Kadu", -- considered either Nilo-Saharan or independent/none
1720989,
}
m["qfa-kms"] = {
"Kam-Sui",
1023641,
"qfa-tak",
}
m["qfa-kor"] = {
"Koreanic",
11263525,
}
m["qfa-kra"] = {
"Kra",
1022087,
"qfa-tak",
}
m["qfa-lic"] = {
"Hlai",
1023648,
"qfa-tak",
aliases = {"Hlaic"},
}
m["qfa-mch"] = { -- used in both N and S America
"Macro-Chibchan",
3438062,
}
m["qfa-mix"] = {
"mixed",
33694,
"qfa-cnt",
}
m["qfa-not"] = {
"not a family",
nil,
"qfa-not",
}
m["qfa-onb"] = {
"Be",
nil,
"qfa-bej",
aliases = {"Ong-Be", "Beic"},
}
m["qfa-ong"] = {
"Ongan",
2090575,
aliases = {"Angan", "South Andamanese", "Jarawa-Onge"},
}
m["qfa-pid"] = {
"pidgin",
33831,
"crp",
}
m["qfa-sub"] = {
"substrate",
20730913,
"qfa-not",
}
m["qfa-tak"] = {
"Kra-Dai",
34171,
aliases = {"Tai-Kadai", "Kadai"},
}
m["qfa-tyn"] = {
"Tyrsenian",
1344038,
}
m["qfa-unc"] = {
-- This corresponds to languages normally called "unclassified", i.e. there is insufficient data or research to
-- classify them, whereas our [[:Category:Unclassified languages]] is just languages that no Wiktionary editor
-- has classified yet (the family code in the language data is missing).
"unclassifiable",
33956,
"qfa-not",
}
m["qfa-xgs"] = {
"Serbi-Mongolic",
108887939,
}
m["qfa-xgx"] = {
"Para-Mongolic",
107619002,
"qfa-xgs",
}
m["qfa-yen"] = {
"Yeniseian",
27639,
"qfa-dny",
aliases = {"Yeniseic", "Yenisei-Ostyak"},
}
m["qfa-yke"] = {
"Ketic",
nil,
"qfa-yen",
}
m["qfa-yko"] = {
"Kottic",
nil,
"qfa-yen",
}
m["qfa-yrn"] = {
"Arinic",
nil,
"qfa-yen",
}
m["qfa-ypm"] = {
"Pumpokolic",
nil,
"qfa-yen",
}
m["qfa-yuk"] = {
"Yukaghir",
34164,
aliases = {"Yukagir", "Jukagir"},
}
m["qwe"] = {
"Quechuan",
5218,
}
m["raj"] = {
"Rajasthani",
13196,
"inc-wes",
protoLanguage = "inc-ogu",
}
m["roa"] = {
"Romance",
19814,
"itc",
aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"},
protoLanguage = "la",
}
m["roa-asl"] = {
"Asturleonese",
35390,
"roa-ibe",
protoLanguage = "roa-ole",
}
m["roa-cas"] = {
"Castilian",
71924,
"roa-ibe",
aliases = {"Castillian", "Castilic", "Castillic"},
protoLanguage = "osp",
}
m["roa-dal"] = {
"Dalmatian Romance",
97646077,
"roa-itd",
}
m["roa-eas"] = {
"Eastern Romance",
147576,
"roa",
}
m["roa-emr"] = {
"Emilian-Romagnol",
242648,
"roa-git",
}
m["roa-gap"] = {
"Galician-Portuguese",
9080204,
"roa-ibe",
aliases = {"Galician Romance", "Galaic-Portuguese"},
protoLanguage = "roa-opt",
}
m["roa-gar"] = {
"Gallo-Romance",
500394,
"roa-wes",
}
m["roa-itd"] = {
"Italo-Dalmatian",
3313381,
"roa-iwr",
aliases = {"Central Romance"}
}
m["roa-itr"] = {
"Italo-Romance",
3356483,
"roa-itd",
}
m["roa-iwr"] = {
"Italo-Western Romance",
112608,
"roa",
aliases = {"Italo-Western"},
}
m["roa-git"] = {
"Gallo-Italic",
516074,
"roa-gar",
aliases = {"Gallo-Italian", "Gallo-Cisalpine", "Cisalpine"},
}
m["roa-grh"] = {
"Gallo-Rhaetian",
97646466,
"roa-gar",
}
m["roa-ibe"] = {
"Ibero-Romance",
749533,
"roa-wes",
aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"}
}
m["roa-nar"] = {
"Navarro-Aragonese",
133252927,
"roa-ibe",
protoLanguage = "roa-ona",
}
m["roa-oil"] = {
"Oïl",
37351,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
protoLanguage = "fro",
}
m["roa-ocr"] = {
"Occitano-Romance",
599958,
"roa-gar",
aliases = {"Gallo-Narbonnese", "East Iberian", "Eastern Iberian"},
}
m["roa-rhe"] = {
"Rhaeto-Romance",
515593,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
}
m["roa-sou"] = {
"Southern Romance",
145345,
"roa",
}
m["roa-wes"] = {
"Western Romance",
2714388,
"roa-iwr",
}
--[=[
Exceptional language and family codes for South American Indian languages
can use the prefix "sai-", though "sai" is no longer itself a family code.
]=]--
m["sai-ara"] = {
"Araucanian",
626630,
}
m["sai-aym"] = {
"Aymaran",
33010,
}
m["sai-bar"] = {
"Barbacoan",
807304,
aliases = {"Barbakoan"},
}
m["sai-bor"] = {
"Boran",
5371776,
}
m["sai-cah"] = {
"Cahuapanan",
1025793,
}
m["sai-car"] = {
"Cariban",
33090,
aliases = {"Carib"},
}
m["sai-cer"] = {
"Cerrado",
98078151,
"sai-jee",
aliases = {"Amazonian Jê"},
}
m["sai-chc"] = {
"Chocoan",
1075616,
aliases = {"Choco", "Chocó"},
}
m["sai-cho"] = {
"Chonan",
33019,
aliases = {"Chon"},
}
m["sai-cje"] = {
"Central Jê",
18010843,
"sai-cer",
aliases = {"Akuwẽ"},
}
m["sai-cpc"] = {
"Chapacuran",
1062626,
}
m["sai-crn"] = {
"Charruan",
3112423,
aliases = {"Charrúan"},
}
m["sai-ctc"] = {
"Catacaoan",
5051139,
}
m["sai-guc"] = {
"Guaicuruan",
1974973,
"sai-mgc",
aliases = {"Guaicurú", "Guaycuruana", "Guaikurú", "Guaycuruano", "Guaykuruan", "Waikurúan"},
}
m["sai-guh"] = {
"Guahiban",
944056,
aliases = {"Guahiboan", "Guajiboan", "Wahivoan"},
}
m["sai-gui"] = {
"Guianan",
nil,
"sai-car",
aliases = {"Guianan Carib", "Guiana Carib"},
}
m["sai-har"] = {
"Harákmbut",
1584402,
"sai-hkt",
aliases = {"Harákmbet"},
}
m["sai-hkt"] = {
"Harákmbut-Katukinan",
17107635,
}
m["sai-hrp"] = {
"Huarpean",
1578336,
aliases = {"Warpean", "Huarpe", "Warpe"},
}
m["sai-jee"] = {
"Jê",
1483594,
"sai-mje",
aliases = {"Gê", "Jean", "Gean", "Jê-Kaingang", "Ye"},
}
m["sai-jir"] = {
"Jirajaran",
3028651,
aliases = {"Hiraháran"},
}
m["sai-jiv"] = {
"Jivaroan",
1393074,
aliases = {"Hívaro", "Jibaro", "Jibaroan", "Jibaroana", "Jívaro"},
}
m["sai-ktk"] = {
"Katukinan",
2636000,
"sai-hkt",
aliases = {"Catuquinan"},
}
m["sai-kui"] = {
"Kuikuroan",
nil,
"sai-car",
aliases = {"Kuikuro", "Nahukwa"},
}
m["sai-map"] = {
"Mapoyan",
61096301,
"sai-ven",
aliases = {"Mapoyo", "Mapoyo-Yabarana", "Mapoyo-Yavarana", "Mapoyo-Yawarana"},
}
m["sai-mas"] = {
"Mascoian",
1906952,
aliases = {"Mascoyan", "Maskoian", "Enlhet-Enenlhet"},
}
m["sai-mgc"] = {
"Mataco-Guaicuru",
255512,
}
m["sai-mje"] = {
"Macro-Jê",
887133,
aliases = {"Macro-Gê"},
}
m["sai-mtc"] = {
"Matacoan",
2447424,
"sai-mgc",
}
m["sai-mur"] = {
"Muran",
33826,
aliases = {"Mura"},
}
m["sai-nad"] = {
"Nadahup",
1856439,
aliases = {"Makú", "Macú", "Vaupés-Japurá"},
}
m["sai-nje"] = {
"Northern Jê",
98078225,
"sai-cer",
aliases = {"Core Jê"},
}
m["sai-nmk"] = {
"Nambikwaran",
15548027,
aliases = {"Nambicuaran", "Nambiquaran", "Nambikuaran"},
}
m["sai-otm"] = {
"Otomacoan",
3217503,
aliases = {"Otomákoan", "Otomakoan"},
}
m["sai-pan"] = {
"Panoan",
1544537,
"sai-pat",
aliases = {"Pano"},
}
m["sai-pat"] = {
"Pano-Tacanan",
2475746,
aliases = {"Pano-Tacana", "Pano-Takana", "Páno-Takána", "Pano-Takánan"},
}
m["sai-pek"] = {
"Pekodian",
107451736,
"sai-car",
aliases = {"South Amazonian Carib", "Southern Cariban", "Pekodi"},
}
m["sai-pem"] = {
"Pemongan",
nil,
"sai-ven",
aliases = {"Pemong", "Pemóng", "Purukoto"},
}
m["sai-pey"] = {
"Peba-Yaguan",
174015,
aliases = {"Peba-Yagua", "Yaguan", "Peban", "Yáwan"},
}
m["sai-prk"] = {
"Parukotoan",
107451482,
"sai-car",
aliases = {"Parukoto"},
}
m["sai-sje"] = {
"Southern Jê",
98078245,
"sai-jee",
}
m["sai-tac"] = {
"Tacanan",
3113762,
"sai-pat",
}
m["sai-tar"] = {
"Taranoan",
105097814,
"sai-gui",
aliases = {"Trio", "Tarano"},
}
m["sai-tuc"] = {
"Tucanoan",
788144,
}
m["sai-tyu"] = {
"Ticuna-Yuri",
4467010,
}
m["sai-ucp"] = {
"Uru-Chipaya",
2475488,
aliases = {"Uru-Chipayan"},
}
m["sai-ven"] = {
"Venezuelan Cariban",
nil,
"sai-car",
aliases = {"Venezuelan Carib", "Venezuelan", "Venezuelano"},
}
m["sai-wic"] = {
"Wichí",
3027047,
}
m["sai-wit"] = {
"Witotoan",
43079317,
aliases = {"Huitotoan", "Uitotoan"},
}
m["sai-ynm"] = {
"Yanomami",
nil,
aliases = {"Yanomam", "Shamatari", "Yamomami", "Yanomaman"},
}
m["sai-yuk"] = {
"Yukpan",
nil,
"sai-car",
aliases = {"Yukpa", "Yukpano", "Yukpa-Japreria"},
}
m["sai-zam"] = {
"Zamucoan",
3048461,
aliases = {"Samúkoan"},
}
m["sai-zap"] = {
"Zaparoan",
33911,
aliases = {"Záparoan", "Saparoan", "Sáparoan", "Záparo", "Zaparoano", "Zaparoana"},
}
m["sal"] = {
"Salish",
33985,
}
m["sdv"] = {
"Eastern Sudanic",
2036148,
"ssa",
}
m["sdv-bri"] = {
"Bari",
nil,
"sdv-nie",
}
m["sdv-daj"] = {
"Daju",
956724,
"sdv",
}
m["sdv-dnu"] = {
"Dinka-Nuer",
nil,
"sdv-niw",
}
m["sdv-eje"] = {
"Eastern Jebel",
3408878,
"sdv",
}
m["sdv-kln"] = {
"Kalenjin",
637228,
"sdv-nis",
}
m["sdv-lma"] = {
"Lotuko-Maa",
nil,
"sdv-nie",
}
m["sdv-lon"] = {
"Northern Luo",
nil,
"sdv-luo",
}
m["sdv-los"] = {
"Southern Luo",
7570103,
"sdv-luo",
}
m["sdv-luo"] = {
"Luo",
nil,
"sdv-niw",
}
m["sdv-nes"] = {
"Northern Eastern Sudanic",
4810496,
"sdv",
aliases = {"Astaboran", "Ek Sudanic"},
}
m["sdv-nie"] = {
"Eastern Nilotic",
153795,
"sdv-nil",
}
m["sdv-nil"] = {
"Nilotic",
513408,
"sdv",
}
m["sdv-nis"] = {
"Southern Nilotic",
1552410,
"sdv-nil",
}
m["sdv-niw"] = {
"Western Nilotic",
3114989,
"sdv-nil",
}
m["sdv-nma"] = {
"Nandi-Markweta",
nil,
"sdv-kln",
}
m["sdv-nyi"] = {
"Nyima",
11688746,
"sdv-nes",
aliases = {"Nyimang"},
}
m["sdv-tmn"] = {
"Taman",
3408873,
"sdv-nes",
aliases = {"Tamaic"},
}
m["sdv-ttu"] = {
"Teso-Turkana",
7705551,
"sdv-nie",
aliases = {"Ateker"},
}
m["sel"] = {
"Selkup",
34008,
"syd",
}
m["sem"] = {
"Semitic",
34049,
"afa",
}
m["sem-ara"] = {
"Aramaic",
28602,
"sem-nwe",
protoLanguage = "arc",
}
m["sem-arb"] = {
"Arabic",
164667,
"sem-cen",
protoLanguage = "ar",
}
m["sem-are"] = {
"Eastern Aramaic",
3410322,
"sem-ara",
}
m["sem-arw"] = {
"Western Aramaic",
3394214,
"sem-ara",
}
m["sem-ase"] = {
"Southeastern Aramaic",
3410322,
"sem-are",
}
m["sem-can"] = {
"Canaanite",
747547,
"sem-nwe",
}
m["sem-cen"] = {
"Central Semitic",
3433228,
"sem-wes",
}
m["sem-cna"] = {
"Central Neo-Aramaic",
3410322,
"sem-are",
}
m["sem-eas"] = {
"East Semitic",
164273,
"sem",
}
m["sem-eth"] = {
"Ethiopian Semitic",
163629,
"sem-wes",
aliases = {"Afro-Semitic", "Ethiopian", "Ethiopic", "Ethiosemitic"},
}
m["sem-nna"] = {
"Northeastern Neo-Aramaic",
2560578,
"sem-are",
}
m["sem-nwe"] = {
"Northwest Semitic",
162996,
"sem-cen",
}
m["sem-osa"] = {
"Old South Arabian",
35025,
"sem-cen",
aliases = {"Epigraphic South Arabian", "Sayhadic"},
}
m["sem-sar"] = {
"Modern South Arabian",
1981908,
"sem-wes",
}
m["sem-wes"] = {
"West Semitic",
124901,
"sem",
}
m["sgn"] = {
"sign",
34228,
"qfa-not",
}
m["sgn-fsl"] = {
"French Sign Languages",
5501921,
"sgn",
}
m["sgn-gsl"] = {
"German Sign Languages",
5551235,
"sgn",
}
m["sgn-jsl"] = {
"Japanese Sign Languages",
11722508,
"sgn",
}
m["sio"] = {
"Siouan",
34181,
"nai-sca",
}
m["sio-dhe"] = {
"Dhegihan",
3217420,
"sio-msv",
}
m["sio-dkt"] = {
"Dakotan",
4154122,
"sio-msv",
}
m["sio-mor"] = {
"Missouri River Siouan",
26807266,
"sio",
}
m["sio-msv"] = {
"Mississippi Valley Siouan",
12637104,
"sio",
}
m["sio-ohv"] = {
"Ohio Valley Siouan",
21070931,
"sio",
}
m["sit"] = {
"Sino-Tibetan",
45961,
aliases = {"Trans-Himalayan"},
}
m["sit-aao"] = {
"Central Naga",
615474,
"sit",
}
m["sit-alm"] = {
"Almora",
nil,
"sit-whm",
}
m["sit-bai"] = {
"Bai",
35103,
"sit-mba",
}
m["sit-bdi"] = {
"Bodish",
1814078,
"sit",
}
m["sit-cln"] = {
"Cai-Long",
107182612,
"sit-mba",
aliases = {"Ta-Li"},
}
m["sit-dhi"] = {
"Dhimalish",
1207648,
"sit",
}
m["sit-ebo"] = {
"East Bodish",
56402,
"sit-bdi",
}
m["sit-egy"] = {
"East rGyalrongic",
832026,
"sit-rgy",
}
m["sit-ers"] = {
"Ersuic",
56335,
"sit",
}
m["sit-gma"] = {
"Greater Magaric",
55612963,
"sit",
}
m["sit-gsi"] = {
"Greater Siangic",
52698851,
"sit",
}
m["sit-hrs"] = {
"Hrusish",
1632501,
"sit",
aliases = {"Southeast Kamengic"},
}
m["sit-jnp"] = {
"Jingphoic",
nil,
"sit-jpl",
aliases = {"Jingpho"},
}
m["sit-jpl"] = {
"Kachin-Luic",
1515454,
"tbq-bkj",
aliases = {"Jingpho-Luish", "Jingpho-Asakian", "Kachinic"},
}
m["sit-kch"] = {
"Konyak-Chang",
nil,
"sit-kon",
}
m["sit-kha"] = {
"Kham",
33305,
"sit-gma",
}
m["sit-khb"] = {
"Kho-Bwa",
6401917,
"sit",
aliases = {"Bugunish", "Kamengic"},
}
m["sit-khw"] = {
"Western Kho-Bwa",
nil,
"sit-khb",
}
m["sit-khc"] = {
"Chug-Lish",
nil,
"sit-khw",
aliases = {"Duhumbi-Khispi"},
}
m["sit-khm"] = {
"Mey-Sartang",
nil,
"sit-khw",
aliases = {"Sartang-Sherdukpen"},
}
m["sit-kic"] = {
"Central Kiranti",
nil,
"sit-kir",
}
m["sit-kie"] = {
"Eastern Kiranti",
nil,
"sit-kir",
}
m["sit-kin"] = {
"Kinnauric",
nil,
"sit-whm",
aliases = {"Kinnauri"},
}
m["sit-kir"] = {
"Kiranti",
922148,
"sit",
}
m["sit-kiw"] = {
"Western Kiranti",
922148,
"sit-kir",
}
m["sit-kon"] = {
"Northern Naga",
774590,
"tbq-bkj",
aliases = {"Konyakian", "Konyak"},
}
m["sit-kyk"] = {
"Kyirong-Kagate",
6450957,
"sit-tib",
}
m["sit-lab"] = {
"Ladakhi-Balti",
6450957,
"sit-tib",
}
m["sit-las"] = {
"Lahuli-Spiti",
6473510,
"sit-tib",
}
m["sit-luu"] = {
"Luish",
55621439,
"sit-jpl",
aliases = {"Asakian", "Sak"},
}
m["sit-mar"] = {
"Maringic",
nil,
"sit-tma",
}
m["sit-mba"] = {
"Macro-Bai",
16963847,
"sit-sba",
aliases = {"Greater Bai"},
}
m["sit-mdz"] = {
"Midzu",
6843504,
"sit",
aliases = {"Geman", "Midzuish", "Miju-Meyor", "Southern Mishmi"},
}
m["sit-mnz"] = {
"Mondzish",
6898839,
"tbq-lob",
aliases = {"Mangish"},
}
m["sit-mru"] = {
"Mruic",
16908870,
"sit",
aliases = {"Mru-Hkongso"},
}
m["sit-nas"] = {
"Naish",
25047956,
"sit-nax",
}
m["sit-nax"] = {
"Naic",
6982999,
"tbq-buq",
aliases = {"Naxish"},
}
m["sit-nba"] = {
"Northern Bai",
122463830,
"sit-bai",
}
m["sit-new"] = {
"Newaric",
55625069,
"sit",
}
m["sit-nng"] = {
"Nungish",
1515482,
"sit",
aliases = {"Nung"},
}
m["sit-qia"] = {
"Qiangic",
1636765,
"tbq-buq",
}
m["sit-rgy"] = {
"Rgyalrongic",
56936,
"sit-qia",
aliases = {"Jiarongic"},
}
m["sit-sba"] = {
"Sino-Bai",
nil,
"sit",
aliases = {"Greater Bai"},
}
m["sit-tam"] = {
"Tamangic",
3309439,
"sit",
aliases = {"West Bodish"},
}
m["sit-tan"] = {
"Tani",
3217538,
"sit",
}
m["sit-tib"] = {
"Tibetic",
1641150,
"sit-bdi",
protoLanguage = "otb",
}
m["sit-tja"] = {
"Tujia",
nil,
"sit",
}
m["sit-tma"] = {
"Tangkhul-Maring",
nil,
"sit",
}
m["sit-tng"] = {
"Tangkhulic",
1516657,
"sit-tma",
aliases = {"Tangkhul"},
}
m["sit-tno"] = {
"Tangsa-Nocte",
nil,
"sit-kon",
}
m["sit-tsk"] = {
"Tshangla",
nil,
"sit",
}
m["sit-wgy"] = {
"West rGyalrongic",
nil,
"sit-rgy"
}
m["sit-whm"] = {
"West Himalayish",
2301695,
"sit",
}
m["sit-zem"] = {
"Zeme",
189291,
"sit",
aliases = {"Zeliangrong", "Zemeic"},
}
m["sla"] = {
"Slavic",
23526,
"ine-bsl",
aliases = {"Slavonic"},
}
m["smi"] = {
"Sami",
56463,
"urj",
aliases = {"Saami", "Samic", "Saamic"},
}
m["son"] = {
"Songhay",
505198,
"ssa",
aliases = {"Songhai"},
}
m["sqj"] = {
"Albanian",
8748,
"ine",
}
m["ssa"] = {
"Nilo-Saharan", -- possibly not a genetic grouping
33705,
}
m["ssa-fur"] = {
"Fur",
2989512,
"ssa",
}
m["ssa-klk"] = {
"Kuliak",
1791476,
"ssa",
aliases = {"Rub"},
}
m["ssa-kom"] = {
"Koman",
1781084,
"ssa",
}
m["ssa-sah"] = {
"Saharan",
1757661,
"ssa",
}
m["syd"] = {
"Samoyedic",
34005,
"urj",
aliases = {"Samoyed", "Samodeic"},
}
m["syd-ene"] = {
"Enets",
29942,
"syd",
}
m["tai"] = {
"Tai",
749720,
"qfa-bet",
aliases = {"Daic"},
}
m["tai-wen"] = {
"Wenma-Southwestern Tai",
nil,
"tai",
}
m["tai-tay"] = {
"Tày",
nil,
"tai-wen",
}
m["tai-sap"] = {
"Sapa-Southwestern Tai",
nil,
"tai-wen",
aliases = {"Sapa-Thai"},
}
m["tai-swe"] = {
"Southwestern Tai",
10889250,
"tai-sap",
}
m["tai-cho"] = {
"Chongzuo Tai",
13216,
"tai",
}
m["tai-cen"] = {
"Central Tai",
5061891,
"tai",
}
m["tai-nor"] = {
"Northern Tai",
7059014,
"tai",
}
m["tbq"] = {
"Tibeto-Burman",
34064,
"sit",
}
m["tbq-anp"] = {
"Angami-Pochuri",
530460,
"sit",
}
m["tbq-axi"] = {
"Axioid",
nil,
"tbq-sel",
}
m["tbq-bdg"] = {
"Bodo-Garo",
4090000,
"tbq-bkj",
}
m["tbq-bis"] = {
"Bisoid",
48844742,
"tbq-slo",
}
m["tbq-bka"] = {
"Bi-Ka",
12627890,
"tbq-slo",
}
m["tbq-bkj"] = {
"Sal",
889900,
"sit",
-- Brahmaputran appears to be Glottolog's term
aliases = {"Bodo-Konyak-Jinghpaw", "Brahmaputran", "Jingpho-Konyak-Bodo"},
}
m["tbq-brm"] = {
"Burmish",
865713,
"tbq-lob",
}
m["tbq-buq"] = {
"Burmo-Qiangic",
16056278,
"sit",
aliases = {"Eastern Tibeto-Burman"},
}
m["tbq-drp"] = {
"Downriver Phula",
7188378,
"tbq-rph",
}
m["tbq-han"] = {
"Hanoid",
17004185,
"tbq-slo",
}
m["tbq-hph"] = {
"Highland Phula",
nil,
"tbq-sel",
}
m["tbq-jin"] = {
"Jino",
6202716,
"tbq-slo",
}
m["tbq-kzh"] = {
"Kazhuoish",
48834669,
"tbq-lol",
}
m["tbq-kuk"] = {
"Kuki-Chin",
832413,
"sit",
aliases = {"Kukish", "South-Central Tibeto-Burman"},
}
m["tbq-lal"] = {
"Lalo",
56548,
"tbq-lso",
}
m["tbq-lho"] = {
"Lahoish",
nil,
"tbq-lol",
}
m["tbq-llo"] = {
"Lipo-Lolopo",
nil,
"tbq-lso",
}
m["tbq-lob"] = {
"Lolo-Burmese",
1635712,
"tbq-buq",
}
m["tbq-lol"] = {
"Loloish",
37035,
"tbq-lob",
aliases = {"Yi", "Ngwi", "Nisoic"},
}
m["tbq-lso"] = {
"Lisoish",
6559055,
"tbq-lol",
}
m["tbq-lwo"] = {
"Lawoish",
48847673,
"tbq-lol",
}
m["tbq-muj"] = {
"Muji",
11221327,
"tbq-hph",
}
m["tbq-nas"] = {
"Nasoid",
nil,
"tbq-nlo",
}
m["tbq-nis"] = {
"Nisu",
56404,
"tbq-nlo",
}
m["tbq-nlo"] = {
"Northern Loloish",
7058676,
"tbq-nso",
}
m["tbq-nso"] = {
"Nisoish",
56990,
"tbq-lol",
}
m["tbq-nus"] = {
"Nusoish",
114245231,
"tbq-lol",
}
m["tbq-phw"] = {
"Phowa",
7187959,
"tbq-hph",
}
m["tbq-rph"] = {
"Riverine Phula",
nil,
"tbq-sel",
}
m["tbq-sel"] = {
"Southeastern Loloish",
16111894,
"tbq-nso",
}
m["tbq-sil"] = {
"Siloid",
60787071,
"tbq-slo",
}
m["tbq-slo"] = {
"Southern Loloish",
5649340,
"tbq-lol",
}
m["tbq-tal"] = {
"Taloid",
48804018,
"tbq-lso",
}
m["tbq-urp"] = {
"Upriver Phula",
7187058,
"tbq-rph",
}
m["trk"] = {
"Turkic",
34090,
}
m["trk-cmn"] = {
"Common Turkic",
1126028,
"trk",
aliases = {"Shaz Turkic", "Shaz-Turkic"},
}
m["trk-kar"] = {
"Karluk",
703173,
"trk-cmn",
aliases = {"Qarluq", "Uyghur-Uzbek", "Southeastern Turkic"},
}
m["trk-kbu"] = {
"Kipchak-Bulgar",
3512539,
"trk-kip",
aliases = {"Uralian", "Uralo-Caspian"},
}
m["trk-kcu"] = {
"Kipchak-Cuman",
4370412,
"trk-kip",
aliases = {"Ponto-Caspian"},
}
m["trk-kip"] = {
"Kipchak",
1339898,
"trk-cmn",
-- Russian Wikipedia article [[w:ru:Западнотюркские_языки]] says "Western Turkic" is used by N.A. Baskakov and includes Oghuz, Kipchak and Karluk.
-- Azerbaijani Wikipedia article [[w:az:Qərbi_türk_dilləri]] clarifies that "Western Turkic" is not a clade.
other_names = {"Western Turkic"},
aliases = {"Kypchak", "Qypchaq", "Northwestern Turkic"},
protoLanguage = "qwm",
}
m["trk-kkp"] = {
"Kyrgyz-Kipchak",
4221189,
"trk-kip",
}
m["trk-kno"] = {
"Kipchak-Nogai",
4326954,
"trk-kip",
aliases = {"Aralo-Caspian"},
}
m["trk-nsb"] = {
"North Siberian Turkic",
4537269,
"trk-sib",
aliases = {"Northern Siberian Turkic"},
}
m["trk-ogr"] = {
"Oghur",
1422731,
"trk",
aliases = {"Lir-Turkic", "r-Turkic"},
}
m["trk-ogz"] = {
"Oghuz",
494600,
"trk-cmn",
aliases = {"Southwestern Turkic"},
}
m["trk-sib"] = {
"Siberian Turkic",
354353,
"trk-cmn",
other_names = {"Northern Turkic"},
-- per [[w:ru:Восточнотюркские_языки]], "Eastern Turkic" is an alias for Siberian Turkic in the work of O.A. Mudrak,
-- but has a different non-clade meaning in the older work of N.A. Baskakov.
aliases = {"Eastern Turkic", "Northeastern Turkic"},
}
m["trk-ssb"] = {
"South Siberian Turkic",
nil,
"trk-sib",
aliases = {"Southern Siberian Turkic"},
}
m["tup"] = {
"Tupian",
34070,
aliases = {"Tupi"},
}
m["tup-gua"] = {
"Tupi-Guarani",
148610,
"tup",
aliases = {"Tupí-Guaraní"},
}
m["tuw"] = {
"Tungusic",
34230,
aliases = {"Manchu-Tungus", "Tungus"},
}
m["tuw-ewe"] = {
"Ewenic",
105889448,
"tuw",
aliases = {"Northern Tungusic"},
}
m["tuw-jrc"] = {
"Jurchenic",
105889432,
"tuw",
aliases = {"Manchuric"},
}
m["tuw-nan"] = {
"Nanaic",
105889264,
"tuw",
}
m["tuw-udg"] = {
"Udegheic",
105889266,
"tuw",
}
m["urj"] = {
"Uralic",
34113,
varieties = {"Finno-Ugric"},
}
m["urj-fin"] = {
"Finnic",
33328,
"urj",
aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"},
}
m["urj-mdv"] = {
"Mordvinic",
627313,
"urj",
}
m["urj-prm"] = {
"Permic",
161493,
"urj",
}
m["urj-ugr"] = {
"Ugric",
156631,
"urj",
}
m["wak"] = {
"Wakashan",
60069,
}
m["wen"] = {
"Sorbian",
25442,
"zlw",
aliases = {"Lusatian", "Wendish"},
}
m["xgn"] = {
"Mongolic",
33750,
"qfa-xgs",
aliases = {"Mongolian"},
}
m["xgn-cen"] = {
"Central Mongolic",
28719447,
"xgn",
protoLanguage = "xng-lat",
}
m["xgn-sou"] = {
"Southern Mongolic",
nil,
"xgn",
protoLanguage = "xng-ear",
}
m["xgn-shr"] = {
"Shirongolic",
107539435,
"xgn-sou",
}
m["xme"] = {
"Median",
nil,
"ira-mpr",
protoLanguage = "xme-old",
}
m["xme-ttc"] = {
"Tatic",
nil,
"xme",
}
m["xnd"] = {
"Na-Dene",
26986,
"qfa-dny",
aliases = {"Na-Dené"},
}
m["xsc"] = {
"Scythian",
nil,
"ira-nei",
}
m["xsc-sak"] = {
"Saka",
nil,
"xsc-skw",
aliases = {"Sakan"},
}
m["xsc-sar"] = {
"Sarmatian",
nil,
"xsc",
}
m["xsc-skw"] = {
"Saka-Wakhi",
nil,
"xsc",
}
m["yok"] = {
"Yokuts",
34249,
"nai-you",
aliases = {"Yokutsan", "Mariposan", "Mariposa"},
}
m["ypk"] = {
"Yupik",
27970,
"esx-esk",
aliases = {"Yup'ik", "Yuit"},
}
m["yrk"] = {
"Nenets",
36452,
"syd",
}
m["zhx"] = {
"Sinitic",
33857,
"sit-sba",
aliases = {"Chinese"},
protoLanguage = "och",
}
m["zhx-com"] = {
"Coastal Min",
20667215,
"zhx-min",
}
m["zhx-inm"] = {
"Inland Min",
20667237,
"zhx-min",
}
m["zhx-man"] = {
"Mandarinic",
nil,
"zhx",
protoLanguage = "cmn-ear",
}
m["zhx-min"] = {
"Min",
56504,
"zhx",
}
m["zhx-nan"] = {
"Southern Min",
36495,
"zhx-com",
}
m["zhx-pin"] = {
"Pinghua",
2735715,
"zhx",
protoLanguage = "ltc",
}
m["zhx-yue"] = {
"Yue",
7033959,
"zhx",
protoLanguage = "ltc",
}
m["zle"] = {
"East Slavic",
144713,
"sla",
}
m["zls"] = {
"South Slavic",
146665,
"sla",
}
m["zlw"] = {
"West Slavic",
145852,
"sla",
}
m["zlw-lch"] = {
"Lechitic",
742782,
"zlw",
aliases = {"Lekhitic"},
}
m["zlw-pom"] = {
"Pomeranian",
nil,
"zlw-lch",
}
m["znd"] = {
"Zande",
8066072,
"nic-ubg",
}
return require("Module:languages").finalizeData(m, "family")
0nolmu8koyeowvbapmfrmq16i6o4a8e
233729
233728
2026-05-09T04:56:34Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
233729
Scribunto
text/plain
--[=[
This module contains definitions for all language family codes on Wiktionary.
]=]--
local m = {}
m["aav"] = {
"Austroasiatic",
33199,
aliases = {"Austro-Asiatic"},
}
m["aav-khs"] = {
"Khasian",
3073734,
"aav",
aliases = {"Khasic"},
}
m["aav-nic"] = {
"Nicobarese",
217380,
"aav",
}
m["aav-pkl"] = {
"Pnar-Khasi-Lyngngam",
nil,
"aav-khs",
}
m["afa"] = {
"Afroasiatic",
25268,
aliases = {"Afro-Asiatic"},
}
m["alg"] = {
"Algonquian",
33392,
"aql",
}
m["alg-abp"] = {
"Abenaki-Penobscot",
197936,
"alg-eas",
}
m["alg-ara"] = {
"Arapahoan",
2153686,
"alg",
}
m["alg-eas"] = {
"Eastern Algonquian",
2257525,
"alg",
}
m["alg-sfk"] = {
"Sac-Fox-Kickapoo",
1440172,
"alg",
}
m["alv"] = {
"Atlantic-Congo",
771124,
"nic",
}
m["alv-aah"] = {
"Ayere-Ahan",
750953,
"alv-von",
}
m["alv-ada"] = {
"Adamawa",
32906,
"alv-sav",
}
m["alv-bag"] = {
"Baga",
2746083,
"alv-mel",
}
m["alv-bak"] = {
"Bak",
1708174,
"alv-sng",
}
m["alv-bam"] = {
"Bambukic",
4853456,
"alv-ada",
aliases = {"Yungur-Jen"},
}
m["alv-bny"] = {
"Banyum",
2892477,
"alv-nyn",
}
m["alv-bua"] = {
"Bua",
4982094,
"alv-mbd",
}
m["alv-bwj"] = {
"Bikwin-Jen",
84542501,
"alv-bam",
}
m["alv-cng"] = {
"Cangin",
1033184,
"alv-fwo",
}
m["alv-ctn"] = {
"Central Tano",
1658486,
"alv-ptn",
aliases = {"Akan"},
}
m["alv-dlt"] = {
"Delta Edoid",
nil,
"alv-edo",
}
m["alv-dur"] = {
"Duru",
5316788,
"alv-lni",
}
m["alv-ede"] = {
"Ede",
35368,
"alv-yor",
}
m["alv-edk"] = {
"Edekiri",
5336735,
"alv-yrd",
}
m["alv-edo"] = {
"Edoid",
1287469,
"alv-von",
}
m["alv-eeo"] = {
"Edo-Esan-Ora",
12630439,
"alv-nce",
}
m["alv-fli"] = {
"Fali",
3450166,
"alv",
}
m["alv-fwo"] = {
"Fula-Wolof",
12631267,
"alv-sng",
}
m["alv-gbe"] = {
"Gbe",
668284,
"alv-von",
}
m["alv-gda"] = {
"Ga-Dangme",
3443338,
"alv-kwa",
}
m["alv-gng"] = {
"Guang",
684009,
"alv-ptn",
}
m["alv-gtm"] = {
"Ghana-Togo Mountain",
493020,
"alv-kwa",
aliases = {"Togo Remnant", "Central Togo"},
}
m["alv-hei"] = {
"Heiban",
108752116,
"alv-the",
}
m["alv-ido"] = {
"Idomoid",
974196,
"alv-von",
}
m["alv-igb"] = {
"Igboid",
1429100,
"alv-von",
}
m["alv-jfe"] = {
"Jola-Felupe",
1708174,
"alv-jol",
aliases = {"Ejamat"},
}
m["alv-jol"] = {
"Jola",
35176,
"alv-bak",
aliases = {"Diola"},
}
m["alv-kim"] = {
"Kim",
6409701,
"alv-mbd",
}
m["alv-kis"] = {
"Kissi",
35696,
"alv-mel",
}
m["alv-krb"] = {
"Karaboro",
4213541,
"alv-snf",
}
m["alv-ktg"] = {
"Ka-Togo",
5972796,
"alv-gtm",
}
m["alv-kul"] = {
"Kulango",
16977424,
"alv-sav",
aliases = {"Kulango-Lorhon", "Kulango-Lorom"},
}
m["alv-kwa"] = {
"Kwa",
33430,
"nic-vco",
}
m["alv-lag"] = {
"Lagoon",
111210042,
"alv-kwa",
}
m["alv-lek"] = {
"Leko",
6520642,
other_names = {"Sambaic"}, -- appears to be an alias in Glottolog
"alv-lni",
}
m["alv-lim"] = {
"Limba",
35825,
"alv",
}
m["alv-lni"] = {
"Leko-Nimbari",
1708170,
"alv-ada",
other_names = {"Central Adamawa"},
aliases = {"Chamba-Mumuye"},
}
m["alv-mbd"] = {
"Mbum-Day",
6799816,
"alv-ada",
}
m["alv-mbm"] = {
"Mbum",
6799814,
"alv-mbd",
}
m["alv-mel"] = {
"Mel",
12122355,
"alv",
}
m["alv-mum"] = {
"Mumuye",
84607009,
"alv-mye",
}
m["alv-mye"] = {
"Mumuye-Yendang",
6935539,
"alv-lni",
}
m["alv-nal"] = {
"Nalu",
nil,
"alv-sng",
}
m["alv-nce"] = {
"North-Central Edoid",
16110869,
"alv-edo",
}
m["alv-ngb"] = {
"Nupe-Gbagyi",
12638649,
"alv-nup",
aliases = {"Nupe-Gbari"},
}
m["alv-ntg"] = {
"Na-Togo",
nil,
"alv-gtm",
}
m["alv-nup"] = {
"Nupoid",
1429143,
"alv-von",
}
m["alv-nwd"] = {
"Northwestern Edoid",
16111012,
"alv-edo",
}
m["alv-nyn"] = {
"Nyun",
nil,
"alv-fwo",
}
m["alv-pap"] = {
"Papel",
7132562,
"alv-bak",
}
m["alv-pph"] = {
"Phla-Pherá",
3849625,
"alv-gbe",
}
m["alv-ptn"] = {
"Potou-Tano",
1475003,
"alv-kwa",
}
m["alv-sav"] = {
"Savanna",
4403672,
"nic-vco",
aliases = {"Savannas"},
}
m["alv-sma"] = {
"Supyire-Mamara",
4446348,
"alv-snf",
aliases = {"Suppire-Mamara"},
}
m["alv-snf"] = {
"Senufo",
33795,
"alv",
aliases = {"Senufic", "Senoufo", "Sénoufo"},
}
m["alv-sng"] = {
"Senegambian",
1708753,
"alv",
}
m["alv-snr"] = {
"Senari",
4416084,
"alv-snf",
}
m["alv-swd"] = {
"Southwestern Edoid",
12633903,
"alv-edo",
}
m["alv-tal"] = {
"Talodi",
12643302,
"alv-the",
}
m["alv-tdj"] = {
"Tagwana-Djimini",
7675362,
"alv-snf",
}
m["alv-ten"] = {
"Tenda",
3217535,
"alv-fwo",
}
m["alv-the"] = {
"Talodi-Heiban",
1521145,
"alv",
}
m["alv-von"] = {
"Volta-Niger",
34177,
"nic-vco",
}
m["alv-wan"] = {
"Wara-Natyoro",
7968830,
"alv-sav",
}
m["alv-wjk"] = {
"Waja-Kam",
nil,
"alv-ada",
}
m["alv-yek"] = {
"Yekhee",
nil,
"alv-nce",
}
m["alv-yor"] = {
"Yoruba",
nil,
"alv-edk",
}
m["alv-yrd"] = {
"Yoruboid",
1789745,
"alv-von",
}
m["alv-yun"] = {
"Yungur",
84601642,
"alv-bam",
aliases = {"Bena-Mboi"},
}
m["apa"] = {
"Apachean",
27758,
"ath",
aliases = {"Southern Athabaskan"},
}
m["aqa"] = {
"Alacalufan",
1288430,
}
m["aql"] = {
"Algic",
721612,
aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"},
}
m["art"] = {
"constructed",
33215,
"qfa-not",
aliases = {"artificial", "planned"},
}
m["ath"] = {
"Athabaskan",
27475,
"xnd",
}
m["ath-nor"] = {
"North Athabaskan",
20738,
"ath",
aliases = {"Northern Athabaskan"},
}
m["ath-pco"] = {
"Pacific Coast Athabaskan",
20654,
"ath",
}
m["auf"] = {
"Arauan",
626772,
aliases = {"Arahuan", "Arauán", "Arawa", "Arawan", "Arawán"},
}
--[=[
Exceptional language and family codes for Australian Aboriginal languages
can use the prefix "aus-", though "aus" is no longer itself a family code.
]=]--
m["aus-arn"] = {
"Arnhem",
2581700,
aliases = {"Gunwinyguan", "Macro-Gunwinyguan"},
}
m["aus-bub"] = {
"Bunuban",
2495148,
aliases = {"Bunaban"},
}
m["aus-cww"] = {
"Central New South Wales",
5061507,
"aus-pam",
}
m["aus-dal"] = {
"Daly",
2478079,
}
m["aus-dyb"] = {
"Dyirbalic",
1850666,
"aus-pam",
}
m["aus-gar"] = {
"Garawan",
5521951,
}
m["aus-gun"] = {
"Gunwinyguan",
2581700,
"aus-arn",
aliases = {"Gunwingguan"},
}
m["aus-jar"] = {
"Jarrakan",
2039423,
}
m["aus-kar"] = {
"Karnic",
4215578,
"aus-pam",
}
m["aus-mir"] = {
"Mirndi",
4294095,
}
m["aus-nga"] = {
"Ngayarda",
16153490,
"aus-psw",
}
m["aus-nyu"] = {
"Nyulnyulan",
2039408,
}
m["aus-pam"] = {
"Pama-Nyungan",
33942,
}
m["aus-pmn"] = {
"Paman",
2640654,
"aus-pam",
}
m["aus-psw"] = {
"Southwest Pama-Nyungan",
2258160,
"aus-pam",
}
m["aus-rnd"] = {
"Arandic",
4784071,
"aus-pam",
}
m["aus-tnk"] = {
"Tangkic",
1823065,
}
m["aus-wdj"] = {
"Iwaidjan",
4196968,
aliases = {"Yiwaidjan"},
}
m["aus-wor"] = {
"Worrorran",
2038619,
}
m["aus-yid"] = {
"Yidinyic",
4205849,
"aus-pam",
}
m["aus-yng"] = {
"Yangmanic",
42727644,
}
m["aus-yol"] = {
"Yolngu",
2511254,
"aus-pam",
aliases = {"Yolŋu", "Yolngu Matha"},
}
m["aus-yuk"] = {
"Yuin-Kuric",
3833021,
"aus-pam",
}
m["awd"] = {
"Arawak",
626753,
aliases = {"Arawakan", "Maipurean", "Maipuran"},
}
m["awd-nwk"] = {
"Nawiki",
nil,
"awd",
aliases = {"Newiki"},
}
m["awd-taa"] = {
"Ta-Arawak",
7672731,
"awd",
aliases = {"Ta-Arawakan", "Ta-Maipurean"},
}
m["azc"] = {
"Uto-Aztecan",
34073,
aliases = {"Uto-Aztekan"},
}
m["azc-cup"] = {
"Cupan",
19866871,
"azc-tak",
}
m["azc-dur"] = {
"Durango Nahuatl",
2386361,
"azc-nah",
aliases = {"Mexicanero"}
}
m["azc-hua"] = {
"Huasteca Nahuatl",
3832950,
"azc-nah",
}
m["azc-nah"] = {
"Nahuan",
11965602,
"azc",
aliases = {"Aztecan"},
}
m["azc-num"] = {
"Numic",
2657541,
"azc",
}
m["azc-pim"] = {
"Piman",
7194600,
"azc",
aliases = {"Tepiman"},
}
m["azc-tak"] = {
"Takic",
1280305,
"azc",
}
m["azc-trc"] = {
"Taracahitic",
4245032,
"azc",
aliases = {"Taracahitan"},
}
m["bad"] = {
"Banda",
806234,
"nic-ubg",
}
m["bad-cnt"] = {
"Central Banda",
3438391,
"bad",
}
m["bai"] = {
"Bamileke",
806005,
"nic-gre",
}
m["bat"] = {
"Baltic",
33136,
"ine-bsl",
}
m["bat-eas"] = {
"East Baltic",
149944,
"bat",
}
m["bat-wes"] = {
"West Baltic",
149946,
"bat",
}
m["ber"] = {
"Berber",
25448,
"afa",
aliases = {"Tamazight"},
}
m["bnt"] = {
"Bantu",
33146,
"nic-bds",
}
m["bnt-baf"] = {
"Bafia",
799784,
"bnt",
}
m["bnt-bbo"] = {
"Bafo-Bonkeng",
nil,
"bnt-saw",
}
m["bnt-bdz"] = {
"Boma-Dzing",
1729203,
"bnt",
}
m["bnt-bek"] = {
"Bekwilic",
nil,
"bnt-ndb",
}
m["bnt-bki"] = {
"Bena-Kinga",
16113307,
"bnt-bne",
}
m["bnt-bmo"] = {
"Bangi-Moi",
nil,
"bnt-bnm",
}
m["bnt-bne"] = {
"Northeast Bantu",
7057832,
"bnt",
}
m["bnt-bnm"] = {
"Bangi-Ntomba",
806477,
"bnt-bte",
}
m["bnt-boa"] = {
"Boan",
4931250,
"bnt",
aliases = {"Buan", "Ababuan"},
}
m["bnt-bot"] = {
"Botatwe",
4948532,
"bnt",
}
m["bnt-bsa"] = {
"Basaa",
809739,
"bnt",
}
m["bnt-bsh"] = {
"Bushoong",
5001551,
"bnt-bte",
}
m["bnt-bso"] = {
"Southern Bantu",
980498,
"bnt",
}
m["bnt-bta"] = {
"Bati-Angba",
4869303,
"bnt-boa",
other_names = {"Late Bomokandian"},
aliases = {"Bwa"},
}
m["bnt-btb"] = {
"Beti",
35118,
"bnt",
}
m["bnt-bte"] = {
"Bangi-Tetela",
4855181,
"bnt",
}
m["bnt-bun"] = {
"Buja-Ngombe",
4986733,
"bnt-mbb",
}
m["bnt-chg"] = {
"Chaga",
33016,
"bnt-cht",
}
m["bnt-cht"] = {
"Chaga-Taita",
nil,
"bnt-bne",
}
m["bnt-clu"] = {
"Chokwe-Luchazi",
3339273,
"bnt",
}
m["bnt-com"] = {
"Comorian",
33077,
"bnt-sab",
}
m["bnt-glb"] = {
"Great Lakes Bantu",
5599420,
"bnt-bne",
}
m["bnt-haj"] = {
"Haya-Jita",
25502360,
"bnt-glb",
}
m["bnt-kak"] = {
"Kako",
nil,
"bnt-pob",
}
m["bnt-kav"] = {
"Kavango",
116544179,
"bnt-ksb",
}
m["bnt-kbi"] = {
"Komo-Bira",
6428591,
"bnt-boa",
}
m["bnt-kel"] = {
"Kele",
1738162,
"bnt-kts",
aliases = {"Sheke"},
}
m["bnt-kil"] = {
"Kilombero",
6408121,
"bnt",
}
m["bnt-kka"] = {
"Kikuyu-Kamba",
16114410,
"bnt-bne",
aliases = {"Thagiicu"},
}
m["bnt-kmb"] = {
"Kimbundu",
16947687,
"bnt",
}
m["bnt-kng"] = {
"Kongo",
6429214,
"bnt",
}
m["bnt-kpw"] = {
"Kpwe",
36428,
"bnt-saw",
}
m["bnt-ksb"] = {
"Kavango-Southwest Bantu",
6379098,
"bnt",
}
m["bnt-kts"] = {
"Kele-Tsogo",
6385577,
"bnt",
}
m["bnt-lbn"] = {
"Luban",
4536504,
"bnt",
}
m["bnt-leb"] = {
"Lebonya",
6511395,
"bnt",
}
m["bnt-lgb"] = {
"Lega-Binja",
6517694,
"bnt",
}
m["bnt-lok"] = {
"Logooli-Kuria",
nil,
"bnt-glb",
}
m["bnt-lub"] = {
"Luba",
nil,
"bnt-lbn",
}
m["bnt-lun"] = {
"Lunda",
6704091,
"bnt",
}
m["bnt-mak"] = {
"Makua",
6740431,
"bnt-bso",
aliases = {"Makhuwa"},
}
m["bnt-mbb"] = {
"Mboshi-Buja",
6799764,
"bnt",
}
m["bnt-mbe"] = {
"Mbole-Enya",
6799728,
"bnt",
}
m["bnt-mbi"] = {
"Mbinga",
nil,
"bnt-rur",
}
m["bnt-mbo"] = {
"Mboshi",
6799763,
"bnt-mbb",
}
m["bnt-mbt"] = {
"Mbete",
1346910,
"bnt-tmb",
aliases = {"Mbere"},
}
m["bnt-mby"] = {
"Mbeya",
nil,
"bnt-ruk",
}
m["bnt-mij"] = {
"Mijikenda",
6845474,
"bnt-sab",
}
m["bnt-mka"] = {
"Makaa",
nil,
"bnt-ndb",
}
m["bnt-mne"] = {
"Manenguba",
31147471,
"bnt",
aliases = {"Mbo", "Ngoe"},
}
m["bnt-mnj"] = {
"Makaa-Njem",
1603899,
"bnt-pob",
}
m["bnt-mon"] = {
"Mongo",
nil,
"bnt-bnm",
}
m["bnt-mra"] = {
"Mbugwe-Rangi",
6799795,
"bnt",
}
m["bnt-msl"] = {
"Masaba-Luhya",
12636428,
"bnt-glb",
}
m["bnt-mwi"] = {
"Mwika",
nil,
"bnt-ruk",
}
m["bnt-ncb"] = {
"Northeast Coast Bantu",
7057848,
"bnt-bne",
}
m["bnt-ndb"] = {
"Ndzem-Bomwali",
nil,
"bnt-mnj",
}
m["bnt-ngn"] = {
"Ngondi-Ngiri",
7022532,
"bnt-mbb",
}
m["bnt-ngu"] = {
"Nguni",
961559,
"bnt-bso",
aliases = {"Ngoni"},
}
m["bnt-nya"] = {
"Nyali",
7070832,
"bnt-leb",
}
m["bnt-nyb"] = {
"Nyanga-Buyi",
7070882,
"bnt",
}
m["bnt-nyg"] = {
"Nyoro-Ganda",
12638666,
"bnt-glb",
}
m["bnt-nys"] = {
"Nyasa",
7070921,
"bnt",
}
m["bnt-nze"] = {
"Nzebi",
1755498,
"bnt-tmb",
aliases = {"Njebi"},
}
m["bnt-ova"] = {
"Ovambo",
36489,
"bnt-swb",
aliases = {"Oshivambo", "Oshiwambo", "Owambo"},
}
m["bnt-par"] = {
"Pare",
nil,
"bnt-ncb",
}
m["bnt-pen"] = {
"Pende",
7162373,
"bnt",
}
m["bnt-pob"] = {
"Pomo-Bomwali",
nil,
"bnt",
}
m["bnt-ruk"] = {
"Rukwa",
7378902,
"bnt",
}
m["bnt-run"] = {
"Rungwe",
nil,
"bnt-ruk",
}
m["bnt-rur"] = {
"Rufiji-Ruvuma",
7377947,
"bnt",
}
m["bnt-ruv"] = {
"Ruvu",
nil,
"bnt-ncb",
}
m["bnt-rvm"] = {
"Ruvuma",
nil,
"bnt-rur",
}
m["bnt-sab"] = {
"Sabaki",
2209395,
"bnt-ncb",
}
m["bnt-saw"] = {
"Sawabantu",
532003,
"bnt",
}
m["bnt-sbi"] = {
"Sabi",
7396071,
"bnt",
}
m["bnt-seu"] = {
"Seuta",
nil,
"bnt-ncb",
}
m["bnt-shh"] = {
"Shi-Havu",
nil,
"bnt-glb",
}
m["bnt-sho"] = {
"Shona",
2904660,
"bnt",
}
m["bnt-sir"] = {
"Sira",
1436372,
"bnt",
aliases = {"Shira-Punu"},
}
m["bnt-ske"] = {
"Soko-Kele",
nil,
"bnt-bte",
}
m["bnt-sna"] = {
"Sena",
nil,
"bnt-nys",
}
m["bnt-sts"] = {
"Sotho-Tswana",
2038386,
"bnt-bso",
}
m["bnt-swb"] = {
"Southwest Bantu",
116543539,
"bnt-ksb",
}
m["bnt-swh"] = {
"Swahili",
nil,
"bnt-sab",
}
m["bnt-tek"] = {
"Teke",
36528,
"bnt-tmb",
}
m["bnt-tet"] = {
"Tetela",
7706059,
"bnt-bte",
}
m["bnt-tkc"] = {
"Central Teke",
36473,
"bnt-tek",
}
m["bnt-tkm"] = {
"Takama",
nil,
"bnt-bne",
}
m["bnt-tmb"] = {
"Teke-Mbede",
7695332,
"bnt",
aliases = {"Teke-Mbere"},
}
m["bnt-tso"] = {
"Tsogo",
2458420,
other_names = {"Okani"}, --appears to be an alias in Glottolog
"bnt-kts",
}
m["bnt-tsr"] = {
"Tswa-Ronga",
12643962,
"bnt-bso",
}
m["bnt-yak"] = {
"Yaka",
8047027,
"bnt",
}
m["bnt-yko"] = {
"Yasa-Kombe",
nil,
"bnt-saw",
}
m["bnt-zbi"] = {
"Zamba-Binza",
nil,
"bnt-bnm",
}
m["btk"] = {
"Batak",
1998595,
"poz-nws",
}
--[=[
Exceptional language and family codes for Central American Indian languages
may use the prefix "cai-", though "cai" is no longer itself a family code.
]=]--
--[=[
Exceptional language and family codes for Caucasian languages can use
the prefix "cau-", though "cau" is no longer itself a family code.
]=]--
m["cau-abz"] = {
"Abkhaz-Abaza",
4663617,
"cau-nwc",
other_names = {"Abkhaz-Tapanta"},
aliases = {"Abazgi"},
}
m["cau-and"] = {
"Andian",
492152,
"cau-ava",
aliases = {"Andic"},
}
m["cau-ava"] = {
"Avaro-Andian",
4055404,
"cau-nec",
aliases = {"Avar-Andian", "Avar-Andi", "Avar-Andic"},
}
m["cau-cir"] = {
"Circassian",
858543,
"cau-nwc",
aliases = {"Cherkess"},
}
m["cau-drg"] = {
"Dargwa",
5222637,
"cau-nec",
other_names = {"Dargin"},
}
m["cau-esm"] = {
"Eastern Samur",
nil,
"cau-sam",
}
m["cau-ets"] = {
"East Tsezian",
121437666,
"cau-tsz",
aliases = {"East Tsezic", "East Didoic"},
}
m["cau-lzg"] = {
"Lezghian",
2144370,
"cau-nec",
aliases = {"Lezgi", "Lezgian", "Lezgic"},
}
m["cau-nkh"] = {
"Nakh",
24441,
"cau-nec",
aliases = {"North-Central Caucasian"},
}
m["cau-nec"] = {
"Northeast Caucasian",
27387,
aliases = {"Dagestanian", "Nakho-Dagestanian", "Caspian"},
}
m["cau-nwc"] = {
"Northwest Caucasian",
33852,
aliases = {"Abkhazo-Adyghean", "Abkhaz-Adyghe", "Pontic"},
}
m["cau-sam"] = {
"Samur",
15229151,
"cau-lzg",
}
m["cau-ssm"] = {
"Southern Samur",
nil,
"cau-sam",
}
m["cau-tsz"] = {
"Tsezian",
1651530,
"cau-nec",
aliases = {"Tsezic", "Didoic"},
}
m["cau-vay"] = {
"Vainakh",
4102486,
"cau-nkh",
aliases = {"Veinakh", "Vaynakh"},
}
m["cau-wsm"] = {
"Western Samur",
nil,
"cau-sam",
}
m["cau-wts"] = {
"West Tsezian",
121437697,
"cau-tsz",
aliases = {"West Tsezic", "West Didoic"},
}
m["cba"] = {
"Chibchan",
520478,
"qfa-mch", -- or none if Macro-Chibchan is considered undemonstrated
}
m["ccs"] = {
"Kartvelian",
34030,
aliases = {"South Caucasian"},
}
m["ccs-gzn"] = {
"Georgian-Zan",
34030,
"ccs",
aliases = {"Karto-Zan"},
}
m["ccs-zan"] = {
"Zan",
2606912,
"ccs-gzn",
aliases = {"Zanuri", "Colchian"},
}
m["cdc"] = {
"Chadic",
33184,
"afa",
}
m["cdc-cbm"] = {
"Central Chadic",
2251547,
"cdc",
aliases = {"Biu-Mandara"},
}
m["cdc-est"] = {
"East Chadic",
2276221,
"cdc",
}
m["cdc-mas"] = {
"Masa",
2136092,
"cdc",
}
m["cdc-wst"] = {
"West Chadic",
2447774,
"cdc",
}
m["cdd"] = {
"Caddoan",
1025090,
}
m["cel"] = {
"Celtic",
25293,
"ine",
}
m["cel-bry"] = {
"Brythonic",
156877,
"cel-ins",
aliases = {"Brittonic"},
}
m["cel-brs"] = {
"Southwestern Brythonic",
2612853,
"cel-bry",
aliases = {"Southwestern Brittonic"},
}
m["cel-brw"] = {
"Western Brythonic",
593069,
"cel-bry",
aliases = {"Western Brittonic"},
}
m["cel-gae"] = {
"Goidelic",
56433,
"cel-ins",
aliases = {"Gaelic"},
protoLanguage = "pgl",
}
m["cel-his"] = {
"Hispano-Celtic",
4204136,
"cel",
}
m["cel-ins"] = {
"Insular Celtic",
214506,
"cel",
}
m["chi"] = {
"Chimakuan",
1073088,
}
m["chm"] = {
"Mari",
973685,
"urj",
}
m["cmc"] = {
"Chamic",
2997506,
"poz-mcm",
}
m["crp"] = {
"creole or pidgin",
19682167,
"qfa-cnt",
}
m["csu"] = {
"Central Sudanic",
190822,
"ssa",
}
m["csu-bba"] = {
"Bongo-Bagirmi",
3505042,
"csu",
}
m["csu-bbk"] = {
"Bongo-Baka",
4941917,
"csu-bba",
}
m["csu-bgr"] = {
"Bagirmi",
4841948,
"csu-bba",
aliases = {"Bagirmic"},
}
m["csu-bkr"] = {
"Birri-Kresh",
nil,
"csu",
}
m["csu-ecs"] = {
"Eastern Central Sudanic",
16911698,
"csu",
aliases = {"East Central Sudanic", "Central Sudanic East", "Lendu-Mangbetu"},
}
m["csu-kab"] = {
"Kaba",
6343715,
"csu-bba",
}
m["csu-lnd"] = {
"Lendu",
6522357,
"csu-ecs",
aliases = {"Lenduic"},
}
m["csu-maa"] = {
"Mangbetu",
6748874,
"csu-ecs",
aliases = {"Mangbetu-Asoa", "Mangbetu-Asua"},
}
m["csu-mle"] = {
"Mangbutu-Lese",
17009406,
"csu-ecs",
aliases = {"Mangbutu-Efe", "Mangbutu", "Membi-Mangbutu-Efe"},
}
m["csu-mma"] = {
"Moru-Madi",
6915156,
"csu-ecs",
}
m["csu-sar"] = {
"Sara",
2036691,
"csu-bba",
}
m["csu-val"] = {
"Vale",
7909520,
"csu-bba",
}
m["cus"] = {
"Cushitic",
33248,
"afa",
}
m["cus-cen"] = {
"Central Cushitic",
56569,
"cus",
}
m["cus-eas"] = {
"East Cushitic",
56568,
"cus",
}
m["cus-hec"] = {
"Highland East Cushitic",
56524,
"cus-eas",
}
m["cus-som"] = {
"Somaloid",
56774,
"cus-eas",
aliases = {"Sam", "Macro-Somali"},
}
m["cus-sou"] = {
"South Cushitic",
56525,
"cus",
}
m["day"] = {
"Land Dayak",
2760613,
"poz",
}
m["del"] = {
"Lenape",
2665761,
"alg-eas",
aliases = {"Delaware"},
}
m["den"] = {
"Slavey",
13272,
"ath-nor",
aliases = {"Slave", "Slavé"},
}
m["dmn"] = {
"Mande",
33681,
"nic",
}
m["dmn-bbu"] = {
"Bisa-Busa",
12627956,
"dmn-mde",
}
m["dmn-emn"] = {
"East Manding",
nil,
"dmn-man",
}
m["dmn-jje"] = {
"Jogo-Jeri",
nil,
"dmn-mjo",
}
m["dmn-man"] = {
"Manding",
35772,
"dmn-mmo",
}
m["dmn-mda"] = {
"Mano-Dan",
nil,
"dmn-mse",
}
m["dmn-mdc"] = {
"Central Mande",
5972907,
"dmn-mdw",
}
m["dmn-mde"] = {
"Eastern Mande",
12633080,
"dmn",
}
m["dmn-mdw"] = {
"Western Mande",
16113831,
"dmn",
}
m["dmn-mjo"] = {
"Manding-Jogo",
12636153,
"dmn-mdc",
}
m["dmn-mmo"] = {
"Manding-Mokole",
nil,
"dmn-mva",
}
m["dmn-mnk"] = {
"Maninka",
36186,
"dmn-emn",
}
m["dmn-mnw"] = {
"Northwestern Mande",
5972910,
"dmn-mdw",
}
m["dmn-mok"] = {
"Mokole",
16935447,
"dmn-mmo",
}
m["dmn-mse"] = {
"Southeastern Mande",
5972912,
"dmn-mde",
}
m["dmn-msw"] = {
"Southwestern Mande",
12633904,
"dmn-mdw",
}
m["dmn-mva"] = {
"Manding-Vai",
nil,
"dmn-mjo",
}
m["dmn-nbe"] = {
"Nwa-Beng",
nil,
"dmn-mse",
}
m["dmn-sam"] = {
"Samo",
36327,
"dmn-bbu",
aliases = {"Samuic"},
}
m["dmn-smg"] = {
"Samogo",
7410000,
"dmn-mnw",
aliases = {"Duun-Seenku"},
}
m["dmn-snb"] = {
"Soninke-Bobo",
16111680,
"dmn-mnw",
}
m["dmn-sya"] = {
"Susu-Yalunka",
nil,
"dmn-mdc",
}
m["dmn-vak"] = {
"Vai-Kono",
nil,
"dmn-mva",
}
m["dmn-wmn"] = {
"West Manding",
nil,
"dmn-man",
}
m["dra"] = {
"Dravidian",
33311,
}
m["dra-cen"] = {
"Central Dravidian",
12628823,
"dra",
}
m["dra-gki"] = {
"Gondi-Kui",
12631610,
"dra-sdt",
}
m["dra-gon"] = {
"Gondi",
55639812,
"dra-gki",
}
m["dra-imd"] = {
"Irula-Muduga",
nil,
"dra-tkn",
}
m["dra-kan"] = {
"Kannadoid",
6363888,
"dra-tkn",
protoLanguage = "dra-okn",
}
m["dra-kki"] = {
"Konda-Kui",
nil,
"dra-gki",
}
m["dra-kml"] = {
"Kurux-Malto",
68002822,
"dra-nor",
}
m["dra-knk"] = {
"Kolami-Naiki",
10547037,
"dra-cen",
}
m["dra-kod"] = {
"Kodagu",
67983106,
"dra-tkd",
}
m["dra-kor"] = {
"Koraga",
33394,
"dra-tlk",
}
m["dra-mal"] = {
"Malayalamoid",
6741581,
"dra-tml",
}
m["dra-mdy"] = {
"Madiya",
27602,
"dra-gon",
}
m["dra-mlo"] = {
"Malto",
nil,
"dra-kml",
}
m["dra-mur"] = {
"Muria",
6938499,
"dra-gon",
}
m["dra-nor"] = {
"North Dravidian",
16110967,
"dra",
}
m["dra-pgd"] = {
"Parji-Gadaba",
10620428,
"dra-cen",
}
m["dra-sdo"] = {
"South Dravidian I",
16112843, -- Wikipedia's "South Dravidian" is South Dravidian I in this scheme.
"dra-sou",
aliases = {"South Dravidian"}, -- This is why I and II are used.
}
m["dra-sdt"] = {
"South Dravidian II",
12633975,
"dra-sou",
aliases = {"South-Central Dravidian"},
}
m["dra-sou"] = {
"South Dravidian",
128886618,
"dra",
aliases = {"Southern Dravidian"},
}
m["dra-tam"] = {
"Tamiloid",
7681417,
"dra-tml",
protoLanguage = "oty",
}
m["dra-tel"] = {
"Teluguic",
nil,
"dra-sdt",
protoLanguage = "dra-ote",
}
m["dra-tkd"] = {
"Tamil-Kodagu",
25494510,
"dra-tkn",
}
m["dra-tkn"] = {
"Tamil-Kannada",
6478506,
"dra-sdo",
}
m["dra-tkt"] = {
"Toda-Kota",
67983857,
"dra-tkd",
}
m["dra-tlk"] = {
"Tulu-Koraga",
nil,
"dra-sdo",
}
m["dra-tml"] = {
"Tamil-Malayalam",
10690507,
"dra-tkd",
}
m["egx"] = {
"Egyptian",
50868,
"afa",
protoLanguage = "egy",
}
m["ero"] = {
"Horpa",
56854,
"sit-wgy",
}
m["esx"] = {
"Eskimo-Aleut",
25946,
}
m["esx-esk"] = {
"Eskimo",
25946,
"esx",
}
m["esx-inu"] = {
"Inuit",
27796,
"esx-esk",
}
m["euq"] = {
"Vasconic",
4669240,
}
m["gba"] = {
"Gbaya",
3099986,
"alv-sav",
}
m["gba-eas"] = {
"Eastern Gbaya",
nil,
"gba",
}
m["gba-sou"] = {
"Southern Gbaya",
nil,
"gba",
}
m["gba-wes"] = {
"Western Gbaya",
nil,
"gba",
}
m["gem"] = {
"ජර්මානු",
21200,
"ine",
}
m["gio"] = {
"Gelao",
56401,
"qfa-kra",
}
m["gme"] = {
"East Germanic",
108662,
"gem",
}
m["gmq"] = {
"North Germanic",
106085,
"gem",
}
m["gmq-eas"] = {
"East Scandinavian",
3090263,
"gmq",
protoLanguage = "non-oen",
}
m["gmq-ins"] = {
"Insular Scandinavian",
nil,
"gmq-wes",
}
m["gmq-wes"] = {
"West Scandinavian",
1792570,
"gmq",
protoLanguage = "non-own",
}
m["gmw"] = {
"බටහිර ජර්මානු",
26721,
"gem",
}
m["gmw-afr"] = {
"ඇන්ග්ලෝ-ෆ්රිසියන්",
5329170,
"gmw-nsg",
}
m["gmw-ang"] = {
"ඇන්ග්ලික්",
1346342,
"gmw-afr",
protoLanguage = "ang",
}
m["gmw-fri"] = {
"Frisian",
25325,
"gmw-afr",
protoLanguage = "ofs",
}
m["gmw-frk"] = {
"Low Franconian",
153050,
"gmw",
protoLanguage = "frk",
}
m["gmw-hgm"] = {
"High German",
52040,
"gmw",
protoLanguage = "goh",
}
m["gmw-ian"] = {
"Irish Anglo-Norman",
120719384,
"gmw-ang",
protoLanguage = "enm",
}
m["gmw-lgm"] = {
"Low German",
25433,
"gmw-nsg",
protoLanguage = "osx",
}
m["gmw-nsg"] = {
"North Sea Germanic",
30134,
"gmw",
aliases = {"Ingvaeonic"},
}
m["gn"] = {
"Guarani",
35876,
"tup-gua",
aliases = {"Guaraní"},
}
m["grb"] = {
"Grebo proper",
35257,
"kro-grb",
}
m["grk"] = {
"Hellenic",
2042538,
"ine",
aliases = {"Greek"},
}
m["him"] = {
"Western Pahari",
10939493,
"inc-pah",
aliases = {"Himachali"},
}
m["hmn"] = {
"Hmongic",
3307894,
"hmx",
}
m["hmx"] = {
"Hmong-Mien",
33322,
aliases = {"Miao-Yao"},
}
m["hmx-mie"] = {
"Mienic",
7992695,
"hmx",
}
m["hok"] = {
"Hokan",
33406,
}
m["hyx"] = {
"Armenian",
8785,
"ine",
}
m["iir"] = {
"ඉන්දු-ඉරාන",
33514,
"ine",
}
m["iir-nur"] = {
"Nuristani",
161804,
"iir",
}
m["nur-nor"] = {
"Northern Nuristani",
nil,
"iir-nur",
}
m["nur-sou"] = {
"Southern Nuristani",
nil,
"iir-nur",
}
m["ijo"] = {
"Ijoid",
1325759,
"nic",
other_names = {"Ijaw"}, -- Ijaw may be a subfamily
}
m["inc"] = {
"ඉන්දු-ආර්ය",
33577,
"iir",
aliases = {"Indo-Aryan", "Indic"},
}
m["inc-bas"] = {
"Bengali-Assamese",
4179137,
"inc-eas",
aliases = {"Assamese-Bengali", "Gauda-Kamarupa"},
}
m["inc-bhi"] = {
"Bhil",
4901727,
"inc-cen",
}
m["inc-bih"] = {
"Bihari",
135305,
"inc-eas",
}
m["inc-cen"] = {
"Central Indo-Aryan",
10979187,
"inc",
protoLanguage = "inc-asa",
}
m["inc-chi"] = {
"Chitrali",
11732797,
"inc-dar",
}
m["inc-dar"] = {
"Dardic",
161101,
"inc",
protoLanguage = "inc-ash",
}
m["inc-dre"] = {
"Eastern Dardic",
nil,
"inc-dar",
}
m["inc-dng"] = {
"Dangari",
nil,
"inc-shn",
}
m["inc-eas"] = {
"Eastern Indo-Aryan",
12593391,
"inc",
protoLanguage = "inc-aav",
}
m["inc-hal"] = {
"Halbic",
16910593,
"inc-eas",
aliases = {"Halbi"},
}
m["inc-hie"] = {
"Eastern Hindi",
4126648,
"inc-cen",
aliases = {"Purabiyā"},
protoLanguage = "inc-apa",
}
m["inc-hiw"] = {
"Western Hindi",
12600937,
"inc-cen",
protoLanguage = "inc-ohi",
}
m["inc-hnd"] = {
"Hindustani",
11051,
"inc-hiw",
aliases = {"Hindi-Urdu"},
protoLanguage = "hi-mid",
}
m["inc-ins"] = {
"Insular Indo-Aryan",
12179302,
"inc",
protoLanguage = "inc-apa",
}
m["inc-kas"] = {
"Kashmiric",
nil,
"inc-dre",
aliases = {"Kashmiri"},
}
m["inc-koh"] = {
"Kohistani",
13018610,
"inc-dre",
}
m["inc-krd"] = {
"KRDS languages",
6356154,
"inc-eas",
aliases = {"Kamta, Rajbanshi, Deshi and Surjapuri", "KRNB languages", "Kamta, Rajbanshi and Northern Deshi Bangla"},
}
m["inc-kun"] = {
"Kunar",
nil,
"inc-dar",
}
m["inc-mid"] = {
"මධ්යකාලීන ඉන්දු-ආර්ය",
3236316,
"inc",
aliases = {"Middle Indic"},
}
m["inc-nwe"] = {
"Northwestern Indo-Aryan",
16111018,
"inc",
protoLanguage = "inc-apa",
}
m["inc-nor"] = {
"Northern Indo-Aryan",
946077,
"inc",
protoLanguage = "inc-aka",
}
m["inc-old"] = {
"Old Indo-Aryan",
118976896,
"inc",
aliases = {"Old Indic"},
}
m["inc-pah"] = {
"Pahari",
946077,
"inc-nor",
aliases = {"Pahadi"},
protoLanguage = "inc-aka",
}
m["inc-pan"] = {
"Punjabic",
2656685,
"inc-nwe",
aliases = {"Greater Punjabic"},
protoLanguage = "inc-opa",
}
m["inc-pas"] = {
"Pashayi",
36670,
"inc-dar",
aliases = {"Pashai"},
}
m["inc-rom"] = {
"Romani",
13201,
"inc-wes",
aliases = {"Romany", "Gypsy", "Gipsy"},
}
m["inc-shn"] = {
"Shinaic",
12646125,
"inc-dre",
}
m["inc-snd"] = {
"Sindhic",
7522212,
"inc-nwe",
protoLanguage = "inc-avr",
}
m["inc-sou"] = {
"Southern Indo-Aryan",
10856062,
"inc",
protoLanguage = "inc-ama",
}
m["inc-tha"] = {
"Tharu",
34035,
"inc-eas",
}
m["inc-wes"] = {
"Western Indo-Aryan",
nil,
"inc",
protoLanguage = "inc-agu",
}
m["ine"] = {
"ඉන්දු-යුරෝපීය",
19860,
aliases = {"ඉන්දු-ජර්මානු", "Indo-Germanic"},
}
m["ine-ana"] = {
"Anatolian",
147085,
"ine",
}
m["ine-bsl"] = {
"Balto-Slavic",
147356,
"ine",
}
m["ine-toc"] = {
"Tocharian",
37029,
"ine",
aliases = {"Tokharian"},
}
m["ira"] = {
"Iranian",
33527,
"iir",
}
m["ira-csp"] = {
"Caspian",
5049123,
"ira-mpr",
}
m["ira-cen"] = {
"Central Iranian",
nil,
"ira",
}
m["ira-kms"] = {
"Komisenian",
nil,
"ira-mpr",
aliases = {"Semnani"},
}
m["ine-luw"] = {
"Luwic",
115748615,
"ine-ana",
aliases = {"Luvic"},
}
m["ira-mid"] = {
"Middle Iranian",
6841465,
"ira",
}
m["ira-mny"] = {
"Munji-Yidgha",
nil,
"ira-sym",
aliases = {"Yidgha-Munji"},
}
m["ira-msh"] = {
"Mazanderani-Shahmirzadi",
nil,
"ira-csp",
}
m["ira-nei"] = {
"Northeastern Iranian",
10775567,
"ira",
}
m["ira-nwi"] = {
"Northwestern Iranian",
390576,
"ira-wes",
}
m["ira-old"] = {
"Old Iranian",
23301845,
"ira",
}
m["ira-orp"] = {
"Ormuri-Parachi",
nil,
"ira-sei",
}
m["ira-pat"] = {
"Pathan",
nil,
"ira-sei",
}
m["ira-sbc"] = {
"Sogdo-Bactrian",
nil,
"ira-nei",
}
m["ira-mpr"] = {
"Medo-Parthian",
nil,
"ira-nwi",
aliases = {"Partho-Median"},
}
m["ira-sgi"] = {
"Sanglechi-Ishkashimi",
18711232,
"ira-sei",
}
m["ira-shr"] = {
"Shughni-Roshani",
11732824,
"ira-shy",
}
m["ira-shy"] = {
"Shughni-Yazghulami",
nil,
"ira-sym",
}
m["ira-sgc"] = {
"Sogdic",
nil,
"ira-sbc",
aliases = {"Sogdian"},
}
m["ira-sei"] = {
"Southeastern Iranian",
3833002,
"ira",
}
m["ira-swi"] = {
"Southwestern Iranian",
390424,
"ira-wes",
}
m["ira-sym"] = {
"Shughni-Yazghulami-Munji",
nil,
"ira-sei",
}
m["ira-wes"] = {
"Western Iranian",
129850,
"ira",
}
m["ira-zgr"] = {
"Zaza-Gorani",
167854,
"ira-mpr",
aliases = {"Zaza-Gurani", "Gorani-Zaza"},
}
m["iro"] = {
"Iroquoian",
33623,
}
m["iro-nor"] = {
"North Iroquoian",
nil,
"iro",
}
m["itc"] = {
"Italic",
131848,
"ine",
}
m["itc-laf"] = {
"Latino-Faliscan",
33478,
"itc",
aliases = {"Latinian"},
}
m["itc-sbl"] = {
"Osco-Umbrian",
515194,
"itc",
aliases = {"Sabellic", "Sabellian"},
}
m["jpx"] = {
"Japonic",
33612,
aliases = {"Japanese", "Japanese-Ryukyuan"},
}
m["jpx-nry"] = {
"Northern Ryukyuan",
20862796,
"jpx-ryu",
}
m["jpx-ryu"] = {
"Ryukyuan",
56393,
"jpx",
}
m["jpx-sry"] = {
"Southern Ryukyuan",
18392243,
"jpx-ryu",
}
m["kar"] = {
"Karen",
1364815,
"sit",
}
m["kca"] = {
"Khanty",
33563,
"urj-ugr",
aliases = {"Khantyic", "Khantic"},
}
--[=[
Exceptional language and family codes for Khoisan and Kordofanian languages can use
the prefix "khi-" and "kdo-" respectively, though they are no longer family codes themselves.
]=]--
m["khi-kal"] = {
"Kalahari Khoe",
nil,
"khi-kho",
}
m["khi-khk"] = {
"Khoekhoe",
nil,
"khi-kho",
}
m["khi-kkw"] = {
"Khoe-Kwadi",
60785084,
aliases = {"Kwadi-Khoe"},
}
m["khi-kho"] = {
"Khoe",
2736449,
"khi-kkw",
aliases = {"Central Khoisan"},
}
m["khi-kxa"] = {
"Kx'a",
6450587,
aliases = {"Kxa", "Ju-ǂHoan"},
}
m["khi-tuu"] = {
"Tuu",
631046,
aliases = {"Kwi", "Taa-Kwi", "Southern Khoisan", "Taa-ǃKwi", "Taa-ǃUi", "ǃUi-Taa"},
}
m["kro"] = {
"Kru",
33535,
"nic-vco",
}
m["kro-aiz"] = {
"Aizi",
4699431,
"kro",
}
m["kro-bet"] = {
"Bété",
32956,
"kro-ekr",
}
m["kro-did"] = {
"Dida",
32685,
"kro-ekr",
}
m["kro-ekr"] = {
"Eastern Kru",
5972899,
"kro",
}
m["kro-grb"] = {
"Grebo",
5601537,
"kro-wkr",
}
m["kro-wee"] = {
"Wee",
nil,
"kro-wkr",
}
m["kro-wkr"] = {
"Western Kru",
5972897,
"kro",
}
m["ku"] = {
"Kurdish",
36368,
"ira-nwi",
}
m["kv"] = {
"Komi",
36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family
"urj-prm",
}
m["map"] = {
"Austronesian",
49228,
}
m["map-ata"] = {
"Atayalic",
716610,
"map",
}
m["mjg"] = {
"Monguor",
34214,
"xgn-shr",
}
m["mkh"] = {
"Mon-Khmer",
33199,
"aav",
}
m["mkh-asl"] = {
"Aslian",
3111082,
"mkh",
}
m["mkh-ban"] = {
"Bahnaric",
56309,
"mkh",
}
m["mkh-kat"] = {
"Katuic",
56697,
"mkh",
}
m["mkh-khm"] = {
"Khmuic",
1323245,
"mkh",
}
m["mkh-kmr"] = {
"Khmeric",
nil,
"mkh",
}
m["mkh-mnc"] = {
"Monic",
3217497,
"mkh",
}
m["mkh-mng"] = {
"Mangic",
3509556,
"mkh",
}
m["mkh-nbn"] = {
"North Bahnaric",
56309,
"mkh-ban",
}
m["mkh-pal"] = {
"Palaungic",
2391173,
"mkh",
}
m["mkh-pea"] = {
"Pearic",
3073022,
"mkh",
}
m["mkh-pkn"] = {
"Pakanic",
nil,
"mkh-mng",
}
m["mkh-vie"] = {
"Vietic",
2355546,
"mkh",
}
m["mno"] = {
"Manobo",
3217483,
"phi",
}
m["mns"] = {
"Mansi",
33759,
"urj-ugr",
aliases = {"Mansic"},
}
m["mun"] = {
"Munda",
33892,
"aav",
}
m["myn"] = {
"Mayan",
33738,
}
--[=[
Exceptional language and family codes for North American Indian languages
can use the prefix "nai-", though "nai" is no longer itself a family code.
]=]--
m["nai-cat"] = {
"Catawban",
3446638,
"nai-sca",
}
m["nai-chu"] = {
"Chumashan",
1288420,
}
m["nai-ckn"] = {
"Chinookan",
610586,
}
m["nai-coo"] = {
"Coosan",
940278,
}
m["nai-jcq"] = {
"Jicaquean",
12179308,
"hok"
}
m["nai-ker"] = {
"Keresan",
35878,
}
m["nai-klp"] = {
"Kalapuyan",
1569040,
}
m["nai-kta"] = {
"Kiowa-Tanoan",
386288,
}
m["nai-len"] = {
"Lencan",
36189,
aliases = {"Lenca"},
}
m["nai-mdu"] = {
"Maiduan",
33502,
}
m["nai-miz"] = {
"Mixe-Zoquean",
954016,
aliases = {"Mixe-Zoque"},
}
m["nai-min"] = {
"Misumalpan",
281693,
"qfa-mch",
aliases = {"Misuluan", "Misumalpa"},
}
m["nai-mus"] = {
"Muskogean",
902978,
aliases = {"Muskhogean"},
}
m["nai-pak"] = {
"Pakawan",
65085487,
"hok",
}
m["nai-pal"] = {
"Palaihnihan",
1288332,
}
m["nai-plp"] = {
"Plateau Penutian",
2307476,
}
m["nai-pom"] = {
"Pomoan",
2618420,
"hok",
aliases = {"Pomo", "Kulanapan"},
}
m["nai-sca"] = {
"Siouan-Catawban",
34181,
}
m["nai-shp"] = {
"Sahaptian",
114782,
"nai-plp",
}
m["nai-shs"] = {
"Shastan",
2991735,
"hok",
}
m["nai-tot"] = {
"Totozoquean",
7828419,
}
m["nai-ttn"] = {
"Totonacan",
34039,
aliases = {"Totonac-Tepehua", "Totonacan-Tepehuan"},
varieties = {"Totonac"},
}
m["nai-tqn"] = {
"Tequistlatecan",
1568317,
"hok",
aliases = {"Tequistlatec", "Chontal", "Chontalan", "Oaxacan Chontal", "Chontal of Oaxaca"},
}
m["nai-tsi"] = {
"Tsimshianic",
34134,
}
m["nai-utn"] = {
"Utian",
13371763,
"nai-you",
aliases = {"Miwok-Costanoan", "Mutsun"},
}
m["nai-wtq"] = {
"Wintuan",
1294259,
aliases = {"Wintun"},
}
m["nai-xin"] = {
"Xincan",
1546494,
aliases = {"Xinca"},
}
m["nai-ykn"] = {
"Yukian",
2406722,
aliases = {"Yuki-Wappo"},
}
m["nai-you"] = {
"Yok-Utian",
2886186,
}
m["nai-yuc"] = {
"Yuman-Cochimí",
579137,
}
m["ngf"] = {
"Trans-New Guinea",
34018,
}
m["ngf-ais"] = {
"Aisian",
nil,
"ngf-eso",
}
m["ngf-ang"] = {
"Angan",
3217366,
"ngf",
aliases = {"Kratke Range"}, -- Usher
}
m["ngf-ank"] = {
"Angal-Kewa",
12626916, -- exist in dewiki and hrwiki
"ngf-sak",
}
m["ngf-ask"] = {
"Asmat-Kamoro",
3031400,
"ngf",
-- Wikipedia uses Asmat-Kamoro to refer to a narrower group excluding the Sabakor languages (Buruwai and Kamberau,
-- which Glottolog splits into North Kamrau and South Kamrau [sic]), and uses Asmat-Kamrau to refer to what we and
-- Glottolog call Asmat-Kamoro. Glottolog does not recognize the narrower grouping.
aliases = {"Asmat-Kamrau", -- Wikipedia
"Asmat-Kamrau Bay", -- Usher
},
}
m["ngf-asm"] = {
"Asmat",
4807421,
"ngf-ask",
}
m["ngf-ata"] = {
"Ankave-Tainae-Akoye",
nil,
"ngf-ang",
aliases = {"Southwest Kratke Range"}, -- Usher
}
m["ngf-awd"] = {
"Awyu-Dumut", -- [[w:Awyu-Dumut languages]] redirects to [[w:Greater Awyu languages]]
4830163, -- exist in eswiki, hrwiki and ruwiki
"ngf-gaw",
aliases = {"Central Digul River"}, -- Usher
}
m["ngf-awy"] = {
"Awyu",
96372866,
"ngf-awd",
}
m["ngf-bda"] = {
"Becking-Dawi",
nil, -- Q55993716 ([[Category:Becking–Dawi languages]]) exists in enwiki
"ngf-gaw",
aliases = {"Becking and Dawi Rivers"}, -- Usher
}
m["ngf-bin"] = {
"Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf-gbi",
aliases = {"Oro"}, -- Usher (2020)
}
m["ngf-boa"] = {
"Boane",
nil,
"ngf-era",
aliases = {"Boana", -- Glottolog's name
"Wain"}, -- not in Usher; "Wain" often excludes Mungkip, perhaps because it's poorly documented
}
m["ngf-bos"] = {
"Bosavi",
4947122,
"ngf",
aliases = {"Papuan Plateau"}, -- alternative name given by Wikipedia
}
m["ngf-bsi"] = {
"Baruya-Simbari",
nil,
"ngf-ang",
aliases = {"Northwest Kratke Range"}, -- Usher
}
m["ngf-cda"] = {
"Central Dani",
nil,
"ngf-dan",
aliases = {"Dani"}, -- Usher
}
m["ngf-chw"] = {
"Chimbu-Wahgi",
3217383,
"ngf",
aliases = {"Simbu-Western Highlands"}, -- alternative name given by Wikipedia
}
m["ngf-dag"] = {
"Dagan",
5208454,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Meneao Range"},
}
m["ngf-dal"] = {
"Dallman",
nil,
"ngf-huo",
aliases = {"Kinalakna-Kumukio", -- Pawley-Hammarström, who exclude Nomu, but they only had a numeral list of that language to work from
"Northeast Huon", -- Usher
},
}
m["ngf-dan"] = {
"Dani",
3217389,
"ngf",
-- Wikipedia renames the Dani languages to the Baliem Valley languages and sometimes (but not consistently)
-- reserves the name Dani (or "Dani proper") for a narrower group excluding Wano and the poorly attested Ngalik
-- languages (Nduga, Silimo, and the Yali dialect cluster, which we, following Ethnologue and Glottolog, split into
-- Anggurk Yali, Ninia Yali and Pass Valley Yali). Glottolog does not recognize the narrower grouping.
aliases = {"Baliem Valley", -- Wikipedia
"Balim Valley", -- Usher
},
}
m["ngf-dum"] = {
"Dumut", -- [[w:Dumut languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Wambon"}, -- Usher
}
m["ngf-ehu"] = {
"Eastern Huon", -- Glottolog adds Ono and Sialum, Pawley-Hammarström adds Dedua
10567087,
"ngf-huo",
aliases = {"East Huon"}, -- Usher
}
m["ngf-eku"] = {
"East Kutubuan",
5328752,
"ngf", -- Not in TNG per Glottolog but accepted by all others. Sometimes grouped with Fasu to form a Kutubuan family.
aliases = {"East Kutubu"}, -- Glottolog's name
}
m["ngf-enc"] = {
"Engic",
nil,
"ngf-eng",
aliases = {"Engan", -- Glottolog
"Engan proper", -- Wikipedia
"North Engan", -- alternative name given by Wikipedia
"Trans-Enga", -- Usher
},
}
m["ngf-eng"] = {
"Engan",
3217449,
"ngf",
aliases = {"Enga-Kewa-Huli", -- Glottolog, Pawley-Hammarström
"Enga-Southern Highlands", -- Usher
},
}
m["ngf-era"] = {
"Erap",
nil,
"ngf-fin",
aliases = {"Erap River"}, -- Usher?
}
m["ngf-eso"] = {
"East Sogeram",
nil,
"ngf-sog",
}
m["ngf-est"] = {
"East Strickland",
5329440,
"ngf",
aliases = {"Strickland River"}, -- alternative name given by Wikipedia
}
m["ngf-eva"] = {
"Evapia",
nil,
"ngf-rai",
aliases = {"Evapia River"}, -- Usher
}
m["ngf-fgi"] = {
"Fore-Gimi",
nil,
"ngf-gor",
aliases = {"South Goroka"}, -- Usher
}
m["ngf-fhu"] = {
"Finisterre-Huon",
3217453,
"ngf",
aliases = {"Finisterre Range-Huon Peninsula"}, -- per Usher
}
m["ngf-fin"] = {
"Finisterre",
5450373,
"ngf-fhu",
aliases = {"Finisterre-Saruwaged", -- Glottolog's name
"Finisterre Range"}, -- per Usher
}
m["ngf-gah"] = {
"Gahuku",
nil,
"ngf-gor",
aliases = {"Alekano-Asaro River"}, -- Usher
}
m["ngf-gau"] = {
"Gauwa",
nil,
"ngf-kai",
aliases = {"West Kainantu"}, -- Usher
}
m["ngf-gaw"] = {
"Greater Awyu",
12627424,
"ngf",
aliases = {"Digul River"}, -- used by Usher (2020)
}
m["ngf-gbi"] = {
"Greater Binanderean",
3217374, -- Wikidata doesn't distinguish Binanderean from Greater Binanderean
"ngf", -- not placed in Trans-New Guinea in Usher (2020)
aliases = {"Guhu-Oro"}, -- Guhu-Oro is used in Usher (2020)
}
m["ngf-gko"] = {
"Gaena-Korafe",
11732347, -- considered a single Korafe language by Wikipedia
"ngf-bin",
aliases = {"Gaina-Korafe"}, -- Usher
}
m["ngf-gmo"] = {
"Gusap-Mot",
16110857,
"ngf-fin",
aliases = {"Mot River"}, -- Usher?
}
m["ngf-gor"] = {
"Goroka",
15478597,
"ngf-kgo",
}
m["ngf-gsu"] = {
"Gogodala-Suki",
5577428,
"ngf", -- Possibly in the proposed Papuan Gulf family. Not in TNG per Glottolog but accepted by all others.
aliases = {"Suki-Gogodala", -- Glottolog's name
"Suki-Aramia River", -- Used in Usher (2020)
},
}
m["ngf-gum"] = {
"Gum",
5618008,
"ngf-mab",
}
m["ngf-gvd"] = {
"Grand Valley Dani", -- considered a single language by Wikipedia
5595219,
"ngf-cda",
}
m["ngf-hag"] = {
"Hagen", -- [[w:Hagen languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Melpa-Kaugel River"}, -- Usher
}
m["ngf-han"] = {
"Hanseman",
5651020,
"ngf-mab",
aliases = {"Hansemann Range"}, -- Usher
}
m["ngf-huo"] = {
"Huon",
5946109,
"ngf-fhu",
aliases = {"Huon Peninsula"}, -- per Usher
}
m["ngf-jim"] = {
"Jimi", -- [[w:Jimi languages]] and [[w:Jimi River languages]] redirect to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Jimi River"}, -- Usher
}
m["ngf-kab"] = {
"Kabwum",
nil,
"ngf-huo",
aliases = {"Timbe-Selepet-Komba", -- Pawley-Hammarström,
"Northwest Huon", -- Usher
},
}
m["ngf-kai"] = {
"Kainantu", -- Kambaira: under "unclassified Kainantu" (Glottolog), Tairora (Pawley-Hammarström), Gauwa (Usher)
15478590,
"ngf-kgo",
aliases = {"Gadsup-Auyana-Awa-Tairora"}, -- Wurm,
}
m["ngf-kak"] = {
"Kalam-Kobon",
6350303,
"ngf-ksa",
aliases = {"Kalam",
"Kaironk River"}, -- Usher (2020)
}
m["ngf-kau"] = {
"Kaukombar",
nil,
"ngf-nad",
aliases = {"Kaukombaran", -- Glottolog following Z'graggen (1975)
"Kaukombar River"}, -- Usher's term
}
m["ngf-kbm"] = {
"Kosorong-Burum-Mindik",
nil,
"ngf-huo",
aliases = {"Bulum River"}, -- Usher
}
m["ngf-kgo"] = {
"Kainantu-Goroka",
3217463,
"ngf",
aliases = {"Eastern Highlands"}, -- per Usher (2020)
}
m["ngf-khu"] = {
"Kewa-Huli",
nil,
"ngf-eng",
aliases = {"Huli-Southern Highlands"}, -- Usher
}
m["ngf-kma"] = {
"Kâte-Mape",
nil,
"ngf-ehu",
aliases = {"Kate-Mape-Sene", -- Pawley-Hammarström (with Sene),
"Southeast Huon", -- Usher
},
}
m["ngf-kme"] = {
"Kapau-Menya",
nil,
"ngf-ang",
aliases = {"Southeast Kratke Range"}, -- Usher
}
m["ngf-koi"] = {
"Koiarian",
11154240,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Koiari-Managalas Plateau"},
}
m["ngf-kok"] = {
"Kokon", -- Usher calls it South Mabuso but includes Gum in it
nil,
"ngf-mab",
}
m["ngf-kow"] = {
"Kowan",
6435004,
"ngf-mad",
aliases = {"Isumrud Strait"}, -- per Usher (2020)
}
m["ngf-ksa"] = {
"Kalam-Southern Adelbert",
nil,
"ngf-mad",
aliases = {"Kalamic-South Adelbert", -- Glottolog
"West Madang"}, -- Usher (2020)
}
m["ngf-kto"] = {
"Kube-Tobo", -- per Glottolog, one language "Kulungtfu-Yuanggeng-Tobo"
1173235, -- code for Tobo-Kube language
"ngf-huo",
aliases = {"Tobo-Kube"},
}
m["ngf-kts"] = {
"Komyandaret-Tsaukambo",
nil,
"ngf-bda",
aliases = {"Becking River"}, -- Usher
}
m["ngf-kum"] = {
"Kumil",
nil,
"ngf-nad",
aliases = {"Kumilan", -- Pawley-Hammarström following Z'graggen (1975)
"Kumil River"}, -- Usher's term
}
m["ngf-kya"] = {
"Kamano-Yagaria",
nil,
"ngf-gor",
aliases = {"Henganofi", -- Usher
"Kamano-Yagaria-Keigana",
},
}
m["ngf-lok"] = {
"Lowland Ok",
nil,
"ngf-okk",
}
m["ngf-mab"] = {
"Mabuso",
6721668,
"ngf-mad",
}
m["ngf-mad"] = {
"Madang",
11217556,
"ngf",
aliases = {"Madang-Adelbert Range"}, -- Z'graggen (1975), corresponding to today's Madang except in lacking Kalam and Gants
}
m["ngf-mek"] = {
"Mek",
6810515,
"ngf",
aliases = {"Goliath"}, -- outdated alternative name given by Wikipedia
}
m["ngf-min"] = {
"Mindjim",
86749913,
"ngf-mad",
aliases = {"Lower Minjim", -- Glottolog, placed in Rai Coast by Glottolog and Pawley-Hammarström; Glottolog's
-- Mindjim has 6 languages, including "Upper Minjim" (Rerau and Sgi Bara)
"Mindjim River", -- Usher
"Minjim", "Minjim River",
},
}
-- Add if Molet is separated from Asaro'o
-- m["ngf-moa"] = {
-- "Molet-Asaro'o",
-- nil,
-- "ngf-war",
-- }
m["ngf-mok"] = {
"Mountain Ok", -- [[w:Mountain Ok languages]] redirects to [[w:Ok languages]]
nil,
"ngf-okk",
}
m["ngf-mom"] = {
"Mombum",
6897077,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Mombum-Koneraw", "Komolom", "Muli Strait"}, -- Pawley-Hammarström uses Komolom, Usher uses Muli Strait
}
m["ngf-msu"] = {
"Mian-Suganga", -- considred a single Mian language by Wikipedia
12952846,
"ngf-mok",
aliases = {"Mianic"}, -- Glottolog
}
m["ngf-nad"] = {
"Northern Adelbert", -- not accepted by Pawley-Hammarström
16952821, -- code for Croisilles linkage
"ngf-mad",
aliases = {"Adelbert Range-Isumrud Strait", -- Usher (2020)
"North Adelbert",
"Pihom-Isumrud"}, -- Ross?
}
m["ngf-nbi"] = {
"North Binanderean",
nil,
"ngf-bin",
aliases = {"Suena-Zia"}, -- Usher
}
m["ngf-nde"] = {
"Ndeiram", -- [[w:Ndeiram River languages]] redirects to [[w:Greater Awyu languages]]
nil,
"ngf-awd",
aliases = {"Ndeiram River"}, -- Usher?
}
m["ngf-ngn"] = {
"Ngalik-Nduga", -- [[w:Ngalik languages]] redirects to [[w:Baliem Valley languages]] = Dani languages
nil,
"ngf-dan",
aliases = {"Ngalik"}, -- Usher
}
m["ngf-nso"] = {
"North Sogeram",
nil,
"ngf-sog",
aliases = {"Mum-Sirva", -- Usher
"North Central Sogeram", -- used by those who accept Central Sogeram (= North Sogeram + Apali and Manat)
"North-Central Sogeram", -- rarer than without the dash
"Sikan"}, -- Z’graggen (1975?)
}
m["ngf-num"] = {
"Numugen",
nil,
"ngf-nad",
aliases = {"Numugenan", -- Glottolog following Z'graggen 1975
"Numugen River"}, -- Usher's term
}
m["ngf-nur"] = {
"Nuru", -- Usher excludes Yangulam, Pawley-Hammarström include Jilim and Rerau
nil,
"ngf-rai",
aliases = {"Nuru River"}, -- Usher?
}
m["ngf-nwh"] = {
"Northwest Hanseman", -- Usher
nil,
"ngf-han",
aliases = {"Wamas-Samosa-Murupi-Mosimo"}, -- Glottolog, Greenhill, and Pawley-Hammarström following Z'graggen; the most common name, but very unwieldy
}
m["ngf-oen"] = {
"Outer Engan", -- considered a single Nete language by Wikipedia
6998869,
"ngf-enc",
aliases = {"Nete-Bisorio"}, -- Usher
}
m["ngf-okk"] = {
"Ok",
7081687,
"ngf",
}
m["ngf-omo"] = {
"Omosan", -- not included in (Greater) Northern Adelbert by Glottolog, but a sister
nil,
"ngf-nad",
}
m["ngf-oro"] = {
"Orokaivic",
7103752, -- considered a single Orokaiva language by Wikipedia
"ngf-bin",
aliases = {"Central Oro"}, -- Usher
}
m["ngf-pan"] = {
"Paniai Lakes",
6035631,
"ngf",
aliases = {"Wissel Lakes", "Wissel Lakes-Kemandoga River"}, -- alternative names given by Wikipedia
}
m["ngf-pek"] = {
"Peka",
nil,
"ngf-rai",
aliases = {"Peka River"}, -- Usher?
}
m["ngf-pom"] = {
"Pomoikan",
nil,
"ngf-sad",
}
m["ngf-rai"] = {
"Rai Coast",
7283663,
"ngf-mad",
aliases = {"South Madang"}, -- Usher
}
m["ngf-sab"] = {
"Sabakor", -- [[w:Sabakor languages]] redirects to [[w:Asmat–Kamrau languages]]
nil, -- 55994614 is for [[Category:Kamrau Bay languages]], which exists on enwiki
"ngf-ask",
aliases = {"Kamrau Bay"}, -- Usher
}
m["ngf-sad"] = {
"Southern Adelbert",
12633980,
"ngf-ksa",
aliases = {"South Adelbert", -- Glottolog
"Southern Adelbert Range", -- Z'graggen (1980)
"Sogeram and Tomul Rivers"}, -- Usher (2020)?
}
m["ngf-sak"] = {
"Sau-Angal-Kewa",
nil,
"ngf-khu",
aliases = {"Southern Highlands"}, -- Usher
}
m["ngf-san"] = {
"Sankwep",
nil,
"ngf-huo",
aliases = {"Nabak-Momolili", -- Pawley-Hammarström,
"Southwest Huon", -- Usher
},
}
m["ngf-sbh"] = {
"South Bird's Head",
7566330,
"ngf",
}
m["ngf-sim"] = {
"Simbu",
nil,
"ngf-chw",
}
m["ngf-sog"] = {
"Sogeram",
86750419,
"ngf-sad",
aliases = {"Sogeram River", -- Usher
"Wanang"},
}
m["ngf-sop"] = {
"Sopac",
nil,
"ngf-ehu",
aliases = {"Momare-Migabac", -- Pawley-Hammarström,
"Masaweng River", -- Usher
},
}
m["ngf-taa"] = {
"Tainae-Akoye",
nil,
"ngf-ata",
aliases = {"Akoye-Tainae"}, -- Usher
}
m["ngf-tai"] = {
"Tairora",
nil,
"ngf-kai",
aliases = {"Tairoric", -- Glottolog,
"East Kainantu", -- Usher
},
}
m["ngf-tib"] = {
"Tiboran",
nil,
"ngf-nad",
aliases = {"Nuclear Tibor", -- Glottolog, excluding Wanambre/Mokati
"Tiboran River", -- Usher (2020)
"Tibor", -- Pick (2020) and Glottolog including Wanambre/Mokati
}
}
m["ngf-tna"] = {
"Tangko-Nakai",
nil,
"ngf-okk",
aliases = {"Central Ok"}, -- Usher
}
m["ngf-uru"] = {
"Uruwa",
nil,
"ngf-fin",
aliases = {"Uruwa River"}, -- Usher?
}
m["ngf-usi"] = {
"Utu-Silopi",
nil,
"ngf-han",
aliases = {"Silopi-Utu"}, -- Usher
}
m["ngf-waa"] = {
"Wantoat-Awara", -- not in Usher but Wantoat and Awara form a dialect chain
nil,
"ngf-wan",
aliases = {"Awara-Wantoat"}, -- per Wikipedia
}
m["ngf-wah"] = {
"Wahgi", -- [[w:Wahgi languages]] redirects to [[w:Chimbu–Wahgi languages]]
nil,
"ngf-chw",
aliases = {"Wahgi Valley"}, -- Usher
}
m["ngf-wan"] = {
"Wantoatic",
nil,
"ngf-fin",
aliases = {"Wantoat",
"Wantoat River", -- Usher?
},
}
m["ngf-war"] = {
"Warup",
12645082,
"ngf-fin",
aliases = {"Warup River"}, -- Usher?
}
m["ngf-woj"] = {
"Wojokesic",
nil,
"ngf-ang",
aliases = {"Northeast Kratke Range"}, -- Usher
}
m["ngf-wok"] = {
"West Ok",
nil,
"ngf-okk",
aliases = {"Kwer-Kopkaka-Burumakok"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-wso"] = {
"West Sogeram",
nil,
"ngf-sog",
aliases = {"Mand-Nend", -- Usher
"Atan", -- Wurm following Z'graggen
},
}
m["ngf-yag"] = {
"Yaganon", -- placed in Rai Coast by Glottolog and Pawley-Hammarström
35323986,
"ngf-mad",
aliases = {"Yaganon River"}, -- Usher
}
m["ngf-yal"] = {
"Yali", -- considered a single language by Wikipedia
8047468,
"ngf-ngn",
aliases = {"Ngalik"}, -- Glottolog, Pawley-Hammarström
}
m["ngf-yar"] = {
"Yareban",
16977672,
"ngf", -- not accepted as TNG by Glottolog but accepted by all others
aliases = {"Musa River"},
}
m["ngf-ynu"] = {
"Yau-Nungon",
12953319, -- for the single Yau language in Wikipedia ([[w:Yau language (Trans–New Guinea)]])
"ngf-uru",
}
m["ngf-yup"] = {
"Yupna",
nil,
"ngf-fin",
aliases = {"Yupna River"}, -- Usher?
}
m["nic"] = {
"Niger-Congo",
33838,
aliases = {"Niger-Kordofanian"},
}
m["nic-alu"] = {
"Alumic",
4737355,
"nic-plt",
}
m["nic-bas"] = {
"Basa",
4866154,
"nic-knj",
}
m["nic-bbe"] = {
"Eastern Beboid",
nil,
"nic-beb",
}
m["nic-bco"] = {
"Benue-Congo",
33253,
"nic-vco",
}
m["nic-bcr"] = {
"Bantoid-Cross",
806983,
"nic-bco",
}
m["nic-bdn"] = {
"Northern Bantoid",
nil,
"nic-bod",
aliases = {"North Bantoid"},
}
m["nic-bds"] = {
"Southern Bantoid",
3183152,
"nic-bod",
aliases = {"Wide Bantu", "Bin"},
}
m["nic-beb"] = {
"Beboid",
813549,
"nic-bds",
}
m["nic-ben"] = {
"Bendi",
4887065,
"nic-bcr",
}
m["nic-beo"] = {
"Beromic",
4894642,
"nic-plt",
}
m["nic-bod"] = {
"Bantoid",
806992,
"nic-bcr",
}
m["nic-buk"] = {
"Buli-Koma",
nil,
"nic-ovo",
}
m["nic-bwa"] = {
"Bwa",
12628562,
"nic-gur",
other_names = {"Bwamu", "Bomu"},
}
m["nic-cde"] = {
"Central Delta",
3813191,
"nic-cri",
}
m["nic-cri"] = {
"Cross River",
1141096,
"nic-bcr",
}
m["nic-dag"] = {
"Dagbani",
nil,
"nic-wov",
}
m["nic-dak"] = {
"Dakoid",
1157745,
"nic-bdn",
}
m["nic-dge"] = {
"Escarpment Dogon",
5397128,
"qfa-dgn",
}
m["nic-dgw"] = {
"West Dogon",
nil,
"qfa-dgn",
}
m["nic-eko"] = {
"Ekoid",
1323395,
"nic-bds",
}
m["nic-eov"] = {
"Eastern Oti-Volta",
nil,
"nic-ovo",
aliases = {"Samba"},
}
m["nic-fru"] = {
"Furu",
5509783,
"nic-bds",
}
m["nic-gne"] = {
"Eastern Gurunsi",
12633072,
"nic-gns",
aliases = {"Eastern Grũsi"},
}
m["nic-gnn"] = {
"Northern Gurunsi",
nil,
"nic-gns",
aliases = {"Northern Grũsi"},
}
m["nic-gnw"] = {
"Western Gurunsi",
nil,
"nic-gns",
aliases = {"Western Grũsi"},
}
m["nic-gns"] = {
"Gurunsi",
721007,
"nic-gur",
aliases = {"Grũsi"},
}
m["nic-gre"] = {
"Eastern Grassfields",
5330160,
"nic-grf",
}
m["nic-grf"] = {
"Grassfields",
750932,
"nic-bds",
aliases = {"Grassfields Bantu", "Wide Grassfields"},
}
m["nic-grm"] = {
"Gurma",
30587833,
"nic-ovo",
}
m["nic-grs"] = {
"Southwest Grassfields",
7571285,
"nic-grf",
}
m["nic-gur"] = {
"Gur",
33536,
"alv-sav",
aliases = {"Voltaic"},
}
m["nic-ief"] = {
"Ibibio-Efik",
2743643,
"nic-lcr",
}
m["nic-jer"] = {
"Jera",
nil,
"nic-kne",
}
m["nic-jkn"] = {
"Jukunoid",
1711622,
"nic-pla",
}
m["nic-jrn"] = {
"Jarawan",
1683430,
"nic-mba",
}
m["nic-jrw"] = {
"Jarawa",
35423,
"nic-jrn",
}
m["nic-kam"] = {
"Kambari",
6356294,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
nil,
"nic",
}
m["nic-kau"] = {
"Kauru",
nil,
"nic-kne",
}
m["nic-kmk"] = {
"Kamuku",
6359821,
"nic-knj",
}
m["nic-kne"] = {
"East Kainji",
5328687,
"nic-knj",
}
m["nic-knj"] = {
"Kainji",
681495,
"nic-pla",
}
m["nic-knn"] = {
"Northwest Kainji",
7060098,
"nic-knj",
}
m["nic-ktl"] = {
"Katloid",
6377681,
"nic",
aliases = {"Katla", "Katla-Tima"},
}
m["nic-lcr"] = {
"Lower Cross River",
3813193,
"nic-cri",
}
m["nic-mam"] = {
"Mamfe",
2005898,
"nic-bds",
aliases = {"Nyang"},
}
m["nic-mba"] = {
"Mbam",
687826,
"nic-bds",
}
m["nic-mbc"] = {
"Mba",
6799561,
"nic-ubg",
}
m["nic-mbw"] = {
"West Mbam",
nil,
"nic-mba",
}
m["nic-mmb"] = {
"Mambiloid",
1888151,
other_names = {"North Bantoid"}, -- per Wikipedia, North Bantoid is the parent family
"nic-bdn",
}
m["nic-mom"] = {
"Momo",
6897393,
"nic-grf",
}
m["nic-mre"] = {
"Moré",
nil,
"nic-wov",
}
m["nic-ngd"] = {
"Ngbandi",
36439,
"nic-ubg",
}
m["nic-nge"] = {
"Ngemba",
7022271,
"nic-gre",
}
m["nic-ngk"] = {
"Ngbaka",
3217499,
"nic-ubg",
}
m["nic-nin"] = {
"Ninzic",
7039282,
"nic-plt",
}
m["nic-nka"] = {
"Nkambe",
7042520,
"nic-gre",
}
m["nic-nkb"] = {
"Baka",
nil,
"nic-nkw",
}
m["nic-nke"] = {
"Eastern Ngbaka",
nil,
"nic-ngk",
}
m["nic-nkg"] = {
"Gbanziri",
nil,
"nic-nkw",
}
m["nic-nkk"] = {
"Kpala",
nil,
"nic-nkw",
}
m["nic-nkm"] = {
"Mbaka",
nil,
"nic-nkw",
}
m["nic-nkw"] = {
"Western Ngbaka",
nil,
"nic-ngk",
}
m["nic-npd"] = {
"North Plateau Dogon",
nil,
"qfa-dgn",
}
m["nic-nun"] = {
"Nun",
13654297,
"nic-gre",
}
m["nic-nwa"] = {
"Nanga-Walo",
nil,
"qfa-dgn",
}
m["nic-ogo"] = {
"Ogoni",
2350726,
"nic-cri",
aliases = {"Ogonoid"},
}
m["nic-ovo"] = {
"Oti-Volta",
1157178,
"nic-gur",
}
m["nic-pla"] = {
"Platoid",
453244,
"nic-bco",
aliases = {"Central Nigerian"},
}
m["nic-plc"] = {
"Central Plateau",
5061668,
"nic-plt",
}
m["nic-pld"] = {
"Plains Dogon",
nil,
"qfa-dgn",
}
m["nic-ple"] = {
"East Plateau",
5329154,
"nic-plt",
}
m["nic-pls"] = {
"South Plateau",
7568236,
"nic-plt",
aliases = {"Jilic-Eggonic"},
}
m["nic-plt"] = {
"Plateau",
1267471,
"nic-pla",
}
m["nic-ras"] = {
"Rashad",
3401986,
"nic",
}
m["nic-rnc"] = {
"Central Ring",
nil,
"nic-rng",
}
m["nic-rng"] = {
"Ring",
2269051,
"nic-grf",
aliases = {"Ring Road"},
}
m["nic-rnn"] = {
"Northern Ring",
nil,
"nic-rng",
}
m["nic-rnw"] = {
"Western Ring",
nil,
"nic-rng",
}
m["nic-ser"] = {
"Sere",
7453058,
"nic-ubg",
}
m["nic-shi"] = {
"Shiroro",
7498953,
"nic-knj",
aliases = {"Pongu"},
}
m["nic-sis"] = {
"Sisaala",
36532,
"nic-gnw",
}
m["nic-tar"] = {
"Tarokoid",
2394472,
"nic-plt",
}
m["nic-tiv"] = {
"Tivoid",
752377,
"nic-bds",
}
m["nic-tvc"] = {
"Central Tivoid",
nil,
"nic-tiv",
}
m["nic-tvn"] = {
"Northern Tivoid",
nil,
"nic-tiv",
}
m["nic-ubg"] = {
"Ubangian",
33932,
"nic-vco", -- or none
}
m["nic-uce"] = {
"East-West Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucn"] = {
"North-South Upper Cross River",
nil,
"nic-ucr",
}
m["nic-ucr"] = {
"Upper Cross River",
4108624,
"nic-cri",
aliases = {"Upper Cross"},
}
m["nic-vco"] = {
"Volta-Congo",
37228,
"alv",
}
m["nic-wov"] = {
"Western Oti-Volta",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nic-ykb"] = {
"Yukubenic",
16909196,
"nic-plt",
aliases = {"Oohum"},
}
m["nic-ymb"] = {
"Yambasa",
nil,
"nic-mba",
}
m["nic-yon"] = {
"Yom-Nawdm",
nil,
"nic-ovo",
aliases = {"Moré-Dagbani"}
}
m["nub"] = {
"Nubian",
1517194,
"sdv-nes",
}
m["nub-hil"] = {
"Hill Nubian",
5762211,
"nub",
aliases = {"Kordofan Nubian"},
}
m["omq"] = {
"Oto-Manguean",
33669,
}
m["omq-cha"] = {
"Chatino",
35111,
"omq-zap",
}
m["omq-chi"] = {
"Chinantecan",
35828,
"omq",
}
m["omq-cui"] = {
"Cuicatec",
616024,
"omq-mix",
}
m["omq-maz"] = {
"Mazatecan",
36230,
"omq",
aliases = {"Mazatec"},
}
m["omq-mix"] = {
"Mixtecan",
21083066,
"omq",
}
m["omq-mxt"] = {
"Mixtec",
36363,
"omq-mix",
}
m["omq-otp"] = {
"Oto-Pamean",
1270220,
"omq",
}
m["omq-pop"] = {
"Popolocan",
5132273,
"omq",
}
m["omq-tri"] = {
"Triqui",
780200,
"omq-mix",
aliases = {"Trique"},
}
m["omq-zap"] = {
"Zapotecan",
8066463,
"omq",
}
m["omq-zpc"] = {
"Zapotec",
13214,
"omq-zap",
}
m["omv"] = {
"Omotic",
33860,
"afa",
}
m["omv-aro"] = {
"Aroid",
3699526,
"omv",
aliases = {"Ari-Banna", "South Omotic", "Somotic"},
}
m["omv-diz"] = {
"Dizoid",
430251,
"omv",
aliases = {"Maji", "Majoid"},
}
m["omv-eom"] = {
"East Ometo",
20527288,
"omv-ome",
}
m["omv-gon"] = {
"Gonga",
4143043,
"omv",
aliases = {"Kefoid"},
}
m["omv-mao"] = {
"Mao",
1351495,
"omv",
}
m["omv-nom"] = {
"North Ometo",
nil,
"omv-ome",
}
m["omv-ome"] = {
"Ometo",
36310,
"omv",
}
m["oto"] = {
"Otomian",
130372545,
"omq-otp",
}
m["oto-otm"] = {
"Otomi",
36355,
"oto",
}
m["paa"] = {
"Papuan",
236425,
"qfa-not",
}
m["paa-aia"] = {
"Aian",
4767739, -- Annaberg languages
"paa-ram",
aliases = {"Middle Ramu", -- Foley (with Rao),
"Annaberg", -- with Rao
"Aram-Aren", -- Usher
},
}
m["paa-alp"] = {
"Alor-Pantar",
3502429,
"paa-tap",
}
m["paa-amu"] = {
"Amto-Musan",
480281,
aliases = {"Samaia River"},
}
m["paa-ani"] = {
"Anim",
55603991,
aliases = {"Fly River"},
}
m["paa-ara"] = {
"Arapesh",
4784223,
"paa-koa",
aliases = {"Arapeshan"}, -- Foley
}
m["paa-arf"] = {
"Arafundi",
4783702,
}
m["paa-ata"] = {
"Ataitan",
4812652,
"paa-ram",
aliases = {"Tangu", -- Foley
"Tanggu", -- alternative name given by Wikipedia
"Moam River", -- Usher
},
}
m["paa-baa"] = {
"Bayono-Awbono",
2424781,
}
m["paa-bai"] = {
"Baining",
748487,
aliases = {"East New Britain"},
}
m["paa-baw"] = {
"Bosngun-Awar",
nil,
"paa-ott",
aliases = {"East Ramu Coast", -- Usher
"Bosman-Awar", -- Wikipedia
},
}
m["paa-bew"] = {
"Bewani", -- [[w:Bewani languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
16113460,
"paa-bor",
aliases = {"Poal River"}, -- Usher
}
m["paa-boa"] = {
"Boazi",
48803717,
"paa-mby",
aliases = {"Lake Murray"}, -- Usher
}
m["paa-bor"] = {
"Border",
1752158,
aliases = {"Upper Tami",
"Tami River-Bewani Range", -- Usher
},
}
m["paa-bul"] = {
"Bulaka River",
4987195,
aliases = {"Yelmek-Maklew", "Jabga"}, -- Yelmek-Maklew in Evans (2018) and Gregor (2021)
}
m["paa-bvi"] = {
"Betaf-Vitou", -- Glottolog
nil,
"paa-tor",
aliases = {"Vitou-Betaf", -- Wikipedia
"Fitou-Tena", -- Usher
"Manirem",
},
}
m["paa-clp"] = {
"Central Lakes Plain", -- [[w:Central Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86780132 is for the corresponding category, which exists in enwiki
"paa-lpl",
aliases = {"East Tariku", -- Glottolog
"Central Lakes Plains", -- Usher
},
}
m["paa-dtu"] = {
"Doso-Turumsa",
16917784,
-- possibly related to East Strickland languages
aliases = {"Soari River"}, -- Usher's name
}
m["paa-ebh"] = {
"East Bird's Head",
338064,
aliases = {"Mantion-Meax", "Mantion-Meyah", -- Mantion-Meax is Wikipedia's term
"Southeast Bird's Head", -- Usher (2020)
},
}
m["paa-eel"] = {
"Eastern Eleman",
nil,
"paa-ele",
aliases = {"East Eleman"},
}
m["paa-egb"] = {
"East Geelvink Bay",
1497678,
aliases = {"Geelvink Bay", "East Cenderawasih"}, -- Geelvink Bay per Glottolog
}
m["paa-eke"] = {
"East Keram",
nil,
"paa-ker",
}
m["paa-ele"] = {
"Eleman",
3034298,
aliases = {"Kerema Bay"},
}
m["paa-elp"] = {
"East Lakes Plain", -- [[w:East Lakes Plain languages]] redirects to [[w:Lakes Plain languages]]; but Croatian Wikipedia has an entry
12633078,
"paa-lpl",
aliases = {"East Lakes Plains"}, -- Usher
}
m["paa-epw"] = {
"Eastern Pauwasi",
16115496,
aliases = {"East Pauwasi"},
}
m["paa-etf"] = {
"Eastern Trans-Fly",
5330530,
aliases = {"Oriomo"}, -- in increasing recent use, probably originating in Evans (2018)
}
m["paa-eti"] = {
"East Timor",
15496066,
"paa-tap",
aliases = {"Oirata-Makasae", -- Wikipedia's name
"Eastern Timor", -- alternative name given by Wikipedia
"Fataluku-Makasai", "Oirata-Makasai", -- alternative names given by Wikidata
},
}
m["paa-fas"] = {
"Fas",
3502658,
aliases = {"Baibai-Fas"}, -- Glottolog's name
}
m["paa-flp"] = {
"Far West Lakes Plain", -- [[w:Wapoga River languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q86808337 is for the corresponding Wapoga languages category, which exists in enwiki
"paa-lpl",
aliases = {"Rasawa", -- Clouse (1997)
"Wapoga River", -- Usher, including Kehu/Keuw (unclassified by others)
},
}
m["paa-gkw"] = {
"Greater Kwerba",
12635134,
aliases = {"West Foja Range", -- Usher
"Kwerbic", -- Wikipedia
"Kwerba", -- Foley (2018)
},
}
m["paa-gto"] = {
"Galela-Tobelo",
nil,
"paa-nnh",
aliases = {"Mainland North Halmaheran", -- Glottolog
"Mainland North Halmahera", "Northeast Halmahera", -- alternative names
"Northeast Halmaheran", -- Wikipedia, from Verhoeve 1988
},
}
m["paa-hya"] = {
"Heyo-Yahang",
nil,
"paa-mam",
aliases = {"Yahang-Heyo"}, -- Wikipedia's name
}
m["paa-ing"] = {
"Inland Gulf",
6034783,
"paa-ani",
aliases = {"Inland Gulf of Papua"}, -- Glottolog
}
m["paa-isk"] = {
"Inner Sko",
65043889,
"paa-sko",
aliases = {"Skouic", -- Glottolog
"West Vanimo Coast", -- Usher
"Western Skou", -- Wikipedia
"Inner Skou", "Nuclear Skou", -- alternative names given by Wikipedia
},
}
m["paa-iwa"] = {
"Iwam",
15147853,
"paa-sep",
}
m["paa-kae"] = {
"Kamula-Elevala",
130390498,
-- often placed in TNG
aliases = {"Kamula-Elevala River"},
}
m["paa-kan"] = {
"Kanum", -- removed from Tonda by Glottolog
nil,
"paa-ton",
}
m["paa-kay"] = {
"Kayagaric",
7566330,
aliases = {"Kayagar", -- formerly common
"Cook River"}, -- per Usher (2020)
}
m["paa-ker"] = {
"Keram",
48768173,
-- often grouped within or coordinate with the Ramu languages
aliases = {"Keram River"},
}
m["paa-kiw"] = {
"Kiwaian",
338449,
aliases = {"Kiwai"}, -- formerly common, still sees some use
}
m["paa-kko"] = {
"Kaure-Kosare", -- rejected by Pawley-Hammarström but accepted by Glottolog, Foley (2018) and Usher (2020)
48767891,
aliases = {"Nawa River"}, -- Usher's term
}
m["paa-koa"] = {
"Kombio-Arapesh",
16115049,
"paa-trr",
aliases = {"Kombio-Arapeshan", -- Laycock, who includes Wom
"Kombio-Arapesh-Urat", -- Glottolog, including Urat
},
}
m["paa-kol"] = {
"Kolopom",
6427807,
}
m["paa-kom"] = {
"Kombio",
65044238,
"paa-koa",
aliases = {"Kombian", -- Laycock
"Kombio-Yambes", -- Glottolog
},
}
m["paa-kun"] = {
"Kunimaipan",
134973258,
aliases = {"Northwest Wharton Range"}, -- per Usher (2020)
-- often considered a subfamily of Goilalan
}
m["paa-kwa"] = {
"Kwalean",
6450053,
aliases = {"Humene-Uare"},
}
m["paa-kwe"] = {
"Kwerba proper",
12635134,
"paa-gkw",
aliases = {"Kwerba", -- Usher
"Kwerbaic", -- Glottolog
},
}
m["paa-kwo"] = {
"Kwomtari",
2075415,
aliases = {"Kwomtari-Nai"}, -- Senu River is a larger unproven proposal
}
m["paa-lla"] = {
"Loloda-Laba", -- a single language in Glottolog (Loloda-Laba) and Wikipedia (Loloda)
11732388, -- for the Loloda language
"paa-gto",
aliases = {"Loloda"}, -- Wikipedia's name
}
m["paa-lma"] = {
"Left May",
614468,
aliases = {"Arai River"}, -- per Usher (2020)
-- Sometimes in a putative Arai-Samaia family along with Amto-Musan and the Pyu language
}
m["paa-lmu"] = {
"Lepki-Murkim", -- Kembra accepted by Glottolog and Usher; not by Foley (2020) but does not exclude the possibility
-- of a relationship
85776285,
-- independent family per Glottolog, part of South Pauwasi River family (under Pauwasi) per Usher (2020)
aliases = {"Lepki-Murkim-Kembra"}, -- Glottolog
}
m["paa-lpl"] = {
"Lakes Plain",
6478969,
aliases = {"Lakes Plains"},
}
m["paa-lra"] = {
"Lower Ramu",
65089469,
"paa-ram",
aliases = {"Ottilien-Misegian"}, -- alternative name given by Wikipedia
}
m["paa-lse"] = {
"Lower Sepik",
7061700,
aliases = {"Nor-Pondo"},
}
m["paa-mai"] = {
"Mairasi",
6736896,
aliases = {"Mairasic"}, -- per Glottolog
}
m["paa-mal"] = {
"Mailuan",
6735839,
aliases = {"Cloudy Bay"},
}
m["paa-mam"] = {
"Maimai", -- Foley's Maimai is expanded
53679325, -- this is the code for the expanded Maimai with 6 languages, as opposed to the 3 in "Nuclear Maimai"
"paa-trr",
aliases = {"Nuclear Maimai", -- Glottolog's name
"Maimai proper", -- Wikipedia's name
},
}
m["paa-man"] = {
"Manubaran",
6752335,
aliases = {"Mount Brown"},
}
m["paa-mar"] = {
"Marienberg",
1570589,
"paa-trr",
aliases = {"Marienberg Hills"}, -- Usher
}
m["paa-may"] = {
"Maybratic",
4830892, -- the code for the Maybrat language in Wikipedia, which subsumes the two languages of this family
-- putatively included in West Papuan but generally considered an isolated family
aliases = {"Maybrat-Karon"},
}
m["paa-mbi"] = {
"Mbaham-Iha",
85784512,
"qfa-dis", -- Papuan languages; Glottolog groups Karas (Kalamang) with Mbaham-Iha into a (mainland) West Bomberai
-- family and stops there; Wikipedia, following Usher and Schapper (2022), groups Karas, Mbaham-Iha
-- and the large Timor-Alor-Pantar family into a (Greater) West Bomberai family, saying that Karas is no
-- closer to Mbaham-Iha than to Timor-Alor-Pantar.
aliases = {"Mbahaam-Iha", -- used by Wikidata
"Nuclear West Bomberai", -- Glottolog's name
},
}
m["paa-mby"] = {
"Marind-Boazi-Yaqay",
3217484,
"paa-ani",
aliases = {"Marind-Boazi-Yaqai", -- Glottolog
"Marind-Yakhai", -- Usher, without Boazi
"Marind-Yaqai", -- Wikidata
"Marind", -- alternative name given by Wikipedia
"Marind-Arandai", -- alternative name given by Spanish Wikipedia
},
}
m["paa-mmu"] = {
"Mandi-Muniwara",
nil,
"paa-mar",
aliases = {"West Marienberg Hills"}, -- Usher
}
m["paa-mon"] = {
"Monumbo", -- per Glottolog: "No evidence for the Bogia (Monumbo) languages being related to other Torricelli languages was ever presented"
16928417,
aliases = {"Bogia", -- Glottolog
"Bogia Bay", -- Usher (2020)
},
}
m["paa-mri"] = {
"Marindic", -- [[w:Marindic languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Marind"}, -- Usher; a single language
}
m["paa-nam"] = {
"Nambu",
6961418,
"paa-yam",
aliases = {"East Morehead River"}, -- Usher
}
m["paa-nbo"] = {
"North Bougainville",
749496,
}
m["paa-ndu"] = {
"Ndu",
3217498,
"paa-sep", -- Not accepted by Glottolog
aliases = {"Ndu-Nggala"}, -- Usher
}
m["paa-ngk"] = {
"Ngkolmpu", -- considered a single language by Wikipedia
5908646,
"paa-kan",
aliases = {"Ngkantr", -- Glottolog
"Ngkolmpu Kanum", -- Wikipedia
"Ngkontar", -- alternative name given by Wikipedia
"Kanum", -- used by Wikidata
},
}
m["paa-nha"] = {
"North Halmahera",
3217358,
-- possibly in a proposed West Papuan family or an independent family
}
m["paa-nim"] = {
"Nimboran",
12638426,
aliases = {"Nimboranic", -- per Glottolog
"Grime River", -- per Usher (2020)
}
}
m["paa-nnd"] = {
"Nuclear Ndu",
nil,
"paa-ndu",
aliases = {"Ndu", -- Usher, with Boiken/Boikin
"Ndu proper", -- Wikipedia
},
}
m["paa-nnh"] = {
"Northern North Halmahera",
nil,
"paa-nha",
aliases = {"Northern North Halmaheran", -- Glottolog
"Halmahera", -- Usher
"Core Halmaheran", -- Wikipedia
},
}
m["paa-nto"] = {
"Namla-Tofanma",
16918187,
-- independent family per Glottolog and Foley (2018), part of West Pauwasi family (under Pauwasi) per Usher (2020)
}
m["paa-ott"] = {
"Ottilien",
7109477,
"paa-lra",
aliases = {"Ramu Coast", -- Usher
"Watam-Awar-Gamay", -- alternative name given by Wikipedia
},
}
m["paa-pah"] = {
"Pahoturi River",
17049141,
aliases = {"Pahoturi"}, -- per Glottolog
}
m["paa-pal"] = {
"Palei", -- Laycock adds Agi and Nabi/Nambi(-Metan)
65089113,
"paa-wpa",
aliases = {"Nuclear Palai"},
}
m["paa-pia"] = {
"Piawi", -- per Wikipedia, grouped with Arafundi languages to form Upper Yuat, which is a sister to Madang
7190400,
aliases = {"Schraeder Range", -- Usher?
"Waibuk"},
}
m["paa-pio"] = {
"Piore River",
65043152,
"paa-sko",
aliases = {"Barupu Lagoon", -- Glottolog
"Lagoon", -- alternative name given by Wikipedia
},
}
m["paa-por"] = {
"Porapora", -- Foley includes Ambakich (which we, Glottolog, and Usher treat as Keram)
65044258,
"paa-ram",
aliases = {"Agoan", -- Glottolog
"Porapora River", -- Usher
"core Grass", -- alternative name given by Wikipedia
},
}
m["paa-ram"] = {
"Ramu",
3442808,
aliases = {"Ramu River"}, -- per Usher (2020)
}
m["paa-rsa"] = {
"Rasawa-Saponi", -- [[w:Rasawa-Saponi languages]] redirects to [[w:Lakes Plain languages]]
nil, -- Q9859418 is for the coresponding category, which exists in the Piedmontese Wikipedia (?!)
"paa-flp",
aliases = {"Rombak River"}, -- Usher
}
m["paa-rub"] = {
"Ruboni",
6875319,
"paa-lra",
aliases = {"Misegian", -- Wikipedia's name
"Mikarew", -- alternative name given by Wikipedia
"Ruboni Range"}, -- Usher
}
m["paa-saa"] = {
"Samarokena-Airoran",
96417699,
"paa-gkw",
aliases = {"Apauwar Coast"}, -- Usher
}
m["paa-sah"] = {
"Sahu",
nil,
"paa-nnh",
}
m["paa-sbo"] = {
"South Bougainville",
3217380,
}
m["paa-sen"] = {
"Sentani",
17044584,
-- no consensus on higher affiliations, if any
aliases = {"Sentanic", "Demta-Sentani", "Demta-Lake Sentani"}, -- Sentanic per Glottolog, Demta-Sentani per Wikipedia
}
m["paa-sep"] = {
"Sepik",
3508772,
}
m["paa-shi"] = {
"Serra Hills",
65043154,
"paa-sko",
}
m["paa-sko"] = {
"Sko",
953509,
aliases = {"Skou"},
}
m["paa-sng"] = {
"Senagi",
2066550,
}
m["paa-taa"] = {
"Taikat-Awyi", -- [[w:Taikat languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12643265,
"paa-bor",
aliases = {"Taikat", -- Foley
"Upper Tami River", -- Usher
},
}
m["paa-tam"] = {
"Tamolan",
7681634,
"paa-ram",
aliases = {"Guam River"}, -- Usher
}
m["paa-tap"] = {
"Timor-Alor-Pantar",
16590002,
}
m["paa-teb"] = {
"Teberan",
7692052,
-- Often grouped with Trans-New Guinea, but per Pawley-Hammarström (2018), it has "weaker or disputed claims to membership in TNG".
aliases = {"Dadibi-Folopa"},
}
m["paa-tir"] = {
"Tirio",
7809225,
"paa-ani",
aliases = {"Nuclear Lower Fly", -- Pawley-Hammarström ("Lower Fly" includes Abom)
"Nuclear Tirio", -- Glottolog ("Tirio" includes Abom)
"Lower Fly River", -- Usher (without Abom)
},
}
m["paa-tki"] = {
"Turama-Kikori",
7853680,
aliases = {"Turama-Kikorian", "Rumu-Omati River"},
}
m["paa-ton"] = {
"Tonda",
8581005,
"paa-yam",
aliases = {"West Morehead River"}, -- Usher
}
m["paa-too"] = {
"Tor-Orya",
16590099,
aliases = {"Orya-Tor"},
}
m["paa-tor"] = {
"Tor", -- [[w:Tor languages]] redirects to [[w:Orya–Tor languages]]
nil,
"paa-too",
}
m["paa-trr"] = {
"Torricelli",
1333831,
}
m["paa-tti"] = {
"Ternate-Tidore",
nil,
"paa-nnh",
}
m["paa-wal"] = {
"Walio",
16919872,
-- Often placed in Sepik (e.g. by Laycock and Z'graggen (1975)), but not by Foley (2018), and not accepted by Glottolog.
aliases = {"Walioic", -- Glottolog
"Central Leonhard Schultze River",
},
}
m["paa-wap"] = {
"Wapei", -- Glottolog includes Nabi/Nambi(-Metan) in Wapeic
65089115,
"paa-wpa",
aliases = {"Wapeic"}, -- Glottolog
}
m["paa-war"] = {
"Waris", -- [[w:Waris languages]] redirects to [[w:Border languages (New Guinea)]]; but Croatian Wikipedia has an entry
12645076,
"paa-bor",
aliases = {"Warisic", -- Glottolog
"Bapi River", -- Usher (without Manem or Senggi)
},
}
m["paa-wbh"] = {
"West Bird's Head",
5330530,
-- Kuwani is sometimes included; probably related to North Halmahera languages.
}
m["paa-wel"] = {
"Western Eleman",
nil,
"paa-ele",
aliases = {"West Eleman"},
}
m["paa-wig"] = {
"West Inland Gulf",
nil,
"paa-ing",
aliases = {"West Inland Gulf of Papua"}, -- Glottolog
}
m["paa-wke"] = {
"West Keram",
nil,
"paa-ker",
aliases = {"Koam", "Mongol-Langam", "Ulmapo"}, -- Koam used by Foley, Ulmapo used by Glottolog
}
m["paa-wko"] = {
"Wára-Kómnzo", -- since we split out Kómnzo as a separate language
11732474, -- for the Wara language
"paa-ton",
aliases = {"Anta-Komnzo-Wára-Wérè-Kémä", -- Glottolog's name
"Wára", "Wara", -- Wikipedia
},
}
m["paa-wlp"] = {
"West Lakes Plain", -- [[w:Tariku languages]] redirects to [[w:Lakes Plain languages]]
47007503, -- actually for "Tariku languages", which per Wikipedia covers Fayu, Kirikiri, Iau and Tause
"paa-lpl",
aliases = {"West Tariku", -- Glottolog
"West Lakes Plains"}, -- Usher, with Edopi/Iau
}
m["paa-wpa"] = {
"Wapei-Palei",
65043156,
"paa-trr",
}
m["paa-wpw"] = { -- paa-wpa already used by Wapei-Palei
"Western Pauwasi", -- 2 langs per Glottolog and Pawley-Hammarström; Usher also includes Namla-Tofanma and Usku
85815062,
aliases = {"West Pauwasi", -- Wikipedia, Usher
"Tebi-Towe", "Dubu-Towei"},
}
m["paa-yam"] = {
"Yam",
15062272,
aliases = {"Morehead and Upper Maro River",
"Morehead River", -- Usher
},
}
m["paa-yaq"] = {
"Yaqayic", -- [[w:Yaqai languages]] redirects to [[w:Marind–Yaqai languages]]
nil,
"paa-mby",
aliases = {"Yakhai-Warkay"}, -- Usher
}
m["paa-ysa"] = {
"Yawa-Saweru",
3217545,
aliases = {"Yawa", "Yawan", "Yapen"},
}
m["paa-yua"] = {
"Yuat",
8060096,
}
m["phi"] = {
"Philippine",
947858,
"poz",
}
m["phi-kal"] = {
"Kalamian",
3217466,
"phi",
aliases = {"Calamian"},
}
m["poz"] = {
"Malayo-Polynesian",
143158,
"map",
}
m["poz-aay"] = {
"Admiralty Islands",
2701306,
"poz-oce",
}
m["poz-bnn"] = {
"North Bornean",
1427907,
"poz",
}
m["poz-bre"] = {
"East Barito",
2701314,
"poz",
}
m["poz-brw"] = {
"West Barito",
2761679,
"poz",
}
m["poz-bss"] = {
"Bali-Sasak-Sumbawa",
3396043,
"poz-msa",
}
m["poz-btk"] = {
"Bungku-Tolaki",
3217381,
"poz-clb",
}
m["poz-cet"] = {
"Central-Eastern Malayo-Polynesian",
2269883,
"poz",
}
m["poz-clb"] = {
"Celebic",
1078041,
"poz",
}
m["poz-cln"] = {
"New Caledonian",
3091221,
"poz-ocs",
}
m["poz-cma"] = {
"Central Maluku",
3217479,
"poz-cet",
}
m["poz-hce"] = {
"Halmahera-Cenderawasih",
2526616,
"pqe",
}
m["poz-kal"] = {
"Kaili-Pamona",
3217465,
"poz-clb",
}
m["poz-lgx"] = {
"Lampungic",
49215,
"poz",
}
m["poz-mcm"] = {
"Malayo-Chamic",
nil,
"poz-msa",
}
m["poz-mic"] = {
"Micronesian",
420591,
"poz-occ",
}
m["poz-mly"] = {
"Malayic",
662628,
"poz-mcm",
}
m["poz-msa"] = {
"Malayo-Sumbawan",
1363818,
"poz",
}
m["poz-mun"] = {
"Muna-Buton",
3037924,
"poz-clb",
}
m["poz-nws"] = {
"Northwest Sumatran",
2071308,
"poz",
}
m["poz-occ"] = {
"Central-Eastern Oceanic",
2068435,
"poz-oce",
}
m["poz-oce"] = {
"Oceanic",
324457,
"pqe",
}
m["poz-ocs"] = {
"Southern Oceanic",
3039118,
"poz-occ",
}
m["poz-ocw"] = {
"Western Oceanic",
2701282,
"poz-oce",
}
m["poz-pcc"] = {
"Central Pacific",
3130237,
"poz-occ",
}
m["poz-pep"] = {
"Eastern Polynesian",
390979,
"poz-pnp",
}
m["poz-pnp"] = {
"Nuclear Polynesian",
743851,
"poz-pol",
}
m["poz-pol"] = {
"Polynesian",
390979,
"poz-pcc",
}
m["poz-san"] = {
"Sabahan",
3217517,
"poz-bnn",
}
m["poz-sbj"] = {
"Sama-Bajaw",
2160409,
"poz",
}
m["poz-slb"] = {
"Saluan-Banggai",
3217519,
"poz-clb",
}
m["poz-sls"] = {
"Southeast Solomonic",
3119671,
"poz-occ",
}
m["poz-ssw"] = {
"South Sulawesi",
2778190,
"poz",
}
m["poz-stm"] = {
"St. Matthias",
6484143,
"poz-oce",
aliases = {"St Matthias"},
}
m["poz-swa"] = {
"North Sarawakan",
538569,
"poz-bnn",
}
m["poz-tem"] = {
"Temotu",
3075769,
"poz-oce",
}
m["poz-tim"] = {
"Timoric",
7806987,
"poz-cet",
}
m["poz-ton"] = {
"Tongic",
3397263,
"poz-pol",
}
m["poz-tot"] = {
"Tomini-Tolitoli",
3217541,
"poz-clb",
}
m["poz-vnc"] = {
"Central Vanuatu",
5061988,
"poz-ocs",
}
m["poz-vnn"] = {
"North Vanuatu",
85789650,
"poz-ocs",
}
m["poz-vns"] = {
"South Vanuatu",
3070173,
"poz-ocs",
}
m["poz-wot"] = {
"Wotu-Wolio",
1041317,
"poz-clb",
aliases = {"Island Kaili-Wolio"}, -- Glottolog
}
m["pqe"] = {
"Eastern Malayo-Polynesian",
2269883,
"poz-cet",
}
m["qfa-adc"] = {
"Central Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-adm"] = {
"Great Andamanese",
3515103,
}
m["qfa-adn"] = {
"Northern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ads"] = {
"Southern Great Andamanese",
nil,
"qfa-adm",
}
m["qfa-ain"] = {
"Ainuic",
50111972,
aliases = {"Ainu"},
}
m["qfa-bej"] = {
"Be-Jizhao",
nil,
"qfa-bet",
}
m["qfa-bet"] = {
"Be-Tai",
12627719,
"qfa-tak",
aliases = {"Tai-Be", "Daic-Beic", "Beic-Daic"},
}
m["qfa-buy"] = {
"Buyang",
1109927,
"qfa-kra",
}
m["qfa-cka"] = {
"Chukotko-Kamchatkan",
33255,
}
m["qfa-cre"] = {
"creole",
33289,
"crp",
}
m["qfa-ckn"] = {
"Chukotkan",
2606732,
"qfa-cka",
}
m["qfa-cnt"] = {
"contact",
133253514,
"qfa-not",
}
m["qfa-dis"] = {
-- Languages that are not unclassifiable (qfa-unc) but where there is no consensus on classification. Usually
-- this is because the languages are divergent and it's disputed whether they are isolates or distantly related
-- to other languages.
"disputed affiliation",
nil,
"qfa-not",
categoryName = "Languages of disputed affiliation",
}
m["qfa-dgn"] = {
"Dogon",
1234776,
"nic",
}
m["qfa-dny"] = {
"Dene-Yeniseian",
21103,
aliases = {"Dené-Yeniseian"},
}
m["qfa-hur"] = {
"Hurro-Urartian",
1144159,
}
m["qfa-iso"] = {
"isolate",
33648,
"qfa-not",
categoryName = "Language isolates",
}
m["qfa-kad"] = {
"Kadu", -- considered either Nilo-Saharan or independent/none
1720989,
}
m["qfa-kms"] = {
"Kam-Sui",
1023641,
"qfa-tak",
}
m["qfa-kor"] = {
"කොරියානු",
11263525,
}
m["qfa-kra"] = {
"Kra",
1022087,
"qfa-tak",
}
m["qfa-lic"] = {
"Hlai",
1023648,
"qfa-tak",
aliases = {"Hlaic"},
}
m["qfa-mch"] = { -- used in both N and S America
"Macro-Chibchan",
3438062,
}
m["qfa-mix"] = {
"mixed",
33694,
"qfa-cnt",
}
m["qfa-not"] = {
"not a family",
nil,
"qfa-not",
}
m["qfa-onb"] = {
"Be",
nil,
"qfa-bej",
aliases = {"Ong-Be", "Beic"},
}
m["qfa-ong"] = {
"Ongan",
2090575,
aliases = {"Angan", "South Andamanese", "Jarawa-Onge"},
}
m["qfa-pid"] = {
"pidgin",
33831,
"crp",
}
m["qfa-sub"] = {
"substrate",
20730913,
"qfa-not",
}
m["qfa-tak"] = {
"Kra-Dai",
34171,
aliases = {"Tai-Kadai", "Kadai"},
}
m["qfa-tyn"] = {
"Tyrsenian",
1344038,
}
m["qfa-unc"] = {
-- This corresponds to languages normally called "unclassified", i.e. there is insufficient data or research to
-- classify them, whereas our [[:Category:Unclassified languages]] is just languages that no Wiktionary editor
-- has classified yet (the family code in the language data is missing).
"unclassifiable",
33956,
"qfa-not",
}
m["qfa-xgs"] = {
"Serbi-Mongolic",
108887939,
}
m["qfa-xgx"] = {
"Para-Mongolic",
107619002,
"qfa-xgs",
}
m["qfa-yen"] = {
"Yeniseian",
27639,
"qfa-dny",
aliases = {"Yeniseic", "Yenisei-Ostyak"},
}
m["qfa-yke"] = {
"Ketic",
nil,
"qfa-yen",
}
m["qfa-yko"] = {
"Kottic",
nil,
"qfa-yen",
}
m["qfa-yrn"] = {
"Arinic",
nil,
"qfa-yen",
}
m["qfa-ypm"] = {
"Pumpokolic",
nil,
"qfa-yen",
}
m["qfa-yuk"] = {
"Yukaghir",
34164,
aliases = {"Yukagir", "Jukagir"},
}
m["qwe"] = {
"Quechuan",
5218,
}
m["raj"] = {
"Rajasthani",
13196,
"inc-wes",
protoLanguage = "inc-ogu",
}
m["roa"] = {
"Romance",
19814,
"itc",
aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"},
protoLanguage = "la",
}
m["roa-asl"] = {
"Asturleonese",
35390,
"roa-ibe",
protoLanguage = "roa-ole",
}
m["roa-cas"] = {
"Castilian",
71924,
"roa-ibe",
aliases = {"Castillian", "Castilic", "Castillic"},
protoLanguage = "osp",
}
m["roa-dal"] = {
"Dalmatian Romance",
97646077,
"roa-itd",
}
m["roa-eas"] = {
"Eastern Romance",
147576,
"roa",
}
m["roa-emr"] = {
"Emilian-Romagnol",
242648,
"roa-git",
}
m["roa-gap"] = {
"Galician-Portuguese",
9080204,
"roa-ibe",
aliases = {"Galician Romance", "Galaic-Portuguese"},
protoLanguage = "roa-opt",
}
m["roa-gar"] = {
"Gallo-Romance",
500394,
"roa-wes",
}
m["roa-itd"] = {
"Italo-Dalmatian",
3313381,
"roa-iwr",
aliases = {"Central Romance"}
}
m["roa-itr"] = {
"Italo-Romance",
3356483,
"roa-itd",
}
m["roa-iwr"] = {
"Italo-Western Romance",
112608,
"roa",
aliases = {"Italo-Western"},
}
m["roa-git"] = {
"Gallo-Italic",
516074,
"roa-gar",
aliases = {"Gallo-Italian", "Gallo-Cisalpine", "Cisalpine"},
}
m["roa-grh"] = {
"Gallo-Rhaetian",
97646466,
"roa-gar",
}
m["roa-ibe"] = {
"Ibero-Romance",
749533,
"roa-wes",
aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"}
}
m["roa-nar"] = {
"Navarro-Aragonese",
133252927,
"roa-ibe",
protoLanguage = "roa-ona",
}
m["roa-oil"] = {
"Oïl",
37351,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
protoLanguage = "fro",
}
m["roa-ocr"] = {
"Occitano-Romance",
599958,
"roa-gar",
aliases = {"Gallo-Narbonnese", "East Iberian", "Eastern Iberian"},
}
m["roa-rhe"] = {
"Rhaeto-Romance",
515593,
"roa-grh",
aliases = {"langues d'oïl", "langue d'oïl", "Cisalpine"},
}
m["roa-sou"] = {
"Southern Romance",
145345,
"roa",
}
m["roa-wes"] = {
"Western Romance",
2714388,
"roa-iwr",
}
--[=[
Exceptional language and family codes for South American Indian languages
can use the prefix "sai-", though "sai" is no longer itself a family code.
]=]--
m["sai-ara"] = {
"Araucanian",
626630,
}
m["sai-aym"] = {
"Aymaran",
33010,
}
m["sai-bar"] = {
"Barbacoan",
807304,
aliases = {"Barbakoan"},
}
m["sai-bor"] = {
"Boran",
5371776,
}
m["sai-cah"] = {
"Cahuapanan",
1025793,
}
m["sai-car"] = {
"Cariban",
33090,
aliases = {"Carib"},
}
m["sai-cer"] = {
"Cerrado",
98078151,
"sai-jee",
aliases = {"Amazonian Jê"},
}
m["sai-chc"] = {
"Chocoan",
1075616,
aliases = {"Choco", "Chocó"},
}
m["sai-cho"] = {
"Chonan",
33019,
aliases = {"Chon"},
}
m["sai-cje"] = {
"Central Jê",
18010843,
"sai-cer",
aliases = {"Akuwẽ"},
}
m["sai-cpc"] = {
"Chapacuran",
1062626,
}
m["sai-crn"] = {
"Charruan",
3112423,
aliases = {"Charrúan"},
}
m["sai-ctc"] = {
"Catacaoan",
5051139,
}
m["sai-guc"] = {
"Guaicuruan",
1974973,
"sai-mgc",
aliases = {"Guaicurú", "Guaycuruana", "Guaikurú", "Guaycuruano", "Guaykuruan", "Waikurúan"},
}
m["sai-guh"] = {
"Guahiban",
944056,
aliases = {"Guahiboan", "Guajiboan", "Wahivoan"},
}
m["sai-gui"] = {
"Guianan",
nil,
"sai-car",
aliases = {"Guianan Carib", "Guiana Carib"},
}
m["sai-har"] = {
"Harákmbut",
1584402,
"sai-hkt",
aliases = {"Harákmbet"},
}
m["sai-hkt"] = {
"Harákmbut-Katukinan",
17107635,
}
m["sai-hrp"] = {
"Huarpean",
1578336,
aliases = {"Warpean", "Huarpe", "Warpe"},
}
m["sai-jee"] = {
"Jê",
1483594,
"sai-mje",
aliases = {"Gê", "Jean", "Gean", "Jê-Kaingang", "Ye"},
}
m["sai-jir"] = {
"Jirajaran",
3028651,
aliases = {"Hiraháran"},
}
m["sai-jiv"] = {
"Jivaroan",
1393074,
aliases = {"Hívaro", "Jibaro", "Jibaroan", "Jibaroana", "Jívaro"},
}
m["sai-ktk"] = {
"Katukinan",
2636000,
"sai-hkt",
aliases = {"Catuquinan"},
}
m["sai-kui"] = {
"Kuikuroan",
nil,
"sai-car",
aliases = {"Kuikuro", "Nahukwa"},
}
m["sai-map"] = {
"Mapoyan",
61096301,
"sai-ven",
aliases = {"Mapoyo", "Mapoyo-Yabarana", "Mapoyo-Yavarana", "Mapoyo-Yawarana"},
}
m["sai-mas"] = {
"Mascoian",
1906952,
aliases = {"Mascoyan", "Maskoian", "Enlhet-Enenlhet"},
}
m["sai-mgc"] = {
"Mataco-Guaicuru",
255512,
}
m["sai-mje"] = {
"Macro-Jê",
887133,
aliases = {"Macro-Gê"},
}
m["sai-mtc"] = {
"Matacoan",
2447424,
"sai-mgc",
}
m["sai-mur"] = {
"Muran",
33826,
aliases = {"Mura"},
}
m["sai-nad"] = {
"Nadahup",
1856439,
aliases = {"Makú", "Macú", "Vaupés-Japurá"},
}
m["sai-nje"] = {
"Northern Jê",
98078225,
"sai-cer",
aliases = {"Core Jê"},
}
m["sai-nmk"] = {
"Nambikwaran",
15548027,
aliases = {"Nambicuaran", "Nambiquaran", "Nambikuaran"},
}
m["sai-otm"] = {
"Otomacoan",
3217503,
aliases = {"Otomákoan", "Otomakoan"},
}
m["sai-pan"] = {
"Panoan",
1544537,
"sai-pat",
aliases = {"Pano"},
}
m["sai-pat"] = {
"Pano-Tacanan",
2475746,
aliases = {"Pano-Tacana", "Pano-Takana", "Páno-Takána", "Pano-Takánan"},
}
m["sai-pek"] = {
"Pekodian",
107451736,
"sai-car",
aliases = {"South Amazonian Carib", "Southern Cariban", "Pekodi"},
}
m["sai-pem"] = {
"Pemongan",
nil,
"sai-ven",
aliases = {"Pemong", "Pemóng", "Purukoto"},
}
m["sai-pey"] = {
"Peba-Yaguan",
174015,
aliases = {"Peba-Yagua", "Yaguan", "Peban", "Yáwan"},
}
m["sai-prk"] = {
"Parukotoan",
107451482,
"sai-car",
aliases = {"Parukoto"},
}
m["sai-sje"] = {
"Southern Jê",
98078245,
"sai-jee",
}
m["sai-tac"] = {
"Tacanan",
3113762,
"sai-pat",
}
m["sai-tar"] = {
"Taranoan",
105097814,
"sai-gui",
aliases = {"Trio", "Tarano"},
}
m["sai-tuc"] = {
"Tucanoan",
788144,
}
m["sai-tyu"] = {
"Ticuna-Yuri",
4467010,
}
m["sai-ucp"] = {
"Uru-Chipaya",
2475488,
aliases = {"Uru-Chipayan"},
}
m["sai-ven"] = {
"Venezuelan Cariban",
nil,
"sai-car",
aliases = {"Venezuelan Carib", "Venezuelan", "Venezuelano"},
}
m["sai-wic"] = {
"Wichí",
3027047,
}
m["sai-wit"] = {
"Witotoan",
43079317,
aliases = {"Huitotoan", "Uitotoan"},
}
m["sai-ynm"] = {
"Yanomami",
nil,
aliases = {"Yanomam", "Shamatari", "Yamomami", "Yanomaman"},
}
m["sai-yuk"] = {
"Yukpan",
nil,
"sai-car",
aliases = {"Yukpa", "Yukpano", "Yukpa-Japreria"},
}
m["sai-zam"] = {
"Zamucoan",
3048461,
aliases = {"Samúkoan"},
}
m["sai-zap"] = {
"Zaparoan",
33911,
aliases = {"Záparoan", "Saparoan", "Sáparoan", "Záparo", "Zaparoano", "Zaparoana"},
}
m["sal"] = {
"Salish",
33985,
}
m["sdv"] = {
"Eastern Sudanic",
2036148,
"ssa",
}
m["sdv-bri"] = {
"Bari",
nil,
"sdv-nie",
}
m["sdv-daj"] = {
"Daju",
956724,
"sdv",
}
m["sdv-dnu"] = {
"Dinka-Nuer",
nil,
"sdv-niw",
}
m["sdv-eje"] = {
"Eastern Jebel",
3408878,
"sdv",
}
m["sdv-kln"] = {
"Kalenjin",
637228,
"sdv-nis",
}
m["sdv-lma"] = {
"Lotuko-Maa",
nil,
"sdv-nie",
}
m["sdv-lon"] = {
"Northern Luo",
nil,
"sdv-luo",
}
m["sdv-los"] = {
"Southern Luo",
7570103,
"sdv-luo",
}
m["sdv-luo"] = {
"Luo",
nil,
"sdv-niw",
}
m["sdv-nes"] = {
"Northern Eastern Sudanic",
4810496,
"sdv",
aliases = {"Astaboran", "Ek Sudanic"},
}
m["sdv-nie"] = {
"Eastern Nilotic",
153795,
"sdv-nil",
}
m["sdv-nil"] = {
"Nilotic",
513408,
"sdv",
}
m["sdv-nis"] = {
"Southern Nilotic",
1552410,
"sdv-nil",
}
m["sdv-niw"] = {
"Western Nilotic",
3114989,
"sdv-nil",
}
m["sdv-nma"] = {
"Nandi-Markweta",
nil,
"sdv-kln",
}
m["sdv-nyi"] = {
"Nyima",
11688746,
"sdv-nes",
aliases = {"Nyimang"},
}
m["sdv-tmn"] = {
"Taman",
3408873,
"sdv-nes",
aliases = {"Tamaic"},
}
m["sdv-ttu"] = {
"Teso-Turkana",
7705551,
"sdv-nie",
aliases = {"Ateker"},
}
m["sel"] = {
"Selkup",
34008,
"syd",
}
m["sem"] = {
"Semitic",
34049,
"afa",
}
m["sem-ara"] = {
"Aramaic",
28602,
"sem-nwe",
protoLanguage = "arc",
}
m["sem-arb"] = {
"අරාබි",
164667,
"sem-cen",
protoLanguage = "ar",
}
m["sem-are"] = {
"Eastern Aramaic",
3410322,
"sem-ara",
}
m["sem-arw"] = {
"Western Aramaic",
3394214,
"sem-ara",
}
m["sem-ase"] = {
"Southeastern Aramaic",
3410322,
"sem-are",
}
m["sem-can"] = {
"Canaanite",
747547,
"sem-nwe",
}
m["sem-cen"] = {
"Central Semitic",
3433228,
"sem-wes",
}
m["sem-cna"] = {
"Central Neo-Aramaic",
3410322,
"sem-are",
}
m["sem-eas"] = {
"East Semitic",
164273,
"sem",
}
m["sem-eth"] = {
"Ethiopian Semitic",
163629,
"sem-wes",
aliases = {"Afro-Semitic", "Ethiopian", "Ethiopic", "Ethiosemitic"},
}
m["sem-nna"] = {
"Northeastern Neo-Aramaic",
2560578,
"sem-are",
}
m["sem-nwe"] = {
"Northwest Semitic",
162996,
"sem-cen",
}
m["sem-osa"] = {
"Old South Arabian",
35025,
"sem-cen",
aliases = {"Epigraphic South Arabian", "Sayhadic"},
}
m["sem-sar"] = {
"Modern South Arabian",
1981908,
"sem-wes",
}
m["sem-wes"] = {
"West Semitic",
124901,
"sem",
}
m["sgn"] = {
"sign",
34228,
"qfa-not",
}
m["sgn-fsl"] = {
"French Sign Languages",
5501921,
"sgn",
}
m["sgn-gsl"] = {
"German Sign Languages",
5551235,
"sgn",
}
m["sgn-jsl"] = {
"Japanese Sign Languages",
11722508,
"sgn",
}
m["sio"] = {
"Siouan",
34181,
"nai-sca",
}
m["sio-dhe"] = {
"Dhegihan",
3217420,
"sio-msv",
}
m["sio-dkt"] = {
"Dakotan",
4154122,
"sio-msv",
}
m["sio-mor"] = {
"Missouri River Siouan",
26807266,
"sio",
}
m["sio-msv"] = {
"Mississippi Valley Siouan",
12637104,
"sio",
}
m["sio-ohv"] = {
"Ohio Valley Siouan",
21070931,
"sio",
}
m["sit"] = {
"Sino-Tibetan",
45961,
aliases = {"Trans-Himalayan"},
}
m["sit-aao"] = {
"Central Naga",
615474,
"sit",
}
m["sit-alm"] = {
"Almora",
nil,
"sit-whm",
}
m["sit-bai"] = {
"Bai",
35103,
"sit-mba",
}
m["sit-bdi"] = {
"Bodish",
1814078,
"sit",
}
m["sit-cln"] = {
"Cai-Long",
107182612,
"sit-mba",
aliases = {"Ta-Li"},
}
m["sit-dhi"] = {
"Dhimalish",
1207648,
"sit",
}
m["sit-ebo"] = {
"East Bodish",
56402,
"sit-bdi",
}
m["sit-egy"] = {
"East rGyalrongic",
832026,
"sit-rgy",
}
m["sit-ers"] = {
"Ersuic",
56335,
"sit",
}
m["sit-gma"] = {
"Greater Magaric",
55612963,
"sit",
}
m["sit-gsi"] = {
"Greater Siangic",
52698851,
"sit",
}
m["sit-hrs"] = {
"Hrusish",
1632501,
"sit",
aliases = {"Southeast Kamengic"},
}
m["sit-jnp"] = {
"Jingphoic",
nil,
"sit-jpl",
aliases = {"Jingpho"},
}
m["sit-jpl"] = {
"Kachin-Luic",
1515454,
"tbq-bkj",
aliases = {"Jingpho-Luish", "Jingpho-Asakian", "Kachinic"},
}
m["sit-kch"] = {
"Konyak-Chang",
nil,
"sit-kon",
}
m["sit-kha"] = {
"Kham",
33305,
"sit-gma",
}
m["sit-khb"] = {
"Kho-Bwa",
6401917,
"sit",
aliases = {"Bugunish", "Kamengic"},
}
m["sit-khw"] = {
"Western Kho-Bwa",
nil,
"sit-khb",
}
m["sit-khc"] = {
"Chug-Lish",
nil,
"sit-khw",
aliases = {"Duhumbi-Khispi"},
}
m["sit-khm"] = {
"Mey-Sartang",
nil,
"sit-khw",
aliases = {"Sartang-Sherdukpen"},
}
m["sit-kic"] = {
"Central Kiranti",
nil,
"sit-kir",
}
m["sit-kie"] = {
"Eastern Kiranti",
nil,
"sit-kir",
}
m["sit-kin"] = {
"Kinnauric",
nil,
"sit-whm",
aliases = {"Kinnauri"},
}
m["sit-kir"] = {
"Kiranti",
922148,
"sit",
}
m["sit-kiw"] = {
"Western Kiranti",
922148,
"sit-kir",
}
m["sit-kon"] = {
"Northern Naga",
774590,
"tbq-bkj",
aliases = {"Konyakian", "Konyak"},
}
m["sit-kyk"] = {
"Kyirong-Kagate",
6450957,
"sit-tib",
}
m["sit-lab"] = {
"Ladakhi-Balti",
6450957,
"sit-tib",
}
m["sit-las"] = {
"Lahuli-Spiti",
6473510,
"sit-tib",
}
m["sit-luu"] = {
"Luish",
55621439,
"sit-jpl",
aliases = {"Asakian", "Sak"},
}
m["sit-mar"] = {
"Maringic",
nil,
"sit-tma",
}
m["sit-mba"] = {
"Macro-Bai",
16963847,
"sit-sba",
aliases = {"Greater Bai"},
}
m["sit-mdz"] = {
"Midzu",
6843504,
"sit",
aliases = {"Geman", "Midzuish", "Miju-Meyor", "Southern Mishmi"},
}
m["sit-mnz"] = {
"Mondzish",
6898839,
"tbq-lob",
aliases = {"Mangish"},
}
m["sit-mru"] = {
"Mruic",
16908870,
"sit",
aliases = {"Mru-Hkongso"},
}
m["sit-nas"] = {
"Naish",
25047956,
"sit-nax",
}
m["sit-nax"] = {
"Naic",
6982999,
"tbq-buq",
aliases = {"Naxish"},
}
m["sit-nba"] = {
"Northern Bai",
122463830,
"sit-bai",
}
m["sit-new"] = {
"Newaric",
55625069,
"sit",
}
m["sit-nng"] = {
"Nungish",
1515482,
"sit",
aliases = {"Nung"},
}
m["sit-qia"] = {
"Qiangic",
1636765,
"tbq-buq",
}
m["sit-rgy"] = {
"Rgyalrongic",
56936,
"sit-qia",
aliases = {"Jiarongic"},
}
m["sit-sba"] = {
"Sino-Bai",
nil,
"sit",
aliases = {"Greater Bai"},
}
m["sit-tam"] = {
"Tamangic",
3309439,
"sit",
aliases = {"West Bodish"},
}
m["sit-tan"] = {
"Tani",
3217538,
"sit",
}
m["sit-tib"] = {
"Tibetic",
1641150,
"sit-bdi",
protoLanguage = "otb",
}
m["sit-tja"] = {
"Tujia",
nil,
"sit",
}
m["sit-tma"] = {
"Tangkhul-Maring",
nil,
"sit",
}
m["sit-tng"] = {
"Tangkhulic",
1516657,
"sit-tma",
aliases = {"Tangkhul"},
}
m["sit-tno"] = {
"Tangsa-Nocte",
nil,
"sit-kon",
}
m["sit-tsk"] = {
"Tshangla",
nil,
"sit",
}
m["sit-wgy"] = {
"West rGyalrongic",
nil,
"sit-rgy"
}
m["sit-whm"] = {
"West Himalayish",
2301695,
"sit",
}
m["sit-zem"] = {
"Zeme",
189291,
"sit",
aliases = {"Zeliangrong", "Zemeic"},
}
m["sla"] = {
"Slavic",
23526,
"ine-bsl",
aliases = {"Slavonic"},
}
m["smi"] = {
"Sami",
56463,
"urj",
aliases = {"Saami", "Samic", "Saamic"},
}
m["son"] = {
"Songhay",
505198,
"ssa",
aliases = {"Songhai"},
}
m["sqj"] = {
"Albanian",
8748,
"ine",
}
m["ssa"] = {
"Nilo-Saharan", -- possibly not a genetic grouping
33705,
}
m["ssa-fur"] = {
"Fur",
2989512,
"ssa",
}
m["ssa-klk"] = {
"Kuliak",
1791476,
"ssa",
aliases = {"Rub"},
}
m["ssa-kom"] = {
"Koman",
1781084,
"ssa",
}
m["ssa-sah"] = {
"Saharan",
1757661,
"ssa",
}
m["syd"] = {
"Samoyedic",
34005,
"urj",
aliases = {"Samoyed", "Samodeic"},
}
m["syd-ene"] = {
"Enets",
29942,
"syd",
}
m["tai"] = {
"Tai",
749720,
"qfa-bet",
aliases = {"Daic"},
}
m["tai-wen"] = {
"Wenma-Southwestern Tai",
nil,
"tai",
}
m["tai-tay"] = {
"Tày",
nil,
"tai-wen",
}
m["tai-sap"] = {
"Sapa-Southwestern Tai",
nil,
"tai-wen",
aliases = {"Sapa-Thai"},
}
m["tai-swe"] = {
"Southwestern Tai",
10889250,
"tai-sap",
}
m["tai-cho"] = {
"Chongzuo Tai",
13216,
"tai",
}
m["tai-cen"] = {
"Central Tai",
5061891,
"tai",
}
m["tai-nor"] = {
"Northern Tai",
7059014,
"tai",
}
m["tbq"] = {
"Tibeto-Burman",
34064,
"sit",
}
m["tbq-anp"] = {
"Angami-Pochuri",
530460,
"sit",
}
m["tbq-axi"] = {
"Axioid",
nil,
"tbq-sel",
}
m["tbq-bdg"] = {
"Bodo-Garo",
4090000,
"tbq-bkj",
}
m["tbq-bis"] = {
"Bisoid",
48844742,
"tbq-slo",
}
m["tbq-bka"] = {
"Bi-Ka",
12627890,
"tbq-slo",
}
m["tbq-bkj"] = {
"Sal",
889900,
"sit",
-- Brahmaputran appears to be Glottolog's term
aliases = {"Bodo-Konyak-Jinghpaw", "Brahmaputran", "Jingpho-Konyak-Bodo"},
}
m["tbq-brm"] = {
"Burmish",
865713,
"tbq-lob",
}
m["tbq-buq"] = {
"Burmo-Qiangic",
16056278,
"sit",
aliases = {"Eastern Tibeto-Burman"},
}
m["tbq-drp"] = {
"Downriver Phula",
7188378,
"tbq-rph",
}
m["tbq-han"] = {
"Hanoid",
17004185,
"tbq-slo",
}
m["tbq-hph"] = {
"Highland Phula",
nil,
"tbq-sel",
}
m["tbq-jin"] = {
"Jino",
6202716,
"tbq-slo",
}
m["tbq-kzh"] = {
"Kazhuoish",
48834669,
"tbq-lol",
}
m["tbq-kuk"] = {
"Kuki-Chin",
832413,
"sit",
aliases = {"Kukish", "South-Central Tibeto-Burman"},
}
m["tbq-lal"] = {
"Lalo",
56548,
"tbq-lso",
}
m["tbq-lho"] = {
"Lahoish",
nil,
"tbq-lol",
}
m["tbq-llo"] = {
"Lipo-Lolopo",
nil,
"tbq-lso",
}
m["tbq-lob"] = {
"Lolo-Burmese",
1635712,
"tbq-buq",
}
m["tbq-lol"] = {
"Loloish",
37035,
"tbq-lob",
aliases = {"Yi", "Ngwi", "Nisoic"},
}
m["tbq-lso"] = {
"Lisoish",
6559055,
"tbq-lol",
}
m["tbq-lwo"] = {
"Lawoish",
48847673,
"tbq-lol",
}
m["tbq-muj"] = {
"Muji",
11221327,
"tbq-hph",
}
m["tbq-nas"] = {
"Nasoid",
nil,
"tbq-nlo",
}
m["tbq-nis"] = {
"Nisu",
56404,
"tbq-nlo",
}
m["tbq-nlo"] = {
"Northern Loloish",
7058676,
"tbq-nso",
}
m["tbq-nso"] = {
"Nisoish",
56990,
"tbq-lol",
}
m["tbq-nus"] = {
"Nusoish",
114245231,
"tbq-lol",
}
m["tbq-phw"] = {
"Phowa",
7187959,
"tbq-hph",
}
m["tbq-rph"] = {
"Riverine Phula",
nil,
"tbq-sel",
}
m["tbq-sel"] = {
"Southeastern Loloish",
16111894,
"tbq-nso",
}
m["tbq-sil"] = {
"Siloid",
60787071,
"tbq-slo",
}
m["tbq-slo"] = {
"Southern Loloish",
5649340,
"tbq-lol",
}
m["tbq-tal"] = {
"Taloid",
48804018,
"tbq-lso",
}
m["tbq-urp"] = {
"Upriver Phula",
7187058,
"tbq-rph",
}
m["trk"] = {
"Turkic",
34090,
}
m["trk-cmn"] = {
"Common Turkic",
1126028,
"trk",
aliases = {"Shaz Turkic", "Shaz-Turkic"},
}
m["trk-kar"] = {
"Karluk",
703173,
"trk-cmn",
aliases = {"Qarluq", "Uyghur-Uzbek", "Southeastern Turkic"},
}
m["trk-kbu"] = {
"Kipchak-Bulgar",
3512539,
"trk-kip",
aliases = {"Uralian", "Uralo-Caspian"},
}
m["trk-kcu"] = {
"Kipchak-Cuman",
4370412,
"trk-kip",
aliases = {"Ponto-Caspian"},
}
m["trk-kip"] = {
"Kipchak",
1339898,
"trk-cmn",
-- Russian Wikipedia article [[w:ru:Западнотюркские_языки]] says "Western Turkic" is used by N.A. Baskakov and includes Oghuz, Kipchak and Karluk.
-- Azerbaijani Wikipedia article [[w:az:Qərbi_türk_dilləri]] clarifies that "Western Turkic" is not a clade.
other_names = {"Western Turkic"},
aliases = {"Kypchak", "Qypchaq", "Northwestern Turkic"},
protoLanguage = "qwm",
}
m["trk-kkp"] = {
"Kyrgyz-Kipchak",
4221189,
"trk-kip",
}
m["trk-kno"] = {
"Kipchak-Nogai",
4326954,
"trk-kip",
aliases = {"Aralo-Caspian"},
}
m["trk-nsb"] = {
"North Siberian Turkic",
4537269,
"trk-sib",
aliases = {"Northern Siberian Turkic"},
}
m["trk-ogr"] = {
"Oghur",
1422731,
"trk",
aliases = {"Lir-Turkic", "r-Turkic"},
}
m["trk-ogz"] = {
"Oghuz",
494600,
"trk-cmn",
aliases = {"Southwestern Turkic"},
}
m["trk-sib"] = {
"Siberian Turkic",
354353,
"trk-cmn",
other_names = {"Northern Turkic"},
-- per [[w:ru:Восточнотюркские_языки]], "Eastern Turkic" is an alias for Siberian Turkic in the work of O.A. Mudrak,
-- but has a different non-clade meaning in the older work of N.A. Baskakov.
aliases = {"Eastern Turkic", "Northeastern Turkic"},
}
m["trk-ssb"] = {
"South Siberian Turkic",
nil,
"trk-sib",
aliases = {"Southern Siberian Turkic"},
}
m["tup"] = {
"Tupian",
34070,
aliases = {"Tupi"},
}
m["tup-gua"] = {
"Tupi-Guarani",
148610,
"tup",
aliases = {"Tupí-Guaraní"},
}
m["tuw"] = {
"Tungusic",
34230,
aliases = {"Manchu-Tungus", "Tungus"},
}
m["tuw-ewe"] = {
"Ewenic",
105889448,
"tuw",
aliases = {"Northern Tungusic"},
}
m["tuw-jrc"] = {
"Jurchenic",
105889432,
"tuw",
aliases = {"Manchuric"},
}
m["tuw-nan"] = {
"Nanaic",
105889264,
"tuw",
}
m["tuw-udg"] = {
"Udegheic",
105889266,
"tuw",
}
m["urj"] = {
"Uralic",
34113,
varieties = {"Finno-Ugric"},
}
m["urj-fin"] = {
"Finnic",
33328,
"urj",
aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"},
}
m["urj-mdv"] = {
"Mordvinic",
627313,
"urj",
}
m["urj-prm"] = {
"Permic",
161493,
"urj",
}
m["urj-ugr"] = {
"Ugric",
156631,
"urj",
}
m["wak"] = {
"Wakashan",
60069,
}
m["wen"] = {
"Sorbian",
25442,
"zlw",
aliases = {"Lusatian", "Wendish"},
}
m["xgn"] = {
"Mongolic",
33750,
"qfa-xgs",
aliases = {"Mongolian"},
}
m["xgn-cen"] = {
"Central Mongolic",
28719447,
"xgn",
protoLanguage = "xng-lat",
}
m["xgn-sou"] = {
"Southern Mongolic",
nil,
"xgn",
protoLanguage = "xng-ear",
}
m["xgn-shr"] = {
"Shirongolic",
107539435,
"xgn-sou",
}
m["xme"] = {
"Median",
nil,
"ira-mpr",
protoLanguage = "xme-old",
}
m["xme-ttc"] = {
"Tatic",
nil,
"xme",
}
m["xnd"] = {
"Na-Dene",
26986,
"qfa-dny",
aliases = {"Na-Dené"},
}
m["xsc"] = {
"Scythian",
nil,
"ira-nei",
}
m["xsc-sak"] = {
"Saka",
nil,
"xsc-skw",
aliases = {"Sakan"},
}
m["xsc-sar"] = {
"Sarmatian",
nil,
"xsc",
}
m["xsc-skw"] = {
"Saka-Wakhi",
nil,
"xsc",
}
m["yok"] = {
"Yokuts",
34249,
"nai-you",
aliases = {"Yokutsan", "Mariposan", "Mariposa"},
}
m["ypk"] = {
"Yupik",
27970,
"esx-esk",
aliases = {"Yup'ik", "Yuit"},
}
m["yrk"] = {
"Nenets",
36452,
"syd",
}
m["zhx"] = {
"Sinitic",
33857,
"sit-sba",
aliases = {"Chinese"},
protoLanguage = "och",
}
m["zhx-com"] = {
"Coastal Min",
20667215,
"zhx-min",
}
m["zhx-inm"] = {
"Inland Min",
20667237,
"zhx-min",
}
m["zhx-man"] = {
"Mandarinic",
nil,
"zhx",
protoLanguage = "cmn-ear",
}
m["zhx-min"] = {
"Min",
56504,
"zhx",
}
m["zhx-nan"] = {
"Southern Min",
36495,
"zhx-com",
}
m["zhx-pin"] = {
"Pinghua",
2735715,
"zhx",
protoLanguage = "ltc",
}
m["zhx-yue"] = {
"Yue",
7033959,
"zhx",
protoLanguage = "ltc",
}
m["zle"] = {
"East Slavic",
144713,
"sla",
}
m["zls"] = {
"South Slavic",
146665,
"sla",
}
m["zlw"] = {
"West Slavic",
145852,
"sla",
}
m["zlw-lch"] = {
"Lechitic",
742782,
"zlw",
aliases = {"Lekhitic"},
}
m["zlw-pom"] = {
"Pomeranian",
nil,
"zlw-lch",
}
m["znd"] = {
"Zande",
8066072,
"nic-ubg",
}
return require("Module:languages").finalizeData(m, "family")
0kinbijkuc3w43tbx0xffnl5hfd9xjk
Module:category tree/lemmas
828
9487
233650
233546
2026-05-09T03:51:49Z
Lee
19
නිත්ය බහු වචන
233650
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
local diminutive_augmentative_poses = {
"නාම විශේෂණ පද",
"ක්රියා විශේෂණ පද",
"විශ්මයාර්ථ පද",
"නාම පද",
"සංඛ්යාංක",
"උපසර්ග",
"සංඥා නාම පද",
"සර්වනාම",
"ප්රත්ය",
"ක්රියා පද"
}
labels["පාඨ"] = {
description = "{{{langname}}} [[Wiktionary:Lemmas|ලෙමා]], ඒවායේ part of speech අනුව වර්ගීකරණය කළ.",
umbrella_parents = "මූලධර්ම",
parents = {{name = "{{{langcat}}}", raw = true, sort = " "}},
}
labels["නිත්ය බහු වචන"] = {
description = "{{{langname}}} නිත්ය බහු වචන.",
parents = {"පාඨ"},
}
labels["තනි වචන"] = {
description = "{{{langname}}} තනි වචන, වඩා දිග ප්රකාශයක් කෙටි කොට දක්වන.",
parents = {"පාඨ"},
}
labels["abstract verbs"] = {
description = "{{{langname}}} abstract verbs of motion whose motion is multidirectional (as opposed to unidirectional) or indirect, or whose action is repeated or in a series, instead of being a single, completed action. Abstract verbs are always imperfective in aspect, even with prefixes that are normally associated with the perfective aspect.",
additional = "See also [[abstract verb]].",
parents = {"ක්රියා පද"},
}
labels["action nouns"] = {
description = "{{{langname}}} nouns denoting action of a verb or verbal root that it is derived from.",
parents = {"නාම පද"},
}
labels["act-related adverbs"] = {
description = "{{{langname}}} adverbs that indicate the motive or other background information for an action.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["active verbs"] = {
description = "{{{langname}}} verbs that indicate an activity",
parents = {"ක්රියා පද"},
}
labels["active-only verbs"] = {
description = "{{{langname}}} verbs that can only be used with the {{w|active voice}}.",
parents = {"ක්රියා පද"},
}
labels["adjective concords"] = {
description = "{{{langname}}} concords that are prefixed to adjective stems.",
parents = {"concords"},
}
labels["නාම විශේෂණ පද"] = {
description = "{{{langname}}} terms that give attributes to nouns, extending their definitions.",
parents = {"පාඨ"},
}
labels["adverbial accusatives"] = {
description = "Accusative case-forms in {{{langname}}} used as adverbs.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["ක්රියා විශේෂණ පද"] = {
description = "{{{langname}}} terms that modify clauses, sentences and phrases directly.",
parents = {"පාඨ"},
}
labels["affixes"] = {
description = "Morphemes attached to existing {{{langname}}} words.",
parents = {"පදාණු"},
}
labels["agent nouns"] = {
description = "{{{langname}}} nouns that denote an agent that performs the action denoted by the verb from which the noun is derived.",
parents = {"නාම පද"},
}
labels["ambipositions"] = {
description = "{{{langname}}} adpositions that can occur either before or after their objects.",
parents = {"පාඨ"},
}
labels["ambitransitive verbs"] = {
description = "{{{langname}}} verbs that may or may not direct actions, occurrences or states to grammatical objects.",
parents = {"ක්රියා පද", "සකර්මක ක්රියා පද", "අකර්මක ක්රියා පද"},
}
labels["animal commands"] = {
description = "{{{langname}}} words used to communicate with animals.",
parents = {"විශ්මයාර්ථ පද"},
}
labels["articles"] = {
description = "{{{langname}}} terms that indicate and specify nouns.",
parents = {"determiners"},
}
labels["aspect adverbs"] = {
description = "{{{langname}}} adverbs that express [[w:Grammatical aspect|grammatical aspect]], describing the flow of time in relation to a statement.",
parents = {"ක්රියා විශේෂණ පද"},
}
for _, pos in ipairs(diminutive_augmentative_poses) do
labels["augmentative " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey big size or big intensity.",
parents = {pos},
}
end
labels["attenuative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event is performed or takes place gently, lightly, partially, perfunctorily or to an otherwise reduced extent.",
parents = {"ක්රියා පද"},
}
labels["autobenefactive verbs"] = {
description = "{{{langname}}} verbs that indicate that the agent of an action is also its benefactor.",
parents = {"ක්රියා පද"},
}
labels["automative verbs"] = {
description = "{{{langname}}} verbs that indicate actions directed at or a change of state of the grammatical subject.",
parents = {"ක්රියා පද"},
}
labels["auxiliary verbs"] = {
description = "{{{langname}}} verbs that provide additional conjugations for other verbs.",
parents = {"ක්රියා පද"},
}
labels["biaspectual verbs"] = {
description = "{{{langname}}} verbs that can be both imperfective and perfective.",
parents = {"ක්රියා පද"},
}
labels["causative verbs"] = {
description = "{{{langname}}} verbs that express causing actions or states rather than performing or being them directly. Use this only for separate verbs (as opposed to causative forms that are part of the inflection of verbs).",
parents = {"ක්රියා පද"},
}
labels["circumfixes"] = {
description = "Affixes attached to both the beginning and the end of {{{langname}}} words, functioning together as single units.",
parents = {"පදාණු"},
}
labels["circumpositions"] = {
description = "{{{langname}}} adpositions that appear on both sides of their objects.",
parents = {"පාඨ"},
}
labels["classifiers"] = {
description = "{{{langname}}} terms that classify nouns according to their meanings.",
parents = {"පාඨ"},
}
labels["clitics"] = {
description = "{{{langname}}} morphemes that function as independent words, but are always attached to another word.",
parents = {"පදාණු"},
}
for _, pos in ipairs { "නාම පද", "ප්රත්ය" } do
labels["සමූහවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that indicate groups of related things or beings, without the need of grammatical pluralization.",
parents = {pos},
}
end
labels["combining forms"] = {
description = "Forms of {{{langname}}} words that do not occur independently, but are used when joined with other words.",
parents = {"පදාණු"},
}
labels["සැසඳිය හැකි නාම විශේෂණ පද"] = {
description = "{{{langname}}} adjectives that can be inflected to display different degrees of comparison.",
parents = {"නාම විශේෂණ පද"},
}
labels["comparable adverbs"] = {
description = "{{{langname}}} adverbs that can be inflected to display different degrees of comparison.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["comparative-only adjectives"] = {
description = "{{{langname}}} adjectives that are only used in their comparative forms.",
parents = {"නාම විශේෂණ පද"},
}
labels["completive verbs"] = {
description = "{{{langname}}} verbs which refer to the completion of an action which has already commenced or which has already been performed upon a subset of the entities which it affects.",
parents = {"ක්රියා පද"},
}
labels["concords"] = {
description = "{{{langname}}} prefixes attached to words to show agreement with a noun or pronoun.",
parents = {"උපසර්ග"},
}
labels["concrete verbs"] = {
description = "{{{langname}}} concrete verbs refer to a verbal aspect in verbs of motion that is unidirectional (as opposed to multidirectional), a definitely directed motion, or a single, completed action (instead of a repeated action or series of actions). Concrete verbs may be either imperfective or perfective.",
additional = "See also [[concrete verb]].",
parents = {"ක්රියා පද"},
}
labels["conjunctions"] = {
description = "{{{langname}}} terms that connect words, phrases or clauses together.",
parents = {"පාඨ"},
}
labels["conjunctive adverbs"] = {
description = "{{{langname}}} adverbs that connect two independent clauses together.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["continuative verbs"] = {
description = "{{{langname}}} verbs that express continuing action.",
parents = {"ක්රියා පද"},
}
labels["control verbs"] = {
description = "{{{langname}}} verbs that take multiple arguments, one of which is another verb. One of the control verb's arguments is syntactically both an argument of the control verb and an argument of the other verb.",
parents = {"ක්රියා පද"},
}
labels["cooperative verbs"] = {
description = "{{{langname}}} verbs that indicate cooperation",
parents = {"ක්රියා පද"},
}
labels["coordinating conjunctions"] = {
description = "{{{langname}}} conjunctions that indicate equal syntactic importance between connected items.",
parents = {"conjunctions"},
}
labels["copulative verbs"] = {
description = "{{{langname}}} verbs that may take adjectives as their complement.",
parents = {"ක්රියා පද"},
}
for _, pos in ipairs { "නාම පද", "සංඥා නාම පද" } do
labels["ගැණිය හැකි " .. pos] = {
description = "{{{langname}}} " .. pos .. " that can be quantified directly by numerals.",
parents = {pos},
}
end
labels["countable numerals"] = {
description = "{{{langname}}} numerals that can be quantified directly by other numerals.",
parents = {"සංඛ්යාංක"},
}
labels["countable suffixes"] = {
description = "{{{langname}}} suffixes that can be used to form nouns that can be quantified directly by numerals.",
parents = {"සංඛ්යාංක"},
}
labels["counters"] = {
description = "{{{langname}}} terms that combine with numerals to express quantity of nouns.",
parents = {"පාඨ"},
}
labels["cumulative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event gradually yields a certain or significant quantity or effect.",
parents = {"ක්රියා පද"},
}
labels["degree adverbs"] = {
description = "{{{langname}}} adverbs that express a particular degree to which the word they modify applies.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["delimitative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event is performed or takes place briefly or to an otherwise reduced extent.",
parents = {"ක්රියා පද"},
}
labels["demonstrative adjectives"] = {
description = "{{{langname}}} adjectives that refer to nouns, comparing them to external references.",
parents = {"නාම විශේෂණ පද", {name = "demonstrative pro-forms", sort = "නාම විශේෂණ පද"}},
}
labels["demonstrative adverbs"] = {
description = "{{{langname}}} adverbs that refer to other adverbs, comparing them to external references.",
parents = {"ක්රියා විශේෂණ පද", {name = "demonstrative pro-forms", sort = "ක්රියා විශේෂණ පද"}},
}
labels["denominal verbs"] = { -- in [[Appendix:Glossary]]; "denominative" more frequent?
description = "{{{langname}}} verbs that derive from nouns.",
parents = { "ක්රියා පද" },
}
labels["demonstrative determiners"] = {
description = "{{{langname}}} determiners that refer to nouns, comparing them to external references.",
parents = {"determiners", {name = "demonstrative pro-forms", sort = "determiners"}},
}
labels["demonstrative pronouns"] = {
description = "{{{langname}}} pronouns that refer to nouns, comparing them to external references.",
parents = {"සර්වනාම", {name = "demonstrative pro-forms", sort = "සර්වනාම"}},
}
labels["deponent verbs"] = {
description = "{{{langname}}} verbs that can only be used with the {{w|active voice}}, but which conjugate as though they were being used with a difference voice.",
parents = {"active-only verbs", "ක්රියා පද"},
}
labels["derivational prefixes"] = {
description = "{{{langname}}} prefixes that are used to create new words.",
parents = {"උපසර්ග"},
}
labels["ව්යුත්පන්නක ප්රත්ය"] = {
description = "{{{langname}}} suffixes that are used to create new words.",
parents = {"ප්රත්ය"},
}
labels["derivative verbs"] = {
description = "{{{langname}}} verbs that are derived from nouns and adjectives.",
parents = {"ක්රියා පද"},
}
labels["desiderative verbs"] = {
description = "{{{langname}}} verbs with the following morphology: verbal root xxx + [[desiderative]] affix, and the following semantics: to wish to do the action xxx.",
parents = {"ක්රියා පද"},
}
labels["determinatives"] = {
description = "{{{langname}}} terms that indicate the general class to which the following logogram belongs.",
parents = {"පාඨ"},
}
labels["determiners"] = {
description = "{{{langname}}} terms that narrow down, within the conversational context, the referent of the following noun.",
parents = {"පාඨ"},
}
labels["diminutiva tantum"] = {
description = "{{{langname}}} nouns or noun senses that are mostly or exclusively used in the diminutive form.",
parents = {"නාම පද"},
}
for _, pos in ipairs(diminutive_augmentative_poses) do
labels["අල්පාර්ථ " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey endearment, small size or small intensity.",
parents = {pos},
}
end
labels["discourse particles"] = {
description = "{{{langname}}} particles that manage the flow and structure of discourse.",
parents = {"නිපාත පද"},
}
labels["distributive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event involves multiple participants or a large quantity of an uncountable mass, usually as the grammatical subject in the case of intransitive verbs and as the grammatical object in the case of transitive verbs.",
parents = {"ක්රියා පද"},
}
labels["ditransitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states of two grammatical objects simultaneously, one direct and one indirect.",
parents = {"ක්රියා පද", "සකර්මක ක්රියා පද"},
}
labels["dualia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the dual form.",
parents = {"නාම පද"},
}
labels["පැවැතුම් කාල ක්රියා විශේෂණ පද"] = {
description = "{{{langname}}} adverbs that express duration in time, such as (in English) [[always]], [[all night]] and [[ever since]].",
parents = {"වේලා ක්රියා විශේෂණ පද"},
}
labels["ergative verbs"] = {
description = "{{{langname}}} [[Appendix:Glossary#ergative|ergative verb]]s: intransitive verbs that become causatives when used transitively.",
parents = {"ක්රියා පද", "අකර්මක ක්රියා පද", "සකර්මක ක්රියා පද"},
}
labels["excessive verbs"] = {
description = "{{{langname}}} verbs that indicate that an action is performed to an excessive extent.",
parents = {"ක්රියා පද"},
}
labels["enclitics"] = {
description = "{{{langname}}} clitics that attach to the preceding word.",
parents = {"clitics"},
}
labels["nouns with other-gender equivalents"] = {
description = "{{{langname}}} nouns that refer to gendered concepts (e.g. [[actor]] vs. [[actress]], [[king]] vs. [[queen]]) and have corresponding other-gender equivalent terms.",
parents = {"නාම පද"},
}
labels["female equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to female beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["neuter equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to neuter beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["female equivalent suffixes"] = {
description = "{{{langname}}} suffixes that refer to female beings with the same characteristics as the base suffix.",
parents = {"noun-forming suffixes"},
}
labels["focus adverbs"] = {
description = "{{{langname}}} adverbs that indicate [[w:Focus (linguistics)|focus]] within the sentence.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["සංඛ්යාත ක්රියා විශේෂණ පද"] = {
description = "{{{langname}}} adverbs that express repetition with a certain frequency or interval, such as (in English) [[monthly]], [[continually]] and [[once in a while]].",
parents = {"වේලා ක්රියා විශේෂණ පද"},
}
labels["frequentative verbs"] = {
description = "{{{langname}}} verbs that express repeated action.",
parents = {"ක්රියා පද"},
}
labels["general pronouns"] = {
description = "{{{langname}}} pronouns that refer to all persons, things, abstract ideas and their characteristics.",
parents = {"සර්වනාම"},
}
labels["generational moieties"] = {
description = "{{{langname}}} moieties that alternate every generation.",
parents = {"moieties"},
}
labels["ideophones"] = {
description = "{{{langname}}} terms that evoke an idea, especially a sensation or impression, with a sound.",
parents = {"පාඨ"},
}
labels["imperfective verbs"] = {
description = "{{{langname}}} verbs that express actions considered as ongoing or continuous, as opposed to completed events.",
parents = {"ක්රියා පද"},
}
labels["impersonal verbs"] = {
description = "{{{langname}}} verbs that do not indicate actions, occurrences or states of any specific grammatical subject.",
parents = {"ක්රියා පද"},
}
labels["inchoative verbs"] = {
description = "{{{langname}}} verbs that indicate the beginning of an action or event.",
parents = {"ක්රියා පද"},
}
labels["indefinite adjectives"] = {
description = "{{{langname}}} adjectives that refer to unspecified adjective meanings.",
parents = {"නාම විශේෂණ පද", {name = "indefinite pro-forms", sort = "නාම විශේෂණ පද"}},
}
labels["indefinite adverbs"] = {
description = "{{{langname}}} adverbs that refer to unspecified adverbial meanings.",
parents = {"ක්රියා විශේෂණ පද", {name = "indefinite pro-forms", sort = "ක්රියා විශේෂණ පද"}},
}
labels["indefinite determiners"] = {
description = "{{{langname}}} determiners that designate an unidentified noun.",
parents = {"determiners", {name = "indefinite pro-forms", sort = "determiners"}},
}
labels["indefinite pronouns"] = {
description = "{{{langname}}} pronouns that refer to unspecified nouns.",
parents = {"සර්වනාම", {name = "indefinite pro-forms", sort = "සර්වනාම"}},
}
labels["infixes"] = {
description = "Affixes inserted inside {{{langname}}} words.",
parents = {"පදාණු"},
}
labels["inflectional prefixes"] = {
description = "{{{langname}}} prefixes that are used as inflectional beginnings in noun, adjective or verb paradigms.",
parents = {"උපසර්ග"},
}
labels["inflectional suffixes"] = {
description = "{{{langname}}} suffixes that are used as inflectional endings in noun, adjective or verb paradigms.",
parents = {"ප්රත්ය"},
}
labels["intensive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed vigorously, enthusiastically, forcefully or to an otherwise enlarged extent.",
parents = {"ක්රියා පද"},
}
labels["interfixes"] = {
description = "Affixes used to join two {{{langname}}} words or morphemes together.",
parents = {"පදාණු"},
}
labels["විශ්මයාර්ථ පද"] = {
description = "{{{langname}}} terms that express emotions, sounds, etc. as exclamations.",
parents = {"පාඨ"},
}
labels["interrogative adjectives"] = {
description = "{{{langname}}} adjectives that indicate questions.",
parents = {"නාම විශේෂණ පද", {name = "interrogative pro-forms", sort = "නාම විශේෂණ පද"}},
}
labels["interrogative adverbs"] = {
description = "{{{langname}}} adverbs that indicate questions.",
parents = {"ක්රියා විශේෂණ පද", {name = "interrogative pro-forms", sort = "ක්රියා විශේෂණ පද"}},
}
labels["interrogative determiners"] = {
description = "{{{langname}}} determiners that indicate questions.",
parents = {"determiners", {name = "interrogative pro-forms", sort = "determiners"}},
}
labels["interrogative particles"] = {
description = "{{{langname}}} particles that indicate questions.",
parents = {"නිපාත පද", {name = "interrogative pro-forms", sort = "නිපාත පද"}},
}
labels["interrogative pronouns"] = {
description = "{{{langname}}} pronouns that indicate questions.",
parents = {"සර්වනාම", {name = "interrogative pro-forms", sort = "සර්වනාම"}},
}
labels["අකර්මක ක්රියා පද"] = {
description = "{{{langname}}} verbs that don't require any grammatical objects.",
parents = {"ක්රියා පද"},
}
labels["iterative verbs"] = {
description = "{{{langname}}} verbs that express the repetition of an event.",
parents = {"ක්රියා පද"},
}
labels["location adverbs"] = {
description = "{{{langname}}} adverbs that indicate location.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["male equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to male beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["manner adverbs"] = {
description = "{{{langname}}} adverbs that indicate the manner, way or style in which an action is performed.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["middle verbs"] = {
description = "{{{langname}}} verbs that are used in {{w|middle voice}}.",
parents = {"verbs"},
}
labels["modal adverbs"] = {
description = "{{{langname}}} adverbs that express [[w:Linguistic modality|linguistic modality]], indicating the mood or attitude of the speaker with respect to what is being said.",
parents = {"sentence adverbs"},
}
labels["modal particles"] = {
description = "{{{langname}}} particles that reflect the mood or attitude of the speaker, without changing the basic meaning of the sentence.",
parents = {"නිපාත පද"},
}
labels["modal verbs"] = {
description = "{{{langname}}} verbs that indicate [[grammatical mood]].",
parents = {"auxiliary verbs"},
}
labels["moieties"] = {
description = "{{{langname}}} pairs of abstract categories separating people and the environment.",
parents = {"පාඨ"},
}
labels["momentane verbs"] = {
description = "{{{langname}}} verbs that express a sudden and brief action.",
parents = {"ක්රියා පද"},
}
labels["පදාණු"] = {
description = "{{{langname}}} word-elements used to form full words.",
parents = {"පාඨ"},
}
labels["බහු පද යෙදුම්"] = {
description = "{{{langname}}} lemmas that are a combination of multiple words, including [[WT:CFI#Idiomaticity|idiomatic]] combinations.",
parents = {"පාඨ"},
}
labels["negative verbs"] = {
description = "{{{langname}}} verbs that indicate the lack of an action.",
parents = {"ක්රියා පද"},
}
labels["negative particles"] = {
description = "{{{langname}}} particles that indicate negation.",
parents = {"නිපාත පද"},
}
labels["negative pronouns"] = {
description = "{{{langname}}} pronouns that refer to negative or non-existent references.",
parents = {"සර්වනාම"},
}
labels["neutral verbs"] = {
description = "{{{langname}}} verbs that indicate either or both an activity or a result of an activity",
parents = {"ක්රියා පද"},
}
labels["nominalized adjectives"] = {
description = "{{{langname}}} adjectives that are used as nouns.",
parents = {"නාම පද", "නාම විශේෂණ පද"},
}
labels["non-constituents"] = {
description = "{{{langname}}} terms that are not grammatical [[constituent#Noun|constituents]], and therefore need to be combined with additional terms to form a complete phrase.",
parents = {"වාක්ය ඛණ්ඩ"},
}
labels["noun prefixes"] = {
description = "{{{langname}}} prefixes attached to a noun that display its noun class.",
parents = {"උපසර්ග"},
}
labels["නාම පද"] = {
description = "{{{langname}}} terms that indicate people, beings, things, places, phenomena, qualities or ideas.",
parents = {"පාඨ"},
}
labels["nouns by classifier"] = {
description = "{{{langname}}} nouns organized by the classifier they are used with.",
parents = {{name = "නාම පද", sort = "classifier"}},
}
labels["සංඛ්යාංක"] = {
description = "{{{langname}}} terms that quantify nouns.",
parents = {"පාඨ"},
}
labels["object concords"] = {
description = "{{{langname}}} concords used to show the grammatical object.",
parents = {"concords"},
}
labels["object pronouns"] = {
description = "{{{langname}}} pronouns that refer to grammatical objects.",
parents = {"සර්වනාම"},
}
labels["නිපාත පද"] = {
description = "{{{langname}}} terms that do not belong to any of the inflected grammatical word classes, often lacking their own grammatical functions and forming other parts of speech or expressing the relationship between clauses.",
parents = {"පාඨ"},
}
labels["passive verbs"] = {
description = "{{{langname}}} verbs that are usually used in the {{w|passive voice}}.",
parents = {"ක්රියා පද"},
}
labels["perfective verbs"] = {
description = "{{{langname}}} verbs that express actions considered as completed events, as opposed to ongoing or continuous.",
parents = {"ක්රියා පද"},
}
labels["personal pronouns"] = {
description = "{{{langname}}} pronouns that are used as substitutes for known nouns.",
parents = {"සර්වනාම"},
}
labels["phrasal verbs"] = {
description = "{{{langname}}} verbs accompanied by particles, such as prepositions and adverbs.",
parents = {"ක්රියා පද", "වාක්ය ඛණ්ඩ"},
}
labels["phrasal prepositions"] = {
description = "{{{langname}}} prepositions formed with combinations of other terms.",
parents = {"prepositions", "වාක්ය ඛණ්ඩ"},
}
labels["pluralia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the plural form.",
parents = {"නාම පද"},
}
labels["පොයින්ට්-ඉන්-ටයිම් ක්රියා විශේෂණ පද"] = {
description = "{{{langname}}} adverbs that reference a specific point in time, e.g. {{m|en|yesterday}}, {{m+|es|anoche||last night}} or {{m+|hu|egykor||at one o'clock}}.",
parents = {"වේලා ක්රියා විශේෂණ පද"},
}
labels["possessable nouns"] = {
description = "{{{langname}}} nouns can have their possession indicated directly by possessive pronouns.",
parents = {"නාම පද"},
umbrella = {
description = "Categories with nouns that can have their possession indicated directly by possessive pronouns and, in some languages, be transformed into adjectives.",
parents = {"භාෂාව අනුව ලෙමා උප ප්රවර්ග"},
breadcrumb = "Possessable nouns by language",
},
}
labels["possessional adjectives"] = {
description = "{{{langname}}} adjectives that indicate that a noun is in possession of something.",
parents = {"නාම විශේෂණ පද"},
}
labels["possessive adjectives"] = {
description = "{{{langname}}} adjectives that indicate ownership.",
parents = {"නාම විශේෂණ පද"},
}
labels["possessive concords"] = {
description = "{{{langname}}} concords used to show possession.",
parents = {"concords"},
}
labels["possessive determiners"] = {
description = "{{{langname}}} determiners that indicate ownership.",
parents = {"determiners"},
}
labels["possessive pronouns"] = {
description = "{{{langname}}} pronouns that indicate ownership.",
parents = {"සර්වනාම"},
}
labels["postpositional phrases"] = {
description = "{{{langname}}} phrases headed by a postposition.",
parents = {"වාක්ය ඛණ්ඩ", "postpositions"},
}
labels["postpositions"] = {
description = "{{{langname}}} adpositions that are placed after their objects.",
parents = {"පාඨ"},
}
labels["predicatives"] = {
description = "{{{langname}}} elements of the predicate that supplement the subject or object of a sentence via the verb.",
parents = {"පාඨ"},
}
labels["උපසර්ග"] = {
description = "Affixes attached to the beginning of {{{langname}}} words.",
parents = {"පදාණු"},
}
labels["prepositional phrases"] = {
description = "{{{langname}}} phrases headed by a preposition.",
parents = {"වාක්ය ඛණ්ඩ", "prepositions"},
}
labels["prepositions"] = {
description = "{{{langname}}} adpositions that are placed before their objects.",
parents = {"පාඨ"},
}
labels["ablative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the ablative case.",
parents = {"prepositions"},
}
labels["ablative postpositions"] = {
description = "{{{langname}}} postpositions that cause the preceding noun to be in the ablative case.",
parents = {"postpositions"},
}
labels["accusative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the accusative case.",
parents = {"prepositions"},
}
labels["dative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the dative case.",
parents = {"prepositions"},
}
labels["genitive prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the genitive case.",
parents = {"prepositions"},
}
labels["instrumental prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the instrumental case.",
parents = {"prepositions"},
}
labels["locative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the locative case.",
parents = {"prepositions"},
}
labels["locative postpositions"] = {
description = "{{{langname}}} postpositions that cause the preceding noun to be in the locative case.",
parents = {"postpositions"},
}
labels["matrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's mother.",
parents = {"moieties"},
}
labels["nominative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the nominative case.",
parents = {"prepositions"},
}
labels["patrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's father.",
parents = {"moieties"},
}
labels["pejorative suffixes"] = {
description = "{{{langname}}} suffixes that [[belittle]] (lessen in value).",
parents = {"ප්රත්ය"},
}
labels["prepositional prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the prepositional case.",
parents = {"prepositions"},
}
labels["prenouns"] = {
description = "{{{langname}}} prefixes of various kinds that are attached to nouns.",
parents = {"උපසර්ග"},
}
labels["preverbs"] = {
description = "{{{langname}}} prefixes of various kinds that are attached to verbs.",
parents = {"උපසර්ග"},
}
labels["privative verbs"] = {
description = "{{{langname}}} verbs that indicate that the grammatical object is deprived of something or that something is removed from the object.",
parents = {"ක්රියා පද"},
}
labels["pronominal adverbs"] = {
description = "{{{langname}}} adverbs that are formed by combining a pronoun with a preposition.",
parents = {"ක්රියා විශේෂණ පද", "prepositions", "සර්වනාම"},
}
labels["pronominal concords"] = {
description = "{{{langname}}} concords that are prefixed to pronominal stems.",
parents = {"concords"},
}
labels["සර්වනාම"] = {
description = "{{{langname}}} terms that refer to and substitute nouns.",
parents = {"පාඨ"},
}
labels["සංඥා නාම පද"] = {
description = "{{{langname}}} nouns that indicate individual entities, such as names of persons, places or organizations.",
parents = {"නාම පද"},
}
labels["raising verbs"] = {
description = "{{{langname}}} verbs that, in a matrix or main clause, take an argument from an embedded or subordinate clause; in other words, a raising verb appears with a syntactic argument that is not its semantic argument, but is rather the semantic argument of an embedded predicate.",
parents = {"ක්රියා පද"},
}
labels["reciprocal pronouns"] = {
description = "{{{langname}}} pronouns that refer back to a plural subject and express an action done in two or more directions.",
parents = {"සර්වනාම", "personal pronouns"},
}
labels["reciprocal verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed from multiple subjects to each other.",
parents = {"ක්රියා පද"},
}
labels["reflexive pronouns"] = {
description = "{{{langname}}} pronouns that refer back to the subject.",
parents = {"සර්වනාම", "personal pronouns"},
}
labels["reflexive verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed from the grammatical subjects to themselves.",
parents = {"ක්රියා පද"},
}
labels["relational adjectives"] = {
description = "{{{langname}}} adjectives that stand in place of a noun when modifying another noun.",
parents = {"නාම විශේෂණ පද"},
}
labels["relational nouns"] = {
description = "{{{langname}}} nouns used to indicate a relation between other two nouns by means of possession.",
parents = {"නාම පද"},
}
labels["relative adjectives"] = {
description = "{{{langname}}} adjectives used to indicate [[relative clause]]s.",
parents = {"නාම විශේෂණ පද", {name = "relative pro-forms", sort = "නාම විශේෂණ පද"}},
}
labels["relative adverbs"] = {
description = "{{{langname}}} adverbs used to indicate [[relative clause]]s.",
parents = {"ක්රියා විශේෂණ පද", {name = "relative pro-forms", sort = "ක්රියා විශේෂණ පද"}},
}
labels["relative determiners"] = {
description = "{{{langname}}} determiners used to indicate [[relative clause]]s.",
parents = {"determiners", {name = "relative pro-forms", sort = "determiners"}},
}
labels["relative concords"] = {
description = "{{{langname}}} concords that are prefixed to relative stems.",
parents = {"concords"},
}
labels["relative pronouns"] = {
description = "{{{langname}}} pronouns used to indicate [[relative clause]]s.",
parents = {"සර්වනාම", {name = "relative pro-forms", sort = "සර්වනාම"}},
}
labels["relatives"] = {
description = "{{{langname}}} terms that give attributes to nouns, acting grammatically as relative clauses.",
parents = {"පාඨ"},
}
labels["repetitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions or events which are performed or occur again, anew or differently.",
parents = {"ක්රියා පද"},
}
labels["resultative verbs"] = {
description = "{{{langname}}} verbs that indicate a result of some action",
parents = {"ක්රියා පද"},
}
labels["reversative verbs"] = {
description = "{{{langname}}} verbs that indicate that the reversal or undoing of an action, event or state.",
parents = {"ක්රියා පද"},
}
labels["saturative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed to the point of saturation or satisfaction.",
parents = {"ක්රියා පද"},
}
labels["semelfactive verbs"] = {
description = "{{{langname}}} verbs that are punctual (instantaneous, momentive), perfective (treated as a unitary whole with no explicit internal temporal structure), and telic (having a boundary out of which the activity cannot be said to have taken place or continue).",
parents = {"ක්රියා පද"},
}
labels["sentence adverbs"] = {
description = "{{{langname}}} adverbs that modify an entire clause or sentence.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["sequence adverbs"] = {
description = "{{{langname}}} conjunctive adverbs that express sequence in space or time.",
parents = {"conjunctive adverbs"},
}
labels["simulfixes"] = {
description = "Affixes replacing positions in {{{langname}}} words.",
parents = {"පදාණු"},
}
labels["singulative nouns"] = {
description = "{{{langname}}} nouns that indicate a single item of a group of related things or beings.",
parents = {"නාම පද"},
}
labels["singularia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the singular form.",
parents = {"නාම පද"},
}
labels["solitary pronouns"] = {
description = "{{{langname}}} pronouns that refer to specific people in particular and sets them apart from anyone else.",
parents = {"සර්වනාම", "personal pronouns"},
}
labels["stative verbs"] = {
description = "{{{langname}}} verbs that define a state with no or insignificant internal dynamics.",
parents = {"ක්රියා පද"},
}
labels["stems"] = {
description = "Morphemes from which {{{langname}}} words are formed.",
parents = {"පදාණු"},
}
labels["subordinating conjunctions"] = {
description = "{{{langname}}} conjunctions that indicate relations of syntactic dependence between connected items.",
parents = {"conjunctions"},
}
labels["subject concords"] = {
description = "{{{langname}}} concords used to show the grammatical subject.",
parents = {"concords"},
}
labels["subject pronouns"] = {
description = "{{{langname}}} pronouns that refer to grammatical subjects.",
parents = {"සර්වනාම"},
}
labels["ප්රත්ය"] = {
description = "Affixes attached to the end of {{{langname}}} words.",
parents = {"පදාණු"},
}
labels["splitting verbs"] = {
description = "{{{langname}}} bisyllabic verbs that obligatorily split around a direct object or pronoun.",
parents = {"ක්රියා පද"},
}
labels["terminative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event ceases.",
parents = {"ක්රියා පද"},
}
labels["වේලා ක්රියා විශේෂණ පද"] = {
description = "{{{langname}}} adverbs that indicate time, expressing either [[duration]], [[frequency]] or a [[point]] in [[time]].",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["transfixes"] = {
description = "Discontinuous affixes inserted within a word root.",
parents = {"පදාණු"},
}
labels["transformative verbs"] = {
description = "{{{langname}}} verbs that indicate a change of state or nature, in the subject for intransitive verbs and in the object for transitive verbs.",
parents = {"ක්රියා පද"},
}
labels["සකර්මක ක්රියා පද"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed to one or more grammatical objects.",
parents = {"ක්රියා පද"},
}
labels["භාව නාම ක්රියා පද"] = {
description = "{{{langname}}} ක්රියා පද (කථා කරන සිංහල, ලිඛිත සිංහල).",
parents = {"ක්රියා පද"},
}
labels["නාම ක්රියා පද"] = {
description = "{{{langname}}} ක්රියා පද (ලිඛිත සිංහල).",
parents = {"ක්රියා පද"},
}
labels["ආඛ්යාත ක්රියා පද"] = {
description = "{{{langname}}} ක්රියා පද (ලිඛිත සිංහල).",
parents = {"ක්රියා පද"},
}
labels["නිපාත ක්රියා පද"] = {
description = "{{{langname}}} නිපාත ක්රියා පද, එනම් වරනැගීමෙන් තොරව නිපාත ස්වරූපයෙන් ම පවතින ක්රියා පද.",
parents = {"ක්රියා පද"},
}
labels["මිශ්ර ක්රියා පද"] = {
description = "{{{langname}}} මිශ්ර ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["පූර්ව ක්රියා පද"] = {
description = "{{{langname}}} පූර්ව ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["අසම්භාව්ය ක්රියා පද"] = {
description = "{{{langname}}} අසම්භාව්ය ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["අපර ක්රියා පද"] = {
description = "{{{langname}}} අපර ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["ආවස්ථික නිපාත ක්රියා පද"] = {
description = "{{{langname}}} ආවස්ථික නිපාත ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["අතීත නිපාත ක්රියා පද"] = {
description = "{{{langname}}} අතීත නිපාත ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["වර්තමාන නිපාත ක්රියා පද"] = {
description = "{{{langname}}} වර්තමාන නිපාත ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["අනාගත නිපාත ක්රියා පද"] = {
description = "{{{langname}}} අනාගත නිපාත ක්රියා පද.",
parents = {"නිපාත ක්රියා පද"},
}
labels["සැසඳිය නොහැකි නාම විශේෂණ පද"] = {
description = "{{{langname}}} adjectives that are not inflected to display different degrees of comparison.",
parents = {"නාම විශේෂණ පද"},
}
labels["uncomparable adverbs"] = {
description = "{{{langname}}} adverbs that are not inflected to display different degrees of comparison.",
parents = {"ක්රියා විශේෂණ පද"},
}
labels["නොගැණිය හැකි නාම පද"] = {
description = "{{{langname}}} nouns that indicate qualities, ideas, unbounded mass or other abstract concepts that cannot be quantified directly by numerals.",
parents = {"නාම පද"},
}
labels["uncountable numerals"] = {
description = "{{{langname}}} numerals that cannot be quantified directly by other numerals.",
parents = {"සංඛ්යාංක"},
}
labels["නොගැණිය හැකි සංඥා නාම පද"] = {
description = "{{{langname}}} proper nouns that cannot be quantified directly by numerals.",
parents = {"සංඥා නාම පද"},
}
labels["uncountable suffixes"] = {
description = "{{{langname}}} suffixes that can be used to form nouns that cannot be quantified directly by numerals.",
parents = {"සංඛ්යාංක"},
}
labels["unpossessable nouns"] = {
description = "{{{langname}}} nouns that cannot have their possession indicated directly by possessive pronouns.",
parents = {"නාම පද"},
umbrella = {
description = "Categories with nouns that cannot have their possession indicated directly by possessive pronouns or, in some languages, be transformed into adjectives.",
parents = {"භාෂාව අනුව ලෙමා උප ප්රවර්ග"},
breadcrumb = "Unpossessable nouns by language",
},
}
labels["ක්රියා නාම පද"] = {
description = "{{{langname}}} nouns morphologically related to a verb and similar to it in meaning.",
parents = {"නාම පද"},
}
labels["verbal adjectives"] = {
description = "{{{langname}}} adjectives describing the condition or state resulting from the action of the corresponding verb.",
parents = {"නාම විශේෂණ පද"},
}
labels["ක්රියා පද"] = {
description = "{{{langname}}} terms that indicate actions, occurrences or states.",
parents = {"පාඨ"},
}
labels["verbs of movement"] = {
description = "{{{langname}}} verbs that indicate physical movement of the grammatical subject across a trajectory, with a starting point and an endpoint.",
parents = {"ක්රියා පද"},
}
-- Add "POS-forming suffixes".
local poses_derived_by_suffix = {
"adjective", "adverb", "noun", "verb",
}
for _, pos in pairs(poses_derived_by_suffix) do
labels[m_sinhala.sinhala_adjective(pos) .. "-නිර්මාපක ප්රත්ය"] = {
description = "{{{langname}}} ප්රත්ය, වෙනත් වචන වලින් " .. m_sinhala.sinhala_adjective(pos) .. " ව්යුත්පන්න කර ගැනීම සඳහා භාවිතා වන.",
parents = {"ව්යුත්පන්නක ප්රත්ය"},
}
end
local labels2 = {}
-- Add "reconstructed" subcategories; 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 = "භාෂාව අනුව ලෙමා උප ප්රවර්ග"
end
labels2["reconstructed " .. key] = {
description = "{{{langname}}} " .. key .. " that have been linguistically [[Wiktionary:Reconstructed terms|reconstructed]].",
umbrella_parents = "භාෂාව අනුව ලෙමා උප ප්රවර්ග",
parents = {key, {name = "reconstructed terms", sort = key}}
}
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["භාෂාව අනුව ලෙමා උප ප්රවර්ග"] = {
description = "ලෙමා හා සබැඳි මාතෘකා ආවරණය කරන ඡත්ර ප්රවර්ග.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "පාඨ", is_label = true, sort = " "},
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
-- Handler for e.g. [[:Category:English phrasal verbs formed with "aback"]].
table.insert(handlers, function(data)
local particle = data.label:match("^phrasal verbs formed with \"(.-)\"$")
if particle then
local tagged_text = require("Module:script utilities").tag_text(particle, data.lang, nil, "term")
local link = require("Module:links").full_link({ term = particle, lang = data.lang }, "term")
return {
description = "{{{langname}}} {{w|phrasal verb}}s formed with the adverb or preposition " .. link .. ".",
displaytitle = '{{{langname}}} phrasal verbs formed with "' .. tagged_text .. '"',
breadcrumb = tagged_text,
parents = {{ name = "phrasal verbs", sort = particle }},
umbrella = false,
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
09udp7nkwitm6fhwsfaw7gzsffm5k65
හෙළ
0
11425
233638
225119
2026-05-09T03:17:03Z
Lee
19
233638
wikitext
text/x-wiki
{{see also|හෙල}}
==සිංහල==
=== නිරුක්තිය 1 ===
{{rfe|si}}
===නාම පදය===
{{si-noun}}
# {{rfdef|si}}
=== නිරුක්තිය 2 ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈɦeɭə/}}
===ධාතු ප්රකෘතිය===
{{head|si|root}}
# {{rfdef|si}}
====ආඛ්යාත ක්රියා පද====
{| class="wikitable"
|+
|-
! !!අන්ය පුරුෂ<br>ඒකවචන!!අන්ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන
|-
|අනතීත-සකර්මක||[[හෙළයි]]||[[හෙළති]]||[[හෙළමි]]||[[හෙළමු]]
|-
|අතීත-සකර්මක||||||||
|-
|අනතීත-කර්ම කාරක||||||||
|-
|අතීත-කර්ම කාරක||||||||
|-
|}
=== මූලාශ්ර ===
<references/>
* "හෙළ [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 223 පිටුව
[[ප්රවර්ගය:සිංහල ධාතු ප්රකෘති]]
oh6d4vtp54gl8nedbbz7dkm0xfcr9bs
233640
233638
2026-05-09T03:19:11Z
Lee
19
/* නාම පදය */
233640
wikitext
text/x-wiki
{{see also|හෙල}}
==සිංහල==
=== නිරුක්තිය 1 ===
{{rfe|si}}
===නාම පදය===
{{si-noun}}
# [[එළ]]
# [[සුදු]]
# [[සිංහල]]
=== නිරුක්තිය 2 ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈɦeɭə/}}
===ධාතු ප්රකෘතිය===
{{head|si|root}}
# {{rfdef|si}}
====ආඛ්යාත ක්රියා පද====
{| class="wikitable"
|+
|-
! !!අන්ය පුරුෂ<br>ඒකවචන!!අන්ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන
|-
|අනතීත-සකර්මක||[[හෙළයි]]||[[හෙළති]]||[[හෙළමි]]||[[හෙළමු]]
|-
|අතීත-සකර්මක||||||||
|-
|අනතීත-කර්ම කාරක||||||||
|-
|අතීත-කර්ම කාරක||||||||
|-
|}
=== මූලාශ්ර ===
<references/>
* "හෙළ [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 223 පිටුව
[[ප්රවර්ගය:සිංහල ධාතු ප්රකෘති]]
8e14r5d7wszf59x6rpbi18u4lix5nk5
Module:transclude
828
112717
233720
217995
2026-04-15T09:00:37Z
en>Surjection
0
Changed protection settings for "[[Module:transclude]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
233720
Scribunto
text/plain
local export = {}
local anchors_module = "Module:anchors"
local debug_track_module = "Module:debug/track"
local headword_data_module = "Module:headword/data"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local links_module = "Module:links"
local pages_module = "Module:pages"
local parameters_module = "Module:parameters"
local parse_interface_module = "Module:parse interface"
local place_module = "Module:place"
local string_char_module = "Module:string/char"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_remove_comments_module = "Module:string/removeComments"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local m_place = require(place_module)
local enlang = require(languages_module).getByCode("en")
local concat = table.concat
local find = string.find
local insert = table.insert
local ipairs = ipairs
local lower = string.lower
local match = string.match
local pairs = pairs
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local function codepoint(...)
codepoint = require(string_utilities_module).codepoint
return codepoint(...)
end
local function contains(...)
contains = require(table_module).contains
return contains(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function find_templates(...)
find_templates = require(template_parser_module).find_templates
return find_templates(...)
end
local function full_link(...)
full_link = require(links_module).full_link
return full_link(...)
end
local function is_preview(...)
is_preview = require(pages_module).is_preview
return is_preview(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_comments(...)
remove_comments = require(string_remove_comments_module)
return remove_comments(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function senseid(...)
senseid = require(anchors_module).senseid
return senseid(...)
end
local function show_labels(...)
show_labels = require(labels_module).show_labels
return show_labels(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function u(...)
u = require(string_char_module)
return u(...)
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/transclude/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("transclude/" .. page)
return true
end
-- Split an argument on comma, but not comma followed by whitespace.
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
-- Split list of labels. For compatibility, we allow splitting on semicolon, but will convert to splitting on
-- comma not followed by space, for compatibility with other modules/params.
local function split_labels(val)
if val:find(";") then
track("label-with-semicolon")
return split(val, ";")
else
return split_on_comma(val)
end
end
-- From [[Template:gloss]]
local gloss_left = '<span class="mention-gloss-paren">(</span><span class="mention-gloss">'
local gloss_right = '</span><span class="mention-gloss-paren">)</span>'
-- Ensure that Wikicode (template calls, bracketed links, HTML, bold/italics, etc.) displays literally in error messages
-- by inserting a Unicode word-joiner symbol after all characters that may trigger Wikicode interpretation. Replacing
-- with equivalent HTML escapes doesn't work because they are displayed literally. I could not get this to work using
-- <nowiki>...</nowiki> (those tags display literally), using using {{#tag:nowiki|...}} (same thing) or using
-- mw.getCurrentFrame():extensionTag("nowiki", ...) (everything gets converted to a strip marker
-- `UNIQ--nowiki-00000000-QINU` or similar). FIXME: This is a massive hack; there must be a better way.
local function escape_wikicode(text)
text = text:gsub("([%[<'{])", "%1" .. u(0x2060))
return text
end
local function preprocess(frame, text)
if text:find("{") or text:find("<math>") then
return frame:preprocess(text)
else
return text
end
end
local function ine(arg)
return arg ~= "" and arg or nil
end
local function discard(offset, iter, obj, index)
return iter, obj, index + offset
end
local function remove_templates_if(haystack, predicate)
local remaining = {}
local last_start = 1
for template in find_templates(haystack) do
local name = template:get_name()
if name ~= nil and predicate(name, template:get_arguments(), next(remaining) == nil) then
local index = template.index
if last_start < index then
local chunk = haystack:sub(last_start, index - 1)
if chunk:find("%S") then
insert(remaining, chunk)
end
end
last_start = index + template.raw:len()
end
end
if last_start == 1 then
return haystack
else
insert(remaining, haystack:sub(last_start))
return concat(remaining)
end
end
local function copy_unnamed_args_maybe_except_code(to, from, deny_list, first_argument)
first_argument = first_argument or 2
for _, value in discard(first_argument - 1, ipairs(from)) do
if not deny_list or not contains(deny_list, value) then
insert(to, value)
end
end
end
local function parse_form_of_directive(value, param)
local new_directive, new_value = value:match("^@([a-z -]+):(.*)$")
if not new_directive then
if param then
error(("Misformatted value %s=%s; should be e.g. 'place_acronym_of=" ..
"@init of:ehemalige jugoslawische Republik Mazedonien' to replace " ..
"'@acronym of:...' with '@init of:...'"):format(
param, value))
else
error(("Misformatted form-of directive '%s'; should be e.g. '@ellip of:Santiago del Estero'"):format(
value))
end
end
if not m_place.all_form_of_directives[new_directive] then
local known_directives = {}
for k, _ in pairs(m_place.all_form_of_directives) do
insert(known_directives, '"' .. k .. '"')
end
table.sort(known_directives)
known_directives = concat(known_directives, ", ")
if param then
error(("Unrecognized form-of directive '%s' in replacement @-directive %s=%s; " ..
"recognized directives are %s"):format(new_directive, param, value, known_directives))
else
error(("Unrecognized form-of directive '%s' in '%s'; recognized directives are %s"):format(
new_directive, value, known_directives))
end
else
-- canonicalize replacement directive aliases
new_directive = m_place.all_form_of_directives[new_directive].alias_of or new_directive
end
return new_directive, new_value
end
local function handle_definition_template(data)
local name, args, transclude_args = data.name, data.template_args, data.transclude_args
if name == "place" then
local place_form_of_directives = data.place_form_of_directives
return {
should_remove = true,
must_be_first = true,
generate = function(data)
if data.formatted_to and data.formatted_to ~= "" then
error("{{place}} cannot be used in conjunction with |to=")
end
local place_args = {}
local langcode = data.lang:getCode()
local place_translation_follows = transclude_args.place_translation_follows
local include_place_extra_info = transclude_args.include_place_extra_info
local drop_extra = not include_place_extra_info -- false or unspecified
local extra_info_overridden_set = {}
for _, extra_info_spec in pairs(m_place.extra_info_args) do
local overriding_arg = transclude_args["place_" .. extra_info_spec.arg]
if overriding_arg and overriding_arg[1] then
extra_info_overridden_set[extra_info_spec.arg] = true
end
end
local form_of_overridden_args = {}
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
if not directive_spec.alias_of then
local transclude_key = "place_" .. (form_of_directive:gsub(" ", "_"))
local transclude_value = transclude_args[transclude_key]
if transclude_value then
local new_directive, new_value
if transclude_value:find("^@") then
new_directive, new_value = parse_form_of_directive(transclude_value, transclude_key)
else
new_directive = form_of_directive
new_value = transclude_value
end
form_of_overridden_args[form_of_directive] = {
new_directive = new_directive,
new_value = new_value,
}
if directive_spec.default_foreign and place_translation_follows == nil then
place_translation_follows = true
end
end
end
end
place_args[1] = langcode
place_args.pagename = data.source
-- If form-of directives specified in the numeric args to {{tcl}}, they get inserted before any
-- numeric args taken from {{place}}.
local next_numarg = 2
for _, form_of_directive in ipairs(place_form_of_directives) do
place_args[next_numarg] = ("@%s:%s"):format(form_of_directive.directive, form_of_directive.value)
next_numarg = next_numarg + 1
end
local saw_tcl_t
local saw_t
-- Copy the arguments but drop translations, maybe the "extra info", and maybe the numbered args
-- (if tcl= given)
local tcl_arg = ine(args.tcl)
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" or base == "tcl_tid" then
saw_tcl_t = true -- otherwise ignore
elseif base == "tcl_nolb" then
data.nolb = val -- otherwise ignore
elseif base == "t" or base == "tid" then
if transclude_args.t[1] then
-- ignore it if the user specified t= in {{tcl}}, otherwise keep it unless tcl_t is given
else
saw_t = true
end
elseif m_place.extra_info_arg_map[base] and extra_info_overridden_set[base] then
-- don't copy any extra info arguments that we will be overriding, in case there are more
-- original values than overrides for this particular argument
elseif base == "" then
if not tcl_arg and key > 1 then
-- We want keys starting at 2 to go into positions starting at `next_numarg`.
place_args[next_numarg + key - 2] = val
end
else
place_args[key] = val
end
end
local function sub_plus(t)
if t:find("+") then
t = t:gsub("+", replacement_escape(data.source))
end
return t
end
-- If tcl= given, copy its value into the numeric args.
if tcl_arg then
place_args[next_numarg] = tcl_arg
next_numarg = next_numarg + 1
place_args.a = nil
end
if transclude_args.t[1] then
local argno = 1
for _, t in ipairs(transclude_args.t) do
if t ~= "-" then
place_args["t" .. (argno == 1 and "" or argno)] = sub_plus(t)
argno = argno + 1
end
end
elseif langcode ~= "en" then
if saw_tcl_t then
for key, val in pairs(args) do
local base, num = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" then
place_args["t" .. num] = sub_plus(val)
elseif base == "tcl_tid" then
place_args["tid" .. num] = val
end
end
elseif saw_t then
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "t" or base == "tid" then
place_args[key] = val
end
end
else
place_args["t"] = data.source
place_args["tid"] = data.id
end
end
place_args["sort"] = data.sort
if data.nocat then
place_args["nocat"] = "1"
end
if transclude_args.place_addl then
place_args.addl = transclude_args.place_addl
end
if data.no_gloss then
place_args["def"] = "-"
else
local gloss = data.gloss
-- Copy overriding extra info values. They are in the term language rather than English,
-- which we signal through `extra_info_overridden_set`.
for _, extra_info_spec in pairs(m_place.extra_info_args) do
for i, v in ipairs(transclude_args["place_" .. extra_info_spec.arg]) do
place_args[extra_info_spec.arg .. (i == 1 and "" or i)] = v
end
end
if not args.tcl_noextratext and not tcl_arg and gloss ~= "" then
-- Copy text after {{place}} into {{place}}, unless tcl= or tcl_noextratext= is given.
local first_free = 2
while place_args[first_free] ~= nil do first_free = first_free + 1 end
if place_args[first_free - 1]:find("<<") then
-- new-style argument; concatenate to end of argument
if not gloss:find("^[,;.]") then
gloss = " " .. gloss
end
place_args[first_free - 1] = place_args[first_free - 1] .. gloss
else
-- old-style argument; add as separate argument
if gloss:find("^,") then
place_args[first_free] = gloss:gsub("^, *", "")
elseif gloss:find("^;") then
place_args[first_free] = ";"
place_args[first_free + 1] = gloss:gsub("^; *", "")
else
-- the "*" ensures no extra comma
place_args[first_free] = "*" .. gloss:gsub("^ *", "")
end
end
end
end
return m_place.format {
template_args = place_args,
from_tcl = true,
drop_extra_info = drop_extra,
extra_info_overridden_set = extra_info_overridden_set,
form_of_overridden_args = form_of_overridden_args,
translation_follows = place_translation_follows,
}
end,
}
elseif name == "abbreviation of" or name == "abbr of" or name == "abbrev of"
or name == "acronym of" or name == "ellipsis of"
or name == "contraction of" or name == "contr of"
or name == "initialism of" or name == "init of"
or name == "short for" or name == "synonym of" then
return {
should_remove = true,
must_be_first = true,
generate = function(data)
local formatted_gloss = ""
if not data.no_gloss then
local formatted_link = full_link{
term = args[2], alt = args[3], lang = data.source_lang, id = args["id"]
}
local after_link = ""
if data.gloss ~= "" then
local separator = (args["nodot"] and "") or ((args["dot"] or ";") .. " ")
after_link = separator .. data.gloss
end
formatted_gloss = " " .. gloss_left .. formatted_link .. after_link .. gloss_right
end
return data.formatted_to .. full_link{
term = data.source, lang = data.source_lang, id = data.id
} .. formatted_gloss
end,
}
end
return nil
end
function export.show(frame)
local boolean = {type = "boolean"}
local list = {list = true}
local required = {required = true}
local params = {
[1] = {required = true, type = "language"}, -- langcode of target language (the current entry's language)
[2] = {list = true, required = true}, -- source English term to transclude from and/or form-or directives
id = true, -- can have multiple comma-separated IDs
sort = true,
nogloss = {default = false, type = "boolean"},
no_truncate_gloss = boolean,
-- Normally, we ignore most of the extra info (capital, largest city, official name, etc.) when transcluding
-- {{place}} because the given terms are in English and will likely differ from language to language.
include_place_extra_info = boolean,
-- Normally the translation (the transcluded page or overriding value in t=) comes first with the definition
-- following in parens, but that may not produce sensible results in some cases, such as initialisms; e.g. if
-- we define [[GDR]] as
-- {{place|en|@init of:German Democratic Republic|@official name of:East Germany|former country|r/Central Europe}}
-- and then we define Polish [[NRD]] as
-- {{tcl|pl|GDR|place_init_of=Niemiecka Republika Demokratyczna<eq:German Democratic Republic>}}, we get
-- "GDR (initialism of Niemiecka Republika Demokratyczna (= German Democratic Republic), official name of East Germany, a former country in Central Europe)"
-- which makes no sense as GDR is not an initialism of [[Niemiecka Republika Demokratyczna]]. Instead what we
-- want is a display more like
-- "initialism of Niemiecka Republika Demokratyczna (= German Democratic Republic), official name of East Germany, a former country in Central Europe: [[GDR]]".
-- `place_translation_follows=1` causes that to happen, and it also happens by default whenever an argument like
-- place_init_of= (or more generally, any of the form-of directives that are marked as `default_foreign`); to
-- disable the postposed display in that case, use `place_translation_follows=0`.
place_translation_follows = boolean,
place_addl = true,
lb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nolb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nocat = boolean,
to = boolean,
t = list,
indent = true,
dot = boolean,
pagename = true,
}
for _, extra_arg_spec in ipairs(m_place.extra_info_args) do
params["place_" .. extra_arg_spec.arg] = list
end
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
params["place_" .. (form_of_directive:gsub(" ", "_"))] = directive_spec.alias_of and
{alias_of = "place_" .. (directive_spec.alias_of:gsub(" ", "_"))} or true
end
local args = process_params(frame:getParent().args, params)
local pagename = args.pagename or mw.loadData(headword_data_module).pagename
local language = args[1]
local language_code = language:getCode()
local source
local place_form_of_directives = {}
if args[2][1]:find("^@") then
-- form-of directives in place of source
for i, arg in ipairs(args[2]) do
if arg:find("^@") then
local directive, value = parse_form_of_directive(arg)
insert(place_form_of_directives, {
directive = directive,
value = value,
})
elseif i ~= #args[2] then
error(("When form-of directives are specified, the source must come last, but saw source %s=%s " ..
"when higher-numbered arguments exist"):format(i + 1, arg))
else
source = arg
end
end
if not source then
source = place_form_of_directives[#place_form_of_directives].value:gsub("<.*", "")
end
elseif args[2][2] then
error(("Extraneous argument 3=%s"):format(args[2][2]))
else
source = args[2][1]
end
local source_lang = enlang
local source_langcode = source_lang:getCode()
local source_langname = source_lang:getFullName()
local ids = args.id and split(args.id, ",") or {""}
local sort = args.sort
if source == "+" then
source = pagename
end
local source_is_current_page = source == pagename
local copy_sortkey = (sort == nil) and source_is_current_page
local no_gloss = args.nogloss
local labels = args.lb and split_labels(args.lb) or {}
local to = args.to
local function issue_error(msg)
if source_is_current_page and is_preview() then
msg = msg .. ". NOTE: You are in preview mode. If you're previewing only part of the page, try previewing the full page, as the error may go away."
end
error(msg)
end
local content = mw.title.new(source):getContent()
if content == nil then
issue_error("Couldn't find the entry [[" .. source .. "]]")
end
-- Remove HTML comments.
content = remove_comments(content)
-- Remove <ref></ref> with nothing inside the first <ref>.
content = content:gsub("< *[rR][eE][fF] *>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref ...></ref> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref/> with nothing inside the <ref>.
content = content:gsub("< *[rR][eE][fF] */ *>", "")
-- Remove <ref .../> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*/ *>", "")
-- TODO: Handle <nowiki> (it's more complex than just cutting it out too).
local retlines = {}
for _, id in ipairs(ids) do
local nolb
local found_labels = {}
local line_start, line
if id == "" then
id = nil
end
if id ~= nil then
local senseid_start, senseid_end = content:find("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
if senseid_start == nil then
senseid_start, senseid_end = content:find("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
end
if senseid_start == nil then
local alternatives = nil
for id in content:gmatch("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
for id in content:gmatch("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
if alternatives then
alternatives = ": Alternatives for |id= are: " .. alternatives
else
alternatives = ""
end
issue_error("Couldn't find the template {{[[Template:senseid|senseid]]|" .. source_langcode .. "|" .. id .. "}} within entry [[" .. source .. "]]" .. alternatives)
end
-- Do the following manually instead of using regex or iterators in hopes of saving memory.
local newline, pound = 10, 35
line_start = senseid_start
while line_start > 0 and content:byte(line_start - 1) ~= newline do line_start = line_start - 1 end
local def_start = line_start
while content:byte(def_start) == pound do def_start = def_start + 1 end
local line_end = senseid_end
while line_end < content:len() and content:byte(line_end + 1) ~= newline do line_end = line_end + 1 end
line = content:sub(def_start, senseid_start - 1) .. content:sub(senseid_end + 1, line_end)
else -- id == nil
local _, start_source = find(content, "==[ \t]*" .. pattern_escape(source_langname) .. "[ \t]*==")
if not start_source then
issue_error(("Couldn't find L2 header for source language '%s' on page [[%s]]"):format(source_langname,
source))
end
-- Find index of start of next language; may be nil if no language follows.
local _, start_next_lang = find(content, "\n==[^=\n]+==", start_source, false)
content = content:sub(start_source, start_next_lang)
while true do
local next_line_start
_, next_line_start = find(content, "\n#+[^:*]", line_start, false)
if not next_line_start then
break
end
if line_start then
local first_line = match(content, "(.-)%f[\n%z]", line_start)
local next_line = match(content, "(.-)%f[\n%z]", next_line_start + 1)
issue_error(("No id specified and saw two definition lines '%s' and '%s' for source language '%s' on page [[%s]]"):format(
escape_wikicode(first_line), escape_wikicode(next_line), source_langname, source))
end
line_start = next_line_start + 1
end
if not line_start then
issue_error(("Couldn't find any definition lines for source language '%s' on page [[%s]]"):format(
source_langname, source))
end
line = match(content, "(.-)%f[\n%z]", line_start)
end
if to == nil then
local i = line_start
while i > 1 do
i = i - 1 -- i is now the index of the newline
while i > 1 and content:byte(i - 1) ~= 0xA do i = i - 1 end
local header = content:match("^===+([^=\n]+)===+ *\n", i)
if header then
to = (header:match("Verb") ~= nil)
break
end
end
end
-- TODO: Remove this error once <nowiki> is handled correctly (see above TODO).
if line:find("< *nowiki%W") or line:find("< */ *nowiki%W") then
error("Cannot handle <nowiki>")
end
-- Quick'n'dirty templatization of manual cats so that the below code also works for them.
for _, v in ipairs({{source_langcode .. ":", "c"}, {source_lang:getCanonicalName() .. " ", "cln"}, {"", "cat"}}) do
line = line:gsub("%[%[ *Category *: *" .. v[1] .. "([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1}}")
line = line:gsub("%[%[ *Category *%: *" .. v[1] .. "([^%]|]*)%|([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1|sort=%2}}")
end
-- Extract template information.
local cats = {}
local cats_cln = {}
local cats_top = {}
local encountered_label = false
local generator = nil
local sortkeys = {}
local sortkey_most_frequent = nil
local sortkey_most_frequent_n = 0
local function process_template(name, tempargs, is_at_the_start)
-- Expand any nested templates in template arguments.
for k, v in pairs(tempargs) do
tempargs[k] = preprocess(frame, v)
end
local supports_sortkey = false
local should_remove = true -- If set, removes the template from the line after processing.
local must_be_first = false -- If set, ensures that nothing (except for removed templates) preceeds this template.
local definition_template_handler = handle_definition_template {
name = name,
template_args = tempargs,
transclude_args = args,
place_form_of_directives = place_form_of_directives,
}
if definition_template_handler ~= nil then
if generator ~= nil then
error("Encountered {{[[Template:" .. name .. "|" .. name .. "]]}} even though a full definition template has already been processed")
end
should_remove = definition_template_handler.should_remove
must_be_first = definition_template_handler.must_be_first
generator = definition_template_handler.generate
elseif name == "categorize" or name == "cat" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangname" or name == "cln" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangcode" or name == "topics" or name == "top" or name == "C" or name == "c" then
copy_unnamed_args_maybe_except_code(cats_top, tempargs)
supports_sortkey = true
elseif name == "label" or name == "lbl" or name == "lb" then
if encountered_label then
error("Encountered multiple {{[[Template:label|label]]}} templates in the definition line")
end
encountered_label = true
copy_unnamed_args_maybe_except_code(found_labels, tempargs)
supports_sortkey = true
must_be_first = true
elseif name == "defdate" or name == "defdt" or name == "century" or name == "ref" or name == "refn" or name == "rfd-sense" or name == "rfv-sense" or name == "senseid" or name == "sid" then
-- Remove and do nothing.
else
-- We are dealing with a template other than the above hard-coded ones.
-- If it contains the language code, we cannot handle it.
if tempargs[1] == source_langcode then
error("Cannot handle template {{[[Template:" .. name .. "|" .. name .. "]]}}")
end
supports_sortkey = tempargs["sort"] or tempargs["sort1"] -- TODO: This doesn't handle the case where there is only sortn but not sort1/sort.
should_remove = false -- Leave the template in and just copy it, e.g. [[Template:,]], [[Template:gloss]], [[Template:qualifier]], [[Template:w]] etc.
end
if supports_sortkey then
if tempargs["sort1"] ~= nil then
error("Cannot handle multiple sort keys")
end
local sortkey = tempargs["sort"]
if sortkey ~= nil then
if sortkeys[sortkey] == nil then
sortkeys[sortkey] = 1
else
sortkeys[sortkey] = sortkeys[sortkey] + 1
end
if sortkeys[sortkey] > sortkey_most_frequent_n then
sortkey_most_frequent = sortkey
sortkey_most_frequent_n = sortkeys[sortkey]
end
end
end
if must_be_first and not is_at_the_start then
error("The template {{[[Template:" .. name .. "|" .. name .. "]]}} should occur to the front of the definition line")
end
return should_remove
end
line = remove_templates_if(line, process_template)
line = line:gsub("^%s+", ""):gsub("%s+$", "") -- Prune ends.
-- Tidy up the remaining definition (to be used as a gloss).
-- Truncate full sentences after a period, as they won't be formatted well as a gloss. Require a space after
-- the period as a possible way of reducing false positives with abbreviations.
local gloss = line
if not args.no_truncate_gloss then
-- Substitute a list of known abbreviations that shouldn't mark the end-point of the gloss, which will be reinserted after truncation.
local abbrevs = {"A.D.", "B.C.", "B.C.E.", "c[af]?.", "C.E.", "e.g.", "fl.", "i.[ae].", "r.", "sc.", "scil.", "viz.", "vs?."}
local substitutes, i = {}, 0
local function insert_substitute(m)
i = i + 1
insert(substitutes, m)
return u(0x80000 + i)
end
for j, abbrev in ipairs(abbrevs) do
abbrev = abbrev:gsub("%.", "%%.")
:gsub("%f[^.].", " *%0")
abbrevs[j] = abbrev
gloss = gloss:gsub("%f[%S]" .. abbrev .. "%f[%s]", insert_substitute)
end
gloss = gloss:gsub("%s*%. .*$", "")
:gsub("\242[\128-\191]*", function(m)
return substitutes[codepoint(m) - 0x80000]
end)
end
gloss = gloss:gsub("^%u", lower):gsub("%.$", "")
gloss = gloss:gsub("^{{1|([^}|]*)}}", "%1") -- Remove [[Template:1]]
local _, link_end, link_dest_head, link_dest_tail, link_face_head, link_face_tail = gloss:find("^%[%[(.)([^|%]]*)|(.)([^%]]*)%]%]") -- Remove [[foo|Foo]]
if link_end ~= nil and link_dest_tail == link_face_tail and link_face_head:lower() == link_dest_head then
gloss = "[[" .. link_dest_head .. link_dest_tail .. gloss:sub(link_end - 1)
end
gloss = preprocess(frame, gloss)
if copy_sortkey then
sort = sortkey_most_frequent
end
local formatted_senseid = ""
local formatted_senseid_close = ""
if id ~= nil then
formatted_senseid = senseid(language, id, "span")
if formatted_senseid:find("<span") then
formatted_senseid_close = "</span>"
end
end
local formatted_categories = args.nocat and "" or (
((next(cats ) == nil) and "" or frame:expandTemplate({title = "cat", args = {language_code, unpack(cats )}})) ..
((next(cats_cln) == nil) and "" or frame:expandTemplate({title = "cln", args = {language_code, unpack(cats_cln)}})) ..
((next(cats_top) == nil) and "" or frame:expandTemplate({title = "top", args = {language_code, unpack(cats_top)}}))
)
local formatted_to = to and "to " or ""
local formatted_definition
if generator ~= nil then
local data = {
frame = frame, lang = language, source = source, source_lang = source_lang, id = id,
sort = sort, nocat = args.nocat, no_gloss = no_gloss, gloss = gloss, formatted_to = formatted_to,
}
formatted_definition = generator(data)
nolb = data.nolb or nolb
else
local formatted_link = full_link{term = source, lang = source_lang, id = id}
local formatted_gloss = no_gloss and "" or (" " .. gloss_left .. gloss .. gloss_right)
formatted_definition = formatted_to .. formatted_link .. formatted_gloss
end
nolb = args.nolb or nolb
local labels_to_ignore = nil
local ignore_all_labels = false
if nolb then
if nolb == "+" or nolb == "1" or nolb == "*" then
ignore_all_labels = true
else
labels_to_ignore = split_labels(nolb)
end
end
local this_labels = deep_copy(labels)
if not ignore_all_labels then
copy_unnamed_args_maybe_except_code(this_labels, found_labels, labels_to_ignore, 1)
end
local formatted_labels = (next(this_labels) == nil) and "" or (show_labels{labels = this_labels, lang = language, sort = sort} .. " ")
insert(retlines, formatted_senseid .. formatted_categories .. formatted_labels .. formatted_definition ..
formatted_senseid_close .. (args.dot and "." or ""))
end
return concat(retlines, "\n" .. (args.indent or "#") .. " ")
end
return export
n8xzda9ekxq9edzllczdal5eomtvh31
233721
233720
2026-05-09T04:44:29Z
Lee
19
[[:en:Module:transclude]] වෙතින් එක් සංශෝධනයක්
233720
Scribunto
text/plain
local export = {}
local anchors_module = "Module:anchors"
local debug_track_module = "Module:debug/track"
local headword_data_module = "Module:headword/data"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local links_module = "Module:links"
local pages_module = "Module:pages"
local parameters_module = "Module:parameters"
local parse_interface_module = "Module:parse interface"
local place_module = "Module:place"
local string_char_module = "Module:string/char"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_remove_comments_module = "Module:string/removeComments"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local m_place = require(place_module)
local enlang = require(languages_module).getByCode("en")
local concat = table.concat
local find = string.find
local insert = table.insert
local ipairs = ipairs
local lower = string.lower
local match = string.match
local pairs = pairs
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local function codepoint(...)
codepoint = require(string_utilities_module).codepoint
return codepoint(...)
end
local function contains(...)
contains = require(table_module).contains
return contains(...)
end
local function deep_copy(...)
deep_copy = require(table_module).deepCopy
return deep_copy(...)
end
local function find_templates(...)
find_templates = require(template_parser_module).find_templates
return find_templates(...)
end
local function full_link(...)
full_link = require(links_module).full_link
return full_link(...)
end
local function is_preview(...)
is_preview = require(pages_module).is_preview
return is_preview(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_comments(...)
remove_comments = require(string_remove_comments_module)
return remove_comments(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function senseid(...)
senseid = require(anchors_module).senseid
return senseid(...)
end
local function show_labels(...)
show_labels = require(labels_module).show_labels
return show_labels(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function u(...)
u = require(string_char_module)
return u(...)
end
-- Add the page to a tracking "category". To see the pages in the "category",
-- go to [[Wiktionary:Tracking/transclude/PAGE]] and click on "What links here".
local function track(page)
require(debug_track_module)("transclude/" .. page)
return true
end
-- Split an argument on comma, but not comma followed by whitespace.
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
-- Split list of labels. For compatibility, we allow splitting on semicolon, but will convert to splitting on
-- comma not followed by space, for compatibility with other modules/params.
local function split_labels(val)
if val:find(";") then
track("label-with-semicolon")
return split(val, ";")
else
return split_on_comma(val)
end
end
-- From [[Template:gloss]]
local gloss_left = '<span class="mention-gloss-paren">(</span><span class="mention-gloss">'
local gloss_right = '</span><span class="mention-gloss-paren">)</span>'
-- Ensure that Wikicode (template calls, bracketed links, HTML, bold/italics, etc.) displays literally in error messages
-- by inserting a Unicode word-joiner symbol after all characters that may trigger Wikicode interpretation. Replacing
-- with equivalent HTML escapes doesn't work because they are displayed literally. I could not get this to work using
-- <nowiki>...</nowiki> (those tags display literally), using using {{#tag:nowiki|...}} (same thing) or using
-- mw.getCurrentFrame():extensionTag("nowiki", ...) (everything gets converted to a strip marker
-- `UNIQ--nowiki-00000000-QINU` or similar). FIXME: This is a massive hack; there must be a better way.
local function escape_wikicode(text)
text = text:gsub("([%[<'{])", "%1" .. u(0x2060))
return text
end
local function preprocess(frame, text)
if text:find("{") or text:find("<math>") then
return frame:preprocess(text)
else
return text
end
end
local function ine(arg)
return arg ~= "" and arg or nil
end
local function discard(offset, iter, obj, index)
return iter, obj, index + offset
end
local function remove_templates_if(haystack, predicate)
local remaining = {}
local last_start = 1
for template in find_templates(haystack) do
local name = template:get_name()
if name ~= nil and predicate(name, template:get_arguments(), next(remaining) == nil) then
local index = template.index
if last_start < index then
local chunk = haystack:sub(last_start, index - 1)
if chunk:find("%S") then
insert(remaining, chunk)
end
end
last_start = index + template.raw:len()
end
end
if last_start == 1 then
return haystack
else
insert(remaining, haystack:sub(last_start))
return concat(remaining)
end
end
local function copy_unnamed_args_maybe_except_code(to, from, deny_list, first_argument)
first_argument = first_argument or 2
for _, value in discard(first_argument - 1, ipairs(from)) do
if not deny_list or not contains(deny_list, value) then
insert(to, value)
end
end
end
local function parse_form_of_directive(value, param)
local new_directive, new_value = value:match("^@([a-z -]+):(.*)$")
if not new_directive then
if param then
error(("Misformatted value %s=%s; should be e.g. 'place_acronym_of=" ..
"@init of:ehemalige jugoslawische Republik Mazedonien' to replace " ..
"'@acronym of:...' with '@init of:...'"):format(
param, value))
else
error(("Misformatted form-of directive '%s'; should be e.g. '@ellip of:Santiago del Estero'"):format(
value))
end
end
if not m_place.all_form_of_directives[new_directive] then
local known_directives = {}
for k, _ in pairs(m_place.all_form_of_directives) do
insert(known_directives, '"' .. k .. '"')
end
table.sort(known_directives)
known_directives = concat(known_directives, ", ")
if param then
error(("Unrecognized form-of directive '%s' in replacement @-directive %s=%s; " ..
"recognized directives are %s"):format(new_directive, param, value, known_directives))
else
error(("Unrecognized form-of directive '%s' in '%s'; recognized directives are %s"):format(
new_directive, value, known_directives))
end
else
-- canonicalize replacement directive aliases
new_directive = m_place.all_form_of_directives[new_directive].alias_of or new_directive
end
return new_directive, new_value
end
local function handle_definition_template(data)
local name, args, transclude_args = data.name, data.template_args, data.transclude_args
if name == "place" then
local place_form_of_directives = data.place_form_of_directives
return {
should_remove = true,
must_be_first = true,
generate = function(data)
if data.formatted_to and data.formatted_to ~= "" then
error("{{place}} cannot be used in conjunction with |to=")
end
local place_args = {}
local langcode = data.lang:getCode()
local place_translation_follows = transclude_args.place_translation_follows
local include_place_extra_info = transclude_args.include_place_extra_info
local drop_extra = not include_place_extra_info -- false or unspecified
local extra_info_overridden_set = {}
for _, extra_info_spec in pairs(m_place.extra_info_args) do
local overriding_arg = transclude_args["place_" .. extra_info_spec.arg]
if overriding_arg and overriding_arg[1] then
extra_info_overridden_set[extra_info_spec.arg] = true
end
end
local form_of_overridden_args = {}
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
if not directive_spec.alias_of then
local transclude_key = "place_" .. (form_of_directive:gsub(" ", "_"))
local transclude_value = transclude_args[transclude_key]
if transclude_value then
local new_directive, new_value
if transclude_value:find("^@") then
new_directive, new_value = parse_form_of_directive(transclude_value, transclude_key)
else
new_directive = form_of_directive
new_value = transclude_value
end
form_of_overridden_args[form_of_directive] = {
new_directive = new_directive,
new_value = new_value,
}
if directive_spec.default_foreign and place_translation_follows == nil then
place_translation_follows = true
end
end
end
end
place_args[1] = langcode
place_args.pagename = data.source
-- If form-of directives specified in the numeric args to {{tcl}}, they get inserted before any
-- numeric args taken from {{place}}.
local next_numarg = 2
for _, form_of_directive in ipairs(place_form_of_directives) do
place_args[next_numarg] = ("@%s:%s"):format(form_of_directive.directive, form_of_directive.value)
next_numarg = next_numarg + 1
end
local saw_tcl_t
local saw_t
-- Copy the arguments but drop translations, maybe the "extra info", and maybe the numbered args
-- (if tcl= given)
local tcl_arg = ine(args.tcl)
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" or base == "tcl_tid" then
saw_tcl_t = true -- otherwise ignore
elseif base == "tcl_nolb" then
data.nolb = val -- otherwise ignore
elseif base == "t" or base == "tid" then
if transclude_args.t[1] then
-- ignore it if the user specified t= in {{tcl}}, otherwise keep it unless tcl_t is given
else
saw_t = true
end
elseif m_place.extra_info_arg_map[base] and extra_info_overridden_set[base] then
-- don't copy any extra info arguments that we will be overriding, in case there are more
-- original values than overrides for this particular argument
elseif base == "" then
if not tcl_arg and key > 1 then
-- We want keys starting at 2 to go into positions starting at `next_numarg`.
place_args[next_numarg + key - 2] = val
end
else
place_args[key] = val
end
end
local function sub_plus(t)
if t:find("+") then
t = t:gsub("+", replacement_escape(data.source))
end
return t
end
-- If tcl= given, copy its value into the numeric args.
if tcl_arg then
place_args[next_numarg] = tcl_arg
next_numarg = next_numarg + 1
place_args.a = nil
end
if transclude_args.t[1] then
local argno = 1
for _, t in ipairs(transclude_args.t) do
if t ~= "-" then
place_args["t" .. (argno == 1 and "" or argno)] = sub_plus(t)
argno = argno + 1
end
end
elseif langcode ~= "en" then
if saw_tcl_t then
for key, val in pairs(args) do
local base, num = tostring(key):match("^(.-)(%d*)$")
if base == "tcl_t" then
place_args["t" .. num] = sub_plus(val)
elseif base == "tcl_tid" then
place_args["tid" .. num] = val
end
end
elseif saw_t then
for key, val in pairs(args) do
local base = tostring(key):match("^(.-)(%d*)$")
if base == "t" or base == "tid" then
place_args[key] = val
end
end
else
place_args["t"] = data.source
place_args["tid"] = data.id
end
end
place_args["sort"] = data.sort
if data.nocat then
place_args["nocat"] = "1"
end
if transclude_args.place_addl then
place_args.addl = transclude_args.place_addl
end
if data.no_gloss then
place_args["def"] = "-"
else
local gloss = data.gloss
-- Copy overriding extra info values. They are in the term language rather than English,
-- which we signal through `extra_info_overridden_set`.
for _, extra_info_spec in pairs(m_place.extra_info_args) do
for i, v in ipairs(transclude_args["place_" .. extra_info_spec.arg]) do
place_args[extra_info_spec.arg .. (i == 1 and "" or i)] = v
end
end
if not args.tcl_noextratext and not tcl_arg and gloss ~= "" then
-- Copy text after {{place}} into {{place}}, unless tcl= or tcl_noextratext= is given.
local first_free = 2
while place_args[first_free] ~= nil do first_free = first_free + 1 end
if place_args[first_free - 1]:find("<<") then
-- new-style argument; concatenate to end of argument
if not gloss:find("^[,;.]") then
gloss = " " .. gloss
end
place_args[first_free - 1] = place_args[first_free - 1] .. gloss
else
-- old-style argument; add as separate argument
if gloss:find("^,") then
place_args[first_free] = gloss:gsub("^, *", "")
elseif gloss:find("^;") then
place_args[first_free] = ";"
place_args[first_free + 1] = gloss:gsub("^; *", "")
else
-- the "*" ensures no extra comma
place_args[first_free] = "*" .. gloss:gsub("^ *", "")
end
end
end
end
return m_place.format {
template_args = place_args,
from_tcl = true,
drop_extra_info = drop_extra,
extra_info_overridden_set = extra_info_overridden_set,
form_of_overridden_args = form_of_overridden_args,
translation_follows = place_translation_follows,
}
end,
}
elseif name == "abbreviation of" or name == "abbr of" or name == "abbrev of"
or name == "acronym of" or name == "ellipsis of"
or name == "contraction of" or name == "contr of"
or name == "initialism of" or name == "init of"
or name == "short for" or name == "synonym of" then
return {
should_remove = true,
must_be_first = true,
generate = function(data)
local formatted_gloss = ""
if not data.no_gloss then
local formatted_link = full_link{
term = args[2], alt = args[3], lang = data.source_lang, id = args["id"]
}
local after_link = ""
if data.gloss ~= "" then
local separator = (args["nodot"] and "") or ((args["dot"] or ";") .. " ")
after_link = separator .. data.gloss
end
formatted_gloss = " " .. gloss_left .. formatted_link .. after_link .. gloss_right
end
return data.formatted_to .. full_link{
term = data.source, lang = data.source_lang, id = data.id
} .. formatted_gloss
end,
}
end
return nil
end
function export.show(frame)
local boolean = {type = "boolean"}
local list = {list = true}
local required = {required = true}
local params = {
[1] = {required = true, type = "language"}, -- langcode of target language (the current entry's language)
[2] = {list = true, required = true}, -- source English term to transclude from and/or form-or directives
id = true, -- can have multiple comma-separated IDs
sort = true,
nogloss = {default = false, type = "boolean"},
no_truncate_gloss = boolean,
-- Normally, we ignore most of the extra info (capital, largest city, official name, etc.) when transcluding
-- {{place}} because the given terms are in English and will likely differ from language to language.
include_place_extra_info = boolean,
-- Normally the translation (the transcluded page or overriding value in t=) comes first with the definition
-- following in parens, but that may not produce sensible results in some cases, such as initialisms; e.g. if
-- we define [[GDR]] as
-- {{place|en|@init of:German Democratic Republic|@official name of:East Germany|former country|r/Central Europe}}
-- and then we define Polish [[NRD]] as
-- {{tcl|pl|GDR|place_init_of=Niemiecka Republika Demokratyczna<eq:German Democratic Republic>}}, we get
-- "GDR (initialism of Niemiecka Republika Demokratyczna (= German Democratic Republic), official name of East Germany, a former country in Central Europe)"
-- which makes no sense as GDR is not an initialism of [[Niemiecka Republika Demokratyczna]]. Instead what we
-- want is a display more like
-- "initialism of Niemiecka Republika Demokratyczna (= German Democratic Republic), official name of East Germany, a former country in Central Europe: [[GDR]]".
-- `place_translation_follows=1` causes that to happen, and it also happens by default whenever an argument like
-- place_init_of= (or more generally, any of the form-of directives that are marked as `default_foreign`); to
-- disable the postposed display in that case, use `place_translation_follows=0`.
place_translation_follows = boolean,
place_addl = true,
lb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nolb = true, -- can have multiple comma-separated or (for compatibility) semicolon-separated labels
nocat = boolean,
to = boolean,
t = list,
indent = true,
dot = boolean,
pagename = true,
}
for _, extra_arg_spec in ipairs(m_place.extra_info_args) do
params["place_" .. extra_arg_spec.arg] = list
end
for form_of_directive, directive_spec in pairs(m_place.all_form_of_directives) do
params["place_" .. (form_of_directive:gsub(" ", "_"))] = directive_spec.alias_of and
{alias_of = "place_" .. (directive_spec.alias_of:gsub(" ", "_"))} or true
end
local args = process_params(frame:getParent().args, params)
local pagename = args.pagename or mw.loadData(headword_data_module).pagename
local language = args[1]
local language_code = language:getCode()
local source
local place_form_of_directives = {}
if args[2][1]:find("^@") then
-- form-of directives in place of source
for i, arg in ipairs(args[2]) do
if arg:find("^@") then
local directive, value = parse_form_of_directive(arg)
insert(place_form_of_directives, {
directive = directive,
value = value,
})
elseif i ~= #args[2] then
error(("When form-of directives are specified, the source must come last, but saw source %s=%s " ..
"when higher-numbered arguments exist"):format(i + 1, arg))
else
source = arg
end
end
if not source then
source = place_form_of_directives[#place_form_of_directives].value:gsub("<.*", "")
end
elseif args[2][2] then
error(("Extraneous argument 3=%s"):format(args[2][2]))
else
source = args[2][1]
end
local source_lang = enlang
local source_langcode = source_lang:getCode()
local source_langname = source_lang:getFullName()
local ids = args.id and split(args.id, ",") or {""}
local sort = args.sort
if source == "+" then
source = pagename
end
local source_is_current_page = source == pagename
local copy_sortkey = (sort == nil) and source_is_current_page
local no_gloss = args.nogloss
local labels = args.lb and split_labels(args.lb) or {}
local to = args.to
local function issue_error(msg)
if source_is_current_page and is_preview() then
msg = msg .. ". NOTE: You are in preview mode. If you're previewing only part of the page, try previewing the full page, as the error may go away."
end
error(msg)
end
local content = mw.title.new(source):getContent()
if content == nil then
issue_error("Couldn't find the entry [[" .. source .. "]]")
end
-- Remove HTML comments.
content = remove_comments(content)
-- Remove <ref></ref> with nothing inside the first <ref>.
content = content:gsub("< *[rR][eE][fF] *>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref ...></ref> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*>.-< */ *[rR][eE][fF] *>", "")
-- Remove <ref/> with nothing inside the <ref>.
content = content:gsub("< *[rR][eE][fF] */ *>", "")
-- Remove <ref .../> but don't get confused by inline modifiers <ref:...>.
content = content:gsub("< *[rR][eE][fF][^%a>/:][^>/]*/ *>", "")
-- TODO: Handle <nowiki> (it's more complex than just cutting it out too).
local retlines = {}
for _, id in ipairs(ids) do
local nolb
local found_labels = {}
local line_start, line
if id == "" then
id = nil
end
if id ~= nil then
local senseid_start, senseid_end = content:find("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
if senseid_start == nil then
senseid_start, senseid_end = content:find("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *" .. pattern_escape(id) .. " *}}")
end
if senseid_start == nil then
local alternatives = nil
for id in content:gmatch("{{ *senseid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
for id in content:gmatch("{{ *sid *| *" .. pattern_escape(source_langcode) .. " *| *([^}]*)}}") do
alternatives = alternatives and alternatives .. ", " .. id or id
end
if alternatives then
alternatives = ": Alternatives for |id= are: " .. alternatives
else
alternatives = ""
end
issue_error("Couldn't find the template {{[[Template:senseid|senseid]]|" .. source_langcode .. "|" .. id .. "}} within entry [[" .. source .. "]]" .. alternatives)
end
-- Do the following manually instead of using regex or iterators in hopes of saving memory.
local newline, pound = 10, 35
line_start = senseid_start
while line_start > 0 and content:byte(line_start - 1) ~= newline do line_start = line_start - 1 end
local def_start = line_start
while content:byte(def_start) == pound do def_start = def_start + 1 end
local line_end = senseid_end
while line_end < content:len() and content:byte(line_end + 1) ~= newline do line_end = line_end + 1 end
line = content:sub(def_start, senseid_start - 1) .. content:sub(senseid_end + 1, line_end)
else -- id == nil
local _, start_source = find(content, "==[ \t]*" .. pattern_escape(source_langname) .. "[ \t]*==")
if not start_source then
issue_error(("Couldn't find L2 header for source language '%s' on page [[%s]]"):format(source_langname,
source))
end
-- Find index of start of next language; may be nil if no language follows.
local _, start_next_lang = find(content, "\n==[^=\n]+==", start_source, false)
content = content:sub(start_source, start_next_lang)
while true do
local next_line_start
_, next_line_start = find(content, "\n#+[^:*]", line_start, false)
if not next_line_start then
break
end
if line_start then
local first_line = match(content, "(.-)%f[\n%z]", line_start)
local next_line = match(content, "(.-)%f[\n%z]", next_line_start + 1)
issue_error(("No id specified and saw two definition lines '%s' and '%s' for source language '%s' on page [[%s]]"):format(
escape_wikicode(first_line), escape_wikicode(next_line), source_langname, source))
end
line_start = next_line_start + 1
end
if not line_start then
issue_error(("Couldn't find any definition lines for source language '%s' on page [[%s]]"):format(
source_langname, source))
end
line = match(content, "(.-)%f[\n%z]", line_start)
end
if to == nil then
local i = line_start
while i > 1 do
i = i - 1 -- i is now the index of the newline
while i > 1 and content:byte(i - 1) ~= 0xA do i = i - 1 end
local header = content:match("^===+([^=\n]+)===+ *\n", i)
if header then
to = (header:match("Verb") ~= nil)
break
end
end
end
-- TODO: Remove this error once <nowiki> is handled correctly (see above TODO).
if line:find("< *nowiki%W") or line:find("< */ *nowiki%W") then
error("Cannot handle <nowiki>")
end
-- Quick'n'dirty templatization of manual cats so that the below code also works for them.
for _, v in ipairs({{source_langcode .. ":", "c"}, {source_lang:getCanonicalName() .. " ", "cln"}, {"", "cat"}}) do
line = line:gsub("%[%[ *Category *: *" .. v[1] .. "([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1}}")
line = line:gsub("%[%[ *Category *%: *" .. v[1] .. "([^%]|]*)%|([^%]|]*)%]%]", "{{" .. v[2] .. "|" .. source_langcode .. "|%1|sort=%2}}")
end
-- Extract template information.
local cats = {}
local cats_cln = {}
local cats_top = {}
local encountered_label = false
local generator = nil
local sortkeys = {}
local sortkey_most_frequent = nil
local sortkey_most_frequent_n = 0
local function process_template(name, tempargs, is_at_the_start)
-- Expand any nested templates in template arguments.
for k, v in pairs(tempargs) do
tempargs[k] = preprocess(frame, v)
end
local supports_sortkey = false
local should_remove = true -- If set, removes the template from the line after processing.
local must_be_first = false -- If set, ensures that nothing (except for removed templates) preceeds this template.
local definition_template_handler = handle_definition_template {
name = name,
template_args = tempargs,
transclude_args = args,
place_form_of_directives = place_form_of_directives,
}
if definition_template_handler ~= nil then
if generator ~= nil then
error("Encountered {{[[Template:" .. name .. "|" .. name .. "]]}} even though a full definition template has already been processed")
end
should_remove = definition_template_handler.should_remove
must_be_first = definition_template_handler.must_be_first
generator = definition_template_handler.generate
elseif name == "categorize" or name == "cat" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangname" or name == "cln" then
copy_unnamed_args_maybe_except_code(cats, tempargs)
supports_sortkey = true
elseif name == "catlangcode" or name == "topics" or name == "top" or name == "C" or name == "c" then
copy_unnamed_args_maybe_except_code(cats_top, tempargs)
supports_sortkey = true
elseif name == "label" or name == "lbl" or name == "lb" then
if encountered_label then
error("Encountered multiple {{[[Template:label|label]]}} templates in the definition line")
end
encountered_label = true
copy_unnamed_args_maybe_except_code(found_labels, tempargs)
supports_sortkey = true
must_be_first = true
elseif name == "defdate" or name == "defdt" or name == "century" or name == "ref" or name == "refn" or name == "rfd-sense" or name == "rfv-sense" or name == "senseid" or name == "sid" then
-- Remove and do nothing.
else
-- We are dealing with a template other than the above hard-coded ones.
-- If it contains the language code, we cannot handle it.
if tempargs[1] == source_langcode then
error("Cannot handle template {{[[Template:" .. name .. "|" .. name .. "]]}}")
end
supports_sortkey = tempargs["sort"] or tempargs["sort1"] -- TODO: This doesn't handle the case where there is only sortn but not sort1/sort.
should_remove = false -- Leave the template in and just copy it, e.g. [[Template:,]], [[Template:gloss]], [[Template:qualifier]], [[Template:w]] etc.
end
if supports_sortkey then
if tempargs["sort1"] ~= nil then
error("Cannot handle multiple sort keys")
end
local sortkey = tempargs["sort"]
if sortkey ~= nil then
if sortkeys[sortkey] == nil then
sortkeys[sortkey] = 1
else
sortkeys[sortkey] = sortkeys[sortkey] + 1
end
if sortkeys[sortkey] > sortkey_most_frequent_n then
sortkey_most_frequent = sortkey
sortkey_most_frequent_n = sortkeys[sortkey]
end
end
end
if must_be_first and not is_at_the_start then
error("The template {{[[Template:" .. name .. "|" .. name .. "]]}} should occur to the front of the definition line")
end
return should_remove
end
line = remove_templates_if(line, process_template)
line = line:gsub("^%s+", ""):gsub("%s+$", "") -- Prune ends.
-- Tidy up the remaining definition (to be used as a gloss).
-- Truncate full sentences after a period, as they won't be formatted well as a gloss. Require a space after
-- the period as a possible way of reducing false positives with abbreviations.
local gloss = line
if not args.no_truncate_gloss then
-- Substitute a list of known abbreviations that shouldn't mark the end-point of the gloss, which will be reinserted after truncation.
local abbrevs = {"A.D.", "B.C.", "B.C.E.", "c[af]?.", "C.E.", "e.g.", "fl.", "i.[ae].", "r.", "sc.", "scil.", "viz.", "vs?."}
local substitutes, i = {}, 0
local function insert_substitute(m)
i = i + 1
insert(substitutes, m)
return u(0x80000 + i)
end
for j, abbrev in ipairs(abbrevs) do
abbrev = abbrev:gsub("%.", "%%.")
:gsub("%f[^.].", " *%0")
abbrevs[j] = abbrev
gloss = gloss:gsub("%f[%S]" .. abbrev .. "%f[%s]", insert_substitute)
end
gloss = gloss:gsub("%s*%. .*$", "")
:gsub("\242[\128-\191]*", function(m)
return substitutes[codepoint(m) - 0x80000]
end)
end
gloss = gloss:gsub("^%u", lower):gsub("%.$", "")
gloss = gloss:gsub("^{{1|([^}|]*)}}", "%1") -- Remove [[Template:1]]
local _, link_end, link_dest_head, link_dest_tail, link_face_head, link_face_tail = gloss:find("^%[%[(.)([^|%]]*)|(.)([^%]]*)%]%]") -- Remove [[foo|Foo]]
if link_end ~= nil and link_dest_tail == link_face_tail and link_face_head:lower() == link_dest_head then
gloss = "[[" .. link_dest_head .. link_dest_tail .. gloss:sub(link_end - 1)
end
gloss = preprocess(frame, gloss)
if copy_sortkey then
sort = sortkey_most_frequent
end
local formatted_senseid = ""
local formatted_senseid_close = ""
if id ~= nil then
formatted_senseid = senseid(language, id, "span")
if formatted_senseid:find("<span") then
formatted_senseid_close = "</span>"
end
end
local formatted_categories = args.nocat and "" or (
((next(cats ) == nil) and "" or frame:expandTemplate({title = "cat", args = {language_code, unpack(cats )}})) ..
((next(cats_cln) == nil) and "" or frame:expandTemplate({title = "cln", args = {language_code, unpack(cats_cln)}})) ..
((next(cats_top) == nil) and "" or frame:expandTemplate({title = "top", args = {language_code, unpack(cats_top)}}))
)
local formatted_to = to and "to " or ""
local formatted_definition
if generator ~= nil then
local data = {
frame = frame, lang = language, source = source, source_lang = source_lang, id = id,
sort = sort, nocat = args.nocat, no_gloss = no_gloss, gloss = gloss, formatted_to = formatted_to,
}
formatted_definition = generator(data)
nolb = data.nolb or nolb
else
local formatted_link = full_link{term = source, lang = source_lang, id = id}
local formatted_gloss = no_gloss and "" or (" " .. gloss_left .. gloss .. gloss_right)
formatted_definition = formatted_to .. formatted_link .. formatted_gloss
end
nolb = args.nolb or nolb
local labels_to_ignore = nil
local ignore_all_labels = false
if nolb then
if nolb == "+" or nolb == "1" or nolb == "*" then
ignore_all_labels = true
else
labels_to_ignore = split_labels(nolb)
end
end
local this_labels = deep_copy(labels)
if not ignore_all_labels then
copy_unnamed_args_maybe_except_code(this_labels, found_labels, labels_to_ignore, 1)
end
local formatted_labels = (next(this_labels) == nil) and "" or (show_labels{labels = this_labels, lang = language, sort = sort} .. " ")
insert(retlines, formatted_senseid .. formatted_categories .. formatted_labels .. formatted_definition ..
formatted_senseid_close .. (args.dot and "." or ""))
end
return concat(retlines, "\n" .. (args.indent or "#") .. " ")
end
return export
n8xzda9ekxq9edzllczdal5eomtvh31
ප්රවර්ගය:පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න
14
125370
233708
193045
2026-05-09T04:26:09Z
Pinthura
2424
Pinthura විසින් [[ප්රවර්ගය:පාලි යෙදුම්, Indo-Iranian භාෂා වෙතින් ව්යුත්පන්න]] සිට [[ප්රවර්ගය:පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්රවර්ග නාමය වෙත ගෙනයාම.
193043
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
233710
233708
2026-05-09T04:27:15Z
Pinthura
2424
සේවා: ඉංග්රීසි ව්යාපෘතිය වෙත සබැඳියක් එක් කිරීම.
233710
wikitext
text/x-wiki
{{auto cat}}
[[en:Category:Pali terms derived from Indo-Iranian languages]]
6jy51u376k6mr5n24gsajvhrttoa19r
අතළ
0
129946
233612
224166
2026-05-08T13:32:59Z
WrdSrchSi
3305
infl of|si > alternative form of|si
233612
wikitext
text/x-wiki
==සිංහල==
===ක්රියා පද===
{{head|si|verb forms|head=අතළ}}
# {{lb|si|සකර්මක}} {{alternative form of|si|ඇතිරී#ක්රියා පද 1}}
# {{lb|si|සකර්මක}} {{alternative form of|si|ඇතිරූ#ක්රියා පද}}
# {{lb|si|අකර්මක}} {{alternative form of|si|ඇතිරිණි#ක්රියා පද 1}}
# {{lb|si|අකර්මක}} {{alternative form of|si|ඇතිරුණු#ක්රියා පද 1}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
rewborkqzt6mhrccqxp1ugcx6zvjvpd
233613
233612
2026-05-08T13:35:19Z
WrdSrchSi
3305
+ IPA|si
233613
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈatuɭə/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතළ}}
# {{lb|si|සකර්මක}} {{alternative form of|si|ඇතිරී#ක්රියා පද 1}}
# {{lb|si|සකර්මක}} {{alternative form of|si|ඇතිරූ#ක්රියා පද}}
# {{lb|si|අකර්මක}} {{alternative form of|si|ඇතිරිණි#ක්රියා පද 1}}
# {{lb|si|අකර්මක}} {{alternative form of|si|ඇතිරුණු#ක්රියා පද 1}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
g7p3rp9sy2gs64ues37h8e4701ql8k2
අදිති
0
131404
233740
224221
2026-05-09T06:15:26Z
WrdSrchSi
3305
+ වෙනත් ආකාර + ස්වර ලොපය
233740
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අදිත්#ක්රියා පද|අදිත්}}
=== නිරුක්තිය ===
{{etymon|si|id=අද ඉති|af|si>අද#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඉති>ප්රත්ය|tree=1}}
''[[අද#ධාතු ප්රකෘතිය|අද]] (ප්රකෘතිය) + [[-ඉති]] (ප්රත්ය) > අද් - '''අ''' ([[ස්වර ලොපය]]) + -ඉති > '''' [[අදිති]]
===උච්චාරණය===
* {{IPA|si|/ˈaditi/}}
===ක්රියා පද===
{{head|si|verb forms|head=අදිති|අතීත-සකර්මක අන්ය පුරුෂ බහුවචන|ඇදි#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදෙති#ක්රියා පද|අතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදුණු#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අදී#ක්රියා පද||අනතීත|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
==== පරිවර්තන ====
''පරිවර්තන සඳහා අනාගත කාලය සලකා නැත.''
{{trans-top|අදිති}}
* ඉංග්රීසි: {{t|en|pull}}
{{trans-bottom}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
0ze2wv18xpeh9h9rjoeqndjvefvusv6
Algeria
0
134631
233722
226279
2026-05-09T04:46:17Z
Lee
19
/* Anagrams */
233722
wikitext
text/x-wiki
{{also|algerià|Algéria|Algèria}}
== ඉංග්රීසි ==
=== නිරුක්තිය ===
From {{af|en|Alger|-ia}}, modified based on {{bor|en|fr|Algérie}}, from the French {{af|fr|Alger|t1=Algiers|-ie|nocat=1}}, from {{der|en|arq|الدزَاير|tr=ed-dzayer}}, from {{der|en|ar|اَلْجَزَائِر||the islands}} (with elision of the first vowel), plural of {{m|ar|جَزِيرَة||island}}, referring to the several small islands that once existed in the Bay of Algiers.<ref>{{R:Etymological Dictionary of Arabic|entry=ǧazar‑ جَزَرَ|url=
http://www2.hf.uio.no/common/apps/permlink/permlink.php?app=polyglotta&context=record&uid=337b8bff-7861-11ed-9f71-005056a97067|accessdate=30 July 2019}}</ref> {{doublet|en|Algiers|Algeciras}}. {{root|en|ar|ج ز ر}}
=== උච්චාරණය ===
* {{IPA|en|/ælˈdʒɪəɹiə/|a=RP}}
* {{IPA|en|/ælˈdʒɪɹiə/|a=GA}}
* {{audio|en|LL-Q1860 (eng)-Soundguys-Algeria.wav|a=UK}}
* {{audio|en|En-us-Algeria.ogg|a=US}}
* {{rhymes|en|ɪɹiə|s=4}}
=== සංඥා නාම පදය ===
{{en-proper noun}}
# {{senseid|en|Q262}} [[ඇල්ජීරියාව]]; {{place|en|country|r/North Africa|caplc=Algiers|official=People's Democratic Republic of Algeria}}.
## {{lb|en|historical}} Ottoman Algeria, also the regency of Algiers or al-Jazā’ir in Arabic, from 1515 to 1830
## {{lb|en|historical}} French or Colonial Algeria, from 1830 to 1962
## The [[People’s Democratic Republic of Algeria]], since 1962
==== ව්යුත්පන්න යෙදුම් ====
* {{l|en|Algerian}}
====Descendants====
* {{desc|ja|bor=1|アルジェリア|tr=Arujeria}}
=== අමතර අවධානයට ===
* [[Appendix:Countries of the world]]
{{list:countries in Africa/en}}
{{list:provinces of Algeria/en}}
=== මූලාශ්ර ===
<references/>
{{cln|en|terms suffixed with -ia|exonyms}}
== ෆින්ලන්ත ==
{{wp|lang=fi}}
=== නිරුක්තිය ===
From {{der|fi|fr|Algérie}}. Compare {{cog|en|Algeria}}.
=== උච්චාරණය ===
{{fi-p}}
=== සංඥා නාම පදය ===
{{fi-proper noun}}
# {{tcl|fi|Algeria|id=Q262}}
==== වරනැඟීම ====
{{fi-decl-kulkija|n=sg|Algeri|a}}
=== සංඥා නාම පදය ===
{{head|fi|proper noun form}}
# {{inflection of|fi|Alger||par|s}}
==== ව්යුත්පන්න යෙදුම් ====
{{col|fi
|algerialainen
}}
{{col|fi|title=compounds
|algerianarabia
|algeriangundi
|algeriannakkeli
|algeriantamaani
}}
===Anagrams===
* {{anagrams|fi|a=aaegilr|regaali}}
== ඉතාලි ==
{{wikipedia|lang=it}}
[[File:Algeria_(orthographic_projection).svg|thumb|right|250px]]
=== නිරුක්තිය ===
From {{der|it|ar|اَلْجَزَائِر|t=the islands}}, plural of {{m|ar|جَزِيرَة|t=island}}, referring to the several small islands that once existed in the Bay of Algiers.
=== උච්චාරණය ===
{{it-pr|+<audio:It-Algeria.ogg>}}
=== සංඥා නාම පදය ===
{{it-proper noun|f}}
# {{tcl|it|Algeria|id=Q262}}
==== ව්යුත්පන්න යෙදුම් ====
* {{l|it|algerino}}
===Anagrams===
* {{anagrams|it|a=aaegilr|aligera|regalai|regalia}}
{{cln|it|exonyms}}
== රුමේනියානු ==
{{wp|lang=ro}}
=== නිරුක්තිය ===
{{bor+|ro|fr|Algérie}}.
=== උච්චාරණය ===
* {{IPA|ro|/alˈd͡ʒe.ri.a/}}
* {{rhymes|ro|eria|s=4}}
* {{hyph|ro|Al|ge|ri|a}}
=== සංඥා නාම පදය ===
{{head|ro|proper noun|g=f|genitive/dative|Algeriei}}
# {{tcl|ro|Algeria|id=Q262}}
==== වරනැඟීම ====
{{ro-noun-f-ie|Algeri|n=sg}}
==== ආශ්රිත යෙදුම් ====
* {{l|ro|Alger}}
* {{l|ro|algerian}}
* {{l|ro|algeriană}}
==Swahili==
{{wp|lang=sw}}
=== වෙනත් ආකාර ===
* {{alter|sw|Aljeria}}
=== උච්චාරණය ===
* {{audio|sw|Sw-ke-Algeria.flac|a=Kenya}}
=== සංඥා නාම පදය ===
{{head|sw|proper noun}}
# {{tcl|sw|Algeria|id=Q262}}
=== අමතර අවධානයට ===
{{list:countries in Africa/sw}}
== වේල්ස ==
{{wp|lang=cy}}
=== නිරුක්තිය ===
From {{bor|cy|en|Algeria}}, from {{der|cy|fr|Algérie}}, ultimately from {{der|cy|ar|اَلْجَزَائِر}}.
=== උච්චාරණය ===
* {{IPA|cy|/alˈd͡ʒɛrja/|/alˈd͡ʒiːrja/}}
=== සංඥා නාම පදය ===
{{cy-proper noun|f}}
# {{tcl|cy|Algeria|id=Q262}}
==== ව්යුත්පන්න යෙදුම් ====
* {{l|cy|Algeraidd|pos=adjective|t=Algerian}}
* {{l|cy|Algeriad||Algerian (man/woman)}}
* {{l|cy|delor cnau Algeria||Kabylie nuthatch}}
* {{l|cy|derw Algeria||Algerian oak}}
* {{l|cy|gellesg Algeria||Algerian irises}}
* {{l|cy|Gweriniaeth Ddemocrataidd Pobl Algeria||People's Democratic Republic of Algeria}}
* {{l|cy|iorwg Algeria||Algerian ivy}}
===Mutation===
{{cy-mut}}
=== අමතර අවධානයට ===
{{list:countries in Africa/cy}}
{{cln|cy|exonyms}}
jxglvy9fj9xnrn8cre34z8ncloidbtm
233723
233722
2026-05-09T04:46:43Z
Lee
19
/* Anagrams */
233723
wikitext
text/x-wiki
{{also|algerià|Algéria|Algèria}}
== ඉංග්රීසි ==
=== නිරුක්තිය ===
From {{af|en|Alger|-ia}}, modified based on {{bor|en|fr|Algérie}}, from the French {{af|fr|Alger|t1=Algiers|-ie|nocat=1}}, from {{der|en|arq|الدزَاير|tr=ed-dzayer}}, from {{der|en|ar|اَلْجَزَائِر||the islands}} (with elision of the first vowel), plural of {{m|ar|جَزِيرَة||island}}, referring to the several small islands that once existed in the Bay of Algiers.<ref>{{R:Etymological Dictionary of Arabic|entry=ǧazar‑ جَزَرَ|url=
http://www2.hf.uio.no/common/apps/permlink/permlink.php?app=polyglotta&context=record&uid=337b8bff-7861-11ed-9f71-005056a97067|accessdate=30 July 2019}}</ref> {{doublet|en|Algiers|Algeciras}}. {{root|en|ar|ج ز ر}}
=== උච්චාරණය ===
* {{IPA|en|/ælˈdʒɪəɹiə/|a=RP}}
* {{IPA|en|/ælˈdʒɪɹiə/|a=GA}}
* {{audio|en|LL-Q1860 (eng)-Soundguys-Algeria.wav|a=UK}}
* {{audio|en|En-us-Algeria.ogg|a=US}}
* {{rhymes|en|ɪɹiə|s=4}}
=== සංඥා නාම පදය ===
{{en-proper noun}}
# {{senseid|en|Q262}} [[ඇල්ජීරියාව]]; {{place|en|country|r/North Africa|caplc=Algiers|official=People's Democratic Republic of Algeria}}.
## {{lb|en|historical}} Ottoman Algeria, also the regency of Algiers or al-Jazā’ir in Arabic, from 1515 to 1830
## {{lb|en|historical}} French or Colonial Algeria, from 1830 to 1962
## The [[People’s Democratic Republic of Algeria]], since 1962
==== ව්යුත්පන්න යෙදුම් ====
* {{l|en|Algerian}}
====Descendants====
* {{desc|ja|bor=1|アルジェリア|tr=Arujeria}}
=== අමතර අවධානයට ===
* [[Appendix:Countries of the world]]
{{list:countries in Africa/en}}
{{list:provinces of Algeria/en}}
=== මූලාශ්ර ===
<references/>
{{cln|en|terms suffixed with -ia|exonyms}}
== ෆින්ලන්ත ==
{{wp|lang=fi}}
=== නිරුක්තිය ===
From {{der|fi|fr|Algérie}}. Compare {{cog|en|Algeria}}.
=== උච්චාරණය ===
{{fi-p}}
=== සංඥා නාම පදය ===
{{fi-proper noun}}
# {{tcl|fi|Algeria|id=Q262}}
==== වරනැඟීම ====
{{fi-decl-kulkija|n=sg|Algeri|a}}
=== සංඥා නාම පදය ===
{{head|fi|proper noun form}}
# {{inflection of|fi|Alger||par|s}}
==== ව්යුත්පන්න යෙදුම් ====
{{col|fi
|algerialainen
}}
{{col|fi|title=compounds
|algerianarabia
|algeriangundi
|algeriannakkeli
|algeriantamaani
}}
== ඉතාලි ==
{{wikipedia|lang=it}}
[[File:Algeria_(orthographic_projection).svg|thumb|right|250px]]
=== නිරුක්තිය ===
From {{der|it|ar|اَلْجَزَائِر|t=the islands}}, plural of {{m|ar|جَزِيرَة|t=island}}, referring to the several small islands that once existed in the Bay of Algiers.
=== උච්චාරණය ===
{{it-pr|+<audio:It-Algeria.ogg>}}
=== සංඥා නාම පදය ===
{{it-proper noun|f}}
# {{tcl|it|Algeria|id=Q262}}
==== ව්යුත්පන්න යෙදුම් ====
* {{l|it|algerino}}
===Anagrams===
* {{anagrams|it|a=aaegilr|aligera|regalai|regalia}}
{{cln|it|exonyms}}
== රුමේනියානු ==
{{wp|lang=ro}}
=== නිරුක්තිය ===
{{bor+|ro|fr|Algérie}}.
=== උච්චාරණය ===
* {{IPA|ro|/alˈd͡ʒe.ri.a/}}
* {{rhymes|ro|eria|s=4}}
* {{hyph|ro|Al|ge|ri|a}}
=== සංඥා නාම පදය ===
{{head|ro|proper noun|g=f|genitive/dative|Algeriei}}
# {{tcl|ro|Algeria|id=Q262}}
==== වරනැඟීම ====
{{ro-noun-f-ie|Algeri|n=sg}}
==== ආශ්රිත යෙදුම් ====
* {{l|ro|Alger}}
* {{l|ro|algerian}}
* {{l|ro|algeriană}}
==Swahili==
{{wp|lang=sw}}
=== වෙනත් ආකාර ===
* {{alter|sw|Aljeria}}
=== උච්චාරණය ===
* {{audio|sw|Sw-ke-Algeria.flac|a=Kenya}}
=== සංඥා නාම පදය ===
{{head|sw|proper noun}}
# {{tcl|sw|Algeria|id=Q262}}
=== අමතර අවධානයට ===
{{list:countries in Africa/sw}}
== වේල්ස ==
{{wp|lang=cy}}
=== නිරුක්තිය ===
From {{bor|cy|en|Algeria}}, from {{der|cy|fr|Algérie}}, ultimately from {{der|cy|ar|اَلْجَزَائِر}}.
=== උච්චාරණය ===
* {{IPA|cy|/alˈd͡ʒɛrja/|/alˈd͡ʒiːrja/}}
=== සංඥා නාම පදය ===
{{cy-proper noun|f}}
# {{tcl|cy|Algeria|id=Q262}}
==== ව්යුත්පන්න යෙදුම් ====
* {{l|cy|Algeraidd|pos=adjective|t=Algerian}}
* {{l|cy|Algeriad||Algerian (man/woman)}}
* {{l|cy|delor cnau Algeria||Kabylie nuthatch}}
* {{l|cy|derw Algeria||Algerian oak}}
* {{l|cy|gellesg Algeria||Algerian irises}}
* {{l|cy|Gweriniaeth Ddemocrataidd Pobl Algeria||People's Democratic Republic of Algeria}}
* {{l|cy|iorwg Algeria||Algerian ivy}}
===Mutation===
{{cy-mut}}
=== අමතර අවධානයට ===
{{list:countries in Africa/cy}}
{{cln|cy|exonyms}}
lkydx2ltpeezslg4da2qivcwc8rb5hh
Module:families/code to canonical name.json
828
137313
233732
221293
2026-02-13T20:30:14Z
en>Mellohi!
0
[[MediaWiki:UpdateLanguageNameAndCode.js|updated]]
233732
json
application/json
{
"aav": "Austroasiatic",
"aav-khs": "Khasian",
"aav-nic": "Nicobarese",
"aav-pkl": "Pnar-Khasi-Lyngngam",
"afa": "Afroasiatic",
"alg": "Algonquian",
"alg-abp": "Abenaki-Penobscot",
"alg-ara": "Arapahoan",
"alg-eas": "Eastern Algonquian",
"alg-sfk": "Sac-Fox-Kickapoo",
"alv": "Atlantic-Congo",
"alv-aah": "Ayere-Ahan",
"alv-ada": "Adamawa",
"alv-bag": "Baga",
"alv-bak": "Bak",
"alv-bam": "Bambukic",
"alv-bny": "Banyum",
"alv-bua": "Bua",
"alv-bwj": "Bikwin-Jen",
"alv-cng": "Cangin",
"alv-ctn": "Central Tano",
"alv-dlt": "Delta Edoid",
"alv-dur": "Duru",
"alv-ede": "Ede",
"alv-edk": "Edekiri",
"alv-edo": "Edoid",
"alv-eeo": "Edo-Esan-Ora",
"alv-fli": "Fali",
"alv-fwo": "Fula-Wolof",
"alv-gbe": "Gbe",
"alv-gda": "Ga-Dangme",
"alv-gng": "Guang",
"alv-gtm": "Ghana-Togo Mountain",
"alv-hei": "Heiban",
"alv-ido": "Idomoid",
"alv-igb": "Igboid",
"alv-jfe": "Jola-Felupe",
"alv-jol": "Jola",
"alv-kim": "Kim",
"alv-kis": "Kissi",
"alv-krb": "Karaboro",
"alv-ktg": "Ka-Togo",
"alv-kul": "Kulango",
"alv-kwa": "Kwa",
"alv-lag": "Lagoon",
"alv-lek": "Leko",
"alv-lim": "Limba",
"alv-lni": "Leko-Nimbari",
"alv-mbd": "Mbum-Day",
"alv-mbm": "Mbum",
"alv-mel": "Mel",
"alv-mum": "Mumuye",
"alv-mye": "Mumuye-Yendang",
"alv-nal": "Nalu",
"alv-nce": "North-Central Edoid",
"alv-ngb": "Nupe-Gbagyi",
"alv-ntg": "Na-Togo",
"alv-nup": "Nupoid",
"alv-nwd": "Northwestern Edoid",
"alv-nyn": "Nyun",
"alv-pap": "Papel",
"alv-pph": "Phla-Pherá",
"alv-ptn": "Potou-Tano",
"alv-sav": "Savanna",
"alv-sma": "Supyire-Mamara",
"alv-snf": "Senufo",
"alv-sng": "Senegambian",
"alv-snr": "Senari",
"alv-swd": "Southwestern Edoid",
"alv-tal": "Talodi",
"alv-tdj": "Tagwana-Djimini",
"alv-ten": "Tenda",
"alv-the": "Talodi-Heiban",
"alv-von": "Volta-Niger",
"alv-wan": "Wara-Natyoro",
"alv-wjk": "Waja-Kam",
"alv-yek": "Yekhee",
"alv-yor": "Yoruba",
"alv-yrd": "Yoruboid",
"alv-yun": "Yungur",
"apa": "Apachean",
"aqa": "Alacalufan",
"aql": "Algic",
"art": "constructed",
"ath": "Athabaskan",
"ath-nor": "North Athabaskan",
"ath-pco": "Pacific Coast Athabaskan",
"auf": "Arauan",
"aus-arn": "Arnhem",
"aus-bub": "Bunuban",
"aus-cww": "Central New South Wales",
"aus-dal": "Daly",
"aus-dyb": "Dyirbalic",
"aus-gar": "Garawan",
"aus-gun": "Gunwinyguan",
"aus-jar": "Jarrakan",
"aus-kar": "Karnic",
"aus-mir": "Mirndi",
"aus-nga": "Ngayarda",
"aus-nyu": "Nyulnyulan",
"aus-pam": "Pama-Nyungan",
"aus-pmn": "Paman",
"aus-psw": "Southwest Pama-Nyungan",
"aus-rnd": "Arandic",
"aus-tnk": "Tangkic",
"aus-wdj": "Iwaidjan",
"aus-wor": "Worrorran",
"aus-yid": "Yidinyic",
"aus-yng": "Yangmanic",
"aus-yol": "Yolngu",
"aus-yuk": "Yuin-Kuric",
"awd": "Arawak",
"awd-nwk": "Nawiki",
"awd-taa": "Ta-Arawak",
"azc": "Uto-Aztecan",
"azc-cup": "Cupan",
"azc-dur": "Durango Nahuatl",
"azc-hua": "Huasteca Nahuatl",
"azc-nah": "Nahuan",
"azc-num": "Numic",
"azc-pim": "Piman",
"azc-tak": "Takic",
"azc-trc": "Taracahitic",
"bad": "Banda",
"bad-cnt": "Central Banda",
"bai": "Bamileke",
"bat": "Baltic",
"bat-eas": "East Baltic",
"bat-wes": "West Baltic",
"ber": "Berber",
"bnt": "Bantu",
"bnt-baf": "Bafia",
"bnt-bbo": "Bafo-Bonkeng",
"bnt-bdz": "Boma-Dzing",
"bnt-bek": "Bekwilic",
"bnt-bki": "Bena-Kinga",
"bnt-bmo": "Bangi-Moi",
"bnt-bne": "Northeast Bantu",
"bnt-bnm": "Bangi-Ntomba",
"bnt-boa": "Boan",
"bnt-bot": "Botatwe",
"bnt-bsa": "Basaa",
"bnt-bsh": "Bushoong",
"bnt-bso": "Southern Bantu",
"bnt-bta": "Bati-Angba",
"bnt-btb": "Beti",
"bnt-bte": "Bangi-Tetela",
"bnt-bun": "Buja-Ngombe",
"bnt-chg": "Chaga",
"bnt-cht": "Chaga-Taita",
"bnt-clu": "Chokwe-Luchazi",
"bnt-com": "Comorian",
"bnt-glb": "Great Lakes Bantu",
"bnt-haj": "Haya-Jita",
"bnt-kak": "Kako",
"bnt-kav": "Kavango",
"bnt-kbi": "Komo-Bira",
"bnt-kel": "Kele",
"bnt-kil": "Kilombero",
"bnt-kka": "Kikuyu-Kamba",
"bnt-kmb": "Kimbundu",
"bnt-kng": "Kongo",
"bnt-kpw": "Kpwe",
"bnt-ksb": "Kavango-Southwest Bantu",
"bnt-kts": "Kele-Tsogo",
"bnt-lbn": "Luban",
"bnt-leb": "Lebonya",
"bnt-lgb": "Lega-Binja",
"bnt-lok": "Logooli-Kuria",
"bnt-lub": "Luba",
"bnt-lun": "Lunda",
"bnt-mak": "Makua",
"bnt-mbb": "Mboshi-Buja",
"bnt-mbe": "Mbole-Enya",
"bnt-mbi": "Mbinga",
"bnt-mbo": "Mboshi",
"bnt-mbt": "Mbete",
"bnt-mby": "Mbeya",
"bnt-mij": "Mijikenda",
"bnt-mka": "Makaa",
"bnt-mne": "Manenguba",
"bnt-mnj": "Makaa-Njem",
"bnt-mon": "Mongo",
"bnt-mra": "Mbugwe-Rangi",
"bnt-msl": "Masaba-Luhya",
"bnt-mwi": "Mwika",
"bnt-ncb": "Northeast Coast Bantu",
"bnt-ndb": "Ndzem-Bomwali",
"bnt-ngn": "Ngondi-Ngiri",
"bnt-ngu": "Nguni",
"bnt-nya": "Nyali",
"bnt-nyb": "Nyanga-Buyi",
"bnt-nyg": "Nyoro-Ganda",
"bnt-nys": "Nyasa",
"bnt-nze": "Nzebi",
"bnt-ova": "Ovambo",
"bnt-par": "Pare",
"bnt-pen": "Pende",
"bnt-pob": "Pomo-Bomwali",
"bnt-ruk": "Rukwa",
"bnt-run": "Rungwe",
"bnt-rur": "Rufiji-Ruvuma",
"bnt-ruv": "Ruvu",
"bnt-rvm": "Ruvuma",
"bnt-sab": "Sabaki",
"bnt-saw": "Sawabantu",
"bnt-sbi": "Sabi",
"bnt-seu": "Seuta",
"bnt-shh": "Shi-Havu",
"bnt-sho": "Shona",
"bnt-sir": "Sira",
"bnt-ske": "Soko-Kele",
"bnt-sna": "Sena",
"bnt-sts": "Sotho-Tswana",
"bnt-swb": "Southwest Bantu",
"bnt-swh": "Swahili",
"bnt-tek": "Teke",
"bnt-tet": "Tetela",
"bnt-tkc": "Central Teke",
"bnt-tkm": "Takama",
"bnt-tmb": "Teke-Mbede",
"bnt-tso": "Tsogo",
"bnt-tsr": "Tswa-Ronga",
"bnt-yak": "Yaka",
"bnt-yko": "Yasa-Kombe",
"bnt-zbi": "Zamba-Binza",
"btk": "Batak",
"cau-abz": "Abkhaz-Abaza",
"cau-and": "Andian",
"cau-ava": "Avaro-Andian",
"cau-cir": "Circassian",
"cau-drg": "Dargwa",
"cau-esm": "Eastern Samur",
"cau-ets": "East Tsezian",
"cau-lzg": "Lezghian",
"cau-nec": "Northeast Caucasian",
"cau-nkh": "Nakh",
"cau-nwc": "Northwest Caucasian",
"cau-sam": "Samur",
"cau-ssm": "Southern Samur",
"cau-tsz": "Tsezian",
"cau-vay": "Vainakh",
"cau-wsm": "Western Samur",
"cau-wts": "West Tsezian",
"cba": "Chibchan",
"ccs": "Kartvelian",
"ccs-gzn": "Georgian-Zan",
"ccs-zan": "Zan",
"cdc": "Chadic",
"cdc-cbm": "Central Chadic",
"cdc-est": "East Chadic",
"cdc-mas": "Masa",
"cdc-wst": "West Chadic",
"cdd": "Caddoan",
"cel": "Celtic",
"cel-brs": "Southwestern Brythonic",
"cel-brw": "Western Brythonic",
"cel-bry": "Brythonic",
"cel-gae": "Goidelic",
"cel-his": "Hispano-Celtic",
"cel-ins": "Insular Celtic",
"chi": "Chimakuan",
"chm": "Mari",
"cmc": "Chamic",
"crp": "creole or pidgin",
"csu": "Central Sudanic",
"csu-bba": "Bongo-Bagirmi",
"csu-bbk": "Bongo-Baka",
"csu-bgr": "Bagirmi",
"csu-bkr": "Birri-Kresh",
"csu-ecs": "Eastern Central Sudanic",
"csu-kab": "Kaba",
"csu-lnd": "Lendu",
"csu-maa": "Mangbetu",
"csu-mle": "Mangbutu-Lese",
"csu-mma": "Moru-Madi",
"csu-sar": "Sara",
"csu-val": "Vale",
"cus": "Cushitic",
"cus-cen": "Central Cushitic",
"cus-eas": "East Cushitic",
"cus-hec": "Highland East Cushitic",
"cus-som": "Somaloid",
"cus-sou": "South Cushitic",
"day": "Land Dayak",
"del": "Lenape",
"den": "Slavey",
"dmn": "Mande",
"dmn-bbu": "Bisa-Busa",
"dmn-emn": "East Manding",
"dmn-jje": "Jogo-Jeri",
"dmn-man": "Manding",
"dmn-mda": "Mano-Dan",
"dmn-mdc": "Central Mande",
"dmn-mde": "Eastern Mande",
"dmn-mdw": "Western Mande",
"dmn-mjo": "Manding-Jogo",
"dmn-mmo": "Manding-Mokole",
"dmn-mnk": "Maninka",
"dmn-mnw": "Northwestern Mande",
"dmn-mok": "Mokole",
"dmn-mse": "Southeastern Mande",
"dmn-msw": "Southwestern Mande",
"dmn-mva": "Manding-Vai",
"dmn-nbe": "Nwa-Beng",
"dmn-sam": "Samo",
"dmn-smg": "Samogo",
"dmn-snb": "Soninke-Bobo",
"dmn-sya": "Susu-Yalunka",
"dmn-vak": "Vai-Kono",
"dmn-wmn": "West Manding",
"dra": "Dravidian",
"dra-cen": "Central Dravidian",
"dra-gki": "Gondi-Kui",
"dra-gon": "Gondi",
"dra-imd": "Irula-Muduga",
"dra-kan": "Kannadoid",
"dra-kki": "Konda-Kui",
"dra-kml": "Kurux-Malto",
"dra-knk": "Kolami-Naiki",
"dra-kod": "Kodagu",
"dra-kor": "Koraga",
"dra-mal": "Malayalamoid",
"dra-mdy": "Madiya",
"dra-mlo": "Malto",
"dra-mur": "Muria",
"dra-nor": "North Dravidian",
"dra-pgd": "Parji-Gadaba",
"dra-sdo": "South Dravidian I",
"dra-sdt": "South Dravidian II",
"dra-sou": "South Dravidian",
"dra-tam": "Tamiloid",
"dra-tel": "Teluguic",
"dra-tkd": "Tamil-Kodagu",
"dra-tkn": "Tamil-Kannada",
"dra-tkt": "Toda-Kota",
"dra-tlk": "Tulu-Koraga",
"dra-tml": "Tamil-Malayalam",
"egx": "Egyptian",
"ero": "Horpa",
"esx": "Eskimo-Aleut",
"esx-esk": "Eskimo",
"esx-inu": "Inuit",
"euq": "Vasconic",
"gba": "Gbaya",
"gba-eas": "Eastern Gbaya",
"gba-sou": "Southern Gbaya",
"gba-wes": "Western Gbaya",
"gem": "Germanic",
"gio": "Gelao",
"gme": "East Germanic",
"gmq": "North Germanic",
"gmq-eas": "East Scandinavian",
"gmq-ins": "Insular Scandinavian",
"gmq-wes": "West Scandinavian",
"gmw": "West Germanic",
"gmw-afr": "Anglo-Frisian",
"gmw-ang": "Anglic",
"gmw-fri": "Frisian",
"gmw-frk": "Low Franconian",
"gmw-hgm": "High German",
"gmw-ian": "Irish Anglo-Norman",
"gmw-lgm": "Low German",
"gmw-nsg": "North Sea Germanic",
"gn": "Guarani",
"grb": "Grebo proper",
"grk": "Hellenic",
"him": "Western Pahari",
"hmn": "Hmongic",
"hmx": "Hmong-Mien",
"hmx-mie": "Mienic",
"hok": "Hokan",
"hyx": "Armenian",
"iir": "Indo-Iranian",
"iir-nur": "Nuristani",
"ijo": "Ijoid",
"inc": "Indo-Aryan",
"inc-bas": "Bengali-Assamese",
"inc-bhi": "Bhil",
"inc-bih": "Bihari",
"inc-cen": "Central Indo-Aryan",
"inc-chi": "Chitrali",
"inc-dar": "Dardic",
"inc-dng": "Dangari",
"inc-dre": "Eastern Dardic",
"inc-eas": "Eastern Indo-Aryan",
"inc-hal": "Halbic",
"inc-hie": "Eastern Hindi",
"inc-hiw": "Western Hindi",
"inc-hnd": "Hindustani",
"inc-ins": "Insular Indo-Aryan",
"inc-kas": "Kashmiric",
"inc-koh": "Kohistani",
"inc-krd": "KRDS languages",
"inc-kun": "Kunar",
"inc-mid": "Middle Indo-Aryan",
"inc-nor": "Northern Indo-Aryan",
"inc-nwe": "Northwestern Indo-Aryan",
"inc-old": "Old Indo-Aryan",
"inc-pah": "Pahari",
"inc-pan": "Punjabic",
"inc-pas": "Pashayi",
"inc-rom": "Romani",
"inc-shn": "Shinaic",
"inc-snd": "Sindhic",
"inc-sou": "Southern Indo-Aryan",
"inc-tha": "Tharu",
"inc-wes": "Western Indo-Aryan",
"ine": "Indo-European",
"ine-ana": "Anatolian",
"ine-bsl": "Balto-Slavic",
"ine-luw": "Luwic",
"ine-toc": "Tocharian",
"ira": "Iranian",
"ira-cen": "Central Iranian",
"ira-csp": "Caspian",
"ira-kms": "Komisenian",
"ira-mid": "Middle Iranian",
"ira-mny": "Munji-Yidgha",
"ira-mpr": "Medo-Parthian",
"ira-msh": "Mazanderani-Shahmirzadi",
"ira-nei": "Northeastern Iranian",
"ira-nwi": "Northwestern Iranian",
"ira-old": "Old Iranian",
"ira-orp": "Ormuri-Parachi",
"ira-pat": "Pathan",
"ira-sbc": "Sogdo-Bactrian",
"ira-sei": "Southeastern Iranian",
"ira-sgc": "Sogdic",
"ira-sgi": "Sanglechi-Ishkashimi",
"ira-shr": "Shughni-Roshani",
"ira-shy": "Shughni-Yazghulami",
"ira-swi": "Southwestern Iranian",
"ira-sym": "Shughni-Yazghulami-Munji",
"ira-wes": "Western Iranian",
"ira-zgr": "Zaza-Gorani",
"iro": "Iroquoian",
"iro-nor": "North Iroquoian",
"itc": "Italic",
"itc-laf": "Latino-Faliscan",
"itc-sbl": "Osco-Umbrian",
"jpx": "Japonic",
"jpx-nry": "Northern Ryukyuan",
"jpx-ryu": "Ryukyuan",
"jpx-sry": "Southern Ryukyuan",
"kar": "Karen",
"kca": "Khanty",
"khi-kal": "Kalahari Khoe",
"khi-khk": "Khoekhoe",
"khi-kho": "Khoe",
"khi-kkw": "Khoe-Kwadi",
"khi-kxa": "Kx'a",
"khi-tuu": "Tuu",
"kro": "Kru",
"kro-aiz": "Aizi",
"kro-bet": "Bété",
"kro-did": "Dida",
"kro-ekr": "Eastern Kru",
"kro-grb": "Grebo",
"kro-wee": "Wee",
"kro-wkr": "Western Kru",
"ku": "Kurdish",
"kv": "Komi",
"map": "Austronesian",
"map-ata": "Atayalic",
"mjg": "Monguor",
"mkh": "Mon-Khmer",
"mkh-asl": "Aslian",
"mkh-ban": "Bahnaric",
"mkh-kat": "Katuic",
"mkh-khm": "Khmuic",
"mkh-kmr": "Khmeric",
"mkh-mnc": "Monic",
"mkh-mng": "Mangic",
"mkh-nbn": "North Bahnaric",
"mkh-pal": "Palaungic",
"mkh-pea": "Pearic",
"mkh-pkn": "Pakanic",
"mkh-vie": "Vietic",
"mno": "Manobo",
"mns": "Mansi",
"mun": "Munda",
"myn": "Mayan",
"nai-cat": "Catawban",
"nai-chu": "Chumashan",
"nai-ckn": "Chinookan",
"nai-coo": "Coosan",
"nai-jcq": "Jicaquean",
"nai-ker": "Keresan",
"nai-klp": "Kalapuyan",
"nai-kta": "Kiowa-Tanoan",
"nai-len": "Lencan",
"nai-mdu": "Maiduan",
"nai-min": "Misumalpan",
"nai-miz": "Mixe-Zoquean",
"nai-mus": "Muskogean",
"nai-pak": "Pakawan",
"nai-pal": "Palaihnihan",
"nai-plp": "Plateau Penutian",
"nai-pom": "Pomoan",
"nai-sca": "Siouan-Catawban",
"nai-shp": "Sahaptian",
"nai-shs": "Shastan",
"nai-tot": "Totozoquean",
"nai-tqn": "Tequistlatecan",
"nai-tsi": "Tsimshianic",
"nai-ttn": "Totonacan",
"nai-utn": "Utian",
"nai-wtq": "Wintuan",
"nai-xin": "Xincan",
"nai-ykn": "Yukian",
"nai-you": "Yok-Utian",
"nai-yuc": "Yuman-Cochimí",
"ngf": "Trans-New Guinea",
"ngf-ais": "Aisian",
"ngf-ang": "Angan",
"ngf-ank": "Angal-Kewa",
"ngf-ask": "Asmat-Kamoro",
"ngf-asm": "Asmat",
"ngf-ata": "Ankave-Tainae-Akoye",
"ngf-awd": "Awyu-Dumut",
"ngf-awy": "Awyu",
"ngf-bda": "Becking-Dawi",
"ngf-bin": "Binanderean",
"ngf-boa": "Boane",
"ngf-bos": "Bosavi",
"ngf-bsi": "Baruya-Simbari",
"ngf-cda": "Central Dani",
"ngf-chw": "Chimbu-Wahgi",
"ngf-dag": "Dagan",
"ngf-dal": "Dallman",
"ngf-dan": "Dani",
"ngf-dum": "Dumut",
"ngf-ehu": "Eastern Huon",
"ngf-eku": "East Kutubuan",
"ngf-enc": "Engic",
"ngf-eng": "Engan",
"ngf-era": "Erap",
"ngf-eso": "East Sogeram",
"ngf-est": "East Strickland",
"ngf-eva": "Evapia",
"ngf-fgi": "Fore-Gimi",
"ngf-fhu": "Finisterre-Huon",
"ngf-fin": "Finisterre",
"ngf-gah": "Gahuku",
"ngf-gau": "Gauwa",
"ngf-gaw": "Greater Awyu",
"ngf-gbi": "Greater Binanderean",
"ngf-gko": "Gaena-Korafe",
"ngf-gmo": "Gusap-Mot",
"ngf-gor": "Goroka",
"ngf-gsu": "Gogodala-Suki",
"ngf-gum": "Gum",
"ngf-gvd": "Grand Valley Dani",
"ngf-hag": "Hagen",
"ngf-han": "Hanseman",
"ngf-huo": "Huon",
"ngf-jim": "Jimi",
"ngf-kab": "Kabwum",
"ngf-kai": "Kainantu",
"ngf-kak": "Kalam-Kobon",
"ngf-kau": "Kaukombar",
"ngf-kbm": "Kosorong-Burum-Mindik",
"ngf-kgo": "Kainantu-Goroka",
"ngf-khu": "Kewa-Huli",
"ngf-kma": "Kâte-Mape",
"ngf-kme": "Kapau-Menya",
"ngf-koi": "Koiarian",
"ngf-kok": "Kokon",
"ngf-kow": "Kowan",
"ngf-ksa": "Kalam-Southern Adelbert",
"ngf-kto": "Kube-Tobo",
"ngf-kts": "Komyandaret-Tsaukambo",
"ngf-kum": "Kumil",
"ngf-kya": "Kamano-Yagaria",
"ngf-lok": "Lowland Ok",
"ngf-mab": "Mabuso",
"ngf-mad": "Madang",
"ngf-mek": "Mek",
"ngf-min": "Mindjim",
"ngf-mok": "Mountain Ok",
"ngf-mom": "Mombum",
"ngf-msu": "Mian-Suganga",
"ngf-nad": "Northern Adelbert",
"ngf-nbi": "North Binanderean",
"ngf-nde": "Ndeiram",
"ngf-ngn": "Ngalik-Nduga",
"ngf-nso": "North Sogeram",
"ngf-num": "Numugen",
"ngf-nur": "Nuru",
"ngf-nwh": "Northwest Hanseman",
"ngf-oen": "Outer Engan",
"ngf-okk": "Ok",
"ngf-omo": "Omosan",
"ngf-oro": "Orokaivic",
"ngf-pan": "Paniai Lakes",
"ngf-pek": "Peka",
"ngf-pom": "Pomoikan",
"ngf-rai": "Rai Coast",
"ngf-sab": "Sabakor",
"ngf-sad": "Southern Adelbert",
"ngf-sak": "Sau-Angal-Kewa",
"ngf-san": "Sankwep",
"ngf-sbh": "South Bird's Head",
"ngf-sim": "Simbu",
"ngf-sog": "Sogeram",
"ngf-sop": "Sopac",
"ngf-taa": "Tainae-Akoye",
"ngf-tai": "Tairora",
"ngf-tib": "Tiboran",
"ngf-tna": "Tangko-Nakai",
"ngf-uru": "Uruwa",
"ngf-usi": "Utu-Silopi",
"ngf-waa": "Wantoat-Awara",
"ngf-wah": "Wahgi",
"ngf-wan": "Wantoatic",
"ngf-war": "Warup",
"ngf-woj": "Wojokesic",
"ngf-wok": "West Ok",
"ngf-wso": "West Sogeram",
"ngf-yag": "Yaganon",
"ngf-yal": "Yali",
"ngf-yar": "Yareban",
"ngf-ynu": "Yau-Nungon",
"ngf-yup": "Yupna",
"nic": "Niger-Congo",
"nic-alu": "Alumic",
"nic-bas": "Basa",
"nic-bbe": "Eastern Beboid",
"nic-bco": "Benue-Congo",
"nic-bcr": "Bantoid-Cross",
"nic-bdn": "Northern Bantoid",
"nic-bds": "Southern Bantoid",
"nic-beb": "Beboid",
"nic-ben": "Bendi",
"nic-beo": "Beromic",
"nic-bod": "Bantoid",
"nic-buk": "Buli-Koma",
"nic-bwa": "Bwa",
"nic-cde": "Central Delta",
"nic-cri": "Cross River",
"nic-dag": "Dagbani",
"nic-dak": "Dakoid",
"nic-dge": "Escarpment Dogon",
"nic-dgw": "West Dogon",
"nic-eko": "Ekoid",
"nic-eov": "Eastern Oti-Volta",
"nic-fru": "Furu",
"nic-gne": "Eastern Gurunsi",
"nic-gnn": "Northern Gurunsi",
"nic-gns": "Gurunsi",
"nic-gnw": "Western Gurunsi",
"nic-gre": "Eastern Grassfields",
"nic-grf": "Grassfields",
"nic-grm": "Gurma",
"nic-grs": "Southwest Grassfields",
"nic-gur": "Gur",
"nic-ief": "Ibibio-Efik",
"nic-jer": "Jera",
"nic-jkn": "Jukunoid",
"nic-jrn": "Jarawan",
"nic-jrw": "Jarawa",
"nic-kam": "Kambari",
"nic-kau": "Kauru",
"nic-kmk": "Kamuku",
"nic-kne": "East Kainji",
"nic-knj": "Kainji",
"nic-knn": "Northwest Kainji",
"nic-ktl": "Katloid",
"nic-lcr": "Lower Cross River",
"nic-mam": "Mamfe",
"nic-mba": "Mbam",
"nic-mbc": "Mba",
"nic-mbw": "West Mbam",
"nic-mmb": "Mambiloid",
"nic-mom": "Momo",
"nic-mre": "Moré",
"nic-ngd": "Ngbandi",
"nic-nge": "Ngemba",
"nic-ngk": "Ngbaka",
"nic-nin": "Ninzic",
"nic-nka": "Nkambe",
"nic-nkb": "Baka",
"nic-nke": "Eastern Ngbaka",
"nic-nkg": "Gbanziri",
"nic-nkk": "Kpala",
"nic-nkm": "Mbaka",
"nic-nkw": "Western Ngbaka",
"nic-npd": "North Plateau Dogon",
"nic-nun": "Nun",
"nic-nwa": "Nanga-Walo",
"nic-ogo": "Ogoni",
"nic-ovo": "Oti-Volta",
"nic-pla": "Platoid",
"nic-plc": "Central Plateau",
"nic-pld": "Plains Dogon",
"nic-ple": "East Plateau",
"nic-pls": "South Plateau",
"nic-plt": "Plateau",
"nic-ras": "Rashad",
"nic-rnc": "Central Ring",
"nic-rng": "Ring",
"nic-rnn": "Northern Ring",
"nic-rnw": "Western Ring",
"nic-ser": "Sere",
"nic-shi": "Shiroro",
"nic-sis": "Sisaala",
"nic-tar": "Tarokoid",
"nic-tiv": "Tivoid",
"nic-tvc": "Central Tivoid",
"nic-tvn": "Northern Tivoid",
"nic-ubg": "Ubangian",
"nic-uce": "East-West Upper Cross River",
"nic-ucn": "North-South Upper Cross River",
"nic-ucr": "Upper Cross River",
"nic-vco": "Volta-Congo",
"nic-wov": "Western Oti-Volta",
"nic-ykb": "Yukubenic",
"nic-ymb": "Yambasa",
"nic-yon": "Yom-Nawdm",
"nub": "Nubian",
"nub-hil": "Hill Nubian",
"nur-nor": "Northern Nuristani",
"nur-sou": "Southern Nuristani",
"omq": "Oto-Manguean",
"omq-cha": "Chatino",
"omq-chi": "Chinantecan",
"omq-cui": "Cuicatec",
"omq-maz": "Mazatecan",
"omq-mix": "Mixtecan",
"omq-mxt": "Mixtec",
"omq-otp": "Oto-Pamean",
"omq-pop": "Popolocan",
"omq-tri": "Triqui",
"omq-zap": "Zapotecan",
"omq-zpc": "Zapotec",
"omv": "Omotic",
"omv-aro": "Aroid",
"omv-diz": "Dizoid",
"omv-eom": "East Ometo",
"omv-gon": "Gonga",
"omv-mao": "Mao",
"omv-nom": "North Ometo",
"omv-ome": "Ometo",
"oto": "Otomian",
"oto-otm": "Otomi",
"paa": "Papuan",
"paa-aia": "Aian",
"paa-alp": "Alor-Pantar",
"paa-amu": "Amto-Musan",
"paa-ani": "Anim",
"paa-ara": "Arapesh",
"paa-arf": "Arafundi",
"paa-ata": "Ataitan",
"paa-baa": "Bayono-Awbono",
"paa-bai": "Baining",
"paa-baw": "Bosngun-Awar",
"paa-bew": "Bewani",
"paa-boa": "Boazi",
"paa-bor": "Border",
"paa-bul": "Bulaka River",
"paa-bvi": "Betaf-Vitou",
"paa-clp": "Central Lakes Plain",
"paa-dtu": "Doso-Turumsa",
"paa-ebh": "East Bird's Head",
"paa-eel": "Eastern Eleman",
"paa-egb": "East Geelvink Bay",
"paa-eke": "East Keram",
"paa-ele": "Eleman",
"paa-elp": "East Lakes Plain",
"paa-epw": "Eastern Pauwasi",
"paa-etf": "Eastern Trans-Fly",
"paa-eti": "East Timor",
"paa-fas": "Fas",
"paa-flp": "Far West Lakes Plain",
"paa-gkw": "Greater Kwerba",
"paa-gto": "Galela-Tobelo",
"paa-hya": "Heyo-Yahang",
"paa-ing": "Inland Gulf",
"paa-isk": "Inner Sko",
"paa-iwa": "Iwam",
"paa-kae": "Kamula-Elevala",
"paa-kan": "Kanum",
"paa-kay": "Kayagaric",
"paa-ker": "Keram",
"paa-kiw": "Kiwaian",
"paa-kko": "Kaure-Kosare",
"paa-koa": "Kombio-Arapesh",
"paa-kol": "Kolopom",
"paa-kom": "Kombio",
"paa-kun": "Kunimaipan",
"paa-kwa": "Kwalean",
"paa-kwe": "Kwerba proper",
"paa-kwo": "Kwomtari",
"paa-lla": "Loloda-Laba",
"paa-lma": "Left May",
"paa-lmu": "Lepki-Murkim",
"paa-lpl": "Lakes Plain",
"paa-lra": "Lower Ramu",
"paa-lse": "Lower Sepik",
"paa-mai": "Mairasi",
"paa-mal": "Mailuan",
"paa-mam": "Maimai",
"paa-man": "Manubaran",
"paa-mar": "Marienberg",
"paa-may": "Maybratic",
"paa-mbi": "Mbaham-Iha",
"paa-mby": "Marind-Boazi-Yaqay",
"paa-mmu": "Mandi-Muniwara",
"paa-mon": "Monumbo",
"paa-mri": "Marindic",
"paa-nam": "Nambu",
"paa-nbo": "North Bougainville",
"paa-ndu": "Ndu",
"paa-ngk": "Ngkolmpu",
"paa-nha": "North Halmahera",
"paa-nim": "Nimboran",
"paa-nnd": "Nuclear Ndu",
"paa-nnh": "Northern North Halmahera",
"paa-nto": "Namla-Tofanma",
"paa-ott": "Ottilien",
"paa-pah": "Pahoturi River",
"paa-pal": "Palei",
"paa-pia": "Piawi",
"paa-pio": "Piore River",
"paa-por": "Porapora",
"paa-ram": "Ramu",
"paa-rsa": "Rasawa-Saponi",
"paa-rub": "Ruboni",
"paa-saa": "Samarokena-Airoran",
"paa-sah": "Sahu",
"paa-sbo": "South Bougainville",
"paa-sen": "Sentani",
"paa-sep": "Sepik",
"paa-shi": "Serra Hills",
"paa-sko": "Sko",
"paa-sng": "Senagi",
"paa-taa": "Taikat-Awyi",
"paa-tam": "Tamolan",
"paa-tap": "Timor-Alor-Pantar",
"paa-teb": "Teberan",
"paa-tir": "Tirio",
"paa-tki": "Turama-Kikori",
"paa-ton": "Tonda",
"paa-too": "Tor-Orya",
"paa-tor": "Tor",
"paa-trr": "Torricelli",
"paa-tti": "Ternate-Tidore",
"paa-wal": "Walio",
"paa-wap": "Wapei",
"paa-war": "Waris",
"paa-wbh": "West Bird's Head",
"paa-wel": "Western Eleman",
"paa-wig": "West Inland Gulf",
"paa-wke": "West Keram",
"paa-wko": "Wára-Kómnzo",
"paa-wlp": "West Lakes Plain",
"paa-wpa": "Wapei-Palei",
"paa-wpw": "Western Pauwasi",
"paa-yam": "Yam",
"paa-yaq": "Yaqayic",
"paa-ysa": "Yawa-Saweru",
"paa-yua": "Yuat",
"phi": "Philippine",
"phi-kal": "Kalamian",
"poz": "Malayo-Polynesian",
"poz-aay": "Admiralty Islands",
"poz-bnn": "North Bornean",
"poz-bre": "East Barito",
"poz-brw": "West Barito",
"poz-bss": "Bali-Sasak-Sumbawa",
"poz-btk": "Bungku-Tolaki",
"poz-cet": "Central-Eastern Malayo-Polynesian",
"poz-clb": "Celebic",
"poz-cln": "New Caledonian",
"poz-cma": "Central Maluku",
"poz-hce": "Halmahera-Cenderawasih",
"poz-kal": "Kaili-Pamona",
"poz-lgx": "Lampungic",
"poz-mcm": "Malayo-Chamic",
"poz-mic": "Micronesian",
"poz-mly": "Malayic",
"poz-msa": "Malayo-Sumbawan",
"poz-mun": "Muna-Buton",
"poz-nws": "Northwest Sumatran",
"poz-occ": "Central-Eastern Oceanic",
"poz-oce": "Oceanic",
"poz-ocs": "Southern Oceanic",
"poz-ocw": "Western Oceanic",
"poz-pcc": "Central Pacific",
"poz-pep": "Eastern Polynesian",
"poz-pnp": "Nuclear Polynesian",
"poz-pol": "Polynesian",
"poz-san": "Sabahan",
"poz-sbj": "Sama-Bajaw",
"poz-slb": "Saluan-Banggai",
"poz-sls": "Southeast Solomonic",
"poz-ssw": "South Sulawesi",
"poz-stm": "St. Matthias",
"poz-swa": "North Sarawakan",
"poz-tem": "Temotu",
"poz-tim": "Timoric",
"poz-ton": "Tongic",
"poz-tot": "Tomini-Tolitoli",
"poz-vnc": "Central Vanuatu",
"poz-vnn": "North Vanuatu",
"poz-vns": "South Vanuatu",
"poz-wot": "Wotu-Wolio",
"pqe": "Eastern Malayo-Polynesian",
"qfa-adc": "Central Great Andamanese",
"qfa-adm": "Great Andamanese",
"qfa-adn": "Northern Great Andamanese",
"qfa-ads": "Southern Great Andamanese",
"qfa-ain": "Ainuic",
"qfa-bej": "Be-Jizhao",
"qfa-bet": "Be-Tai",
"qfa-buy": "Buyang",
"qfa-cka": "Chukotko-Kamchatkan",
"qfa-ckn": "Chukotkan",
"qfa-cnt": "contact",
"qfa-cre": "creole",
"qfa-dgn": "Dogon",
"qfa-dis": "disputed affiliation",
"qfa-dny": "Dene-Yeniseian",
"qfa-hur": "Hurro-Urartian",
"qfa-iso": "isolate",
"qfa-kad": "Kadu",
"qfa-kms": "Kam-Sui",
"qfa-kor": "Koreanic",
"qfa-kra": "Kra",
"qfa-lic": "Hlai",
"qfa-mch": "Macro-Chibchan",
"qfa-mix": "mixed",
"qfa-not": "not a family",
"qfa-onb": "Be",
"qfa-ong": "Ongan",
"qfa-pid": "pidgin",
"qfa-sub": "substrate",
"qfa-tak": "Kra-Dai",
"qfa-tyn": "Tyrsenian",
"qfa-unc": "unclassifiable",
"qfa-xgs": "Serbi-Mongolic",
"qfa-xgx": "Para-Mongolic",
"qfa-yen": "Yeniseian",
"qfa-yke": "Ketic",
"qfa-yko": "Kottic",
"qfa-ypm": "Pumpokolic",
"qfa-yrn": "Arinic",
"qfa-yuk": "Yukaghir",
"qwe": "Quechuan",
"raj": "Rajasthani",
"roa": "Romance",
"roa-asl": "Asturleonese",
"roa-cas": "Castilian",
"roa-dal": "Dalmatian Romance",
"roa-eas": "Eastern Romance",
"roa-emr": "Emilian-Romagnol",
"roa-gap": "Galician-Portuguese",
"roa-gar": "Gallo-Romance",
"roa-git": "Gallo-Italic",
"roa-grh": "Gallo-Rhaetian",
"roa-ibe": "Ibero-Romance",
"roa-itd": "Italo-Dalmatian",
"roa-itr": "Italo-Romance",
"roa-iwr": "Italo-Western Romance",
"roa-nar": "Navarro-Aragonese",
"roa-ocr": "Occitano-Romance",
"roa-oil": "Oïl",
"roa-rhe": "Rhaeto-Romance",
"roa-sou": "Southern Romance",
"roa-wes": "Western Romance",
"sai-ara": "Araucanian",
"sai-aym": "Aymaran",
"sai-bar": "Barbacoan",
"sai-bor": "Boran",
"sai-cah": "Cahuapanan",
"sai-car": "Cariban",
"sai-cer": "Cerrado",
"sai-chc": "Chocoan",
"sai-cho": "Chonan",
"sai-cje": "Central Jê",
"sai-cpc": "Chapacuran",
"sai-crn": "Charruan",
"sai-ctc": "Catacaoan",
"sai-guc": "Guaicuruan",
"sai-guh": "Guahiban",
"sai-gui": "Guianan",
"sai-har": "Harákmbut",
"sai-hkt": "Harákmbut-Katukinan",
"sai-hrp": "Huarpean",
"sai-jee": "Jê",
"sai-jir": "Jirajaran",
"sai-jiv": "Jivaroan",
"sai-ktk": "Katukinan",
"sai-kui": "Kuikuroan",
"sai-map": "Mapoyan",
"sai-mas": "Mascoian",
"sai-mgc": "Mataco-Guaicuru",
"sai-mje": "Macro-Jê",
"sai-mtc": "Matacoan",
"sai-mur": "Muran",
"sai-nad": "Nadahup",
"sai-nje": "Northern Jê",
"sai-nmk": "Nambikwaran",
"sai-otm": "Otomacoan",
"sai-pan": "Panoan",
"sai-pat": "Pano-Tacanan",
"sai-pek": "Pekodian",
"sai-pem": "Pemongan",
"sai-pey": "Peba-Yaguan",
"sai-prk": "Parukotoan",
"sai-sje": "Southern Jê",
"sai-tac": "Tacanan",
"sai-tar": "Taranoan",
"sai-tuc": "Tucanoan",
"sai-tyu": "Ticuna-Yuri",
"sai-ucp": "Uru-Chipaya",
"sai-ven": "Venezuelan Cariban",
"sai-wic": "Wichí",
"sai-wit": "Witotoan",
"sai-ynm": "Yanomami",
"sai-yuk": "Yukpan",
"sai-zam": "Zamucoan",
"sai-zap": "Zaparoan",
"sal": "Salish",
"sdv": "Eastern Sudanic",
"sdv-bri": "Bari",
"sdv-daj": "Daju",
"sdv-dnu": "Dinka-Nuer",
"sdv-eje": "Eastern Jebel",
"sdv-kln": "Kalenjin",
"sdv-lma": "Lotuko-Maa",
"sdv-lon": "Northern Luo",
"sdv-los": "Southern Luo",
"sdv-luo": "Luo",
"sdv-nes": "Northern Eastern Sudanic",
"sdv-nie": "Eastern Nilotic",
"sdv-nil": "Nilotic",
"sdv-nis": "Southern Nilotic",
"sdv-niw": "Western Nilotic",
"sdv-nma": "Nandi-Markweta",
"sdv-nyi": "Nyima",
"sdv-tmn": "Taman",
"sdv-ttu": "Teso-Turkana",
"sel": "Selkup",
"sem": "Semitic",
"sem-ara": "Aramaic",
"sem-arb": "Arabic",
"sem-are": "Eastern Aramaic",
"sem-arw": "Western Aramaic",
"sem-ase": "Southeastern Aramaic",
"sem-can": "Canaanite",
"sem-cen": "Central Semitic",
"sem-cna": "Central Neo-Aramaic",
"sem-eas": "East Semitic",
"sem-eth": "Ethiopian Semitic",
"sem-nna": "Northeastern Neo-Aramaic",
"sem-nwe": "Northwest Semitic",
"sem-osa": "Old South Arabian",
"sem-sar": "Modern South Arabian",
"sem-wes": "West Semitic",
"sgn": "sign",
"sgn-fsl": "French Sign Languages",
"sgn-gsl": "German Sign Languages",
"sgn-jsl": "Japanese Sign Languages",
"sio": "Siouan",
"sio-dhe": "Dhegihan",
"sio-dkt": "Dakotan",
"sio-mor": "Missouri River Siouan",
"sio-msv": "Mississippi Valley Siouan",
"sio-ohv": "Ohio Valley Siouan",
"sit": "Sino-Tibetan",
"sit-aao": "Central Naga",
"sit-alm": "Almora",
"sit-bai": "Bai",
"sit-bdi": "Bodish",
"sit-cln": "Cai-Long",
"sit-dhi": "Dhimalish",
"sit-ebo": "East Bodish",
"sit-egy": "East rGyalrongic",
"sit-ers": "Ersuic",
"sit-gma": "Greater Magaric",
"sit-gsi": "Greater Siangic",
"sit-hrs": "Hrusish",
"sit-jnp": "Jingphoic",
"sit-jpl": "Kachin-Luic",
"sit-kch": "Konyak-Chang",
"sit-kha": "Kham",
"sit-khb": "Kho-Bwa",
"sit-khc": "Chug-Lish",
"sit-khm": "Mey-Sartang",
"sit-khw": "Western Kho-Bwa",
"sit-kic": "Central Kiranti",
"sit-kie": "Eastern Kiranti",
"sit-kin": "Kinnauric",
"sit-kir": "Kiranti",
"sit-kiw": "Western Kiranti",
"sit-kon": "Northern Naga",
"sit-kyk": "Kyirong-Kagate",
"sit-lab": "Ladakhi-Balti",
"sit-las": "Lahuli-Spiti",
"sit-luu": "Luish",
"sit-mar": "Maringic",
"sit-mba": "Macro-Bai",
"sit-mdz": "Midzu",
"sit-mnz": "Mondzish",
"sit-mru": "Mruic",
"sit-nas": "Naish",
"sit-nax": "Naic",
"sit-nba": "Northern Bai",
"sit-new": "Newaric",
"sit-nng": "Nungish",
"sit-qia": "Qiangic",
"sit-rgy": "Rgyalrongic",
"sit-sba": "Sino-Bai",
"sit-tam": "Tamangic",
"sit-tan": "Tani",
"sit-tib": "Tibetic",
"sit-tja": "Tujia",
"sit-tma": "Tangkhul-Maring",
"sit-tng": "Tangkhulic",
"sit-tno": "Tangsa-Nocte",
"sit-tsk": "Tshangla",
"sit-wgy": "West rGyalrongic",
"sit-whm": "West Himalayish",
"sit-zem": "Zeme",
"sla": "Slavic",
"smi": "Sami",
"son": "Songhay",
"sqj": "Albanian",
"ssa": "Nilo-Saharan",
"ssa-fur": "Fur",
"ssa-klk": "Kuliak",
"ssa-kom": "Koman",
"ssa-sah": "Saharan",
"syd": "Samoyedic",
"syd-ene": "Enets",
"tai": "Tai",
"tai-cen": "Central Tai",
"tai-cho": "Chongzuo Tai",
"tai-nor": "Northern Tai",
"tai-sap": "Sapa-Southwestern Tai",
"tai-swe": "Southwestern Tai",
"tai-tay": "Tày",
"tai-wen": "Wenma-Southwestern Tai",
"tbq": "Tibeto-Burman",
"tbq-anp": "Angami-Pochuri",
"tbq-axi": "Axioid",
"tbq-bdg": "Bodo-Garo",
"tbq-bis": "Bisoid",
"tbq-bka": "Bi-Ka",
"tbq-bkj": "Sal",
"tbq-brm": "Burmish",
"tbq-buq": "Burmo-Qiangic",
"tbq-drp": "Downriver Phula",
"tbq-han": "Hanoid",
"tbq-hph": "Highland Phula",
"tbq-jin": "Jino",
"tbq-kuk": "Kuki-Chin",
"tbq-kzh": "Kazhuoish",
"tbq-lal": "Lalo",
"tbq-lho": "Lahoish",
"tbq-llo": "Lipo-Lolopo",
"tbq-lob": "Lolo-Burmese",
"tbq-lol": "Loloish",
"tbq-lso": "Lisoish",
"tbq-lwo": "Lawoish",
"tbq-muj": "Muji",
"tbq-nas": "Nasoid",
"tbq-nis": "Nisu",
"tbq-nlo": "Northern Loloish",
"tbq-nso": "Nisoish",
"tbq-nus": "Nusoish",
"tbq-phw": "Phowa",
"tbq-rph": "Riverine Phula",
"tbq-sel": "Southeastern Loloish",
"tbq-sil": "Siloid",
"tbq-slo": "Southern Loloish",
"tbq-tal": "Taloid",
"tbq-urp": "Upriver Phula",
"trk": "Turkic",
"trk-cmn": "Common Turkic",
"trk-kar": "Karluk",
"trk-kbu": "Kipchak-Bulgar",
"trk-kcu": "Kipchak-Cuman",
"trk-kip": "Kipchak",
"trk-kkp": "Kyrgyz-Kipchak",
"trk-kno": "Kipchak-Nogai",
"trk-nsb": "North Siberian Turkic",
"trk-ogr": "Oghur",
"trk-ogz": "Oghuz",
"trk-sib": "Siberian Turkic",
"trk-ssb": "South Siberian Turkic",
"tup": "Tupian",
"tup-gua": "Tupi-Guarani",
"tuw": "Tungusic",
"tuw-ewe": "Ewenic",
"tuw-jrc": "Jurchenic",
"tuw-nan": "Nanaic",
"tuw-udg": "Udegheic",
"urj": "Uralic",
"urj-fin": "Finnic",
"urj-mdv": "Mordvinic",
"urj-prm": "Permic",
"urj-ugr": "Ugric",
"wak": "Wakashan",
"wen": "Sorbian",
"xgn": "Mongolic",
"xgn-cen": "Central Mongolic",
"xgn-shr": "Shirongolic",
"xgn-sou": "Southern Mongolic",
"xme": "Median",
"xme-ttc": "Tatic",
"xnd": "Na-Dene",
"xsc": "Scythian",
"xsc-sak": "Saka",
"xsc-sar": "Sarmatian",
"xsc-skw": "Saka-Wakhi",
"yok": "Yokuts",
"ypk": "Yupik",
"yrk": "Nenets",
"zhx": "Sinitic",
"zhx-com": "Coastal Min",
"zhx-inm": "Inland Min",
"zhx-man": "Mandarinic",
"zhx-min": "Min",
"zhx-nan": "Southern Min",
"zhx-pin": "Pinghua",
"zhx-yue": "Yue",
"zle": "East Slavic",
"zls": "South Slavic",
"zlw": "West Slavic",
"zlw-lch": "Lechitic",
"zlw-pom": "Pomeranian",
"znd": "Zande"
}
7fcmdvao06e0n7irdx3fa8twz18toi2
233733
233732
2026-05-09T04:58:19Z
Lee
19
[[:en:Module:families/code_to_canonical_name.json]] වෙතින් එක් සංශෝධනයක්
233732
json
application/json
{
"aav": "Austroasiatic",
"aav-khs": "Khasian",
"aav-nic": "Nicobarese",
"aav-pkl": "Pnar-Khasi-Lyngngam",
"afa": "Afroasiatic",
"alg": "Algonquian",
"alg-abp": "Abenaki-Penobscot",
"alg-ara": "Arapahoan",
"alg-eas": "Eastern Algonquian",
"alg-sfk": "Sac-Fox-Kickapoo",
"alv": "Atlantic-Congo",
"alv-aah": "Ayere-Ahan",
"alv-ada": "Adamawa",
"alv-bag": "Baga",
"alv-bak": "Bak",
"alv-bam": "Bambukic",
"alv-bny": "Banyum",
"alv-bua": "Bua",
"alv-bwj": "Bikwin-Jen",
"alv-cng": "Cangin",
"alv-ctn": "Central Tano",
"alv-dlt": "Delta Edoid",
"alv-dur": "Duru",
"alv-ede": "Ede",
"alv-edk": "Edekiri",
"alv-edo": "Edoid",
"alv-eeo": "Edo-Esan-Ora",
"alv-fli": "Fali",
"alv-fwo": "Fula-Wolof",
"alv-gbe": "Gbe",
"alv-gda": "Ga-Dangme",
"alv-gng": "Guang",
"alv-gtm": "Ghana-Togo Mountain",
"alv-hei": "Heiban",
"alv-ido": "Idomoid",
"alv-igb": "Igboid",
"alv-jfe": "Jola-Felupe",
"alv-jol": "Jola",
"alv-kim": "Kim",
"alv-kis": "Kissi",
"alv-krb": "Karaboro",
"alv-ktg": "Ka-Togo",
"alv-kul": "Kulango",
"alv-kwa": "Kwa",
"alv-lag": "Lagoon",
"alv-lek": "Leko",
"alv-lim": "Limba",
"alv-lni": "Leko-Nimbari",
"alv-mbd": "Mbum-Day",
"alv-mbm": "Mbum",
"alv-mel": "Mel",
"alv-mum": "Mumuye",
"alv-mye": "Mumuye-Yendang",
"alv-nal": "Nalu",
"alv-nce": "North-Central Edoid",
"alv-ngb": "Nupe-Gbagyi",
"alv-ntg": "Na-Togo",
"alv-nup": "Nupoid",
"alv-nwd": "Northwestern Edoid",
"alv-nyn": "Nyun",
"alv-pap": "Papel",
"alv-pph": "Phla-Pherá",
"alv-ptn": "Potou-Tano",
"alv-sav": "Savanna",
"alv-sma": "Supyire-Mamara",
"alv-snf": "Senufo",
"alv-sng": "Senegambian",
"alv-snr": "Senari",
"alv-swd": "Southwestern Edoid",
"alv-tal": "Talodi",
"alv-tdj": "Tagwana-Djimini",
"alv-ten": "Tenda",
"alv-the": "Talodi-Heiban",
"alv-von": "Volta-Niger",
"alv-wan": "Wara-Natyoro",
"alv-wjk": "Waja-Kam",
"alv-yek": "Yekhee",
"alv-yor": "Yoruba",
"alv-yrd": "Yoruboid",
"alv-yun": "Yungur",
"apa": "Apachean",
"aqa": "Alacalufan",
"aql": "Algic",
"art": "constructed",
"ath": "Athabaskan",
"ath-nor": "North Athabaskan",
"ath-pco": "Pacific Coast Athabaskan",
"auf": "Arauan",
"aus-arn": "Arnhem",
"aus-bub": "Bunuban",
"aus-cww": "Central New South Wales",
"aus-dal": "Daly",
"aus-dyb": "Dyirbalic",
"aus-gar": "Garawan",
"aus-gun": "Gunwinyguan",
"aus-jar": "Jarrakan",
"aus-kar": "Karnic",
"aus-mir": "Mirndi",
"aus-nga": "Ngayarda",
"aus-nyu": "Nyulnyulan",
"aus-pam": "Pama-Nyungan",
"aus-pmn": "Paman",
"aus-psw": "Southwest Pama-Nyungan",
"aus-rnd": "Arandic",
"aus-tnk": "Tangkic",
"aus-wdj": "Iwaidjan",
"aus-wor": "Worrorran",
"aus-yid": "Yidinyic",
"aus-yng": "Yangmanic",
"aus-yol": "Yolngu",
"aus-yuk": "Yuin-Kuric",
"awd": "Arawak",
"awd-nwk": "Nawiki",
"awd-taa": "Ta-Arawak",
"azc": "Uto-Aztecan",
"azc-cup": "Cupan",
"azc-dur": "Durango Nahuatl",
"azc-hua": "Huasteca Nahuatl",
"azc-nah": "Nahuan",
"azc-num": "Numic",
"azc-pim": "Piman",
"azc-tak": "Takic",
"azc-trc": "Taracahitic",
"bad": "Banda",
"bad-cnt": "Central Banda",
"bai": "Bamileke",
"bat": "Baltic",
"bat-eas": "East Baltic",
"bat-wes": "West Baltic",
"ber": "Berber",
"bnt": "Bantu",
"bnt-baf": "Bafia",
"bnt-bbo": "Bafo-Bonkeng",
"bnt-bdz": "Boma-Dzing",
"bnt-bek": "Bekwilic",
"bnt-bki": "Bena-Kinga",
"bnt-bmo": "Bangi-Moi",
"bnt-bne": "Northeast Bantu",
"bnt-bnm": "Bangi-Ntomba",
"bnt-boa": "Boan",
"bnt-bot": "Botatwe",
"bnt-bsa": "Basaa",
"bnt-bsh": "Bushoong",
"bnt-bso": "Southern Bantu",
"bnt-bta": "Bati-Angba",
"bnt-btb": "Beti",
"bnt-bte": "Bangi-Tetela",
"bnt-bun": "Buja-Ngombe",
"bnt-chg": "Chaga",
"bnt-cht": "Chaga-Taita",
"bnt-clu": "Chokwe-Luchazi",
"bnt-com": "Comorian",
"bnt-glb": "Great Lakes Bantu",
"bnt-haj": "Haya-Jita",
"bnt-kak": "Kako",
"bnt-kav": "Kavango",
"bnt-kbi": "Komo-Bira",
"bnt-kel": "Kele",
"bnt-kil": "Kilombero",
"bnt-kka": "Kikuyu-Kamba",
"bnt-kmb": "Kimbundu",
"bnt-kng": "Kongo",
"bnt-kpw": "Kpwe",
"bnt-ksb": "Kavango-Southwest Bantu",
"bnt-kts": "Kele-Tsogo",
"bnt-lbn": "Luban",
"bnt-leb": "Lebonya",
"bnt-lgb": "Lega-Binja",
"bnt-lok": "Logooli-Kuria",
"bnt-lub": "Luba",
"bnt-lun": "Lunda",
"bnt-mak": "Makua",
"bnt-mbb": "Mboshi-Buja",
"bnt-mbe": "Mbole-Enya",
"bnt-mbi": "Mbinga",
"bnt-mbo": "Mboshi",
"bnt-mbt": "Mbete",
"bnt-mby": "Mbeya",
"bnt-mij": "Mijikenda",
"bnt-mka": "Makaa",
"bnt-mne": "Manenguba",
"bnt-mnj": "Makaa-Njem",
"bnt-mon": "Mongo",
"bnt-mra": "Mbugwe-Rangi",
"bnt-msl": "Masaba-Luhya",
"bnt-mwi": "Mwika",
"bnt-ncb": "Northeast Coast Bantu",
"bnt-ndb": "Ndzem-Bomwali",
"bnt-ngn": "Ngondi-Ngiri",
"bnt-ngu": "Nguni",
"bnt-nya": "Nyali",
"bnt-nyb": "Nyanga-Buyi",
"bnt-nyg": "Nyoro-Ganda",
"bnt-nys": "Nyasa",
"bnt-nze": "Nzebi",
"bnt-ova": "Ovambo",
"bnt-par": "Pare",
"bnt-pen": "Pende",
"bnt-pob": "Pomo-Bomwali",
"bnt-ruk": "Rukwa",
"bnt-run": "Rungwe",
"bnt-rur": "Rufiji-Ruvuma",
"bnt-ruv": "Ruvu",
"bnt-rvm": "Ruvuma",
"bnt-sab": "Sabaki",
"bnt-saw": "Sawabantu",
"bnt-sbi": "Sabi",
"bnt-seu": "Seuta",
"bnt-shh": "Shi-Havu",
"bnt-sho": "Shona",
"bnt-sir": "Sira",
"bnt-ske": "Soko-Kele",
"bnt-sna": "Sena",
"bnt-sts": "Sotho-Tswana",
"bnt-swb": "Southwest Bantu",
"bnt-swh": "Swahili",
"bnt-tek": "Teke",
"bnt-tet": "Tetela",
"bnt-tkc": "Central Teke",
"bnt-tkm": "Takama",
"bnt-tmb": "Teke-Mbede",
"bnt-tso": "Tsogo",
"bnt-tsr": "Tswa-Ronga",
"bnt-yak": "Yaka",
"bnt-yko": "Yasa-Kombe",
"bnt-zbi": "Zamba-Binza",
"btk": "Batak",
"cau-abz": "Abkhaz-Abaza",
"cau-and": "Andian",
"cau-ava": "Avaro-Andian",
"cau-cir": "Circassian",
"cau-drg": "Dargwa",
"cau-esm": "Eastern Samur",
"cau-ets": "East Tsezian",
"cau-lzg": "Lezghian",
"cau-nec": "Northeast Caucasian",
"cau-nkh": "Nakh",
"cau-nwc": "Northwest Caucasian",
"cau-sam": "Samur",
"cau-ssm": "Southern Samur",
"cau-tsz": "Tsezian",
"cau-vay": "Vainakh",
"cau-wsm": "Western Samur",
"cau-wts": "West Tsezian",
"cba": "Chibchan",
"ccs": "Kartvelian",
"ccs-gzn": "Georgian-Zan",
"ccs-zan": "Zan",
"cdc": "Chadic",
"cdc-cbm": "Central Chadic",
"cdc-est": "East Chadic",
"cdc-mas": "Masa",
"cdc-wst": "West Chadic",
"cdd": "Caddoan",
"cel": "Celtic",
"cel-brs": "Southwestern Brythonic",
"cel-brw": "Western Brythonic",
"cel-bry": "Brythonic",
"cel-gae": "Goidelic",
"cel-his": "Hispano-Celtic",
"cel-ins": "Insular Celtic",
"chi": "Chimakuan",
"chm": "Mari",
"cmc": "Chamic",
"crp": "creole or pidgin",
"csu": "Central Sudanic",
"csu-bba": "Bongo-Bagirmi",
"csu-bbk": "Bongo-Baka",
"csu-bgr": "Bagirmi",
"csu-bkr": "Birri-Kresh",
"csu-ecs": "Eastern Central Sudanic",
"csu-kab": "Kaba",
"csu-lnd": "Lendu",
"csu-maa": "Mangbetu",
"csu-mle": "Mangbutu-Lese",
"csu-mma": "Moru-Madi",
"csu-sar": "Sara",
"csu-val": "Vale",
"cus": "Cushitic",
"cus-cen": "Central Cushitic",
"cus-eas": "East Cushitic",
"cus-hec": "Highland East Cushitic",
"cus-som": "Somaloid",
"cus-sou": "South Cushitic",
"day": "Land Dayak",
"del": "Lenape",
"den": "Slavey",
"dmn": "Mande",
"dmn-bbu": "Bisa-Busa",
"dmn-emn": "East Manding",
"dmn-jje": "Jogo-Jeri",
"dmn-man": "Manding",
"dmn-mda": "Mano-Dan",
"dmn-mdc": "Central Mande",
"dmn-mde": "Eastern Mande",
"dmn-mdw": "Western Mande",
"dmn-mjo": "Manding-Jogo",
"dmn-mmo": "Manding-Mokole",
"dmn-mnk": "Maninka",
"dmn-mnw": "Northwestern Mande",
"dmn-mok": "Mokole",
"dmn-mse": "Southeastern Mande",
"dmn-msw": "Southwestern Mande",
"dmn-mva": "Manding-Vai",
"dmn-nbe": "Nwa-Beng",
"dmn-sam": "Samo",
"dmn-smg": "Samogo",
"dmn-snb": "Soninke-Bobo",
"dmn-sya": "Susu-Yalunka",
"dmn-vak": "Vai-Kono",
"dmn-wmn": "West Manding",
"dra": "Dravidian",
"dra-cen": "Central Dravidian",
"dra-gki": "Gondi-Kui",
"dra-gon": "Gondi",
"dra-imd": "Irula-Muduga",
"dra-kan": "Kannadoid",
"dra-kki": "Konda-Kui",
"dra-kml": "Kurux-Malto",
"dra-knk": "Kolami-Naiki",
"dra-kod": "Kodagu",
"dra-kor": "Koraga",
"dra-mal": "Malayalamoid",
"dra-mdy": "Madiya",
"dra-mlo": "Malto",
"dra-mur": "Muria",
"dra-nor": "North Dravidian",
"dra-pgd": "Parji-Gadaba",
"dra-sdo": "South Dravidian I",
"dra-sdt": "South Dravidian II",
"dra-sou": "South Dravidian",
"dra-tam": "Tamiloid",
"dra-tel": "Teluguic",
"dra-tkd": "Tamil-Kodagu",
"dra-tkn": "Tamil-Kannada",
"dra-tkt": "Toda-Kota",
"dra-tlk": "Tulu-Koraga",
"dra-tml": "Tamil-Malayalam",
"egx": "Egyptian",
"ero": "Horpa",
"esx": "Eskimo-Aleut",
"esx-esk": "Eskimo",
"esx-inu": "Inuit",
"euq": "Vasconic",
"gba": "Gbaya",
"gba-eas": "Eastern Gbaya",
"gba-sou": "Southern Gbaya",
"gba-wes": "Western Gbaya",
"gem": "Germanic",
"gio": "Gelao",
"gme": "East Germanic",
"gmq": "North Germanic",
"gmq-eas": "East Scandinavian",
"gmq-ins": "Insular Scandinavian",
"gmq-wes": "West Scandinavian",
"gmw": "West Germanic",
"gmw-afr": "Anglo-Frisian",
"gmw-ang": "Anglic",
"gmw-fri": "Frisian",
"gmw-frk": "Low Franconian",
"gmw-hgm": "High German",
"gmw-ian": "Irish Anglo-Norman",
"gmw-lgm": "Low German",
"gmw-nsg": "North Sea Germanic",
"gn": "Guarani",
"grb": "Grebo proper",
"grk": "Hellenic",
"him": "Western Pahari",
"hmn": "Hmongic",
"hmx": "Hmong-Mien",
"hmx-mie": "Mienic",
"hok": "Hokan",
"hyx": "Armenian",
"iir": "Indo-Iranian",
"iir-nur": "Nuristani",
"ijo": "Ijoid",
"inc": "Indo-Aryan",
"inc-bas": "Bengali-Assamese",
"inc-bhi": "Bhil",
"inc-bih": "Bihari",
"inc-cen": "Central Indo-Aryan",
"inc-chi": "Chitrali",
"inc-dar": "Dardic",
"inc-dng": "Dangari",
"inc-dre": "Eastern Dardic",
"inc-eas": "Eastern Indo-Aryan",
"inc-hal": "Halbic",
"inc-hie": "Eastern Hindi",
"inc-hiw": "Western Hindi",
"inc-hnd": "Hindustani",
"inc-ins": "Insular Indo-Aryan",
"inc-kas": "Kashmiric",
"inc-koh": "Kohistani",
"inc-krd": "KRDS languages",
"inc-kun": "Kunar",
"inc-mid": "Middle Indo-Aryan",
"inc-nor": "Northern Indo-Aryan",
"inc-nwe": "Northwestern Indo-Aryan",
"inc-old": "Old Indo-Aryan",
"inc-pah": "Pahari",
"inc-pan": "Punjabic",
"inc-pas": "Pashayi",
"inc-rom": "Romani",
"inc-shn": "Shinaic",
"inc-snd": "Sindhic",
"inc-sou": "Southern Indo-Aryan",
"inc-tha": "Tharu",
"inc-wes": "Western Indo-Aryan",
"ine": "Indo-European",
"ine-ana": "Anatolian",
"ine-bsl": "Balto-Slavic",
"ine-luw": "Luwic",
"ine-toc": "Tocharian",
"ira": "Iranian",
"ira-cen": "Central Iranian",
"ira-csp": "Caspian",
"ira-kms": "Komisenian",
"ira-mid": "Middle Iranian",
"ira-mny": "Munji-Yidgha",
"ira-mpr": "Medo-Parthian",
"ira-msh": "Mazanderani-Shahmirzadi",
"ira-nei": "Northeastern Iranian",
"ira-nwi": "Northwestern Iranian",
"ira-old": "Old Iranian",
"ira-orp": "Ormuri-Parachi",
"ira-pat": "Pathan",
"ira-sbc": "Sogdo-Bactrian",
"ira-sei": "Southeastern Iranian",
"ira-sgc": "Sogdic",
"ira-sgi": "Sanglechi-Ishkashimi",
"ira-shr": "Shughni-Roshani",
"ira-shy": "Shughni-Yazghulami",
"ira-swi": "Southwestern Iranian",
"ira-sym": "Shughni-Yazghulami-Munji",
"ira-wes": "Western Iranian",
"ira-zgr": "Zaza-Gorani",
"iro": "Iroquoian",
"iro-nor": "North Iroquoian",
"itc": "Italic",
"itc-laf": "Latino-Faliscan",
"itc-sbl": "Osco-Umbrian",
"jpx": "Japonic",
"jpx-nry": "Northern Ryukyuan",
"jpx-ryu": "Ryukyuan",
"jpx-sry": "Southern Ryukyuan",
"kar": "Karen",
"kca": "Khanty",
"khi-kal": "Kalahari Khoe",
"khi-khk": "Khoekhoe",
"khi-kho": "Khoe",
"khi-kkw": "Khoe-Kwadi",
"khi-kxa": "Kx'a",
"khi-tuu": "Tuu",
"kro": "Kru",
"kro-aiz": "Aizi",
"kro-bet": "Bété",
"kro-did": "Dida",
"kro-ekr": "Eastern Kru",
"kro-grb": "Grebo",
"kro-wee": "Wee",
"kro-wkr": "Western Kru",
"ku": "Kurdish",
"kv": "Komi",
"map": "Austronesian",
"map-ata": "Atayalic",
"mjg": "Monguor",
"mkh": "Mon-Khmer",
"mkh-asl": "Aslian",
"mkh-ban": "Bahnaric",
"mkh-kat": "Katuic",
"mkh-khm": "Khmuic",
"mkh-kmr": "Khmeric",
"mkh-mnc": "Monic",
"mkh-mng": "Mangic",
"mkh-nbn": "North Bahnaric",
"mkh-pal": "Palaungic",
"mkh-pea": "Pearic",
"mkh-pkn": "Pakanic",
"mkh-vie": "Vietic",
"mno": "Manobo",
"mns": "Mansi",
"mun": "Munda",
"myn": "Mayan",
"nai-cat": "Catawban",
"nai-chu": "Chumashan",
"nai-ckn": "Chinookan",
"nai-coo": "Coosan",
"nai-jcq": "Jicaquean",
"nai-ker": "Keresan",
"nai-klp": "Kalapuyan",
"nai-kta": "Kiowa-Tanoan",
"nai-len": "Lencan",
"nai-mdu": "Maiduan",
"nai-min": "Misumalpan",
"nai-miz": "Mixe-Zoquean",
"nai-mus": "Muskogean",
"nai-pak": "Pakawan",
"nai-pal": "Palaihnihan",
"nai-plp": "Plateau Penutian",
"nai-pom": "Pomoan",
"nai-sca": "Siouan-Catawban",
"nai-shp": "Sahaptian",
"nai-shs": "Shastan",
"nai-tot": "Totozoquean",
"nai-tqn": "Tequistlatecan",
"nai-tsi": "Tsimshianic",
"nai-ttn": "Totonacan",
"nai-utn": "Utian",
"nai-wtq": "Wintuan",
"nai-xin": "Xincan",
"nai-ykn": "Yukian",
"nai-you": "Yok-Utian",
"nai-yuc": "Yuman-Cochimí",
"ngf": "Trans-New Guinea",
"ngf-ais": "Aisian",
"ngf-ang": "Angan",
"ngf-ank": "Angal-Kewa",
"ngf-ask": "Asmat-Kamoro",
"ngf-asm": "Asmat",
"ngf-ata": "Ankave-Tainae-Akoye",
"ngf-awd": "Awyu-Dumut",
"ngf-awy": "Awyu",
"ngf-bda": "Becking-Dawi",
"ngf-bin": "Binanderean",
"ngf-boa": "Boane",
"ngf-bos": "Bosavi",
"ngf-bsi": "Baruya-Simbari",
"ngf-cda": "Central Dani",
"ngf-chw": "Chimbu-Wahgi",
"ngf-dag": "Dagan",
"ngf-dal": "Dallman",
"ngf-dan": "Dani",
"ngf-dum": "Dumut",
"ngf-ehu": "Eastern Huon",
"ngf-eku": "East Kutubuan",
"ngf-enc": "Engic",
"ngf-eng": "Engan",
"ngf-era": "Erap",
"ngf-eso": "East Sogeram",
"ngf-est": "East Strickland",
"ngf-eva": "Evapia",
"ngf-fgi": "Fore-Gimi",
"ngf-fhu": "Finisterre-Huon",
"ngf-fin": "Finisterre",
"ngf-gah": "Gahuku",
"ngf-gau": "Gauwa",
"ngf-gaw": "Greater Awyu",
"ngf-gbi": "Greater Binanderean",
"ngf-gko": "Gaena-Korafe",
"ngf-gmo": "Gusap-Mot",
"ngf-gor": "Goroka",
"ngf-gsu": "Gogodala-Suki",
"ngf-gum": "Gum",
"ngf-gvd": "Grand Valley Dani",
"ngf-hag": "Hagen",
"ngf-han": "Hanseman",
"ngf-huo": "Huon",
"ngf-jim": "Jimi",
"ngf-kab": "Kabwum",
"ngf-kai": "Kainantu",
"ngf-kak": "Kalam-Kobon",
"ngf-kau": "Kaukombar",
"ngf-kbm": "Kosorong-Burum-Mindik",
"ngf-kgo": "Kainantu-Goroka",
"ngf-khu": "Kewa-Huli",
"ngf-kma": "Kâte-Mape",
"ngf-kme": "Kapau-Menya",
"ngf-koi": "Koiarian",
"ngf-kok": "Kokon",
"ngf-kow": "Kowan",
"ngf-ksa": "Kalam-Southern Adelbert",
"ngf-kto": "Kube-Tobo",
"ngf-kts": "Komyandaret-Tsaukambo",
"ngf-kum": "Kumil",
"ngf-kya": "Kamano-Yagaria",
"ngf-lok": "Lowland Ok",
"ngf-mab": "Mabuso",
"ngf-mad": "Madang",
"ngf-mek": "Mek",
"ngf-min": "Mindjim",
"ngf-mok": "Mountain Ok",
"ngf-mom": "Mombum",
"ngf-msu": "Mian-Suganga",
"ngf-nad": "Northern Adelbert",
"ngf-nbi": "North Binanderean",
"ngf-nde": "Ndeiram",
"ngf-ngn": "Ngalik-Nduga",
"ngf-nso": "North Sogeram",
"ngf-num": "Numugen",
"ngf-nur": "Nuru",
"ngf-nwh": "Northwest Hanseman",
"ngf-oen": "Outer Engan",
"ngf-okk": "Ok",
"ngf-omo": "Omosan",
"ngf-oro": "Orokaivic",
"ngf-pan": "Paniai Lakes",
"ngf-pek": "Peka",
"ngf-pom": "Pomoikan",
"ngf-rai": "Rai Coast",
"ngf-sab": "Sabakor",
"ngf-sad": "Southern Adelbert",
"ngf-sak": "Sau-Angal-Kewa",
"ngf-san": "Sankwep",
"ngf-sbh": "South Bird's Head",
"ngf-sim": "Simbu",
"ngf-sog": "Sogeram",
"ngf-sop": "Sopac",
"ngf-taa": "Tainae-Akoye",
"ngf-tai": "Tairora",
"ngf-tib": "Tiboran",
"ngf-tna": "Tangko-Nakai",
"ngf-uru": "Uruwa",
"ngf-usi": "Utu-Silopi",
"ngf-waa": "Wantoat-Awara",
"ngf-wah": "Wahgi",
"ngf-wan": "Wantoatic",
"ngf-war": "Warup",
"ngf-woj": "Wojokesic",
"ngf-wok": "West Ok",
"ngf-wso": "West Sogeram",
"ngf-yag": "Yaganon",
"ngf-yal": "Yali",
"ngf-yar": "Yareban",
"ngf-ynu": "Yau-Nungon",
"ngf-yup": "Yupna",
"nic": "Niger-Congo",
"nic-alu": "Alumic",
"nic-bas": "Basa",
"nic-bbe": "Eastern Beboid",
"nic-bco": "Benue-Congo",
"nic-bcr": "Bantoid-Cross",
"nic-bdn": "Northern Bantoid",
"nic-bds": "Southern Bantoid",
"nic-beb": "Beboid",
"nic-ben": "Bendi",
"nic-beo": "Beromic",
"nic-bod": "Bantoid",
"nic-buk": "Buli-Koma",
"nic-bwa": "Bwa",
"nic-cde": "Central Delta",
"nic-cri": "Cross River",
"nic-dag": "Dagbani",
"nic-dak": "Dakoid",
"nic-dge": "Escarpment Dogon",
"nic-dgw": "West Dogon",
"nic-eko": "Ekoid",
"nic-eov": "Eastern Oti-Volta",
"nic-fru": "Furu",
"nic-gne": "Eastern Gurunsi",
"nic-gnn": "Northern Gurunsi",
"nic-gns": "Gurunsi",
"nic-gnw": "Western Gurunsi",
"nic-gre": "Eastern Grassfields",
"nic-grf": "Grassfields",
"nic-grm": "Gurma",
"nic-grs": "Southwest Grassfields",
"nic-gur": "Gur",
"nic-ief": "Ibibio-Efik",
"nic-jer": "Jera",
"nic-jkn": "Jukunoid",
"nic-jrn": "Jarawan",
"nic-jrw": "Jarawa",
"nic-kam": "Kambari",
"nic-kau": "Kauru",
"nic-kmk": "Kamuku",
"nic-kne": "East Kainji",
"nic-knj": "Kainji",
"nic-knn": "Northwest Kainji",
"nic-ktl": "Katloid",
"nic-lcr": "Lower Cross River",
"nic-mam": "Mamfe",
"nic-mba": "Mbam",
"nic-mbc": "Mba",
"nic-mbw": "West Mbam",
"nic-mmb": "Mambiloid",
"nic-mom": "Momo",
"nic-mre": "Moré",
"nic-ngd": "Ngbandi",
"nic-nge": "Ngemba",
"nic-ngk": "Ngbaka",
"nic-nin": "Ninzic",
"nic-nka": "Nkambe",
"nic-nkb": "Baka",
"nic-nke": "Eastern Ngbaka",
"nic-nkg": "Gbanziri",
"nic-nkk": "Kpala",
"nic-nkm": "Mbaka",
"nic-nkw": "Western Ngbaka",
"nic-npd": "North Plateau Dogon",
"nic-nun": "Nun",
"nic-nwa": "Nanga-Walo",
"nic-ogo": "Ogoni",
"nic-ovo": "Oti-Volta",
"nic-pla": "Platoid",
"nic-plc": "Central Plateau",
"nic-pld": "Plains Dogon",
"nic-ple": "East Plateau",
"nic-pls": "South Plateau",
"nic-plt": "Plateau",
"nic-ras": "Rashad",
"nic-rnc": "Central Ring",
"nic-rng": "Ring",
"nic-rnn": "Northern Ring",
"nic-rnw": "Western Ring",
"nic-ser": "Sere",
"nic-shi": "Shiroro",
"nic-sis": "Sisaala",
"nic-tar": "Tarokoid",
"nic-tiv": "Tivoid",
"nic-tvc": "Central Tivoid",
"nic-tvn": "Northern Tivoid",
"nic-ubg": "Ubangian",
"nic-uce": "East-West Upper Cross River",
"nic-ucn": "North-South Upper Cross River",
"nic-ucr": "Upper Cross River",
"nic-vco": "Volta-Congo",
"nic-wov": "Western Oti-Volta",
"nic-ykb": "Yukubenic",
"nic-ymb": "Yambasa",
"nic-yon": "Yom-Nawdm",
"nub": "Nubian",
"nub-hil": "Hill Nubian",
"nur-nor": "Northern Nuristani",
"nur-sou": "Southern Nuristani",
"omq": "Oto-Manguean",
"omq-cha": "Chatino",
"omq-chi": "Chinantecan",
"omq-cui": "Cuicatec",
"omq-maz": "Mazatecan",
"omq-mix": "Mixtecan",
"omq-mxt": "Mixtec",
"omq-otp": "Oto-Pamean",
"omq-pop": "Popolocan",
"omq-tri": "Triqui",
"omq-zap": "Zapotecan",
"omq-zpc": "Zapotec",
"omv": "Omotic",
"omv-aro": "Aroid",
"omv-diz": "Dizoid",
"omv-eom": "East Ometo",
"omv-gon": "Gonga",
"omv-mao": "Mao",
"omv-nom": "North Ometo",
"omv-ome": "Ometo",
"oto": "Otomian",
"oto-otm": "Otomi",
"paa": "Papuan",
"paa-aia": "Aian",
"paa-alp": "Alor-Pantar",
"paa-amu": "Amto-Musan",
"paa-ani": "Anim",
"paa-ara": "Arapesh",
"paa-arf": "Arafundi",
"paa-ata": "Ataitan",
"paa-baa": "Bayono-Awbono",
"paa-bai": "Baining",
"paa-baw": "Bosngun-Awar",
"paa-bew": "Bewani",
"paa-boa": "Boazi",
"paa-bor": "Border",
"paa-bul": "Bulaka River",
"paa-bvi": "Betaf-Vitou",
"paa-clp": "Central Lakes Plain",
"paa-dtu": "Doso-Turumsa",
"paa-ebh": "East Bird's Head",
"paa-eel": "Eastern Eleman",
"paa-egb": "East Geelvink Bay",
"paa-eke": "East Keram",
"paa-ele": "Eleman",
"paa-elp": "East Lakes Plain",
"paa-epw": "Eastern Pauwasi",
"paa-etf": "Eastern Trans-Fly",
"paa-eti": "East Timor",
"paa-fas": "Fas",
"paa-flp": "Far West Lakes Plain",
"paa-gkw": "Greater Kwerba",
"paa-gto": "Galela-Tobelo",
"paa-hya": "Heyo-Yahang",
"paa-ing": "Inland Gulf",
"paa-isk": "Inner Sko",
"paa-iwa": "Iwam",
"paa-kae": "Kamula-Elevala",
"paa-kan": "Kanum",
"paa-kay": "Kayagaric",
"paa-ker": "Keram",
"paa-kiw": "Kiwaian",
"paa-kko": "Kaure-Kosare",
"paa-koa": "Kombio-Arapesh",
"paa-kol": "Kolopom",
"paa-kom": "Kombio",
"paa-kun": "Kunimaipan",
"paa-kwa": "Kwalean",
"paa-kwe": "Kwerba proper",
"paa-kwo": "Kwomtari",
"paa-lla": "Loloda-Laba",
"paa-lma": "Left May",
"paa-lmu": "Lepki-Murkim",
"paa-lpl": "Lakes Plain",
"paa-lra": "Lower Ramu",
"paa-lse": "Lower Sepik",
"paa-mai": "Mairasi",
"paa-mal": "Mailuan",
"paa-mam": "Maimai",
"paa-man": "Manubaran",
"paa-mar": "Marienberg",
"paa-may": "Maybratic",
"paa-mbi": "Mbaham-Iha",
"paa-mby": "Marind-Boazi-Yaqay",
"paa-mmu": "Mandi-Muniwara",
"paa-mon": "Monumbo",
"paa-mri": "Marindic",
"paa-nam": "Nambu",
"paa-nbo": "North Bougainville",
"paa-ndu": "Ndu",
"paa-ngk": "Ngkolmpu",
"paa-nha": "North Halmahera",
"paa-nim": "Nimboran",
"paa-nnd": "Nuclear Ndu",
"paa-nnh": "Northern North Halmahera",
"paa-nto": "Namla-Tofanma",
"paa-ott": "Ottilien",
"paa-pah": "Pahoturi River",
"paa-pal": "Palei",
"paa-pia": "Piawi",
"paa-pio": "Piore River",
"paa-por": "Porapora",
"paa-ram": "Ramu",
"paa-rsa": "Rasawa-Saponi",
"paa-rub": "Ruboni",
"paa-saa": "Samarokena-Airoran",
"paa-sah": "Sahu",
"paa-sbo": "South Bougainville",
"paa-sen": "Sentani",
"paa-sep": "Sepik",
"paa-shi": "Serra Hills",
"paa-sko": "Sko",
"paa-sng": "Senagi",
"paa-taa": "Taikat-Awyi",
"paa-tam": "Tamolan",
"paa-tap": "Timor-Alor-Pantar",
"paa-teb": "Teberan",
"paa-tir": "Tirio",
"paa-tki": "Turama-Kikori",
"paa-ton": "Tonda",
"paa-too": "Tor-Orya",
"paa-tor": "Tor",
"paa-trr": "Torricelli",
"paa-tti": "Ternate-Tidore",
"paa-wal": "Walio",
"paa-wap": "Wapei",
"paa-war": "Waris",
"paa-wbh": "West Bird's Head",
"paa-wel": "Western Eleman",
"paa-wig": "West Inland Gulf",
"paa-wke": "West Keram",
"paa-wko": "Wára-Kómnzo",
"paa-wlp": "West Lakes Plain",
"paa-wpa": "Wapei-Palei",
"paa-wpw": "Western Pauwasi",
"paa-yam": "Yam",
"paa-yaq": "Yaqayic",
"paa-ysa": "Yawa-Saweru",
"paa-yua": "Yuat",
"phi": "Philippine",
"phi-kal": "Kalamian",
"poz": "Malayo-Polynesian",
"poz-aay": "Admiralty Islands",
"poz-bnn": "North Bornean",
"poz-bre": "East Barito",
"poz-brw": "West Barito",
"poz-bss": "Bali-Sasak-Sumbawa",
"poz-btk": "Bungku-Tolaki",
"poz-cet": "Central-Eastern Malayo-Polynesian",
"poz-clb": "Celebic",
"poz-cln": "New Caledonian",
"poz-cma": "Central Maluku",
"poz-hce": "Halmahera-Cenderawasih",
"poz-kal": "Kaili-Pamona",
"poz-lgx": "Lampungic",
"poz-mcm": "Malayo-Chamic",
"poz-mic": "Micronesian",
"poz-mly": "Malayic",
"poz-msa": "Malayo-Sumbawan",
"poz-mun": "Muna-Buton",
"poz-nws": "Northwest Sumatran",
"poz-occ": "Central-Eastern Oceanic",
"poz-oce": "Oceanic",
"poz-ocs": "Southern Oceanic",
"poz-ocw": "Western Oceanic",
"poz-pcc": "Central Pacific",
"poz-pep": "Eastern Polynesian",
"poz-pnp": "Nuclear Polynesian",
"poz-pol": "Polynesian",
"poz-san": "Sabahan",
"poz-sbj": "Sama-Bajaw",
"poz-slb": "Saluan-Banggai",
"poz-sls": "Southeast Solomonic",
"poz-ssw": "South Sulawesi",
"poz-stm": "St. Matthias",
"poz-swa": "North Sarawakan",
"poz-tem": "Temotu",
"poz-tim": "Timoric",
"poz-ton": "Tongic",
"poz-tot": "Tomini-Tolitoli",
"poz-vnc": "Central Vanuatu",
"poz-vnn": "North Vanuatu",
"poz-vns": "South Vanuatu",
"poz-wot": "Wotu-Wolio",
"pqe": "Eastern Malayo-Polynesian",
"qfa-adc": "Central Great Andamanese",
"qfa-adm": "Great Andamanese",
"qfa-adn": "Northern Great Andamanese",
"qfa-ads": "Southern Great Andamanese",
"qfa-ain": "Ainuic",
"qfa-bej": "Be-Jizhao",
"qfa-bet": "Be-Tai",
"qfa-buy": "Buyang",
"qfa-cka": "Chukotko-Kamchatkan",
"qfa-ckn": "Chukotkan",
"qfa-cnt": "contact",
"qfa-cre": "creole",
"qfa-dgn": "Dogon",
"qfa-dis": "disputed affiliation",
"qfa-dny": "Dene-Yeniseian",
"qfa-hur": "Hurro-Urartian",
"qfa-iso": "isolate",
"qfa-kad": "Kadu",
"qfa-kms": "Kam-Sui",
"qfa-kor": "Koreanic",
"qfa-kra": "Kra",
"qfa-lic": "Hlai",
"qfa-mch": "Macro-Chibchan",
"qfa-mix": "mixed",
"qfa-not": "not a family",
"qfa-onb": "Be",
"qfa-ong": "Ongan",
"qfa-pid": "pidgin",
"qfa-sub": "substrate",
"qfa-tak": "Kra-Dai",
"qfa-tyn": "Tyrsenian",
"qfa-unc": "unclassifiable",
"qfa-xgs": "Serbi-Mongolic",
"qfa-xgx": "Para-Mongolic",
"qfa-yen": "Yeniseian",
"qfa-yke": "Ketic",
"qfa-yko": "Kottic",
"qfa-ypm": "Pumpokolic",
"qfa-yrn": "Arinic",
"qfa-yuk": "Yukaghir",
"qwe": "Quechuan",
"raj": "Rajasthani",
"roa": "Romance",
"roa-asl": "Asturleonese",
"roa-cas": "Castilian",
"roa-dal": "Dalmatian Romance",
"roa-eas": "Eastern Romance",
"roa-emr": "Emilian-Romagnol",
"roa-gap": "Galician-Portuguese",
"roa-gar": "Gallo-Romance",
"roa-git": "Gallo-Italic",
"roa-grh": "Gallo-Rhaetian",
"roa-ibe": "Ibero-Romance",
"roa-itd": "Italo-Dalmatian",
"roa-itr": "Italo-Romance",
"roa-iwr": "Italo-Western Romance",
"roa-nar": "Navarro-Aragonese",
"roa-ocr": "Occitano-Romance",
"roa-oil": "Oïl",
"roa-rhe": "Rhaeto-Romance",
"roa-sou": "Southern Romance",
"roa-wes": "Western Romance",
"sai-ara": "Araucanian",
"sai-aym": "Aymaran",
"sai-bar": "Barbacoan",
"sai-bor": "Boran",
"sai-cah": "Cahuapanan",
"sai-car": "Cariban",
"sai-cer": "Cerrado",
"sai-chc": "Chocoan",
"sai-cho": "Chonan",
"sai-cje": "Central Jê",
"sai-cpc": "Chapacuran",
"sai-crn": "Charruan",
"sai-ctc": "Catacaoan",
"sai-guc": "Guaicuruan",
"sai-guh": "Guahiban",
"sai-gui": "Guianan",
"sai-har": "Harákmbut",
"sai-hkt": "Harákmbut-Katukinan",
"sai-hrp": "Huarpean",
"sai-jee": "Jê",
"sai-jir": "Jirajaran",
"sai-jiv": "Jivaroan",
"sai-ktk": "Katukinan",
"sai-kui": "Kuikuroan",
"sai-map": "Mapoyan",
"sai-mas": "Mascoian",
"sai-mgc": "Mataco-Guaicuru",
"sai-mje": "Macro-Jê",
"sai-mtc": "Matacoan",
"sai-mur": "Muran",
"sai-nad": "Nadahup",
"sai-nje": "Northern Jê",
"sai-nmk": "Nambikwaran",
"sai-otm": "Otomacoan",
"sai-pan": "Panoan",
"sai-pat": "Pano-Tacanan",
"sai-pek": "Pekodian",
"sai-pem": "Pemongan",
"sai-pey": "Peba-Yaguan",
"sai-prk": "Parukotoan",
"sai-sje": "Southern Jê",
"sai-tac": "Tacanan",
"sai-tar": "Taranoan",
"sai-tuc": "Tucanoan",
"sai-tyu": "Ticuna-Yuri",
"sai-ucp": "Uru-Chipaya",
"sai-ven": "Venezuelan Cariban",
"sai-wic": "Wichí",
"sai-wit": "Witotoan",
"sai-ynm": "Yanomami",
"sai-yuk": "Yukpan",
"sai-zam": "Zamucoan",
"sai-zap": "Zaparoan",
"sal": "Salish",
"sdv": "Eastern Sudanic",
"sdv-bri": "Bari",
"sdv-daj": "Daju",
"sdv-dnu": "Dinka-Nuer",
"sdv-eje": "Eastern Jebel",
"sdv-kln": "Kalenjin",
"sdv-lma": "Lotuko-Maa",
"sdv-lon": "Northern Luo",
"sdv-los": "Southern Luo",
"sdv-luo": "Luo",
"sdv-nes": "Northern Eastern Sudanic",
"sdv-nie": "Eastern Nilotic",
"sdv-nil": "Nilotic",
"sdv-nis": "Southern Nilotic",
"sdv-niw": "Western Nilotic",
"sdv-nma": "Nandi-Markweta",
"sdv-nyi": "Nyima",
"sdv-tmn": "Taman",
"sdv-ttu": "Teso-Turkana",
"sel": "Selkup",
"sem": "Semitic",
"sem-ara": "Aramaic",
"sem-arb": "Arabic",
"sem-are": "Eastern Aramaic",
"sem-arw": "Western Aramaic",
"sem-ase": "Southeastern Aramaic",
"sem-can": "Canaanite",
"sem-cen": "Central Semitic",
"sem-cna": "Central Neo-Aramaic",
"sem-eas": "East Semitic",
"sem-eth": "Ethiopian Semitic",
"sem-nna": "Northeastern Neo-Aramaic",
"sem-nwe": "Northwest Semitic",
"sem-osa": "Old South Arabian",
"sem-sar": "Modern South Arabian",
"sem-wes": "West Semitic",
"sgn": "sign",
"sgn-fsl": "French Sign Languages",
"sgn-gsl": "German Sign Languages",
"sgn-jsl": "Japanese Sign Languages",
"sio": "Siouan",
"sio-dhe": "Dhegihan",
"sio-dkt": "Dakotan",
"sio-mor": "Missouri River Siouan",
"sio-msv": "Mississippi Valley Siouan",
"sio-ohv": "Ohio Valley Siouan",
"sit": "Sino-Tibetan",
"sit-aao": "Central Naga",
"sit-alm": "Almora",
"sit-bai": "Bai",
"sit-bdi": "Bodish",
"sit-cln": "Cai-Long",
"sit-dhi": "Dhimalish",
"sit-ebo": "East Bodish",
"sit-egy": "East rGyalrongic",
"sit-ers": "Ersuic",
"sit-gma": "Greater Magaric",
"sit-gsi": "Greater Siangic",
"sit-hrs": "Hrusish",
"sit-jnp": "Jingphoic",
"sit-jpl": "Kachin-Luic",
"sit-kch": "Konyak-Chang",
"sit-kha": "Kham",
"sit-khb": "Kho-Bwa",
"sit-khc": "Chug-Lish",
"sit-khm": "Mey-Sartang",
"sit-khw": "Western Kho-Bwa",
"sit-kic": "Central Kiranti",
"sit-kie": "Eastern Kiranti",
"sit-kin": "Kinnauric",
"sit-kir": "Kiranti",
"sit-kiw": "Western Kiranti",
"sit-kon": "Northern Naga",
"sit-kyk": "Kyirong-Kagate",
"sit-lab": "Ladakhi-Balti",
"sit-las": "Lahuli-Spiti",
"sit-luu": "Luish",
"sit-mar": "Maringic",
"sit-mba": "Macro-Bai",
"sit-mdz": "Midzu",
"sit-mnz": "Mondzish",
"sit-mru": "Mruic",
"sit-nas": "Naish",
"sit-nax": "Naic",
"sit-nba": "Northern Bai",
"sit-new": "Newaric",
"sit-nng": "Nungish",
"sit-qia": "Qiangic",
"sit-rgy": "Rgyalrongic",
"sit-sba": "Sino-Bai",
"sit-tam": "Tamangic",
"sit-tan": "Tani",
"sit-tib": "Tibetic",
"sit-tja": "Tujia",
"sit-tma": "Tangkhul-Maring",
"sit-tng": "Tangkhulic",
"sit-tno": "Tangsa-Nocte",
"sit-tsk": "Tshangla",
"sit-wgy": "West rGyalrongic",
"sit-whm": "West Himalayish",
"sit-zem": "Zeme",
"sla": "Slavic",
"smi": "Sami",
"son": "Songhay",
"sqj": "Albanian",
"ssa": "Nilo-Saharan",
"ssa-fur": "Fur",
"ssa-klk": "Kuliak",
"ssa-kom": "Koman",
"ssa-sah": "Saharan",
"syd": "Samoyedic",
"syd-ene": "Enets",
"tai": "Tai",
"tai-cen": "Central Tai",
"tai-cho": "Chongzuo Tai",
"tai-nor": "Northern Tai",
"tai-sap": "Sapa-Southwestern Tai",
"tai-swe": "Southwestern Tai",
"tai-tay": "Tày",
"tai-wen": "Wenma-Southwestern Tai",
"tbq": "Tibeto-Burman",
"tbq-anp": "Angami-Pochuri",
"tbq-axi": "Axioid",
"tbq-bdg": "Bodo-Garo",
"tbq-bis": "Bisoid",
"tbq-bka": "Bi-Ka",
"tbq-bkj": "Sal",
"tbq-brm": "Burmish",
"tbq-buq": "Burmo-Qiangic",
"tbq-drp": "Downriver Phula",
"tbq-han": "Hanoid",
"tbq-hph": "Highland Phula",
"tbq-jin": "Jino",
"tbq-kuk": "Kuki-Chin",
"tbq-kzh": "Kazhuoish",
"tbq-lal": "Lalo",
"tbq-lho": "Lahoish",
"tbq-llo": "Lipo-Lolopo",
"tbq-lob": "Lolo-Burmese",
"tbq-lol": "Loloish",
"tbq-lso": "Lisoish",
"tbq-lwo": "Lawoish",
"tbq-muj": "Muji",
"tbq-nas": "Nasoid",
"tbq-nis": "Nisu",
"tbq-nlo": "Northern Loloish",
"tbq-nso": "Nisoish",
"tbq-nus": "Nusoish",
"tbq-phw": "Phowa",
"tbq-rph": "Riverine Phula",
"tbq-sel": "Southeastern Loloish",
"tbq-sil": "Siloid",
"tbq-slo": "Southern Loloish",
"tbq-tal": "Taloid",
"tbq-urp": "Upriver Phula",
"trk": "Turkic",
"trk-cmn": "Common Turkic",
"trk-kar": "Karluk",
"trk-kbu": "Kipchak-Bulgar",
"trk-kcu": "Kipchak-Cuman",
"trk-kip": "Kipchak",
"trk-kkp": "Kyrgyz-Kipchak",
"trk-kno": "Kipchak-Nogai",
"trk-nsb": "North Siberian Turkic",
"trk-ogr": "Oghur",
"trk-ogz": "Oghuz",
"trk-sib": "Siberian Turkic",
"trk-ssb": "South Siberian Turkic",
"tup": "Tupian",
"tup-gua": "Tupi-Guarani",
"tuw": "Tungusic",
"tuw-ewe": "Ewenic",
"tuw-jrc": "Jurchenic",
"tuw-nan": "Nanaic",
"tuw-udg": "Udegheic",
"urj": "Uralic",
"urj-fin": "Finnic",
"urj-mdv": "Mordvinic",
"urj-prm": "Permic",
"urj-ugr": "Ugric",
"wak": "Wakashan",
"wen": "Sorbian",
"xgn": "Mongolic",
"xgn-cen": "Central Mongolic",
"xgn-shr": "Shirongolic",
"xgn-sou": "Southern Mongolic",
"xme": "Median",
"xme-ttc": "Tatic",
"xnd": "Na-Dene",
"xsc": "Scythian",
"xsc-sak": "Saka",
"xsc-sar": "Sarmatian",
"xsc-skw": "Saka-Wakhi",
"yok": "Yokuts",
"ypk": "Yupik",
"yrk": "Nenets",
"zhx": "Sinitic",
"zhx-com": "Coastal Min",
"zhx-inm": "Inland Min",
"zhx-man": "Mandarinic",
"zhx-min": "Min",
"zhx-nan": "Southern Min",
"zhx-pin": "Pinghua",
"zhx-yue": "Yue",
"zle": "East Slavic",
"zls": "South Slavic",
"zlw": "West Slavic",
"zlw-lch": "Lechitic",
"zlw-pom": "Pomeranian",
"znd": "Zande"
}
7fcmdvao06e0n7irdx3fa8twz18toi2
Module:families/canonical names.json
828
137314
233730
221298
2026-02-13T20:30:14Z
en>Mellohi!
0
[[MediaWiki:UpdateLanguageNameAndCode.js|updated]]
233730
json
application/json
{
"Abenaki-Penobscot": "alg-abp",
"Abkhaz-Abaza": "cau-abz",
"Adamawa": "alv-ada",
"Admiralty Islands": "poz-aay",
"Afroasiatic": "afa",
"Aian": "paa-aia",
"Ainuic": "qfa-ain",
"Aisian": "ngf-ais",
"Aizi": "kro-aiz",
"Alacalufan": "aqa",
"Albanian": "sqj",
"Algic": "aql",
"Algonquian": "alg",
"Almora": "sit-alm",
"Alor-Pantar": "paa-alp",
"Alumic": "nic-alu",
"Amto-Musan": "paa-amu",
"Anatolian": "ine-ana",
"Andian": "cau-and",
"Angal-Kewa": "ngf-ank",
"Angami-Pochuri": "tbq-anp",
"Angan": "ngf-ang",
"Anglic": "gmw-ang",
"Anglo-Frisian": "gmw-afr",
"Anim": "paa-ani",
"Ankave-Tainae-Akoye": "ngf-ata",
"Apachean": "apa",
"Arabic": "sem-arb",
"Arafundi": "paa-arf",
"Aramaic": "sem-ara",
"Arandic": "aus-rnd",
"Arapahoan": "alg-ara",
"Arapesh": "paa-ara",
"Arauan": "auf",
"Araucanian": "sai-ara",
"Arawak": "awd",
"Arinic": "qfa-yrn",
"Armenian": "hyx",
"Arnhem": "aus-arn",
"Aroid": "omv-aro",
"Aslian": "mkh-asl",
"Asmat": "ngf-asm",
"Asmat-Kamoro": "ngf-ask",
"Asturleonese": "roa-asl",
"Ataitan": "paa-ata",
"Atayalic": "map-ata",
"Athabaskan": "ath",
"Atlantic-Congo": "alv",
"Austroasiatic": "aav",
"Austronesian": "map",
"Avaro-Andian": "cau-ava",
"Awyu": "ngf-awy",
"Awyu-Dumut": "ngf-awd",
"Axioid": "tbq-axi",
"Ayere-Ahan": "alv-aah",
"Aymaran": "sai-aym",
"Bafia": "bnt-baf",
"Bafo-Bonkeng": "bnt-bbo",
"Baga": "alv-bag",
"Bagirmi": "csu-bgr",
"Bahnaric": "mkh-ban",
"Bai": "sit-bai",
"Baining": "paa-bai",
"Bak": "alv-bak",
"Baka": "nic-nkb",
"Bali-Sasak-Sumbawa": "poz-bss",
"Baltic": "bat",
"Balto-Slavic": "ine-bsl",
"Bambukic": "alv-bam",
"Bamileke": "bai",
"Banda": "bad",
"Bangi-Moi": "bnt-bmo",
"Bangi-Ntomba": "bnt-bnm",
"Bangi-Tetela": "bnt-bte",
"Bantoid": "nic-bod",
"Bantoid-Cross": "nic-bcr",
"Bantu": "bnt",
"Banyum": "alv-bny",
"Barbacoan": "sai-bar",
"Bari": "sdv-bri",
"Baruya-Simbari": "ngf-bsi",
"Basa": "nic-bas",
"Basaa": "bnt-bsa",
"Batak": "btk",
"Bati-Angba": "bnt-bta",
"Bayono-Awbono": "paa-baa",
"Be": "qfa-onb",
"Be-Jizhao": "qfa-bej",
"Be-Tai": "qfa-bet",
"Beboid": "nic-beb",
"Becking-Dawi": "ngf-bda",
"Bekwilic": "bnt-bek",
"Bena-Kinga": "bnt-bki",
"Bendi": "nic-ben",
"Bengali-Assamese": "inc-bas",
"Benue-Congo": "nic-bco",
"Berber": "ber",
"Beromic": "nic-beo",
"Betaf-Vitou": "paa-bvi",
"Beti": "bnt-btb",
"Bewani": "paa-bew",
"Bhil": "inc-bhi",
"Bi-Ka": "tbq-bka",
"Bihari": "inc-bih",
"Bikwin-Jen": "alv-bwj",
"Binanderean": "ngf-bin",
"Birri-Kresh": "csu-bkr",
"Bisa-Busa": "dmn-bbu",
"Bisoid": "tbq-bis",
"Boan": "bnt-boa",
"Boane": "ngf-boa",
"Boazi": "paa-boa",
"Bodish": "sit-bdi",
"Bodo-Garo": "tbq-bdg",
"Boma-Dzing": "bnt-bdz",
"Bongo-Bagirmi": "csu-bba",
"Bongo-Baka": "csu-bbk",
"Boran": "sai-bor",
"Border": "paa-bor",
"Bosavi": "ngf-bos",
"Bosngun-Awar": "paa-baw",
"Botatwe": "bnt-bot",
"Brythonic": "cel-bry",
"Bua": "alv-bua",
"Buja-Ngombe": "bnt-bun",
"Bulaka River": "paa-bul",
"Buli-Koma": "nic-buk",
"Bungku-Tolaki": "poz-btk",
"Bunuban": "aus-bub",
"Burmish": "tbq-brm",
"Burmo-Qiangic": "tbq-buq",
"Bushoong": "bnt-bsh",
"Buyang": "qfa-buy",
"Bwa": "nic-bwa",
"Bété": "kro-bet",
"Caddoan": "cdd",
"Cahuapanan": "sai-cah",
"Cai-Long": "sit-cln",
"Canaanite": "sem-can",
"Cangin": "alv-cng",
"Cariban": "sai-car",
"Caspian": "ira-csp",
"Castilian": "roa-cas",
"Catacaoan": "sai-ctc",
"Catawban": "nai-cat",
"Celebic": "poz-clb",
"Celtic": "cel",
"Central Banda": "bad-cnt",
"Central Chadic": "cdc-cbm",
"Central Cushitic": "cus-cen",
"Central Dani": "ngf-cda",
"Central Delta": "nic-cde",
"Central Dravidian": "dra-cen",
"Central Great Andamanese": "qfa-adc",
"Central Indo-Aryan": "inc-cen",
"Central Iranian": "ira-cen",
"Central Jê": "sai-cje",
"Central Kiranti": "sit-kic",
"Central Lakes Plain": "paa-clp",
"Central Maluku": "poz-cma",
"Central Mande": "dmn-mdc",
"Central Mongolic": "xgn-cen",
"Central Naga": "sit-aao",
"Central Neo-Aramaic": "sem-cna",
"Central New South Wales": "aus-cww",
"Central Pacific": "poz-pcc",
"Central Plateau": "nic-plc",
"Central Ring": "nic-rnc",
"Central Semitic": "sem-cen",
"Central Sudanic": "csu",
"Central Tai": "tai-cen",
"Central Tano": "alv-ctn",
"Central Teke": "bnt-tkc",
"Central Tivoid": "nic-tvc",
"Central Vanuatu": "poz-vnc",
"Central-Eastern Malayo-Polynesian": "poz-cet",
"Central-Eastern Oceanic": "poz-occ",
"Cerrado": "sai-cer",
"Chadic": "cdc",
"Chaga": "bnt-chg",
"Chaga-Taita": "bnt-cht",
"Chamic": "cmc",
"Chapacuran": "sai-cpc",
"Charruan": "sai-crn",
"Chatino": "omq-cha",
"Chibchan": "cba",
"Chimakuan": "chi",
"Chimbu-Wahgi": "ngf-chw",
"Chinantecan": "omq-chi",
"Chinookan": "nai-ckn",
"Chitrali": "inc-chi",
"Chocoan": "sai-chc",
"Chokwe-Luchazi": "bnt-clu",
"Chonan": "sai-cho",
"Chongzuo Tai": "tai-cho",
"Chug-Lish": "sit-khc",
"Chukotkan": "qfa-ckn",
"Chukotko-Kamchatkan": "qfa-cka",
"Chumashan": "nai-chu",
"Circassian": "cau-cir",
"Coastal Min": "zhx-com",
"Common Turkic": "trk-cmn",
"Comorian": "bnt-com",
"Coosan": "nai-coo",
"Cross River": "nic-cri",
"Cuicatec": "omq-cui",
"Cupan": "azc-cup",
"Cushitic": "cus",
"Dagan": "ngf-dag",
"Dagbani": "nic-dag",
"Daju": "sdv-daj",
"Dakoid": "nic-dak",
"Dakotan": "sio-dkt",
"Dallman": "ngf-dal",
"Dalmatian Romance": "roa-dal",
"Daly": "aus-dal",
"Dangari": "inc-dng",
"Dani": "ngf-dan",
"Dardic": "inc-dar",
"Dargwa": "cau-drg",
"Delta Edoid": "alv-dlt",
"Dene-Yeniseian": "qfa-dny",
"Dhegihan": "sio-dhe",
"Dhimalish": "sit-dhi",
"Dida": "kro-did",
"Dinka-Nuer": "sdv-dnu",
"Dizoid": "omv-diz",
"Dogon": "qfa-dgn",
"Doso-Turumsa": "paa-dtu",
"Downriver Phula": "tbq-drp",
"Dravidian": "dra",
"Dumut": "ngf-dum",
"Durango Nahuatl": "azc-dur",
"Duru": "alv-dur",
"Dyirbalic": "aus-dyb",
"East Baltic": "bat-eas",
"East Barito": "poz-bre",
"East Bird's Head": "paa-ebh",
"East Bodish": "sit-ebo",
"East Chadic": "cdc-est",
"East Cushitic": "cus-eas",
"East Geelvink Bay": "paa-egb",
"East Germanic": "gme",
"East Kainji": "nic-kne",
"East Keram": "paa-eke",
"East Kutubuan": "ngf-eku",
"East Lakes Plain": "paa-elp",
"East Manding": "dmn-emn",
"East Ometo": "omv-eom",
"East Plateau": "nic-ple",
"East Scandinavian": "gmq-eas",
"East Semitic": "sem-eas",
"East Slavic": "zle",
"East Sogeram": "ngf-eso",
"East Strickland": "ngf-est",
"East Timor": "paa-eti",
"East Tsezian": "cau-ets",
"East rGyalrongic": "sit-egy",
"East-West Upper Cross River": "nic-uce",
"Eastern Algonquian": "alg-eas",
"Eastern Aramaic": "sem-are",
"Eastern Beboid": "nic-bbe",
"Eastern Central Sudanic": "csu-ecs",
"Eastern Dardic": "inc-dre",
"Eastern Eleman": "paa-eel",
"Eastern Gbaya": "gba-eas",
"Eastern Grassfields": "nic-gre",
"Eastern Gurunsi": "nic-gne",
"Eastern Hindi": "inc-hie",
"Eastern Huon": "ngf-ehu",
"Eastern Indo-Aryan": "inc-eas",
"Eastern Jebel": "sdv-eje",
"Eastern Kiranti": "sit-kie",
"Eastern Kru": "kro-ekr",
"Eastern Malayo-Polynesian": "pqe",
"Eastern Mande": "dmn-mde",
"Eastern Ngbaka": "nic-nke",
"Eastern Nilotic": "sdv-nie",
"Eastern Oti-Volta": "nic-eov",
"Eastern Pauwasi": "paa-epw",
"Eastern Polynesian": "poz-pep",
"Eastern Romance": "roa-eas",
"Eastern Samur": "cau-esm",
"Eastern Sudanic": "sdv",
"Eastern Trans-Fly": "paa-etf",
"Ede": "alv-ede",
"Edekiri": "alv-edk",
"Edo-Esan-Ora": "alv-eeo",
"Edoid": "alv-edo",
"Egyptian": "egx",
"Ekoid": "nic-eko",
"Eleman": "paa-ele",
"Emilian-Romagnol": "roa-emr",
"Enets": "syd-ene",
"Engan": "ngf-eng",
"Engic": "ngf-enc",
"Erap": "ngf-era",
"Ersuic": "sit-ers",
"Escarpment Dogon": "nic-dge",
"Eskimo": "esx-esk",
"Eskimo-Aleut": "esx",
"Ethiopian Semitic": "sem-eth",
"Evapia": "ngf-eva",
"Ewenic": "tuw-ewe",
"Fali": "alv-fli",
"Far West Lakes Plain": "paa-flp",
"Fas": "paa-fas",
"Finisterre": "ngf-fin",
"Finisterre-Huon": "ngf-fhu",
"Finnic": "urj-fin",
"Fore-Gimi": "ngf-fgi",
"French Sign Languages": "sgn-fsl",
"Frisian": "gmw-fri",
"Fula-Wolof": "alv-fwo",
"Fur": "ssa-fur",
"Furu": "nic-fru",
"Ga-Dangme": "alv-gda",
"Gaena-Korafe": "ngf-gko",
"Gahuku": "ngf-gah",
"Galela-Tobelo": "paa-gto",
"Galician-Portuguese": "roa-gap",
"Gallo-Italic": "roa-git",
"Gallo-Rhaetian": "roa-grh",
"Gallo-Romance": "roa-gar",
"Garawan": "aus-gar",
"Gauwa": "ngf-gau",
"Gbanziri": "nic-nkg",
"Gbaya": "gba",
"Gbe": "alv-gbe",
"Gelao": "gio",
"Georgian-Zan": "ccs-gzn",
"German Sign Languages": "sgn-gsl",
"Germanic": "gem",
"Ghana-Togo Mountain": "alv-gtm",
"Gogodala-Suki": "ngf-gsu",
"Goidelic": "cel-gae",
"Gondi": "dra-gon",
"Gondi-Kui": "dra-gki",
"Gonga": "omv-gon",
"Goroka": "ngf-gor",
"Grand Valley Dani": "ngf-gvd",
"Grassfields": "nic-grf",
"Great Andamanese": "qfa-adm",
"Great Lakes Bantu": "bnt-glb",
"Greater Awyu": "ngf-gaw",
"Greater Binanderean": "ngf-gbi",
"Greater Kwerba": "paa-gkw",
"Greater Magaric": "sit-gma",
"Greater Siangic": "sit-gsi",
"Grebo": "kro-grb",
"Grebo proper": "grb",
"Guahiban": "sai-guh",
"Guaicuruan": "sai-guc",
"Guang": "alv-gng",
"Guarani": "gn",
"Guianan": "sai-gui",
"Gum": "ngf-gum",
"Gunwinyguan": "aus-gun",
"Gur": "nic-gur",
"Gurma": "nic-grm",
"Gurunsi": "nic-gns",
"Gusap-Mot": "ngf-gmo",
"Hagen": "ngf-hag",
"Halbic": "inc-hal",
"Halmahera-Cenderawasih": "poz-hce",
"Hanoid": "tbq-han",
"Hanseman": "ngf-han",
"Harákmbut": "sai-har",
"Harákmbut-Katukinan": "sai-hkt",
"Haya-Jita": "bnt-haj",
"Heiban": "alv-hei",
"Hellenic": "grk",
"Heyo-Yahang": "paa-hya",
"High German": "gmw-hgm",
"Highland East Cushitic": "cus-hec",
"Highland Phula": "tbq-hph",
"Hill Nubian": "nub-hil",
"Hindustani": "inc-hnd",
"Hispano-Celtic": "cel-his",
"Hlai": "qfa-lic",
"Hmong-Mien": "hmx",
"Hmongic": "hmn",
"Hokan": "hok",
"Horpa": "ero",
"Hrusish": "sit-hrs",
"Huarpean": "sai-hrp",
"Huasteca Nahuatl": "azc-hua",
"Huon": "ngf-huo",
"Hurro-Urartian": "qfa-hur",
"Ibero-Romance": "roa-ibe",
"Ibibio-Efik": "nic-ief",
"Idomoid": "alv-ido",
"Igboid": "alv-igb",
"Ijoid": "ijo",
"Indo-Aryan": "inc",
"Indo-European": "ine",
"Indo-Iranian": "iir",
"Inland Gulf": "paa-ing",
"Inland Min": "zhx-inm",
"Inner Sko": "paa-isk",
"Insular Celtic": "cel-ins",
"Insular Indo-Aryan": "inc-ins",
"Insular Scandinavian": "gmq-ins",
"Inuit": "esx-inu",
"Iranian": "ira",
"Irish Anglo-Norman": "gmw-ian",
"Iroquoian": "iro",
"Irula-Muduga": "dra-imd",
"Italic": "itc",
"Italo-Dalmatian": "roa-itd",
"Italo-Romance": "roa-itr",
"Italo-Western Romance": "roa-iwr",
"Iwaidjan": "aus-wdj",
"Iwam": "paa-iwa",
"Japanese Sign Languages": "sgn-jsl",
"Japonic": "jpx",
"Jarawa": "nic-jrw",
"Jarawan": "nic-jrn",
"Jarrakan": "aus-jar",
"Jera": "nic-jer",
"Jicaquean": "nai-jcq",
"Jimi": "ngf-jim",
"Jingphoic": "sit-jnp",
"Jino": "tbq-jin",
"Jirajaran": "sai-jir",
"Jivaroan": "sai-jiv",
"Jogo-Jeri": "dmn-jje",
"Jola": "alv-jol",
"Jola-Felupe": "alv-jfe",
"Jukunoid": "nic-jkn",
"Jurchenic": "tuw-jrc",
"Jê": "sai-jee",
"KRDS languages": "inc-krd",
"Ka-Togo": "alv-ktg",
"Kaba": "csu-kab",
"Kabwum": "ngf-kab",
"Kachin-Luic": "sit-jpl",
"Kadu": "qfa-kad",
"Kaili-Pamona": "poz-kal",
"Kainantu": "ngf-kai",
"Kainantu-Goroka": "ngf-kgo",
"Kainji": "nic-knj",
"Kako": "bnt-kak",
"Kalahari Khoe": "khi-kal",
"Kalam-Kobon": "ngf-kak",
"Kalam-Southern Adelbert": "ngf-ksa",
"Kalamian": "phi-kal",
"Kalapuyan": "nai-klp",
"Kalenjin": "sdv-kln",
"Kam-Sui": "qfa-kms",
"Kamano-Yagaria": "ngf-kya",
"Kambari": "nic-kam",
"Kamuku": "nic-kmk",
"Kamula-Elevala": "paa-kae",
"Kannadoid": "dra-kan",
"Kanum": "paa-kan",
"Kapau-Menya": "ngf-kme",
"Karaboro": "alv-krb",
"Karen": "kar",
"Karluk": "trk-kar",
"Karnic": "aus-kar",
"Kartvelian": "ccs",
"Kashmiric": "inc-kas",
"Katloid": "nic-ktl",
"Katuic": "mkh-kat",
"Katukinan": "sai-ktk",
"Kaukombar": "ngf-kau",
"Kaure-Kosare": "paa-kko",
"Kauru": "nic-kau",
"Kavango": "bnt-kav",
"Kavango-Southwest Bantu": "bnt-ksb",
"Kayagaric": "paa-kay",
"Kazhuoish": "tbq-kzh",
"Kele": "bnt-kel",
"Kele-Tsogo": "bnt-kts",
"Keram": "paa-ker",
"Keresan": "nai-ker",
"Ketic": "qfa-yke",
"Kewa-Huli": "ngf-khu",
"Kham": "sit-kha",
"Khanty": "kca",
"Khasian": "aav-khs",
"Khmeric": "mkh-kmr",
"Khmuic": "mkh-khm",
"Kho-Bwa": "sit-khb",
"Khoe": "khi-kho",
"Khoe-Kwadi": "khi-kkw",
"Khoekhoe": "khi-khk",
"Kikuyu-Kamba": "bnt-kka",
"Kilombero": "bnt-kil",
"Kim": "alv-kim",
"Kimbundu": "bnt-kmb",
"Kinnauric": "sit-kin",
"Kiowa-Tanoan": "nai-kta",
"Kipchak": "trk-kip",
"Kipchak-Bulgar": "trk-kbu",
"Kipchak-Cuman": "trk-kcu",
"Kipchak-Nogai": "trk-kno",
"Kiranti": "sit-kir",
"Kissi": "alv-kis",
"Kiwaian": "paa-kiw",
"Kodagu": "dra-kod",
"Kohistani": "inc-koh",
"Koiarian": "ngf-koi",
"Kokon": "ngf-kok",
"Kolami-Naiki": "dra-knk",
"Kolopom": "paa-kol",
"Koman": "ssa-kom",
"Kombio": "paa-kom",
"Kombio-Arapesh": "paa-koa",
"Komi": "kv",
"Komisenian": "ira-kms",
"Komo-Bira": "bnt-kbi",
"Komyandaret-Tsaukambo": "ngf-kts",
"Konda-Kui": "dra-kki",
"Kongo": "bnt-kng",
"Konyak-Chang": "sit-kch",
"Koraga": "dra-kor",
"Koreanic": "qfa-kor",
"Kosorong-Burum-Mindik": "ngf-kbm",
"Kottic": "qfa-yko",
"Kowan": "ngf-kow",
"Kpala": "nic-nkk",
"Kpwe": "bnt-kpw",
"Kra": "qfa-kra",
"Kra-Dai": "qfa-tak",
"Kru": "kro",
"Kube-Tobo": "ngf-kto",
"Kuikuroan": "sai-kui",
"Kuki-Chin": "tbq-kuk",
"Kulango": "alv-kul",
"Kuliak": "ssa-klk",
"Kumil": "ngf-kum",
"Kunar": "inc-kun",
"Kunimaipan": "paa-kun",
"Kurdish": "ku",
"Kurux-Malto": "dra-kml",
"Kwa": "alv-kwa",
"Kwalean": "paa-kwa",
"Kwerba proper": "paa-kwe",
"Kwomtari": "paa-kwo",
"Kx'a": "khi-kxa",
"Kyirong-Kagate": "sit-kyk",
"Kyrgyz-Kipchak": "trk-kkp",
"Kâte-Mape": "ngf-kma",
"Ladakhi-Balti": "sit-lab",
"Lagoon": "alv-lag",
"Lahoish": "tbq-lho",
"Lahuli-Spiti": "sit-las",
"Lakes Plain": "paa-lpl",
"Lalo": "tbq-lal",
"Lampungic": "poz-lgx",
"Land Dayak": "day",
"Latino-Faliscan": "itc-laf",
"Lawoish": "tbq-lwo",
"Lebonya": "bnt-leb",
"Lechitic": "zlw-lch",
"Left May": "paa-lma",
"Lega-Binja": "bnt-lgb",
"Leko": "alv-lek",
"Leko-Nimbari": "alv-lni",
"Lenape": "del",
"Lencan": "nai-len",
"Lendu": "csu-lnd",
"Lepki-Murkim": "paa-lmu",
"Lezghian": "cau-lzg",
"Limba": "alv-lim",
"Lipo-Lolopo": "tbq-llo",
"Lisoish": "tbq-lso",
"Logooli-Kuria": "bnt-lok",
"Lolo-Burmese": "tbq-lob",
"Loloda-Laba": "paa-lla",
"Loloish": "tbq-lol",
"Lotuko-Maa": "sdv-lma",
"Low Franconian": "gmw-frk",
"Low German": "gmw-lgm",
"Lower Cross River": "nic-lcr",
"Lower Ramu": "paa-lra",
"Lower Sepik": "paa-lse",
"Lowland Ok": "ngf-lok",
"Luba": "bnt-lub",
"Luban": "bnt-lbn",
"Luish": "sit-luu",
"Lunda": "bnt-lun",
"Luo": "sdv-luo",
"Luwic": "ine-luw",
"Mabuso": "ngf-mab",
"Macro-Bai": "sit-mba",
"Macro-Chibchan": "qfa-mch",
"Macro-Jê": "sai-mje",
"Madang": "ngf-mad",
"Madiya": "dra-mdy",
"Maiduan": "nai-mdu",
"Mailuan": "paa-mal",
"Maimai": "paa-mam",
"Mairasi": "paa-mai",
"Makaa": "bnt-mka",
"Makaa-Njem": "bnt-mnj",
"Makua": "bnt-mak",
"Malayalamoid": "dra-mal",
"Malayic": "poz-mly",
"Malayo-Chamic": "poz-mcm",
"Malayo-Polynesian": "poz",
"Malayo-Sumbawan": "poz-msa",
"Malto": "dra-mlo",
"Mambiloid": "nic-mmb",
"Mamfe": "nic-mam",
"Mandarinic": "zhx-man",
"Mande": "dmn",
"Mandi-Muniwara": "paa-mmu",
"Manding": "dmn-man",
"Manding-Jogo": "dmn-mjo",
"Manding-Mokole": "dmn-mmo",
"Manding-Vai": "dmn-mva",
"Manenguba": "bnt-mne",
"Mangbetu": "csu-maa",
"Mangbutu-Lese": "csu-mle",
"Mangic": "mkh-mng",
"Maninka": "dmn-mnk",
"Mano-Dan": "dmn-mda",
"Manobo": "mno",
"Mansi": "mns",
"Manubaran": "paa-man",
"Mao": "omv-mao",
"Mapoyan": "sai-map",
"Mari": "chm",
"Marienberg": "paa-mar",
"Marind-Boazi-Yaqay": "paa-mby",
"Marindic": "paa-mri",
"Maringic": "sit-mar",
"Masa": "cdc-mas",
"Masaba-Luhya": "bnt-msl",
"Mascoian": "sai-mas",
"Mataco-Guaicuru": "sai-mgc",
"Matacoan": "sai-mtc",
"Mayan": "myn",
"Maybratic": "paa-may",
"Mazanderani-Shahmirzadi": "ira-msh",
"Mazatecan": "omq-maz",
"Mba": "nic-mbc",
"Mbaham-Iha": "paa-mbi",
"Mbaka": "nic-nkm",
"Mbam": "nic-mba",
"Mbete": "bnt-mbt",
"Mbeya": "bnt-mby",
"Mbinga": "bnt-mbi",
"Mbole-Enya": "bnt-mbe",
"Mboshi": "bnt-mbo",
"Mboshi-Buja": "bnt-mbb",
"Mbugwe-Rangi": "bnt-mra",
"Mbum": "alv-mbm",
"Mbum-Day": "alv-mbd",
"Median": "xme",
"Medo-Parthian": "ira-mpr",
"Mek": "ngf-mek",
"Mel": "alv-mel",
"Mey-Sartang": "sit-khm",
"Mian-Suganga": "ngf-msu",
"Micronesian": "poz-mic",
"Middle Indo-Aryan": "inc-mid",
"Middle Iranian": "ira-mid",
"Midzu": "sit-mdz",
"Mienic": "hmx-mie",
"Mijikenda": "bnt-mij",
"Min": "zhx-min",
"Mindjim": "ngf-min",
"Mirndi": "aus-mir",
"Mississippi Valley Siouan": "sio-msv",
"Missouri River Siouan": "sio-mor",
"Misumalpan": "nai-min",
"Mixe-Zoquean": "nai-miz",
"Mixtec": "omq-mxt",
"Mixtecan": "omq-mix",
"Modern South Arabian": "sem-sar",
"Mokole": "dmn-mok",
"Mombum": "ngf-mom",
"Momo": "nic-mom",
"Mon-Khmer": "mkh",
"Mondzish": "sit-mnz",
"Mongo": "bnt-mon",
"Mongolic": "xgn",
"Monguor": "mjg",
"Monic": "mkh-mnc",
"Monumbo": "paa-mon",
"Mordvinic": "urj-mdv",
"Moru-Madi": "csu-mma",
"Moré": "nic-mre",
"Mountain Ok": "ngf-mok",
"Mruic": "sit-mru",
"Muji": "tbq-muj",
"Mumuye": "alv-mum",
"Mumuye-Yendang": "alv-mye",
"Muna-Buton": "poz-mun",
"Munda": "mun",
"Munji-Yidgha": "ira-mny",
"Muran": "sai-mur",
"Muria": "dra-mur",
"Muskogean": "nai-mus",
"Mwika": "bnt-mwi",
"Na-Dene": "xnd",
"Na-Togo": "alv-ntg",
"Nadahup": "sai-nad",
"Nahuan": "azc-nah",
"Naic": "sit-nax",
"Naish": "sit-nas",
"Nakh": "cau-nkh",
"Nalu": "alv-nal",
"Nambikwaran": "sai-nmk",
"Nambu": "paa-nam",
"Namla-Tofanma": "paa-nto",
"Nanaic": "tuw-nan",
"Nandi-Markweta": "sdv-nma",
"Nanga-Walo": "nic-nwa",
"Nasoid": "tbq-nas",
"Navarro-Aragonese": "roa-nar",
"Nawiki": "awd-nwk",
"Ndeiram": "ngf-nde",
"Ndu": "paa-ndu",
"Ndzem-Bomwali": "bnt-ndb",
"Nenets": "yrk",
"New Caledonian": "poz-cln",
"Newaric": "sit-new",
"Ngalik-Nduga": "ngf-ngn",
"Ngayarda": "aus-nga",
"Ngbaka": "nic-ngk",
"Ngbandi": "nic-ngd",
"Ngemba": "nic-nge",
"Ngkolmpu": "paa-ngk",
"Ngondi-Ngiri": "bnt-ngn",
"Nguni": "bnt-ngu",
"Nicobarese": "aav-nic",
"Niger-Congo": "nic",
"Nilo-Saharan": "ssa",
"Nilotic": "sdv-nil",
"Nimboran": "paa-nim",
"Ninzic": "nic-nin",
"Nisoish": "tbq-nso",
"Nisu": "tbq-nis",
"Nkambe": "nic-nka",
"North Athabaskan": "ath-nor",
"North Bahnaric": "mkh-nbn",
"North Binanderean": "ngf-nbi",
"North Bornean": "poz-bnn",
"North Bougainville": "paa-nbo",
"North Dravidian": "dra-nor",
"North Germanic": "gmq",
"North Halmahera": "paa-nha",
"North Iroquoian": "iro-nor",
"North Ometo": "omv-nom",
"North Plateau Dogon": "nic-npd",
"North Sarawakan": "poz-swa",
"North Sea Germanic": "gmw-nsg",
"North Siberian Turkic": "trk-nsb",
"North Sogeram": "ngf-nso",
"North Vanuatu": "poz-vnn",
"North-Central Edoid": "alv-nce",
"North-South Upper Cross River": "nic-ucn",
"Northeast Bantu": "bnt-bne",
"Northeast Caucasian": "cau-nec",
"Northeast Coast Bantu": "bnt-ncb",
"Northeastern Iranian": "ira-nei",
"Northeastern Neo-Aramaic": "sem-nna",
"Northern Adelbert": "ngf-nad",
"Northern Bai": "sit-nba",
"Northern Bantoid": "nic-bdn",
"Northern Eastern Sudanic": "sdv-nes",
"Northern Great Andamanese": "qfa-adn",
"Northern Gurunsi": "nic-gnn",
"Northern Indo-Aryan": "inc-nor",
"Northern Jê": "sai-nje",
"Northern Loloish": "tbq-nlo",
"Northern Luo": "sdv-lon",
"Northern Naga": "sit-kon",
"Northern North Halmahera": "paa-nnh",
"Northern Nuristani": "nur-nor",
"Northern Ring": "nic-rnn",
"Northern Ryukyuan": "jpx-nry",
"Northern Tai": "tai-nor",
"Northern Tivoid": "nic-tvn",
"Northwest Caucasian": "cau-nwc",
"Northwest Hanseman": "ngf-nwh",
"Northwest Kainji": "nic-knn",
"Northwest Semitic": "sem-nwe",
"Northwest Sumatran": "poz-nws",
"Northwestern Edoid": "alv-nwd",
"Northwestern Indo-Aryan": "inc-nwe",
"Northwestern Iranian": "ira-nwi",
"Northwestern Mande": "dmn-mnw",
"Nubian": "nub",
"Nuclear Ndu": "paa-nnd",
"Nuclear Polynesian": "poz-pnp",
"Numic": "azc-num",
"Numugen": "ngf-num",
"Nun": "nic-nun",
"Nungish": "sit-nng",
"Nupe-Gbagyi": "alv-ngb",
"Nupoid": "alv-nup",
"Nuristani": "iir-nur",
"Nuru": "ngf-nur",
"Nusoish": "tbq-nus",
"Nwa-Beng": "dmn-nbe",
"Nyali": "bnt-nya",
"Nyanga-Buyi": "bnt-nyb",
"Nyasa": "bnt-nys",
"Nyima": "sdv-nyi",
"Nyoro-Ganda": "bnt-nyg",
"Nyulnyulan": "aus-nyu",
"Nyun": "alv-nyn",
"Nzebi": "bnt-nze",
"Occitano-Romance": "roa-ocr",
"Oceanic": "poz-oce",
"Oghur": "trk-ogr",
"Oghuz": "trk-ogz",
"Ogoni": "nic-ogo",
"Ohio Valley Siouan": "sio-ohv",
"Ok": "ngf-okk",
"Old Indo-Aryan": "inc-old",
"Old Iranian": "ira-old",
"Old South Arabian": "sem-osa",
"Ometo": "omv-ome",
"Omosan": "ngf-omo",
"Omotic": "omv",
"Ongan": "qfa-ong",
"Ormuri-Parachi": "ira-orp",
"Orokaivic": "ngf-oro",
"Osco-Umbrian": "itc-sbl",
"Oti-Volta": "nic-ovo",
"Oto-Manguean": "omq",
"Oto-Pamean": "omq-otp",
"Otomacoan": "sai-otm",
"Otomi": "oto-otm",
"Otomian": "oto",
"Ottilien": "paa-ott",
"Outer Engan": "ngf-oen",
"Ovambo": "bnt-ova",
"Oïl": "roa-oil",
"Pacific Coast Athabaskan": "ath-pco",
"Pahari": "inc-pah",
"Pahoturi River": "paa-pah",
"Pakanic": "mkh-pkn",
"Pakawan": "nai-pak",
"Palaihnihan": "nai-pal",
"Palaungic": "mkh-pal",
"Palei": "paa-pal",
"Pama-Nyungan": "aus-pam",
"Paman": "aus-pmn",
"Paniai Lakes": "ngf-pan",
"Pano-Tacanan": "sai-pat",
"Panoan": "sai-pan",
"Papel": "alv-pap",
"Papuan": "paa",
"Para-Mongolic": "qfa-xgx",
"Pare": "bnt-par",
"Parji-Gadaba": "dra-pgd",
"Parukotoan": "sai-prk",
"Pashayi": "inc-pas",
"Pathan": "ira-pat",
"Pearic": "mkh-pea",
"Peba-Yaguan": "sai-pey",
"Peka": "ngf-pek",
"Pekodian": "sai-pek",
"Pemongan": "sai-pem",
"Pende": "bnt-pen",
"Permic": "urj-prm",
"Philippine": "phi",
"Phla-Pherá": "alv-pph",
"Phowa": "tbq-phw",
"Piawi": "paa-pia",
"Piman": "azc-pim",
"Pinghua": "zhx-pin",
"Piore River": "paa-pio",
"Plains Dogon": "nic-pld",
"Plateau": "nic-plt",
"Plateau Penutian": "nai-plp",
"Platoid": "nic-pla",
"Pnar-Khasi-Lyngngam": "aav-pkl",
"Polynesian": "poz-pol",
"Pomeranian": "zlw-pom",
"Pomo-Bomwali": "bnt-pob",
"Pomoan": "nai-pom",
"Pomoikan": "ngf-pom",
"Popolocan": "omq-pop",
"Porapora": "paa-por",
"Potou-Tano": "alv-ptn",
"Pumpokolic": "qfa-ypm",
"Punjabic": "inc-pan",
"Qiangic": "sit-qia",
"Quechuan": "qwe",
"Rai Coast": "ngf-rai",
"Rajasthani": "raj",
"Ramu": "paa-ram",
"Rasawa-Saponi": "paa-rsa",
"Rashad": "nic-ras",
"Rgyalrongic": "sit-rgy",
"Rhaeto-Romance": "roa-rhe",
"Ring": "nic-rng",
"Riverine Phula": "tbq-rph",
"Romance": "roa",
"Romani": "inc-rom",
"Ruboni": "paa-rub",
"Rufiji-Ruvuma": "bnt-rur",
"Rukwa": "bnt-ruk",
"Rungwe": "bnt-run",
"Ruvu": "bnt-ruv",
"Ruvuma": "bnt-rvm",
"Ryukyuan": "jpx-ryu",
"Sabahan": "poz-san",
"Sabaki": "bnt-sab",
"Sabakor": "ngf-sab",
"Sabi": "bnt-sbi",
"Sac-Fox-Kickapoo": "alg-sfk",
"Sahaptian": "nai-shp",
"Saharan": "ssa-sah",
"Sahu": "paa-sah",
"Saka": "xsc-sak",
"Saka-Wakhi": "xsc-skw",
"Sal": "tbq-bkj",
"Salish": "sal",
"Saluan-Banggai": "poz-slb",
"Sama-Bajaw": "poz-sbj",
"Samarokena-Airoran": "paa-saa",
"Sami": "smi",
"Samo": "dmn-sam",
"Samogo": "dmn-smg",
"Samoyedic": "syd",
"Samur": "cau-sam",
"Sanglechi-Ishkashimi": "ira-sgi",
"Sankwep": "ngf-san",
"Sapa-Southwestern Tai": "tai-sap",
"Sara": "csu-sar",
"Sarmatian": "xsc-sar",
"Sau-Angal-Kewa": "ngf-sak",
"Savanna": "alv-sav",
"Sawabantu": "bnt-saw",
"Scythian": "xsc",
"Selkup": "sel",
"Semitic": "sem",
"Sena": "bnt-sna",
"Senagi": "paa-sng",
"Senari": "alv-snr",
"Senegambian": "alv-sng",
"Sentani": "paa-sen",
"Senufo": "alv-snf",
"Sepik": "paa-sep",
"Serbi-Mongolic": "qfa-xgs",
"Sere": "nic-ser",
"Serra Hills": "paa-shi",
"Seuta": "bnt-seu",
"Shastan": "nai-shs",
"Shi-Havu": "bnt-shh",
"Shinaic": "inc-shn",
"Shirongolic": "xgn-shr",
"Shiroro": "nic-shi",
"Shona": "bnt-sho",
"Shughni-Roshani": "ira-shr",
"Shughni-Yazghulami": "ira-shy",
"Shughni-Yazghulami-Munji": "ira-sym",
"Siberian Turkic": "trk-sib",
"Siloid": "tbq-sil",
"Simbu": "ngf-sim",
"Sindhic": "inc-snd",
"Sinitic": "zhx",
"Sino-Bai": "sit-sba",
"Sino-Tibetan": "sit",
"Siouan": "sio",
"Siouan-Catawban": "nai-sca",
"Sira": "bnt-sir",
"Sisaala": "nic-sis",
"Sko": "paa-sko",
"Slavey": "den",
"Slavic": "sla",
"Sogdic": "ira-sgc",
"Sogdo-Bactrian": "ira-sbc",
"Sogeram": "ngf-sog",
"Soko-Kele": "bnt-ske",
"Somaloid": "cus-som",
"Songhay": "son",
"Soninke-Bobo": "dmn-snb",
"Sopac": "ngf-sop",
"Sorbian": "wen",
"Sotho-Tswana": "bnt-sts",
"South Bird's Head": "ngf-sbh",
"South Bougainville": "paa-sbo",
"South Cushitic": "cus-sou",
"South Dravidian": "dra-sou",
"South Dravidian I": "dra-sdo",
"South Dravidian II": "dra-sdt",
"South Plateau": "nic-pls",
"South Siberian Turkic": "trk-ssb",
"South Slavic": "zls",
"South Sulawesi": "poz-ssw",
"South Vanuatu": "poz-vns",
"Southeast Solomonic": "poz-sls",
"Southeastern Aramaic": "sem-ase",
"Southeastern Iranian": "ira-sei",
"Southeastern Loloish": "tbq-sel",
"Southeastern Mande": "dmn-mse",
"Southern Adelbert": "ngf-sad",
"Southern Bantoid": "nic-bds",
"Southern Bantu": "bnt-bso",
"Southern Gbaya": "gba-sou",
"Southern Great Andamanese": "qfa-ads",
"Southern Indo-Aryan": "inc-sou",
"Southern Jê": "sai-sje",
"Southern Loloish": "tbq-slo",
"Southern Luo": "sdv-los",
"Southern Min": "zhx-nan",
"Southern Mongolic": "xgn-sou",
"Southern Nilotic": "sdv-nis",
"Southern Nuristani": "nur-sou",
"Southern Oceanic": "poz-ocs",
"Southern Romance": "roa-sou",
"Southern Ryukyuan": "jpx-sry",
"Southern Samur": "cau-ssm",
"Southwest Bantu": "bnt-swb",
"Southwest Grassfields": "nic-grs",
"Southwest Pama-Nyungan": "aus-psw",
"Southwestern Brythonic": "cel-brs",
"Southwestern Edoid": "alv-swd",
"Southwestern Iranian": "ira-swi",
"Southwestern Mande": "dmn-msw",
"Southwestern Tai": "tai-swe",
"St. Matthias": "poz-stm",
"Supyire-Mamara": "alv-sma",
"Susu-Yalunka": "dmn-sya",
"Swahili": "bnt-swh",
"Ta-Arawak": "awd-taa",
"Tacanan": "sai-tac",
"Tagwana-Djimini": "alv-tdj",
"Tai": "tai",
"Taikat-Awyi": "paa-taa",
"Tainae-Akoye": "ngf-taa",
"Tairora": "ngf-tai",
"Takama": "bnt-tkm",
"Takic": "azc-tak",
"Talodi": "alv-tal",
"Talodi-Heiban": "alv-the",
"Taloid": "tbq-tal",
"Taman": "sdv-tmn",
"Tamangic": "sit-tam",
"Tamil-Kannada": "dra-tkn",
"Tamil-Kodagu": "dra-tkd",
"Tamil-Malayalam": "dra-tml",
"Tamiloid": "dra-tam",
"Tamolan": "paa-tam",
"Tangkhul-Maring": "sit-tma",
"Tangkhulic": "sit-tng",
"Tangkic": "aus-tnk",
"Tangko-Nakai": "ngf-tna",
"Tangsa-Nocte": "sit-tno",
"Tani": "sit-tan",
"Taracahitic": "azc-trc",
"Taranoan": "sai-tar",
"Tarokoid": "nic-tar",
"Tatic": "xme-ttc",
"Teberan": "paa-teb",
"Teke": "bnt-tek",
"Teke-Mbede": "bnt-tmb",
"Teluguic": "dra-tel",
"Temotu": "poz-tem",
"Tenda": "alv-ten",
"Tequistlatecan": "nai-tqn",
"Ternate-Tidore": "paa-tti",
"Teso-Turkana": "sdv-ttu",
"Tetela": "bnt-tet",
"Tharu": "inc-tha",
"Tibetic": "sit-tib",
"Tibeto-Burman": "tbq",
"Tiboran": "ngf-tib",
"Ticuna-Yuri": "sai-tyu",
"Timor-Alor-Pantar": "paa-tap",
"Timoric": "poz-tim",
"Tirio": "paa-tir",
"Tivoid": "nic-tiv",
"Tocharian": "ine-toc",
"Toda-Kota": "dra-tkt",
"Tomini-Tolitoli": "poz-tot",
"Tonda": "paa-ton",
"Tongic": "poz-ton",
"Tor": "paa-tor",
"Tor-Orya": "paa-too",
"Torricelli": "paa-trr",
"Totonacan": "nai-ttn",
"Totozoquean": "nai-tot",
"Trans-New Guinea": "ngf",
"Triqui": "omq-tri",
"Tsezian": "cau-tsz",
"Tshangla": "sit-tsk",
"Tsimshianic": "nai-tsi",
"Tsogo": "bnt-tso",
"Tswa-Ronga": "bnt-tsr",
"Tucanoan": "sai-tuc",
"Tujia": "sit-tja",
"Tulu-Koraga": "dra-tlk",
"Tungusic": "tuw",
"Tupi-Guarani": "tup-gua",
"Tupian": "tup",
"Turama-Kikori": "paa-tki",
"Turkic": "trk",
"Tuu": "khi-tuu",
"Tyrsenian": "qfa-tyn",
"Tày": "tai-tay",
"Ubangian": "nic-ubg",
"Udegheic": "tuw-udg",
"Ugric": "urj-ugr",
"Upper Cross River": "nic-ucr",
"Upriver Phula": "tbq-urp",
"Uralic": "urj",
"Uru-Chipaya": "sai-ucp",
"Uruwa": "ngf-uru",
"Utian": "nai-utn",
"Uto-Aztecan": "azc",
"Utu-Silopi": "ngf-usi",
"Vai-Kono": "dmn-vak",
"Vainakh": "cau-vay",
"Vale": "csu-val",
"Vasconic": "euq",
"Venezuelan Cariban": "sai-ven",
"Vietic": "mkh-vie",
"Volta-Congo": "nic-vco",
"Volta-Niger": "alv-von",
"Wahgi": "ngf-wah",
"Waja-Kam": "alv-wjk",
"Wakashan": "wak",
"Walio": "paa-wal",
"Wantoat-Awara": "ngf-waa",
"Wantoatic": "ngf-wan",
"Wapei": "paa-wap",
"Wapei-Palei": "paa-wpa",
"Wara-Natyoro": "alv-wan",
"Waris": "paa-war",
"Warup": "ngf-war",
"Wee": "kro-wee",
"Wenma-Southwestern Tai": "tai-wen",
"West Baltic": "bat-wes",
"West Barito": "poz-brw",
"West Bird's Head": "paa-wbh",
"West Chadic": "cdc-wst",
"West Dogon": "nic-dgw",
"West Germanic": "gmw",
"West Himalayish": "sit-whm",
"West Inland Gulf": "paa-wig",
"West Keram": "paa-wke",
"West Lakes Plain": "paa-wlp",
"West Manding": "dmn-wmn",
"West Mbam": "nic-mbw",
"West Ok": "ngf-wok",
"West Scandinavian": "gmq-wes",
"West Semitic": "sem-wes",
"West Slavic": "zlw",
"West Sogeram": "ngf-wso",
"West Tsezian": "cau-wts",
"West rGyalrongic": "sit-wgy",
"Western Aramaic": "sem-arw",
"Western Brythonic": "cel-brw",
"Western Eleman": "paa-wel",
"Western Gbaya": "gba-wes",
"Western Gurunsi": "nic-gnw",
"Western Hindi": "inc-hiw",
"Western Indo-Aryan": "inc-wes",
"Western Iranian": "ira-wes",
"Western Kho-Bwa": "sit-khw",
"Western Kiranti": "sit-kiw",
"Western Kru": "kro-wkr",
"Western Mande": "dmn-mdw",
"Western Ngbaka": "nic-nkw",
"Western Nilotic": "sdv-niw",
"Western Oceanic": "poz-ocw",
"Western Oti-Volta": "nic-wov",
"Western Pahari": "him",
"Western Pauwasi": "paa-wpw",
"Western Ring": "nic-rnw",
"Western Romance": "roa-wes",
"Western Samur": "cau-wsm",
"Wichí": "sai-wic",
"Wintuan": "nai-wtq",
"Witotoan": "sai-wit",
"Wojokesic": "ngf-woj",
"Worrorran": "aus-wor",
"Wotu-Wolio": "poz-wot",
"Wára-Kómnzo": "paa-wko",
"Xincan": "nai-xin",
"Yaganon": "ngf-yag",
"Yaka": "bnt-yak",
"Yali": "ngf-yal",
"Yam": "paa-yam",
"Yambasa": "nic-ymb",
"Yangmanic": "aus-yng",
"Yanomami": "sai-ynm",
"Yaqayic": "paa-yaq",
"Yareban": "ngf-yar",
"Yasa-Kombe": "bnt-yko",
"Yau-Nungon": "ngf-ynu",
"Yawa-Saweru": "paa-ysa",
"Yekhee": "alv-yek",
"Yeniseian": "qfa-yen",
"Yidinyic": "aus-yid",
"Yok-Utian": "nai-you",
"Yokuts": "yok",
"Yolngu": "aus-yol",
"Yom-Nawdm": "nic-yon",
"Yoruba": "alv-yor",
"Yoruboid": "alv-yrd",
"Yuat": "paa-yua",
"Yue": "zhx-yue",
"Yuin-Kuric": "aus-yuk",
"Yukaghir": "qfa-yuk",
"Yukian": "nai-ykn",
"Yukpan": "sai-yuk",
"Yukubenic": "nic-ykb",
"Yuman-Cochimí": "nai-yuc",
"Yungur": "alv-yun",
"Yupik": "ypk",
"Yupna": "ngf-yup",
"Zamba-Binza": "bnt-zbi",
"Zamucoan": "sai-zam",
"Zan": "ccs-zan",
"Zande": "znd",
"Zaparoan": "sai-zap",
"Zapotec": "omq-zpc",
"Zapotecan": "omq-zap",
"Zaza-Gorani": "ira-zgr",
"Zeme": "sit-zem",
"constructed": "art",
"contact": "qfa-cnt",
"creole": "qfa-cre",
"creole or pidgin": "crp",
"disputed affiliation": "qfa-dis",
"isolate": "qfa-iso",
"mixed": "qfa-mix",
"not a family": "qfa-not",
"pidgin": "qfa-pid",
"sign": "sgn",
"substrate": "qfa-sub",
"unclassifiable": "qfa-unc"
}
i4gliuy8lnfr189t2es1dk8629kf54t
233731
233730
2026-05-09T04:57:45Z
Lee
19
[[:en:Module:families/canonical_names.json]] වෙතින් එක් සංශෝධනයක්
233730
json
application/json
{
"Abenaki-Penobscot": "alg-abp",
"Abkhaz-Abaza": "cau-abz",
"Adamawa": "alv-ada",
"Admiralty Islands": "poz-aay",
"Afroasiatic": "afa",
"Aian": "paa-aia",
"Ainuic": "qfa-ain",
"Aisian": "ngf-ais",
"Aizi": "kro-aiz",
"Alacalufan": "aqa",
"Albanian": "sqj",
"Algic": "aql",
"Algonquian": "alg",
"Almora": "sit-alm",
"Alor-Pantar": "paa-alp",
"Alumic": "nic-alu",
"Amto-Musan": "paa-amu",
"Anatolian": "ine-ana",
"Andian": "cau-and",
"Angal-Kewa": "ngf-ank",
"Angami-Pochuri": "tbq-anp",
"Angan": "ngf-ang",
"Anglic": "gmw-ang",
"Anglo-Frisian": "gmw-afr",
"Anim": "paa-ani",
"Ankave-Tainae-Akoye": "ngf-ata",
"Apachean": "apa",
"Arabic": "sem-arb",
"Arafundi": "paa-arf",
"Aramaic": "sem-ara",
"Arandic": "aus-rnd",
"Arapahoan": "alg-ara",
"Arapesh": "paa-ara",
"Arauan": "auf",
"Araucanian": "sai-ara",
"Arawak": "awd",
"Arinic": "qfa-yrn",
"Armenian": "hyx",
"Arnhem": "aus-arn",
"Aroid": "omv-aro",
"Aslian": "mkh-asl",
"Asmat": "ngf-asm",
"Asmat-Kamoro": "ngf-ask",
"Asturleonese": "roa-asl",
"Ataitan": "paa-ata",
"Atayalic": "map-ata",
"Athabaskan": "ath",
"Atlantic-Congo": "alv",
"Austroasiatic": "aav",
"Austronesian": "map",
"Avaro-Andian": "cau-ava",
"Awyu": "ngf-awy",
"Awyu-Dumut": "ngf-awd",
"Axioid": "tbq-axi",
"Ayere-Ahan": "alv-aah",
"Aymaran": "sai-aym",
"Bafia": "bnt-baf",
"Bafo-Bonkeng": "bnt-bbo",
"Baga": "alv-bag",
"Bagirmi": "csu-bgr",
"Bahnaric": "mkh-ban",
"Bai": "sit-bai",
"Baining": "paa-bai",
"Bak": "alv-bak",
"Baka": "nic-nkb",
"Bali-Sasak-Sumbawa": "poz-bss",
"Baltic": "bat",
"Balto-Slavic": "ine-bsl",
"Bambukic": "alv-bam",
"Bamileke": "bai",
"Banda": "bad",
"Bangi-Moi": "bnt-bmo",
"Bangi-Ntomba": "bnt-bnm",
"Bangi-Tetela": "bnt-bte",
"Bantoid": "nic-bod",
"Bantoid-Cross": "nic-bcr",
"Bantu": "bnt",
"Banyum": "alv-bny",
"Barbacoan": "sai-bar",
"Bari": "sdv-bri",
"Baruya-Simbari": "ngf-bsi",
"Basa": "nic-bas",
"Basaa": "bnt-bsa",
"Batak": "btk",
"Bati-Angba": "bnt-bta",
"Bayono-Awbono": "paa-baa",
"Be": "qfa-onb",
"Be-Jizhao": "qfa-bej",
"Be-Tai": "qfa-bet",
"Beboid": "nic-beb",
"Becking-Dawi": "ngf-bda",
"Bekwilic": "bnt-bek",
"Bena-Kinga": "bnt-bki",
"Bendi": "nic-ben",
"Bengali-Assamese": "inc-bas",
"Benue-Congo": "nic-bco",
"Berber": "ber",
"Beromic": "nic-beo",
"Betaf-Vitou": "paa-bvi",
"Beti": "bnt-btb",
"Bewani": "paa-bew",
"Bhil": "inc-bhi",
"Bi-Ka": "tbq-bka",
"Bihari": "inc-bih",
"Bikwin-Jen": "alv-bwj",
"Binanderean": "ngf-bin",
"Birri-Kresh": "csu-bkr",
"Bisa-Busa": "dmn-bbu",
"Bisoid": "tbq-bis",
"Boan": "bnt-boa",
"Boane": "ngf-boa",
"Boazi": "paa-boa",
"Bodish": "sit-bdi",
"Bodo-Garo": "tbq-bdg",
"Boma-Dzing": "bnt-bdz",
"Bongo-Bagirmi": "csu-bba",
"Bongo-Baka": "csu-bbk",
"Boran": "sai-bor",
"Border": "paa-bor",
"Bosavi": "ngf-bos",
"Bosngun-Awar": "paa-baw",
"Botatwe": "bnt-bot",
"Brythonic": "cel-bry",
"Bua": "alv-bua",
"Buja-Ngombe": "bnt-bun",
"Bulaka River": "paa-bul",
"Buli-Koma": "nic-buk",
"Bungku-Tolaki": "poz-btk",
"Bunuban": "aus-bub",
"Burmish": "tbq-brm",
"Burmo-Qiangic": "tbq-buq",
"Bushoong": "bnt-bsh",
"Buyang": "qfa-buy",
"Bwa": "nic-bwa",
"Bété": "kro-bet",
"Caddoan": "cdd",
"Cahuapanan": "sai-cah",
"Cai-Long": "sit-cln",
"Canaanite": "sem-can",
"Cangin": "alv-cng",
"Cariban": "sai-car",
"Caspian": "ira-csp",
"Castilian": "roa-cas",
"Catacaoan": "sai-ctc",
"Catawban": "nai-cat",
"Celebic": "poz-clb",
"Celtic": "cel",
"Central Banda": "bad-cnt",
"Central Chadic": "cdc-cbm",
"Central Cushitic": "cus-cen",
"Central Dani": "ngf-cda",
"Central Delta": "nic-cde",
"Central Dravidian": "dra-cen",
"Central Great Andamanese": "qfa-adc",
"Central Indo-Aryan": "inc-cen",
"Central Iranian": "ira-cen",
"Central Jê": "sai-cje",
"Central Kiranti": "sit-kic",
"Central Lakes Plain": "paa-clp",
"Central Maluku": "poz-cma",
"Central Mande": "dmn-mdc",
"Central Mongolic": "xgn-cen",
"Central Naga": "sit-aao",
"Central Neo-Aramaic": "sem-cna",
"Central New South Wales": "aus-cww",
"Central Pacific": "poz-pcc",
"Central Plateau": "nic-plc",
"Central Ring": "nic-rnc",
"Central Semitic": "sem-cen",
"Central Sudanic": "csu",
"Central Tai": "tai-cen",
"Central Tano": "alv-ctn",
"Central Teke": "bnt-tkc",
"Central Tivoid": "nic-tvc",
"Central Vanuatu": "poz-vnc",
"Central-Eastern Malayo-Polynesian": "poz-cet",
"Central-Eastern Oceanic": "poz-occ",
"Cerrado": "sai-cer",
"Chadic": "cdc",
"Chaga": "bnt-chg",
"Chaga-Taita": "bnt-cht",
"Chamic": "cmc",
"Chapacuran": "sai-cpc",
"Charruan": "sai-crn",
"Chatino": "omq-cha",
"Chibchan": "cba",
"Chimakuan": "chi",
"Chimbu-Wahgi": "ngf-chw",
"Chinantecan": "omq-chi",
"Chinookan": "nai-ckn",
"Chitrali": "inc-chi",
"Chocoan": "sai-chc",
"Chokwe-Luchazi": "bnt-clu",
"Chonan": "sai-cho",
"Chongzuo Tai": "tai-cho",
"Chug-Lish": "sit-khc",
"Chukotkan": "qfa-ckn",
"Chukotko-Kamchatkan": "qfa-cka",
"Chumashan": "nai-chu",
"Circassian": "cau-cir",
"Coastal Min": "zhx-com",
"Common Turkic": "trk-cmn",
"Comorian": "bnt-com",
"Coosan": "nai-coo",
"Cross River": "nic-cri",
"Cuicatec": "omq-cui",
"Cupan": "azc-cup",
"Cushitic": "cus",
"Dagan": "ngf-dag",
"Dagbani": "nic-dag",
"Daju": "sdv-daj",
"Dakoid": "nic-dak",
"Dakotan": "sio-dkt",
"Dallman": "ngf-dal",
"Dalmatian Romance": "roa-dal",
"Daly": "aus-dal",
"Dangari": "inc-dng",
"Dani": "ngf-dan",
"Dardic": "inc-dar",
"Dargwa": "cau-drg",
"Delta Edoid": "alv-dlt",
"Dene-Yeniseian": "qfa-dny",
"Dhegihan": "sio-dhe",
"Dhimalish": "sit-dhi",
"Dida": "kro-did",
"Dinka-Nuer": "sdv-dnu",
"Dizoid": "omv-diz",
"Dogon": "qfa-dgn",
"Doso-Turumsa": "paa-dtu",
"Downriver Phula": "tbq-drp",
"Dravidian": "dra",
"Dumut": "ngf-dum",
"Durango Nahuatl": "azc-dur",
"Duru": "alv-dur",
"Dyirbalic": "aus-dyb",
"East Baltic": "bat-eas",
"East Barito": "poz-bre",
"East Bird's Head": "paa-ebh",
"East Bodish": "sit-ebo",
"East Chadic": "cdc-est",
"East Cushitic": "cus-eas",
"East Geelvink Bay": "paa-egb",
"East Germanic": "gme",
"East Kainji": "nic-kne",
"East Keram": "paa-eke",
"East Kutubuan": "ngf-eku",
"East Lakes Plain": "paa-elp",
"East Manding": "dmn-emn",
"East Ometo": "omv-eom",
"East Plateau": "nic-ple",
"East Scandinavian": "gmq-eas",
"East Semitic": "sem-eas",
"East Slavic": "zle",
"East Sogeram": "ngf-eso",
"East Strickland": "ngf-est",
"East Timor": "paa-eti",
"East Tsezian": "cau-ets",
"East rGyalrongic": "sit-egy",
"East-West Upper Cross River": "nic-uce",
"Eastern Algonquian": "alg-eas",
"Eastern Aramaic": "sem-are",
"Eastern Beboid": "nic-bbe",
"Eastern Central Sudanic": "csu-ecs",
"Eastern Dardic": "inc-dre",
"Eastern Eleman": "paa-eel",
"Eastern Gbaya": "gba-eas",
"Eastern Grassfields": "nic-gre",
"Eastern Gurunsi": "nic-gne",
"Eastern Hindi": "inc-hie",
"Eastern Huon": "ngf-ehu",
"Eastern Indo-Aryan": "inc-eas",
"Eastern Jebel": "sdv-eje",
"Eastern Kiranti": "sit-kie",
"Eastern Kru": "kro-ekr",
"Eastern Malayo-Polynesian": "pqe",
"Eastern Mande": "dmn-mde",
"Eastern Ngbaka": "nic-nke",
"Eastern Nilotic": "sdv-nie",
"Eastern Oti-Volta": "nic-eov",
"Eastern Pauwasi": "paa-epw",
"Eastern Polynesian": "poz-pep",
"Eastern Romance": "roa-eas",
"Eastern Samur": "cau-esm",
"Eastern Sudanic": "sdv",
"Eastern Trans-Fly": "paa-etf",
"Ede": "alv-ede",
"Edekiri": "alv-edk",
"Edo-Esan-Ora": "alv-eeo",
"Edoid": "alv-edo",
"Egyptian": "egx",
"Ekoid": "nic-eko",
"Eleman": "paa-ele",
"Emilian-Romagnol": "roa-emr",
"Enets": "syd-ene",
"Engan": "ngf-eng",
"Engic": "ngf-enc",
"Erap": "ngf-era",
"Ersuic": "sit-ers",
"Escarpment Dogon": "nic-dge",
"Eskimo": "esx-esk",
"Eskimo-Aleut": "esx",
"Ethiopian Semitic": "sem-eth",
"Evapia": "ngf-eva",
"Ewenic": "tuw-ewe",
"Fali": "alv-fli",
"Far West Lakes Plain": "paa-flp",
"Fas": "paa-fas",
"Finisterre": "ngf-fin",
"Finisterre-Huon": "ngf-fhu",
"Finnic": "urj-fin",
"Fore-Gimi": "ngf-fgi",
"French Sign Languages": "sgn-fsl",
"Frisian": "gmw-fri",
"Fula-Wolof": "alv-fwo",
"Fur": "ssa-fur",
"Furu": "nic-fru",
"Ga-Dangme": "alv-gda",
"Gaena-Korafe": "ngf-gko",
"Gahuku": "ngf-gah",
"Galela-Tobelo": "paa-gto",
"Galician-Portuguese": "roa-gap",
"Gallo-Italic": "roa-git",
"Gallo-Rhaetian": "roa-grh",
"Gallo-Romance": "roa-gar",
"Garawan": "aus-gar",
"Gauwa": "ngf-gau",
"Gbanziri": "nic-nkg",
"Gbaya": "gba",
"Gbe": "alv-gbe",
"Gelao": "gio",
"Georgian-Zan": "ccs-gzn",
"German Sign Languages": "sgn-gsl",
"Germanic": "gem",
"Ghana-Togo Mountain": "alv-gtm",
"Gogodala-Suki": "ngf-gsu",
"Goidelic": "cel-gae",
"Gondi": "dra-gon",
"Gondi-Kui": "dra-gki",
"Gonga": "omv-gon",
"Goroka": "ngf-gor",
"Grand Valley Dani": "ngf-gvd",
"Grassfields": "nic-grf",
"Great Andamanese": "qfa-adm",
"Great Lakes Bantu": "bnt-glb",
"Greater Awyu": "ngf-gaw",
"Greater Binanderean": "ngf-gbi",
"Greater Kwerba": "paa-gkw",
"Greater Magaric": "sit-gma",
"Greater Siangic": "sit-gsi",
"Grebo": "kro-grb",
"Grebo proper": "grb",
"Guahiban": "sai-guh",
"Guaicuruan": "sai-guc",
"Guang": "alv-gng",
"Guarani": "gn",
"Guianan": "sai-gui",
"Gum": "ngf-gum",
"Gunwinyguan": "aus-gun",
"Gur": "nic-gur",
"Gurma": "nic-grm",
"Gurunsi": "nic-gns",
"Gusap-Mot": "ngf-gmo",
"Hagen": "ngf-hag",
"Halbic": "inc-hal",
"Halmahera-Cenderawasih": "poz-hce",
"Hanoid": "tbq-han",
"Hanseman": "ngf-han",
"Harákmbut": "sai-har",
"Harákmbut-Katukinan": "sai-hkt",
"Haya-Jita": "bnt-haj",
"Heiban": "alv-hei",
"Hellenic": "grk",
"Heyo-Yahang": "paa-hya",
"High German": "gmw-hgm",
"Highland East Cushitic": "cus-hec",
"Highland Phula": "tbq-hph",
"Hill Nubian": "nub-hil",
"Hindustani": "inc-hnd",
"Hispano-Celtic": "cel-his",
"Hlai": "qfa-lic",
"Hmong-Mien": "hmx",
"Hmongic": "hmn",
"Hokan": "hok",
"Horpa": "ero",
"Hrusish": "sit-hrs",
"Huarpean": "sai-hrp",
"Huasteca Nahuatl": "azc-hua",
"Huon": "ngf-huo",
"Hurro-Urartian": "qfa-hur",
"Ibero-Romance": "roa-ibe",
"Ibibio-Efik": "nic-ief",
"Idomoid": "alv-ido",
"Igboid": "alv-igb",
"Ijoid": "ijo",
"Indo-Aryan": "inc",
"Indo-European": "ine",
"Indo-Iranian": "iir",
"Inland Gulf": "paa-ing",
"Inland Min": "zhx-inm",
"Inner Sko": "paa-isk",
"Insular Celtic": "cel-ins",
"Insular Indo-Aryan": "inc-ins",
"Insular Scandinavian": "gmq-ins",
"Inuit": "esx-inu",
"Iranian": "ira",
"Irish Anglo-Norman": "gmw-ian",
"Iroquoian": "iro",
"Irula-Muduga": "dra-imd",
"Italic": "itc",
"Italo-Dalmatian": "roa-itd",
"Italo-Romance": "roa-itr",
"Italo-Western Romance": "roa-iwr",
"Iwaidjan": "aus-wdj",
"Iwam": "paa-iwa",
"Japanese Sign Languages": "sgn-jsl",
"Japonic": "jpx",
"Jarawa": "nic-jrw",
"Jarawan": "nic-jrn",
"Jarrakan": "aus-jar",
"Jera": "nic-jer",
"Jicaquean": "nai-jcq",
"Jimi": "ngf-jim",
"Jingphoic": "sit-jnp",
"Jino": "tbq-jin",
"Jirajaran": "sai-jir",
"Jivaroan": "sai-jiv",
"Jogo-Jeri": "dmn-jje",
"Jola": "alv-jol",
"Jola-Felupe": "alv-jfe",
"Jukunoid": "nic-jkn",
"Jurchenic": "tuw-jrc",
"Jê": "sai-jee",
"KRDS languages": "inc-krd",
"Ka-Togo": "alv-ktg",
"Kaba": "csu-kab",
"Kabwum": "ngf-kab",
"Kachin-Luic": "sit-jpl",
"Kadu": "qfa-kad",
"Kaili-Pamona": "poz-kal",
"Kainantu": "ngf-kai",
"Kainantu-Goroka": "ngf-kgo",
"Kainji": "nic-knj",
"Kako": "bnt-kak",
"Kalahari Khoe": "khi-kal",
"Kalam-Kobon": "ngf-kak",
"Kalam-Southern Adelbert": "ngf-ksa",
"Kalamian": "phi-kal",
"Kalapuyan": "nai-klp",
"Kalenjin": "sdv-kln",
"Kam-Sui": "qfa-kms",
"Kamano-Yagaria": "ngf-kya",
"Kambari": "nic-kam",
"Kamuku": "nic-kmk",
"Kamula-Elevala": "paa-kae",
"Kannadoid": "dra-kan",
"Kanum": "paa-kan",
"Kapau-Menya": "ngf-kme",
"Karaboro": "alv-krb",
"Karen": "kar",
"Karluk": "trk-kar",
"Karnic": "aus-kar",
"Kartvelian": "ccs",
"Kashmiric": "inc-kas",
"Katloid": "nic-ktl",
"Katuic": "mkh-kat",
"Katukinan": "sai-ktk",
"Kaukombar": "ngf-kau",
"Kaure-Kosare": "paa-kko",
"Kauru": "nic-kau",
"Kavango": "bnt-kav",
"Kavango-Southwest Bantu": "bnt-ksb",
"Kayagaric": "paa-kay",
"Kazhuoish": "tbq-kzh",
"Kele": "bnt-kel",
"Kele-Tsogo": "bnt-kts",
"Keram": "paa-ker",
"Keresan": "nai-ker",
"Ketic": "qfa-yke",
"Kewa-Huli": "ngf-khu",
"Kham": "sit-kha",
"Khanty": "kca",
"Khasian": "aav-khs",
"Khmeric": "mkh-kmr",
"Khmuic": "mkh-khm",
"Kho-Bwa": "sit-khb",
"Khoe": "khi-kho",
"Khoe-Kwadi": "khi-kkw",
"Khoekhoe": "khi-khk",
"Kikuyu-Kamba": "bnt-kka",
"Kilombero": "bnt-kil",
"Kim": "alv-kim",
"Kimbundu": "bnt-kmb",
"Kinnauric": "sit-kin",
"Kiowa-Tanoan": "nai-kta",
"Kipchak": "trk-kip",
"Kipchak-Bulgar": "trk-kbu",
"Kipchak-Cuman": "trk-kcu",
"Kipchak-Nogai": "trk-kno",
"Kiranti": "sit-kir",
"Kissi": "alv-kis",
"Kiwaian": "paa-kiw",
"Kodagu": "dra-kod",
"Kohistani": "inc-koh",
"Koiarian": "ngf-koi",
"Kokon": "ngf-kok",
"Kolami-Naiki": "dra-knk",
"Kolopom": "paa-kol",
"Koman": "ssa-kom",
"Kombio": "paa-kom",
"Kombio-Arapesh": "paa-koa",
"Komi": "kv",
"Komisenian": "ira-kms",
"Komo-Bira": "bnt-kbi",
"Komyandaret-Tsaukambo": "ngf-kts",
"Konda-Kui": "dra-kki",
"Kongo": "bnt-kng",
"Konyak-Chang": "sit-kch",
"Koraga": "dra-kor",
"Koreanic": "qfa-kor",
"Kosorong-Burum-Mindik": "ngf-kbm",
"Kottic": "qfa-yko",
"Kowan": "ngf-kow",
"Kpala": "nic-nkk",
"Kpwe": "bnt-kpw",
"Kra": "qfa-kra",
"Kra-Dai": "qfa-tak",
"Kru": "kro",
"Kube-Tobo": "ngf-kto",
"Kuikuroan": "sai-kui",
"Kuki-Chin": "tbq-kuk",
"Kulango": "alv-kul",
"Kuliak": "ssa-klk",
"Kumil": "ngf-kum",
"Kunar": "inc-kun",
"Kunimaipan": "paa-kun",
"Kurdish": "ku",
"Kurux-Malto": "dra-kml",
"Kwa": "alv-kwa",
"Kwalean": "paa-kwa",
"Kwerba proper": "paa-kwe",
"Kwomtari": "paa-kwo",
"Kx'a": "khi-kxa",
"Kyirong-Kagate": "sit-kyk",
"Kyrgyz-Kipchak": "trk-kkp",
"Kâte-Mape": "ngf-kma",
"Ladakhi-Balti": "sit-lab",
"Lagoon": "alv-lag",
"Lahoish": "tbq-lho",
"Lahuli-Spiti": "sit-las",
"Lakes Plain": "paa-lpl",
"Lalo": "tbq-lal",
"Lampungic": "poz-lgx",
"Land Dayak": "day",
"Latino-Faliscan": "itc-laf",
"Lawoish": "tbq-lwo",
"Lebonya": "bnt-leb",
"Lechitic": "zlw-lch",
"Left May": "paa-lma",
"Lega-Binja": "bnt-lgb",
"Leko": "alv-lek",
"Leko-Nimbari": "alv-lni",
"Lenape": "del",
"Lencan": "nai-len",
"Lendu": "csu-lnd",
"Lepki-Murkim": "paa-lmu",
"Lezghian": "cau-lzg",
"Limba": "alv-lim",
"Lipo-Lolopo": "tbq-llo",
"Lisoish": "tbq-lso",
"Logooli-Kuria": "bnt-lok",
"Lolo-Burmese": "tbq-lob",
"Loloda-Laba": "paa-lla",
"Loloish": "tbq-lol",
"Lotuko-Maa": "sdv-lma",
"Low Franconian": "gmw-frk",
"Low German": "gmw-lgm",
"Lower Cross River": "nic-lcr",
"Lower Ramu": "paa-lra",
"Lower Sepik": "paa-lse",
"Lowland Ok": "ngf-lok",
"Luba": "bnt-lub",
"Luban": "bnt-lbn",
"Luish": "sit-luu",
"Lunda": "bnt-lun",
"Luo": "sdv-luo",
"Luwic": "ine-luw",
"Mabuso": "ngf-mab",
"Macro-Bai": "sit-mba",
"Macro-Chibchan": "qfa-mch",
"Macro-Jê": "sai-mje",
"Madang": "ngf-mad",
"Madiya": "dra-mdy",
"Maiduan": "nai-mdu",
"Mailuan": "paa-mal",
"Maimai": "paa-mam",
"Mairasi": "paa-mai",
"Makaa": "bnt-mka",
"Makaa-Njem": "bnt-mnj",
"Makua": "bnt-mak",
"Malayalamoid": "dra-mal",
"Malayic": "poz-mly",
"Malayo-Chamic": "poz-mcm",
"Malayo-Polynesian": "poz",
"Malayo-Sumbawan": "poz-msa",
"Malto": "dra-mlo",
"Mambiloid": "nic-mmb",
"Mamfe": "nic-mam",
"Mandarinic": "zhx-man",
"Mande": "dmn",
"Mandi-Muniwara": "paa-mmu",
"Manding": "dmn-man",
"Manding-Jogo": "dmn-mjo",
"Manding-Mokole": "dmn-mmo",
"Manding-Vai": "dmn-mva",
"Manenguba": "bnt-mne",
"Mangbetu": "csu-maa",
"Mangbutu-Lese": "csu-mle",
"Mangic": "mkh-mng",
"Maninka": "dmn-mnk",
"Mano-Dan": "dmn-mda",
"Manobo": "mno",
"Mansi": "mns",
"Manubaran": "paa-man",
"Mao": "omv-mao",
"Mapoyan": "sai-map",
"Mari": "chm",
"Marienberg": "paa-mar",
"Marind-Boazi-Yaqay": "paa-mby",
"Marindic": "paa-mri",
"Maringic": "sit-mar",
"Masa": "cdc-mas",
"Masaba-Luhya": "bnt-msl",
"Mascoian": "sai-mas",
"Mataco-Guaicuru": "sai-mgc",
"Matacoan": "sai-mtc",
"Mayan": "myn",
"Maybratic": "paa-may",
"Mazanderani-Shahmirzadi": "ira-msh",
"Mazatecan": "omq-maz",
"Mba": "nic-mbc",
"Mbaham-Iha": "paa-mbi",
"Mbaka": "nic-nkm",
"Mbam": "nic-mba",
"Mbete": "bnt-mbt",
"Mbeya": "bnt-mby",
"Mbinga": "bnt-mbi",
"Mbole-Enya": "bnt-mbe",
"Mboshi": "bnt-mbo",
"Mboshi-Buja": "bnt-mbb",
"Mbugwe-Rangi": "bnt-mra",
"Mbum": "alv-mbm",
"Mbum-Day": "alv-mbd",
"Median": "xme",
"Medo-Parthian": "ira-mpr",
"Mek": "ngf-mek",
"Mel": "alv-mel",
"Mey-Sartang": "sit-khm",
"Mian-Suganga": "ngf-msu",
"Micronesian": "poz-mic",
"Middle Indo-Aryan": "inc-mid",
"Middle Iranian": "ira-mid",
"Midzu": "sit-mdz",
"Mienic": "hmx-mie",
"Mijikenda": "bnt-mij",
"Min": "zhx-min",
"Mindjim": "ngf-min",
"Mirndi": "aus-mir",
"Mississippi Valley Siouan": "sio-msv",
"Missouri River Siouan": "sio-mor",
"Misumalpan": "nai-min",
"Mixe-Zoquean": "nai-miz",
"Mixtec": "omq-mxt",
"Mixtecan": "omq-mix",
"Modern South Arabian": "sem-sar",
"Mokole": "dmn-mok",
"Mombum": "ngf-mom",
"Momo": "nic-mom",
"Mon-Khmer": "mkh",
"Mondzish": "sit-mnz",
"Mongo": "bnt-mon",
"Mongolic": "xgn",
"Monguor": "mjg",
"Monic": "mkh-mnc",
"Monumbo": "paa-mon",
"Mordvinic": "urj-mdv",
"Moru-Madi": "csu-mma",
"Moré": "nic-mre",
"Mountain Ok": "ngf-mok",
"Mruic": "sit-mru",
"Muji": "tbq-muj",
"Mumuye": "alv-mum",
"Mumuye-Yendang": "alv-mye",
"Muna-Buton": "poz-mun",
"Munda": "mun",
"Munji-Yidgha": "ira-mny",
"Muran": "sai-mur",
"Muria": "dra-mur",
"Muskogean": "nai-mus",
"Mwika": "bnt-mwi",
"Na-Dene": "xnd",
"Na-Togo": "alv-ntg",
"Nadahup": "sai-nad",
"Nahuan": "azc-nah",
"Naic": "sit-nax",
"Naish": "sit-nas",
"Nakh": "cau-nkh",
"Nalu": "alv-nal",
"Nambikwaran": "sai-nmk",
"Nambu": "paa-nam",
"Namla-Tofanma": "paa-nto",
"Nanaic": "tuw-nan",
"Nandi-Markweta": "sdv-nma",
"Nanga-Walo": "nic-nwa",
"Nasoid": "tbq-nas",
"Navarro-Aragonese": "roa-nar",
"Nawiki": "awd-nwk",
"Ndeiram": "ngf-nde",
"Ndu": "paa-ndu",
"Ndzem-Bomwali": "bnt-ndb",
"Nenets": "yrk",
"New Caledonian": "poz-cln",
"Newaric": "sit-new",
"Ngalik-Nduga": "ngf-ngn",
"Ngayarda": "aus-nga",
"Ngbaka": "nic-ngk",
"Ngbandi": "nic-ngd",
"Ngemba": "nic-nge",
"Ngkolmpu": "paa-ngk",
"Ngondi-Ngiri": "bnt-ngn",
"Nguni": "bnt-ngu",
"Nicobarese": "aav-nic",
"Niger-Congo": "nic",
"Nilo-Saharan": "ssa",
"Nilotic": "sdv-nil",
"Nimboran": "paa-nim",
"Ninzic": "nic-nin",
"Nisoish": "tbq-nso",
"Nisu": "tbq-nis",
"Nkambe": "nic-nka",
"North Athabaskan": "ath-nor",
"North Bahnaric": "mkh-nbn",
"North Binanderean": "ngf-nbi",
"North Bornean": "poz-bnn",
"North Bougainville": "paa-nbo",
"North Dravidian": "dra-nor",
"North Germanic": "gmq",
"North Halmahera": "paa-nha",
"North Iroquoian": "iro-nor",
"North Ometo": "omv-nom",
"North Plateau Dogon": "nic-npd",
"North Sarawakan": "poz-swa",
"North Sea Germanic": "gmw-nsg",
"North Siberian Turkic": "trk-nsb",
"North Sogeram": "ngf-nso",
"North Vanuatu": "poz-vnn",
"North-Central Edoid": "alv-nce",
"North-South Upper Cross River": "nic-ucn",
"Northeast Bantu": "bnt-bne",
"Northeast Caucasian": "cau-nec",
"Northeast Coast Bantu": "bnt-ncb",
"Northeastern Iranian": "ira-nei",
"Northeastern Neo-Aramaic": "sem-nna",
"Northern Adelbert": "ngf-nad",
"Northern Bai": "sit-nba",
"Northern Bantoid": "nic-bdn",
"Northern Eastern Sudanic": "sdv-nes",
"Northern Great Andamanese": "qfa-adn",
"Northern Gurunsi": "nic-gnn",
"Northern Indo-Aryan": "inc-nor",
"Northern Jê": "sai-nje",
"Northern Loloish": "tbq-nlo",
"Northern Luo": "sdv-lon",
"Northern Naga": "sit-kon",
"Northern North Halmahera": "paa-nnh",
"Northern Nuristani": "nur-nor",
"Northern Ring": "nic-rnn",
"Northern Ryukyuan": "jpx-nry",
"Northern Tai": "tai-nor",
"Northern Tivoid": "nic-tvn",
"Northwest Caucasian": "cau-nwc",
"Northwest Hanseman": "ngf-nwh",
"Northwest Kainji": "nic-knn",
"Northwest Semitic": "sem-nwe",
"Northwest Sumatran": "poz-nws",
"Northwestern Edoid": "alv-nwd",
"Northwestern Indo-Aryan": "inc-nwe",
"Northwestern Iranian": "ira-nwi",
"Northwestern Mande": "dmn-mnw",
"Nubian": "nub",
"Nuclear Ndu": "paa-nnd",
"Nuclear Polynesian": "poz-pnp",
"Numic": "azc-num",
"Numugen": "ngf-num",
"Nun": "nic-nun",
"Nungish": "sit-nng",
"Nupe-Gbagyi": "alv-ngb",
"Nupoid": "alv-nup",
"Nuristani": "iir-nur",
"Nuru": "ngf-nur",
"Nusoish": "tbq-nus",
"Nwa-Beng": "dmn-nbe",
"Nyali": "bnt-nya",
"Nyanga-Buyi": "bnt-nyb",
"Nyasa": "bnt-nys",
"Nyima": "sdv-nyi",
"Nyoro-Ganda": "bnt-nyg",
"Nyulnyulan": "aus-nyu",
"Nyun": "alv-nyn",
"Nzebi": "bnt-nze",
"Occitano-Romance": "roa-ocr",
"Oceanic": "poz-oce",
"Oghur": "trk-ogr",
"Oghuz": "trk-ogz",
"Ogoni": "nic-ogo",
"Ohio Valley Siouan": "sio-ohv",
"Ok": "ngf-okk",
"Old Indo-Aryan": "inc-old",
"Old Iranian": "ira-old",
"Old South Arabian": "sem-osa",
"Ometo": "omv-ome",
"Omosan": "ngf-omo",
"Omotic": "omv",
"Ongan": "qfa-ong",
"Ormuri-Parachi": "ira-orp",
"Orokaivic": "ngf-oro",
"Osco-Umbrian": "itc-sbl",
"Oti-Volta": "nic-ovo",
"Oto-Manguean": "omq",
"Oto-Pamean": "omq-otp",
"Otomacoan": "sai-otm",
"Otomi": "oto-otm",
"Otomian": "oto",
"Ottilien": "paa-ott",
"Outer Engan": "ngf-oen",
"Ovambo": "bnt-ova",
"Oïl": "roa-oil",
"Pacific Coast Athabaskan": "ath-pco",
"Pahari": "inc-pah",
"Pahoturi River": "paa-pah",
"Pakanic": "mkh-pkn",
"Pakawan": "nai-pak",
"Palaihnihan": "nai-pal",
"Palaungic": "mkh-pal",
"Palei": "paa-pal",
"Pama-Nyungan": "aus-pam",
"Paman": "aus-pmn",
"Paniai Lakes": "ngf-pan",
"Pano-Tacanan": "sai-pat",
"Panoan": "sai-pan",
"Papel": "alv-pap",
"Papuan": "paa",
"Para-Mongolic": "qfa-xgx",
"Pare": "bnt-par",
"Parji-Gadaba": "dra-pgd",
"Parukotoan": "sai-prk",
"Pashayi": "inc-pas",
"Pathan": "ira-pat",
"Pearic": "mkh-pea",
"Peba-Yaguan": "sai-pey",
"Peka": "ngf-pek",
"Pekodian": "sai-pek",
"Pemongan": "sai-pem",
"Pende": "bnt-pen",
"Permic": "urj-prm",
"Philippine": "phi",
"Phla-Pherá": "alv-pph",
"Phowa": "tbq-phw",
"Piawi": "paa-pia",
"Piman": "azc-pim",
"Pinghua": "zhx-pin",
"Piore River": "paa-pio",
"Plains Dogon": "nic-pld",
"Plateau": "nic-plt",
"Plateau Penutian": "nai-plp",
"Platoid": "nic-pla",
"Pnar-Khasi-Lyngngam": "aav-pkl",
"Polynesian": "poz-pol",
"Pomeranian": "zlw-pom",
"Pomo-Bomwali": "bnt-pob",
"Pomoan": "nai-pom",
"Pomoikan": "ngf-pom",
"Popolocan": "omq-pop",
"Porapora": "paa-por",
"Potou-Tano": "alv-ptn",
"Pumpokolic": "qfa-ypm",
"Punjabic": "inc-pan",
"Qiangic": "sit-qia",
"Quechuan": "qwe",
"Rai Coast": "ngf-rai",
"Rajasthani": "raj",
"Ramu": "paa-ram",
"Rasawa-Saponi": "paa-rsa",
"Rashad": "nic-ras",
"Rgyalrongic": "sit-rgy",
"Rhaeto-Romance": "roa-rhe",
"Ring": "nic-rng",
"Riverine Phula": "tbq-rph",
"Romance": "roa",
"Romani": "inc-rom",
"Ruboni": "paa-rub",
"Rufiji-Ruvuma": "bnt-rur",
"Rukwa": "bnt-ruk",
"Rungwe": "bnt-run",
"Ruvu": "bnt-ruv",
"Ruvuma": "bnt-rvm",
"Ryukyuan": "jpx-ryu",
"Sabahan": "poz-san",
"Sabaki": "bnt-sab",
"Sabakor": "ngf-sab",
"Sabi": "bnt-sbi",
"Sac-Fox-Kickapoo": "alg-sfk",
"Sahaptian": "nai-shp",
"Saharan": "ssa-sah",
"Sahu": "paa-sah",
"Saka": "xsc-sak",
"Saka-Wakhi": "xsc-skw",
"Sal": "tbq-bkj",
"Salish": "sal",
"Saluan-Banggai": "poz-slb",
"Sama-Bajaw": "poz-sbj",
"Samarokena-Airoran": "paa-saa",
"Sami": "smi",
"Samo": "dmn-sam",
"Samogo": "dmn-smg",
"Samoyedic": "syd",
"Samur": "cau-sam",
"Sanglechi-Ishkashimi": "ira-sgi",
"Sankwep": "ngf-san",
"Sapa-Southwestern Tai": "tai-sap",
"Sara": "csu-sar",
"Sarmatian": "xsc-sar",
"Sau-Angal-Kewa": "ngf-sak",
"Savanna": "alv-sav",
"Sawabantu": "bnt-saw",
"Scythian": "xsc",
"Selkup": "sel",
"Semitic": "sem",
"Sena": "bnt-sna",
"Senagi": "paa-sng",
"Senari": "alv-snr",
"Senegambian": "alv-sng",
"Sentani": "paa-sen",
"Senufo": "alv-snf",
"Sepik": "paa-sep",
"Serbi-Mongolic": "qfa-xgs",
"Sere": "nic-ser",
"Serra Hills": "paa-shi",
"Seuta": "bnt-seu",
"Shastan": "nai-shs",
"Shi-Havu": "bnt-shh",
"Shinaic": "inc-shn",
"Shirongolic": "xgn-shr",
"Shiroro": "nic-shi",
"Shona": "bnt-sho",
"Shughni-Roshani": "ira-shr",
"Shughni-Yazghulami": "ira-shy",
"Shughni-Yazghulami-Munji": "ira-sym",
"Siberian Turkic": "trk-sib",
"Siloid": "tbq-sil",
"Simbu": "ngf-sim",
"Sindhic": "inc-snd",
"Sinitic": "zhx",
"Sino-Bai": "sit-sba",
"Sino-Tibetan": "sit",
"Siouan": "sio",
"Siouan-Catawban": "nai-sca",
"Sira": "bnt-sir",
"Sisaala": "nic-sis",
"Sko": "paa-sko",
"Slavey": "den",
"Slavic": "sla",
"Sogdic": "ira-sgc",
"Sogdo-Bactrian": "ira-sbc",
"Sogeram": "ngf-sog",
"Soko-Kele": "bnt-ske",
"Somaloid": "cus-som",
"Songhay": "son",
"Soninke-Bobo": "dmn-snb",
"Sopac": "ngf-sop",
"Sorbian": "wen",
"Sotho-Tswana": "bnt-sts",
"South Bird's Head": "ngf-sbh",
"South Bougainville": "paa-sbo",
"South Cushitic": "cus-sou",
"South Dravidian": "dra-sou",
"South Dravidian I": "dra-sdo",
"South Dravidian II": "dra-sdt",
"South Plateau": "nic-pls",
"South Siberian Turkic": "trk-ssb",
"South Slavic": "zls",
"South Sulawesi": "poz-ssw",
"South Vanuatu": "poz-vns",
"Southeast Solomonic": "poz-sls",
"Southeastern Aramaic": "sem-ase",
"Southeastern Iranian": "ira-sei",
"Southeastern Loloish": "tbq-sel",
"Southeastern Mande": "dmn-mse",
"Southern Adelbert": "ngf-sad",
"Southern Bantoid": "nic-bds",
"Southern Bantu": "bnt-bso",
"Southern Gbaya": "gba-sou",
"Southern Great Andamanese": "qfa-ads",
"Southern Indo-Aryan": "inc-sou",
"Southern Jê": "sai-sje",
"Southern Loloish": "tbq-slo",
"Southern Luo": "sdv-los",
"Southern Min": "zhx-nan",
"Southern Mongolic": "xgn-sou",
"Southern Nilotic": "sdv-nis",
"Southern Nuristani": "nur-sou",
"Southern Oceanic": "poz-ocs",
"Southern Romance": "roa-sou",
"Southern Ryukyuan": "jpx-sry",
"Southern Samur": "cau-ssm",
"Southwest Bantu": "bnt-swb",
"Southwest Grassfields": "nic-grs",
"Southwest Pama-Nyungan": "aus-psw",
"Southwestern Brythonic": "cel-brs",
"Southwestern Edoid": "alv-swd",
"Southwestern Iranian": "ira-swi",
"Southwestern Mande": "dmn-msw",
"Southwestern Tai": "tai-swe",
"St. Matthias": "poz-stm",
"Supyire-Mamara": "alv-sma",
"Susu-Yalunka": "dmn-sya",
"Swahili": "bnt-swh",
"Ta-Arawak": "awd-taa",
"Tacanan": "sai-tac",
"Tagwana-Djimini": "alv-tdj",
"Tai": "tai",
"Taikat-Awyi": "paa-taa",
"Tainae-Akoye": "ngf-taa",
"Tairora": "ngf-tai",
"Takama": "bnt-tkm",
"Takic": "azc-tak",
"Talodi": "alv-tal",
"Talodi-Heiban": "alv-the",
"Taloid": "tbq-tal",
"Taman": "sdv-tmn",
"Tamangic": "sit-tam",
"Tamil-Kannada": "dra-tkn",
"Tamil-Kodagu": "dra-tkd",
"Tamil-Malayalam": "dra-tml",
"Tamiloid": "dra-tam",
"Tamolan": "paa-tam",
"Tangkhul-Maring": "sit-tma",
"Tangkhulic": "sit-tng",
"Tangkic": "aus-tnk",
"Tangko-Nakai": "ngf-tna",
"Tangsa-Nocte": "sit-tno",
"Tani": "sit-tan",
"Taracahitic": "azc-trc",
"Taranoan": "sai-tar",
"Tarokoid": "nic-tar",
"Tatic": "xme-ttc",
"Teberan": "paa-teb",
"Teke": "bnt-tek",
"Teke-Mbede": "bnt-tmb",
"Teluguic": "dra-tel",
"Temotu": "poz-tem",
"Tenda": "alv-ten",
"Tequistlatecan": "nai-tqn",
"Ternate-Tidore": "paa-tti",
"Teso-Turkana": "sdv-ttu",
"Tetela": "bnt-tet",
"Tharu": "inc-tha",
"Tibetic": "sit-tib",
"Tibeto-Burman": "tbq",
"Tiboran": "ngf-tib",
"Ticuna-Yuri": "sai-tyu",
"Timor-Alor-Pantar": "paa-tap",
"Timoric": "poz-tim",
"Tirio": "paa-tir",
"Tivoid": "nic-tiv",
"Tocharian": "ine-toc",
"Toda-Kota": "dra-tkt",
"Tomini-Tolitoli": "poz-tot",
"Tonda": "paa-ton",
"Tongic": "poz-ton",
"Tor": "paa-tor",
"Tor-Orya": "paa-too",
"Torricelli": "paa-trr",
"Totonacan": "nai-ttn",
"Totozoquean": "nai-tot",
"Trans-New Guinea": "ngf",
"Triqui": "omq-tri",
"Tsezian": "cau-tsz",
"Tshangla": "sit-tsk",
"Tsimshianic": "nai-tsi",
"Tsogo": "bnt-tso",
"Tswa-Ronga": "bnt-tsr",
"Tucanoan": "sai-tuc",
"Tujia": "sit-tja",
"Tulu-Koraga": "dra-tlk",
"Tungusic": "tuw",
"Tupi-Guarani": "tup-gua",
"Tupian": "tup",
"Turama-Kikori": "paa-tki",
"Turkic": "trk",
"Tuu": "khi-tuu",
"Tyrsenian": "qfa-tyn",
"Tày": "tai-tay",
"Ubangian": "nic-ubg",
"Udegheic": "tuw-udg",
"Ugric": "urj-ugr",
"Upper Cross River": "nic-ucr",
"Upriver Phula": "tbq-urp",
"Uralic": "urj",
"Uru-Chipaya": "sai-ucp",
"Uruwa": "ngf-uru",
"Utian": "nai-utn",
"Uto-Aztecan": "azc",
"Utu-Silopi": "ngf-usi",
"Vai-Kono": "dmn-vak",
"Vainakh": "cau-vay",
"Vale": "csu-val",
"Vasconic": "euq",
"Venezuelan Cariban": "sai-ven",
"Vietic": "mkh-vie",
"Volta-Congo": "nic-vco",
"Volta-Niger": "alv-von",
"Wahgi": "ngf-wah",
"Waja-Kam": "alv-wjk",
"Wakashan": "wak",
"Walio": "paa-wal",
"Wantoat-Awara": "ngf-waa",
"Wantoatic": "ngf-wan",
"Wapei": "paa-wap",
"Wapei-Palei": "paa-wpa",
"Wara-Natyoro": "alv-wan",
"Waris": "paa-war",
"Warup": "ngf-war",
"Wee": "kro-wee",
"Wenma-Southwestern Tai": "tai-wen",
"West Baltic": "bat-wes",
"West Barito": "poz-brw",
"West Bird's Head": "paa-wbh",
"West Chadic": "cdc-wst",
"West Dogon": "nic-dgw",
"West Germanic": "gmw",
"West Himalayish": "sit-whm",
"West Inland Gulf": "paa-wig",
"West Keram": "paa-wke",
"West Lakes Plain": "paa-wlp",
"West Manding": "dmn-wmn",
"West Mbam": "nic-mbw",
"West Ok": "ngf-wok",
"West Scandinavian": "gmq-wes",
"West Semitic": "sem-wes",
"West Slavic": "zlw",
"West Sogeram": "ngf-wso",
"West Tsezian": "cau-wts",
"West rGyalrongic": "sit-wgy",
"Western Aramaic": "sem-arw",
"Western Brythonic": "cel-brw",
"Western Eleman": "paa-wel",
"Western Gbaya": "gba-wes",
"Western Gurunsi": "nic-gnw",
"Western Hindi": "inc-hiw",
"Western Indo-Aryan": "inc-wes",
"Western Iranian": "ira-wes",
"Western Kho-Bwa": "sit-khw",
"Western Kiranti": "sit-kiw",
"Western Kru": "kro-wkr",
"Western Mande": "dmn-mdw",
"Western Ngbaka": "nic-nkw",
"Western Nilotic": "sdv-niw",
"Western Oceanic": "poz-ocw",
"Western Oti-Volta": "nic-wov",
"Western Pahari": "him",
"Western Pauwasi": "paa-wpw",
"Western Ring": "nic-rnw",
"Western Romance": "roa-wes",
"Western Samur": "cau-wsm",
"Wichí": "sai-wic",
"Wintuan": "nai-wtq",
"Witotoan": "sai-wit",
"Wojokesic": "ngf-woj",
"Worrorran": "aus-wor",
"Wotu-Wolio": "poz-wot",
"Wára-Kómnzo": "paa-wko",
"Xincan": "nai-xin",
"Yaganon": "ngf-yag",
"Yaka": "bnt-yak",
"Yali": "ngf-yal",
"Yam": "paa-yam",
"Yambasa": "nic-ymb",
"Yangmanic": "aus-yng",
"Yanomami": "sai-ynm",
"Yaqayic": "paa-yaq",
"Yareban": "ngf-yar",
"Yasa-Kombe": "bnt-yko",
"Yau-Nungon": "ngf-ynu",
"Yawa-Saweru": "paa-ysa",
"Yekhee": "alv-yek",
"Yeniseian": "qfa-yen",
"Yidinyic": "aus-yid",
"Yok-Utian": "nai-you",
"Yokuts": "yok",
"Yolngu": "aus-yol",
"Yom-Nawdm": "nic-yon",
"Yoruba": "alv-yor",
"Yoruboid": "alv-yrd",
"Yuat": "paa-yua",
"Yue": "zhx-yue",
"Yuin-Kuric": "aus-yuk",
"Yukaghir": "qfa-yuk",
"Yukian": "nai-ykn",
"Yukpan": "sai-yuk",
"Yukubenic": "nic-ykb",
"Yuman-Cochimí": "nai-yuc",
"Yungur": "alv-yun",
"Yupik": "ypk",
"Yupna": "ngf-yup",
"Zamba-Binza": "bnt-zbi",
"Zamucoan": "sai-zam",
"Zan": "ccs-zan",
"Zande": "znd",
"Zaparoan": "sai-zap",
"Zapotec": "omq-zpc",
"Zapotecan": "omq-zap",
"Zaza-Gorani": "ira-zgr",
"Zeme": "sit-zem",
"constructed": "art",
"contact": "qfa-cnt",
"creole": "qfa-cre",
"creole or pidgin": "crp",
"disputed affiliation": "qfa-dis",
"isolate": "qfa-iso",
"mixed": "qfa-mix",
"not a family": "qfa-not",
"pidgin": "qfa-pid",
"sign": "sgn",
"substrate": "qfa-sub",
"unclassifiable": "qfa-unc"
}
i4gliuy8lnfr189t2es1dk8629kf54t
පරමරුත
0
139635
233632
226045
2026-05-08T18:44:01Z
WrdSrchSi
3305
+ quote with link
233632
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
#:* අමරසිරි ගුණවඩු, ''[https://archives1.silumina.lk/2019/03/09/පුන්කලස/හෙළබසට-වැඩ-වැඩූ-අමරසිරි-ගුණවඩූ මහ හෙළ වත]'', 1957
#:*: ''එ තෙකින් මැ නියම මුනිදස්හු නම් පළ නො වෙති. එබැවින් ඔවුන් යම් තම් හෝ හඳුනන්නාහු ඉමඳ මැ යැ. මෙ වත පැවෙනුයේ නියම මුනිදසුන් අඳුන්වන්නටත් පළ කරන්නටත් පතා යැ. එ මැ යැ මෙහි '''පරමරුත'''!’''
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
lhwlw8zd2v534g835ffprpkxyosla9p
Module:category tree/fam/gem
828
140955
233696
2026-02-17T00:17:56Z
en>Benwing2
0
class 1 weak j-present, heavy-stem, light-stem verbs
233696
Scribunto
text/plain
local labels = {}
------- GERMANIC VERB CLASSES -------
labels["strong verbs"] = {
description = "{{{langname}}} verbs that do not use a dental suffix to mark the past tense and past participle, instead using vowel change ([[ablaut]]) and often a suffix ''-(e)n'' in the past participle.",
breadcrumb = "strong",
parents = {"verbs by inflection type"},
}
labels["weak verbs"] = {
description = "{{{langname}}} verbs that display dental suffixes in their past tense conjugated forms.",
breadcrumb = "weak",
parents = {"verbs by inflection type"},
}
labels["preterite-present verbs"] = {
description = "{{{langname}}} verbs that inflect in the present tense like the past tense of strong verbs.",
breadcrumb = "preterite-present",
parents = {"verbs by inflection type"},
}
labels["class 1 strong verbs"] = {
description = "{{{langname}}} class 1 strong verbs, where the [[ablaut]] vowel was followed by ''-y-'' in Proto-Indo-European.",
breadcrumb = "class 1",
parents = {{name = "strong verbs", sort = "1"}},
}
labels["class 1 weak verbs"] = {
description = "{{{langname}}} class 1 weak verbs, where the stem was followed by {{ic|/i/~/j/}} in Proto-Germanic (or {{ic|/ij/}} after a heavy stem, due to {{w|Sievers' Law}}).",
additional = "This triggered [[umlaut]] in most daughter languages, as well as gemination of the final consonant in light stems in West Germanic.",
breadcrumb = "class 1",
parents = {{name = "weak verbs", sort = "1"}},
}
labels["class 1 weak j-present verbs"] = {
description = "{{{langname}}} class 1 weak verbs with {{ic|/i/~/j/~/ij/}} in Proto-Germanic only in the present tense, but not elsewhere.",
additional = "Most class 1 weak verbs had {{ic|/i/}} in the past tense and past participle, leading to " ..
"[[umlaut]] throughout the verb in daughter languages with umlaut. A few archaic verbs, however, lacked " ..
"this [[interfix]], with the [[dental]] consonant of the ending attached directly to the stem. Original " ..
"instances of this are the reflexes of English [[seek]], [[think]], [[buy]] and [[work]], with apparently " ..
"irregular pasts ''sought'', ''thought'', ''bought'' and archaic ''wrought'', and it was often extended " ..
"to other verbs in various daughter languages (e.g. the [[Old English]] reflexes of [[sell]], [[tell]], " ..
"[[teach]] and formerly [[reach]], with apparently irregular pasts ''sold'', ''told'', ''taught'' and " ..
"now-obsolete ''raught''). The apparent reversal of umlaut in the past tense is sometimes called " ..
"{{m|de|Rückumlaut|lit=backwards umlaut}} in Germanic studies.",
breadcrumb = "''j''-present",
parents = {{name = "class 1 weak verbs", sort = "j-present"}},
}
labels["class 1 weak heavy-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a heavy stem in Proto-Germanic, i.e. a stem containing a long vowel or ending in two consonants.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/ij/}} between the stem and endings " ..
"in the present tense, which evolved differently from light-stem verbs in most daughter languages, which " ..
"had an interfix {{ic|/i/~/j/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "heavy-stem",
parents = "class 1 weak verbs",
}
labels["class 1 weak light-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a light stem in Proto-Germanic, i.e. a stem containing a short vowel and ending in only one consonant.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/i/~/j/}} between the stem and " ..
"endings in the present tense, which evolved differently from heavy-stem verbs in most daughter languages, " ..
"which had an interfix {{ic|/ij/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "light-stem",
parents = "class 1 weak verbs",
}
labels["class 2 strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs, where the [[ablaut]] vowel was followed by ''-w-'' in Proto-Indo-European.",
breadcrumb = "class 2",
parents = {{name = "strong verbs", sort = "2"}},
}
labels["class 2a strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*eu'' in Proto-Germanic.",
breadcrumb = "class 2a",
parents = {{name = "class 2 strong verbs", sort = "1"}},
}
labels["class 2b strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*ū'' in Proto-Germanic.",
breadcrumb = "class 2b",
parents = {{name = "class 2 strong verbs", sort = "2"}},
}
labels["class 2 weak verbs"] = {
description = "{{{langname}}} class 2 weak verbs, where the stem was followed by ''*ō'' in Proto-Germanic.",
breadcrumb = "class 2",
parents = {{name = "weak verbs", sort = "2"}},
}
labels["class 3 weak verbs"] = {
description = "{{{langname}}} class 3 weak verbs, where the stem was followed by ''*ai''~''*ā'' in Proto-Germanic, which was generalized to ''*ē'' in West Germanic.",
breadcrumb = "class 3",
parents = {{name = "weak verbs", sort = "3"}},
}
labels["class 3 strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs, where the [[ablaut]] vowel was followed by a [[consonant cluster]] in Proto-Indo-European.",
breadcrumb = "class 3",
parents = {{name = "strong verbs", sort = "3"}},
}
labels["class 3a strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a nasal consonant.",
breadcrumb = "class 3a",
parents = {{name = "class 3 strong verbs", sort = "1"}},
}
labels["class 3b strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a lateral consonant or velar fricative.",
breadcrumb = "class 3b",
parents = {{name = "class 3 strong verbs", sort = "2"}},
}
labels["class 3c strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a rhotic consonant.",
breadcrumb = "class 3c",
parents = {{name = "class 3 strong verbs", sort = "3"}},
}
labels["class 4 strong verbs"] = {
description = "{{{langname}}} class 4 strong verbs, where the [[ablaut]] vowel was followed by a [[sonorant]] (''m'', ''n'', ''l'', ''r'') but no other consonant in Proto-Indo-European.",
breadcrumb = "class 4",
parents = {{name = "strong verbs", sort = "4"}},
}
labels["class 4 weak verbs"] = {
description = "{{{langname}}} class 4 weak verbs, where the stem was followed by ''*n'' in Proto-Germanic.",
breadcrumb = "class 4",
parents = {{name = "weak verbs", sort = "4"}},
}
labels["class 5 strong verbs"] = {
description = "{{{langname}}} class 5 strong verbs, where the [[ablaut]] vowel was followed by [[consonant]] other than a [[sonorant]] in Proto-Indo-European.",
breadcrumb = "class 5",
parents = {{name = "strong verbs", sort = "5"}},
}
labels["class 5 strong j-present verbs"] = {
description = "{{{langname}}} class 5 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This [[umlaut]]ed the root vowel to {{ic|/i/}}, and caused gemination of the stem-final consonant in the West Germanic languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 5 strong verbs", sort = "j-present"}},
}
labels["class 6 strong verbs"] = {
description = "{{{langname}}} class 6 strong verbs, with the stem vowel ''-a-'' (and usually a single stem-final consonant), 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).",
additional = "The Proto-Indo-European origin of this class is not securely known.",
breadcrumb = "class 6",
parents = {{name = "strong verbs", sort = "6"}},
}
labels["class 6 strong j-present verbs"] = {
description = "{{{langname}}} class 6 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused gemination of the stem-final consonant in the West Germanic languages, and [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 6 strong verbs", sort = "j-present"}},
}
labels["class 7 strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs, which retained their reduplication in the past tense in Proto-Germanic.",
breadcrumb = "class 7",
parents = {{name = "strong verbs", sort = "7"}},
}
labels["class 7a strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ai'' in Proto-Germanic, analogous to class 1.",
breadcrumb = "class 7a",
parents = {{name = "class 7 strong verbs", sort = "a"}},
}
labels["class 7b strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*au'' in Proto-Germanic, analogous to class 2.",
breadcrumb = "class 7b",
parents = {{name = "class 7 strong verbs", sort = "b"}},
}
labels["class 7c strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*a'' followed by a [[consonant cluster]] in Proto-Germanic, analogous to class 3.",
breadcrumb = "class 7c",
parents = {{name = "class 7 strong verbs", sort = "c"}},
}
labels["class 7d strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ē'' in Proto-Germanic.",
breadcrumb = "class 7d",
parents = {{name = "class 7 strong verbs", sort = "d"}},
}
labels["class 7e strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ō'' in Proto-Germanic.",
breadcrumb = "class 7e",
parents = {{name = "class 7 strong verbs", sort = "e"}},
}
labels["class 7 strong j-present verbs"] = {
description = "{{{langname}}} class 7 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 7 strong verbs", sort = "j-present"}},
}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
return {LABELS = labels}
88k7sky1bf589e9xdsynl8pwglofaen
233697
228757
2026-05-09T04:15:34Z
Lee
19
[[:en:Module:category_tree/fam/gem]] වෙතින් එක් සංශෝධනයක්
228757
Scribunto
text/plain
local labels = {}
------- GERMANIC VERB CLASSES -------
labels["strong verbs"] = {
description = "{{{langname}}} verbs that do not use a dental suffix to mark the past tense and past participle, instead using vowel change ([[ablaut]]) and often a suffix ''-(e)n'' in the past participle.",
breadcrumb = "strong",
parents = {"verbs by inflection type"},
}
labels["weak verbs"] = {
description = "{{{langname}}} verbs that display dental suffixes in their past tense conjugated forms.",
breadcrumb = "weak",
parents = {"verbs by inflection type"},
}
labels["preterite-present verbs"] = {
description = "{{{langname}}} verbs that inflect in the present tense like the past tense of strong verbs.",
breadcrumb = "preterite-present",
parents = {"verbs by inflection type"},
}
labels["class 1 strong verbs"] = {
description = "{{{langname}}} class 1 strong verbs, where the [[ablaut]] vowel was followed by ''-y-'' in Proto-Indo-European.",
breadcrumb = "class 1",
parents = {{name = "strong verbs", sort = "1"}},
}
labels["class 1 weak verbs"] = {
description = "{{{langname}}} class 1 weak verbs, where the stem was followed by {{ic|/i/~/j/}} in Proto-Germanic (or {{ic|/ij/}} after a heavy stem, due to {{w|Sievers' Law}}).",
additional = "This triggered [[umlaut]] in most daughter languages, as well as gemination of the final consonant in light stems in West Germanic.",
breadcrumb = "class 1",
parents = {{name = "weak verbs", sort = "1"}},
}
labels["class 1 weak j-present verbs"] = {
description = "{{{langname}}} class 1 weak verbs with {{ic|/i/~/j/~/ij/}} in Proto-Germanic only in the present tense, but not elsewhere.",
additional = "Most class 1 weak verbs had {{ic|/i/}} in the past tense and past participle, leading to " ..
"[[umlaut]] throughout the verb in daughter languages with umlaut. A few archaic verbs, however, lacked " ..
"this [[interfix]], with the [[dental]] consonant of the ending attached directly to the stem. Original " ..
"instances of this are the reflexes of English [[seek]], [[think]], [[buy]] and [[work]], with apparently " ..
"irregular pasts ''sought'', ''thought'', ''bought'' and archaic ''wrought'', and it was often extended " ..
"to other verbs in various daughter languages (e.g. the [[Old English]] reflexes of [[sell]], [[tell]], " ..
"[[teach]] and formerly [[reach]], with apparently irregular pasts ''sold'', ''told'', ''taught'' and " ..
"now-obsolete ''raught''). The apparent reversal of umlaut in the past tense is sometimes called " ..
"{{m|de|Rückumlaut|lit=backwards umlaut}} in Germanic studies.",
breadcrumb = "''j''-present",
parents = {{name = "class 1 weak verbs", sort = "j-present"}},
}
labels["class 1 weak heavy-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a heavy stem in Proto-Germanic, i.e. a stem containing a long vowel or ending in two consonants.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/ij/}} between the stem and endings " ..
"in the present tense, which evolved differently from light-stem verbs in most daughter languages, which " ..
"had an interfix {{ic|/i/~/j/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "heavy-stem",
parents = "class 1 weak verbs",
}
labels["class 1 weak light-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a light stem in Proto-Germanic, i.e. a stem containing a short vowel and ending in only one consonant.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/i/~/j/}} between the stem and " ..
"endings in the present tense, which evolved differently from heavy-stem verbs in most daughter languages, " ..
"which had an interfix {{ic|/ij/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "light-stem",
parents = "class 1 weak verbs",
}
labels["class 2 strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs, where the [[ablaut]] vowel was followed by ''-w-'' in Proto-Indo-European.",
breadcrumb = "class 2",
parents = {{name = "strong verbs", sort = "2"}},
}
labels["class 2a strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*eu'' in Proto-Germanic.",
breadcrumb = "class 2a",
parents = {{name = "class 2 strong verbs", sort = "1"}},
}
labels["class 2b strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*ū'' in Proto-Germanic.",
breadcrumb = "class 2b",
parents = {{name = "class 2 strong verbs", sort = "2"}},
}
labels["class 2 weak verbs"] = {
description = "{{{langname}}} class 2 weak verbs, where the stem was followed by ''*ō'' in Proto-Germanic.",
breadcrumb = "class 2",
parents = {{name = "weak verbs", sort = "2"}},
}
labels["class 3 weak verbs"] = {
description = "{{{langname}}} class 3 weak verbs, where the stem was followed by ''*ai''~''*ā'' in Proto-Germanic, which was generalized to ''*ē'' in West Germanic.",
breadcrumb = "class 3",
parents = {{name = "weak verbs", sort = "3"}},
}
labels["class 3 strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs, where the [[ablaut]] vowel was followed by a [[consonant cluster]] in Proto-Indo-European.",
breadcrumb = "class 3",
parents = {{name = "strong verbs", sort = "3"}},
}
labels["class 3a strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a nasal consonant.",
breadcrumb = "class 3a",
parents = {{name = "class 3 strong verbs", sort = "1"}},
}
labels["class 3b strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a lateral consonant or velar fricative.",
breadcrumb = "class 3b",
parents = {{name = "class 3 strong verbs", sort = "2"}},
}
labels["class 3c strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a rhotic consonant.",
breadcrumb = "class 3c",
parents = {{name = "class 3 strong verbs", sort = "3"}},
}
labels["class 4 strong verbs"] = {
description = "{{{langname}}} class 4 strong verbs, where the [[ablaut]] vowel was followed by a [[sonorant]] (''m'', ''n'', ''l'', ''r'') but no other consonant in Proto-Indo-European.",
breadcrumb = "class 4",
parents = {{name = "strong verbs", sort = "4"}},
}
labels["class 4 weak verbs"] = {
description = "{{{langname}}} class 4 weak verbs, where the stem was followed by ''*n'' in Proto-Germanic.",
breadcrumb = "class 4",
parents = {{name = "weak verbs", sort = "4"}},
}
labels["class 5 strong verbs"] = {
description = "{{{langname}}} class 5 strong verbs, where the [[ablaut]] vowel was followed by [[consonant]] other than a [[sonorant]] in Proto-Indo-European.",
breadcrumb = "class 5",
parents = {{name = "strong verbs", sort = "5"}},
}
labels["class 5 strong j-present verbs"] = {
description = "{{{langname}}} class 5 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This [[umlaut]]ed the root vowel to {{ic|/i/}}, and caused gemination of the stem-final consonant in the West Germanic languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 5 strong verbs", sort = "j-present"}},
}
labels["class 6 strong verbs"] = {
description = "{{{langname}}} class 6 strong verbs, with the stem vowel ''-a-'' (and usually a single stem-final consonant), 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).",
additional = "The Proto-Indo-European origin of this class is not securely known.",
breadcrumb = "class 6",
parents = {{name = "strong verbs", sort = "6"}},
}
labels["class 6 strong j-present verbs"] = {
description = "{{{langname}}} class 6 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused gemination of the stem-final consonant in the West Germanic languages, and [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 6 strong verbs", sort = "j-present"}},
}
labels["class 7 strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs, which retained their reduplication in the past tense in Proto-Germanic.",
breadcrumb = "class 7",
parents = {{name = "strong verbs", sort = "7"}},
}
labels["class 7a strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ai'' in Proto-Germanic, analogous to class 1.",
breadcrumb = "class 7a",
parents = {{name = "class 7 strong verbs", sort = "a"}},
}
labels["class 7b strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*au'' in Proto-Germanic, analogous to class 2.",
breadcrumb = "class 7b",
parents = {{name = "class 7 strong verbs", sort = "b"}},
}
labels["class 7c strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*a'' followed by a [[consonant cluster]] in Proto-Germanic, analogous to class 3.",
breadcrumb = "class 7c",
parents = {{name = "class 7 strong verbs", sort = "c"}},
}
labels["class 7d strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ē'' in Proto-Germanic.",
breadcrumb = "class 7d",
parents = {{name = "class 7 strong verbs", sort = "d"}},
}
labels["class 7e strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ō'' in Proto-Germanic.",
breadcrumb = "class 7e",
parents = {{name = "class 7 strong verbs", sort = "e"}},
}
labels["class 7 strong j-present verbs"] = {
description = "{{{langname}}} class 7 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 7 strong verbs", sort = "j-present"}},
}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
return {LABELS = labels}
88k7sky1bf589e9xdsynl8pwglofaen
233698
233697
2026-05-09T04:16:44Z
Lee
19
"verbs by inflection type" සිට "ක්රියා පද, වරනැගීම් වර්ගය අනුව" වෙතට
233698
Scribunto
text/plain
local labels = {}
------- GERMANIC VERB CLASSES -------
labels["strong verbs"] = {
description = "{{{langname}}} verbs that do not use a dental suffix to mark the past tense and past participle, instead using vowel change ([[ablaut]]) and often a suffix ''-(e)n'' in the past participle.",
breadcrumb = "strong",
parents = {"ක්රියා පද, වරනැගීම් වර්ගය අනුව"},
}
labels["weak verbs"] = {
description = "{{{langname}}} verbs that display dental suffixes in their past tense conjugated forms.",
breadcrumb = "weak",
parents = {"ක්රියා පද, වරනැගීම් වර්ගය අනුව"},
}
labels["preterite-present verbs"] = {
description = "{{{langname}}} verbs that inflect in the present tense like the past tense of strong verbs.",
breadcrumb = "preterite-present",
parents = {"ක්රියා පද, වරනැගීම් වර්ගය අනුව"},
}
labels["class 1 strong verbs"] = {
description = "{{{langname}}} class 1 strong verbs, where the [[ablaut]] vowel was followed by ''-y-'' in Proto-Indo-European.",
breadcrumb = "class 1",
parents = {{name = "strong verbs", sort = "1"}},
}
labels["class 1 weak verbs"] = {
description = "{{{langname}}} class 1 weak verbs, where the stem was followed by {{ic|/i/~/j/}} in Proto-Germanic (or {{ic|/ij/}} after a heavy stem, due to {{w|Sievers' Law}}).",
additional = "This triggered [[umlaut]] in most daughter languages, as well as gemination of the final consonant in light stems in West Germanic.",
breadcrumb = "class 1",
parents = {{name = "weak verbs", sort = "1"}},
}
labels["class 1 weak j-present verbs"] = {
description = "{{{langname}}} class 1 weak verbs with {{ic|/i/~/j/~/ij/}} in Proto-Germanic only in the present tense, but not elsewhere.",
additional = "Most class 1 weak verbs had {{ic|/i/}} in the past tense and past participle, leading to " ..
"[[umlaut]] throughout the verb in daughter languages with umlaut. A few archaic verbs, however, lacked " ..
"this [[interfix]], with the [[dental]] consonant of the ending attached directly to the stem. Original " ..
"instances of this are the reflexes of English [[seek]], [[think]], [[buy]] and [[work]], with apparently " ..
"irregular pasts ''sought'', ''thought'', ''bought'' and archaic ''wrought'', and it was often extended " ..
"to other verbs in various daughter languages (e.g. the [[Old English]] reflexes of [[sell]], [[tell]], " ..
"[[teach]] and formerly [[reach]], with apparently irregular pasts ''sold'', ''told'', ''taught'' and " ..
"now-obsolete ''raught''). The apparent reversal of umlaut in the past tense is sometimes called " ..
"{{m|de|Rückumlaut|lit=backwards umlaut}} in Germanic studies.",
breadcrumb = "''j''-present",
parents = {{name = "class 1 weak verbs", sort = "j-present"}},
}
labels["class 1 weak heavy-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a heavy stem in Proto-Germanic, i.e. a stem containing a long vowel or ending in two consonants.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/ij/}} between the stem and endings " ..
"in the present tense, which evolved differently from light-stem verbs in most daughter languages, which " ..
"had an interfix {{ic|/i/~/j/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "heavy-stem",
parents = "class 1 weak verbs",
}
labels["class 1 weak light-stem verbs"] = {
description = "{{{langname}}} class 1 weak verbs with a light stem in Proto-Germanic, i.e. a stem containing a short vowel and ending in only one consonant.",
additional = "Such verbs had the {{w|Sievers' Law}} variant interfix {{ic|/i/~/j/}} between the stem and " ..
"endings in the present tense, which evolved differently from heavy-stem verbs in most daughter languages, " ..
"which had an interfix {{ic|/ij/}} in the present tense. Note that some verbs with multisyllabic stems were " ..
"treated as heavy-stem and some as light-stem, depending on the analysis of the metrical feet of the stem.",
breadcrumb_and_first_sort_key = "light-stem",
parents = "class 1 weak verbs",
}
labels["class 2 strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs, where the [[ablaut]] vowel was followed by ''-w-'' in Proto-Indo-European.",
breadcrumb = "class 2",
parents = {{name = "strong verbs", sort = "2"}},
}
labels["class 2a strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*eu'' in Proto-Germanic.",
breadcrumb = "class 2a",
parents = {{name = "class 2 strong verbs", sort = "1"}},
}
labels["class 2b strong verbs"] = {
description = "{{{langname}}} class 2 strong verbs where the [[ablaut]] vowel was ''*ū'' in Proto-Germanic.",
breadcrumb = "class 2b",
parents = {{name = "class 2 strong verbs", sort = "2"}},
}
labels["class 2 weak verbs"] = {
description = "{{{langname}}} class 2 weak verbs, where the stem was followed by ''*ō'' in Proto-Germanic.",
breadcrumb = "class 2",
parents = {{name = "weak verbs", sort = "2"}},
}
labels["class 3 weak verbs"] = {
description = "{{{langname}}} class 3 weak verbs, where the stem was followed by ''*ai''~''*ā'' in Proto-Germanic, which was generalized to ''*ē'' in West Germanic.",
breadcrumb = "class 3",
parents = {{name = "weak verbs", sort = "3"}},
}
labels["class 3 strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs, where the [[ablaut]] vowel was followed by a [[consonant cluster]] in Proto-Indo-European.",
breadcrumb = "class 3",
parents = {{name = "strong verbs", sort = "3"}},
}
labels["class 3a strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a nasal consonant.",
breadcrumb = "class 3a",
parents = {{name = "class 3 strong verbs", sort = "1"}},
}
labels["class 3b strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a lateral consonant or velar fricative.",
breadcrumb = "class 3b",
parents = {{name = "class 3 strong verbs", sort = "2"}},
}
labels["class 3c strong verbs"] = {
description = "{{{langname}}} class 3 strong verbs where the [[consonant cluster]] following the [[ablaut]] vowel begins with a rhotic consonant.",
breadcrumb = "class 3c",
parents = {{name = "class 3 strong verbs", sort = "3"}},
}
labels["class 4 strong verbs"] = {
description = "{{{langname}}} class 4 strong verbs, where the [[ablaut]] vowel was followed by a [[sonorant]] (''m'', ''n'', ''l'', ''r'') but no other consonant in Proto-Indo-European.",
breadcrumb = "class 4",
parents = {{name = "strong verbs", sort = "4"}},
}
labels["class 4 weak verbs"] = {
description = "{{{langname}}} class 4 weak verbs, where the stem was followed by ''*n'' in Proto-Germanic.",
breadcrumb = "class 4",
parents = {{name = "weak verbs", sort = "4"}},
}
labels["class 5 strong verbs"] = {
description = "{{{langname}}} class 5 strong verbs, where the [[ablaut]] vowel was followed by [[consonant]] other than a [[sonorant]] in Proto-Indo-European.",
breadcrumb = "class 5",
parents = {{name = "strong verbs", sort = "5"}},
}
labels["class 5 strong j-present verbs"] = {
description = "{{{langname}}} class 5 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This [[umlaut]]ed the root vowel to {{ic|/i/}}, and caused gemination of the stem-final consonant in the West Germanic languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 5 strong verbs", sort = "j-present"}},
}
labels["class 6 strong verbs"] = {
description = "{{{langname}}} class 6 strong verbs, with the stem vowel ''-a-'' (and usually a single stem-final consonant), 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).",
additional = "The Proto-Indo-European origin of this class is not securely known.",
breadcrumb = "class 6",
parents = {{name = "strong verbs", sort = "6"}},
}
labels["class 6 strong j-present verbs"] = {
description = "{{{langname}}} class 6 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused gemination of the stem-final consonant in the West Germanic languages, and [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 6 strong verbs", sort = "j-present"}},
}
labels["class 7 strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs, which retained their reduplication in the past tense in Proto-Germanic.",
breadcrumb = "class 7",
parents = {{name = "strong verbs", sort = "7"}},
}
labels["class 7a strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ai'' in Proto-Germanic, analogous to class 1.",
breadcrumb = "class 7a",
parents = {{name = "class 7 strong verbs", sort = "a"}},
}
labels["class 7b strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*au'' in Proto-Germanic, analogous to class 2.",
breadcrumb = "class 7b",
parents = {{name = "class 7 strong verbs", sort = "b"}},
}
labels["class 7c strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*a'' followed by a [[consonant cluster]] in Proto-Germanic, analogous to class 3.",
breadcrumb = "class 7c",
parents = {{name = "class 7 strong verbs", sort = "c"}},
}
labels["class 7d strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ē'' in Proto-Germanic.",
breadcrumb = "class 7d",
parents = {{name = "class 7 strong verbs", sort = "d"}},
}
labels["class 7e strong verbs"] = {
description = "{{{langname}}} class 7 strong verbs where the root vowel was ''*ō'' in Proto-Germanic.",
breadcrumb = "class 7e",
parents = {{name = "class 7 strong verbs", sort = "e"}},
}
labels["class 7 strong j-present verbs"] = {
description = "{{{langname}}} class 7 strong verbs with a {{IPAchar|/j/}} suffix in the present tense in Proto-Germanic.",
additional = "This caused [[umlaut]] of the root vowel in most languages. The {{ic|/j/}} was maintained in Gothic, Old Norse (and modern Icelandic) and Old Saxon, but otherwise dropped.",
breadcrumb = "''j''-present",
parents = {{name = "class 7 strong verbs", sort = "j-present"}},
}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
return {LABELS = labels}
dsdkw7s7gnv61e47fjlsiqjc2vz6u52
Module:category tree/fam/jpx
828
140957
233691
228759
2026-04-11T01:46:26Z
en>Shlyst
0
unify Japanese's what_categorizes_msg [[Module:category tree/fam/jpx/what-categorizes-msg]]
233691
Scribunto
text/plain
local labels = {}
local handlers = {}
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local full_link = require("Module:links").full_link
local insert = table.insert
local Hani_sort = require("Module:Hani-sortkey").makeSortKey
local match = m_str_utils.match
local sort = table.sort
local tag_text = require("Module:script_utilities").tag_text
local ucfirst = m_str_utils.ucfirst
local Hira = require("Module:scripts").getByCode("Hira")
local Jpan = require("Module:scripts").getByCode("Jpan")
local kana_to_romaji = require("Module:Hrkt-translit").tr
local m_numeric = require("Module:ConvertNumeric")
local kana_capture = "([-" .. require("Module:ja/data/range").kana .. "・]+)"
local yomi_data = require("Module:kanjitab/data")
labels["adnominals"] = {
description = "{{{langname}}} adnominals, or {{ja-r|連%体%詞|れん%たい%し}}, which modify nouns, and do not conjugate or [[predicate#Verb|predicate]].",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["hiragana"] = {
description = "{{{langname}}} terms with hiragana {{mdash}} {{ja-r|平%仮%名|ひら%が%な}} {{mdash}} forms, sorted by conventional hiragana sequence. The hiragana form is a [[phonetic]] representation of that word. " ..
"Wiktionary represents {{{langname}}}-language segments in three ways: in normal form (with [[kanji]], if appropriate), in [[hiragana]] " ..
"form (this differs from kanji form only when the segment contains kanji), and in [[romaji]] form.",
additional = "''See also'' [[:Category:{{{langname}}} katakana]]",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["historical hiragana"] = {
description = "{{{langname}}} historical [[hiragana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical katakana]].",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
"hiragana",
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["katakana"] = {
description = "{{{langname}}} terms with katakana {{mdash}} {{ja-r|片%仮%名|かた%か%な}} {{mdash}} forms, sorted by conventional katakana sequence. Katakana is used primarily for transliterations of foreign words, including old Chinese hanzi not used in [[shinjitai]].",
additional = "''See also'' [[:Category:{{{langname}}} hiragana]]",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["historical katakana"] = {
description = "{{{langname}}} historical [[katakana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical hiragana]].",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
"katakana",
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["terms spelled with mixed kana"] = {
description = "{{{langname}}} terms which combine [[hiragana]] and [[katakana]] characters, potentially with [[kanji]] too.",
parents = {
{name = "{{{langcat}}}", raw = true},
"hiragana",
"katakana",
},
}
labels["kanji"] = {
topright = "{{wp|Kanji}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
toc_template = "Hani-categoryTOC",
umbrella = "Han characters",
parents = "logograms",
}
labels["kanji by reading"] = {
description = "{{{langname}}} kanji categorized by reading.",
parents = {{name = "kanji", sort = "reading"}},
}
labels["makurakotoba"] = {
topright = "{{wp|Makurakotoba}}",
description = "{{{langname}}} idioms used in poetry to introduce specific words.",
parents = {"idioms"},
}
labels["terms by kanji readings"] = {
description = "{{{langname}}} categories grouped with regard to the readings of the kanji with which they are spelled.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by reading pattern"] = {
description = "{{{langname}}} categories with terms grouped by their reading patterns.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by number of kanji"] = {
description = "{{{langname}}} terms categorized by number of kanji.",
parents = {"terms by orthographic property"},
}
local function handle_onyomi_list(category, category_type, cat_yomi_type)
local onyomi, seen = {}, {}
for _, yomi in pairs(yomi_data) do
if not seen[yomi] and yomi.onyomi then
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
if yomi_type ~= "on'yomi" and yomi_type ~= cat_yomi_type then
insert(onyomi, "[[:Category:{{{langname}}} " .. category:gsub("{{{yomi_catname}}}", yomi_catname) .. "]]")
end
end
end
seen[yomi] = true
end
sort(onyomi)
return onyomi
end
local function add_yomi_category(category, category_type, parent, description)
for _, yomi in pairs(yomi_data) do
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
local yomi_desc = yomi.link or yomi_catname
if yomi.description then
yomi_desc = yomi_desc .. "; " .. yomi.description
end
local label = {
description = description .. " " .. yomi_desc .. ".",
breadcrumb = yomi_type,
parents = {{name = parent, sort = yomi_catname}},
}
if yomi.onyomi then
local onyomi = handle_onyomi_list(category, category_type, yomi_type)
label.additional = "Categories of terms with " ..
(yomi_type == "on'yomi" and "more" or "other") ..
" specific types of on'yomi readings can be found in the following categories:\n* " .. concat(onyomi, "\n* ")
if yomi_type ~= "on'yomi" then
insert(label.parents, 1, {
name = (category:gsub("{{{yomi_catname}}}", yomi_data.on[category_type])),
sort = yomi_catname
})
end
end
labels[category:gsub("{{{yomi_catname}}}", yomi_catname)] = label
end
end
end
add_yomi_category(
"terms read with {{{yomi_catname}}}",
"reading_category",
"terms by reading pattern",
"{{{langname}}} terms read with"
)
add_yomi_category(
"terms spelled with kanji with {{{yomi_catname}}} readings",
"kanji_category",
"terms by kanji reading type",
"{{{langname}}} categories with terms that are spelled with one or more kanji read with"
)
labels["terms with missing yomi"] = {
description = "{{{langname}}} terms where at least one [[Appendix:Japanese glossary#yomi|yomi]] is missing from {{tl|{{{langcode}}}-kanjitab}}.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms with IPA pronunciation with pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that have {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
can_be_empty = true,
parents = {"entry maintenance", "pitch accent"},
}
labels["terms with IPA pronunciation missing pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that do not have a {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["pitch accent"] = {
description = "{{{langname}}} terms regarding {{w|Japanese pitch accent|pitch accent}} pronunciation.",
can_be_empty = true,
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms with Heiban pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[平板型|Heiban]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Atamadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[頭高型|Atamadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Nakadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with complex pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) complex {{w|Japanese pitch accent|pitch accent}}, as in having more than one {{m|ja|アクセント句}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["pitch accent deaccenting before の"] = {
description = "{{{langname}}} terms with {{w|Japanese pitch accent|pitch accent}} pronunciations that have exceptional deaccenting or lack thereof before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent not deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}} and do not become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms with Nakadaka pitch accent deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}} and become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms by kanji reading type"] = {
description = "{{{langname}}} categories with terms grouped with regard to the types of readings of the kanji with which " ..
"they are spelled; broadly, those of Chinese origin, {{ja-r|音|おん}} readings, and those of non-Chinese origin, {{ja-r|訓|くん}} readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with ateji"] = {
topright = "{{wp|Ateji}}",
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#ateji|ateji]] {{mdash}} {{ja-r|当て字|あてじ}} {{mdash}} which are [[kanji]] used to represent sounds rather than meanings (though meaning may have some influence on which kanji are chosen).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with daiyōji"] = {
description = "Japanese terms spelled using [[Appendix:Japanese glossary#daiyouji|daiyōji]], categorized using {{temp|ja-daiyouji}}.",
parents = {"terms by etymology"},
}
labels["terms spelled with jukujikun"] = {
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#jukujikun|jukujikun]] {{mdash}} {{ja-r|熟%字%訓|じゅく%じ%くん}} {{mdash}} which are [[kanji]] used to represent meanings rather than sounds.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
local function add_grade_categories(grade, desc, wp, only_one, parent, sort)
local grade_kanji = grade .. " kanji"
local topright = wp and ("{{wp|%s}}"):format(ucfirst(grade_kanji)) or nil
labels[grade_kanji] = {
topright = topright,
description = "{{{langname}}} kanji " .. desc,
toc_template = "Hani-categoryTOC",
parents = {{
name = parent and (parent .. " kanji") or "kanji",
sort = sort or grade
}},
}
labels["terms spelled with " .. grade_kanji] = {
topright = topright,
description = "{{{langname}}} terms spelled with " .. (only_one and "at least one " or "") .. "kanji " .. desc,
parents = {{
name = parent and ("terms spelled with " .. parent .. " kanji") or "terms by orthographic property",
sort = sort or grade
}},
}
end
for i = 1, 6 do
local ord = m_numeric.ones_position_ord[i]
add_grade_categories(
ord .. " grade",
"taught in the " .. ord .. " grade of elementary school, as designated by the the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
false,
false,
"kyōiku",
i
)
end
add_grade_categories(
"kyōiku",
"on the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
true,
false,
"jōyō"
)
add_grade_categories(
"secondary school",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} that are generally taught in secondary school.",
false,
false,
"jōyō"
)
add_grade_categories(
"jōyō",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"tōyō",
"on the official list of {{ja-r|当%用 漢%字|とう%よう かん%じ|general-use characters}}, which was used from 1946{{ndash}}1981 until the publication of the list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"jinmeiyō",
"on the official list of {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}.",
true,
true
)
add_grade_categories(
"hyōgai",
"not included on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} or {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}, known as {{ja-r|表%外 漢%字|ひょう%がい かん%じ}} or {{ja-r|表%外%字|ひょう%がい%じ|unlisted characters}}.",
true,
true
)
labels["terms with multiple readings"] = {
description = "{{{langname}}} terms with multiple pronunciations (hence multiple [[kana]] spellings).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["kanji readings by number of morae"] = {
description = "{{{langname}}} categories grouped with regard to the number of morae in their kanji readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["single-kanji terms"] = {
description = "{{{langname}}} terms written as a single kanji.",
parents = {
"terms by orthographic property",
{name = "terms with 1 kanji", sort = " "},
},
}
labels["kanji with kun readings missing okurigana designation"] = {
breadcrumb = "Kanji missing okurigana designation",
description = "{{{langname}}} kanji entries in which one or more kun readings entered into {{tl|{{{langcode}}}-readings}} is missing a hyphen denoting okurigana.",
toc_template = "Hani-categoryTOC",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms by the individual characters in their historical spellings"] = {
breadcrumb = "Historical",
description = "{{{langname}}} terms categorized by whether their spellings in the {{w|historical kana orthography}} included certain individual characters.",
parents = {{name = "terms by their individual characters", sort = " "}},
}
labels["verbs without transitivity"] = {
description = "{{{langname}}} verbs missing the {{code|=tr=}} parameter from their headword templates.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["yojijukugo"] = {
topright = "{{wp|Yojijukugo}}",
description = "{{{langname}}} four-[[kanji]] compound terms, {{ja-r|四%字 熟%語|よ%じ じゅく%ご}}, with idiomatic meanings; typically derived from Classical Chinese, Buddhist scripture or traditional Japanese proverbs.",
additional = "Compare Chinese {{w|chengyu}} and Korean {{w|sajaseong-eo}}.",
umbrella = "four-character idioms",
parents = {"idioms"},
}
-- FIXME: Only works for 0 through 19.
local word_to_number = {}
for k, v in pairs(m_numeric.ones_position) do
word_to_number[v] = k
end
local periods = {
historical = true,
ancient = true,
}
local function get_period_text_and_reading_type_link(period, reading_type)
if period and not periods[period] then
return nil
end
local period_text = period and period .. " " or nil
-- Allow periods (historical or ancient) by themselves; they will parse as reading types.
if not period and periods[reading_type] then
return nil, reading_type
end
local reading_type_link = "[[Appendix:Japanese glossary#" .. reading_type .. "|" .. reading_type .. "]]"
return period_text, reading_type_link
end
local function get_sc(str)
return match(str:gsub("[%s%p]+", ""), "[^" .. Hira:getCharacters() .. "]") and Jpan or Hira
end
local function get_tagged_reading(reading, lang)
return tag_text(reading, lang, get_sc(reading))
end
local function get_reading_link(reading, lang, period, link)
local hist = periods[period]
reading = reading:gsub("[%.%-%s]+", "")
return full_link({
lang = lang,
sc = get_sc(reading),
term = link or reading:gsub("・", ""),
-- If we have okurigana, demarcate furigana.
alt = reading:gsub("^(.-)・", "<span style=\"border-top:1px solid;position:relative;padding:1px;\">%1<span style=\"position:absolute;top:0;bottom:67%%;right:0%%;border-right:1px solid;\"></span></span>"),
tr = kana_to_romaji((reading:gsub("・", ".")), lang:getCode(), nil, {keep_dot = true, hist = hist})
:gsub("^(.-)%.", "<u>%1</u>"),
pos = reading:find("・", 1, true) and get_tagged_reading((reading:gsub("^.-・", "~")), lang) or nil
}, "term")
end
local function is_on_subtype(reading_type)
return reading_type:find(".on$")
end
insert(handlers, function(data)
local n =data.label:match("^terms with ([1-9]%d*) kanji$")
if not n then
return
end
local sortkey = require("Module:category tree").numeral_sortkey(n, 2097152)
return {
breadcrumb = n,
description = ("{{{langname}}} terms containing exactly %d kanji."):format(n),
-- TODO: implement this using the same mechanism used to implement parents (i.e. avoiding the need for raw categories).
-- umbrella = {
-- breadcrumb = ("%d kanji"):format(n),
-- parents = {{name = "terms by number of kanji subcategories by language", sort = sortkey}},
-- },
parents = {{name = ("terms by number of kanji"), sort = sortkey}}
}
end)
insert(handlers, function(data)
local label_pref, kana = data.label:match("^(terms historically spelled with )" .. kana_capture .. "$")
if not kana then
return
end
local lang = data.lang
return {
description = "{{{langname}}} terms spelled with " .. get_reading_link(kana, lang, "historical") .. " in the {{w|historical kana orthography}}.",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(kana, lang),
breadcrumb = "historical",
parents = {
{name = "terms spelled with " .. kana, sort = " "},
{name = "terms by the individual characters in their historical spellings", sort = lang:makeSortKey(kana)}
},
umbrella = false,
}
end)
insert(handlers, function(data)
local count, plural = data.label:match("^kanji readings with (.+) mora(e?)$")
-- Make sure 'one' goes with singular and other numbers with plural.
if not count or (count == "one") ~= (plural == "") then
return
end
local num = word_to_number[count]
if not num then
return nil
end
return {
description = "{{{langname}}} kanji readings containing " .. count .. " mora" .. plural .. ".",
breadcrumb = num,
parents = {{name = "kanji readings by number of morae", sort = num}},
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, period, reading_type, reading = match(data.label, "^(kanji with ([a-z]-) ?([%a']+) reading )" .. kana_capture .. "$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return
end
local lang = data.lang
-- Compute parents.
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji with " .. (period_text or "") .. reading_type .. " reading " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by " .. (period_text or "") .. reading_type .. " reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
if is_on_subtype(reading_type) then
insert(parents, {name = "kanji with " .. (period_text or "") .. "on reading " .. reading, sort = reading_type})
elseif period_text then
insert(parents, {name = "kanji with " .. period_text .. "reading " .. reading, sort = reading_type})
end
if not period_text then
insert(parents, {name = "kanji read as " .. reading, sort = reading_type})
end
return {
description = "{{{langname}}} [[kanji]] with the " .. (period_text or "") .. reading_type_link .. " reading " ..
get_reading_link(reading, lang, period or reading_type) .. ".",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local period, reading_type = match(data.label, "^kanji by ([a-z]-) ?([%a']+) reading$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return nil
end
-- Compute parents.
local parents = {
is_on_subtype(reading_type) and {name = "kanji by " .. (period_text or "") .. "on reading", sort = reading_type} or
period_text and {name = "kanji by " .. reading_type .. " reading", sort = period} or
{name = "kanji by reading", sort = reading_type}
}
if period_text then
insert(parents, {name = "kanji by " .. period_text .. "reading", sort = reading_type})
end
-- Compute description.
local description = "{{{langname}}} [[kanji]] categorized by " .. (period_text or "") .. reading_type_link .. " reading."
return {
description = description,
breadcrumb = (period_text or "") .. reading_type,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
local args = require("Module:parameters").process(data.args, {
["histconsol"] = true,
})
local lang = data.lang
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji read as " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
local addl
local period_text
if args.histconsol then
period_text = "historical"
addl = ("This is a [[Wikipedia:Historical kana orthography|historical]] [[Wikipedia:Kanazukai|reading]], now " ..
"consolidated with the [[Wikipedia:Modern kana usage|modern reading]] of " ..
get_reading_link(args.histconsol, lang, nil, ("Category:Japanese kanji read as %s"):format(args.histconsol)) .. ".")
end
return {
description = "{{{langname}}} [[kanji]] read as " .. get_reading_link(reading, lang, period_text) .. ".",
additional = addl,
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(terms spelled with kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
-- Compute parents.
local lang = data.lang
local sort_key = (lang:makeSortKey(reading))
local mora_count = require("Module:ja").count_morae(reading)
local mora_count_words = m_numeric.spell_number(tostring(mora_count))
local parents = {
{name = "terms by kanji readings", sort = sort_key},
{name = "kanji readings with " .. mora_count_words .. " mora" .. (mora_count > 1 and "e" or ""), sort = sort_key},
{name = "kanji read as " .. reading, sort = " "},
}
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms that contain kanji that exhibit a reading of " .. get_reading_link(reading, lang) ..
" in those terms prior to any sound changes.",
displaytitle = "{{{langname}}} " .. label_pref .. tagged_reading,
breadcrumb = tagged_reading,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local kanji, reading = match(data.label, "^terms spelled with (.) read as " .. kana_capture .. "$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms spelled with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types, parents = {}, {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
insert(parents, {
name = "terms spelled with kanji with " .. category .. " readings",
sort = (lang:makeSortKey(reading))
})
end
insert(parents, 1, {name = "terms spelled with " .. kanji, sort = (lang:makeSortKey(reading))})
insert(parents, 2, {name = "terms spelled with kanji read as " .. reading, sort = Hani_sort(kanji)})
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms spelled with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. ".",
displaytitle = "{{{langname}}} terms spelled with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. tagged_reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local affix, kanji, reading = data.label:match("^terms ([a-z]+fix)ed with (.+) read as " .. kana_capture .. "$")
if not affix or not kanji or not reading then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms AFFIXed with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types = {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
end
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local description = "{{{langname}}} terms " .. affix .. "ed with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. "."
local what_categorizes_msg =
require("Module:category tree/fam/jpx/what-categorizes-msg")
.get_what_categorizes_msg(kanji, reading, affix)
if what_categorizes_msg then
description = description .. "\n\n" .. what_categorizes_msg
end
local parents = {}
table.insert(parents, {name = "terms " .. affix .. "ed with " .. kanji, sort = (lang:makeSortKey(reading))})
if mw.title.new("Category:" .. lang:getCanonicalName() .. " terms spelled with " .. kanji .. " read as " .. reading).exists then
table.insert(parents, {name = "terms spelled with " .. kanji .. " read as " .. reading, sort = (lang:makeSortKey(reading)), args=data.args})
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = description,
displaytitle = "{{{langname}}} terms " .. affix .. "ed with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local kanji, daiyoji = match(data.label, "^terms with (.) replaced by daiyōji (.)$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
["sort"] = true,
})
local lang = data.lang
if not args.sort then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms with KANJI replaced by daiyōji DAIYOJI\", the sort key must be specified using sort=")
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_daiyoji = get_tagged_reading(daiyoji, lang)
return {
description = "{{{langname}}} terms with {{l|{{{langcode}}}|" .. kanji .. "}} replaced by [[Appendix:Japanese glossary#daiyouji|daiyōji]] {{l|{{{langcode}}}|" .. daiyoji .. "}}.",
displaytitle = "{{{langname}}} terms with " .. tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
breadcrumb = tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
parents = {{name = "terms spelled with daiyōji", sort = args.sort}},
umbrella = false,
}, true
end)
return {LABELS = labels, HANDLERS = handlers}
dlvs7dvr2dnet8gus8uhzdgzuc7ngwh
233692
233691
2026-05-09T04:12:50Z
Lee
19
[[:en:Module:category_tree/fam/jpx]] වෙතින් එක් සංශෝධනයක්
233691
Scribunto
text/plain
local labels = {}
local handlers = {}
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local full_link = require("Module:links").full_link
local insert = table.insert
local Hani_sort = require("Module:Hani-sortkey").makeSortKey
local match = m_str_utils.match
local sort = table.sort
local tag_text = require("Module:script_utilities").tag_text
local ucfirst = m_str_utils.ucfirst
local Hira = require("Module:scripts").getByCode("Hira")
local Jpan = require("Module:scripts").getByCode("Jpan")
local kana_to_romaji = require("Module:Hrkt-translit").tr
local m_numeric = require("Module:ConvertNumeric")
local kana_capture = "([-" .. require("Module:ja/data/range").kana .. "・]+)"
local yomi_data = require("Module:kanjitab/data")
labels["adnominals"] = {
description = "{{{langname}}} adnominals, or {{ja-r|連%体%詞|れん%たい%し}}, which modify nouns, and do not conjugate or [[predicate#Verb|predicate]].",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["hiragana"] = {
description = "{{{langname}}} terms with hiragana {{mdash}} {{ja-r|平%仮%名|ひら%が%な}} {{mdash}} forms, sorted by conventional hiragana sequence. The hiragana form is a [[phonetic]] representation of that word. " ..
"Wiktionary represents {{{langname}}}-language segments in three ways: in normal form (with [[kanji]], if appropriate), in [[hiragana]] " ..
"form (this differs from kanji form only when the segment contains kanji), and in [[romaji]] form.",
additional = "''See also'' [[:Category:{{{langname}}} katakana]]",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["historical hiragana"] = {
description = "{{{langname}}} historical [[hiragana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical katakana]].",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
"hiragana",
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["katakana"] = {
description = "{{{langname}}} terms with katakana {{mdash}} {{ja-r|片%仮%名|かた%か%な}} {{mdash}} forms, sorted by conventional katakana sequence. Katakana is used primarily for transliterations of foreign words, including old Chinese hanzi not used in [[shinjitai]].",
additional = "''See also'' [[:Category:{{{langname}}} hiragana]]",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["historical katakana"] = {
description = "{{{langname}}} historical [[katakana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical hiragana]].",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
"katakana",
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["terms spelled with mixed kana"] = {
description = "{{{langname}}} terms which combine [[hiragana]] and [[katakana]] characters, potentially with [[kanji]] too.",
parents = {
{name = "{{{langcat}}}", raw = true},
"hiragana",
"katakana",
},
}
labels["kanji"] = {
topright = "{{wp|Kanji}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
toc_template = "Hani-categoryTOC",
umbrella = "Han characters",
parents = "logograms",
}
labels["kanji by reading"] = {
description = "{{{langname}}} kanji categorized by reading.",
parents = {{name = "kanji", sort = "reading"}},
}
labels["makurakotoba"] = {
topright = "{{wp|Makurakotoba}}",
description = "{{{langname}}} idioms used in poetry to introduce specific words.",
parents = {"idioms"},
}
labels["terms by kanji readings"] = {
description = "{{{langname}}} categories grouped with regard to the readings of the kanji with which they are spelled.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by reading pattern"] = {
description = "{{{langname}}} categories with terms grouped by their reading patterns.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by number of kanji"] = {
description = "{{{langname}}} terms categorized by number of kanji.",
parents = {"terms by orthographic property"},
}
local function handle_onyomi_list(category, category_type, cat_yomi_type)
local onyomi, seen = {}, {}
for _, yomi in pairs(yomi_data) do
if not seen[yomi] and yomi.onyomi then
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
if yomi_type ~= "on'yomi" and yomi_type ~= cat_yomi_type then
insert(onyomi, "[[:Category:{{{langname}}} " .. category:gsub("{{{yomi_catname}}}", yomi_catname) .. "]]")
end
end
end
seen[yomi] = true
end
sort(onyomi)
return onyomi
end
local function add_yomi_category(category, category_type, parent, description)
for _, yomi in pairs(yomi_data) do
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
local yomi_desc = yomi.link or yomi_catname
if yomi.description then
yomi_desc = yomi_desc .. "; " .. yomi.description
end
local label = {
description = description .. " " .. yomi_desc .. ".",
breadcrumb = yomi_type,
parents = {{name = parent, sort = yomi_catname}},
}
if yomi.onyomi then
local onyomi = handle_onyomi_list(category, category_type, yomi_type)
label.additional = "Categories of terms with " ..
(yomi_type == "on'yomi" and "more" or "other") ..
" specific types of on'yomi readings can be found in the following categories:\n* " .. concat(onyomi, "\n* ")
if yomi_type ~= "on'yomi" then
insert(label.parents, 1, {
name = (category:gsub("{{{yomi_catname}}}", yomi_data.on[category_type])),
sort = yomi_catname
})
end
end
labels[category:gsub("{{{yomi_catname}}}", yomi_catname)] = label
end
end
end
add_yomi_category(
"terms read with {{{yomi_catname}}}",
"reading_category",
"terms by reading pattern",
"{{{langname}}} terms read with"
)
add_yomi_category(
"terms spelled with kanji with {{{yomi_catname}}} readings",
"kanji_category",
"terms by kanji reading type",
"{{{langname}}} categories with terms that are spelled with one or more kanji read with"
)
labels["terms with missing yomi"] = {
description = "{{{langname}}} terms where at least one [[Appendix:Japanese glossary#yomi|yomi]] is missing from {{tl|{{{langcode}}}-kanjitab}}.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms with IPA pronunciation with pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that have {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
can_be_empty = true,
parents = {"entry maintenance", "pitch accent"},
}
labels["terms with IPA pronunciation missing pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that do not have a {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["pitch accent"] = {
description = "{{{langname}}} terms regarding {{w|Japanese pitch accent|pitch accent}} pronunciation.",
can_be_empty = true,
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms with Heiban pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[平板型|Heiban]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Atamadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[頭高型|Atamadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Nakadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with complex pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) complex {{w|Japanese pitch accent|pitch accent}}, as in having more than one {{m|ja|アクセント句}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["pitch accent deaccenting before の"] = {
description = "{{{langname}}} terms with {{w|Japanese pitch accent|pitch accent}} pronunciations that have exceptional deaccenting or lack thereof before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent not deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}} and do not become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms with Nakadaka pitch accent deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}} and become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms by kanji reading type"] = {
description = "{{{langname}}} categories with terms grouped with regard to the types of readings of the kanji with which " ..
"they are spelled; broadly, those of Chinese origin, {{ja-r|音|おん}} readings, and those of non-Chinese origin, {{ja-r|訓|くん}} readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with ateji"] = {
topright = "{{wp|Ateji}}",
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#ateji|ateji]] {{mdash}} {{ja-r|当て字|あてじ}} {{mdash}} which are [[kanji]] used to represent sounds rather than meanings (though meaning may have some influence on which kanji are chosen).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with daiyōji"] = {
description = "Japanese terms spelled using [[Appendix:Japanese glossary#daiyouji|daiyōji]], categorized using {{temp|ja-daiyouji}}.",
parents = {"terms by etymology"},
}
labels["terms spelled with jukujikun"] = {
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#jukujikun|jukujikun]] {{mdash}} {{ja-r|熟%字%訓|じゅく%じ%くん}} {{mdash}} which are [[kanji]] used to represent meanings rather than sounds.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
local function add_grade_categories(grade, desc, wp, only_one, parent, sort)
local grade_kanji = grade .. " kanji"
local topright = wp and ("{{wp|%s}}"):format(ucfirst(grade_kanji)) or nil
labels[grade_kanji] = {
topright = topright,
description = "{{{langname}}} kanji " .. desc,
toc_template = "Hani-categoryTOC",
parents = {{
name = parent and (parent .. " kanji") or "kanji",
sort = sort or grade
}},
}
labels["terms spelled with " .. grade_kanji] = {
topright = topright,
description = "{{{langname}}} terms spelled with " .. (only_one and "at least one " or "") .. "kanji " .. desc,
parents = {{
name = parent and ("terms spelled with " .. parent .. " kanji") or "terms by orthographic property",
sort = sort or grade
}},
}
end
for i = 1, 6 do
local ord = m_numeric.ones_position_ord[i]
add_grade_categories(
ord .. " grade",
"taught in the " .. ord .. " grade of elementary school, as designated by the the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
false,
false,
"kyōiku",
i
)
end
add_grade_categories(
"kyōiku",
"on the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
true,
false,
"jōyō"
)
add_grade_categories(
"secondary school",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} that are generally taught in secondary school.",
false,
false,
"jōyō"
)
add_grade_categories(
"jōyō",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"tōyō",
"on the official list of {{ja-r|当%用 漢%字|とう%よう かん%じ|general-use characters}}, which was used from 1946{{ndash}}1981 until the publication of the list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"jinmeiyō",
"on the official list of {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}.",
true,
true
)
add_grade_categories(
"hyōgai",
"not included on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} or {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}, known as {{ja-r|表%外 漢%字|ひょう%がい かん%じ}} or {{ja-r|表%外%字|ひょう%がい%じ|unlisted characters}}.",
true,
true
)
labels["terms with multiple readings"] = {
description = "{{{langname}}} terms with multiple pronunciations (hence multiple [[kana]] spellings).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["kanji readings by number of morae"] = {
description = "{{{langname}}} categories grouped with regard to the number of morae in their kanji readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["single-kanji terms"] = {
description = "{{{langname}}} terms written as a single kanji.",
parents = {
"terms by orthographic property",
{name = "terms with 1 kanji", sort = " "},
},
}
labels["kanji with kun readings missing okurigana designation"] = {
breadcrumb = "Kanji missing okurigana designation",
description = "{{{langname}}} kanji entries in which one or more kun readings entered into {{tl|{{{langcode}}}-readings}} is missing a hyphen denoting okurigana.",
toc_template = "Hani-categoryTOC",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms by the individual characters in their historical spellings"] = {
breadcrumb = "Historical",
description = "{{{langname}}} terms categorized by whether their spellings in the {{w|historical kana orthography}} included certain individual characters.",
parents = {{name = "terms by their individual characters", sort = " "}},
}
labels["verbs without transitivity"] = {
description = "{{{langname}}} verbs missing the {{code|=tr=}} parameter from their headword templates.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["yojijukugo"] = {
topright = "{{wp|Yojijukugo}}",
description = "{{{langname}}} four-[[kanji]] compound terms, {{ja-r|四%字 熟%語|よ%じ じゅく%ご}}, with idiomatic meanings; typically derived from Classical Chinese, Buddhist scripture or traditional Japanese proverbs.",
additional = "Compare Chinese {{w|chengyu}} and Korean {{w|sajaseong-eo}}.",
umbrella = "four-character idioms",
parents = {"idioms"},
}
-- FIXME: Only works for 0 through 19.
local word_to_number = {}
for k, v in pairs(m_numeric.ones_position) do
word_to_number[v] = k
end
local periods = {
historical = true,
ancient = true,
}
local function get_period_text_and_reading_type_link(period, reading_type)
if period and not periods[period] then
return nil
end
local period_text = period and period .. " " or nil
-- Allow periods (historical or ancient) by themselves; they will parse as reading types.
if not period and periods[reading_type] then
return nil, reading_type
end
local reading_type_link = "[[Appendix:Japanese glossary#" .. reading_type .. "|" .. reading_type .. "]]"
return period_text, reading_type_link
end
local function get_sc(str)
return match(str:gsub("[%s%p]+", ""), "[^" .. Hira:getCharacters() .. "]") and Jpan or Hira
end
local function get_tagged_reading(reading, lang)
return tag_text(reading, lang, get_sc(reading))
end
local function get_reading_link(reading, lang, period, link)
local hist = periods[period]
reading = reading:gsub("[%.%-%s]+", "")
return full_link({
lang = lang,
sc = get_sc(reading),
term = link or reading:gsub("・", ""),
-- If we have okurigana, demarcate furigana.
alt = reading:gsub("^(.-)・", "<span style=\"border-top:1px solid;position:relative;padding:1px;\">%1<span style=\"position:absolute;top:0;bottom:67%%;right:0%%;border-right:1px solid;\"></span></span>"),
tr = kana_to_romaji((reading:gsub("・", ".")), lang:getCode(), nil, {keep_dot = true, hist = hist})
:gsub("^(.-)%.", "<u>%1</u>"),
pos = reading:find("・", 1, true) and get_tagged_reading((reading:gsub("^.-・", "~")), lang) or nil
}, "term")
end
local function is_on_subtype(reading_type)
return reading_type:find(".on$")
end
insert(handlers, function(data)
local n =data.label:match("^terms with ([1-9]%d*) kanji$")
if not n then
return
end
local sortkey = require("Module:category tree").numeral_sortkey(n, 2097152)
return {
breadcrumb = n,
description = ("{{{langname}}} terms containing exactly %d kanji."):format(n),
-- TODO: implement this using the same mechanism used to implement parents (i.e. avoiding the need for raw categories).
-- umbrella = {
-- breadcrumb = ("%d kanji"):format(n),
-- parents = {{name = "terms by number of kanji subcategories by language", sort = sortkey}},
-- },
parents = {{name = ("terms by number of kanji"), sort = sortkey}}
}
end)
insert(handlers, function(data)
local label_pref, kana = data.label:match("^(terms historically spelled with )" .. kana_capture .. "$")
if not kana then
return
end
local lang = data.lang
return {
description = "{{{langname}}} terms spelled with " .. get_reading_link(kana, lang, "historical") .. " in the {{w|historical kana orthography}}.",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(kana, lang),
breadcrumb = "historical",
parents = {
{name = "terms spelled with " .. kana, sort = " "},
{name = "terms by the individual characters in their historical spellings", sort = lang:makeSortKey(kana)}
},
umbrella = false,
}
end)
insert(handlers, function(data)
local count, plural = data.label:match("^kanji readings with (.+) mora(e?)$")
-- Make sure 'one' goes with singular and other numbers with plural.
if not count or (count == "one") ~= (plural == "") then
return
end
local num = word_to_number[count]
if not num then
return nil
end
return {
description = "{{{langname}}} kanji readings containing " .. count .. " mora" .. plural .. ".",
breadcrumb = num,
parents = {{name = "kanji readings by number of morae", sort = num}},
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, period, reading_type, reading = match(data.label, "^(kanji with ([a-z]-) ?([%a']+) reading )" .. kana_capture .. "$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return
end
local lang = data.lang
-- Compute parents.
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji with " .. (period_text or "") .. reading_type .. " reading " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by " .. (period_text or "") .. reading_type .. " reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
if is_on_subtype(reading_type) then
insert(parents, {name = "kanji with " .. (period_text or "") .. "on reading " .. reading, sort = reading_type})
elseif period_text then
insert(parents, {name = "kanji with " .. period_text .. "reading " .. reading, sort = reading_type})
end
if not period_text then
insert(parents, {name = "kanji read as " .. reading, sort = reading_type})
end
return {
description = "{{{langname}}} [[kanji]] with the " .. (period_text or "") .. reading_type_link .. " reading " ..
get_reading_link(reading, lang, period or reading_type) .. ".",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local period, reading_type = match(data.label, "^kanji by ([a-z]-) ?([%a']+) reading$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return nil
end
-- Compute parents.
local parents = {
is_on_subtype(reading_type) and {name = "kanji by " .. (period_text or "") .. "on reading", sort = reading_type} or
period_text and {name = "kanji by " .. reading_type .. " reading", sort = period} or
{name = "kanji by reading", sort = reading_type}
}
if period_text then
insert(parents, {name = "kanji by " .. period_text .. "reading", sort = reading_type})
end
-- Compute description.
local description = "{{{langname}}} [[kanji]] categorized by " .. (period_text or "") .. reading_type_link .. " reading."
return {
description = description,
breadcrumb = (period_text or "") .. reading_type,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
local args = require("Module:parameters").process(data.args, {
["histconsol"] = true,
})
local lang = data.lang
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji read as " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
local addl
local period_text
if args.histconsol then
period_text = "historical"
addl = ("This is a [[Wikipedia:Historical kana orthography|historical]] [[Wikipedia:Kanazukai|reading]], now " ..
"consolidated with the [[Wikipedia:Modern kana usage|modern reading]] of " ..
get_reading_link(args.histconsol, lang, nil, ("Category:Japanese kanji read as %s"):format(args.histconsol)) .. ".")
end
return {
description = "{{{langname}}} [[kanji]] read as " .. get_reading_link(reading, lang, period_text) .. ".",
additional = addl,
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(terms spelled with kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
-- Compute parents.
local lang = data.lang
local sort_key = (lang:makeSortKey(reading))
local mora_count = require("Module:ja").count_morae(reading)
local mora_count_words = m_numeric.spell_number(tostring(mora_count))
local parents = {
{name = "terms by kanji readings", sort = sort_key},
{name = "kanji readings with " .. mora_count_words .. " mora" .. (mora_count > 1 and "e" or ""), sort = sort_key},
{name = "kanji read as " .. reading, sort = " "},
}
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms that contain kanji that exhibit a reading of " .. get_reading_link(reading, lang) ..
" in those terms prior to any sound changes.",
displaytitle = "{{{langname}}} " .. label_pref .. tagged_reading,
breadcrumb = tagged_reading,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local kanji, reading = match(data.label, "^terms spelled with (.) read as " .. kana_capture .. "$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms spelled with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types, parents = {}, {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
insert(parents, {
name = "terms spelled with kanji with " .. category .. " readings",
sort = (lang:makeSortKey(reading))
})
end
insert(parents, 1, {name = "terms spelled with " .. kanji, sort = (lang:makeSortKey(reading))})
insert(parents, 2, {name = "terms spelled with kanji read as " .. reading, sort = Hani_sort(kanji)})
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms spelled with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. ".",
displaytitle = "{{{langname}}} terms spelled with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. tagged_reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local affix, kanji, reading = data.label:match("^terms ([a-z]+fix)ed with (.+) read as " .. kana_capture .. "$")
if not affix or not kanji or not reading then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms AFFIXed with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types = {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
end
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local description = "{{{langname}}} terms " .. affix .. "ed with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. "."
local what_categorizes_msg =
require("Module:category tree/fam/jpx/what-categorizes-msg")
.get_what_categorizes_msg(kanji, reading, affix)
if what_categorizes_msg then
description = description .. "\n\n" .. what_categorizes_msg
end
local parents = {}
table.insert(parents, {name = "terms " .. affix .. "ed with " .. kanji, sort = (lang:makeSortKey(reading))})
if mw.title.new("Category:" .. lang:getCanonicalName() .. " terms spelled with " .. kanji .. " read as " .. reading).exists then
table.insert(parents, {name = "terms spelled with " .. kanji .. " read as " .. reading, sort = (lang:makeSortKey(reading)), args=data.args})
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = description,
displaytitle = "{{{langname}}} terms " .. affix .. "ed with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local kanji, daiyoji = match(data.label, "^terms with (.) replaced by daiyōji (.)$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
["sort"] = true,
})
local lang = data.lang
if not args.sort then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms with KANJI replaced by daiyōji DAIYOJI\", the sort key must be specified using sort=")
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_daiyoji = get_tagged_reading(daiyoji, lang)
return {
description = "{{{langname}}} terms with {{l|{{{langcode}}}|" .. kanji .. "}} replaced by [[Appendix:Japanese glossary#daiyouji|daiyōji]] {{l|{{{langcode}}}|" .. daiyoji .. "}}.",
displaytitle = "{{{langname}}} terms with " .. tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
breadcrumb = tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
parents = {{name = "terms spelled with daiyōji", sort = args.sort}},
umbrella = false,
}, true
end)
return {LABELS = labels, HANDLERS = handlers}
dlvs7dvr2dnet8gus8uhzdgzuc7ngwh
233693
233692
2026-05-09T04:14:11Z
Lee
19
"logograms" සිට "ලෝගෝග්රෑම" වෙතට
233693
Scribunto
text/plain
local labels = {}
local handlers = {}
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local full_link = require("Module:links").full_link
local insert = table.insert
local Hani_sort = require("Module:Hani-sortkey").makeSortKey
local match = m_str_utils.match
local sort = table.sort
local tag_text = require("Module:script_utilities").tag_text
local ucfirst = m_str_utils.ucfirst
local Hira = require("Module:scripts").getByCode("Hira")
local Jpan = require("Module:scripts").getByCode("Jpan")
local kana_to_romaji = require("Module:Hrkt-translit").tr
local m_numeric = require("Module:ConvertNumeric")
local kana_capture = "([-" .. require("Module:ja/data/range").kana .. "・]+)"
local yomi_data = require("Module:kanjitab/data")
labels["adnominals"] = {
description = "{{{langname}}} adnominals, or {{ja-r|連%体%詞|れん%たい%し}}, which modify nouns, and do not conjugate or [[predicate#Verb|predicate]].",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["hiragana"] = {
description = "{{{langname}}} terms with hiragana {{mdash}} {{ja-r|平%仮%名|ひら%が%な}} {{mdash}} forms, sorted by conventional hiragana sequence. The hiragana form is a [[phonetic]] representation of that word. " ..
"Wiktionary represents {{{langname}}}-language segments in three ways: in normal form (with [[kanji]], if appropriate), in [[hiragana]] " ..
"form (this differs from kanji form only when the segment contains kanji), and in [[romaji]] form.",
additional = "''See also'' [[:Category:{{{langname}}} katakana]]",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["historical hiragana"] = {
description = "{{{langname}}} historical [[hiragana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical katakana]].",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
"hiragana",
{name = "{{{langcat}}}", raw = true},
"Category:Hiragana script characters",
}
}
labels["katakana"] = {
description = "{{{langname}}} terms with katakana {{mdash}} {{ja-r|片%仮%名|かた%か%な}} {{mdash}} forms, sorted by conventional katakana sequence. Katakana is used primarily for transliterations of foreign words, including old Chinese hanzi not used in [[shinjitai]].",
additional = "''See also'' [[:Category:{{{langname}}} hiragana]]",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["historical katakana"] = {
description = "{{{langname}}} historical [[katakana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical hiragana]].",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
"katakana",
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["terms spelled with mixed kana"] = {
description = "{{{langname}}} terms which combine [[hiragana]] and [[katakana]] characters, potentially with [[kanji]] too.",
parents = {
{name = "{{{langcat}}}", raw = true},
"hiragana",
"katakana",
},
}
labels["kanji"] = {
topright = "{{wp|Kanji}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
toc_template = "Hani-categoryTOC",
umbrella = "Han characters",
parents = "ලෝගෝග්රෑම",
}
labels["kanji by reading"] = {
description = "{{{langname}}} kanji categorized by reading.",
parents = {{name = "kanji", sort = "reading"}},
}
labels["makurakotoba"] = {
topright = "{{wp|Makurakotoba}}",
description = "{{{langname}}} idioms used in poetry to introduce specific words.",
parents = {"idioms"},
}
labels["terms by kanji readings"] = {
description = "{{{langname}}} categories grouped with regard to the readings of the kanji with which they are spelled.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by reading pattern"] = {
description = "{{{langname}}} categories with terms grouped by their reading patterns.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by number of kanji"] = {
description = "{{{langname}}} terms categorized by number of kanji.",
parents = {"terms by orthographic property"},
}
local function handle_onyomi_list(category, category_type, cat_yomi_type)
local onyomi, seen = {}, {}
for _, yomi in pairs(yomi_data) do
if not seen[yomi] and yomi.onyomi then
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
if yomi_type ~= "on'yomi" and yomi_type ~= cat_yomi_type then
insert(onyomi, "[[:Category:{{{langname}}} " .. category:gsub("{{{yomi_catname}}}", yomi_catname) .. "]]")
end
end
end
seen[yomi] = true
end
sort(onyomi)
return onyomi
end
local function add_yomi_category(category, category_type, parent, description)
for _, yomi in pairs(yomi_data) do
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
local yomi_desc = yomi.link or yomi_catname
if yomi.description then
yomi_desc = yomi_desc .. "; " .. yomi.description
end
local label = {
description = description .. " " .. yomi_desc .. ".",
breadcrumb = yomi_type,
parents = {{name = parent, sort = yomi_catname}},
}
if yomi.onyomi then
local onyomi = handle_onyomi_list(category, category_type, yomi_type)
label.additional = "Categories of terms with " ..
(yomi_type == "on'yomi" and "more" or "other") ..
" specific types of on'yomi readings can be found in the following categories:\n* " .. concat(onyomi, "\n* ")
if yomi_type ~= "on'yomi" then
insert(label.parents, 1, {
name = (category:gsub("{{{yomi_catname}}}", yomi_data.on[category_type])),
sort = yomi_catname
})
end
end
labels[category:gsub("{{{yomi_catname}}}", yomi_catname)] = label
end
end
end
add_yomi_category(
"terms read with {{{yomi_catname}}}",
"reading_category",
"terms by reading pattern",
"{{{langname}}} terms read with"
)
add_yomi_category(
"terms spelled with kanji with {{{yomi_catname}}} readings",
"kanji_category",
"terms by kanji reading type",
"{{{langname}}} categories with terms that are spelled with one or more kanji read with"
)
labels["terms with missing yomi"] = {
description = "{{{langname}}} terms where at least one [[Appendix:Japanese glossary#yomi|yomi]] is missing from {{tl|{{{langcode}}}-kanjitab}}.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms with IPA pronunciation with pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that have {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
can_be_empty = true,
parents = {"entry maintenance", "pitch accent"},
}
labels["terms with IPA pronunciation missing pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that do not have a {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["pitch accent"] = {
description = "{{{langname}}} terms regarding {{w|Japanese pitch accent|pitch accent}} pronunciation.",
can_be_empty = true,
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms with Heiban pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[平板型|Heiban]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Atamadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[頭高型|Atamadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Nakadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with complex pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) complex {{w|Japanese pitch accent|pitch accent}}, as in having more than one {{m|ja|アクセント句}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["pitch accent deaccenting before の"] = {
description = "{{{langname}}} terms with {{w|Japanese pitch accent|pitch accent}} pronunciations that have exceptional deaccenting or lack thereof before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent not deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}} and do not become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms with Nakadaka pitch accent deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}} and become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms by kanji reading type"] = {
description = "{{{langname}}} categories with terms grouped with regard to the types of readings of the kanji with which " ..
"they are spelled; broadly, those of Chinese origin, {{ja-r|音|おん}} readings, and those of non-Chinese origin, {{ja-r|訓|くん}} readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with ateji"] = {
topright = "{{wp|Ateji}}",
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#ateji|ateji]] {{mdash}} {{ja-r|当て字|あてじ}} {{mdash}} which are [[kanji]] used to represent sounds rather than meanings (though meaning may have some influence on which kanji are chosen).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with daiyōji"] = {
description = "Japanese terms spelled using [[Appendix:Japanese glossary#daiyouji|daiyōji]], categorized using {{temp|ja-daiyouji}}.",
parents = {"terms by etymology"},
}
labels["terms spelled with jukujikun"] = {
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#jukujikun|jukujikun]] {{mdash}} {{ja-r|熟%字%訓|じゅく%じ%くん}} {{mdash}} which are [[kanji]] used to represent meanings rather than sounds.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
local function add_grade_categories(grade, desc, wp, only_one, parent, sort)
local grade_kanji = grade .. " kanji"
local topright = wp and ("{{wp|%s}}"):format(ucfirst(grade_kanji)) or nil
labels[grade_kanji] = {
topright = topright,
description = "{{{langname}}} kanji " .. desc,
toc_template = "Hani-categoryTOC",
parents = {{
name = parent and (parent .. " kanji") or "kanji",
sort = sort or grade
}},
}
labels["terms spelled with " .. grade_kanji] = {
topright = topright,
description = "{{{langname}}} terms spelled with " .. (only_one and "at least one " or "") .. "kanji " .. desc,
parents = {{
name = parent and ("terms spelled with " .. parent .. " kanji") or "terms by orthographic property",
sort = sort or grade
}},
}
end
for i = 1, 6 do
local ord = m_numeric.ones_position_ord[i]
add_grade_categories(
ord .. " grade",
"taught in the " .. ord .. " grade of elementary school, as designated by the the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
false,
false,
"kyōiku",
i
)
end
add_grade_categories(
"kyōiku",
"on the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
true,
false,
"jōyō"
)
add_grade_categories(
"secondary school",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} that are generally taught in secondary school.",
false,
false,
"jōyō"
)
add_grade_categories(
"jōyō",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"tōyō",
"on the official list of {{ja-r|当%用 漢%字|とう%よう かん%じ|general-use characters}}, which was used from 1946{{ndash}}1981 until the publication of the list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"jinmeiyō",
"on the official list of {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}.",
true,
true
)
add_grade_categories(
"hyōgai",
"not included on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} or {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}, known as {{ja-r|表%外 漢%字|ひょう%がい かん%じ}} or {{ja-r|表%外%字|ひょう%がい%じ|unlisted characters}}.",
true,
true
)
labels["terms with multiple readings"] = {
description = "{{{langname}}} terms with multiple pronunciations (hence multiple [[kana]] spellings).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["kanji readings by number of morae"] = {
description = "{{{langname}}} categories grouped with regard to the number of morae in their kanji readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["single-kanji terms"] = {
description = "{{{langname}}} terms written as a single kanji.",
parents = {
"terms by orthographic property",
{name = "terms with 1 kanji", sort = " "},
},
}
labels["kanji with kun readings missing okurigana designation"] = {
breadcrumb = "Kanji missing okurigana designation",
description = "{{{langname}}} kanji entries in which one or more kun readings entered into {{tl|{{{langcode}}}-readings}} is missing a hyphen denoting okurigana.",
toc_template = "Hani-categoryTOC",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms by the individual characters in their historical spellings"] = {
breadcrumb = "Historical",
description = "{{{langname}}} terms categorized by whether their spellings in the {{w|historical kana orthography}} included certain individual characters.",
parents = {{name = "terms by their individual characters", sort = " "}},
}
labels["verbs without transitivity"] = {
description = "{{{langname}}} verbs missing the {{code|=tr=}} parameter from their headword templates.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["yojijukugo"] = {
topright = "{{wp|Yojijukugo}}",
description = "{{{langname}}} four-[[kanji]] compound terms, {{ja-r|四%字 熟%語|よ%じ じゅく%ご}}, with idiomatic meanings; typically derived from Classical Chinese, Buddhist scripture or traditional Japanese proverbs.",
additional = "Compare Chinese {{w|chengyu}} and Korean {{w|sajaseong-eo}}.",
umbrella = "four-character idioms",
parents = {"idioms"},
}
-- FIXME: Only works for 0 through 19.
local word_to_number = {}
for k, v in pairs(m_numeric.ones_position) do
word_to_number[v] = k
end
local periods = {
historical = true,
ancient = true,
}
local function get_period_text_and_reading_type_link(period, reading_type)
if period and not periods[period] then
return nil
end
local period_text = period and period .. " " or nil
-- Allow periods (historical or ancient) by themselves; they will parse as reading types.
if not period and periods[reading_type] then
return nil, reading_type
end
local reading_type_link = "[[Appendix:Japanese glossary#" .. reading_type .. "|" .. reading_type .. "]]"
return period_text, reading_type_link
end
local function get_sc(str)
return match(str:gsub("[%s%p]+", ""), "[^" .. Hira:getCharacters() .. "]") and Jpan or Hira
end
local function get_tagged_reading(reading, lang)
return tag_text(reading, lang, get_sc(reading))
end
local function get_reading_link(reading, lang, period, link)
local hist = periods[period]
reading = reading:gsub("[%.%-%s]+", "")
return full_link({
lang = lang,
sc = get_sc(reading),
term = link or reading:gsub("・", ""),
-- If we have okurigana, demarcate furigana.
alt = reading:gsub("^(.-)・", "<span style=\"border-top:1px solid;position:relative;padding:1px;\">%1<span style=\"position:absolute;top:0;bottom:67%%;right:0%%;border-right:1px solid;\"></span></span>"),
tr = kana_to_romaji((reading:gsub("・", ".")), lang:getCode(), nil, {keep_dot = true, hist = hist})
:gsub("^(.-)%.", "<u>%1</u>"),
pos = reading:find("・", 1, true) and get_tagged_reading((reading:gsub("^.-・", "~")), lang) or nil
}, "term")
end
local function is_on_subtype(reading_type)
return reading_type:find(".on$")
end
insert(handlers, function(data)
local n =data.label:match("^terms with ([1-9]%d*) kanji$")
if not n then
return
end
local sortkey = require("Module:category tree").numeral_sortkey(n, 2097152)
return {
breadcrumb = n,
description = ("{{{langname}}} terms containing exactly %d kanji."):format(n),
-- TODO: implement this using the same mechanism used to implement parents (i.e. avoiding the need for raw categories).
-- umbrella = {
-- breadcrumb = ("%d kanji"):format(n),
-- parents = {{name = "terms by number of kanji subcategories by language", sort = sortkey}},
-- },
parents = {{name = ("terms by number of kanji"), sort = sortkey}}
}
end)
insert(handlers, function(data)
local label_pref, kana = data.label:match("^(terms historically spelled with )" .. kana_capture .. "$")
if not kana then
return
end
local lang = data.lang
return {
description = "{{{langname}}} terms spelled with " .. get_reading_link(kana, lang, "historical") .. " in the {{w|historical kana orthography}}.",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(kana, lang),
breadcrumb = "historical",
parents = {
{name = "terms spelled with " .. kana, sort = " "},
{name = "terms by the individual characters in their historical spellings", sort = lang:makeSortKey(kana)}
},
umbrella = false,
}
end)
insert(handlers, function(data)
local count, plural = data.label:match("^kanji readings with (.+) mora(e?)$")
-- Make sure 'one' goes with singular and other numbers with plural.
if not count or (count == "one") ~= (plural == "") then
return
end
local num = word_to_number[count]
if not num then
return nil
end
return {
description = "{{{langname}}} kanji readings containing " .. count .. " mora" .. plural .. ".",
breadcrumb = num,
parents = {{name = "kanji readings by number of morae", sort = num}},
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, period, reading_type, reading = match(data.label, "^(kanji with ([a-z]-) ?([%a']+) reading )" .. kana_capture .. "$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return
end
local lang = data.lang
-- Compute parents.
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji with " .. (period_text or "") .. reading_type .. " reading " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by " .. (period_text or "") .. reading_type .. " reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
if is_on_subtype(reading_type) then
insert(parents, {name = "kanji with " .. (period_text or "") .. "on reading " .. reading, sort = reading_type})
elseif period_text then
insert(parents, {name = "kanji with " .. period_text .. "reading " .. reading, sort = reading_type})
end
if not period_text then
insert(parents, {name = "kanji read as " .. reading, sort = reading_type})
end
return {
description = "{{{langname}}} [[kanji]] with the " .. (period_text or "") .. reading_type_link .. " reading " ..
get_reading_link(reading, lang, period or reading_type) .. ".",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local period, reading_type = match(data.label, "^kanji by ([a-z]-) ?([%a']+) reading$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return nil
end
-- Compute parents.
local parents = {
is_on_subtype(reading_type) and {name = "kanji by " .. (period_text or "") .. "on reading", sort = reading_type} or
period_text and {name = "kanji by " .. reading_type .. " reading", sort = period} or
{name = "kanji by reading", sort = reading_type}
}
if period_text then
insert(parents, {name = "kanji by " .. period_text .. "reading", sort = reading_type})
end
-- Compute description.
local description = "{{{langname}}} [[kanji]] categorized by " .. (period_text or "") .. reading_type_link .. " reading."
return {
description = description,
breadcrumb = (period_text or "") .. reading_type,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
local args = require("Module:parameters").process(data.args, {
["histconsol"] = true,
})
local lang = data.lang
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji read as " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
local addl
local period_text
if args.histconsol then
period_text = "historical"
addl = ("This is a [[Wikipedia:Historical kana orthography|historical]] [[Wikipedia:Kanazukai|reading]], now " ..
"consolidated with the [[Wikipedia:Modern kana usage|modern reading]] of " ..
get_reading_link(args.histconsol, lang, nil, ("Category:Japanese kanji read as %s"):format(args.histconsol)) .. ".")
end
return {
description = "{{{langname}}} [[kanji]] read as " .. get_reading_link(reading, lang, period_text) .. ".",
additional = addl,
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(terms spelled with kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
-- Compute parents.
local lang = data.lang
local sort_key = (lang:makeSortKey(reading))
local mora_count = require("Module:ja").count_morae(reading)
local mora_count_words = m_numeric.spell_number(tostring(mora_count))
local parents = {
{name = "terms by kanji readings", sort = sort_key},
{name = "kanji readings with " .. mora_count_words .. " mora" .. (mora_count > 1 and "e" or ""), sort = sort_key},
{name = "kanji read as " .. reading, sort = " "},
}
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms that contain kanji that exhibit a reading of " .. get_reading_link(reading, lang) ..
" in those terms prior to any sound changes.",
displaytitle = "{{{langname}}} " .. label_pref .. tagged_reading,
breadcrumb = tagged_reading,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local kanji, reading = match(data.label, "^terms spelled with (.) read as " .. kana_capture .. "$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms spelled with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types, parents = {}, {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
insert(parents, {
name = "terms spelled with kanji with " .. category .. " readings",
sort = (lang:makeSortKey(reading))
})
end
insert(parents, 1, {name = "terms spelled with " .. kanji, sort = (lang:makeSortKey(reading))})
insert(parents, 2, {name = "terms spelled with kanji read as " .. reading, sort = Hani_sort(kanji)})
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms spelled with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. ".",
displaytitle = "{{{langname}}} terms spelled with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. tagged_reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local affix, kanji, reading = data.label:match("^terms ([a-z]+fix)ed with (.+) read as " .. kana_capture .. "$")
if not affix or not kanji or not reading then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms AFFIXed with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types = {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
end
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local description = "{{{langname}}} terms " .. affix .. "ed with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. "."
local what_categorizes_msg =
require("Module:category tree/fam/jpx/what-categorizes-msg")
.get_what_categorizes_msg(kanji, reading, affix)
if what_categorizes_msg then
description = description .. "\n\n" .. what_categorizes_msg
end
local parents = {}
table.insert(parents, {name = "terms " .. affix .. "ed with " .. kanji, sort = (lang:makeSortKey(reading))})
if mw.title.new("Category:" .. lang:getCanonicalName() .. " terms spelled with " .. kanji .. " read as " .. reading).exists then
table.insert(parents, {name = "terms spelled with " .. kanji .. " read as " .. reading, sort = (lang:makeSortKey(reading)), args=data.args})
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = description,
displaytitle = "{{{langname}}} terms " .. affix .. "ed with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local kanji, daiyoji = match(data.label, "^terms with (.) replaced by daiyōji (.)$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
["sort"] = true,
})
local lang = data.lang
if not args.sort then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms with KANJI replaced by daiyōji DAIYOJI\", the sort key must be specified using sort=")
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_daiyoji = get_tagged_reading(daiyoji, lang)
return {
description = "{{{langname}}} terms with {{l|{{{langcode}}}|" .. kanji .. "}} replaced by [[Appendix:Japanese glossary#daiyouji|daiyōji]] {{l|{{{langcode}}}|" .. daiyoji .. "}}.",
displaytitle = "{{{langname}}} terms with " .. tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
breadcrumb = tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
parents = {{name = "terms spelled with daiyōji", sort = args.sort}},
umbrella = false,
}, true
end)
return {LABELS = labels, HANDLERS = handlers}
cf6itm81o9vmomrfgd787d7iuv625ad
233705
233693
2026-05-09T04:23:18Z
Lee
19
"Hiragana script characters" සිට "හිරගනා අක්ෂරක්රමය තුළ භාවිතා වන අනුලක්ෂණ" වෙතට
233705
Scribunto
text/plain
local labels = {}
local handlers = {}
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local full_link = require("Module:links").full_link
local insert = table.insert
local Hani_sort = require("Module:Hani-sortkey").makeSortKey
local match = m_str_utils.match
local sort = table.sort
local tag_text = require("Module:script_utilities").tag_text
local ucfirst = m_str_utils.ucfirst
local Hira = require("Module:scripts").getByCode("Hira")
local Jpan = require("Module:scripts").getByCode("Jpan")
local kana_to_romaji = require("Module:Hrkt-translit").tr
local m_numeric = require("Module:ConvertNumeric")
local kana_capture = "([-" .. require("Module:ja/data/range").kana .. "・]+)"
local yomi_data = require("Module:kanjitab/data")
labels["adnominals"] = {
description = "{{{langname}}} adnominals, or {{ja-r|連%体%詞|れん%たい%し}}, which modify nouns, and do not conjugate or [[predicate#Verb|predicate]].",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["hiragana"] = {
description = "{{{langname}}} terms with hiragana {{mdash}} {{ja-r|平%仮%名|ひら%が%な}} {{mdash}} forms, sorted by conventional hiragana sequence. The hiragana form is a [[phonetic]] representation of that word. " ..
"Wiktionary represents {{{langname}}}-language segments in three ways: in normal form (with [[kanji]], if appropriate), in [[hiragana]] " ..
"form (this differs from kanji form only when the segment contains kanji), and in [[romaji]] form.",
additional = "''See also'' [[:Category:{{{langname}}} katakana]]",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"ප්රවර්ගය:හිරගනා අක්ෂරක්රමය තුළ භාවිතා වන අනුලක්ෂණ",
}
}
labels["historical hiragana"] = {
description = "{{{langname}}} historical [[hiragana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical katakana]].",
toc_template = "Hira-categoryTOC",
toc_template_full = "Hira-categoryTOC/full",
parents = {
"hiragana",
{name = "{{{langcat}}}", raw = true},
"ප්රවර්ගය:හිරගනා අක්ෂරක්රමය තුළ භාවිතා වන අනුලක්ෂණ",
}
}
labels["katakana"] = {
description = "{{{langname}}} terms with katakana {{mdash}} {{ja-r|片%仮%名|かた%か%な}} {{mdash}} forms, sorted by conventional katakana sequence. Katakana is used primarily for transliterations of foreign words, including old Chinese hanzi not used in [[shinjitai]].",
additional = "''See also'' [[:Category:{{{langname}}} hiragana]]",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["historical katakana"] = {
description = "{{{langname}}} historical [[katakana]].",
additional = "''See also'' [[:Category:{{{langname}}} historical hiragana]].",
toc_template = "Kana-categoryTOC",
toc_template_full = "Kana-categoryTOC/full",
parents = {
"katakana",
{name = "{{{langcat}}}", raw = true},
"Category:Katakana script characters",
}
}
labels["terms spelled with mixed kana"] = {
description = "{{{langname}}} terms which combine [[hiragana]] and [[katakana]] characters, potentially with [[kanji]] too.",
parents = {
{name = "{{{langcat}}}", raw = true},
"hiragana",
"katakana",
},
}
labels["kanji"] = {
topright = "{{wp|Kanji}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
toc_template = "Hani-categoryTOC",
umbrella = "Han characters",
parents = "ලෝගෝග්රෑම",
}
labels["kanji by reading"] = {
description = "{{{langname}}} kanji categorized by reading.",
parents = {{name = "kanji", sort = "reading"}},
}
labels["makurakotoba"] = {
topright = "{{wp|Makurakotoba}}",
description = "{{{langname}}} idioms used in poetry to introduce specific words.",
parents = {"idioms"},
}
labels["terms by kanji readings"] = {
description = "{{{langname}}} categories grouped with regard to the readings of the kanji with which they are spelled.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by reading pattern"] = {
description = "{{{langname}}} categories with terms grouped by their reading patterns.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by number of kanji"] = {
description = "{{{langname}}} terms categorized by number of kanji.",
parents = {"terms by orthographic property"},
}
local function handle_onyomi_list(category, category_type, cat_yomi_type)
local onyomi, seen = {}, {}
for _, yomi in pairs(yomi_data) do
if not seen[yomi] and yomi.onyomi then
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
if yomi_type ~= "on'yomi" and yomi_type ~= cat_yomi_type then
insert(onyomi, "[[:Category:{{{langname}}} " .. category:gsub("{{{yomi_catname}}}", yomi_catname) .. "]]")
end
end
end
seen[yomi] = true
end
sort(onyomi)
return onyomi
end
local function add_yomi_category(category, category_type, parent, description)
for _, yomi in pairs(yomi_data) do
local yomi_catname = yomi[category_type]
if yomi_catname ~= false then
local yomi_type = yomi.type
local yomi_desc = yomi.link or yomi_catname
if yomi.description then
yomi_desc = yomi_desc .. "; " .. yomi.description
end
local label = {
description = description .. " " .. yomi_desc .. ".",
breadcrumb = yomi_type,
parents = {{name = parent, sort = yomi_catname}},
}
if yomi.onyomi then
local onyomi = handle_onyomi_list(category, category_type, yomi_type)
label.additional = "Categories of terms with " ..
(yomi_type == "on'yomi" and "more" or "other") ..
" specific types of on'yomi readings can be found in the following categories:\n* " .. concat(onyomi, "\n* ")
if yomi_type ~= "on'yomi" then
insert(label.parents, 1, {
name = (category:gsub("{{{yomi_catname}}}", yomi_data.on[category_type])),
sort = yomi_catname
})
end
end
labels[category:gsub("{{{yomi_catname}}}", yomi_catname)] = label
end
end
end
add_yomi_category(
"terms read with {{{yomi_catname}}}",
"reading_category",
"terms by reading pattern",
"{{{langname}}} terms read with"
)
add_yomi_category(
"terms spelled with kanji with {{{yomi_catname}}} readings",
"kanji_category",
"terms by kanji reading type",
"{{{langname}}} categories with terms that are spelled with one or more kanji read with"
)
labels["terms with missing yomi"] = {
description = "{{{langname}}} terms where at least one [[Appendix:Japanese glossary#yomi|yomi]] is missing from {{tl|{{{langcode}}}-kanjitab}}.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms with IPA pronunciation with pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that have {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
can_be_empty = true,
parents = {"entry maintenance", "pitch accent"},
}
labels["terms with IPA pronunciation missing pitch accent"] = {
description = "{{{langname}}} terms with pronunciations that do not have a {{w|Japanese pitch accent|pitch accent}} specified.",
additional = "Pitch accent can be specified in {{tl|{{{langcode}}}-pron}} with the {{code|=acc=}} parameter.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["pitch accent"] = {
description = "{{{langname}}} terms regarding {{w|Japanese pitch accent|pitch accent}} pronunciation.",
can_be_empty = true,
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms with Heiban pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[平板型|Heiban]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Atamadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[頭高型|Atamadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Nakadaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with complex pitch accent (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) complex {{w|Japanese pitch accent|pitch accent}}, as in having more than one {{m|ja|アクセント句}}.",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["pitch accent deaccenting before の"] = {
description = "{{{langname}}} terms with {{w|Japanese pitch accent|pitch accent}} pronunciations that have exceptional deaccenting or lack thereof before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent"}
}
labels["terms with Odaka pitch accent not deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[尾高型|Odaka]] {{w|Japanese pitch accent|pitch accent}} and do not become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms with Nakadaka pitch accent deaccented before の (Tōkyō)"] = {
description = "{{{langname}}} terms with pronunciations that are (Tōkyō) [[中高型|Nakadaka]] {{w|Japanese pitch accent|pitch accent}} and become deaccented before の ({{ja-deaccenting-before-no}}).",
can_be_empty = true,
parents = {"pitch accent deaccenting before の"}
}
labels["terms by kanji reading type"] = {
description = "{{{langname}}} categories with terms grouped with regard to the types of readings of the kanji with which " ..
"they are spelled; broadly, those of Chinese origin, {{ja-r|音|おん}} readings, and those of non-Chinese origin, {{ja-r|訓|くん}} readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with ateji"] = {
topright = "{{wp|Ateji}}",
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#ateji|ateji]] {{mdash}} {{ja-r|当て字|あてじ}} {{mdash}} which are [[kanji]] used to represent sounds rather than meanings (though meaning may have some influence on which kanji are chosen).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms spelled with daiyōji"] = {
description = "Japanese terms spelled using [[Appendix:Japanese glossary#daiyouji|daiyōji]], categorized using {{temp|ja-daiyouji}}.",
parents = {"terms by etymology"},
}
labels["terms spelled with jukujikun"] = {
description = "{{{langname}}} terms containing one or more [[Appendix:Japanese glossary#jukujikun|jukujikun]] {{mdash}} {{ja-r|熟%字%訓|じゅく%じ%くん}} {{mdash}} which are [[kanji]] used to represent meanings rather than sounds.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
local function add_grade_categories(grade, desc, wp, only_one, parent, sort)
local grade_kanji = grade .. " kanji"
local topright = wp and ("{{wp|%s}}"):format(ucfirst(grade_kanji)) or nil
labels[grade_kanji] = {
topright = topright,
description = "{{{langname}}} kanji " .. desc,
toc_template = "Hani-categoryTOC",
parents = {{
name = parent and (parent .. " kanji") or "kanji",
sort = sort or grade
}},
}
labels["terms spelled with " .. grade_kanji] = {
topright = topright,
description = "{{{langname}}} terms spelled with " .. (only_one and "at least one " or "") .. "kanji " .. desc,
parents = {{
name = parent and ("terms spelled with " .. parent .. " kanji") or "terms by orthographic property",
sort = sort or grade
}},
}
end
for i = 1, 6 do
local ord = m_numeric.ones_position_ord[i]
add_grade_categories(
ord .. " grade",
"taught in the " .. ord .. " grade of elementary school, as designated by the the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
false,
false,
"kyōiku",
i
)
end
add_grade_categories(
"kyōiku",
"on the official list of {{ja-r|教%育 漢%字|きょう%いく かん%じ|education kanji}}.",
true,
false,
"jōyō"
)
add_grade_categories(
"secondary school",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} that are generally taught in secondary school.",
false,
false,
"jōyō"
)
add_grade_categories(
"jōyō",
"on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"tōyō",
"on the official list of {{ja-r|当%用 漢%字|とう%よう かん%じ|general-use characters}}, which was used from 1946{{ndash}}1981 until the publication of the list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}}.",
true,
false
)
add_grade_categories(
"jinmeiyō",
"on the official list of {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}.",
true,
true
)
add_grade_categories(
"hyōgai",
"not included on the official list of {{ja-r|常%用 漢%字|じょう%よう かん%じ|regular-use characters}} or {{ja-r|人%名%用 漢%字|じん%めい%-よう かん%じ|kanji for use in personal names}}, known as {{ja-r|表%外 漢%字|ひょう%がい かん%じ}} or {{ja-r|表%外%字|ひょう%がい%じ|unlisted characters}}.",
true,
true
)
labels["terms with multiple readings"] = {
description = "{{{langname}}} terms with multiple pronunciations (hence multiple [[kana]] spellings).",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["kanji readings by number of morae"] = {
description = "{{{langname}}} categories grouped with regard to the number of morae in their kanji readings.",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["single-kanji terms"] = {
description = "{{{langname}}} terms written as a single kanji.",
parents = {
"terms by orthographic property",
{name = "terms with 1 kanji", sort = " "},
},
}
labels["kanji with kun readings missing okurigana designation"] = {
breadcrumb = "Kanji missing okurigana designation",
description = "{{{langname}}} kanji entries in which one or more kun readings entered into {{tl|{{{langcode}}}-readings}} is missing a hyphen denoting okurigana.",
toc_template = "Hani-categoryTOC",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["terms by the individual characters in their historical spellings"] = {
breadcrumb = "Historical",
description = "{{{langname}}} terms categorized by whether their spellings in the {{w|historical kana orthography}} included certain individual characters.",
parents = {{name = "terms by their individual characters", sort = " "}},
}
labels["verbs without transitivity"] = {
description = "{{{langname}}} verbs missing the {{code|=tr=}} parameter from their headword templates.",
hidden = true,
can_be_empty = true,
parents = {"entry maintenance"},
}
labels["yojijukugo"] = {
topright = "{{wp|Yojijukugo}}",
description = "{{{langname}}} four-[[kanji]] compound terms, {{ja-r|四%字 熟%語|よ%じ じゅく%ご}}, with idiomatic meanings; typically derived from Classical Chinese, Buddhist scripture or traditional Japanese proverbs.",
additional = "Compare Chinese {{w|chengyu}} and Korean {{w|sajaseong-eo}}.",
umbrella = "four-character idioms",
parents = {"idioms"},
}
-- FIXME: Only works for 0 through 19.
local word_to_number = {}
for k, v in pairs(m_numeric.ones_position) do
word_to_number[v] = k
end
local periods = {
historical = true,
ancient = true,
}
local function get_period_text_and_reading_type_link(period, reading_type)
if period and not periods[period] then
return nil
end
local period_text = period and period .. " " or nil
-- Allow periods (historical or ancient) by themselves; they will parse as reading types.
if not period and periods[reading_type] then
return nil, reading_type
end
local reading_type_link = "[[Appendix:Japanese glossary#" .. reading_type .. "|" .. reading_type .. "]]"
return period_text, reading_type_link
end
local function get_sc(str)
return match(str:gsub("[%s%p]+", ""), "[^" .. Hira:getCharacters() .. "]") and Jpan or Hira
end
local function get_tagged_reading(reading, lang)
return tag_text(reading, lang, get_sc(reading))
end
local function get_reading_link(reading, lang, period, link)
local hist = periods[period]
reading = reading:gsub("[%.%-%s]+", "")
return full_link({
lang = lang,
sc = get_sc(reading),
term = link or reading:gsub("・", ""),
-- If we have okurigana, demarcate furigana.
alt = reading:gsub("^(.-)・", "<span style=\"border-top:1px solid;position:relative;padding:1px;\">%1<span style=\"position:absolute;top:0;bottom:67%%;right:0%%;border-right:1px solid;\"></span></span>"),
tr = kana_to_romaji((reading:gsub("・", ".")), lang:getCode(), nil, {keep_dot = true, hist = hist})
:gsub("^(.-)%.", "<u>%1</u>"),
pos = reading:find("・", 1, true) and get_tagged_reading((reading:gsub("^.-・", "~")), lang) or nil
}, "term")
end
local function is_on_subtype(reading_type)
return reading_type:find(".on$")
end
insert(handlers, function(data)
local n =data.label:match("^terms with ([1-9]%d*) kanji$")
if not n then
return
end
local sortkey = require("Module:category tree").numeral_sortkey(n, 2097152)
return {
breadcrumb = n,
description = ("{{{langname}}} terms containing exactly %d kanji."):format(n),
-- TODO: implement this using the same mechanism used to implement parents (i.e. avoiding the need for raw categories).
-- umbrella = {
-- breadcrumb = ("%d kanji"):format(n),
-- parents = {{name = "terms by number of kanji subcategories by language", sort = sortkey}},
-- },
parents = {{name = ("terms by number of kanji"), sort = sortkey}}
}
end)
insert(handlers, function(data)
local label_pref, kana = data.label:match("^(terms historically spelled with )" .. kana_capture .. "$")
if not kana then
return
end
local lang = data.lang
return {
description = "{{{langname}}} terms spelled with " .. get_reading_link(kana, lang, "historical") .. " in the {{w|historical kana orthography}}.",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(kana, lang),
breadcrumb = "historical",
parents = {
{name = "terms spelled with " .. kana, sort = " "},
{name = "terms by the individual characters in their historical spellings", sort = lang:makeSortKey(kana)}
},
umbrella = false,
}
end)
insert(handlers, function(data)
local count, plural = data.label:match("^kanji readings with (.+) mora(e?)$")
-- Make sure 'one' goes with singular and other numbers with plural.
if not count or (count == "one") ~= (plural == "") then
return
end
local num = word_to_number[count]
if not num then
return nil
end
return {
description = "{{{langname}}} kanji readings containing " .. count .. " mora" .. plural .. ".",
breadcrumb = num,
parents = {{name = "kanji readings by number of morae", sort = num}},
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, period, reading_type, reading = match(data.label, "^(kanji with ([a-z]-) ?([%a']+) reading )" .. kana_capture .. "$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return
end
local lang = data.lang
-- Compute parents.
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji with " .. (period_text or "") .. reading_type .. " reading " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by " .. (period_text or "") .. reading_type .. " reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
if is_on_subtype(reading_type) then
insert(parents, {name = "kanji with " .. (period_text or "") .. "on reading " .. reading, sort = reading_type})
elseif period_text then
insert(parents, {name = "kanji with " .. period_text .. "reading " .. reading, sort = reading_type})
end
if not period_text then
insert(parents, {name = "kanji read as " .. reading, sort = reading_type})
end
return {
description = "{{{langname}}} [[kanji]] with the " .. (period_text or "") .. reading_type_link .. " reading " ..
get_reading_link(reading, lang, period or reading_type) .. ".",
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local period, reading_type = match(data.label, "^kanji by ([a-z]-) ?([%a']+) reading$")
if not period then
return
end
period = period ~= "" and period or nil
local period_text, reading_type_link = get_period_text_and_reading_type_link(period, reading_type)
if not reading_type_link then
return nil
end
-- Compute parents.
local parents = {
is_on_subtype(reading_type) and {name = "kanji by " .. (period_text or "") .. "on reading", sort = reading_type} or
period_text and {name = "kanji by " .. reading_type .. " reading", sort = period} or
{name = "kanji by reading", sort = reading_type}
}
if period_text then
insert(parents, {name = "kanji by " .. period_text .. "reading", sort = reading_type})
end
-- Compute description.
local description = "{{{langname}}} [[kanji]] categorized by " .. (period_text or "") .. reading_type_link .. " reading."
return {
description = description,
breadcrumb = (period_text or "") .. reading_type,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
local args = require("Module:parameters").process(data.args, {
["histconsol"] = true,
})
local lang = data.lang
local parents, breadcrumb = {}
if reading:find("・", 1, true) then
local okurigana = reading:match("・(.*)")
insert(parents, {
name = "kanji read as " .. reading:match("(.-)・"),
-- Sort by okurigana, since all coordinate categories will have the same furigana.
sort = (lang:makeSortKey(okurigana))
})
breadcrumb = "~" .. okurigana
else
insert(parents, {
name = "kanji by reading",
sort = (lang:makeSortKey(reading))
})
breadcrumb = reading
end
local addl
local period_text
if args.histconsol then
period_text = "historical"
addl = ("This is a [[Wikipedia:Historical kana orthography|historical]] [[Wikipedia:Kanazukai|reading]], now " ..
"consolidated with the [[Wikipedia:Modern kana usage|modern reading]] of " ..
get_reading_link(args.histconsol, lang, nil, ("Category:Japanese kanji read as %s"):format(args.histconsol)) .. ".")
end
return {
description = "{{{langname}}} [[kanji]] read as " .. get_reading_link(reading, lang, period_text) .. ".",
additional = addl,
displaytitle = "{{{langname}}} " .. label_pref .. get_tagged_reading(reading, lang),
breadcrumb = get_tagged_reading(breadcrumb, lang),
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local label_pref, reading = match(data.label, "^(terms spelled with kanji read as )" .. kana_capture .. "$")
if not reading then
return
end
-- Compute parents.
local lang = data.lang
local sort_key = (lang:makeSortKey(reading))
local mora_count = require("Module:ja").count_morae(reading)
local mora_count_words = m_numeric.spell_number(tostring(mora_count))
local parents = {
{name = "terms by kanji readings", sort = sort_key},
{name = "kanji readings with " .. mora_count_words .. " mora" .. (mora_count > 1 and "e" or ""), sort = sort_key},
{name = "kanji read as " .. reading, sort = " "},
}
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms that contain kanji that exhibit a reading of " .. get_reading_link(reading, lang) ..
" in those terms prior to any sound changes.",
displaytitle = "{{{langname}}} " .. label_pref .. tagged_reading,
breadcrumb = tagged_reading,
parents = parents,
umbrella = false,
}
end)
insert(handlers, function(data)
local kanji, reading = match(data.label, "^terms spelled with (.) read as " .. kana_capture .. "$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms spelled with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types, parents = {}, {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
insert(parents, {
name = "terms spelled with kanji with " .. category .. " readings",
sort = (lang:makeSortKey(reading))
})
end
insert(parents, 1, {name = "terms spelled with " .. kanji, sort = (lang:makeSortKey(reading))})
insert(parents, 2, {name = "terms spelled with kanji read as " .. reading, sort = Hani_sort(kanji)})
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = "{{{langname}}} terms spelled with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. ".",
displaytitle = "{{{langname}}} terms spelled with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. tagged_reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local affix, kanji, reading = data.label:match("^terms ([a-z]+fix)ed with (.+) read as " .. kana_capture .. "$")
if not affix or not kanji or not reading then
return nil
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
})
local lang = data.lang
if #args[1] == 0 then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms AFFIXed with KANJI read as READING\", at least one reading type (e.g. <code>kun</code> or <code>on</code>) must be specified using <code>1=</code>, <code>2=</code>, <code>3=</code>, etc.")
end
local yomi_types = {}
for _, yomi, category in ipairs(args[1]) do
local yomi_data = yomi_data[yomi]
if not yomi_data then
error("The yomi type \"" .. yomi .. "\" is not recognized.")
end
category = yomi_data.kanji_category
if not category then
error("The yomi type \"" .. yomi .. "\" is not valid for this type of category.")
end
insert(yomi_types, yomi_data.link)
end
yomi_types = (#yomi_types > 1 and "one of " or "") .. "its " ..
require("Module:table").serialCommaJoin(yomi_types, {conj = "or"}) ..
" reading" .. (#yomi_types > 1 and "s" or "")
local description = "{{{langname}}} terms " .. affix .. "ed with {{l|{{{langcode}}}|" .. kanji .. "}} with " ..
yomi_types .. " of " .. get_reading_link(reading, lang) .. "."
local what_categorizes_msg =
require("Module:category tree/fam/jpx/what-categorizes-msg")
.get_what_categorizes_msg(kanji, reading, affix)
if what_categorizes_msg then
description = description .. "\n\n" .. what_categorizes_msg
end
local parents = {}
table.insert(parents, {name = "terms " .. affix .. "ed with " .. kanji, sort = (lang:makeSortKey(reading))})
if mw.title.new("Category:" .. lang:getCanonicalName() .. " terms spelled with " .. kanji .. " read as " .. reading).exists then
table.insert(parents, {name = "terms spelled with " .. kanji .. " read as " .. reading, sort = (lang:makeSortKey(reading)), args=data.args})
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_reading = get_tagged_reading(reading, lang)
return {
description = description,
displaytitle = "{{{langname}}} terms " .. affix .. "ed with " .. tagged_kanji .. " read as " .. tagged_reading,
breadcrumb = "read as " .. reading,
parents = parents,
umbrella = false,
}, true
end)
insert(handlers, function(data)
local kanji, daiyoji = match(data.label, "^terms with (.) replaced by daiyōji (.)$")
if not kanji then
return nil
end
local args = require("Module:parameters").process(data.args, {
["sort"] = true,
})
local lang = data.lang
if not args.sort then
error("For categories of the form \"" .. lang:getCanonicalName() ..
" terms with KANJI replaced by daiyōji DAIYOJI\", the sort key must be specified using sort=")
end
local tagged_kanji = get_tagged_reading(kanji, lang)
local tagged_daiyoji = get_tagged_reading(daiyoji, lang)
return {
description = "{{{langname}}} terms with {{l|{{{langcode}}}|" .. kanji .. "}} replaced by [[Appendix:Japanese glossary#daiyouji|daiyōji]] {{l|{{{langcode}}}|" .. daiyoji .. "}}.",
displaytitle = "{{{langname}}} terms with " .. tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
breadcrumb = tagged_kanji .. " replaced by daiyōji " .. tagged_daiyoji,
parents = {{name = "terms spelled with daiyōji", sort = args.sort}},
umbrella = false,
}, true
end)
return {LABELS = labels, HANDLERS = handlers}
mnpqx8vrz8gf5w9prx7ixs14xzu9bky
Module:category tree/fam/zhx
828
140971
233701
2025-12-26T00:37:38Z
en>Benwing2
0
Benwing2 moved page [[Module:category tree/lang/zhx]] to [[Module:category tree/fam/zhx]] without leaving a redirect: should be fam not lang
233701
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["hanzi"] = {
topright = "{{wp|Chinese characters}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
umbrella = "Han characters",
parents = "logograms",
}
labels["chengyu"] = {
topright = "{{wp|Chengyu}}",
description = "{{{langname}}} traditional idiomatic expressions, usually consisting of four [[hanzi]]; typically derived from [[Classical Chinese]].",
additional = "Compare Japanese {{w|yojijukugo}} and Korean {{w|sajaseong-eo}}.",
parents = "idioms",
}
labels["terms with uncreated forms"] = {
description = "{{{langname}}} terms that use a hanzi box template (such as {{temp|zh-forms}}) with a form not having a page of its own, or a {{temp|zh-see}} template linking to a page without a Chinese section or a nonexistent page",
additional = "If the redlink in the hanzi box is a variant or simplified form, the page may be created with {{temp|subst:zh-new}}.",
parents = {"redlinks", "entry maintenance"},
}
for _, source in ipairs {
"Mencius",
"the Analects",
"the Book of Documents",
"the Book of Rites",
"the Classic of Poetry",
"the Han Feizi",
"the I Ching",
"the Zhuangzi",
"the Zuo Zhuan",
} do
local book = source:match("^the (.*)$")
local sort_key = book or source
local italicized = book and "the ''" .. book .. "''" or source
labels["terms derived from " .. source] = {
displaytitle = book and "{{{langname}}} terms derived from " .. italicized or nil,
parents = {{name = "terms attributed to a specific source", sort = sort_key}},
description = "{{{langname}}} terms derived from " .. italicized .. ".",
breadcrumb = italicized,
}
labels["chengyu derived from " .. source] = {
displaytitle = book and "{{{langname}}} chengyu derived from " .. italicized or nil,
parents = {{name = "chengyu", sort = sort_key}, "terms derived from " .. source},
description = "{{{langname}}} [[chengyu]] derived from " .. italicized .. ".",
breadcrumb = "derived from " .. italicized,
}
end
return {LABELS = labels, HANDLERS = handlers}
rm746jovo6y2tar6jekijha49gudmt4
233702
228773
2026-05-09T04:18:05Z
Lee
19
[[:en:Module:category_tree/fam/zhx]] වෙතින් එක් සංශෝධනයක්
228773
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["hanzi"] = {
topright = "{{wp|Chinese characters}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
umbrella = "Han characters",
parents = "logograms",
}
labels["chengyu"] = {
topright = "{{wp|Chengyu}}",
description = "{{{langname}}} traditional idiomatic expressions, usually consisting of four [[hanzi]]; typically derived from [[Classical Chinese]].",
additional = "Compare Japanese {{w|yojijukugo}} and Korean {{w|sajaseong-eo}}.",
parents = "idioms",
}
labels["terms with uncreated forms"] = {
description = "{{{langname}}} terms that use a hanzi box template (such as {{temp|zh-forms}}) with a form not having a page of its own, or a {{temp|zh-see}} template linking to a page without a Chinese section or a nonexistent page",
additional = "If the redlink in the hanzi box is a variant or simplified form, the page may be created with {{temp|subst:zh-new}}.",
parents = {"redlinks", "entry maintenance"},
}
for _, source in ipairs {
"Mencius",
"the Analects",
"the Book of Documents",
"the Book of Rites",
"the Classic of Poetry",
"the Han Feizi",
"the I Ching",
"the Zhuangzi",
"the Zuo Zhuan",
} do
local book = source:match("^the (.*)$")
local sort_key = book or source
local italicized = book and "the ''" .. book .. "''" or source
labels["terms derived from " .. source] = {
displaytitle = book and "{{{langname}}} terms derived from " .. italicized or nil,
parents = {{name = "terms attributed to a specific source", sort = sort_key}},
description = "{{{langname}}} terms derived from " .. italicized .. ".",
breadcrumb = italicized,
}
labels["chengyu derived from " .. source] = {
displaytitle = book and "{{{langname}}} chengyu derived from " .. italicized or nil,
parents = {{name = "chengyu", sort = sort_key}, "terms derived from " .. source},
description = "{{{langname}}} [[chengyu]] derived from " .. italicized .. ".",
breadcrumb = "derived from " .. italicized,
}
end
return {LABELS = labels, HANDLERS = handlers}
rm746jovo6y2tar6jekijha49gudmt4
233703
233702
2026-05-09T04:19:27Z
Lee
19
"redlinks" සිට "රතු සබැඳි" වෙතට
233703
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["hanzi"] = {
topright = "{{wp|Chinese characters}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
umbrella = "Han characters",
parents = "logograms",
}
labels["chengyu"] = {
topright = "{{wp|Chengyu}}",
description = "{{{langname}}} traditional idiomatic expressions, usually consisting of four [[hanzi]]; typically derived from [[Classical Chinese]].",
additional = "Compare Japanese {{w|yojijukugo}} and Korean {{w|sajaseong-eo}}.",
parents = "idioms",
}
labels["terms with uncreated forms"] = {
description = "{{{langname}}} terms that use a hanzi box template (such as {{temp|zh-forms}}) with a form not having a page of its own, or a {{temp|zh-see}} template linking to a page without a Chinese section or a nonexistent page",
additional = "If the redlink in the hanzi box is a variant or simplified form, the page may be created with {{temp|subst:zh-new}}.",
parents = {"රතු සබැඳි", "entry maintenance"},
}
for _, source in ipairs {
"Mencius",
"the Analects",
"the Book of Documents",
"the Book of Rites",
"the Classic of Poetry",
"the Han Feizi",
"the I Ching",
"the Zhuangzi",
"the Zuo Zhuan",
} do
local book = source:match("^the (.*)$")
local sort_key = book or source
local italicized = book and "the ''" .. book .. "''" or source
labels["terms derived from " .. source] = {
displaytitle = book and "{{{langname}}} terms derived from " .. italicized or nil,
parents = {{name = "terms attributed to a specific source", sort = sort_key}},
description = "{{{langname}}} terms derived from " .. italicized .. ".",
breadcrumb = italicized,
}
labels["chengyu derived from " .. source] = {
displaytitle = book and "{{{langname}}} chengyu derived from " .. italicized or nil,
parents = {{name = "chengyu", sort = sort_key}, "terms derived from " .. source},
description = "{{{langname}}} [[chengyu]] derived from " .. italicized .. ".",
breadcrumb = "derived from " .. italicized,
}
end
return {LABELS = labels, HANDLERS = handlers}
0eussufvk675jv9083friclgn4a6a6w
233704
233703
2026-05-09T04:20:50Z
Lee
19
"entry maintenance" සිට "ප්රවේශ නඩත්තුව" වෙතට
233704
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["hanzi"] = {
topright = "{{wp|Chinese characters}}",
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
umbrella = "Han characters",
parents = "logograms",
}
labels["chengyu"] = {
topright = "{{wp|Chengyu}}",
description = "{{{langname}}} traditional idiomatic expressions, usually consisting of four [[hanzi]]; typically derived from [[Classical Chinese]].",
additional = "Compare Japanese {{w|yojijukugo}} and Korean {{w|sajaseong-eo}}.",
parents = "idioms",
}
labels["terms with uncreated forms"] = {
description = "{{{langname}}} terms that use a hanzi box template (such as {{temp|zh-forms}}) with a form not having a page of its own, or a {{temp|zh-see}} template linking to a page without a Chinese section or a nonexistent page",
additional = "If the redlink in the hanzi box is a variant or simplified form, the page may be created with {{temp|subst:zh-new}}.",
parents = {"රතු සබැඳි", "ප්රවේශ නඩත්තුව"},
}
for _, source in ipairs {
"Mencius",
"the Analects",
"the Book of Documents",
"the Book of Rites",
"the Classic of Poetry",
"the Han Feizi",
"the I Ching",
"the Zhuangzi",
"the Zuo Zhuan",
} do
local book = source:match("^the (.*)$")
local sort_key = book or source
local italicized = book and "the ''" .. book .. "''" or source
labels["terms derived from " .. source] = {
displaytitle = book and "{{{langname}}} terms derived from " .. italicized or nil,
parents = {{name = "terms attributed to a specific source", sort = sort_key}},
description = "{{{langname}}} terms derived from " .. italicized .. ".",
breadcrumb = italicized,
}
labels["chengyu derived from " .. source] = {
displaytitle = book and "{{{langname}}} chengyu derived from " .. italicized or nil,
parents = {{name = "chengyu", sort = sort_key}, "terms derived from " .. source},
description = "{{{langname}}} [[chengyu]] derived from " .. italicized .. ".",
breadcrumb = "derived from " .. italicized,
}
end
return {LABELS = labels, HANDLERS = handlers}
69158piccvryx7wi223dj9kbp7drih6
අතුර
0
143318
233608
2026-05-08T12:56:25Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|root + wikitable + මූලාශ්ර + ප්රවර්ගය + si-noun
233608
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය 1 ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈaturə/}}
===ධාතු ප්රකෘතිය===
{{head|si|root}}
# {{lb|si||සකර්මක}} {{rfdef|si}}
# {{lb|si||අකර්මක}} {{rfdef|si}}
====ආඛ්යාත ක්රියා පද====
{| class="wikitable"
|+
|-
! !!අන්ය පුරුෂ<br>ඒකවචන!!අන්ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන
|-
|අනතීත-සකර්මක||align="center"|[[අතුරයි]]||align="center"|[[අතුරති]]||align="center"|[[අතුරමි]]||align="center"|[[අතුරමු]]
|-
|අතීත-සකර්මක||||||||
|-
|අනතීත-කර්ම කාරක||||||||
|-
|අතීත-කර්ම කාරක||||||||
|-
|අනතීත-අකර්මක||align="center"|[[ඇතිරේ]]||align="center"|[[ඇතිරෙති]]||align="center"|[[ඇතිරෙමි]]||align="center"|[[ඇතිරෙමු]]
|-
|අතීත-සකර්මක||||||||
|-
|}
=== මූලාශ්ර ===
<references/>
* "[https://tipitaka.lk/library/963 අතුර]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
* "[https://tipitaka.lk/library/875 අතුර(ධා)]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 41 පිටුව
=== නිරුක්තිය 2 ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
[[ප්රවර්ගය:සිංහල ධාතු ප්රකෘති]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
f6t3c2ud6y9y6dh3vm4m49ho1s51500
අතුරත්
0
143319
233609
2026-05-08T12:59:22Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms + alternative form of|si + ප්රවර්ගය
233609
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈaturat/}}
===ක්රියා පද===
{{head|si|verb forms}}
# {{alternative form of|si|අතුරති#ක්රියා පද}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
8cs48g5iz7lrajywkddvy6akw2rxl38
ඇතිරී
0
143320
233610
2026-05-08T13:12:53Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms + infl of|si (ක්රියා පද 1, ක්රියා පද 2) + ප්රවර්ග
233610
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුළ#ක්රියා පද|අතුළ}} ''(ක්රියා පද 1: ආඛ්යාත ක්රියා)''
* {{l|si|අතළ#ක්රියා පද|අතළ}} ''(ක්රියා පද 1: ආඛ්යාත ක්රියා)''
=== නිරුක්තිය ===
{{etymon|si|id=අතුර ඊ|af|si>අතුර#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඊ>ප්රත්ය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-ඊ]] (ප්රත්ය) >'' [[ඇතිරී]]
===උච්චාරණය===
* {{IPA|si|/ˈætiriː/}}
===ක්රියා පද 1===
{{head|si|verb forms}}
# {{lb|si|සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||අතීත|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
===ක්රියා පද 2===
{{head|si|verb forms|සකර්මක අතීත-නිපාත|අතුරා#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන ආඛ්යාත|ඇතිරේ#ක්රියා පද 2}}
# {{infl of|si|අතුරයි#ක්රියා පද||කර්ම කාරක|අතීත|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]]
pt1ikgdx8fgw4bc7ychfw8tjpf0kkiw
ඇතිරූ
0
143321
233611
2026-05-08T13:19:49Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms + infl of|si + ප්රවර්ගය
233611
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇතුරූ#ක්රියා පද|ඇතුරූ}}
* {{l|si|ඇතුළ#ක්රියා පද|අතුළ}}
* {{l|si|අතළ#ක්රියා පද|අතළ}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුර ඌ|af|si>අතුර#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඌ>ප්රත්ය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-ඌ]] (ප්රත්ය) >'' [[ඇතිරූ]]
===උච්චාරණය===
* {{IPA|si|/ˈætiruː/}}
===ක්රියා පද 1===
{{head|si|verb forms}}
# {{lb|si|සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||අතීත|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
phak7h53yvu26j3wisrlbir3vco1l9p
අතුරති
0
143322
233614
2026-05-08T14:15:20Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233614
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුරත්#ක්රියා පද|අතුරත්}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුර අති|af|si>අතුර#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-අති>ප්රත්ය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-අති]] (ප්රත්ය) > අතුර් - '''අ''' ([[ස්වර ලොපය]]) + -අති > '' [[අතුරති]]
===උච්චාරණය===
* {{IPA|si|/ˈaturəti/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරති|අතීත-සකර්මක අන්ය පුරුෂ බහුවචන|ඇතිරූ#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇතිරෙති#ක්රියා පද 2|අතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇතිරුණු#ක්රියා පද 2}}
# {{lb|si|සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||අනතීත|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
5pz9g22vrk2anrl35xvnfd17edevaq2
අතුරමි
0
143323
233615
2026-05-08T14:19:17Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233615
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈaturəmi/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරමි|අතීත-සකර්මක උත්තම ඒකවචන|ඇතිරීමි#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරෙමි#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 2}}
# {{lb|si|transitive}} {{infl of|si|අතුරයි||අනතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
dbfstoznu8jmxev68rb85gq50nm8t2g
අතුරමු
0
143324
233616
2026-05-08T14:23:24Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233616
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈaturəmu/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරමු|අතීත-සකර්මක උත්තම ඒකවචන|ඇතිරූමු#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරෙමු#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරුණුමු#ක්රියා පද 2}}
# {{lb|si|transitive}} {{infl of|si|අතුරයි#ක්රියා පද||අනතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
fil7q4e997rs5bfr9zcw9mxl9d50p0c
233617
233616
2026-05-08T14:24:20Z
WrdSrchSi
3305
/* ක්රියා පද */ Fixed. (බහුවචන)
233617
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈaturəmu/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරමු|අතීත-සකර්මක උත්තම බහුවචන|ඇතිරූමු#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම බහුවචන|ඇතිරෙමු#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇතිරුණුමු#ක්රියා පද 2}}
# {{lb|si|transitive}} {{infl of|si|අතුරයි#ක්රියා පද||අනතීත|උත්තම පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
ra4zmd68q7c0f16s6xowhfj99kv88i8
අතුරයි
0
143325
233618
2026-05-08T14:42:02Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb + ආශ්රිත පද + මූලාශ්ර + ප්රවර්ගය
233618
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුරා#ක්රියා පද|අතුරා}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුරා යි|af|si>අතුරා#ක්රියා පද>පදය|si>යි>පදය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අතුර් - '''අ''' ([[ස්වර ලොපය]]) + -ආ > [[අතුරා#ක්රියා පද|අතුරා]] (වෙනත් ආකාර) + [[යි]] >'' [[අතුරයි]]
===උච්චාරණය===
* {{IPA|si|/ˈaturaji/}}
===ක්රියා පද===
{{head|si|verb
|අතීත-සකර්මක අන්ය පුරුෂ ඒකවචන|ඇතිරී#ක්රියා පද 1
|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරේ#ක්රියා පද
|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 2
|අනතීත-සකර්මක අන්ය පුරුෂ බහුවචන|අතුරති#ක්රියා පද
|අනතීත-සකර්මක උත්තම ඒකවචන|අතුරමි#ක්රියා පද
|අනතීත-සකර්මක උත්තම බහුවචන|අතුරමු#ක්රියා පද
|අනතීත-ප්රයුක්ත|අතුරවයි#ක්රියා පද
|අනතීත-භාව නාම ක්රියා|අතුරනවා#ක්රියා පද
|අනතීත-කාරක නාම ක්රියා|අතුරන්නේ#ක්රියා පද
|සකර්මක වර්තමාන-නිපාත|අතුරමින්#ක්රියා පද
}}
# {{lb|si||සකර්මක}} {{rfdef|si}}
====ආශ්රිත පද====
{{top4}}
* {{l|si|ඇතිරුම්}}
* {{l|si|ඇතිරුම}}
* {{l|si|ඇතිරූ}}
* {{l|si|ඇතිරුණු}}
* {{l|si|ඇතිරිලි}}
* {{l|si|අතුරා#ක්රියා පද|අතුරා}} ''(සකර්මක අතීත නිපාත)''
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර(ධා)]] [https://tipitaka.lk/library/875]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 41 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
ref8khwx9t0s1bejisy8j3h1qbd1f82
233619
233618
2026-05-08T14:55:20Z
WrdSrchSi
3305
/* ක්රියා පද */ + 2 quote with links
233619
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුරා#ක්රියා පද|අතුරා}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුරා යි|af|si>අතුරා#ක්රියා පද>පදය|si>යි>පදය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අතුර් - '''අ''' ([[ස්වර ලොපය]]) + -ආ > [[අතුරා#ක්රියා පද|අතුරා]] (වෙනත් ආකාර) + [[යි]] >'' [[අතුරයි]]
===උච්චාරණය===
* {{IPA|si|/ˈaturaji/}}
===ක්රියා පද===
{{head|si|verb
|අතීත-සකර්මක අන්ය පුරුෂ ඒකවචන|ඇතිරී#ක්රියා පද 1
|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරේ#ක්රියා පද
|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 2
|අනතීත-සකර්මක අන්ය පුරුෂ බහුවචන|අතුරති#ක්රියා පද
|අනතීත-සකර්මක උත්තම ඒකවචන|අතුරමි#ක්රියා පද
|අනතීත-සකර්මක උත්තම බහුවචන|අතුරමු#ක්රියා පද
|අනතීත-ප්රයුක්ත|අතුරවයි#ක්රියා පද
|අනතීත-භාව නාම ක්රියා|අතුරනවා#ක්රියා පද
|අනතීත-කාරක නාම ක්රියා|අතුරන්නේ#ක්රියා පද
|සකර්මක වර්තමාන-නිපාත|අතුරමින්#ක්රියා පද
}}
# {{lb|si||සකර්මක}} {{rfdef|si}}
#:* www.lankadeepa.lk, ''[https://www.lankadeepa.lk/latest_news/%E0%B6%A2%E0%B6%BA-%E0%B6%B6%E0%B7%84%E0%B6%BD%E0%B7%80-%E0%B6%9C%E0%B6%BD-%E0%B6%85%E0%B6%AD%E0%B6%BB%E0%B6%BA/1-653877 ජය බහලුවේ ගල් අතුරයි]'', 2024 ජූනි 20
#:*: ''කොළඹ වරායේ ජය බහාලුම් පර්යන්ත - V අංගනයේ ගල් '''අතුරා''' තාර දැමීමේ ව්යාපෘතිය සඳහා කැබිනට් අනුමැතිය ලැබී ඇත.''
#:* archive.roar.media, ''[https://archive.roar.media/sinhala/main/history/how-kng-dutugemunu-built-ruwanveliseya දුටුගැමුණු රජු රුවන්වැලි සෑය හැදූ අයුරු මහාවංසය දුටු හැටි]'', 2022 දෙසැම්බර් 7
#:*: ''එතැනින් මැටි ලබා ගෙන ඉහත සඳහන් කළ පරිදී මට්ටම් කළ ගල් අතර '''අතුරා''' ඇත. ඉන්පසු පිළිවෙළින් ශුද්ධ කළ ගල්, කුරුවින්ද පාෂාණ, යකඩ දැල් හා බොරලු ද ඒ මත '''අතුරා''' ඇත. රජු හිමාලයෙන් ගෙන්වූ පළිඟු ගල් ඒ මත '''අතුරවනු''' ලැබිණි. ඒ පළිඟු ගල් අතර හිඩැස්වලට තවත් ගල් '''ඇතිරිණි'''.''
====ආශ්රිත පද====
{{top4}}
* {{l|si|ඇතිරුම්}}
* {{l|si|ඇතිරුම}}
* {{l|si|ඇතිරූ}}
* {{l|si|ඇතිරුණු}}
* {{l|si|ඇතිරිලි}}
* {{l|si|අතුරා#ක්රියා පද|අතුරා}} ''(සකර්මක අතීත නිපාත)''
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර(ධා)]] [https://tipitaka.lk/library/875]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 41 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
94j4jvha5u7n2h6s6ec2uun5an81rex
233626
233619
2026-05-08T17:00:04Z
WrdSrchSi
3305
/* ක්රියා පද */ Fixed. (#ක්රියා පද 2)
233626
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුරා#ක්රියා පද|අතුරා}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුරා යි|af|si>අතුරා#ක්රියා පද>පදය|si>යි>පදය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අතුර් - '''අ''' ([[ස්වර ලොපය]]) + -ආ > [[අතුරා#ක්රියා පද|අතුරා]] (වෙනත් ආකාර) + [[යි]] >'' [[අතුරයි]]
===උච්චාරණය===
* {{IPA|si|/ˈaturaji/}}
===ක්රියා පද===
{{head|si|verb
|අතීත-සකර්මක අන්ය පුරුෂ ඒකවචන|ඇතිරී#ක්රියා පද 1
|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරේ#ක්රියා පද 2
|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 2
|අනතීත-සකර්මක අන්ය පුරුෂ බහුවචන|අතුරති#ක්රියා පද
|අනතීත-සකර්මක උත්තම ඒකවචන|අතුරමි#ක්රියා පද
|අනතීත-සකර්මක උත්තම බහුවචන|අතුරමු#ක්රියා පද
|අනතීත-ප්රයුක්ත|අතුරවයි#ක්රියා පද
|අනතීත-භාව නාම ක්රියා|අතුරනවා#ක්රියා පද
|අනතීත-කාරක නාම ක්රියා|අතුරන්නේ#ක්රියා පද
|සකර්මක වර්තමාන-නිපාත|අතුරමින්#ක්රියා පද
}}
# {{lb|si||සකර්මක}} {{rfdef|si}}
#:* www.lankadeepa.lk, ''[https://www.lankadeepa.lk/latest_news/%E0%B6%A2%E0%B6%BA-%E0%B6%B6%E0%B7%84%E0%B6%BD%E0%B7%80-%E0%B6%9C%E0%B6%BD-%E0%B6%85%E0%B6%AD%E0%B6%BB%E0%B6%BA/1-653877 ජය බහලුවේ ගල් අතුරයි]'', 2024 ජූනි 20
#:*: ''කොළඹ වරායේ ජය බහාලුම් පර්යන්ත - V අංගනයේ ගල් '''අතුරා''' තාර දැමීමේ ව්යාපෘතිය සඳහා කැබිනට් අනුමැතිය ලැබී ඇත.''
#:* archive.roar.media, ''[https://archive.roar.media/sinhala/main/history/how-kng-dutugemunu-built-ruwanveliseya දුටුගැමුණු රජු රුවන්වැලි සෑය හැදූ අයුරු මහාවංසය දුටු හැටි]'', 2022 දෙසැම්බර් 7
#:*: ''එතැනින් මැටි ලබා ගෙන ඉහත සඳහන් කළ පරිදී මට්ටම් කළ ගල් අතර '''අතුරා''' ඇත. ඉන්පසු පිළිවෙළින් ශුද්ධ කළ ගල්, කුරුවින්ද පාෂාණ, යකඩ දැල් හා බොරලු ද ඒ මත '''අතුරා''' ඇත. රජු හිමාලයෙන් ගෙන්වූ පළිඟු ගල් ඒ මත '''අතුරවනු''' ලැබිණි. ඒ පළිඟු ගල් අතර හිඩැස්වලට තවත් ගල් '''ඇතිරිණි'''.''
====ආශ්රිත පද====
{{top4}}
* {{l|si|ඇතිරුම්}}
* {{l|si|ඇතිරුම}}
* {{l|si|ඇතිරූ}}
* {{l|si|ඇතිරුණු}}
* {{l|si|ඇතිරිලි}}
* {{l|si|අතුරා#ක්රියා පද|අතුරා}} ''(සකර්මක අතීත නිපාත)''
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර(ධා)]] [https://tipitaka.lk/library/875]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 41 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
70wa9k6n5qjg9uthcokueocvsifomab
Module:category tree/lang/jbo
828
143326
233623
2026-02-15T23:56:08Z
en>WingerBot
0
use breadcrumb_and_first_sort_key instead of breadcrumb_and_first_sort_base in category tree modules as the sort base is language-specific which normally doesn't apply here (manually assisted)
233623
Scribunto
text/plain
local labels = {}
local handlers = {}
----------------- Brivla and their types -----------------
labels["brivla"] = {
description = "{{{langname}}} [[brivla]], i.e. [[predicate]]s in the sense of {{w|first-order predicate logic}}, which express a relationship among arguments.",
additional = "Depending on the semantics, a [[brivla]] can correspond to a [[verb]] (“X acts-on Y”), a [[noun]] (“X is-a-person-or-thing”) or [[adjective]] (“X is-adjective”).",
parents = {"lemmas", "selma'o"},
}
labels["gismu"] = {
description = "{{{langname}}} [[gismu]], i.e. [[brivla]] ([[predicate]]s) that are basic [[root]]s, rather than being derived through [[compound]]ing or [[borrow]]ing.",
parents = {"brivla"},
}
labels["gismu with three rafsi"] = {
description = "{{{langname}}} [[gismu]] ([[root]] words) containing three corresponding [[rafsi]] ([[combining form]]s).",
additional = "Such [[gismu]] are rare; most have only one or two rafsi.",
parents = {{name = "gismu", sort = "3"}},
breadcrumb = "with three rafsi",
}
labels["lujvo"] = {
description = "{{{langname}}} [[lujvo]], i.e. [[brivla]] ([[predicate]]s) that are [[compound]] [[word]]s, made up of several [[gismu]] ([[root]]s) in their [[rafsi]] (abbreviated) form.",
parents = {"brivla"},
}
labels["fu'ivla"] = {
description = "{{{langname}}} [[fu'ivla]], i.e. [[brivla]] ([[predicate]]s) that are [[loanword]]s ([[borrow]]ed from another language) and function like [[common noun]]s.",
parents = {"brivla"},
}
labels["rafsi"] = {
description = "{{{langname}}} [[rafsi]] ([[combining form]]s) of [[gismu]] ([[root]] words), used as [[affix]]es to make [[lujvo]] ([[compound]] [[word]]s).",
additional = "Rafsi are abbreviated versions of [[gismu]] and are usually composed of three letters, while [[gismu]] are made up of five letters. " ..
"Most [[gismu]] have a single corresponding [[rafsi]], but some have two, and a small number have three.",
preceding = "{{wikibooks|Lojban/Rafsi}}",
parents = {"non-lemma forms"},
}
----------------- Cmavo and related categories -----------------
labels["cmavo"] = {
description = "{{{langname}}} [[cmavo]], i.e. [[function]] [[word]]s ([[particle]]s).",
additional = "They are structure words roughly comparable to English [[conjunction]]s, [[preposition]]s, [[article]]s, [[numeral]]s, and some [[adverb]]s.",
parents = {"lemmas"},
}
labels["selma'o"] = {
description = "{{{langname}}} [[selma'o]], i.e. sets of [[cmavo]] ([[particle]]s or [[function word]]s) that are [[grammatically]] [[interchangeable]].",
additional = "An individual [[selma'o]] can be viewed similarly to a [[part of speech]].\n\n" ..
"This is a grouping category. It contains no dictionary entries, but only categories holding the words in a specific [[selma'o]].",
parents = {{name = "Lojban language", raw = true, lang = "jbo"}, "Category:jbo:Grammar", "cmavo"},
}
table.insert(handlers, function(data)
local selmao = data.label:match("^cmavo of selma'o (.*)$")
if not selmao then
return nil
end
local params = {
singleton = {type = "boolean"},
}
local args = require("Module:parameters").process(data.args, params)
return {
description = "{{{langname}}} [[cmavo]] ([[structure]]/[[function word]]s) of the [[selma'o]] ([[structure]] [[word]] [[class]]) ''" .. selmao .. "''.",
additional = args.singleton and "''Note:'' This class is a [[singleton set]], i.e. there is only one [[cmavo]] (element) in this class." or nil,
displaytitle = "{{{langname}}} cmavo of selma'o ''" .. selmao .. "''",
breadcrumb_and_first_sort_key = "''" .. selmao .. "''",
parents = {"selma'o"},
}, true
end)
labels["cmavo clusters"] = {
description = "{{{langname}}} [[cmavo]] [[cluster]]s, i.e. [[compound]]s of two or more [[cmavo]] ([[particle]]s or [[function word]]s).",
parents = {"cmavo"},
breadcrumb_and_first_sort_key = "clusters",
}
labels["abstractors"] = {
description = "{{{langname}}} [[abstractor]]s, i.e. [[cmavo]] ([[particle]]s) that convert a [[bridi]] (Lojban sentence) into an abstract noun-like phrase.",
additional = "This allows the phrase to be embedded in another sentence, similar to a [[subordinate clause]].\n\n" ..
"All abstractors come from the [[selma'o]] (grammatical class) [[:Category:Lojban cmavo of selma'o NU|NU]].",
parents = {"cmavo"},
}
labels["elidable terminators"] = {
description = "{{{langname}}} [[elidable]] [[terminator]]s, used to [[indicate]] the end of certain [[phrase]]s.",
parents = {"cmavo"},
}
labels["indicators"] = {
description = "{{{langname}}} [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express the speaker's [[emotional]] [[attitude]] or add other [[metalinguistic]] [[information]] to a [[sentence]].",
additional = "Often the term ''indicator'' is used synonymously with ''[[:Category:Lojban attitudinal indicators|attitudinal indicator]]'', in which case " ..
"[[:Category:Lojban discursive indicators|discursive indicators]] and [[:Category:Lojban evidential indicators|evidential indicators]] are called simply ''discursives'' and ''evidentials''.",
parents = {"cmavo"},
}
labels["attitudinal indicators"] = {
description = "{{{langname}}} [[attitudinal]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express the speaker's [[emotional]] [[attitude]].",
additional = "These function somewhat similarly to [[interjection]]s in English but are integrated into the sentence structure.\n\n" ..
"Often attitudinal indicators are simply called ''indicators'', in which case what Wiktionary calls [[:Category:Lojban discursive indicators|discursive indicators]] " ..
"and [[:Category:Lojban evidential indicators|evidential indicators]] are called simply ''discursives'' and ''evidentials''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "attitudinal",
}
labels["discursive indicators"] = {
description = "{{{langname}}} [[discursive]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express [[metalinguistic]] ([[discourse]]) [[information]] about a sentence, similarly to English ''[[but]]'' and ''[[also]]''.",
additional = "These are often called simply ''discursives'', and [[:Category:Lojban attitudinal indicators|attitudinal indicators]] are simply called ''indicators''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "discursive",
}
labels["evidential indicators"] = {
description = "{{{langname}}} [[evidential]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express how the [[speaker]] came to make a given [[statement]] (e.g. by direct observation, by belief, by [[hearsay]], etc.).",
additional = "These are often called simply ''evidentials'', and [[:Category:Lojban attitudinal indicators|attitudinal indicators]] are simply called ''indicators''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "evidential",
}
labels["letterals"] = {
description = "{{{langname}}} [[letteral]]s, i.e. [[name]]s of {{{langname}}} and non-{{{langname}}} [[letter]]s.",
parents = {"cmavo"},
}
labels["logical connectives"] = {
description = "{{{langname}}} [[logical]] [[connective]]s, similar to [[conjunction]]s in [[English]].",
parents = {"cmavo"},
}
labels["pro-forms"] = {
description = "{{{langname}}} [[pro-form]]s, used to make [[reference]] to previously specified [[phrase]]s or [[clause]]s.",
parents = {"cmavo"},
}
labels["pro-sumti"] = {
description = "{{{langname}}} [[pro-sumti]], similar to [[pronoun]]s (of various sorts) in [[English]].",
parents = {"pro-forms"},
}
labels["pro-bridi"] = {
description = "{{{langname}}} [[pro-]][[bridi]], similar to [[pro-sumti]] but which stand for entire [[sentence]]s ([[bridi]]) rather than individual [[element]]s ([[sumti]]).",
parents = {"pro-forms"},
}
labels["sumti tcita"] = {
description = "{{{langname}}} [[sumti tcita]], used to add extra non-required [[argument]]s in a [[sentence]], similar to [[preposition]]s in [[English]].",
additional = "Morphologically, [[sumti tcita]] are abbreviated (“[[modal]]”) forms of certain [[gismu]], and should not be confused with [[rafsi]].",
parents = {"cmavo"},
}
labels["tense tags"] = {
description = "{{{langname}}} [[tense]] [[tag]]s, used to specify the [[tense]] (e.g. [[past]], [[present]], [[future]]) of a [[sentence]].",
parents = {"cmavo"},
}
----------------- Cmene and related categories -----------------
labels["cmene"] = {
description = "{{{langname}}} [[cmene]], i.e. [[proper noun]]s [[law of Hobson-Jobson|respelled according to Lojban rules]].",
additional = "They are considered a separate part of speech from [[brivla]] (content words) and [[cmavo]] (function words).",
parents = {"lemmas"},
}
labels["fu'ivla cmene"] = {
description = "{{{langname}}} [[fu'ivla]] [[cmene]], i.e. [[cmene]] ([[proper noun]]s) that are also [[fu'ivla]] (single [[loanword]]s rather than [[compound]]s).",
parents = {"fu'ivla", "cmene"},
}
labels["lujvo cmene"] = {
description = "{{{langname}}} [[lujvo]] [[cmene]], i.e. [[cmene]] ([[proper noun]]s) that are also [[lujvo]] ([[compound]]s).",
parents = {"lujvo", "cmene"},
}
return {LABELS = labels, HANDLERS = handlers}
rh0ivwlckrhqpgpxhivwv7bjpxwklt7
233624
233623
2026-05-08T16:45:41Z
Lee
19
[[:en:Module:category_tree/lang/jbo]] වෙතින් එක් සංශෝධනයක්
233623
Scribunto
text/plain
local labels = {}
local handlers = {}
----------------- Brivla and their types -----------------
labels["brivla"] = {
description = "{{{langname}}} [[brivla]], i.e. [[predicate]]s in the sense of {{w|first-order predicate logic}}, which express a relationship among arguments.",
additional = "Depending on the semantics, a [[brivla]] can correspond to a [[verb]] (“X acts-on Y”), a [[noun]] (“X is-a-person-or-thing”) or [[adjective]] (“X is-adjective”).",
parents = {"lemmas", "selma'o"},
}
labels["gismu"] = {
description = "{{{langname}}} [[gismu]], i.e. [[brivla]] ([[predicate]]s) that are basic [[root]]s, rather than being derived through [[compound]]ing or [[borrow]]ing.",
parents = {"brivla"},
}
labels["gismu with three rafsi"] = {
description = "{{{langname}}} [[gismu]] ([[root]] words) containing three corresponding [[rafsi]] ([[combining form]]s).",
additional = "Such [[gismu]] are rare; most have only one or two rafsi.",
parents = {{name = "gismu", sort = "3"}},
breadcrumb = "with three rafsi",
}
labels["lujvo"] = {
description = "{{{langname}}} [[lujvo]], i.e. [[brivla]] ([[predicate]]s) that are [[compound]] [[word]]s, made up of several [[gismu]] ([[root]]s) in their [[rafsi]] (abbreviated) form.",
parents = {"brivla"},
}
labels["fu'ivla"] = {
description = "{{{langname}}} [[fu'ivla]], i.e. [[brivla]] ([[predicate]]s) that are [[loanword]]s ([[borrow]]ed from another language) and function like [[common noun]]s.",
parents = {"brivla"},
}
labels["rafsi"] = {
description = "{{{langname}}} [[rafsi]] ([[combining form]]s) of [[gismu]] ([[root]] words), used as [[affix]]es to make [[lujvo]] ([[compound]] [[word]]s).",
additional = "Rafsi are abbreviated versions of [[gismu]] and are usually composed of three letters, while [[gismu]] are made up of five letters. " ..
"Most [[gismu]] have a single corresponding [[rafsi]], but some have two, and a small number have three.",
preceding = "{{wikibooks|Lojban/Rafsi}}",
parents = {"non-lemma forms"},
}
----------------- Cmavo and related categories -----------------
labels["cmavo"] = {
description = "{{{langname}}} [[cmavo]], i.e. [[function]] [[word]]s ([[particle]]s).",
additional = "They are structure words roughly comparable to English [[conjunction]]s, [[preposition]]s, [[article]]s, [[numeral]]s, and some [[adverb]]s.",
parents = {"lemmas"},
}
labels["selma'o"] = {
description = "{{{langname}}} [[selma'o]], i.e. sets of [[cmavo]] ([[particle]]s or [[function word]]s) that are [[grammatically]] [[interchangeable]].",
additional = "An individual [[selma'o]] can be viewed similarly to a [[part of speech]].\n\n" ..
"This is a grouping category. It contains no dictionary entries, but only categories holding the words in a specific [[selma'o]].",
parents = {{name = "Lojban language", raw = true, lang = "jbo"}, "Category:jbo:Grammar", "cmavo"},
}
table.insert(handlers, function(data)
local selmao = data.label:match("^cmavo of selma'o (.*)$")
if not selmao then
return nil
end
local params = {
singleton = {type = "boolean"},
}
local args = require("Module:parameters").process(data.args, params)
return {
description = "{{{langname}}} [[cmavo]] ([[structure]]/[[function word]]s) of the [[selma'o]] ([[structure]] [[word]] [[class]]) ''" .. selmao .. "''.",
additional = args.singleton and "''Note:'' This class is a [[singleton set]], i.e. there is only one [[cmavo]] (element) in this class." or nil,
displaytitle = "{{{langname}}} cmavo of selma'o ''" .. selmao .. "''",
breadcrumb_and_first_sort_key = "''" .. selmao .. "''",
parents = {"selma'o"},
}, true
end)
labels["cmavo clusters"] = {
description = "{{{langname}}} [[cmavo]] [[cluster]]s, i.e. [[compound]]s of two or more [[cmavo]] ([[particle]]s or [[function word]]s).",
parents = {"cmavo"},
breadcrumb_and_first_sort_key = "clusters",
}
labels["abstractors"] = {
description = "{{{langname}}} [[abstractor]]s, i.e. [[cmavo]] ([[particle]]s) that convert a [[bridi]] (Lojban sentence) into an abstract noun-like phrase.",
additional = "This allows the phrase to be embedded in another sentence, similar to a [[subordinate clause]].\n\n" ..
"All abstractors come from the [[selma'o]] (grammatical class) [[:Category:Lojban cmavo of selma'o NU|NU]].",
parents = {"cmavo"},
}
labels["elidable terminators"] = {
description = "{{{langname}}} [[elidable]] [[terminator]]s, used to [[indicate]] the end of certain [[phrase]]s.",
parents = {"cmavo"},
}
labels["indicators"] = {
description = "{{{langname}}} [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express the speaker's [[emotional]] [[attitude]] or add other [[metalinguistic]] [[information]] to a [[sentence]].",
additional = "Often the term ''indicator'' is used synonymously with ''[[:Category:Lojban attitudinal indicators|attitudinal indicator]]'', in which case " ..
"[[:Category:Lojban discursive indicators|discursive indicators]] and [[:Category:Lojban evidential indicators|evidential indicators]] are called simply ''discursives'' and ''evidentials''.",
parents = {"cmavo"},
}
labels["attitudinal indicators"] = {
description = "{{{langname}}} [[attitudinal]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express the speaker's [[emotional]] [[attitude]].",
additional = "These function somewhat similarly to [[interjection]]s in English but are integrated into the sentence structure.\n\n" ..
"Often attitudinal indicators are simply called ''indicators'', in which case what Wiktionary calls [[:Category:Lojban discursive indicators|discursive indicators]] " ..
"and [[:Category:Lojban evidential indicators|evidential indicators]] are called simply ''discursives'' and ''evidentials''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "attitudinal",
}
labels["discursive indicators"] = {
description = "{{{langname}}} [[discursive]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express [[metalinguistic]] ([[discourse]]) [[information]] about a sentence, similarly to English ''[[but]]'' and ''[[also]]''.",
additional = "These are often called simply ''discursives'', and [[:Category:Lojban attitudinal indicators|attitudinal indicators]] are simply called ''indicators''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "discursive",
}
labels["evidential indicators"] = {
description = "{{{langname}}} [[evidential]] [[indicator]]s, i.e. [[cmavo]] ([[particle]]s) used to express how the [[speaker]] came to make a given [[statement]] (e.g. by direct observation, by belief, by [[hearsay]], etc.).",
additional = "These are often called simply ''evidentials'', and [[:Category:Lojban attitudinal indicators|attitudinal indicators]] are simply called ''indicators''.",
parents = {"indicators"},
breadcrumb_and_first_sort_key = "evidential",
}
labels["letterals"] = {
description = "{{{langname}}} [[letteral]]s, i.e. [[name]]s of {{{langname}}} and non-{{{langname}}} [[letter]]s.",
parents = {"cmavo"},
}
labels["logical connectives"] = {
description = "{{{langname}}} [[logical]] [[connective]]s, similar to [[conjunction]]s in [[English]].",
parents = {"cmavo"},
}
labels["pro-forms"] = {
description = "{{{langname}}} [[pro-form]]s, used to make [[reference]] to previously specified [[phrase]]s or [[clause]]s.",
parents = {"cmavo"},
}
labels["pro-sumti"] = {
description = "{{{langname}}} [[pro-sumti]], similar to [[pronoun]]s (of various sorts) in [[English]].",
parents = {"pro-forms"},
}
labels["pro-bridi"] = {
description = "{{{langname}}} [[pro-]][[bridi]], similar to [[pro-sumti]] but which stand for entire [[sentence]]s ([[bridi]]) rather than individual [[element]]s ([[sumti]]).",
parents = {"pro-forms"},
}
labels["sumti tcita"] = {
description = "{{{langname}}} [[sumti tcita]], used to add extra non-required [[argument]]s in a [[sentence]], similar to [[preposition]]s in [[English]].",
additional = "Morphologically, [[sumti tcita]] are abbreviated (“[[modal]]”) forms of certain [[gismu]], and should not be confused with [[rafsi]].",
parents = {"cmavo"},
}
labels["tense tags"] = {
description = "{{{langname}}} [[tense]] [[tag]]s, used to specify the [[tense]] (e.g. [[past]], [[present]], [[future]]) of a [[sentence]].",
parents = {"cmavo"},
}
----------------- Cmene and related categories -----------------
labels["cmene"] = {
description = "{{{langname}}} [[cmene]], i.e. [[proper noun]]s [[law of Hobson-Jobson|respelled according to Lojban rules]].",
additional = "They are considered a separate part of speech from [[brivla]] (content words) and [[cmavo]] (function words).",
parents = {"lemmas"},
}
labels["fu'ivla cmene"] = {
description = "{{{langname}}} [[fu'ivla]] [[cmene]], i.e. [[cmene]] ([[proper noun]]s) that are also [[fu'ivla]] (single [[loanword]]s rather than [[compound]]s).",
parents = {"fu'ivla", "cmene"},
}
labels["lujvo cmene"] = {
description = "{{{langname}}} [[lujvo]] [[cmene]], i.e. [[cmene]] ([[proper noun]]s) that are also [[lujvo]] ([[compound]]s).",
parents = {"lujvo", "cmene"},
}
return {LABELS = labels, HANDLERS = handlers}
rh0ivwlckrhqpgpxhivwv7bjpxwklt7
ඇතිරේ
0
143327
233625
2026-05-08T16:58:12Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb + head|si|verb forms|head= + අමතර අවධානයට + මූලාශ්ර + ප්රවර්ගය
233625
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇතිරෙයි#ක්රියා පද|ඇතිරෙයි}}
=== නිරුක්තිය ===
{{etymon|si|id=අතුර ඒ|af|si>අතුර#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඒ>ප්රත්ය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර]] ([[ප්රකෘතිය]]) + [[-ඒ]] ([[ප්රත්ය]]) >'' [[ඇතිරේ]]
===උච්චාරණය===
* {{IPA|si|/ˈætireː/}}
===ක්රියා පද 1===
{{head|si|verb
|අතීත-අකර්මක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 1
|අනතීත-අකර්මක අන්ය පුරුෂ බහුවචන|ඇතිරෙති#ක්රියා පද 1
|අනතීත-අකර්මක උත්තම ඒකවචන|ඇතිරෙමි#ක්රියා පද 1
|අනතීත-අකර්මක උත්තම බහුවචන|ඇතිරෙමු#ක්රියා පද 1
|අනතීත-ප්රයුක්ත|?
|අනතීත-භාව නාම|ඇතිරෙනවා#ක්රියා පද 1
|අනතීත-කාරක නාම|ඇතිරෙන්නේ#ක්රියා පද 1
|වර්තමාන-නිපාත|ඇතිරෙමින්#ක්රියා පද 1}}
# {{lb|si|අකර්මක}} {{rfdef|si}}
===ක්රියා පද 2===
{{head|si|verb forms|head=ඇතිරේ|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 2|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇතිරෙති#ක්රියා පද 2|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරෙමි#ක්රියා පද 2|අනතීත-කර්ම කාරක උත්තම බහුවචන|ඇතිරෙමු#ක්රියා පද 2}}
# {{infl of|si|අතුර#ක්රියා පද||අනතීත|කර්ම කාරක|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
=== අමතර අවධානයට ===
{{top4}}
* {{l|si|පැතිරේ}}
* {{l|si|විසිරේ}}
* {{l|si|ඉතිරේ}}
* {{l|si|වැතිරේ}}
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[අතුර#ධාතු ප්රකෘතිය|අතුර]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
qzmvyqla4pdx2tz86qhakbyuduc2k74
ඇතිරිණි
0
143328
233627
2026-05-08T17:09:57Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + IPA|si + head|si|verb forms|head= + infl of|si (ක්රියා පද 1, ක්රියා පද 2) + ප්රවර්ගය
233627
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇතිරි#ක්රියා පද|ඇතිරි}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|ඇතිළි#ක්රියා පද|ඇතිළි}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|අතළ#ක්රියා පද|අතළ}} ''(අකර්මක සඳහා පමණි)''
===උච්චාරණය===
* {{IPA|si|/ˈætiriɳi/}}
===ක්රියා පද 1===
{{head|si|verb forms|head=ඇතිරිණි|අතීත-අකර්මක අන්ය පුරුෂ බහුවචන|ඇතිරුණු#ක්රියා පද 1|අතීත-අකර්මක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 1|අතීත-අකර්මක උත්තම බහුවචන|ඇතිරුණුමු#ක්රියා පද 1}}
# {{lb|si|අකර්මක}} {{infl of|si|ඇතිරේ#ක්රියා පද 1||අතීත|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
===ක්රියා පද 2===
{{head|si|verb forms|head=ඇතිරිණි|අතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇතිරුණු#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇතිරුණුමු#ක්රියා පද 2}}
# {{infl of|si|අතුරයි#ක්රියා පද||අතීත|කර්ම කාරක|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
8q5pu7p7hhbbzds4xbqgf6yrbtpskj2
ඇතිරුණු
0
143329
233628
2026-05-08T17:20:33Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + IPA|si + head|si|verb forms|head= + infl of|si (ක්රියා පද 1, ක්රියා පද 2) + ප්රවර්ගය
233628
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇතිරි#ක්රියා පද|ඇතිරි}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|ඇතුළු#ක්රියා පද|ඇතුළු}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|ඇතුළ#ක්රියා පද|ඇතුළ}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|අතළ#ක්රියා පද|අතළ}} ''(අකර්මක සඳහා පමණි)''
* {{l|si|ඇතුරුණු#ක්රියා පද|ඇතුරුණු}}
===උච්චාරණය===
* {{IPA|si|/ˈætiruɳu/}}
===ක්රියා පද 1===
{{head|si|verb forms|head=ඇතිරුණු|අතීත-අකර්මක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 1|අතීත-අකර්මක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 1|අතීත-අකර්මක උත්තම බහුවචන|ඇතිරුණුමු#ක්රියා පද 1}}
# {{lb|si|අකර්මක}} {{infl of|si|ඇතිරේ#ක්රියා පද 1||අතීත|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
===ක්රියා පද 2===
{{head|si|verb forms|head=ඇතිරිණි|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇතිරිණි#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 2|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇතිරුණුමු#ක්රියා පද 2}}
# {{infl of|si|අතුරයි#ක්රියා පද||අතීත|කර්ම කාරක|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
q6uqpph0nyoegfsjquipef6v1t0q906
අතුරා
0
143330
233629
2026-05-08T17:38:37Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms|head= + alternative form of|si + infl of|si + මූලාශ්ර + ප්රවර්ගය
233629
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අතුට#ක්රියා පද|අතුට}} ''(අතීත නිපාත සඳහා පමණි)''
* {{l|si|අතොට#ක්රියා පද|අතොට}} ''(අතීත නිපාත සඳහා පමණි)''
* {{l|si|අතොටැ#ක්රියා පද|අතොටැ}} ''(අතීත නිපාත සඳහා පමණි)''
=== නිරුක්තිය ===
{{etymon|si|id=අතුර ආ|af|si>අතුර#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ආ>ප්රත්ය|tree=1}}
''[[අතුර#ධාතු ප්රකෘතිය|අතුර ]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අතුර් - '''අ''' ([[ස්වර ලොපය]]) + -ආ >'' [[අතුරා]]
===උච්චාරණය===
* {{IPA|si|/ˈaturaː/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරා|සකර්මක වර්තමාන-නිපාත|අතුරමින්#ක්රියා පද|සකර්මක අනාගත-නිපාත|අතුරනුව#ක්රියා පද|කර්ම කාරක අතීත-නිපාත|ඇතිරී#ක්රියා පද 2|ආවස්ථික-නිපාත|?}}
# {{lb|si|සකර්මක}} {{alternative form of|si|අතුරයි#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||අතීත|නිපාත ක්රියා}}
=== මූලාශ්ර ===
<references/>
* "[https://tipitaka.lk/library/875 අතුට]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 41 පිටුව
* "[https://tipitaka.lk/library/875 අතොට, අතොටැ]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 42 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]]
ecx7sneeie2iombqblouas5z1hyg59t
ඇජරකු
0
143331
233630
2026-05-08T18:33:20Z
WrdSrchSi
3305
Page created.
233630
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3
පිළිවාදුවකු
0
143332
233631
2026-05-08T18:35:32Z
WrdSrchSi
3305
Page created.
233631
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3
ගුණවඩුවෝ
0
143333
233633
2026-05-08T18:46:14Z
WrdSrchSi
3305
Page created.
233633
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== සංඥා නාම පදය ===
{{head|si|proper form}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
ggq7n5525re74imqi2kl0qkzwgdvju4
පතිනිය
0
143334
233634
2026-05-08T18:48:05Z
WrdSrchSi
3305
Page created.
233634
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
සමාගමයේ
0
143335
233635
2026-05-08T18:50:23Z
WrdSrchSi
3305
Page created.
233635
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3
පැවෙනුයේ
0
143336
233636
2026-05-08T18:58:07Z
WrdSrchSi
3305
Page created: + quote with link + අමතර අවධානයට
233636
wikitext
text/x-wiki
== සිංහල ==
=== ක්රියා පද ===
{{head|si|verb form}}
# {{{1|{{rfdef|si}}}}} #: ''{{{2|<!-- example sentence -->}}}''
#:* අමරසිරි ගුණවඩු, ''[https://archives1.silumina.lk/2019/03/09/පුන්කලස/හෙළබසට-වැඩ-වැඩූ-අමරසිරි-ගුණවඩූ මහ හෙළ වත]'', 1957
#:*: ''එ තෙකින් මැ නියම මුනිදස්හු නම් පළ නො වෙති. එබැවින් ඔවුන් යම් තම් හෝ හඳුනන්නාහු ඉමඳ මැ යැ. මෙ වත '''පැවෙනුයේ''' නියම මුනිදසුන් අඳුන්වන්නටත් පළ කරන්නටත් පතා යැ. එ මැ යැ මෙහි පරමරුත!’''
=== අමතර අවධානයට ===
{{top2}}
* {{l|si|පවියි}}
* {{l|si|පැවේ}}
{{bottom}}
h5mylwgqnd8yyfyegwyl9iwz50qkqrg
හෙල
0
143337
233637
2026-05-09T03:16:26Z
Lee
19
'{{see also|හෙළ}} == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවති...' යොදමින් නව පිටුවක් තනන ලදි
233637
wikitext
text/x-wiki
{{see also|හෙළ}}
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
lc7ub7du97gt9a5fy3y2jyhko2alvn7
233639
233637
2026-05-09T03:18:02Z
Lee
19
233639
wikitext
text/x-wiki
{{see also|හෙළ}}
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# [[බෑවුම]]
# [[ප්රපාතය]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
ilii7vs4f0rz0zvhdpeyxt7x8db5vrc
එළ
0
143338
233641
2026-05-09T03:19:35Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
233641
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
හෙළ පියුම
0
143339
233642
2026-05-09T03:19:48Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
233642
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
233643
233642
2026-05-09T03:20:12Z
Lee
19
233643
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# [[සුදු නෙලුම]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
6ak72czi2deogx6xqdyd3w4fbiwaoay
කෙනෙක්
0
143340
233644
2026-05-09T03:23:05Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
233644
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
{{C|si|නිත්ය බහු වචන}}
3sgis5d8eiownv9l639565pucrqqsvi
233645
233644
2026-05-09T03:25:07Z
Lee
19
233645
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
-->
=== අමතර අවධානයට ===
* {{l|si|අයෙක්}}
* {{l|si|ඇතමෙක්}}
{{cln|si|නිත්ය බහු වචන}}
f3l3jjanrptbhd50q9esqos52gs2cij
අයෙක්
0
143341
233646
2026-05-09T03:25:45Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} --> === අමතර අවධානයට === * {{l|si|කෙනෙක්}} * {{l|si|ඇතමෙක්}} {{cln...' යොදමින් නව පිටුවක් තනන ලදි
233646
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
-->
=== අමතර අවධානයට ===
* {{l|si|කෙනෙක්}}
* {{l|si|ඇතමෙක්}}
{{cln|si|නිත්ය බහු වචන}}
rd6irx5bgep45rwx6254xy0nu79812u
ඇතමෙක්
0
143342
233647
2026-05-09T03:26:39Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} --> === අමතර අවධානයට === * {{l|si|කෙනෙක්}} * {{l|si|අයෙක්}} * {{l|si|...' යොදමින් නව පිටුවක් තනන ලදි
233647
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
-->
=== අමතර අවධානයට ===
* {{l|si|කෙනෙක්}}
* {{l|si|අයෙක්}}
* {{l|si|ඇතැමෙක්}}
{{cln|si|නිත්ය බහු වචන}}
9d9f6uko2xg0irdzgni021rw8cw0urd
ඇතැමෙක්
0
143343
233648
2026-05-09T03:26:49Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} --> === අමතර අවධානයට === * {{l|si|කෙනෙක්}} * {{l|si|අයෙක්}} * {{l|si|...' යොදමින් නව පිටුවක් තනන ලදි
233648
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
-->
=== අමතර අවධානයට ===
* {{l|si|කෙනෙක්}}
* {{l|si|අයෙක්}}
* {{l|si|ඇතමෙක්}}
{{cln|si|නිත්ය බහු වචන}}
a26wzyelooviw1ed2jwtxcdopc8kle4
ප්රවර්ගය:සිංහල නිත්ය බහු වචන
14
143344
233649
2026-05-09T03:51:23Z
Lee
19
නිර්මාණය
233649
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:category tree/lang/arn
828
143345
233651
2025-04-28T04:58:46Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/arn]] to [[Module:category tree/lang/arn]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233651
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["Unified spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Unified Alphabet]].",
parents = {{ name = "terms by orthographic property", sort = "Unified" }},
breadcrumb = "Unified",
}
labels["Raguileo spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Raguileo]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Raguileo" }},
breadcrumb = "Raguileo",
}
labels["Nhewenh spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Nhewenh]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Nhewenh" }},
breadcrumb = "Nhewenh",
}
labels["Azumchefi spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Azumchefi]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Azumchefi" }},
breadcrumb = "Azumchefi",
}
return { LABELS = labels, HANDLERS = handlers }
k4pkap87l4k8t0z3gvqwo3bumcgrxts
233652
233651
2026-05-09T03:53:19Z
Lee
19
[[:en:Module:category_tree/lang/arn]] වෙතින් එක් සංශෝධනයක්
233651
Scribunto
text/plain
local labels = {}
local handlers = {}
labels["Unified spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Unified Alphabet]].",
parents = {{ name = "terms by orthographic property", sort = "Unified" }},
breadcrumb = "Unified",
}
labels["Raguileo spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Raguileo]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Raguileo" }},
breadcrumb = "Raguileo",
}
labels["Nhewenh spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Nhewenh]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Nhewenh" }},
breadcrumb = "Nhewenh",
}
labels["Azumchefi spellings"] = {
description = "{{{langname}}} terms spelled in the [[w:Mapudungun alphabet|Azumchefi]] orthography.",
parents = {{ name = "terms by orthographic property", sort = "Azumchefi" }},
breadcrumb = "Azumchefi",
}
return { LABELS = labels, HANDLERS = handlers }
k4pkap87l4k8t0z3gvqwo3bumcgrxts
Module:category tree/lang/mwl
828
143346
233653
2026-02-16T03:18:35Z
en>Benwing2
0
remove some stuff now in [[Module:category tree/fam/roa-ibe]]
233653
Scribunto
text/plain
local labels = {}
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- VERBS --
-- --
-----------------------------------------------------------------------------
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:Mirandese verbs with e-ie alternation]].
local vowel_alternations = {
["o-uo"] = {
stressed = {"o", "uo"},
},
["e-ie"] = {
stressed = {"e", "ie"},
},
["a-i"] = {
stressed = {"a", "i"},
},
["e-i"] = {
stressed = {"e", "i"},
},
["a-ei"] = {
stressed = {"a", "ei"},
},
["e-ei"] = {
stressed = {"e", "ei"},
},
["a-e"] = {
stressed = {"a", "e"},
},
["o-e"] = {
stressed = {"o", "e"},
},
["u-o"] = {
stressed = {"u", "o"},
},
}
for alt, obj in pairs(vowel_alternations) do
local from, to = unpack(obj.stressed)
local desc = "{{{langname}}} verbs whose root vowel changes from ''" .. from .. "'' to ''" .. to .. "'' when stressed"
desc = desc .. "."
labels["verbs with " .. alt .. " alternation"] = {
description = desc,
displaytitle = "{{{langname}}} verbs with {{m|mwl||" .. alt .. "}} alternation",
parents = {{name = "verbs by vowel alternation", sort = alt}},
breadcrumb = "{{m|mwl||" .. alt .. "}}",
}
end
-- Add labels for e.g. [[Category:Mirandese verbs with c-qu alternation]].
local consonant_alternations = {
["c-ç"] = {"c", "ç"},
["c-qu"] = {"qu", "c"},
["c-z"] = {"c", "z"},
["c-zc"] = {"c", "zc"},
["g-gu"] = {"gu", "g"},
["g-j"] = {"g", "j"},
}
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|mwl||" .. alt .. "}} alternation",
parents = {{name = "verbs by consonant alternation", sort = alt}},
breadcrumb = "{{m|mwl||" .. 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",
}
return {LABELS = labels}
62jjsuyuwx8yr327p4qkyujeq857zoc
233654
233653
2026-05-09T03:53:35Z
Lee
19
[[:en:Module:category_tree/lang/mwl]] වෙතින් එක් සංශෝධනයක්
233653
Scribunto
text/plain
local labels = {}
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- VERBS --
-- --
-----------------------------------------------------------------------------
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:Mirandese verbs with e-ie alternation]].
local vowel_alternations = {
["o-uo"] = {
stressed = {"o", "uo"},
},
["e-ie"] = {
stressed = {"e", "ie"},
},
["a-i"] = {
stressed = {"a", "i"},
},
["e-i"] = {
stressed = {"e", "i"},
},
["a-ei"] = {
stressed = {"a", "ei"},
},
["e-ei"] = {
stressed = {"e", "ei"},
},
["a-e"] = {
stressed = {"a", "e"},
},
["o-e"] = {
stressed = {"o", "e"},
},
["u-o"] = {
stressed = {"u", "o"},
},
}
for alt, obj in pairs(vowel_alternations) do
local from, to = unpack(obj.stressed)
local desc = "{{{langname}}} verbs whose root vowel changes from ''" .. from .. "'' to ''" .. to .. "'' when stressed"
desc = desc .. "."
labels["verbs with " .. alt .. " alternation"] = {
description = desc,
displaytitle = "{{{langname}}} verbs with {{m|mwl||" .. alt .. "}} alternation",
parents = {{name = "verbs by vowel alternation", sort = alt}},
breadcrumb = "{{m|mwl||" .. alt .. "}}",
}
end
-- Add labels for e.g. [[Category:Mirandese verbs with c-qu alternation]].
local consonant_alternations = {
["c-ç"] = {"c", "ç"},
["c-qu"] = {"qu", "c"},
["c-z"] = {"c", "z"},
["c-zc"] = {"c", "zc"},
["g-gu"] = {"gu", "g"},
["g-j"] = {"g", "j"},
}
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|mwl||" .. alt .. "}} alternation",
parents = {{name = "verbs by consonant alternation", sort = alt}},
breadcrumb = "{{m|mwl||" .. 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",
}
return {LABELS = labels}
62jjsuyuwx8yr327p4qkyujeq857zoc
Module:category tree/lang/mvi
828
143347
233655
47764
2025-05-01T16:49:53Z
en>Saph
0
233655
Scribunto
text/plain
local labels = {}
-- Orthographic properties
labels["kyūjitai spellings"] = {
breadcrumb = "kyūjitai",
description = "{{{langname}}} terms spelled with {{ja-lg|kyūjitai}} {{ja-lg|kanji}}.",
additional = "To add a word to this category, you can use {{temp|cln|mvi|kyūjitai spellings}} or {{temp|mvi-kyujitai spelling of}}.",
parents = {"terms by orthographic property", "obsolete forms"}
}
return {LABELS = labels}
53ynevyy69714v516nihep2l2senq95
233656
221114
2026-05-09T03:53:49Z
Lee
19
[[:en:Module:category_tree/lang/mvi]] වෙතින් එක් සංශෝධනයක්
47763
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("mvi")
local m_ja = require("Module:ja")
local m_jpx = require("Module:category tree/poscatboiler/data/lang-specific/jpx")
m_jpx.add_labels(labels, lang)
m_jpx.add_handlers(handlers, lang, m_ja)
return {LABELS = labels, HANDLERS = handlers}
3gjdlnd4jib4ekxrvpxgphizthzmfoh
233657
2025-05-01T16:49:53Z
en>Saph
0
233657
Scribunto
text/plain
local labels = {}
-- Orthographic properties
labels["kyūjitai spellings"] = {
breadcrumb = "kyūjitai",
description = "{{{langname}}} terms spelled with {{ja-lg|kyūjitai}} {{ja-lg|kanji}}.",
additional = "To add a word to this category, you can use {{temp|cln|mvi|kyūjitai spellings}} or {{temp|mvi-kyujitai spelling of}}.",
parents = {"terms by orthographic property", "obsolete forms"}
}
return {LABELS = labels}
53ynevyy69714v516nihep2l2senq95
233658
233657
2026-05-09T03:54:32Z
Lee
19
[[:en:Module:category_tree/lang/mvi]] වෙතින් එක් සංශෝධනයක්
233657
Scribunto
text/plain
local labels = {}
-- Orthographic properties
labels["kyūjitai spellings"] = {
breadcrumb = "kyūjitai",
description = "{{{langname}}} terms spelled with {{ja-lg|kyūjitai}} {{ja-lg|kanji}}.",
additional = "To add a word to this category, you can use {{temp|cln|mvi|kyūjitai spellings}} or {{temp|mvi-kyujitai spelling of}}.",
parents = {"terms by orthographic property", "obsolete forms"}
}
return {LABELS = labels}
53ynevyy69714v516nihep2l2senq95
233659
233658
2026-05-09T03:55:21Z
Lee
19
Lee විසින් යලියොමුවක් නොදමාම [[Module:category tree/lang/mvi/Module:category tree/lang/mvi]] පිටුව [[Module:category tree/lang/mvi]] වෙත ගෙනයන ලදී
233657
Scribunto
text/plain
local labels = {}
-- Orthographic properties
labels["kyūjitai spellings"] = {
breadcrumb = "kyūjitai",
description = "{{{langname}}} terms spelled with {{ja-lg|kyūjitai}} {{ja-lg|kanji}}.",
additional = "To add a word to this category, you can use {{temp|cln|mvi|kyūjitai spellings}} or {{temp|mvi-kyujitai spelling of}}.",
parents = {"terms by orthographic property", "obsolete forms"}
}
return {LABELS = labels}
53ynevyy69714v516nihep2l2senq95
Module:category tree/lang/ars
828
143349
233660
2025-12-17T16:36:45Z
en>Fenakhay
0
Created page with "local labels = {} local handlers = {} local lang = require("Module:languages").getByCode("ars") require("Module:category tree/lang/sem-arb").add_labels_and_handlers(labels, handlers, lang) return {LABELS = labels, HANDLERS = handlers}"
233660
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("ars")
require("Module:category tree/lang/sem-arb").add_labels_and_handlers(labels, handlers, lang)
return {LABELS = labels, HANDLERS = handlers}
9seh77phh7ggcpog93h50rq8nrmkrg2
233661
233660
2026-05-09T03:55:54Z
Lee
19
[[:en:Module:category_tree/lang/ars]] වෙතින් එක් සංශෝධනයක්
233660
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("ars")
require("Module:category tree/lang/sem-arb").add_labels_and_handlers(labels, handlers, lang)
return {LABELS = labels, HANDLERS = handlers}
9seh77phh7ggcpog93h50rq8nrmkrg2
Module:category tree/lang/odt
828
143350
233662
2026-02-16T22:41:22Z
en>Benwing2
0
j-presents handled at Proto-Germanic level
233662
Scribunto
text/plain
local labels = {}
local handlers = {}
local insert = table.insert
labels["verbs by derivation type"] = {
parents = {{ name = "verbs", sort = "derivation" }},
breadcrumb = "by derivation type",
}
labels["separable verbs"] = {
description = "{{{langname}}} verbs that split into two parts in certain constructions.",
parents = "verbs by derivation type",
breadcrumb = "separable",
}
labels["basic verbs"] = {
description = "{{{langname}}} verbs which are not prefixed and cannot be separated.",
parents = "verbs by derivation type",
breadcrumb = "basic",
}
labels["prefixed verbs"] = {
parents = "verbs by derivation type",
breadcrumb = "prefixed",
}
labels["contracted verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
},
breadcrumb = "contracted",
}
labels["irregular strong verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
"strong verbs",
},
breadcrumb = "irregular strong",
}
labels["Verner alternating verbs"] = {
description = "{{{langname}}} verbs which alternate between consonants according to [[w:Verner's law|Verner's law]].",
parents = "irregular strong verbs",
breadcrumb = "Verner alternating",
}
labels["irregular weak verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
"weak verbs",
},
breadcrumb = "irregular weak",
}
labels["hiatus verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
},
breadcrumb = "hiatus",
}
labels["consonant stem nouns"] = {
description = "{{{langname}}} nouns which end in a consonant.",
parents = "nouns by inflection type",
breadcrumb = "consonant stem",
}
insert(handlers, function (data)
local separable, with = data.label:match("^(separable) verbs with (.+)$")
if separable and with then
return {
description = "{{{langname}}} verbs which separate into " .. with .. " and their stem.",
parents = "separable verbs",
breadcrumb = with,
}
end
end)
insert(handlers, function(data)
local gender, category
for _, g in ipairs({ "feminine", "masculine", "neuter" }) do
gender, category = data.label:match("^(" .. g .. ") (.+)$")
if gender then break end
end
category = category or data.label
local stem, POS = category:match("^(.-)%-stem (%w+)$")
if stem and POS then
local ret = {
description = "{{{langname}}} " .. (gender or "") .. " " .. POS .. " which decline in historical {{m|odt||-" .. stem .. "}}.",
breadcrumb = (gender and gender .. " " or "") .. "-" .. stem .. " stems",
}
if gender then
ret.parents = {
stem .. "-stem " .. POS,
"nouns by inflection type",
}
else
ret.parents = {
{ name = POS, sort = stem },
{ name = "nouns by inflection type", sort = stem },
}
end
return ret
end
end)
return { LABELS = labels, HANDLERS = handlers }
j96p1axwod9whx7cj9twchwnynd34is
233663
233662
2026-05-09T03:56:13Z
Lee
19
[[:en:Module:category_tree/lang/odt]] වෙතින් එක් සංශෝධනයක්
233662
Scribunto
text/plain
local labels = {}
local handlers = {}
local insert = table.insert
labels["verbs by derivation type"] = {
parents = {{ name = "verbs", sort = "derivation" }},
breadcrumb = "by derivation type",
}
labels["separable verbs"] = {
description = "{{{langname}}} verbs that split into two parts in certain constructions.",
parents = "verbs by derivation type",
breadcrumb = "separable",
}
labels["basic verbs"] = {
description = "{{{langname}}} verbs which are not prefixed and cannot be separated.",
parents = "verbs by derivation type",
breadcrumb = "basic",
}
labels["prefixed verbs"] = {
parents = "verbs by derivation type",
breadcrumb = "prefixed",
}
labels["contracted verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
},
breadcrumb = "contracted",
}
labels["irregular strong verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
"strong verbs",
},
breadcrumb = "irregular strong",
}
labels["Verner alternating verbs"] = {
description = "{{{langname}}} verbs which alternate between consonants according to [[w:Verner's law|Verner's law]].",
parents = "irregular strong verbs",
breadcrumb = "Verner alternating",
}
labels["irregular weak verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
"weak verbs",
},
breadcrumb = "irregular weak",
}
labels["hiatus verbs"] = {
-- add a description
parents = {
"verbs by inflection type",
"irregular verbs",
},
breadcrumb = "hiatus",
}
labels["consonant stem nouns"] = {
description = "{{{langname}}} nouns which end in a consonant.",
parents = "nouns by inflection type",
breadcrumb = "consonant stem",
}
insert(handlers, function (data)
local separable, with = data.label:match("^(separable) verbs with (.+)$")
if separable and with then
return {
description = "{{{langname}}} verbs which separate into " .. with .. " and their stem.",
parents = "separable verbs",
breadcrumb = with,
}
end
end)
insert(handlers, function(data)
local gender, category
for _, g in ipairs({ "feminine", "masculine", "neuter" }) do
gender, category = data.label:match("^(" .. g .. ") (.+)$")
if gender then break end
end
category = category or data.label
local stem, POS = category:match("^(.-)%-stem (%w+)$")
if stem and POS then
local ret = {
description = "{{{langname}}} " .. (gender or "") .. " " .. POS .. " which decline in historical {{m|odt||-" .. stem .. "}}.",
breadcrumb = (gender and gender .. " " or "") .. "-" .. stem .. " stems",
}
if gender then
ret.parents = {
stem .. "-stem " .. POS,
"nouns by inflection type",
}
else
ret.parents = {
{ name = POS, sort = stem },
{ name = "nouns by inflection type", sort = stem },
}
end
return ret
end
end)
return { LABELS = labels, HANDLERS = handlers }
j96p1axwod9whx7cj9twchwnynd34is
Module:category tree/lang/roa-opt
828
143351
233664
2026-02-16T03:42:20Z
en>Benwing2
0
bug fix
233664
Scribunto
text/plain
local labels = {}
local insert = table.insert
labels["verbs by auxiliary"] = {
description = "{{{langname}}} verbs categorized by the auxiliary they take in the composed tenses.",
parents = {{name = "verbs", sort = "auxiliary"}},
}
local function join_or(items)
return mw.text.listToText(items, nil, " or ")
end
for _, aux in ipairs {"haver", "seer", {"haver", "seer"}} do
local bare_aux, link_aux, nolink_aux
if type(aux) == "table" then
bare_aux = join_or(aux)
link_aux = {}
nolink_aux = {}
for _, au in ipairs(aux) do
insert(link_aux, "{{m|{{{langcode}}}|" .. au .. "}}")
insert(nolink_aux, "{{m|{{{langcode}}}||" .. au .. "}}")
end
link_aux = join_or(link_aux)
nolink_aux = join_or(nolink_aux)
else
bare_aux = aux
link_aux = "{{m|{{{langcode}}}|" .. aux .. "}}"
nolink_aux = "{{m|{{{langcode}}}||" .. aux .. "}}"
end
labels["verbs taking " .. bare_aux .. " as auxiliary"] = {
description = "{{{langname}}} verbs taking " .. link_aux .. " as auxiliary in the composed tenses.",
displaytitle = "{{{langname}}} verbs taking " .. nolink_aux .. " as auxiliary",
parents = {{name = "verbs by auxiliary", sort = bare_aux}},
breadcrumb = nolink_aux,
}
end
return {LABELS = labels}
mc3blaid5zgrib8wp96799jhc3otcrw
233665
233664
2026-05-09T03:56:36Z
Lee
19
[[:en:Module:category_tree/lang/roa-opt]] වෙතින් එක් සංශෝධනයක්
233664
Scribunto
text/plain
local labels = {}
local insert = table.insert
labels["verbs by auxiliary"] = {
description = "{{{langname}}} verbs categorized by the auxiliary they take in the composed tenses.",
parents = {{name = "verbs", sort = "auxiliary"}},
}
local function join_or(items)
return mw.text.listToText(items, nil, " or ")
end
for _, aux in ipairs {"haver", "seer", {"haver", "seer"}} do
local bare_aux, link_aux, nolink_aux
if type(aux) == "table" then
bare_aux = join_or(aux)
link_aux = {}
nolink_aux = {}
for _, au in ipairs(aux) do
insert(link_aux, "{{m|{{{langcode}}}|" .. au .. "}}")
insert(nolink_aux, "{{m|{{{langcode}}}||" .. au .. "}}")
end
link_aux = join_or(link_aux)
nolink_aux = join_or(nolink_aux)
else
bare_aux = aux
link_aux = "{{m|{{{langcode}}}|" .. aux .. "}}"
nolink_aux = "{{m|{{{langcode}}}||" .. aux .. "}}"
end
labels["verbs taking " .. bare_aux .. " as auxiliary"] = {
description = "{{{langname}}} verbs taking " .. link_aux .. " as auxiliary in the composed tenses.",
displaytitle = "{{{langname}}} verbs taking " .. nolink_aux .. " as auxiliary",
parents = {{name = "verbs by auxiliary", sort = bare_aux}},
breadcrumb = nolink_aux,
}
end
return {LABELS = labels}
mc3blaid5zgrib8wp96799jhc3otcrw
Module:category tree/lang/zle-ono
828
143352
233666
2025-04-28T05:01:18Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/zle-ono]] to [[Module:category tree/lang/zle-ono]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233666
Scribunto
text/plain
local labels = {}
local handlers = {}
local en_utilities_module = "Module:en-utilities"
--------------------------------- Adjectives --------------------------------
local adj_like_poses = {"adjective", "pronoun", "determiner", "numeral", "suffix"}
for _, pos in ipairs(adj_like_poses) do
local plpos = require(en_utilities_module).pluralize(pos)
labels["hard " .. plpos] = {
description = "{{{langname}}} hard-stem " .. plpos .. ".",
breadcrumb = "hard",
parents = {{name = plpos .. " by inflection type", sort = "hard-stem"}},
}
labels["soft " .. plpos] = {
description = "{{{langname}}} soft-stem " .. plpos .. ".",
breadcrumb = "soft",
parents = {{name = plpos .. " by inflection type", sort = "soft-stem"}},
}
labels[plpos .. " with short forms"] = {
description = "{{{langname}}} " .. plpos .. " with short-form inflections.",
breadcrumb = "with short forms",
parents = {{name = plpos .. " by inflection type", sort = "short forms"}},
}
end
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
--[=[
Noun declension specifications. The top-level key is the stem class, and the value is an object containing properties of
the stem class. If the stem class contains the word 'GENDER' in it, it expands into labels both for a parent category
that subsumes several genders (obtained by removing the word 'GENDER' and following whitespace) as well as
gender-specific children categories (obtained by replacing the word 'GENDER' with the genders specified in the
`possible_genders` field). The fields of the property object for a given stem class are as follows:
* `gender`: The description of the gender(s) of the stem class. If preceded by ~, the description is preceded by
"most commonly". This appears in the `additional` field of the label properties. It is not used in gender-specific
children categories; instead the gender of that category is used.
* `possible_genders`: The possible genders this class occurs in. If this is specified, the word 'GENDER' must occur in
the stem class, and gender-specific variants of the stem class (with GENDER replaced by the possible genders) are
handled along with a parent category subsuming all genders.
* `singular`: The nominative singular ending. Use <...> to enclose Old Church Slavonic text; it will be given the
appropriate language tag and italicized.
* `GENDER_singular`: The nominative singular ending for the GENDER variant of this stem class. If not specified, the
value of `singular` is used.
* `plural`: The nominative plural ending.
* `GENDER_singular`: The nominative plural ending for the GENDER variant of this stem class. If not specified, the
value of `plural` is used.
* `breadcrumb`: The breadcrumb for the category, appearing in the trail of breadcrumbs at the top of the page. If this
stem has gender-specific variants, the breadcrumb specified here is used only for the parent category, while the
gender-specific child categories use the gender as the breadcrumb. If not specified, it defaults to `sortkey`. If that
is also not specified, or if the breadcrumb has the value "+", the stem class (without the word 'GENDER') is used.
(Use "+" when a sortkey is specified but the stem class should be used as the breadcrumb.)
* `parent`: The parent category. If specified, the actual category label is formed by appending the part of speech (e.g.
"nouns"). Defaults to "POS by inflection type" where POS is the part of speech. Note that gender-specific child
categories do not use this, but always have the gender-subsuming parent stem class category as their parent.
* `sortkey`: The sort key used for sorting this category among its parent's children. Defaults to the stem class
(without the word 'GENDER'). Note that gender-specific child categories do nto use this, but always use the gender
as the sort key.
]=]
local noun_decls = {
["hard GENDER a-stem"] = {
gender = "~feminine",
possible_genders = {"masculine", "feminine"},
singular = "<-а>",
plural = "<-ꙑ>",
breadcrumb = "+",
sortkey = "a-stem",
},
["soft GENDER a-stem"] = {
gender = "~feminine",
possible_genders = {"masculine", "feminine"},
singular = "<-ꙗ> (or <-а> after an unpaired palatal consonant), or <-ꙑни>, or sometimes <-ии>/<-ьи>",
masculine_singular = "<-ꙗ> (or <-а> after an unpaired palatal consonant), or <-ии>/<-ьи>",
plural = "<-ѩ> (or <-ѧ> after an unpaired palatal consonant)",
breadcrumb = "+",
sortkey = "a-stem",
},
["GENDER i-stem"] = {
gender = "~feminine (sometimes masculine)",
possible_genders = {"masculine", "feminine"},
singular = "<-ь>",
plural = "<-и> (usually <-ьѥ> or <-иѥ> when masculine)",
masculine_plural = "<-ьѥ> or <-иѥ>",
feminine_plural = "<-и>",
},
["GENDER ī-stem"] = {
gender = "~feminine (masculine when referring to a person)",
possible_genders = {"masculine", "feminine"},
singular = "<-ии> or <-ьи>",
plural = "<-иѭ> or <-ьѩ>",
parent = "soft a-stem",
},
["hard GENDER o-stem"] = {
gender = "masculine or neuter",
possible_genders = {"masculine", "neuter"},
singular = "<-е> when masculine, <-о> when neuter",
masculine_singular = "<-ъ>",
neuter_singular = "<-о>",
plural = "<-и> when masculine, <-а> when neuter",
masculine_plural = "<-и>",
neuter_plural = "<-а>",
breadcrumb = "+",
sortkey = "o-stem",
},
["soft GENDER o-stem"] = {
gender = "masculine or neuter",
possible_genders = {"masculine", "neuter"},
singular = "<-ь> when masculine, <-ѥ> (or <-е> after an unpaired palatal consonant) when neuter",
masculine_singular = "<-ь>",
neuter_singular = "<-ѥ> (or <-е> after an unpaired palatal consonant)",
plural = "<-и> when masculine, <-ꙗ> (or <-а> after an unpaired palatal consonant) when neuter",
masculine_plural = "<-и>",
neuter_plural = "<-ꙗ> (or <-а> after an unpaired palatal consonant)",
breadcrumb = "+",
sortkey = "o-stem",
},
["u-stem"] = {
gender = "~masculine",
singular = "<-ъ>",
plural = "<-ове>",
},
["GENDER n-stem"] = {
gender = "~masculine (nouns in <-мѧ> are neuter)",
possible_genders = {"masculine", "neuter"},
singular = "<-ꙑ>, <-нь>, or <-мѧ>",
masculine_singular = "<-ꙑ> or <-нь>",
neuter_singular = "<-мѧ>",
plural = "<-не> (or <-мена> if ending in <-мѧ)>",
masculine_plural = "<-не>",
neuter_plural = "<-мена>",
parent = "consonant-stem",
},
["nt-stem"] = {
gender = "~neuter",
singular = "<-ѧ>",
plural = "<-ѧта>",
parent = "consonant-stem",
},
["r-stem"] = {
gender = "~feminine",
singular = "<-и>",
plural = "<-ери>",
parent = "consonant-stem",
},
["s-stem"] = {
gender = "~neuter",
singular = "<-о> (<-е> after a palatal consonant)",
plural = "<-еса>",
parent = "consonant-stem",
},
["v-stem"] = {
gender = "~feminine",
singular = "<-ꙑ>",
plural = "<-ъви>",
parent = "consonant-stem",
},
}
for _, pos in ipairs({"nouns"}) do
local sgpos = pos:gsub("s$", "")
labels["consonant-stem " .. pos] = {
description = "{{{langname}}} consonant-stem " .. pos .. ".",
additional = "This is not a single declension class, but a set of related declension classes, with endings that are"
.. " largely identical outside of the nominative, accusative and vocative.",
breadcrumb = "consonant-stem",
parents = pos .. " by inflection type",
}
local function mark_ending(ending)
return (ending:gsub("<(.-)>", "{{m|zle-ono||%1|tr=-}}"))
end
for full_decl, spec in pairs(noun_decls) do
local most_commonly, gender = spec.gender:match("^(~)(.*)$")
gender = gender or spec.gender
local subgenders = spec.possible_genders
local decl
if subgenders then
if not full_decl:find("GENDER") then
error(("Internal error: Declension spec '%s' needs to have the word 'GENDER' in it, in all caps"):format(full_decl))
end
decl = full_decl:gsub("GENDER ", "")
else
decl = full_decl
end
local breadcrumb = spec.breadcrumb or spec.sortkey or "+"
if breadcrumb == "+" then
breadcrumb = decl
end
labels[decl .. " " .. pos] = {
description = "{{{langname}}} " .. decl .. " " .. pos .. ".",
additional = ("These %s normally end in the singular in %s; in the plural in %s; and are %s%s."):format(
pos, mark_ending(spec.singular), mark_ending(spec.plural), most_commonly and "most commonly " or "",
mark_ending(gender)),
breadcrumb = breadcrumb,
parents = {{
name = spec.parent and spec.parent .. " " .. pos or pos .. " by inflection type",
sort = spec.sortkey or decl,
}},
}
if subgenders then
for _, subgender in ipairs(subgenders) do
local gender_decl = full_decl:gsub("GENDER", subgender)
labels[gender_decl .. " " .. pos] = {
description = "{{{langname}}} " .. gender_decl .. " " .. pos .. ".",
additional = ("These %s normally end in the singular in %s; in the plural in %s; and are %s."):format(
pos, mark_ending(spec[subgender .. "_singular"] or spec.singular),
mark_ending(spec[subgender .. "_plural"] or spec.plural), subgender),
breadcrumb = subgender,
parents = {{
name = decl .. " " .. pos,
sort = subgender,
}},
}
end
end
end
end
return {LABELS = labels, HANDLERS = handlers}
oghn99ypq3ajyyv20gnpbj5t2uf1bye
233667
233666
2026-05-09T03:56:56Z
Lee
19
[[:en:Module:category_tree/lang/zle-ono]] වෙතින් එක් සංශෝධනයක්
233666
Scribunto
text/plain
local labels = {}
local handlers = {}
local en_utilities_module = "Module:en-utilities"
--------------------------------- Adjectives --------------------------------
local adj_like_poses = {"adjective", "pronoun", "determiner", "numeral", "suffix"}
for _, pos in ipairs(adj_like_poses) do
local plpos = require(en_utilities_module).pluralize(pos)
labels["hard " .. plpos] = {
description = "{{{langname}}} hard-stem " .. plpos .. ".",
breadcrumb = "hard",
parents = {{name = plpos .. " by inflection type", sort = "hard-stem"}},
}
labels["soft " .. plpos] = {
description = "{{{langname}}} soft-stem " .. plpos .. ".",
breadcrumb = "soft",
parents = {{name = plpos .. " by inflection type", sort = "soft-stem"}},
}
labels[plpos .. " with short forms"] = {
description = "{{{langname}}} " .. plpos .. " with short-form inflections.",
breadcrumb = "with short forms",
parents = {{name = plpos .. " by inflection type", sort = "short forms"}},
}
end
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
--[=[
Noun declension specifications. The top-level key is the stem class, and the value is an object containing properties of
the stem class. If the stem class contains the word 'GENDER' in it, it expands into labels both for a parent category
that subsumes several genders (obtained by removing the word 'GENDER' and following whitespace) as well as
gender-specific children categories (obtained by replacing the word 'GENDER' with the genders specified in the
`possible_genders` field). The fields of the property object for a given stem class are as follows:
* `gender`: The description of the gender(s) of the stem class. If preceded by ~, the description is preceded by
"most commonly". This appears in the `additional` field of the label properties. It is not used in gender-specific
children categories; instead the gender of that category is used.
* `possible_genders`: The possible genders this class occurs in. If this is specified, the word 'GENDER' must occur in
the stem class, and gender-specific variants of the stem class (with GENDER replaced by the possible genders) are
handled along with a parent category subsuming all genders.
* `singular`: The nominative singular ending. Use <...> to enclose Old Church Slavonic text; it will be given the
appropriate language tag and italicized.
* `GENDER_singular`: The nominative singular ending for the GENDER variant of this stem class. If not specified, the
value of `singular` is used.
* `plural`: The nominative plural ending.
* `GENDER_singular`: The nominative plural ending for the GENDER variant of this stem class. If not specified, the
value of `plural` is used.
* `breadcrumb`: The breadcrumb for the category, appearing in the trail of breadcrumbs at the top of the page. If this
stem has gender-specific variants, the breadcrumb specified here is used only for the parent category, while the
gender-specific child categories use the gender as the breadcrumb. If not specified, it defaults to `sortkey`. If that
is also not specified, or if the breadcrumb has the value "+", the stem class (without the word 'GENDER') is used.
(Use "+" when a sortkey is specified but the stem class should be used as the breadcrumb.)
* `parent`: The parent category. If specified, the actual category label is formed by appending the part of speech (e.g.
"nouns"). Defaults to "POS by inflection type" where POS is the part of speech. Note that gender-specific child
categories do not use this, but always have the gender-subsuming parent stem class category as their parent.
* `sortkey`: The sort key used for sorting this category among its parent's children. Defaults to the stem class
(without the word 'GENDER'). Note that gender-specific child categories do nto use this, but always use the gender
as the sort key.
]=]
local noun_decls = {
["hard GENDER a-stem"] = {
gender = "~feminine",
possible_genders = {"masculine", "feminine"},
singular = "<-а>",
plural = "<-ꙑ>",
breadcrumb = "+",
sortkey = "a-stem",
},
["soft GENDER a-stem"] = {
gender = "~feminine",
possible_genders = {"masculine", "feminine"},
singular = "<-ꙗ> (or <-а> after an unpaired palatal consonant), or <-ꙑни>, or sometimes <-ии>/<-ьи>",
masculine_singular = "<-ꙗ> (or <-а> after an unpaired palatal consonant), or <-ии>/<-ьи>",
plural = "<-ѩ> (or <-ѧ> after an unpaired palatal consonant)",
breadcrumb = "+",
sortkey = "a-stem",
},
["GENDER i-stem"] = {
gender = "~feminine (sometimes masculine)",
possible_genders = {"masculine", "feminine"},
singular = "<-ь>",
plural = "<-и> (usually <-ьѥ> or <-иѥ> when masculine)",
masculine_plural = "<-ьѥ> or <-иѥ>",
feminine_plural = "<-и>",
},
["GENDER ī-stem"] = {
gender = "~feminine (masculine when referring to a person)",
possible_genders = {"masculine", "feminine"},
singular = "<-ии> or <-ьи>",
plural = "<-иѭ> or <-ьѩ>",
parent = "soft a-stem",
},
["hard GENDER o-stem"] = {
gender = "masculine or neuter",
possible_genders = {"masculine", "neuter"},
singular = "<-е> when masculine, <-о> when neuter",
masculine_singular = "<-ъ>",
neuter_singular = "<-о>",
plural = "<-и> when masculine, <-а> when neuter",
masculine_plural = "<-и>",
neuter_plural = "<-а>",
breadcrumb = "+",
sortkey = "o-stem",
},
["soft GENDER o-stem"] = {
gender = "masculine or neuter",
possible_genders = {"masculine", "neuter"},
singular = "<-ь> when masculine, <-ѥ> (or <-е> after an unpaired palatal consonant) when neuter",
masculine_singular = "<-ь>",
neuter_singular = "<-ѥ> (or <-е> after an unpaired palatal consonant)",
plural = "<-и> when masculine, <-ꙗ> (or <-а> after an unpaired palatal consonant) when neuter",
masculine_plural = "<-и>",
neuter_plural = "<-ꙗ> (or <-а> after an unpaired palatal consonant)",
breadcrumb = "+",
sortkey = "o-stem",
},
["u-stem"] = {
gender = "~masculine",
singular = "<-ъ>",
plural = "<-ове>",
},
["GENDER n-stem"] = {
gender = "~masculine (nouns in <-мѧ> are neuter)",
possible_genders = {"masculine", "neuter"},
singular = "<-ꙑ>, <-нь>, or <-мѧ>",
masculine_singular = "<-ꙑ> or <-нь>",
neuter_singular = "<-мѧ>",
plural = "<-не> (or <-мена> if ending in <-мѧ)>",
masculine_plural = "<-не>",
neuter_plural = "<-мена>",
parent = "consonant-stem",
},
["nt-stem"] = {
gender = "~neuter",
singular = "<-ѧ>",
plural = "<-ѧта>",
parent = "consonant-stem",
},
["r-stem"] = {
gender = "~feminine",
singular = "<-и>",
plural = "<-ери>",
parent = "consonant-stem",
},
["s-stem"] = {
gender = "~neuter",
singular = "<-о> (<-е> after a palatal consonant)",
plural = "<-еса>",
parent = "consonant-stem",
},
["v-stem"] = {
gender = "~feminine",
singular = "<-ꙑ>",
plural = "<-ъви>",
parent = "consonant-stem",
},
}
for _, pos in ipairs({"nouns"}) do
local sgpos = pos:gsub("s$", "")
labels["consonant-stem " .. pos] = {
description = "{{{langname}}} consonant-stem " .. pos .. ".",
additional = "This is not a single declension class, but a set of related declension classes, with endings that are"
.. " largely identical outside of the nominative, accusative and vocative.",
breadcrumb = "consonant-stem",
parents = pos .. " by inflection type",
}
local function mark_ending(ending)
return (ending:gsub("<(.-)>", "{{m|zle-ono||%1|tr=-}}"))
end
for full_decl, spec in pairs(noun_decls) do
local most_commonly, gender = spec.gender:match("^(~)(.*)$")
gender = gender or spec.gender
local subgenders = spec.possible_genders
local decl
if subgenders then
if not full_decl:find("GENDER") then
error(("Internal error: Declension spec '%s' needs to have the word 'GENDER' in it, in all caps"):format(full_decl))
end
decl = full_decl:gsub("GENDER ", "")
else
decl = full_decl
end
local breadcrumb = spec.breadcrumb or spec.sortkey or "+"
if breadcrumb == "+" then
breadcrumb = decl
end
labels[decl .. " " .. pos] = {
description = "{{{langname}}} " .. decl .. " " .. pos .. ".",
additional = ("These %s normally end in the singular in %s; in the plural in %s; and are %s%s."):format(
pos, mark_ending(spec.singular), mark_ending(spec.plural), most_commonly and "most commonly " or "",
mark_ending(gender)),
breadcrumb = breadcrumb,
parents = {{
name = spec.parent and spec.parent .. " " .. pos or pos .. " by inflection type",
sort = spec.sortkey or decl,
}},
}
if subgenders then
for _, subgender in ipairs(subgenders) do
local gender_decl = full_decl:gsub("GENDER", subgender)
labels[gender_decl .. " " .. pos] = {
description = "{{{langname}}} " .. gender_decl .. " " .. pos .. ".",
additional = ("These %s normally end in the singular in %s; in the plural in %s; and are %s."):format(
pos, mark_ending(spec[subgender .. "_singular"] or spec.singular),
mark_ending(spec[subgender .. "_plural"] or spec.plural), subgender),
breadcrumb = subgender,
parents = {{
name = decl .. " " .. pos,
sort = subgender,
}},
}
end
end
end
end
return {LABELS = labels, HANDLERS = handlers}
oghn99ypq3ajyyv20gnpbj5t2uf1bye
Module:category tree/lang/zle-ort
828
143353
233668
2026-02-16T02:25:34Z
en>Benwing2
0
bug fix
233668
Scribunto
text/plain
local labels = {}
local handlers = {}
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
local noun_decls = {
["hard a-stem"] = {
singular = "-а",
plural = "-ы",
gender = "feminine",
sortkey = "a-stem",
},
["soft a-stem"] = {
singular = "-ꙗ",
plural = "-и", -- ? FIXME
gender = "feminine",
sortkey = "a-stem",
},
["masculine i-stem"] = {
singular = "-ь",
plural = "-?",
gender = "masculine",
sortkey = "i-stem",
},
["feminine i-stem"] = {
singular = "-ь",
plural = "-?",
gender = "feminine",
sortkey = "i-stem",
},
--[==[
["ī-stem"] = {
singular = "-ии or -ьи",
plural = "-иѭ or -ьѩ",
gender = "feminine (masculine when referring to a person)",
parent = "soft a-stem",
},
]==]
["hard masculine o-stem"] = {
singular = "-ъ",
plural = "-и",
gender = "masculine",
sortkey = "o-stem",
},
["soft masculine o-stem"] = {
singular = "-ь",
plural = "-и", -- ? FIXME
gender = "masculine",
sortkey = "o-stem",
},
["hard neuter o-stem"] = {
singular = "-о",
plural = "-а",
gender = "neuter",
sortkey = "o-stem",
},
["soft neuter o-stem"] = {
singular = "-e",
plural = "-ꙗ", -- ? FIXME
gender = "neuter",
sortkey = "o-stem",
},
--[==[
["u-stem"] = {
singular = "a hard stem consonant",
plural = "-оvé",
gender = "masculine",
},
["masculine n-stem"] = {
singular = "-n",
plural = "-ni",
gender = "masculine",
parent = "consonant-stem",
},
["neuter n-stem"] = {
singular = "-ě",
plural = "-ena",
gender = "neuter",
parent = "consonant-stem",
},
["masculine t-stem"] = {
singular = "et",
plural = "-ty",
gender = "masculine",
parent = "consonant-stem",
},
["neuter t-stem"] = {
singular = "-ě",
plural = "-ata",
gender = "neuter",
parent = "consonant-stem",
},
["r-stem"] = {
singular = "-i",
plural = "-ery",
gender = "feminine",
parent = "consonant-stem",
},
["v-stem"] = {
singular = "-ev",
plural = "-ve",
gender = "feminine",
parent = "consonant-stem",
}
]==]
}
for _, pos in ipairs({"nouns"}) do
labels[pos .. " by stem type and gender"] = {
description = "{{{langname}}} " .. pos .. " categorized by stem type and gender.",
parents = {{name = pos .. " by inflection type", sort = "stem type and gender"}},
}
labels["consonant-stem " .. pos] = {
description = "{{{langname}}} consonant-stem " .. pos .. ".",
additional = "This is not a single declension class, but a set of related declension classes, with endings that are"
.. " largely identical outside of the nominative, accusative and vocative.",
breadcrumb = "consonant-stem",
parents = pos .. " by stem type and gender",
}
for decl, spec in pairs(noun_decls) do
labels[decl .. " " .. pos] = {
description = "{{{langname}}} " .. decl .. " " .. pos .. ".",
additional = "These " .. pos .. " normally end in " .. spec.singular .. " in the singular and " .. spec.plural .. " in the"
.. " plural, and are most commonly " .. spec.gender .. ".",
breadcrumb = decl,
parents = {{
name = spec.parent and spec.parent .. " " .. pos or pos .. " by stem type and gender",
sort = spec.sortkey or decl,
}},
}
end
end
--------------------------------- Adjectives --------------------------------
local adj_like_poses = {"adjectives", "pronouns", "determiners", "numerals", "suffixes"}
for _, plpos in ipairs(adj_like_poses) do
labels["hard " .. plpos] = {
description = "{{{langname}}} hard " .. plpos .. ".",
parents = {{name = plpos .. " by inflection type", sort = "hard-stem"}},
}
labels["soft " .. plpos] = {
description = "{{{langname}}} soft " .. plpos .. ".",
parents = {{name = plpos .. " by inflection type", sort = "soft-stem"}},
}
labels[plpos .. " with short forms"] = {
description = "{{{langname}}} " .. plpos .. " with short-form inflections.",
parents = {{name = plpos .. " by inflection type", sort = "short forms"}},
}
end
return {LABELS = labels, HANDLERS = handlers}
bx7rr5z37zrtiomq06885427pz6qppa
233669
233668
2026-05-09T03:57:06Z
Lee
19
[[:en:Module:category_tree/lang/zle-ort]] වෙතින් එක් සංශෝධනයක්
233668
Scribunto
text/plain
local labels = {}
local handlers = {}
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
local noun_decls = {
["hard a-stem"] = {
singular = "-а",
plural = "-ы",
gender = "feminine",
sortkey = "a-stem",
},
["soft a-stem"] = {
singular = "-ꙗ",
plural = "-и", -- ? FIXME
gender = "feminine",
sortkey = "a-stem",
},
["masculine i-stem"] = {
singular = "-ь",
plural = "-?",
gender = "masculine",
sortkey = "i-stem",
},
["feminine i-stem"] = {
singular = "-ь",
plural = "-?",
gender = "feminine",
sortkey = "i-stem",
},
--[==[
["ī-stem"] = {
singular = "-ии or -ьи",
plural = "-иѭ or -ьѩ",
gender = "feminine (masculine when referring to a person)",
parent = "soft a-stem",
},
]==]
["hard masculine o-stem"] = {
singular = "-ъ",
plural = "-и",
gender = "masculine",
sortkey = "o-stem",
},
["soft masculine o-stem"] = {
singular = "-ь",
plural = "-и", -- ? FIXME
gender = "masculine",
sortkey = "o-stem",
},
["hard neuter o-stem"] = {
singular = "-о",
plural = "-а",
gender = "neuter",
sortkey = "o-stem",
},
["soft neuter o-stem"] = {
singular = "-e",
plural = "-ꙗ", -- ? FIXME
gender = "neuter",
sortkey = "o-stem",
},
--[==[
["u-stem"] = {
singular = "a hard stem consonant",
plural = "-оvé",
gender = "masculine",
},
["masculine n-stem"] = {
singular = "-n",
plural = "-ni",
gender = "masculine",
parent = "consonant-stem",
},
["neuter n-stem"] = {
singular = "-ě",
plural = "-ena",
gender = "neuter",
parent = "consonant-stem",
},
["masculine t-stem"] = {
singular = "et",
plural = "-ty",
gender = "masculine",
parent = "consonant-stem",
},
["neuter t-stem"] = {
singular = "-ě",
plural = "-ata",
gender = "neuter",
parent = "consonant-stem",
},
["r-stem"] = {
singular = "-i",
plural = "-ery",
gender = "feminine",
parent = "consonant-stem",
},
["v-stem"] = {
singular = "-ev",
plural = "-ve",
gender = "feminine",
parent = "consonant-stem",
}
]==]
}
for _, pos in ipairs({"nouns"}) do
labels[pos .. " by stem type and gender"] = {
description = "{{{langname}}} " .. pos .. " categorized by stem type and gender.",
parents = {{name = pos .. " by inflection type", sort = "stem type and gender"}},
}
labels["consonant-stem " .. pos] = {
description = "{{{langname}}} consonant-stem " .. pos .. ".",
additional = "This is not a single declension class, but a set of related declension classes, with endings that are"
.. " largely identical outside of the nominative, accusative and vocative.",
breadcrumb = "consonant-stem",
parents = pos .. " by stem type and gender",
}
for decl, spec in pairs(noun_decls) do
labels[decl .. " " .. pos] = {
description = "{{{langname}}} " .. decl .. " " .. pos .. ".",
additional = "These " .. pos .. " normally end in " .. spec.singular .. " in the singular and " .. spec.plural .. " in the"
.. " plural, and are most commonly " .. spec.gender .. ".",
breadcrumb = decl,
parents = {{
name = spec.parent and spec.parent .. " " .. pos or pos .. " by stem type and gender",
sort = spec.sortkey or decl,
}},
}
end
end
--------------------------------- Adjectives --------------------------------
local adj_like_poses = {"adjectives", "pronouns", "determiners", "numerals", "suffixes"}
for _, plpos in ipairs(adj_like_poses) do
labels["hard " .. plpos] = {
description = "{{{langname}}} hard " .. plpos .. ".",
parents = {{name = plpos .. " by inflection type", sort = "hard-stem"}},
}
labels["soft " .. plpos] = {
description = "{{{langname}}} soft " .. plpos .. ".",
parents = {{name = plpos .. " by inflection type", sort = "soft-stem"}},
}
labels[plpos .. " with short forms"] = {
description = "{{{langname}}} " .. plpos .. " with short-form inflections.",
parents = {{name = plpos .. " by inflection type", sort = "short forms"}},
}
end
return {LABELS = labels, HANDLERS = handlers}
bx7rr5z37zrtiomq06885427pz6qppa
Module:category tree/lang/osx
828
143354
233670
2025-08-16T08:32:50Z
en>TongcyDai
0
Created page with "local labels = {} local handlers = {} local rmatch = mw.ustring.match table.insert(handlers, function(data) local stem = rmatch(data.label, "^(.+%-stem) nouns$") if stem then return { description = "Old Saxon " .. stem .. " nouns.", breadcrumb = stem, parents = {{name = "nouns by inflection type", sort = stem}}, } end end) return {LABELS = labels, HANDLERS = handlers}"
233670
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
table.insert(handlers, function(data)
local stem = rmatch(data.label, "^(.+%-stem) nouns$")
if stem then
return {
description = "Old Saxon " .. stem .. " nouns.",
breadcrumb = stem,
parents = {{name = "nouns by inflection type", sort = stem}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
ikcfv3ew3nsi5kad8kyuokdkjuvdv52
233671
233670
2026-05-09T03:57:46Z
Lee
19
[[:en:Module:category_tree/lang/osx]] වෙතින් එක් සංශෝධනයක්
233670
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
table.insert(handlers, function(data)
local stem = rmatch(data.label, "^(.+%-stem) nouns$")
if stem then
return {
description = "Old Saxon " .. stem .. " nouns.",
breadcrumb = stem,
parents = {{name = "nouns by inflection type", sort = stem}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
ikcfv3ew3nsi5kad8kyuokdkjuvdv52
Module:category tree/lang/gmq-osw
828
143355
233672
2025-09-03T18:44:07Z
en>TongcyDai
0
233672
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
table.insert(handlers, function(data)
local stem = rmatch(data.label, "^(.+[%s%-]stem) nouns$")
if stem then
return {
description = "Old Swedish " .. stem .. " nouns.",
breadcrumb = stem,
parents = {{name = "nouns by inflection type", sort = stem}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
acf8aszl26e0n9pq57cya710i1itn4n
233673
233672
2026-05-09T03:58:00Z
Lee
19
[[:en:Module:category_tree/lang/gmq-osw]] වෙතින් එක් සංශෝධනයක්
233672
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
table.insert(handlers, function(data)
local stem = rmatch(data.label, "^(.+[%s%-]stem) nouns$")
if stem then
return {
description = "Old Swedish " .. stem .. " nouns.",
breadcrumb = stem,
parents = {{name = "nouns by inflection type", sort = stem}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
acf8aszl26e0n9pq57cya710i1itn4n
Module:category tree/lang/rsk
828
143356
233674
2025-09-24T05:48:33Z
en>Insaneguy1083
0
233674
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
--------------------------------- Adjectives --------------------------------
for _, pos in ipairs({ "adjectives", "pronouns", "determiners", "numerals", "suffixes", "adjective forms" }) do
labels["hard " .. pos] = {
description = "{{{langname}}} hard-stem " .. pos .. ", or " .. pos .. " ending in -и.",
additional =
"Where not borrowed, these adjectives are usually inherited from Old Slovak adjectives ending in -y or -ý, although this is not always the case, particularly with Old Slovak adjectives ending in -ci, -či, -di, -si, -ši, -ti, -zi or -ži, or their long equivalents.",
breadcrumb = "hard",
parents = { { name = pos .. " by inflection type", sort = "hard-stem" } },
}
labels["soft " .. pos] = {
description = "{{{langname}}} soft-stem " .. pos .. ", or " .. pos .. " ending in -ї.",
additional =
"Where not borrowed, these adjectives are usually inherited from Old Slovak adjectives ending in -li, -lí, -ni or -ní.",
breadcrumb = "soft",
parents = { { name = pos .. " by inflection type", sort = "soft-stem" } },
}
end
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
for _, pos in ipairs({ "nouns", "proper nouns", "pronouns", "numerals" }) do
local function make_label(label, description, parents, breadcrumb)
labels[pos .. " " .. label] = {
description = "{{{langname}}} " .. pos .. " " .. description,
breadcrumb = breadcrumb or label,
parents = parents,
}
end
make_label("with reducible stem",
"with a reducible stem, where an extra vowel is inserted " ..
"before the last stem consonant in the nominative singular.",
{ { name = pos .. " by inflection type", sort = "reducible stem" } }
)
labels["adjectival " .. pos] = {
description = "{{{langname}}} " .. pos .. " with adjectival endings.",
parents = { pos },
}
make_label("with irregular stem",
"with an irregular stem, which occurs in all cases except the nominative singular and maybe the accusative singular.",
{ { name = "irregular " .. pos, sort = "stem" } }
)
end
--------------------------------- Verbs --------------------------------
labels["verbs by class"] = {
description = "{{{langname}}} verbs categorized by class.",
parents = { { name = "verbs by inflection type", sort = "class" } },
}
table.insert(handlers, function(data)
local class = rmatch(data.label, "^class ([0-9]+) verbs$")
if class then
return {
description = "{{{langname}}} class " .. class .. " verbs.",
breadcrumb = class,
parents = { { name = "verbs by class", sort = class } },
}
end
end)
return { LABELS = labels, HANDLERS = handlers }
cwsgxpv4ekvkrwq7cjhasxjuto1c5qx
233675
233674
2026-05-09T03:58:11Z
Lee
19
[[:en:Module:category_tree/lang/rsk]] වෙතින් එක් සංශෝධනයක්
233674
Scribunto
text/plain
local labels = {}
local handlers = {}
local rmatch = mw.ustring.match
--------------------------------- Adjectives --------------------------------
for _, pos in ipairs({ "adjectives", "pronouns", "determiners", "numerals", "suffixes", "adjective forms" }) do
labels["hard " .. pos] = {
description = "{{{langname}}} hard-stem " .. pos .. ", or " .. pos .. " ending in -и.",
additional =
"Where not borrowed, these adjectives are usually inherited from Old Slovak adjectives ending in -y or -ý, although this is not always the case, particularly with Old Slovak adjectives ending in -ci, -či, -di, -si, -ši, -ti, -zi or -ži, or their long equivalents.",
breadcrumb = "hard",
parents = { { name = pos .. " by inflection type", sort = "hard-stem" } },
}
labels["soft " .. pos] = {
description = "{{{langname}}} soft-stem " .. pos .. ", or " .. pos .. " ending in -ї.",
additional =
"Where not borrowed, these adjectives are usually inherited from Old Slovak adjectives ending in -li, -lí, -ni or -ní.",
breadcrumb = "soft",
parents = { { name = pos .. " by inflection type", sort = "soft-stem" } },
}
end
--------------------------------- Nouns/Pronouns/Numerals --------------------------------
for _, pos in ipairs({ "nouns", "proper nouns", "pronouns", "numerals" }) do
local function make_label(label, description, parents, breadcrumb)
labels[pos .. " " .. label] = {
description = "{{{langname}}} " .. pos .. " " .. description,
breadcrumb = breadcrumb or label,
parents = parents,
}
end
make_label("with reducible stem",
"with a reducible stem, where an extra vowel is inserted " ..
"before the last stem consonant in the nominative singular.",
{ { name = pos .. " by inflection type", sort = "reducible stem" } }
)
labels["adjectival " .. pos] = {
description = "{{{langname}}} " .. pos .. " with adjectival endings.",
parents = { pos },
}
make_label("with irregular stem",
"with an irregular stem, which occurs in all cases except the nominative singular and maybe the accusative singular.",
{ { name = "irregular " .. pos, sort = "stem" } }
)
end
--------------------------------- Verbs --------------------------------
labels["verbs by class"] = {
description = "{{{langname}}} verbs categorized by class.",
parents = { { name = "verbs by inflection type", sort = "class" } },
}
table.insert(handlers, function(data)
local class = rmatch(data.label, "^class ([0-9]+) verbs$")
if class then
return {
description = "{{{langname}}} class " .. class .. " verbs.",
breadcrumb = class,
parents = { { name = "verbs by class", sort = class } },
}
end
end)
return { LABELS = labels, HANDLERS = handlers }
cwsgxpv4ekvkrwq7cjhasxjuto1c5qx
Module:category tree/lang/eo
828
143357
233676
2025-04-28T04:59:21Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/eo]] to [[Module:category tree/lang/eo]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233676
Scribunto
text/plain
local handlers = {}
table.insert(handlers, function(data)
local system = data.label:match("^([HX])%-system forms$")
if system then
return {
description = "{{{langname}}} forms transliterated into ASCII using the " .. system .. "-system.",
parents = {"terms by orthographic property"},
}
end
end)
return {HANDLERS = handlers}
s3tbreihoigg55up3goxiuvv9bun4i4
233677
233676
2026-05-09T03:58:24Z
Lee
19
[[:en:Module:category_tree/lang/eo]] වෙතින් එක් සංශෝධනයක්
233676
Scribunto
text/plain
local handlers = {}
table.insert(handlers, function(data)
local system = data.label:match("^([HX])%-system forms$")
if system then
return {
description = "{{{langname}}} forms transliterated into ASCII using the " .. system .. "-system.",
parents = {"terms by orthographic property"},
}
end
end)
return {HANDLERS = handlers}
s3tbreihoigg55up3goxiuvv9bun4i4
Module:category tree/lang/te
828
143358
233678
2025-04-28T05:01:02Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/te]] to [[Module:category tree/lang/te]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233678
Scribunto
text/plain
local labels = {}
--------------------------------- Verbs --------------------------------
labels["verbs adopted from Sanskrit"] = {
description = "{{{langname}}} verbs that are taken directly from Sanskrit rather than being native formations.</br></br>For example, {{m|te|జ్వలించు}} is taken directly from {{m+|sa|ज्वलति|జ్వలతి}} rather than being a native formation.",
parents = {{name = "verbs", sort = "Sanskrit"}},
}
return {LABELS = labels}
r381ktyfz7u86k6rweebewlege45cc8
233679
233678
2026-05-09T03:58:48Z
Lee
19
[[:en:Module:category_tree/lang/te]] වෙතින් එක් සංශෝධනයක්
233678
Scribunto
text/plain
local labels = {}
--------------------------------- Verbs --------------------------------
labels["verbs adopted from Sanskrit"] = {
description = "{{{langname}}} verbs that are taken directly from Sanskrit rather than being native formations.</br></br>For example, {{m|te|జ్వలించు}} is taken directly from {{m+|sa|ज्वलति|జ్వలతి}} rather than being a native formation.",
parents = {{name = "verbs", sort = "Sanskrit"}},
}
return {LABELS = labels}
r381ktyfz7u86k6rweebewlege45cc8
Module:category tree/lang/fy
828
143359
233680
2025-04-28T04:59:34Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/fy]] to [[Module:category tree/lang/fy]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233680
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("fy")
labels["verbs by derivation type"] = {
description = "West Frisian verbs categorized by the type of derivation.",
parents = {{name = "verbs", sort = "derivation"}},
}
labels["basic verbs"] = {
description = "This category contains West Frisian verbs that are neither prefixed nor separable.",
parents = {{name = "verbs by derivation type", sort = "basic"}},
}
labels["prefixed verbs"] = {
description = "This category contains West Frisian prefixed verbs, which are verbs that are compounded with an unstressed prefix, such as " ..
"{{m|fy|be-}}.",
parents = {{name = "verbs by derivation type", sort = "prefixed"}},
}
labels["separable verbs"] = {
topright = "{{wikipedia|Separable verb}}",
description = "This category contains West Frisian separable verbs, which are verbs that are compounded with a particle, " ..
"often an adverb. When the particle is immediately followed by the verb form, it is written together with it as one word. " ..
"In other cases, it is separated from the main verb by a space and possibly other words.",
parents = {{name = "verbs by derivation type", sort = "separable"}},
}
table.insert(handlers, function(data)
local pref = data.label:match("^prefixed verbs with (.+%-)$")
if pref then
local link = require("Module:links").full_link({ lang = lang, term = pref }, "term")
local altlink = require("Module:links").full_link({ lang = lang, alt = pref }, "term")
return {
description = "West Frisian prefixed verbs with the prefix " .. link .. ".",
displaytitle = "West Frisian prefixed verbs with " .. altlink,
breadcrumb = altlink,
parents = {{name = "prefixed verbs", sort = pref}},
}
end
end)
table.insert(handlers, function(data)
local particle = data.label:match("^separable verbs with (.+)$")
if particle then
local link = require("Module:links").full_link({ lang = lang, term = particle }, "term")
local altlink = require("Module:links").full_link({ lang = lang, alt = particle }, "term")
return {
description = "West Frisian separable verbs with the particle " .. link .. ".",
displaytitle = "West Frisian separable verbs with " .. altlink,
breadcrumb = altlink,
parents = {{name = "separable verbs", sort = particle}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
hgyhgvl2ydprbyygfa0weon3qfjn8mi
233681
233680
2026-05-09T03:58:58Z
Lee
19
[[:en:Module:category_tree/lang/fy]] වෙතින් එක් සංශෝධනයක්
233680
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("fy")
labels["verbs by derivation type"] = {
description = "West Frisian verbs categorized by the type of derivation.",
parents = {{name = "verbs", sort = "derivation"}},
}
labels["basic verbs"] = {
description = "This category contains West Frisian verbs that are neither prefixed nor separable.",
parents = {{name = "verbs by derivation type", sort = "basic"}},
}
labels["prefixed verbs"] = {
description = "This category contains West Frisian prefixed verbs, which are verbs that are compounded with an unstressed prefix, such as " ..
"{{m|fy|be-}}.",
parents = {{name = "verbs by derivation type", sort = "prefixed"}},
}
labels["separable verbs"] = {
topright = "{{wikipedia|Separable verb}}",
description = "This category contains West Frisian separable verbs, which are verbs that are compounded with a particle, " ..
"often an adverb. When the particle is immediately followed by the verb form, it is written together with it as one word. " ..
"In other cases, it is separated from the main verb by a space and possibly other words.",
parents = {{name = "verbs by derivation type", sort = "separable"}},
}
table.insert(handlers, function(data)
local pref = data.label:match("^prefixed verbs with (.+%-)$")
if pref then
local link = require("Module:links").full_link({ lang = lang, term = pref }, "term")
local altlink = require("Module:links").full_link({ lang = lang, alt = pref }, "term")
return {
description = "West Frisian prefixed verbs with the prefix " .. link .. ".",
displaytitle = "West Frisian prefixed verbs with " .. altlink,
breadcrumb = altlink,
parents = {{name = "prefixed verbs", sort = pref}},
}
end
end)
table.insert(handlers, function(data)
local particle = data.label:match("^separable verbs with (.+)$")
if particle then
local link = require("Module:links").full_link({ lang = lang, term = particle }, "term")
local altlink = require("Module:links").full_link({ lang = lang, alt = particle }, "term")
return {
description = "West Frisian separable verbs with the particle " .. link .. ".",
displaytitle = "West Frisian separable verbs with " .. altlink,
breadcrumb = altlink,
parents = {{name = "separable verbs", sort = particle}},
}
end
end)
return {LABELS = labels, HANDLERS = handlers}
hgyhgvl2ydprbyygfa0weon3qfjn8mi
Module:category tree/lang/skr
828
143360
233682
2025-04-28T05:01:00Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/skr]] to [[Module:category tree/lang/skr]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233682
Scribunto
text/plain
local labels = {}
labels["terms with unexpected gemination"] = {
description = "Saraiki terms with an unexpected lengthening of a consonant.",
parents = {"terms by phonemic property"},
}
labels["terms with unexpected lenition"] = {
description = "Saraiki terms with an unexpected weakening of a consonant.",
parents = {"terms by phonemic property"},
}
return {LABELS = labels}
9s18dih6nz8zx2mx76n7jec1hj10li0
233683
233682
2026-05-09T03:59:07Z
Lee
19
[[:en:Module:category_tree/lang/skr]] වෙතින් එක් සංශෝධනයක්
233682
Scribunto
text/plain
local labels = {}
labels["terms with unexpected gemination"] = {
description = "Saraiki terms with an unexpected lengthening of a consonant.",
parents = {"terms by phonemic property"},
}
labels["terms with unexpected lenition"] = {
description = "Saraiki terms with an unexpected weakening of a consonant.",
parents = {"terms by phonemic property"},
}
return {LABELS = labels}
9s18dih6nz8zx2mx76n7jec1hj10li0
Module:category tree/lang/szl
828
143361
233684
2025-11-05T02:24:48Z
en>Benwing2
0
fix wp syntax
233684
Scribunto
text/plain
local labels = {}
labels["Phonetic Silesian Alphabet spellings"] = {
description = "{{{langname}}} terms spelled in the Phonetic Silesian Alphabet.",
additional = "Entries can be added to this category with {{tl|szl-phonetic}}.",
topright = "{{wp|szl:Ślōnski alfabet fōnetyczny}}",
parents = "terms by orthographic property",
}
labels["Steuer spellings"] = {
description = "{{{langname}}} terms spelled in the Steuer system.",
additional = "Entries can be added to this category with {{tl|szl-Steuer}}.",
topright = "{{wp|Silesian orthography#Steuer's alphabet}}",
parents = "terms by orthographic property",
}
labels["short adjective forms"] = {
description = "{{{langname}}} adjective forms which are used in predicates.",
parents = "adjective forms"
}
return {LABELS = labels}
fbqiqbhojmvedz2g5pbvuthijmgmuml
233685
233684
2026-05-09T04:04:26Z
Lee
19
[[:en:Module:category_tree/lang/szl]] වෙතින් එක් සංශෝධනයක්
233684
Scribunto
text/plain
local labels = {}
labels["Phonetic Silesian Alphabet spellings"] = {
description = "{{{langname}}} terms spelled in the Phonetic Silesian Alphabet.",
additional = "Entries can be added to this category with {{tl|szl-phonetic}}.",
topright = "{{wp|szl:Ślōnski alfabet fōnetyczny}}",
parents = "terms by orthographic property",
}
labels["Steuer spellings"] = {
description = "{{{langname}}} terms spelled in the Steuer system.",
additional = "Entries can be added to this category with {{tl|szl-Steuer}}.",
topright = "{{wp|Silesian orthography#Steuer's alphabet}}",
parents = "terms by orthographic property",
}
labels["short adjective forms"] = {
description = "{{{langname}}} adjective forms which are used in predicates.",
parents = "adjective forms"
}
return {LABELS = labels}
fbqiqbhojmvedz2g5pbvuthijmgmuml
Module:category tree/lang/sw
828
143362
233686
2025-04-28T05:01:01Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/sw]] to [[Module:category tree/lang/sw]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233686
Scribunto
text/plain
local labels = {}
for i = 1, 18 do
labels["class " .. require("Module:roman numerals").arabic_to_roman(i) .. " nouns"] = {
description = "Swahili nouns that belong to class " .. require("Module:roman numerals").arabic_to_roman(i) .. ".",
breadcrumb = class,
umbrella = false,
parents = {{name = "nouns by class", sort = i}},
}
end
labels["class I/IX nouns"] = {
description = "Swahili nouns that belong to class I, but have possessive adjectives agree in class IX.",
breadcrumb = class,
umbrella = false,
parents = {{name = "nouns by class", sort = "1a"}},
}
return {LABELS = labels}
793uvu3ec75cztasi9wb4f9ccpsqqyc
233687
233686
2026-05-09T04:04:34Z
Lee
19
[[:en:Module:category_tree/lang/sw]] වෙතින් එක් සංශෝධනයක්
233686
Scribunto
text/plain
local labels = {}
for i = 1, 18 do
labels["class " .. require("Module:roman numerals").arabic_to_roman(i) .. " nouns"] = {
description = "Swahili nouns that belong to class " .. require("Module:roman numerals").arabic_to_roman(i) .. ".",
breadcrumb = class,
umbrella = false,
parents = {{name = "nouns by class", sort = i}},
}
end
labels["class I/IX nouns"] = {
description = "Swahili nouns that belong to class I, but have possessive adjectives agree in class IX.",
breadcrumb = class,
umbrella = false,
parents = {{name = "nouns by class", sort = "1a"}},
}
return {LABELS = labels}
793uvu3ec75cztasi9wb4f9ccpsqqyc
Module:category tree/lang/vec
828
143363
233689
2025-05-07T07:05:06Z
en>Benwing2
0
+combined forms
233689
Scribunto
text/plain
local labels = {}
-----------------------------------------------------------------------------
-- --
-- VERBS --
-- --
-----------------------------------------------------------------------------
labels["verbs by conjugation"] = {
description = "{{{langname}}} verbs categorized by conjugation.",
breadcrumb = "by conjugation",
parents = {{name = "verbs by inflection type", sort = "conjugation"}},
}
labels["first conjugation verbs"] = {
description = "{{{langname}}} first conjugation verbs, whose infinitive ends in ''-ar''.",
breadcrumb = "1st",
parents = {{name = "verbs by conjugation", sort = "1st"}},
}
labels["second conjugation verbs"] = {
description = "{{{langname}}} second conjugation verbs, whose infinitive ends in ''-ar'', ''-er'' or ''-dur''.",
breadcrumb = "2nd",
parents = {{name = "verbs by conjugation", sort = "2nd"}},
}
labels["third conjugation verbs"] = {
description = "{{{langname}}} second conjugation verbs, whose infinitive ends in ''-ir''.",
breadcrumb = "3nd",
parents = {{name = "verbs by conjugation", sort = "3nd"}},
}
labels["verbs taking èser as auxiliary"] = {
description = "{{{langname}}} verbs that can take {{m|vec|èser}} as their auxiliary verb when forming compound tenses and used intransitively.",
additional = "They may not always take {{m|vec|èser}} under these circumstances, however. Check the entries themselves for more information.",
displaytitle = "{{{langname}}} verbs taking {{m|vec||èser}} as auxiliary",
parents = {{name = "verbs by inflection type", sort = "èser as auxiliary"}},
breadcrumb = "{{m|vec||èser}} as auxiliary",
}
labels["verbs taking aver or èser as auxiliary"] = {
description = "{{{langname}}} verbs that can take {{m|vec|aver}} or {{m|vec|èser}} as their auxiliary verb when forming compound tenses and used intransitively.",
displaytitle = "{{{langname}}} verbs taking {{m|vec||aver}} or {{m|vec||èser}} as auxiliary",
parents = {{name = "verbs by inflection type", sort = "aver or èser as auxiliary"}},
breadcrumb = "{{m|vec||aver}} or {{m|vec||èser}} as auxiliary",
}
labels["combined forms"] = {
description = "{{{langname}}} combinations of verbs with cliticized pronouns.",
parents = {"verb forms"},
}
return {LABELS = labels}
15hf8y05djkz2pyu19f783efet6r5xf
233690
233689
2026-05-09T04:12:12Z
Lee
19
[[:en:Module:category_tree/lang/vec]] වෙතින් එක් සංශෝධනයක්
233689
Scribunto
text/plain
local labels = {}
-----------------------------------------------------------------------------
-- --
-- VERBS --
-- --
-----------------------------------------------------------------------------
labels["verbs by conjugation"] = {
description = "{{{langname}}} verbs categorized by conjugation.",
breadcrumb = "by conjugation",
parents = {{name = "verbs by inflection type", sort = "conjugation"}},
}
labels["first conjugation verbs"] = {
description = "{{{langname}}} first conjugation verbs, whose infinitive ends in ''-ar''.",
breadcrumb = "1st",
parents = {{name = "verbs by conjugation", sort = "1st"}},
}
labels["second conjugation verbs"] = {
description = "{{{langname}}} second conjugation verbs, whose infinitive ends in ''-ar'', ''-er'' or ''-dur''.",
breadcrumb = "2nd",
parents = {{name = "verbs by conjugation", sort = "2nd"}},
}
labels["third conjugation verbs"] = {
description = "{{{langname}}} second conjugation verbs, whose infinitive ends in ''-ir''.",
breadcrumb = "3nd",
parents = {{name = "verbs by conjugation", sort = "3nd"}},
}
labels["verbs taking èser as auxiliary"] = {
description = "{{{langname}}} verbs that can take {{m|vec|èser}} as their auxiliary verb when forming compound tenses and used intransitively.",
additional = "They may not always take {{m|vec|èser}} under these circumstances, however. Check the entries themselves for more information.",
displaytitle = "{{{langname}}} verbs taking {{m|vec||èser}} as auxiliary",
parents = {{name = "verbs by inflection type", sort = "èser as auxiliary"}},
breadcrumb = "{{m|vec||èser}} as auxiliary",
}
labels["verbs taking aver or èser as auxiliary"] = {
description = "{{{langname}}} verbs that can take {{m|vec|aver}} or {{m|vec|èser}} as their auxiliary verb when forming compound tenses and used intransitively.",
displaytitle = "{{{langname}}} verbs taking {{m|vec||aver}} or {{m|vec||èser}} as auxiliary",
parents = {{name = "verbs by inflection type", sort = "aver or èser as auxiliary"}},
breadcrumb = "{{m|vec||aver}} or {{m|vec||èser}} as auxiliary",
}
labels["combined forms"] = {
description = "{{{langname}}} combinations of verbs with cliticized pronouns.",
parents = {"verb forms"},
}
return {LABELS = labels}
15hf8y05djkz2pyu19f783efet6r5xf
Module:category tree/lang/is
828
143364
233694
2026-02-16T04:34:48Z
en>Benwing2
0
Icelandic nouns with actual gender different from declined gender
233694
Scribunto
text/plain
local labels = {}
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
----------------- Nouns -----------------
labels["nouns with irregular stem"] = {
description = "{{{langname}}} nouns built using an irregular stem.",
additional = "This means that the stem is not the same as what is found in the lemma. An example is " ..
"{{m|is|maður||man}} and compounds, which use a stem ''mann-'' outside of the nominative singular.",
parents = {"irregular nouns"},
}
labels["nouns with multiple stems"] = {
description = "{{{langname}}} nouns built using multiple stems.",
additional = "Typically one of the stems is regular and the other is irregular and is used in alternative " ..
"variant forms.",
parents = {{name = "irregular nouns", sort = "multiple stems"}},
breadcrumb = "with multiple stems",
}
labels["nouns with actual gender different from declined gender"] = {
description = "{{{langname}}} nouns with a different gender (as determined by adjective concord) than would be expected by the pattern of declension endings.",
additional = "There are only a few examples in Icelandic, all of which are proper masculine names declined like feminine nouns, such as the names {{m|is|Sturla}} and {{m|is|Skúta}}.",
parents = {
{name = "irregular nouns", sort = "actual gender"},
},
breadcrumb = "with actual gender different from declined gender",
}
labels["scraping errors in Template:is-ndecl"] = {
description = "{{{langname}}} entries where scraping errors occurred in {{tl|is-ndecl}} or {{tl|is-noun}}.",
additional = "This generally means that {{tl|is-ndecl}} for a compound noun was unable to scrape the declension spec " ..
"from the base noun, or {{tl|is-noun}} was unable to self-scrape the declension spec from the corresponding call to " ..
"{{tl|is-ndecl}} on the same page. There are many causes of this, but often are related to misspelled or missing ID's when " ..
"self-scraping in the presence of multiple {{tl|is-ndecl}} calls, or ambiguous scraping specs when scraping another page. " ..
"The displayed error message (which does not trigger an actual Lua error) should give more information.",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["nouns declined using scraped base declensions"] = {
description = "{{{langname}}} nouns, generally compounds, whose declension was derived from scraping the declension of a base noun.",
additional = "This generally means that {{tl|is-ndecl}} contained a scraping spec like {{cd|@k}} when used on a " ..
"noun like {{m|is|vinkona||female friend}} (in this case, the declension for {{m|is|kona||woman}} would be used to " ..
"construct the declension for {{m|is|vinkona}}). If scraping fails, the noun is added to " ..
"[[:Category:{{{langname}}} scraping errors in Template:is-ndecl]].",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
----------------- Adjectives -----------------
for _, compsupspec in ipairs {{"comparative", "superlative"}, {"superlative", "comparative"}} do
local compsup, other = unpack(compsupspec)
labels["adjectives with multiple " .. compsup .. "s"] = {
description = "{{{langname}}} adjectives with more than one possible " .. compsup .. " form.",
additional = "Some forms may be more common than others, and some may even be archaic. See also " ..
"{{category|Icelandic adjectives with multiple " .. other .. "s}} and " ..
"{{category|Icelandic adjectives with umlauted comparative or superlative}}.",
breadcrumb = "with multiple " .. compsup .. "s",
parents = {{name = "adjectives", sort = "multiple " .. compsup .. "s"}},
}
end
labels["adjectives with umlauted comparative or superlative"] = {
description = "{{{langname}}} adjectives with umlaut (''i''-mutation) in at least one comparative or superlative form.",
additional = "Some adjectives had their comparative in Proto-Germanic built using the affix ''-iz-'' and some " ..
"with ''-ōz-''. The former triggered umlaut/''i''-mutation, but it is not (and may never have been) predictable " ..
"which affix is/was used, and in modern Icelandic the adjectives with umlauted comparative or superlative are a " ..
"closed, irregular class.",
breadcrumb = "with umlauted comparative or superlative",
parents = {{name = "irregular adjectives", sort = "umlauted comparative or superlative"}},
}
labels["scraping errors in Template:is-adecl"] = {
description = "{{{langname}}} entries where scraping errors occurred in {{tl|is-adecl}} or {{tl|is-adj}}.",
additional = "This generally means that {{tl|is-adecl}} for a compound adjective was unable to scrape the declension spec " ..
"from the base adjective, or {{tl|is-adj}} was unable to self-scrape the declension spec from the corresponding call to " ..
"{{tl|is-adecl}} on the same page. There are many causes of this, but often are related to misspelled or missing ID's when " ..
"self-scraping in the presence of multiple {{tl|is-adecl}} calls, or ambiguous scraping specs when scraping another page. " ..
"The displayed error message (which does not trigger an actual Lua error) should give more information.",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["adjectives declined using scraped base declensions"] = {
description = "{{{langname}}} adjectives, generally compounds, whose declension was derived from scraping the declension of a base adjective.",
additional = "This generally means that {{tl|is-adecl}} contained a scraping spec like {{cd|@m}} when used on a " ..
"adjective like {{m|is|aðsópsmikill||impressive}} (in this case, the declension for {{m|is|mikill||much; great}} would be used to " ..
"construct the declension for {{m|is|aðsópsmikill}}). If scraping fails, the adjective is added to " ..
"[[:Category:{{{langname}}} scraping errors in Template:is-adecl]].",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
return {LABELS = labels}
kk6y8gbogcfoq4aztkobk4p7atmg2vl
233695
233694
2026-05-09T04:15:07Z
Lee
19
[[:en:Module:category_tree/lang/is]] වෙතින් එක් සංශෝධනයක්
233694
Scribunto
text/plain
local labels = {}
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
----------------- Nouns -----------------
labels["nouns with irregular stem"] = {
description = "{{{langname}}} nouns built using an irregular stem.",
additional = "This means that the stem is not the same as what is found in the lemma. An example is " ..
"{{m|is|maður||man}} and compounds, which use a stem ''mann-'' outside of the nominative singular.",
parents = {"irregular nouns"},
}
labels["nouns with multiple stems"] = {
description = "{{{langname}}} nouns built using multiple stems.",
additional = "Typically one of the stems is regular and the other is irregular and is used in alternative " ..
"variant forms.",
parents = {{name = "irregular nouns", sort = "multiple stems"}},
breadcrumb = "with multiple stems",
}
labels["nouns with actual gender different from declined gender"] = {
description = "{{{langname}}} nouns with a different gender (as determined by adjective concord) than would be expected by the pattern of declension endings.",
additional = "There are only a few examples in Icelandic, all of which are proper masculine names declined like feminine nouns, such as the names {{m|is|Sturla}} and {{m|is|Skúta}}.",
parents = {
{name = "irregular nouns", sort = "actual gender"},
},
breadcrumb = "with actual gender different from declined gender",
}
labels["scraping errors in Template:is-ndecl"] = {
description = "{{{langname}}} entries where scraping errors occurred in {{tl|is-ndecl}} or {{tl|is-noun}}.",
additional = "This generally means that {{tl|is-ndecl}} for a compound noun was unable to scrape the declension spec " ..
"from the base noun, or {{tl|is-noun}} was unable to self-scrape the declension spec from the corresponding call to " ..
"{{tl|is-ndecl}} on the same page. There are many causes of this, but often are related to misspelled or missing ID's when " ..
"self-scraping in the presence of multiple {{tl|is-ndecl}} calls, or ambiguous scraping specs when scraping another page. " ..
"The displayed error message (which does not trigger an actual Lua error) should give more information.",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["nouns declined using scraped base declensions"] = {
description = "{{{langname}}} nouns, generally compounds, whose declension was derived from scraping the declension of a base noun.",
additional = "This generally means that {{tl|is-ndecl}} contained a scraping spec like {{cd|@k}} when used on a " ..
"noun like {{m|is|vinkona||female friend}} (in this case, the declension for {{m|is|kona||woman}} would be used to " ..
"construct the declension for {{m|is|vinkona}}). If scraping fails, the noun is added to " ..
"[[:Category:{{{langname}}} scraping errors in Template:is-ndecl]].",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
----------------- Adjectives -----------------
for _, compsupspec in ipairs {{"comparative", "superlative"}, {"superlative", "comparative"}} do
local compsup, other = unpack(compsupspec)
labels["adjectives with multiple " .. compsup .. "s"] = {
description = "{{{langname}}} adjectives with more than one possible " .. compsup .. " form.",
additional = "Some forms may be more common than others, and some may even be archaic. See also " ..
"{{category|Icelandic adjectives with multiple " .. other .. "s}} and " ..
"{{category|Icelandic adjectives with umlauted comparative or superlative}}.",
breadcrumb = "with multiple " .. compsup .. "s",
parents = {{name = "adjectives", sort = "multiple " .. compsup .. "s"}},
}
end
labels["adjectives with umlauted comparative or superlative"] = {
description = "{{{langname}}} adjectives with umlaut (''i''-mutation) in at least one comparative or superlative form.",
additional = "Some adjectives had their comparative in Proto-Germanic built using the affix ''-iz-'' and some " ..
"with ''-ōz-''. The former triggered umlaut/''i''-mutation, but it is not (and may never have been) predictable " ..
"which affix is/was used, and in modern Icelandic the adjectives with umlauted comparative or superlative are a " ..
"closed, irregular class.",
breadcrumb = "with umlauted comparative or superlative",
parents = {{name = "irregular adjectives", sort = "umlauted comparative or superlative"}},
}
labels["scraping errors in Template:is-adecl"] = {
description = "{{{langname}}} entries where scraping errors occurred in {{tl|is-adecl}} or {{tl|is-adj}}.",
additional = "This generally means that {{tl|is-adecl}} for a compound adjective was unable to scrape the declension spec " ..
"from the base adjective, or {{tl|is-adj}} was unable to self-scrape the declension spec from the corresponding call to " ..
"{{tl|is-adecl}} on the same page. There are many causes of this, but often are related to misspelled or missing ID's when " ..
"self-scraping in the presence of multiple {{tl|is-adecl}} calls, or ambiguous scraping specs when scraping another page. " ..
"The displayed error message (which does not trigger an actual Lua error) should give more information.",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
labels["adjectives declined using scraped base declensions"] = {
description = "{{{langname}}} adjectives, generally compounds, whose declension was derived from scraping the declension of a base adjective.",
additional = "This generally means that {{tl|is-adecl}} contained a scraping spec like {{cd|@m}} when used on a " ..
"adjective like {{m|is|aðsópsmikill||impressive}} (in this case, the declension for {{m|is|mikill||much; great}} would be used to " ..
"construct the declension for {{m|is|aðsópsmikill}}). If scraping fails, the adjective is added to " ..
"[[:Category:{{{langname}}} scraping errors in Template:is-adecl]].",
parents = {"entry maintenance"},
hidden = true,
can_be_empty = true,
}
return {LABELS = labels}
kk6y8gbogcfoq4aztkobk4p7atmg2vl
Module:category tree/lang/kn
828
143365
233699
2025-04-28T05:00:15Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/kn]] to [[Module:category tree/lang/kn]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233699
Scribunto
text/plain
local labels = {}
--------------------------------- Verbs --------------------------------
labels["verbs adopted from Sanskrit"] = {
description = "{{{langname}}} verbs that are taken directly from Sanskrit rather than being native formations.</br></br>For example, {{m|kn|ಜ್ವಲಿಸು}} is taken directly from {{m+|sa|ज्वलति|ಜ್ವಲತಿ}} rather than being a native formation.",
parents = {{name = "verbs", sort = "Sanskrit"}},
}
return {LABELS = labels}
l5ebhvmdlwt4pns732b06abya2i3zce
233700
233699
2026-05-09T04:17:26Z
Lee
19
[[:en:Module:category_tree/lang/kn]] වෙතින් එක් සංශෝධනයක්
233699
Scribunto
text/plain
local labels = {}
--------------------------------- Verbs --------------------------------
labels["verbs adopted from Sanskrit"] = {
description = "{{{langname}}} verbs that are taken directly from Sanskrit rather than being native formations.</br></br>For example, {{m|kn|ಜ್ವಲಿಸು}} is taken directly from {{m+|sa|ज्वलति|ಜ್ವಲತಿ}} rather than being a native formation.",
parents = {{name = "verbs", sort = "Sanskrit"}},
}
return {LABELS = labels}
l5ebhvmdlwt4pns732b06abya2i3zce
Module:category tree/lang/jv
828
143366
233706
2025-04-28T05:00:13Z
en>WingerBot
0
WingerBot moved page [[Module:category tree/poscatboiler/data/lang-specific/jv]] to [[Module:category tree/lang/jv]]: rename category tree subpage per [[Wiktionary:Grease_pit/2025/February#cleaning_up_and_renaming_the_category_tree_modules]]
233706
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("jv")
labels["Ngoko"] = {
parents = {"Varieties of Javanese"},
}
labels["Madya"] = {
parents = {"Varieties of Javanese"},
}
labels["Krama"] = {
parents = {"Varieties of Javanese"},
}
labels["Krama ngoko"] = {
parents = {"Javanese terms by usage"},
}
return {LABELS = labels, HANDLERS = handlers}
lw3fs11p85w6vwbm42cl63lm5wyneyq
233707
233706
2026-05-09T04:24:05Z
Lee
19
[[:en:Module:category_tree/lang/jv]] වෙතින් එක් සංශෝධනයක්
233706
Scribunto
text/plain
local labels = {}
local handlers = {}
local lang = require("Module:languages").getByCode("jv")
labels["Ngoko"] = {
parents = {"Varieties of Javanese"},
}
labels["Madya"] = {
parents = {"Varieties of Javanese"},
}
labels["Krama"] = {
parents = {"Varieties of Javanese"},
}
labels["Krama ngoko"] = {
parents = {"Javanese terms by usage"},
}
return {LABELS = labels, HANDLERS = handlers}
lw3fs11p85w6vwbm42cl63lm5wyneyq
ප්රවර්ගය:පාලි යෙදුම්, Indo-Iranian භාෂා වෙතින් ව්යුත්පන්න
14
143367
233709
2026-05-09T04:26:10Z
Pinthura
2424
Pinthura විසින් [[ප්රවර්ගය:පාලි යෙදුම්, Indo-Iranian භාෂා වෙතින් ව්යුත්පන්න]] සිට [[ප්රවර්ගය:පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්රවර්ග නාමය වෙත ගෙනයාම.
233709
wikitext
text/x-wiki
#යළියොමුව [[:ප්රවර්ගය:පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න]]
0x0bwzebbbor9qu7ip01fkwz4q373zx
233713
233709
2026-05-09T04:27:25Z
Pinthura
2424
සේවා: යළියොමුව, මෘදු ප්රවර්ග යළියොමුවක් බවට හැරවීම.
233713
wikitext
text/x-wiki
{{category redirect|පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න}}
890rkh0qvg9y092bvohrirltizt1ozz
Module:category tree/lang/fro
828
143368
233711
2026-02-15T23:56:07Z
en>WingerBot
0
use breadcrumb_and_first_sort_key instead of breadcrumb_and_first_sort_base in category tree modules as the sort base is language-specific which normally doesn't apply here (manually assisted)
233711
Scribunto
text/plain
local labels = {}
labels["verbs by conjugation"] = {
preceding = "{{also|Appendix:Old French verbs}}",
description = "{{{langname}}} verbs categorized by their conjugation.",
breadcrumb = "by conjugation",
parents = {{name = "verbs", sort = "conjugation"}},
}
labels["first group verbs"] = {
description = "{{{langname}}} first group verbs, also called regular ''-er/ier'' verbs.",
additional = "This is the largest of the three main Old French verb groups. See also [[:Category:Old French second group verbs]] (regular ''-ir'' verbs), [[:Category:Old French third group verbs]] (irregular verbs) and [[:Category:Old French third-second group verbs]] (''-ir'' verbs that conjugate either as third or second group verbs).",
breadcrumb = "first group",
parents = {{name = "verbs by conjugation", sort = "1"}},
}
labels["second group verbs"] = {
description = "{{{langname}}} second group verbs, also called regular ''-ir'' verbs.",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs) and [[:Category:Old French third group verbs]] (irregular verbs).",
breadcrumb = "second group",
parents = {{name = "verbs by conjugation", sort = "2"}},
}
labels["third group verbs"] = {
description = "{{{langname}}} third group verbs, also called irregular verbs.",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs), [[:Category:Old French second group verbs]] (regular ''-ir'' verbs) and [[:Category:Old French third-second group verbs]] (''-ir'' verbs that conjugate either as third or second group verbs).",
breadcrumb = "third group",
parents = {{name = "verbs by conjugation", sort = "3"}},
}
labels["third-second group verbs"] = {
description = "{{{langname}}} third-second group verbs, usually ''-ir'' verbs that can be conjugated either as third or second group verbs (without or with the ''-iss-'' infix).",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs), [[:Category:Old French second group verbs]] (regular ''-ir'' verbs) and [[:Category:Old French third group verbs]] (irregular verbs).",
breadcrumb = "third-second group",
parents = {{name = "verbs by conjugation", sort = "3-2"}},
}
local verb_ending_types = {
["-er"] = {
desc = "forming part of the [[:Category:Old French first group verbs|first-group verbs]], although there are a few [[:Category:Old French third group verbs|third-group verbs]] as well, where {{m|fro|-er}} in this case is an [[Anglo-Norman]] variant of {{m|fro|-eir}}, itself a variant of standard {{m|fro|-oir}}",
},
["-ier"] = {
desc = "forming part of the [[:Category:Old French first group verbs|first-group verbs]]",
additional = "The stem of these verbs ended in a {{lg|palatalized}} consonant in {{catlink|Proto-Gallo-Romance}}.",
},
["-ir"] = {
desc = "part of which form the [[:Category:Old French second group verbs|second-group verbs]] while the rest form part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-īre}}, from some verbs in {{m|la|-ēre}} (particularly when the stem ended in a {{lg|palatalized}} consonant in {{catlink|Proto-Gallo-Romance}}), " ..
"and from some verbs ending in {{m|la|-ĕre}} that were transferred to the {{m|la|-īre}} or {{m|la|-ēre}} classes in {{catlink|Proto-Romance}} or later. They often alternated with " ..
"verbs in {{m+|fro|-re}}, sometimes producing {{lg|doublet}}s in modern French, such as the verb {{m|fr|plaire}} and noun {{m|fr|plaisir}}, which were alternative " ..
"infinitives for the same verb in Old French.",
},
["-eir"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]; they are either early Old French or [[Anglo-Norman]] variants of verbs in {{m|fro|-oir}}",
},
["-oir"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-ēre}} (or sometimes {{m|la|-ĕre}}) that were not preceded by a palatal consonant in {{w|Proto-Gallo-Romance}}. " ..
"(Those preceded by a palatal consonant have the ending {{m|fro|-ir}} in Old French.)",
},
["-re"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-ĕre}} (or sometimes {{m|la|-ēre}}).",
},
}
for ending, props in pairs(verb_ending_types) do
local breadcrumb = "''" .. ending .. "''"
local displaytitle = "{{{langname}}} verbs ending in " .. breadcrumb
labels["verbs ending in " .. ending] = {
description = displaytitle .. ", " .. props.desc .. ".",
displaytitle = displaytitle,
additional = props.additional,
breadcrumb_and_first_sort_key = breadcrumb,
parents = {"verbs by conjugation"},
}
end
labels["verbs by preterite type"] = {
preceding = "{{also|Appendix:Old French verbs}}",
description = "{{{langname}}} verbs categorized by the formation of their preterite tense.",
breadcrumb = "by preterite type",
parents = {{name = "verbs", sort = "preterite type"}},
}
local preterite_types = {
["weak-a"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -er|-er verbs]] (but not [[:Category:Old French verbs ending in -ier|-ier verbs]], which use [[:Category:Old French verbs with weak-a2 preterite|weak-a2 preterites]])",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ai''
| ''-as''
| ''-a''
| ''-ames''
| ''-astes''
| ''-erent''
|-
! Subjunctive imperfect
| ''-asse''
| ''-asses''
| ''-ast''
| ''-issons''<br>''-issiens''
| ''-issoiz''<br>''-issez''<br>''-issiez''
| ''-assent''
|}
]=],
},
["weak-a2"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -ier|-ier verbs]]",
additional = "The endings are nearly like [[:Category:Old French verbs with weak-a preterite|that of ''-er'' verbs]], but the third-person plural preterite ends in ''-ierent'' instead of ''-erent''.",
},
["weak-i"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -ir|-ir verbs]]",
additional = [=[
See also the [[:Category:Old French verbs with weak-i2 preterite|weak-i2 preterite]], the standard preterite type for most ''-re'' verbs.
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-i''
| ''-is''
| ''-i''
| ''-imes''
| ''-istes''
| ''-irent''
|-
! Subjunctive imperfect
| ''-isse''
| ''-isses''
| ''-ist''
| ''-issons''<br>''-issiens''
| ''-issoiz''<br>''-issez''<br>''-issiez''
| ''-issent''
|}
]=],
},
["weak-i2"] = {
desc = "used by some [[:Category:Old French third group verbs|third-group verbs]], especially those ending in [[:Category:Old French verbs ending in -re|-re]], particularly those in ''-dre'' and ''-tre''",
additional = "The endings are nearly like [[:Category:Old French verbs with weak-i preterite|that of ''-ir'' verbs]], but the third-person plural preterite ends in ''-ierent'' instead of ''-erent''.",
},
["weak-u"] = {
desc = "used by some [[:Category:Old French third group verbs|third-group verbs]]",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ui''
| ''-us''
| ''-u''
| ''-umes''
| ''-ustes''
| ''-urent''
|-
! Subjunctive imperfect
| ''-usse''
| ''-usses''
| ''-ust''
| ''-ussons''<br>''-ussiens''
| ''-ussoiz''<br>''-ussez''<br>''-ussiez''
| ''-ussent''
|}
]=],
},
["strong-i"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-u"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ui''
| ''-eüs''
| ''-u''
| ''-eümes''
| ''-eüstes''
| ''-urent''
|-
! Subjunctive imperfect
| ''-eüsse''
| ''-eüsses''
| ''-eüst''
| ''-eüssons''<br>''-eüssiens''
| ''-eüssoiz''<br>''-eüssez''<br>''-eüssiez''
| ''-eüssent''
|}
]=],
},
["strong-sd"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-st"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-id"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-o"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
}
for pret_type, props in pairs(preterite_types) do
local weak_strong, ending = pret_type:match("^(.+)%-(.+)$")
if not weak_strong then
error("Internal error: Preterite type " .. pret_type .. " cannot be split into weak/strong + ending")
end
local breadcrumb = weak_strong .. "-''" .. ending .. "''"
local displaytitle = "{{{langname}}} verbs with " .. breadcrumb .. " preterite"
labels["verbs with " .. pret_type .. " preterite"] = {
description = displaytitle .. ", " .. props.desc .. ".",
displaytitle = displaytitle,
additional = props.additional,
breadcrumb_and_first_sort_key = breadcrumb,
parents = {"verbs by preterite type"},
}
end
return {LABELS = labels}
dlzoc7j4zsr2r6ziv7ae10j8zuzozxn
233712
233711
2026-05-09T04:27:20Z
Lee
19
[[:en:Module:category_tree/lang/fro]] වෙතින් එක් සංශෝධනයක්
233711
Scribunto
text/plain
local labels = {}
labels["verbs by conjugation"] = {
preceding = "{{also|Appendix:Old French verbs}}",
description = "{{{langname}}} verbs categorized by their conjugation.",
breadcrumb = "by conjugation",
parents = {{name = "verbs", sort = "conjugation"}},
}
labels["first group verbs"] = {
description = "{{{langname}}} first group verbs, also called regular ''-er/ier'' verbs.",
additional = "This is the largest of the three main Old French verb groups. See also [[:Category:Old French second group verbs]] (regular ''-ir'' verbs), [[:Category:Old French third group verbs]] (irregular verbs) and [[:Category:Old French third-second group verbs]] (''-ir'' verbs that conjugate either as third or second group verbs).",
breadcrumb = "first group",
parents = {{name = "verbs by conjugation", sort = "1"}},
}
labels["second group verbs"] = {
description = "{{{langname}}} second group verbs, also called regular ''-ir'' verbs.",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs) and [[:Category:Old French third group verbs]] (irregular verbs).",
breadcrumb = "second group",
parents = {{name = "verbs by conjugation", sort = "2"}},
}
labels["third group verbs"] = {
description = "{{{langname}}} third group verbs, also called irregular verbs.",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs), [[:Category:Old French second group verbs]] (regular ''-ir'' verbs) and [[:Category:Old French third-second group verbs]] (''-ir'' verbs that conjugate either as third or second group verbs).",
breadcrumb = "third group",
parents = {{name = "verbs by conjugation", sort = "3"}},
}
labels["third-second group verbs"] = {
description = "{{{langname}}} third-second group verbs, usually ''-ir'' verbs that can be conjugated either as third or second group verbs (without or with the ''-iss-'' infix).",
additional = "See also [[:Category:Old French first group verbs]] (regular ''-er/-ier'' verbs), [[:Category:Old French second group verbs]] (regular ''-ir'' verbs) and [[:Category:Old French third group verbs]] (irregular verbs).",
breadcrumb = "third-second group",
parents = {{name = "verbs by conjugation", sort = "3-2"}},
}
local verb_ending_types = {
["-er"] = {
desc = "forming part of the [[:Category:Old French first group verbs|first-group verbs]], although there are a few [[:Category:Old French third group verbs|third-group verbs]] as well, where {{m|fro|-er}} in this case is an [[Anglo-Norman]] variant of {{m|fro|-eir}}, itself a variant of standard {{m|fro|-oir}}",
},
["-ier"] = {
desc = "forming part of the [[:Category:Old French first group verbs|first-group verbs]]",
additional = "The stem of these verbs ended in a {{lg|palatalized}} consonant in {{catlink|Proto-Gallo-Romance}}.",
},
["-ir"] = {
desc = "part of which form the [[:Category:Old French second group verbs|second-group verbs]] while the rest form part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-īre}}, from some verbs in {{m|la|-ēre}} (particularly when the stem ended in a {{lg|palatalized}} consonant in {{catlink|Proto-Gallo-Romance}}), " ..
"and from some verbs ending in {{m|la|-ĕre}} that were transferred to the {{m|la|-īre}} or {{m|la|-ēre}} classes in {{catlink|Proto-Romance}} or later. They often alternated with " ..
"verbs in {{m+|fro|-re}}, sometimes producing {{lg|doublet}}s in modern French, such as the verb {{m|fr|plaire}} and noun {{m|fr|plaisir}}, which were alternative " ..
"infinitives for the same verb in Old French.",
},
["-eir"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]; they are either early Old French or [[Anglo-Norman]] variants of verbs in {{m|fro|-oir}}",
},
["-oir"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-ēre}} (or sometimes {{m|la|-ĕre}}) that were not preceded by a palatal consonant in {{w|Proto-Gallo-Romance}}. " ..
"(Those preceded by a palatal consonant have the ending {{m|fro|-ir}} in Old French.)",
},
["-re"] = {
desc = "forming part of the [[:Category:Old French third group verbs|third-group verbs]]",
additional = "These originate from Latin verbs in {{m|la|-ĕre}} (or sometimes {{m|la|-ēre}}).",
},
}
for ending, props in pairs(verb_ending_types) do
local breadcrumb = "''" .. ending .. "''"
local displaytitle = "{{{langname}}} verbs ending in " .. breadcrumb
labels["verbs ending in " .. ending] = {
description = displaytitle .. ", " .. props.desc .. ".",
displaytitle = displaytitle,
additional = props.additional,
breadcrumb_and_first_sort_key = breadcrumb,
parents = {"verbs by conjugation"},
}
end
labels["verbs by preterite type"] = {
preceding = "{{also|Appendix:Old French verbs}}",
description = "{{{langname}}} verbs categorized by the formation of their preterite tense.",
breadcrumb = "by preterite type",
parents = {{name = "verbs", sort = "preterite type"}},
}
local preterite_types = {
["weak-a"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -er|-er verbs]] (but not [[:Category:Old French verbs ending in -ier|-ier verbs]], which use [[:Category:Old French verbs with weak-a2 preterite|weak-a2 preterites]])",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ai''
| ''-as''
| ''-a''
| ''-ames''
| ''-astes''
| ''-erent''
|-
! Subjunctive imperfect
| ''-asse''
| ''-asses''
| ''-ast''
| ''-issons''<br>''-issiens''
| ''-issoiz''<br>''-issez''<br>''-issiez''
| ''-assent''
|}
]=],
},
["weak-a2"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -ier|-ier verbs]]",
additional = "The endings are nearly like [[:Category:Old French verbs with weak-a preterite|that of ''-er'' verbs]], but the third-person plural preterite ends in ''-ierent'' instead of ''-erent''.",
},
["weak-i"] = {
desc = "the standard preterite type for [[:Category:Old French verbs ending in -ir|-ir verbs]]",
additional = [=[
See also the [[:Category:Old French verbs with weak-i2 preterite|weak-i2 preterite]], the standard preterite type for most ''-re'' verbs.
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-i''
| ''-is''
| ''-i''
| ''-imes''
| ''-istes''
| ''-irent''
|-
! Subjunctive imperfect
| ''-isse''
| ''-isses''
| ''-ist''
| ''-issons''<br>''-issiens''
| ''-issoiz''<br>''-issez''<br>''-issiez''
| ''-issent''
|}
]=],
},
["weak-i2"] = {
desc = "used by some [[:Category:Old French third group verbs|third-group verbs]], especially those ending in [[:Category:Old French verbs ending in -re|-re]], particularly those in ''-dre'' and ''-tre''",
additional = "The endings are nearly like [[:Category:Old French verbs with weak-i preterite|that of ''-ir'' verbs]], but the third-person plural preterite ends in ''-ierent'' instead of ''-erent''.",
},
["weak-u"] = {
desc = "used by some [[:Category:Old French third group verbs|third-group verbs]]",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ui''
| ''-us''
| ''-u''
| ''-umes''
| ''-ustes''
| ''-urent''
|-
! Subjunctive imperfect
| ''-usse''
| ''-usses''
| ''-ust''
| ''-ussons''<br>''-ussiens''
| ''-ussoiz''<br>''-ussez''<br>''-ussiez''
| ''-ussent''
|}
]=],
},
["strong-i"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-u"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
additional = [=[
Endings are as follows:
{|class="wikitable"
!
! ''jo''
! ''tu''
! ''il''
! ''nos''
! ''vos''
! ''il''
|-
! Preterite
| ''-ui''
| ''-eüs''
| ''-u''
| ''-eümes''
| ''-eüstes''
| ''-urent''
|-
! Subjunctive imperfect
| ''-eüsse''
| ''-eüsses''
| ''-eüst''
| ''-eüssons''<br>''-eüssiens''
| ''-eüssoiz''<br>''-eüssez''<br>''-eüssiez''
| ''-eüssent''
|}
]=],
},
["strong-sd"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-st"] = {
desc = "used by a number of [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-id"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
["strong-o"] = {
desc = "used by a few [[:Category:Old French third group verbs|third-group verbs]]",
},
}
for pret_type, props in pairs(preterite_types) do
local weak_strong, ending = pret_type:match("^(.+)%-(.+)$")
if not weak_strong then
error("Internal error: Preterite type " .. pret_type .. " cannot be split into weak/strong + ending")
end
local breadcrumb = weak_strong .. "-''" .. ending .. "''"
local displaytitle = "{{{langname}}} verbs with " .. breadcrumb .. " preterite"
labels["verbs with " .. pret_type .. " preterite"] = {
description = displaytitle .. ", " .. props.desc .. ".",
displaytitle = displaytitle,
additional = props.additional,
breadcrumb_and_first_sort_key = breadcrumb,
parents = {"verbs by preterite type"},
}
end
return {LABELS = labels}
dlzoc7j4zsr2r6ziv7ae10j8zuzozxn
ප්රවර්ගය:Pali යෙදුම්, Indo-Iranian භාෂා වෙතින් ව්යුත්පන්න
14
143369
233714
2026-05-09T04:27:35Z
Pinthura
2424
සේවා: මෘදු ප්රවර්ග යළියොමුවක් නිර්මාණය.
233714
wikitext
text/x-wiki
{{category redirect|පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න}}
890rkh0qvg9y092bvohrirltizt1ozz
ප්රවර්ගය:පාලි terms derived from ඉන්දු-ඉරාන languages
14
143370
233715
2026-05-09T04:27:45Z
Pinthura
2424
සේවා: මෘදු ප්රවර්ග යළියොමුවක් නිර්මාණය.
233715
wikitext
text/x-wiki
{{category redirect|පාලි යෙදුම්, ඉන්දු-ඉරාන භාෂා වෙතින් ව්යුත්පන්න}}
890rkh0qvg9y092bvohrirltizt1ozz
උතුරයි
0
143371
233734
2026-05-09T05:14:01Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb + ආශ්රිත පද + අමතර අවධානයට + මූලාශ්ර + ප්රවර්ගය
233734
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|උතුරා#ක්රියා පද|උතුරා}}
=== නිරුක්තිය ===
{{etymon|si|id=උතුරා යි|af|si>උතුරා#ක්රියා පද>පදය|si>යි>පදය|tree=1}}
''[[උතුර#ධාතු ප්රකෘතිය|උතුර]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > උතුර් - '''අ''' ([[ස්වර ලොපය]]) + -ආ > [[උතුරා#ක්රියා පද|උතුරා]] (වෙනත් ආකාර) + [[යි]] >'' [[උතුරයි]]
===උච්චාරණය===
* {{IPA|si|/ˈuturaji/}}
===ක්රියා පද===
{{head|si|verb
|අතීත-අකර්මක අන්ය පුරුෂ ඒකවචන|ඉතිරී#ක්රියා පද 1
|අනතීත-අකර්මක අන්ය පුරුෂ බහුවචන|උතුරති#ක්රියා පද
|අනතීත-අකර්මක උත්තම ඒකවචන|උතුරමි#ක්රියා පද
|අනතීත-අකර්මක උත්තම බහුවචන|උතුරමු#ක්රියා පද
|අනතීත-ප්රයුක්ත|උතුරවයි#ක්රියා පද
|අනතීත-භාව නාම ක්රියා|උතුරනවා#ක්රියා පද
|අනතීත-කාරක නාම ක්රියා|උතුරන්නේ#ක්රියා පද
|අකර්මක වර්තමාන-නිපාත|උතුරමින්#ක්රියා පද
|අනතීත-අකර්මක-අත් පද අන්ය පුරුෂ ඒකවචන|ඉතිරේ#ක්රියා පද
}}
# {{lb|si||අකර්මක|පර පද}} {{rfdef|si}}
# {{lb|si||අකර්මක|පර පද}} {{rfdef|si}}
====ආශ්රිත පද====
{{top4}}
* {{l|si|ඉතිරුම්}}
* {{l|si|ඉතිරුම}}
* {{l|si|ඉතිරූ}}
* {{l|si|උතුරා#ක්රියා පද|උතුරා}} ''(සකර්මක අතීත නිපාත)''
{{bottom}}
=== අමතර අවධානයට ===
{{top4}}
* {{l|si|පතුරයි}}
* {{l|si|අතුරයි}}
* {{l|si|විසුරයි}}
* {{l|si|පැසේ}}
* {{l|si|නටයි}}
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[උතුර#ධාතු ප්රකෘතිය|උතුර]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 121 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
odu3bz7er4og8fqd291mas9mq6996kr
ඇතිරීමි
0
143372
233735
2026-05-09T05:19:26Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms + infl of|si + ප්රවර්ගය
233735
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈætiriːmi/}}
===ක්රියා පද===
{{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|අතුරමි#ක්රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇතිරිණිමි#ක්රියා පද 2}}
# {{lb|si|සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
0ouztmrb3ruzt35vrj5nvma1ggpu3an
අතුරමින්
0
143373
233736
2026-05-09T05:25:01Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233736
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈaturəmin/}}
===ක්රියා පද===
{{head|si|verb forms|head=අතුරමින්|සකර්මක අතීත-නිපාත ක්රියා|අතුරා#ක්රියා පද|සකර්මක අනාගත-නිපාත ක්රියා|අතුරනුව#ක්රියා පද}}
# {{lb|si||සකර්මක}} {{infl of|si|අතුරයි#ක්රියා පද||වර්තමාන|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]]
hm4dkggfdzw4i9d6jy98oehnedds6ps
ඇදේ
0
143374
233737
2026-05-09T05:32:39Z
WrdSrchSi
3305
Page created: + etymon|si + IPA|si + head|si|verb forms + infl of|si + ප්රවර්ගය + head|si|noun form
233737
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇදෙයි#ක්රියා පද}}
=== නිරුක්තිය 2 ===
{{etymon|si|id=අද ඒ|af|si>අද#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඒ>ප්රත්ය|tree=1}}
''[[අද#ධාතු ප්රකෘතිය|අද]] (ප්රකෘතිය) + [[-ඒ]] (ප්රත්ය) >'' [[ඇදේ ]]
===උච්චාරණය===
* {{IPA|si|/ˈædeː/}}
===ක්රියා පද===
{{head|si|verb forms|head=ඇදේ|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇදිණි#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදෙති#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදෙමි#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම බහුවචන|ඇදෙමු#ක්රියා පද}}
# {{infl of|si|අදී#ක්රියා පද||අනතීත|කර්ම කාරක|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
=== නිරුක්තිය 2 ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{lb|si|අවිධිමත්?}} {{rfdef|si}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
j69y5o22xcvdewwcmn8vv8pvb9vscbf
ඇදිණි
0
143375
233738
2026-05-09T05:36:55Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233738
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈædiɳi/}}
===ක්රියා පද===
{{head|si|verb forms|head=ඇදිණි|අතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදුණු#ක්රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදිණිමි#ක්රියා පද|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇදුණුමු#ක්රියා පද}}
# {{infl of|si|අදී#ක්රියා පද||අතීත|කර්ම කාරක|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
c9yktmtdtcfwn4313vgtbjp2v62twss
ඇදුණු
0
143376
233739
2026-05-09T05:40:09Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233739
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈæduɳu/}}
===ක්රියා පද===
{{head|si|verb forms|head=ඇදුණු|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇදිණි#ක්රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදිණිමි#ක්රියා පද|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇදුණුමු#ක්රියා පද}}
# {{infl of|si|අදී#ක්රියා පද||අතීත|කර්ම කාරක|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
6uhhhdfynb00rp2q1sde77zr2rhqm3h
අදහත්
0
143377
233741
2026-05-09T06:18:43Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms + alternative form of|si + ප්රවර්ගය
233741
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈadəɦat/}}
===ක්රියා පද===
{{head|si|verb forms}}
# {{alternative form of|si|අදහති#ක්රියා පද}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
ghoz1vey5uzrprwq82hi2zersp0gdlh
ඇදැහී
0
143378
233742
2026-05-09T06:24:19Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms + infl of|si + ප්රවර්ගය
233742
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇදහී#ක්රියා පද|ඇදහී}}
=== නිරුක්තිය ===
{{etymon|si|id=අදහ ඊ|af|si>අදහ#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඊ>ප්රත්ය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-ඊ]] (ප්රත්ය) >'' [[ඇදැහී]]
===උච්චාරණය===
* {{IPA|si|/ˈædæɦiː/}}
===ක්රියා පද===
{{head|si|verb forms}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අතීත|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
ha8d1pp7qekui7nyxsa2n39fus3qcgs
233743
233742
2026-05-09T06:27:36Z
WrdSrchSi
3305
+ head|si|verb forms + infl of|si (ක්රියා පද 2) + ප්රවර්ගය
233743
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇදහී#ක්රියා පද|ඇදහී}}
=== නිරුක්තිය ===
{{etymon|si|id=අදහ ඊ|af|si>අදහ#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඊ>ප්රත්ය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-ඊ]] (ප්රත්ය) >'' [[ඇදැහී]]
===උච්චාරණය===
* {{IPA|si|/ˈædæɦiː/}}
===ක්රියා පද 1===
{{head|si|verb forms}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අතීත|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
===ක්රියා පද 2===
{{head|si|verb forms|සකර්මක අතීත-නිපාත|අදහා#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන ආඛ්යාත|ඇදැහේ#ක්රියා පද}}
# {{infl of|si|අදහයි#ක්රියා පද||කර්ම කාරක|අතීත|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]]
9u2re5nst8xtp94w5g19n84aqbddys0
අදහා
0
143379
233744
2026-05-09T06:32:44Z
WrdSrchSi
3305
Page created: + etymon|si + IPA|si + head|si|verb forms|head= + alternative form of|si + infl of|si + ප්රවර්ගය
233744
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{etymon|si|id=අදහ ආ|af|si>අදහ#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ආ>ප්රත්ය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අදහ් - '''අ''' ([[ස්වර ලොපය]]) + -ආ >'' [[අදහා]]
===උච්චාරණය===
* {{IPA|si|/ˈadəɦaː/}}
===ක්රියා පද===
{{head|si|verb forms|head=අදහා|සකර්මක වර්තමාන-නිපාත|අදහමින්#ක්රියා පද|සකර්මක අනාගත-නිපාත|අදහනුව#ක්රියා පද|කර්ම කාරක අතීත-නිපාත|ඇදැහී#ක්රියා පද 2}}
# {{lb|si|සකර්මක}} {{alternative form of|si|අදහයි#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අතීත|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]]
7udyd8p340peuujgt9g0ozjww7g4kwg
අදහ
0
143380
233745
2026-05-09T06:37:21Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|root + wikitable + මූලාශ්ර + ප්රවර්ගය
233745
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈadəɦə/}}
===ධාතු ප්රකෘතිය===
{{head|si|root}}
# {{rfdef|si}}
====ආඛ්යාත ක්රියා පද====
{| class="wikitable"
|+
|-
! !!අන්ය පුරුෂ<br>ඒකවචන!!අන්ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන
|-
|අනතීත-සකර්මක||align="center"|[[අදහයි]]||align="center"|[[අදහති]]||align="center"|[[අදහමි]]||align="center"|[[අදහමු]]
|-
|අතීත-සකර්මක||||||||
|-
|අනතීත-කර්ම කාරක||||||||
|-
|අතීත-කර්ම කාරක||||||||
|-
|}
=== මූලාශ්ර ===
<references/>
* "[https://tipitaka.lk/library/963 අදහ]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 110 පිටුව
* "[https://tipitaka.lk/library/875 අදහ(ධා)]", වැලිවිටියේ සෝරත හිමි, '''''ශ්රී සුමංගල සිංහල ශබ්දකෝෂය 1 අ-න''''', — 44 පිටුව
[[ප්රවර්ගය:සිංහල ධාතු ප්රකෘති]]
7fbjoxgwuddwmdhf6vodqgt45lwuara
අදහන
0
143381
233746
2026-05-09T06:38:35Z
WrdSrchSi
3305
Page created.
233746
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම විශේෂණ පදය ===
{{si-adj}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
2032ufwklqrqtwqz3bb1ybozr1uafmz
අදහමු
0
143382
233747
2026-05-09T06:44:23Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head + infl of|si + ප්රවර්ගය
233747
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈadəɦamu/}}
===ක්රියා පද===
{{head|si|verb forms|head=අදහමු|අතීත-සකර්මක උත්තම බහුවචන|ඇදැහූමු#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම බහුවචන|ඇදැහෙමු#ක්රියා පද|අතීත-කර්ම කාරක උත්තම බහුවචන|ඇදැහුණුමු#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අනතීත|උත්තම පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
jfepjgb18ifvt7ornutvwme4fge2mv1
අදහති
0
143383
233748
2026-05-09T06:49:53Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233748
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අදහත්#ක්රියා පද|අදහත්}}
=== නිරුක්තිය ===
{{etymon|si|id=අදහ අති|af|si>අදහ#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-අති>ප්රත්ය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-අති]] (ප්රත්ය) > අදහ් - '''අ''' ([[ස්වර ලොපය]]) + -අති >'' [[අදහති]]
===උච්චාරණය===
* {{IPA|si|/ˈadəɦati/}}
===ක්රියා පද===
{{head|si|verb forms|head=අදහති|අතීත-සකර්මක අන්ය පුරුෂ බහුවචන|ඇදැහූ#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදැහෙති#ක්රියා පද|අතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදැහුණු#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අනතීත|අන්ය පුරුෂ|බහුවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
lrjq5mry01pz7s4qrhcab56odrjs8he
අදහමි
0
143384
233749
2026-05-09T06:52:34Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head + infl of|si + ප්රවර්ගය
233749
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈadəɦami/}}
===ක්රියා පද===
{{head|si|verb forms|head=අදහමි|අතීත-සකර්මක උත්තම ඒකවචන|ඇදැහීමි#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදැහෙමි#ක්රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදැහිණිමි#ක්රියා පද}}
# {{lb|si|සකර්මක}} {{infl of|si|අදහයි#ක්රියා පද||අනතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
ms7zqgpmb3wsum82wmntzeqa2u29g1d
අදහයි
0
143385
233750
2026-05-09T11:22:22Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb + ආශ්රිත පද + අමතර අවධානයට + මූලාශ්ර + ප්රවර්ගය
233750
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|අදහා#ක්රියා පද|අදහා}}
=== නිරුක්තිය ===
{{etymon|si|id=අදහා යි|af|si>අදහා#ක්රියා පද>පදය|si>යි>පදය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-ආ]] (ප්රත්ය) > අදහ් - '''අ''' ([[ස්වර ලොපය]]) + -ආ > [[අදහා#ක්රියා පද|අදහා]] (වෙනත් ආකාර) + [[යි]] >'' [[අදහයි]]
===උච්චාරණය===
* {{IPA|si|/ˈadəɦaji/}}
===ක්රියා පද===
{{head|si|verb
|අතීත-සකර්මක අන්ය පුරුෂ ඒකවචන|ඇදැහී#ක්රියා පද 1
|අනතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇදැහේ#ක්රියා පද
|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇදැහිණි#ක්රියා පද
|අනතීත-සකර්මක අන්ය පුරුෂ බහුවචන|අදහති#ක්රියා පද
|අනතීත-සකර්මක උත්තම ඒකවචන|අදහමි#ක්රියා පද
|අනතීත-සකර්මක උත්තම බහුවචන|අදහමු#ක්රියා පද
|අනතීත-ප්රයුක්ත|අදහවයි#ක්රියා පද
|අනතීත-භාව නාම ක්රියා|අදහනවා#ක්රියා පද
|අනතීත-කාරක නාම ක්රියා|අදහන්නේ#ක්රියා පද
|සකර්මක වර්තමාන-නිපාත|අදහමින්#ක්රියා පද
}}
# {{lb|si||සකර්මක}} {{rfdef|si}}
====ආශ්රිත පද====
{{top4}}
* {{l|si|ඇදැහුම්}}
* {{l|si|ඇදැහුම}}
* {{l|si|ඇදැහූ}}
* {{l|si|ඇදැහුණු}}
* {{l|si|අදහා#ක්රියා පද|අදහා}} ''(සකර්මක අතීත නිපාත)''
{{bottom}}
==== පරිවර්තන ====
''පරිවර්තන සඳහා අනාගත කාලය සලකා නැත.''
{{trans-top|අදහයි}}
* ඉංග්රීසි: {{t|en|believe}}
{{trans-bottom}}
=== අමතර අවධානයට ===
{{top2}}
* {{l|si|විස්වසී#ක්රියා පද}}
* {{l|si|වඳී#ක්රියා පද}}
{{bottom}}
=== මූලාශ්ර ===
<references/>
* "[[අදහ#ධාතු ප්රකෘතිය|අදහ]] [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්රියා විවරණය''''', — 217 පිටුව
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
-->
7nms51hlufn7581y2j7s4088cvng3cx
ඇදැහේ
0
143386
233751
2026-05-09T11:29:43Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + etymon|si + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
233751
wikitext
text/x-wiki
==සිංහල==
===වෙනත් ආකාර===
* {{l|si|ඇදැහෙයි#ක්රියා පද}}
=== නිරුක්තිය ===
{{etymon|si|id=අදහ ඒ|af|si>අදහ#ධාතු ප්රකෘතිය>ප්රකෘතිය|si>-ඒ>ප්රත්ය|tree=1}}
''[[අදහ#ධාතු ප්රකෘතිය|අදහ]] (ප්රකෘතිය) + [[-ඒ]] (ප්රත්ය) >'' [[ඇදැහේ]]
===උච්චාරණය===
* {{IPA|si|/ˈædæɦeː/}}
===ක්රියා පද===
{{head|si|verb forms|head=ඇදැහේ|අතීත-කර්ම කාරක අන්ය පුරුෂ ඒකවචන|ඇදැහිණි#ක්රියා පද|අනතීත-කර්ම කාරක අන්ය පුරුෂ බහුවචන|ඇදැහෙති#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|ඇදැහෙමි#ක්රියා පද|අනතීත-කර්ම කාරක උත්තම බහුවචන|ඇදැහෙමු#ක්රියා පද}}
# {{infl of|si|අදහයි#ක්රියා පද||අනතීත|කර්ම කාරක|අන්ය පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
2yfwh2tsjnu7r0n1la8aknp9zia9wlg
නඳසෙන්
0
143387
233752
2026-05-09T11:49:34Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|proper noun + definition
233752
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈnaⁿd̪əsen/}}
=== සංඥා නාම පදය ===
{{head|si|proper noun}}
# {{l|si|නන්දසේන}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
c1t6qiv7t7souh2pu4kemqqkieborms