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. \"&lt;&lt;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. \"&lt;&lt;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. \"&lt;&lt;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. \"&lt;&lt;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