Wiksiyonaryo
tlwiktionary
https://tl.wiktionary.org/wiki/Wiksiyonaryo:Unang_Pahina
MediaWiki 1.47.0-wmf.19
case-sensitive
Midya
Natatangi
Usapan
Tagagamit
Usapang tagagamit
Wiksiyonaryo
Usapang Wiksiyonaryo
Talaksan
Usapang talaksan
MediaWiki
Usapang MediaWiki
Padron
Usapang padron
Tulong
Usapang tulong
Kategorya
Usapang kategorya
TimedText
TimedText talk
Module
Module talk
Event
Event talk
burgerschap
0
14483
177934
154977
2026-09-13T07:27:08Z
Yivan000
4078
177934
wikitext
text/x-wiki
=={{=nl=}}==
{{wp|nl:}}
===Etimolohiya===
Mula sa {{inh|nl|dum|borgerscap}}. Katumbas ng {{suffix|nl|burger|schap}}.
===Pagbigkas===
* {{IPA|nl|/ˈbʏr.ɣərˌsxɑp/}}
* {{audio|nl|Nl-burgerschap.ogg}}
* {{hyphenation|nl|bur|ger|schap}}
===Pangngalan===
{{nl-noun|n|-|-}}
# [[pagkamamamayan]]
bhnjdsos6wlzzc37kjhknplext5vkj8
Module:category tree
828
30812
177930
175844
2026-09-13T07:05:55Z
Yivan000
4078
177930
Scribunto
text/plain
-- Prevent substitution.
if mw.isSubsting() then
return require("Module:unsubst")
end
local export = {}
local category_tree_submodule_prefix = "Module:category tree/"
local category_tree_styles_css = "Module:category tree/styles.css"
local m_str_utils = require("Module:string utilities")
local m_template_parser = require("Module:template parser")
local m_utilities = require("Module:utilities")
local ceil = math.ceil
local class_else_type = m_template_parser.class_else_type
local concat = table.concat
local deep_copy = require("Module:table").deepCopy
local full_url = mw.uri.fullUrl
local insert = table.insert
local is_callable = require("Module:fun").is_callable
local log10 = math.log10 or require("Module:math").log10
local new_title = mw.title.new
local pages_in_category = mw.site.stats.pagesInCategory
local parse = m_template_parser.parse
local remove_comments = require("Module:string/removeComments")
local sort = table.sort
local split = m_str_utils.split
local string_compare = require("Module:string/compare")
local trim = m_str_utils.trim
local uupper = m_str_utils.upper
local yesno = require("Module:yesno")
local current_frame = mw.getCurrentFrame()
local current_title = mw.title.getCurrentTitle()
local namespace = current_title.namespace
local poscatboiler_subsystem = "poscatboiler"
local extra_args_error = "Extra arguments to {{((}}auto cat{{))}} are not allowed for this category."
-- Generates a sortkey for a numeral `n`, adding leading zeroes to avoid the "1, 10, 2, 3" sorting problem. `max_n` is the greatest expected value of `n`, and is used to determine how many leading zeroes are needed. If not supplied, it defaults to the number of languages.
function export.numeral_sortkey(n, max_n)
max_n = max_n or require("Module:list of languages").count()
return ("#%%0%dd"):format(ceil(log10(max_n + 1))):format(n)
end
function export.split_lang_label(title_text)
local getByCanonicalName = require("Module:languages").getByCanonicalName
-- Progressively remove a word from the potential canonical name until it
-- matches an actual canonical name.
local words = split(title_text, " ", true)
for i = #words - 1, 1, -1 do
local lang = getByCanonicalName(concat(words, " ", 1, i))
if lang then
return lang, concat(words, " ", i + 1)
end
end
return nil, title_text
end
local function show_error(text)
return require("Module:message box").maintenance(
"red",
"[[File:Codex icon Alert red.svg|40px|alt=alert]]",
"Wala sa mga datos ang kategoryang ito.", --TLCHANGE This category is not defined in Wiktionary's category tree.
text
)
end
-- Show the text that goes at the very top right of the page.
local function show_topright(current)
return current.getTopright and current:getTopright() or nil
end
local function link_box(content)
return ("<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: var(--wikt-palette-paleblue, #f9f9f9); border: 1px var(--border-color-base, #aaaaaa) solid; margin-top: -1px; padding: 5px; font-weight: bold;\">%s</div>"):format(content)
end
local function show_editlink(current)
return link_box(("[%s I-edit ang datos ng kategorya]"):format(tostring(full_url(current:getDataModule(), "action=edit")))) --TLCHANGE
end
function show_related_changes()
local title = current_title.fullText
return link_box(("[%s <span title=\"Mga huling pagbabago sa %s\">Mga huling binago</span>]"):format( --TLCHANGE Recent changes
tostring(full_url("Special:RecentChangesLinked", {
target = title,
showlinkedto = 0,
})),
title
))
end
local function show_pagelist(current)
local namespace = "namespace="
local info = current:getInfo()
local lang_code = info.code
if info.label == "citations" or info.label == "citations of undefined terms" then
namespace = namespace .. "Citations"
elseif lang_code then
local lang = require("Module:languages").getByCode(lang_code, true)
if lang then
-- Proto-Norse (gmq-pro) is the probably language with a code ending in -pro
-- that's intended to have mostly non-reconstructed entries.
if (lang_code:find("%-pro$") and lang_code ~= "gmq-pro") or lang:hasType("reconstructed") then
namespace = namespace .. "Reconstruction"
elseif lang:hasType("appendix-constructed") then
namespace = namespace .. "Appendix"
end
end
elseif info.label:match("templates") then
namespace = namespace .. "Template"
elseif info.label:match("modules") then
namespace = namespace .. "Module"
elseif info.label:match("^Wiktionary") or info.label:match("^Pages") then
namespace = ""
end
return ([=[
{| id="newest-and-oldest-pages" class="wikitable mw-collapsible" style="float: right; clear: both; margin: 0 0 .5em 1em;"
! Newest and oldest pages
|-
| id="recent-additions" style="font-size:0.9em;" | '''Newest pages ordered by last [[mw:Manual:Categorylinks table#cl_timestamp|category link update]]:'''
%s
|-
| id="oldest-pages" style="font-size:0.9em;" | '''Oldest pages ordered by last edit:'''
%s
|}]=]):format(
current_frame:extensionTag(
"DynamicPageList",
([=[
category=%s
%s
count=10
mode=ordered
ordermethod=categoryadd
order=descending]=]
):format(current_title.text, namespace)
),
current_frame:extensionTag(
"DynamicPageList",
([=[
category=%s
%s
count=10
mode=ordered
ordermethod=lastedit
order=ascending]=]
):format(current_title.text, namespace)
)
)
end
--TLCHANGE ADD ENGLISH NAME OF CATEGORY AT THE TOP
local englishName --make this top variable
local function show_english(current)
englishName = englishName or current:getEnglishName()
if englishName then
return ("<div style=\"font-size:1.3em; font-family:'Linux Libertine', 'Georgia', 'Times', 'Source Serif Pro', serif; background: var(--wikt-palette-paleblue, #f9f9f9);color:inherit; border: 1px var(--border-color-base, #aaaaaa) solid; padding: 0.5em; margin: 1em auto;\">''<small>(sa Ingles/in English)</small>'' <span id='english_name'><span class='mw-page-title-namespace'>Category</span><span class='mw-page-title-separator'>:</span><span class='mw-page-title-main'>"
.. englishName
.. "</span></span><span style=\"float: right; font-size:0.9em;\">[[:en:Category:" .. englishName:gsub("<[^>]+>", "") .. "|↗]]</span></div>")
--return "<div class=\"mw-body-content mw-heading2\" style=\"\">''<small>(sa Ingles)</small> Category:" .. englishName .. "''</div>"
else
return "[[Category:Kategoryang walang pangalan sa Ingles]]" --add to cateory if none
end
end
-- Show navigational "breadcrumbs" at the top of the page.
local function show_breadcrumbs(current)
local steps = {}
-- Start at the current label and move our way up the "chain" from child to parent, until we can't go further.
while current do
local category, display_name, nocap
if type(current) == "string" then
category = current
display_name = current:gsub("^Kategorya:", "") --TLCHANGE ("^Category:", "")
else
if not current.getCategoryName then
error("Internal error: Bad format in breadcrumb chain structure, probably a misformatted value for `parents`: " ..
mw.dumpObject(current))
end
category = "Kategorya:" .. current:getCategoryName() --TLCHANGE "Category:"
display_name, nocap = current:getBreadcrumbName()
end
if not nocap then
display_name = mw.getContentLanguage():ucfirst(display_name)
end
insert(steps, 1, ("[[:%s|%s]]"):format(category, display_name))
-- Move up the "chain" by one level.
if type(current) == "string" then
current = nil
else
current = current:getParents()
end
if current then
current = current[1].name
end
end
local templateStyles = require("Module:TemplateStyles")(category_tree_styles_css)
local ol = mw.html.create("ol")
for i, step in ipairs(steps) do
local li = mw.html.create("li")
if i ~= 1 then
local span = mw.html.create("span")
:attr("aria-hidden", "true")
:addClass("ts-categoryBreadcrumbs-separator")
:wikitext(" » ")
li:node(span)
end
li:wikitext(step)
ol:node(li)
end
return templateStyles .. tostring(mw.html.create("div")
:attr("role", "navigation")
:attr("aria-label", "Breadcrumb")
:addClass("ts-categoryBreadcrumbs")
:node(ol))
end
local function show_also(current)
local also = current._info.also
if also and #also > 0 then
return ('<div style="margin-top:-1em;margin-bottom:1.5em">%s</div>'):format(require("Module:also").main(also))
end
return nil
end
-- Show a short description text for the category.
local function show_description(current)
return current.getDescription and current:getDescription() or nil
end
local function show_appendix(current)
local appendix = current.getAppendix and current:getAppendix()
return appendix and ("For more information, see [[%s]]."):format(appendix) or nil
end
local function sort_children(child1, child2)
return string_compare(uupper(child1.sort), uupper(child2.sort))
end
-- Show a list of child categories.
local function show_children(current)
local children = current.getChildren and current:getChildren() or nil
if not children then
return nil
end
sort(children, sort_children)
local children_list = {}
for _, child in ipairs(children) do
local child_name, child_pagetitle = child.name
if type(child_name) == "string" then
child_pagetitle = child_name
else
child_pagetitle = "Kategorya:" .. child_name:getCategoryName() --TLCHANGE "Category:"
end
if new_title(child_pagetitle).exists then
insert(children_list, ("* [[:%s]]: %s"):format(
child_pagetitle,
child.description or
type(child_name) == "string" and child_name:gsub("^Kategorya:", "") .. "." or --TLCHANGE "^Category:"
child_name:getDescription("child")
))
end
end
return concat(children_list, "\n")
end
-- Show a table of contents with links to each letter in the language's script.
local function show_TOC(current)
local titleText = current_title.text
local inCategoryPages = pages_in_category(titleText, "pages")
local inCategorySubcats = pages_in_category(titleText, "subcats")
local TOC_type
-- Compute type of table of contents required.
if inCategoryPages > 2500 or inCategorySubcats > 2500 then
TOC_type = "full"
elseif inCategoryPages > 200 or inCategorySubcats > 200 then
TOC_type = "normal"
else
-- No (usual) need for a TOC if all pages or subcategories can fit on one page;
-- but allow this to be overridden by a custom TOC handler.
TOC_type = "none"
end
if current.getTOC then
local TOC_text = current:getTOC(TOC_type)
if TOC_text ~= true then
return TOC_text or nil
end
end
if TOC_type ~= "none" then
local templatename = current:getTOCTemplateName()
local TOC_template
if TOC_type == "full" then
-- This category is very large, see if there is a "full" version of the TOC.
local TOC_template_full = new_title(templatename .. "/full")
if TOC_template_full.exists then
TOC_template = TOC_template_full
end
end
if not TOC_template then
local TOC_template_normal = new_title(templatename)
if TOC_template_normal.exists then
TOC_template = TOC_template_normal
end
end
if TOC_template then
return current_frame:expandTemplate{title = TOC_template.text, args = {}}
end
end
return nil
end
-- Show the "catfix" that adds language attributes and script classes to the page.
local function show_catfix(current)
local lang, sc = current:getCatfixInfo()
return lang and m_utilities.catfix(lang, sc) or nil
end
-- Show the parent categories that the current category should be placed in.
local function show_categories(current, categories)
local parents = current.getParents and current:getParents() or nil
if not parents then
return nil
end
for _, parent in ipairs(parents) do
local parent_name = parent.name
local sortkey = type(parent.sort) == "table" and parent.sort:makeSortKey() or parent.sort
if type(parent_name) == "string" then
insert(categories, ("[[%s|%s]]"):format(parent_name, sortkey))
else
insert(categories, ("[[Category:%s|%s]]"):format(parent_name:getCategoryName(), sortkey))
end
end
-- Also put the category in its corresponding "umbrella" or "by language" category.
local umbrella = current:getUmbrella()
if umbrella then
-- FIXME: use a language-neutral sorting function like the Unicode Collation Algorithm.
local sortkey = current._lang and current._lang:getCanonicalName() or current:getCategoryName()
sortkey = require("Module:languages").getByCode("en", true):makeSortKey(sortkey)
if type(umbrella) == "string" then
insert(categories, ("[[%s|%s]]"):format(umbrella, sortkey))
else
insert(categories, ("[[Category:%s|%s]]"):format(umbrella:getCategoryName(), sortkey))
end
end
-- Check for various unwanted parser functions, which should be integrated into the category tree data instead.
-- Note: HTML comments shouldn't be removed from `content` until after this step, as they can affect the result.
local content = current_title:getContent()
if not content then
-- This happens when using [[Special:ExpandTemplates]] to call {{auto cat}} on a nonexistent category page,
-- which is needed by Benwing's create_wanted_categories.py script.
return
end
local defaultsort, displaytitle, page_has_param
for node in parse(content):iterate_nodes() do
local node_class = class_else_type(node)
if node_class == "template" then
local name = node:get_name()
if name == "DEFAULTSORT:" and not defaultsort then
insert(categories, "[[Category:Pages with DEFAULTSORT conflicts]]")
defaultsort = true
elseif name == "DISPLAYTITLE:" and not displaytitle then
insert(categories,"[[Category:Pages with DISPLAYTITLE conflicts]]")
displaytitle = true
end
elseif node_class == "parameter" and not page_has_param then
insert(categories,"[[Category:Pages with raw triple-brace template parameters]]")
page_has_param = true
end
end
-- Check for raw category markup, which should also be integrated into the category tree data.
content = remove_comments(content, "BOTH")
local head = content:find("[[", 1, true)
while head do
local close = content:find("]]", head + 2, true)
if not close then
break
end
-- Make sure there are no intervening "[[" between head and close.
local open = content:find("[[", head + 2, true)
while open and open < close do
head = open
open = content:find("[[", head + 2, true)
end
local cat = content:sub(head + 2, close - 1)
local colon = cat:match("^[ _\128-\244]*[Cc][Aa][Tt][EeGgOoRrYy _\128-\244]*():")
if colon then
local pipe = cat:find("|", colon + 1, true)
if pipe ~= #cat then
local title = new_title(pipe and cat:sub(1, pipe - 1) or cat)
if title and title.namespace == 14 then
insert(categories,"[[Category:Categories with categories using raw markup]]")
break
end
end
end
head = open
end
end
local function generate_output(current)
if current then
for _, functionName in pairs{
"getBreadcrumbName",
"getDataModule",
"canBeEmpty",
"getDescription",
"getParents",
"getChildren",
"getUmbrella",
"getAppendix",
"getTOCTemplateName",
} do
if not is_callable(current[functionName]) then
require("Module:debug").track{"category tree/missing function", "category tree/missing function/" .. functionName}
end
end
end
local boxes, display, categories = {}, {}, {}
-- Categories should never show files as a gallery.
insert(categories, "__NOGALLERY__")
if (current_frame:getParent():getTitle() == "Padron:auto cat") or (current_frame:getParent():getTitle() == "Template:auto cat") then --TLCHANGE add `or` statement
insert(categories, "[[Category:Kategoryang tinatawag ang Padron:auto cat]]") --TLCHANGE "[[Category:Categories calling Template:auto cat]]"
end
-- Check if the category is empty
local totalPages = pages_in_category(current_title.text, "all")
local hugeCategory = totalPages > 1000000 -- 1 million
-- Categorize huge categories, as they cause DynamicPageList to time out and make the category inaccessible.
if hugeCategory then
insert(categories, "[[Category:Kategoryang malalaki]]") --TLCHANGE Huge categories
end
-- Are the parameters valid?
if not current then
insert(categories, "[[Category:Categories that are not defined in the category tree]]")
insert(categories, totalPages == 0 and "[[Category:Kategoryang walang laman]]" or nil) --TLCHANGE Empty categories
insert(display, show_error(
"Double-check the category name for typos. <br>" ..
"[[Special:Search/Category: " .. current_title.text:gsub("^.+:", ""):gsub(" ", "~2 ") .. '~2|Search existing categories]] to check if this category should be created under a different name (for example, "Fruits" instead of "Fruit"). <br>' ..
"To add a new category to Wiktionary's category tree, please consult " .. current_frame:expandTemplate{title = "section link", args = {
"Help:Category#How_to_create_a_category",
}} .. "."))
-- Exit here, as all code beyond here relies on current not being nil
return concat(categories, "") .. concat(display, "\n\n"), true
end
-- Does the category have the correct name?
local currentName = current:getCategoryName()
local correctName = current_title.text == currentName
if not correctName then
insert(categories, "[[Category:Categories with incorrect names]]")
insert(display, show_error(("Based on the data in the category tree, this category should be called '''[[:Category:%s]]'''."):format(currentName)))
end
-- Add cleanup category for empty categories.
local canBeEmpty = current:canBeEmpty()
if canBeEmpty and correctName then
insert(categories, " __EXPECTUNUSEDCATEGORY__")
elseif totalPages == 0 then
insert(categories, "[[Category:Kategoryang walang laman]]") --TLCHANGE Empty categories
end
if current:isHidden() then
insert(categories, "__HIDDENCAT__")
end
insert(boxes, "<div style=\"\">" .. show_english(current) .. "</div>") --TLCHANGE add this
-- Put all the float-right stuff into a <div> that does not clear, so that float-left stuff like the breadcrumbs and
-- description can go opposite the float-right stuff without vertical space.
insert(boxes, "<div style=\"float: right;\">")
insert(boxes, show_topright(current))
insert(boxes, show_editlink(current))
insert(boxes, show_related_changes())
-- Show pagelist, unless it's a huge category (since they can't use DynamicPageList - see above).
-- TLCHANGE commented out this since surprisingly there is no DynamicPageList extension for this wiki yet
--if not hugeCategory then
-- insert(boxes, show_pagelist(current))
--end
insert(boxes, "</div>")
-- Generate the displayed information
insert(display, show_breadcrumbs(current))
insert(display, show_also(current))
insert(display, show_description(current))
insert(display, show_appendix(current))
insert(display, show_children(current))
insert(display, show_TOC(current))
insert(display, show_catfix(current))
insert(display, '<br class="clear-both-in-vector-2022-only">')
show_categories(current, categories)
return concat(boxes, "\n") .. "\n" .. concat(display, "\n\n") .. concat(categories, "")
end
--[==[
List of handler functions that try to match the page name. A handler should return the name of a submodule to
[[Module:category tree]] and an info table which is passed as an argument to the submodule. If a handler does not
recognize the page name, it should return nil. Note that the order of handlers matters!
]==]
local handlers = {}
-- Thesaurus per-language category
insert(handlers, function(title)
local code, label = title:match("^Thesaurus:(%l[%a-]*%a):(.+)")
if code then
return poscatboiler_subsystem, {label = title, raw = true}
end
end)
-- Topic per-language category
insert(handlers, function(title)
local code, label = title:match("^(%l[%a-]*%a):(.+)")
if code then
return poscatboiler_subsystem, {label = title, raw = true}
end
end)
-- Lect category e.g. for [[:Category:New Zealand English]] or [[:Category:Issime Walser]]
insert(handlers, function(title, args)
local lect = args.lect or args.dialect
if lect ~= "" and yesno(lect, true) then -- Same as boolean in [[Module:parameters]].
return poscatboiler_subsystem, {label = title, args = args, raw = true}
end
end)
-- poscatboiler per-language label, e.g. [[Category:English non-lemma forms]]
insert(handlers, function(title, args)
local lang, label = export.split_lang_label(title)
if not lang then
return
end
local baseLabel, script = label:match("(.+) in (.-) script$")
if script and baseLabel ~= "terms" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return poscatboiler_subsystem, {label = baseLabel, code = lang:getCode(), sc = scriptObj:getCode(), args = args}
end
end
return poscatboiler_subsystem, {label = label, code = lang:getCode(), args = args}
end)
-- poscatboiler label umbrella category
insert(handlers, function(title, args)
-- TLCHANGE local label = title:match("(.+) by language$")
-- consider the "na", for example "Pang-abay ayon sa wika"
local label = title:match("(.+) ayon sa wika$")
if label then
label = "Na " .. m_str_utils.lcfirst(label) -- TLCHANGE
-- The poscatboiler code will appropriately lowercase if needed.
return poscatboiler_subsystem, {label = label, args = args}
end
end)
-- poscatboiler raw handlers
insert(handlers, function(title, args)
return poscatboiler_subsystem, {label = title, args = args, raw = true}
end)
-- poscatboiler umbrella handlers without 'by language'
insert(handlers, function(title, args)
return poscatboiler_subsystem, {label = title, args = args}
end)
function export.show(frame)
local args, other_args = require("Module:parameters").process(frame:getParent().args, {
["also"] = {type = "title", sublist = "comma without whitespace", namespace = 14},
["english_name"] = true, --TLCHANGE add this universal parameter
}, true)
if args.also then
for k, arg in next, args.also do
args.also[k] = arg.prefixedText
end
end
--TLCHANGE add this english_name variable setter
if args.english_name then
englishName = args.english_name
args.english_name = nil --remove afterwards
end
for k, arg in next, other_args do
other_args[k] = trim(arg)
end
if namespace == 10 then -- Template
return "(This template should be used on pages in the [[Help:Namespaces#Category|Category:]] namespace.)"
elseif namespace ~= 14 then -- Category
error("This template/module can only be used on pages in the [[mw:Help:Namespaces#Category|Category:]] namespace.")
end
local first_fail_args_handled, first_fail_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the category, it will return nil,
-- and we will consider the next handler. Otherwise, it returns a template name and arguments to call it with, but
-- even then, that template might return an error, and we need to consider the next handler. This happens, for
-- example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of a language, so the poscatboiler
-- per-language label handler fires and tries to find a label "Grosso, Brazil". This throws an error, and
-- previously, this blocked fruther handler consideration, but now we check for the error and continue checking
-- handlers; eventually, the topic umbrella handler will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
-- Use a new title object and args table for each handler, to keep them isolated.
local submodule, info = handler(current_title.text, deep_copy(other_args))
if submodule then
info.also = deep_copy(args.also)
require("Module:debug").track("auto cat/" .. submodule)
-- `failed` is true if no match was found.
submodule = require(category_tree_submodule_prefix .. submodule)
local cattext, failed = generate_output(submodule.main(info))
if failed then
if not first_fail_cattext then
first_fail_cattext = cattext
first_fail_args_handled = info.args and true or false
end
elseif not info.args and next(other_args) then
error(extra_args_error)
else
return cattext
end
end
end
-- If there were no matches, throw an error if any arguments were given, or otherwise return the cattext
-- from the first fail encountered. The final handlers call the boilers unconditionally, so there should
-- always be something to return.
if not first_fail_args_handled and next(other_args) then
error(extra_args_error)
end
return first_fail_cattext
end
-- TODO: new test entrypoint.
return export
n2zc7qmofdfnqyivvlibro4zfr67n4k
Module:families/data
828
30848
177941
177761
2026-09-13T07:54:52Z
Yivan000
4078
177941
Scribunto
text/plain
--[=[
This module contains definitions for all language family codes on Wiktionary.
]=]--
local m = {}
m["aav"] = {
"Awstroasyatiko", --TLCHANGE
33199,
aliases = {"Austro-Asiatic"},
english_name = "Austroasiatic", --TLCHANGE
spanish_name = "Austroasiático", --TLCHANGE
}
m["aav-khs"] = {
"Khasiko", --TLCHANGE
3073734,
"aav",
aliases = {"Khasic"},
english_name = "Khasian", --TLCHANGE
spanish_name = "Khásico", --TLCHANGE
}
m["aav-nic"] = {
"Nikobares", --TLCHANGE
217380,
"aav",
english_name = "Nicobarese", --TLCHANGE
spanish_name = "Nicobarés", --TLCHANGE
}
m["aav-pkl"] = {
"Pnar-Khasi-Lyngngam",
nil,
"aav-khs",
}
m["afa"] = {
"Afroasyatiko", --TLCHANGE
25268,
aliases = {"Afro-Asiatic"},
english_name = "Afroasiatic", --TLCHANGE
spanish_name = "Afroasiático", --TLCHANGE
}
m["alg"] = {
"Algonkino", --TLCHANGE
33392,
"aql",
english_name = "Algonquian", --TLCHANGE
spanish_name = "Algonquino", --TLCHANGE
}
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"] = {
"Atlantiko-Konggoleño", --TLCHANGE
771124,
"nic",
english_name = "Atlantic-Congo", --TLCHANGE
spanish_name = "Atlántico-Congoleño", --TLCHANGE
}
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"] = {
"Apatseanas", --TLCHANGE
27758,
"ath",
aliases = {"Southern Athabaskan"},
english_name = "Apachean", --TLCHANGE
spanish_name = "Apacheanas", --TLCHANGE
}
m["aqa"] = {
"Alacalufan",
1288430,
}
m["aql"] = {
"Algiko", --TLCHANGE
721612,
aliases = {"Algonquian-Ritwan", "Algonquian-Wiyot-Yurok"},
english_name = "Algic", --TLCHANGE
spanish_name = "Álgico", --TLCHANGE
}
m["art"] = {
"nilikha", --TLCHANGE "constructed"
33215,
"qfa-not",
aliases = {"artificial", "planned"},
english_name = "constructed", --TLCHANGE
}
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"] = {
"Hermaniko", --TLCHANGE
21200,
"ine",
english_name = "Germanic", --TLCHANGE
spanish_name = "Germánico", --TLCHANGE
}
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"] = {
"Kanlurang Hermaniko", --TLCHANGE
26721,
"gem",
english_name = "West Germanic", --TLCHANGE
spanish_name = "Germánico occidental", --TLCHANGE
}
m["gmw-afr"] = {
"Angglofrisyo", --TLCHANGE
5329170,
"gmw-nsg",
english_name = "Anglo-Frisian", --TLCHANGE
spanish_name = "Anglofrisio", --TLCHANGE
}
m["gmw-ang"] = {
"Anggliko", --TLCHANGE
1346342,
"gmw-afr",
protoLanguage = "ang",
english_name = "Anglic", --TLCHANGE
spanish_name = "Ánglico", --TLCHANGE
}
m["gmw-fri"] = {
"Frisian",
25325,
"gmw-afr",
protoLanguage = "ofs",
}
m["gmw-frk"] = {
"Mababang Frankonyo", --TLCHANGE
153050,
"gmw",
protoLanguage = "frk",
english_name = "Low Franconian", --TLCHANGE
spanish_name = "Bajofranconio", --TLCHANGE
}
m["gmw-hgm"] = {
"Mataas na Hermaniko", --TLCHANGE
52040,
"gmw",
protoLanguage = "goh",
english_name = "High German", --TLCHANGE
spanish_name = "Altogermánico", --TLCHANGE
}
m["gmw-ian"] = {
"Irish Anglo-Norman",
120719384,
"gmw-ang",
protoLanguage = "enm",
}
m["gmw-lgm"] = {
"Mababang Hermaniko", --TLCHANGE
25433,
"gmw-nsg",
protoLanguage = "osx",
english_name = "Low German", --TLCHANGE
spanish_name = "Bajogermánico", --TLCHANGE
}
m["gmw-nsg"] = {
"Hermaniko Dagat Hilaga", --TLCHANGE
30134,
"gmw",
aliases = {"Ingvaeonic"},
english_name = "North Sea Germanic",
spanish_name = "Germánico del mar del norte", --TLCHANGE
}
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"] = {
"Indoeuropeo", --TLCHANGE
19860,
aliases = {"Indo-Germanic"},
english_name = "Indo-European", --TLCHANGE
spanish_name = "Indoeuropeo", --TLCHANGE
}
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"] = {
"Italiko", --TLCHANGE
131848,
"ine",
english_name = "Italic", --TLCHANGE
spanish_name = "Itálico", --TLCHANGE
}
m["itc-laf"] = {
"Latino-Faliscan",
33478,
"itc",
aliases = {"Latinian"},
}
m["itc-sbl"] = {
"Osco-Umbrian",
515194,
"itc",
aliases = {"Sabellic", "Sabellian"},
}
m["jpx"] = {
"Haponiko",
33612,
aliases = {"Japanese", "Japanese-Ryukyuan"},
english_name = "Japonic", --TLCHANGE
spanish_name = "Japónico", --TLCHANGE
}
m["jpx-nry"] = {
"Kahilagaang Ryukyuwense", --TLCHANGE
20862796,
"jpx-ryu",
english_name = "Northern Ryukyuan", --TLCHANGE
}
m["jpx-ryu"] = {
"Ryukyuwense", --TLCHANGE
56393,
"jpx",
english_name = "Ryukyuan", --TLCHANGE
spanish_name = "Ryukyuense", --TLCHANGE
}
m["jpx-sry"] = {
"Katimugang Ryukyuwense", --TLCHANGE
18392243,
"jpx-ryu",
english_name = "Southern Ryukyuan", --TLCHANGE
}
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"] = {
"Kurdo", --TLCHANGE
36368,
"ira-nwi",
english_name = "Kurdish", --TLCHANGE
spanish_name = "Kurdo", --TLCHANGE
}
m["kv"] = {
"Komi",
36126, -- "Komi language" in Wikipedia but refers specifically to Komi-Zyrian; no Wikidata item for Komi family
"urj-prm",
}
m["map"] = {
"Awstronesyo", --TLCHANGE
49228,
is_official_kwf_name = "https://www.facebook.com/share/p/1BVD5EcS79/", --TLCHANGE
english_name = "Austronesian", --TLCHANGE
spanish_name = "Austronesio", --TLCHANGE
}
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",
nil,
"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",
1270220,
"omq-otp",
}
m["oto-otm"] = {
"Otomi",
nil,
"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"] = {
"Pilipino", --TLCHANGE "Philippine"
947858,
"poz",
english_name = "Philippine" --TLCHANGE
}
m["phi-kal"] = {
"Kalamian",
3217466,
"phi",
aliases = {"Calamian"},
}
m["poz"] = {
"Malayopolinesyo", --TLCHANGE
143158,
"map",
english_name = "Malayo-Polynesian", --TLCHANGE
spanish_name = "Malayopolinesio", --TLCHANGE
}
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",
}
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",
}
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"] = {
"Romanse", --TLCHANGE
19814,
"itc",
aliases = {"Romanic", "Latin", "Neolatin", "Neo-Latin"},
protoLanguage = "la",
english_name = "Romance", --TLCHANGE
spanish_name = "Romance", --TLCHANGE
}
m["roa-asl"] = {
"Asturleonese",
35390,
"roa-ibe",
protoLanguage = "roa-ole",
}
m["roa-cas"] = {
"Kastila", --TLCHANGE "Kastila" for castillian, "Espanyol" for spanish
71924,
"roa-ibe",
aliases = {"Castillian", "Castilic", "Castillic"},
protoLanguage = "osp",
english_name = "Castilian", --TLCHANGE
spanish_name = "Castellano", --TLCHANGE
}
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"] = {
"Romanse Italo-Kanluranin", --TLCHANGE
112608,
"roa",
aliases = {"Italo-Western"},
english_name = "Italo-Western Romance", --TLCHANGE
spanish_name = "Romance italo-occidental", --TLCHANGE
}
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"] = {
"Iberoromanse", --TLCHANGE
749533,
"roa-wes",
aliases = {"Iberian Romance", "West Ibero-Romance", "Western Ibero-Romance", "West Iberian Romance", "Western Iberian Romance"},
english_name = "Ibero-Romance", --TLCHANGE
spanish_name = "Iberorromance", --TLCHANGE
}
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"] = {
"Kanluraning Romanse", --TLCHANGE
2714388,
"roa-iwr",
english_name = "Western Romance", --TLCHANGE
spanish_name = "Romance occidental", --TLCHANGE
}
--[=[
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-Tibetano", --TLCHANGE "Sino-Tibetan"
45961,
aliases = {"Trans-Himalayan"},
english_name = "Sino-Tibetan" --TLCHANGE
}
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"] = {
"Fino-baltiko", --TLCHANGE
33328,
"urj",
aliases = {"Baltic-Finnic", "Balto-Finnic", "Fennic"},
english_name = "Finnic", --TLCHANGE
spanish_name = "Fino-báltico", --TLCHANGE
}
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"] = {
"Sinitiko", --TLCHANGE "Sinitic"
33857,
"sit-sba",
aliases = {"Chinese"},
protoLanguage = "och",
english_name = "Sinitic", --TLCHANGE
spanish_name = "Sinitico", --TLCHANGE
}
m["zhx-com"] = {
"Min Pandalampasigan", --TLCHANGE "baybayin" is already an overloaded term (used in wiktionary in the spelling sense), so let's use "dalampasigan" instead
20667215,
"zhx-min",
english_name = "Coastal Min", --TLCHANGE
}
m["zhx-inm"] = {
"Min Pang-ilaya", --TLCHANGE
20667237,
"zhx-min",
english_name = "Inland Min", --TLCHANGE
}
m["zhx-man"] = {
"Mandariniko", --TLCHANGE
nil,
"zhx",
protoLanguage = "cmn-ear",
english_name = "Mandarinic", --TLCHANGE
spanish_name = "Mandarinico", --TLCHANGE
}
m["zhx-min"] = {
"Min",
56504,
"zhx",
}
m["zhx-nan"] = {
"Katimugang Min", --TLCHANGE
36495,
"zhx-com",
english_name = "Southern Min", --TLCHANGE
}
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")
kwehedwxbt5sqryyjul82gvm2oowzl2
Padron:tl-personal pronouns
10
30909
177915
171221
2026-09-12T13:39:43Z
Yivan000
4078
enwikt parity
177915
wikitext
text/x-wiki
{{inflection-table-top|title=Tagalog personal pronouns|tall=yes|palette=grey}}
! width="100"| Person
! width="100"| Number
! width="100"| Direct (ang)
! width="100"| Indirect (ng)
! width="100"| Oblique (sa)
|-
! valign="top" rowspan=4 | First
! singular
| {{l-self|tl|ako}}
| {{l-self|tl|ko}}
| {{l-self|tl|akin}}
|-
! valign="top" | dual<span style="font-weight:normal">{{sup|1}}</span>
| {{l-self|tl|kita}}, {{l-self|tl|kata}}
| {{l-self|tl|nita}}, {{l-self|tl|nata}}, {{l-self|tl|ta}}
| {{l-self|tl|kanita}}, {{l-self|tl|kanata}}, {{l-self|tl|ata}}
|-
! valign="top" | plural inclusive
| {{l-self|tl|tayo}}
| {{l-self|tl|natin}}
| {{l-self|tl|atin}}
|-
! valign="top" | plural exclusive
| {{l-self|tl|kami}}
| {{l-self|tl|namin}}
| {{l-self|tl|amin}}
|-
! valign="top"| First & Second
! singular
| colspan=2| {{l-self|tl|kita}}<span style="font-weight:normal">{{sup|2}}</span>
|
|-
! valign="top" rowspan=2 | Second
! singular
| {{l-self|tl|ikaw}}, {{l-self|tl|ka}}
| {{l-self|tl|mo}}
| {{l-self|tl|iyo}}
|- |
! | plural
| {{l-self|tl|kayo}}, {{l-self|tl|kamo}}
| {{l-self|tl|ninyo}}, {{l-self|tl|niyo}}
| {{l-self|tl|inyo}}
|- |
! valign="top" rowspan=2 | Third
! | singular
| {{l-self|tl|siya}}
| {{l-self|tl|niya}}
| {{l-self|tl|kaniya}}
|- |
! | plural
| {{l-self|tl|sila}}
| {{l-self|tl|nila}}
| {{l-self|tl|kanila}}
{{inflection-table-bottom|notes=<small style="font-weight:normal">{{sup|1}} First person dual pronouns are not commonly used in Standard Tagalog.<br />{{sup|2}} Replaces {{m-self|tl|[[ko]] [[ikaw]]}}.</small>}}<noinclude>{{documentation}}</noinclude>
otofgyrq1m9mn0gt9b8ruc17ouggz5p
177916
177915
2026-09-12T13:43:06Z
Yivan000
4078
177916
wikitext
text/x-wiki
{{inflection-table-top|title=Tagalog personal pronouns|tall=yes|palette=grey}}
! width="100"| Panauhan
! width="100"| Number
! width="100"| Direct (ang)
! width="100"| Indirect (ng)
! width="100"| Oblique (sa)
|-
! valign="top" rowspan=4 | Una
! isahan
| {{l-self|tl|ako}}
| {{l-self|tl|ko}}
| {{l-self|tl|akin}}
|-
! valign="top" | dalawahan<span style="font-weight:normal">{{sup|1}}</span>
| {{l-self|tl|kita}}, {{l-self|tl|kata}}
| {{l-self|tl|nita}}, {{l-self|tl|nata}}, {{l-self|tl|ta}}
| {{l-self|tl|kanita}}, {{l-self|tl|kanata}}, {{l-self|tl|ata}}
|-
! valign="top" | plural inclusive
| {{l-self|tl|tayo}}
| {{l-self|tl|natin}}
| {{l-self|tl|atin}}
|-
! valign="top" | plural exclusive
| {{l-self|tl|kami}}
| {{l-self|tl|namin}}
| {{l-self|tl|amin}}
|-
! valign="top"| Una & Ikalawa
! singular
| colspan=2| {{l-self|tl|kita}}<span style="font-weight:normal">{{sup|2}}</span>
|
|-
! valign="top" rowspan=2 | Ikalawa
! isahan
| {{l-self|tl|ikaw}}, {{l-self|tl|ka}}
| {{l-self|tl|mo}}
| {{l-self|tl|iyo}}
|- |
! | maramihan
| {{l-self|tl|kayo}}, {{l-self|tl|kamo}}
| {{l-self|tl|ninyo}}, {{l-self|tl|niyo}}
| {{l-self|tl|inyo}}
|- |
! valign="top" rowspan=2 | Ikatlo
! | isahan
| {{l-self|tl|siya}}
| {{l-self|tl|niya}}
| {{l-self|tl|kaniya}}
|- |
! | maramihan
| {{l-self|tl|sila}}
| {{l-self|tl|nila}}
| {{l-self|tl|kanila}}
{{inflection-table-bottom|notes=<small style="font-weight:normal">{{sup|1}} First person dual pronouns are not commonly used in Standard Tagalog.<br />{{sup|2}} Replaces {{m-self|tl|[[ko]] [[ikaw]]}}.</small>}}<noinclude>{{documentation}}</noinclude>
pp1n12xnfjm0ssvpcd7nj849lse2q2v
Module:category tree/templates
828
31202
177917
174963
2026-09-12T13:49:23Z
Yivan000
4078
177917
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local tl_utilities_module = "Module:tl-utilities" --TLCHANGE
--TLCHANGE add this function
local function add_linker(...)
add_linker = require(tl_utilities_module).add_linker
return add_linker(...)
end
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["na padron"] = { --TLCHANGE "templates"
description = "{{{langname}}} [[Wiktionary:Templates|templates]], which contain reusable wiki code that helps with creating and managing entries.",
umbrella = {
parents = {{name = "Mga padron", sort = " "}}, --TLCHANGE "Templates"
breadcrumb = "ayon sa wika", --TLCHANGE "by language"
},
parents = {{name = "{{{langcat}}}", raw = true}},
english_name = "templates", --TLCHANGE
}
labels["auto-table templates"] = {
description = "Templates that contain {{{langname}}} tables generated automatically.",
additional = "They use the <code>table:</code> prefix. For example, see [[Template:table:chess pieces/en]].",
parents = {"na padrong pangkawing"}, --TLCHANGE "link templates"
}
labels["category boilerplate templates"] = {
description = "Templates used to generate descriptions and categorization for category pages.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["conversion templates"] = {
description = "Templates used in {{{langname}}} entries to convert between different orthographic or numeral representations.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["na padrong pangkahulugan"] = { --TLCHANGE
description = "Templates used in the [[Wiktionary:Glossary#definition line|definition line]] of {{{langname}}} entries to help in creating definitions.",
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "definition templates", --TLCHANGE
}
labels["na padrong pang-entrada"] = { --TLCHANGE
description = "Templates used to help in the creation of {{{langname}}} entries.",
umbrella_parents = {"Subkategoryang pampadron ayon sa wika", "Padrong pang-entrada"}, --TLCHANGE {"Templates subcategories by language", "Entry templates"},
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "entry templates", --TLCHANGE
}
labels["na padrong pang-etimolohiya"] = { --TLCHANGE
description = "Templates used in the etymology section of {{{langname}}} entries.",
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "etymology templates", --TLCHANGE
}
labels["experimental templates"] = {
description = "Templates used to test possible content for {{{langname}}} entries.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["form-of templates"] = {
description = "Templates used on the definition line of entries for inflected forms of words in {{{langdisp}}}, to link back to the main form.",
parents = {"definition templates", "link templates"},
}
labels["headword-line templates"] = {
description = "Templates used in {{{langname}}} entries to display lines containing headwords.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["index templates"] = {
description = "Templates used to organize {{{langname}}} indexes.",
parents = {"na padrong pangkawing"}, --TLCHANGE "link templates"
}
labels["na padrong pantalahanayan ng pagbabagong-anyo"] = { --TLCHANGE
description = "Templates used to show inflection tables for {{{langname}}} terms.",
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "inflection-table templates", --TLCHANGE
}
-- Do particular types of inflection-table templates.
for _, pos in ipairs({ --TLCHANGE
{"pang-uri", "adjective"},
{"pang-abay", "adverb"},
{"pantukoy", "determiner"},
{"", "nominal"}, --TODO
{"pangngalan", "noun"},
{"pambilang", "numeral"},
{"pandiwari", "participle"},
{"", "postposition"}, --TODO
{"kataga", "particle"},
{"pang-ukol", "preposition"},
{"panghalip", "pronoun"},
{"pandiwa", "verb"},
}) do
labels["na padrong pantalahanayan ng pagbabagong-anyo ng " .. pos[1]] = {
description = "Templates used to show declension tables for {{{langname}}} " .. pos[1] .. "s.",
parents = {"na padrong pantalahanayan ng pagbabagong-anyo"}, --TLCHANGE "inflection-table templates"
english_name = pos[2] .. " inflection-table templates", --TLCHANGE
}
end
labels["na padrong pangkawing"] = { --TLCHANGE
description = "{{{langname}}} templates used to create links to other entries.",
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "link templates", --TLCHANGE
}
labels["list templates"] = {
description = "Templates that contain {{{langname}}} lists.",
additional = "They use the <code>list:</code> prefix. For example, see [[Template:list:Latin script letters/en]].<br />" ..
"See also [[:Category:List templates]].",
parents = {"na padrong pangkawing"}, --TLCHANGE "link templates"
}
labels["mutation templates"] = {
description = "Templates used to show mutation of {{{langname}}} words.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["na padrong pangnabegasyon"] = { --TLCHANGE
description = "{{{langname}}} templates used to create navigation boxes for easily linking to other similar pages.",
additional = "Examples are all the members of a given class (e.g. personal pronouns, interrogatives, demonstratives), cardinal numbers up to 100, category TOC (table-of-contents) templates, etc.",
parents = {"na padrong pangkawing"}, --TLCHANGE "link templates"
english_name = "navigation templates", --TLCHANGE
}
labels["na padrong pambigkas"] = {
description = "Templates used to generate IPA pronunciation, rhymes, hyphenation, etc. for {{{langname}}} entries.",
umbrella_parents = {"Subkategoryang pampadron ayon sa wika", "Category:Padrong pambigkas"}, --TLCHANGE {"Templates subcategories by language", "Category:Pronunciation templates"},
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "pronunciation templates", --TLCHANGE
}
labels["sign production templates"] = {
description = "Templates used in describing and showing the production of {{{langname}}} signs.",
parents = {"pronunciation templates"},
}
labels["quotation templates"] = {
description = "Templates used to generate quotations for {{{langname}}} entries.",
umbrella_parents = {"Templates subcategories by language", "Category:Citation templates"},
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["quotation navigation templates"] = {
description = "Templates used in the documentation of {{{langname}}} [[Wiktionary:Quotations/Templates|quotation templates]] in order to link to quotation templates for other works by the same author.",
umbrella_parents = {"Templates subcategories by language", "Category:Navigation templates", "Category:Quotation templates by language"},
parents = {"quotation templates"},
}
labels["na padrong pansangguni"] = { --TLCHANGE
topright = function(data)
if data.lang and data.lang:getCode() == "ine-pro" then
return "{{shortcut|WT:RTINE}}"
end
end,
umbrella = {
preceding = "{{also|Wiktionary:Reference templates}}\n{{also|Template:refcat}}",
parents = {"Subkategoryang pampadron ayon sa wika", "Category:Padrong pansangguni"}, --TLCHANGE {"Templates subcategories by language", "Category:Reference templates"},
breadcrumb = "ayon sa wika", --TLCHANGE "by language",
},
description = "Templates used to generate reference footnotes for {{{langname}}} entries.",
parents = {"na padron"}, --TLCHANGE "templates"
english_name = "reference templates", --TLCHANGE
}
labels["reference navigation templates"] = {
description = "Templates used in the documentation of reference templates in order to link to related reference templates.",
umbrella_parents = {"Templates subcategories by language", "Category:Navigation templates", "Category:Reference templates by language"},
parents = {"reference templates", "link templates"},
}
labels["supplementary templates"] = {
description = "Templates used to keep contents for other {{{langname}}} templates.",
parents = {"na padron"}, --TLCHANGE "templates"
}
labels["inflection-table subtemplates"] = {
description = "Templates used to assist in constructing parts of {{{langname}}} inflection-table templates.",
parents = {"supplementary templates"},
}
labels["usage templates"] = {
description = "Templates used to show usage notes in {{{langname}}} entries.",
parents = {"na padron"}, --TLCHANGE "templates"
}
for key, data in pairs(labels) do
-- Add 'umbrella_parents' key if not already present.
if not data.umbrella and not data.umbrella_parents then
data.umbrella_parents = "Subkategoryang pampadron ayon sa wika" --TLCHANGE "Templates subcategories by language"
end
-- Add breadcrumb by chopping off the parent (or the parent's parent, etc.) from the end of the label, if possible.
if not data.breadcrumb then
local parent = data.parents[1]
while true do
if type(parent) == "string" then
local parent_re = " " .. require("Module:string utilities").pattern_escape(parent) .. "$"
if key:find(parent_re) then
data.breadcrumb = key:gsub(parent_re, "")
break
end
if labels[parent] then
parent = labels[parent].parents[1]
else
break
end
else
break
end
end
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Mga padron"] = { --TLCHANGE
topright = "{{shortcut|WT:T}}",
description = "An organizing category intended for all templates in use on Wiktionary.",
additional = "''Tingnan din: [[Wiksiyonaryo:Mga padron]], [[meta:Help:Template]]''", --TLCHANGE
parents = {"Wiksiyonaryo"}, --TLCHANGE
english_name = "Templates", --TLCHANGE
}
raw_categories["Administration templates"] = {
description = "Templates used in the administration of Wiktionary.",
additional = "They are only used outside of mainspace and are distinct from [[:Category:Maintenance templates|maintenance templates]], which are used in maintaining entries.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Archive templates"] = {
description = "Templates used on archived or otherwise inactive pages.",
parents = {"Administration templates"},
}
raw_categories["CheckUser templates"] = {
description = "Templates related to [[Wiktionary:Requests for checkuser|checkuser requests]].",
parents = {"Administration templates"},
}
raw_categories["Editnotices"] = {
description = "Templates used to display notices in edit mode.",
parents = {"Administration templates"},
}
raw_categories["Appendix templates"] = {
description = "Templates used in appendices or to link to appendices.",
parents = {"Templates", "Category:Appendices"},
}
raw_categories["Swadesh list templates"] = {
description = "Templates used on pages that contain [[w:Swadesh list]]s.<br />" ..
"See also [[Wiktionary:Swadesh template]] and [[Wiktionary:Swadesh template categorized]].",
parents = {"Appendix templates"},
}
raw_categories["Astrology templates"] = {
description = "Templates that display astrology-related diagrams or boxes.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Audio templates"] = {
description = "Templates used to play or request audio files.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Auto-table templates"] = {
description = "Templates used to generate word tables (like [[Template:table:seasons]]).",
additional = "See also [[:Category:Auto-table templates by language]].",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Box templates"] = {
description = "General purpose box templates.",
additional = "If you're considering making a template that looks like a box, look here first!",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Categorization templates"] = {
preceding = "{{also|:Category:Category modules}}",
description = "Templates used to categorize terms or entries.",
additional = "([[:Category:Category templates]], on the other hand, contains templates used in the category namespace.)",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Category templates"] = {
description = "Templates used in the category namespace.",
additional = "([[:Category:Categorization templates]], on the other hand, contains templates used to categorize pages.)",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Category boilerplate templates"] = {
description = "Templates used to generate the text of category pages.",
parents = {"Category templates"},
}
raw_categories["TOC templates"] = {
description = "Templates used to generate a list of linked letters to navigate the pages listed in categories.",
parents = {"Category templates", "Navigation templates"},
}
raw_categories["Character info templates"] = {
description = "Templates that utilize {{temp|character info}}.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Character insertion templates"] = {
description = "Templates that provide easier ways to type characters that are not found in most keyboard layouts.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Templates for generating characters used in wiki code"] = {
description = "Templates used to generate characters that are reserved for specific wiki code functions and cannot be directly entered.",
additional = "An alternative to using these templates is to use an HTML entity such as <code>&#91</code> " ..
"for a left bracket.<br />" ..
"Note that the templates below are sorted by the first character of the wikicode that each template generates.",
parents = {"Character insertion templates"},
}
raw_categories["Chemistry templates"] = {
description = "Templates that display chemistry-related diagrams or boxes.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Chess templates"] = {
description = "Templates that display chess diagrams.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Citation templates"] = {
preceding = "{{ombox|type=speedy|text=Some templates may be marked '''FOR TESTING ONLY'''. Do not use these in entries, if requested on the template page itself. Take a look at the template page before using it.}}",
description = "Templates used to generate citations and quotations.",
additional = [=[
{{citation templates}}
==See also==
* [[Wiktionary:Quotations]]
* [[:Category:Reference templates]] for specific templates to well-known and widely used sources.]=],
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
-- Skipped: Concordance templates
raw_categories["Control flow templates"] = {
description = "Templates to aid in control-flow constructs, which the template language is normally limited in.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Cross reference templates"] = {
description = "Templates used to create cross-references between sections.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Dating templates"] = {
description = "Templates for displaying dates.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Padrong pangkahulugan"] = { --TLCHANGE
description = "Templates used in the [[Wiktionary:Glossary#definition line|definition line]] to help in creating definitions.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Definition templates", --TLCHANGE
}
raw_categories["Form-of templates"] = {
description = "Templates used in defining inflections or variants of a given lemma.",
parents = {"Padrong pangkahulugan"}, --TLCHANGE "Definition templates"
}
raw_categories["Grammar form-of templates"] = {
description = "Templates used in defining terms that stand in a particular grammatical relation to a given lemma.",
parents = {"Form-of templates"},
}
raw_categories["Conjugation form-of templates"] = {
description = "Templates used in defining terms that represent particular verb forms (e.g. past participle) of given lemma.",
parents = {"Grammar form-of templates"},
}
raw_categories["Declension form-of templates"] = {
description = "Templates used in defining terms that represent particular noun or adjective forms (e.g. masculine plural) of given lemma.",
parents = {"Grammar form-of templates"},
}
raw_categories["Padrong pampangalan"] = { --TLCHANGE
description = "Templates used in the [[Wiktionary:Glossary#definition line|definition line]] to help in creating definitions for names.",
parents = {"Padrong pangkahulugan"}, --TLCHANGE "Definition templates"
english_name = "Name templates", --TLCHANGE
}
raw_categories["Object usage templates"] = {
description = "Templates used in the [[Wiktionary:Glossary#definition line|definition line]] to show case and adposition usage for verb objects and similar constructs.",
parents = {"Padrong pangkahulugan"}, --TLCHANGE "Definition templates"
}
raw_categories["Place name templates"] = {
description = "Templates used in defining place names or demonyms that refer to place names.",
parents = {"Padrong pangkahulugan"}, --TLCHANGE "Definition templates"
}
raw_categories["Padrong pang-entrada"] = { --TLCHANGE
description = "Templates used to help create new entries.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Entry templates" --TLCHANGE
}
raw_categories["Padrong pang-etimolohiya"] = { --TLCHANGE
description = "Templates used in etymology sections to define the etymology of a term.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Etymology templates" --TLCHANGE
}
raw_categories["Foreign derivation templates"] = {
description = "Templates used in etymology sections to indicate derivation from a different language than the language of the current entry.",
parents = {"Padrong pang-etimolohiya"}, --TLCHANGE "Etymology templates"
}
raw_categories["Morphology templates"] = {
description = "Templates used in etymology sections to specify the morphology of a term.",
parents = {"Padrong pang-etimolohiya"}, --TLCHANGE "Etymology templates"
}
raw_categories["Language-specific morphology templates"] = {
description = "Specialized morphology templates used in the etymology sections of terms in particular languages.",
parents = {"Padrong pang-etimolohiya"}, --TLCHANGE "Etymology templates"
}
raw_categories["Headword-line templates"] = {
preceding = "{{also|Wiktionary:Headword-line templates}}",
description = "Templates used to define the [[Wiktionary:Glossary#headword line|headword line]] of a term.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Discussion templates"] = {
description = "Templates intended for use only in discussions and documentation of templates and modules.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Monthly-subpages discussion room infrastructure"] = {
description = "Templates used in generating and maintaining monthly discussion forums such as the [[Wiktionary:Grease pit|Grease pit]] and [[Wiktionary:Beer parlour|Beer parlour]].",
parents = {"Discussion templates"},
}
raw_categories["Padrong pandokumentasyon"] = { --TLCHANGE
description = "Templates used on template and module documentation pages.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Documentation templates", --TLCHANGE
}
raw_categories["File templates"] = {
description = "Templates used in the File namespace.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Language attestation warning templates"] = {
description = "Templates that warn users about the attestation status of entries or senses from a language.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Layout templates"] = {
description = "Templates used in creating specific layouts within entries.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Collapsible box templates"] = {
description = "Templates used in creating collapsible boxes.",
parents = {"Layout templates"},
}
raw_categories["Column templates"] = {
preceding = "{{also|Wiktionary:Templates#Columns}}",
description = "Templates used in laying out lists in columns.",
parents = {"Layout templates"},
}
raw_categories["Table templates"] = {
description = "Templates used in formatting tables.",
parents = {"Layout templates"},
}
raw_categories["Padrong pangkawing"] = { --TLCHANGE
description = "Templates used to link to other terms, to other MediaWiki projects or to external websites.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Link templates", --TLCHANGE
}
raw_categories["Disambiguation templates"] = {
description = "Templates used to disambiguate multiple similar terms.",
parents = {"Link templates"},
}
raw_categories["External link templates"] = {
description = "Templates that link to websites outside of the MediaWiki Foundation purview.",
additional = "See also [[:Category:Citation templates]] for others.",
parents = {"Link templates"},
}
raw_categories["Internal link templates"] = {
description = "Templates that link between Wiktionary entries.",
parents = {"Link templates"},
}
raw_categories["Language-specific internal link templates"] = {
description = "Language-specific templates that link between Wiktionary entries in particular languages.",
parents = {"Internal link templates"},
}
raw_categories["Interwiki link templates"] = {
description = "Templates that link to other Wikimedia projects.",
parents = {"Link templates"},
}
raw_categories["Inline interwiki link templates"] = {
description = "Inline templates that link to other Wikimedia projects.",
parents = {"Interwiki link templates"},
}
raw_categories["Sidebar interwiki link templates"] = {
description = "Sidebar templates that link to other Wikimedia projects.",
parents = {"Interwiki link templates"},
}
raw_categories["Wikidata link templates"] = {
description = "Inline templates that link to Wikidata.",
parents = {"Interwiki link templates"},
}
raw_categories["Wikisource link templates"] = {
description = "Inline templates that link to Wikisource.",
parents = {"Interwiki link templates"},
}
raw_categories["List templates"] = {
description = "Templates used to generate lists.",
additional = "See also [[:Category:List templates by language]].",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Character list templates"] = {
description = "Templates used to generate lists of characters.",
parents = {"List templates"},
}
raw_categories["Lua-free templates"] = {
description = "Lua-free (i.e. \"lite\") versions of templates that use Lua.",
additional = "Lua-free templates are used on long pages to avoid [[Wiktionary:Lua memory errors|Lua memory errors]].",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Maintenance templates"] = {
preceding = "{{also|Wiktionary:Maintenance templates}}",
description = "Templates used in the maintenance of Wiktionary entries and other pages.",
additional = "They are distinct from [[:Category:Administration templates|administration templates]], which are only used outside of mainspace.",
parents = {"Templates", "Category:Wiktionary maintenance"},
}
raw_categories["Cleanup templates"] = {
description = "Templates used to request cleanup of entries.",
additional = "Some of these templates are used when entries are batch-imported from another source.",
parents = {"Maintenance templates", "Request templates"},
}
raw_categories["Deletion templates"] = {
description = "Templates used to request deletion of entries.",
parents = {"Maintenance templates", "Request templates"},
}
raw_categories["Verification templates"] = {
description = "Templates used to request verification of entries that may be incorrect.",
parents = {"Maintenance templates", "Request templates"},
}
raw_categories["Wiktionary templates"] = {
description = "Templates used in the internal operation of Wiktionary.",
parents = {"Templates", "Wiksiyonaryo"},
}
raw_categories["Metatemplates"] = {
description = "Templates used in other templates or to create other templates.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["String manipulation templates"] = {
description = "Templates used to manipulate strings.",
additional = "See also [[Module:string/templates]], which can be invoked from templates to do string manipulation.",
parents = {"Metatemplates"},
}
------------ NAVIGATION TEMPLATES ------------
raw_categories["Padrong pangnabegasyon"] = { --TLCHANGE
description = "Templates used to create navigation boxes for easily linking to other similar pages.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Navigation templates" --TLCHANGE
}
raw_categories["Language-specific number templates"] = {
description = "Language-specific templates that generate number boxes or lists for a given language.",
additional = "Contrast {{catlink|Number templates}}, which contains general (language-agnostic) templates for converting numbers or generating number boxes or lists in a given language.",
parents = {"Padrong pangnabegasyon"}, --TLCHANGE "Navigation templates"
}
raw_categories["Padrong pangkahong pang-anyong nanghahalip"] = { --TLCHANGE
description = "Language-specific templates that generate navigation boxes for displaying pro-forms (pronouns, determiners, pronominal adverbs, etc.) for a given language.",
parents = {"Padrong pangnabegasyon"}, --TLCHANGE "Navigation templates"
english_name = "Pro-form box templates", --TLCHANGE
}
raw_categories["Demonstrative box templates"] = {
description = "Language-specific templates that generate demonstrative pronoun, determiner and adverb boxes for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Grammatical article box templates"] = {
description = "Language-specific templates that generate grammatical article boxes (definite, indefinite, partitive, etc.) for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Interrogative box templates"] = {
description = "Language-specific templates that generate interrogative pronoun, determiner and adverb boxes for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Padrong pangkahong pampanghalip na panao"] = { --TLCHANGE
description = "Language-specific templates that generate personal pronoun boxes for a given language.",
additional = [=[
The standard format for these templates is:
* Where the language is uninflected (e.g. Samoan {{tl|sm-personal pronouns}}) or the language is inflected but the box shows only the lemma forms of the pronoun (e.g. Basque {{tl|eu-personal pronouns}}), the '''numbers''' (singular/plural) run across the top and the '''persons''' (1st/2nd/3rd) run down the left side.
* Where the language is inflected, the '''cases''' run across the top. Down the left side, the headers (from left to right) are '''number''', '''person''', then any subform if applicable. Example: Middle High German {{tl|gmh-personal pronouns}}
** Exceptions:
*** If there are too many cases to fit on the screen as columns, the template can be transposed so that cases run vertically. Example: Northern Yukaghir {{tl|ykg-personal pronouns}}
*** If the singular and plural forms are very similar, consider placing the person headers outside number instead. Example: Punjabi {{tl|pa-personal pronouns}}
]=],
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
english_name = "Personal pronoun box templates", --TLCHANGE
}
raw_categories["Possessive pronoun and determiner box templates"] = {
description = "Language-specific templates that generate possessive pronoun and determiner boxes for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Reflexive pronoun and determiner box templates"] = {
description = "Language-specific templates that generate reflexive pronoun and determiner boxes for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Relative pronoun and determiner box templates"] = {
description = "Language-specific templates that generate relative pronoun and determiner boxes for a given language.",
parents = {"Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE "Pro-form box templates"
}
raw_categories["Padrong pambilang"] = { --TLCHANGE
description = "General (language-agnostic) templates used to convert numbers or generate boxes or lists of the numbers in a given language.",
additional = "Contrast {{catlink|Language-specific number templates}}, which contains language-specific templates for generating number boxes or lists in a given language.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Number templates", --TLCHANGE
}
raw_categories["Orthographic and regional variant templates"] = {
description = "Templates used to generate lists of links to alternative forms of a term, either across orthographic systems, scripts, or regional or dialectal variation.",
parents = {"Script templates", "Internal link templates"},
}
raw_categories["Pagename templates"] = {
description = "Templates used to retrieve pagenames or pagename properties or manipulate pagenames.",
parents = {"Templates"},
}
raw_categories["Preloaded templates"] = {
description = "Templates not meant to be transcluded, but instead, whether through URL parameters or modules, have their contents preloaded into edit fields.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Pronunciation templates"] = {
description = "Templates used to format pronunciation sections and the characters they use.",
additional = "See also [[:Category:Script templates]] and [[Wiktionary:Pronunciation]].",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Rhyme templates"] = {
description = "Templates used to format [[Wiktionary:Rhymes|rhyme pages]], links to them from pronunciation sections, etc.",
parents = {"Pronunciation templates"},
}
raw_categories["Sign language templates"] = {
description = "Templates used to format sign-language pronunciation charts.",
parents = {"Pronunciation templates"},
}
raw_categories["Qualifier and gloss templates"] = {
description = "Templates for displaying qualifiers, glosses and the like.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Redirect templates"] = {
description = "Templates used to format redirect pages.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Padrong pansangguni"] = { --TLCHANGE
preceding = "{{also|Wiktionary:Reference templates|:Category:Reference templates by language}}",
description = "Templates used to format references.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Reference templates", --TLCHANGE
}
raw_categories["Padrong panrelihiyon"] = { --TLCHANGE
description = "Templates that display religion-related diagrams or boxes.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
english_name = "Religion templates", --TLCHANGE
}
raw_categories["Request templates"] = {
topright = "{{shortcut|WT:RT}}",
description = "Request templates for dictionary entries in the main namespace.",
parents = {"Templates", "Requests"},
}
raw_categories["Sandbox templates"] = {
description = "Sandbox versions of templates used for testing purposes.",
additional = "'''NOTE:''' The use of sandbox templates in mainspace is strongly dispreferred. Please place all sandbox templates in your userspace.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Script templates"] = {
preceding = "{{mainwikt|Scripts}}",
description = "Templates used for converting between scripts or displaying text in a specific script.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Semantic relation templates"] = {
description = "Templates that are placed below the [[Wiktionary:Glossary#definition line|definition line]], to indicate other terms semantically related to a particular sense.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Single-page-use templates"] = {
description = "Templates used only on a single page and unlikely to find re-use elsewhere.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Supplementary templates"] = {
description = "A grab bag of templates used to assist other templates.",
additional = "These should be recategorized according to function.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Taxonomy templates"] = {
description = "Templates used in Translingual taxonomy entries and in reference to those entries.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Taxonomic hypernym templates"] = {
description = "Templates and subcategories containing such templates. The templates contain text to appear under the Hypernyms header for taxonomic name entries.",
additional = "Each template has the name of the taxon from which it begins. The templates in this category at present are the many templates that begin with the names of taxonomic families. Others are in subcategories",
breadcrumb = "Hypernym",
parents = {"Taxonomy templates"},
}
raw_categories["Taxonomic name templates"] = {
description = "Templates used for the presentation of taxonomic names on a definition line.",
breadcrumb = "Name",
parents = {"Taxonomy templates", "Definition templates"},
}
raw_categories["Taxonomic reference templates"] = {
description = "Templates used to format references for taxonomic names.",
breadcrumb = "Reference",
parents = {"Taxonomy templates", "Reference templates"},
}
raw_categories["Templates that must be substituted"] = {
description = "Templates that are not intended for transclusion with <code><nowiki>{{ }}</nowiki></code>, " ..
"and must be substituted with <code><nowiki>{{subst: }}</nowiki></code>wherever they exist.",
additional = "Some of the members of this category are permanent, as the template was written in such a way that " ..
"it must be substituted to function properly. There may also be templates in this category that are deprecated, " ..
"in which case their content has been replaced with the preferred code.",
parents = {"Templates", "Requests"},
}
raw_categories["Templates with acceleration"] = {
description = "Templates can be added to this category by adding {{tl|isAccelerated}} to their documentation pages.",
additional = "Presence in this category indicates that at least some of the \"form-of\" entries for the word can be generated semi-automatically by users with [[Wiktionary:ACCEL|accelerated]] editing enabled.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Text format templates"] = {
description = "Templates that provide shortcuts for formatting ordinary text.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Thesaurus templates"] = {
description = "Templates for linking to or formatting thesaurus entries.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["Translation templates"] = {
description = "Templates used to format entries in and parts of translation tables.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["User templates"] = {
description = "Templates meant to be used in userspace.",
parents = {"Mga padron"}, --TLCHANGE "Templates"
}
raw_categories["User sandbox templates"] = {
description = "Templates 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 templates are needed by a single user, subpages can be created. These templates 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 templates", "Templates" },
}
raw_categories["Authority control subtemplates"] = {
description = "Subtemplates used in conjunction with {{tl|authority control}}.",
parents = {"User templates"},
}
raw_categories["User competency templates"] = {
description = "Templates used for to indicate a user's competency in a given natural language, script or programming language.",
additional = "These are used in conjunction with {{tl|Babel}}, which invokes these templates as necessary.",
parents = {"User templates"},
}
raw_categories["Coder user templates"] = {
description = "Templates used for to indicate a user's competency in a given programming language.",
additional = "These are used in conjunction with {{tl|Babel}}, which invokes these templates as necessary.",
parents = {"User competency templates"},
}
raw_categories["Language user templates"] = {
description = "Templates used for to indicate a user's competency in speaking a given language.",
additional = "These are used in conjunction with {{tl|Babel}}, which invokes these templates as necessary.",
parents = {"User competency templates"},
}
raw_categories["Script user templates"] = {
description = "Templates used for to indicate a user's competency in reading a given script.",
additional = "These are used in conjunction with {{tl|Babel}}, which invokes these templates as necessary.",
parents = {"User competency templates"},
}
raw_categories["WOTD templates"] = {
description = "Templates used to support the Word of the Day.",
parents = {"Wiktionary templates"},
}
raw_categories["FWOTD templates"] = {
description = "Templates used to support the Foreign Word of the Day.",
parents = {"WOTD templates"},
}
raw_categories["Non-production templates and modules"] = {
description = "Templates and modules not currently used in production.",
additional = "{{also|Special:UnusedTemplates|Category:Unused templates}}",
parents = {"Templates", "Modules", "Category:Wiktionary maintenance"},
}
raw_categories["Subkategoryang pampadron ayon sa wika"] = { --TLCHANGE
description = "Umbrella categories covering topics related to templates.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Kataas-taasang kategorya", --TLCHANGE "Umbrella metacategories"
{name = "na padron", is_label = true, sort = " "},--TLCHANGE "templates"
},
english_name = "Templates subcategories by language" --TLCHANGE
}
-- 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 = " " .. require("Module:string utilities").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}
l1gc0prnfaw9es5rcyk0gvuwgq8o9cd
Module:category tree/poscatboiler
828
34545
177933
176620
2026-09-13T07:17:06Z
Yivan000
4078
177933
Scribunto
text/plain
local lang_independent_data = require("Module:category tree/data")
local lang_specific_module = "Module:category tree/lang"
local lang_specific_module_prefix = lang_specific_module .. "/"
local family_specific_module = "Module:category tree/fam"
local family_specific_module_prefix = family_specific_module .. "/"
local labels_utilities_module = "Module:labels/utilities"
local template_parser_module = "Module:template parser"
local concat = table.concat
local dump = mw.dumpObject
local expand_template = require("Module:frame").expandTemplate
local insert = table.insert
local is_callable = require("Module:fun").is_callable
local lcfirst = require("Module:string utilities").lcfirst
local list_to_set = require("Module:table").listToSet
local make_title = mw.title.makeTitle
local new_title = mw.title.new
local parse = require(template_parser_module).parse
local sparse_concat = require("Module:table").sparseConcat
local tostring = tostring
local type = type
local ucfirst = require("Module:string utilities").ucfirst
local uupper = require("Module:string utilities").upper
local function internal_error(msg)
error("Internal error: " .. msg)
end
local function get_lang(...)
local _get_lang = require("Module:languages").getByCode
function get_lang(...)
return _get_lang(...) or require("Module:languages/errorGetBy").code(...)
end
return get_lang(...)
end
local function get_script(...)
local _get_script = require("Module:scripts").getByCode
function get_script(code)
return _get_script(code) or require("Module:languages/error")(code, true, "script code")
end
return get_script(...)
end
-- Category object
local Category = {}
Category.__index = Category
function Category:get_originating_info()
local originating_info = ""
if self._info.originating_label then
originating_info = " (originating from label \"" .. self._info.originating_label .. "\" in module [[" .. self._info.originating_module .. "]])"
end
return originating_info
end
local valid_keys = list_to_set{"code", "label", "sc", "raw", "args", "also", "called_from_inside", "originating_label", "originating_module"}
function Category.new(info)
for key in pairs(info) do
if not valid_keys[key] then
internal_error("The parameter \"" .. key .. "\" was not recognized.")
end
end
local self = setmetatable({}, Category)
self._info = info
if not self._info.label then
internal_error("No label was specified.")
end
self:initCommon()
if not self._data then
internal_error("The " .. (self._info.raw and "raw " or "") .. "label \"" .. self._info.label .. "\" does not exist" .. self:get_originating_info() .. ".")
end
return self
end
function Category:initCommon()
local function patch_args(args)
-- This fixes the issue with Scribunto automatically converting keys
-- in a table as numbers to strings, which in turn causes a circular
-- error for having argument parameter names as numbers as strings.
if type(args) ~= "table" then
return args
end
local new_args = {}
for k, v in pairs(args) do
if type(k) == "string" and string.len(k) < 10 and not string.match(k, "^0") and string.match(k, "^%d+$") then
new_args[tonumber(k)] = patch_args(v)
else
new_args[k] = patch_args(v)
end
end
return new_args
end
local args_handled = false
if self._info.raw then
-- Check if the category exists
local raw_categories = lang_independent_data["RAW_CATEGORIES"]
self._data = raw_categories[self._info.label]
if self._data then
if self._data.lang then
self._lang = get_lang(self._data.lang)
self._info.code = self._lang:getCode()
end
if self._data.sc then
self._sc = get_script(self._data.sc)
self._info.sc = self._sc:getCode()
end
else
-- Go through raw handlers
local data = {
category = self._info.label,
args = patch_args(self._info.args) or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(lang_independent_data["RAW_HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
if self._data then
-- Update the label if the handler specified a canonical name for it.
if self._data.canonical_name then
self._info.canonical_name = self._data.canonical_name
end
if self._data.lang then
if type(self._data.lang) ~= "string" then
internal_error("Received non-string value " .. dump(self._data.lang) .. " for self._data.lang, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._lang = get_lang(self._data.lang)
self._info.code = self._lang:getCode()
end
if self._data.sc then
if type(self._data.sc) ~= "string" then
internal_error("Received non-string value " .. dump(self._data.sc) .. " for self._data.sc, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._sc = get_script(self._data.sc)
self._info.sc = self._sc:getCode()
end
end
end
else
-- Already parsed into language + label
if self._info.code then
self._lang = get_lang(self._info.code)
else
self._lang = nil
end
if self._info.sc then
self._sc = get_script(self._info.sc)
else
self._sc = nil
end
self._info.orig_label = self._info.label
if not self._lang then
-- Umbrella categories without a preceding language always begin with a capital letter, but the actual label may be
-- lowercase (cf. [[:Category:Nouns by language]] with label 'nouns' with per-language [[:Category:English nouns]];
-- but [[:Category:Reddit slang by language]] with label 'Reddit slang' with per-language
-- [[:Category:English Reddit slang]]). Since the label is almost always lowercase, we lowercase it for umbrella
-- categories, storing the original into `orig_label`, and correct it later if needed.
self._info.label = lcfirst(self._info.label)
end
-- First, check lang-specific labels and handlers if this is not an umbrella category.
if self._lang then
local objects_with_modules = require(lang_specific_module)
local obj, seen = self._lang, {}
local object_specific_module_prefix = lang_specific_module_prefix
local is_family = false
repeat
if objects_with_modules[obj:getCode()] then
local module = object_specific_module_prefix .. obj:getCode()
local labels_and_handlers = require(module)
if labels_and_handlers.LABELS then
self._data = labels_and_handlers.LABELS[self._info.label]
if self._data then
if not is_family and self._data.umbrella == nil and self._data.umbrella_parents == nil then
self._data.umbrella = false
end
self._data.module = self._data.module or module
end
end
if not self._data and labels_and_handlers.HANDLERS then
for _, handler in ipairs(labels_and_handlers.HANDLERS) do
local data = {
label = self._info.label,
lang = self._lang,
sc = self._sc,
args = patch_args(self._info.args) or {},
called_from_inside = self._info.called_from_inside,
}
self._data, args_handled = handler(data)
if self._data then
if not is_family and self._data.umbrella == nil and
self._data.umbrella_parents == nil then
self._data.umbrella = false
end
self._data.module = self._data.module or module
break
end
end
end
if self._data then
break
end
end
seen[obj:getCode()] = true
obj = obj:getFamily()
if not is_family then
is_family = true
object_specific_module_prefix = family_specific_module_prefix
objects_with_modules = require(family_specific_module)
end
until not obj or seen[obj:getCode()]
end
local function fetch_label_data(labels)
self._data = labels[self._info.label]
-- See comment above about uppercase- vs. lowercase-initial labels, which are indistinguishable
-- in umbrella categories.
if not self._data then
self._data = labels[self._info.orig_label]
if self._data then
self._info.label = self._info.orig_label
end
end
end
-- Then check lang-independent labels.
if not self._data then
-- lang_independent_data.LABELS should always exist.
fetch_label_data(lang_independent_data.LABELS)
if not self._data and not self._lang then
-- Check family-specific labels for umbrella label.
local families_with_modules = require(family_specific_module)
for famcode, _ in pairs(families_with_modules) do
local module = family_specific_module_prefix .. famcode
local labels_and_handlers = require(module)
if labels_and_handlers.LABELS then
fetch_label_data(labels_and_handlers.LABELS)
if self._data then
self._data.module = self._data.module or module
break
end
end
end
end
end
-- Then check lang-independent handlers.
if not self._data then
local data = {
label = self._info.label,
lang = self._lang,
sc = self._sc,
args = patch_args(self._info.args) or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(lang_independent_data["HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
if not self._data and not self._lang then
-- Check family-specific labels for umbrella handler.
local families_with_modules = require(family_specific_module)
for famcode, _ in pairs(families_with_modules) do
local module = family_specific_module_prefix .. famcode
local labels_and_handlers = require(module)
if labels_and_handlers.HANDLERS then
for _, handler in ipairs(labels_and_handlers.HANDLERS) do
local data = {
label = self._info.label,
sc = self._sc,
args = patch_args(self._info.args) or {},
called_from_inside = self._info.called_from_inside,
}
self._data, args_handled = handler(data)
if self._data then
self._data.module = self._data.module or module
break
end
end
end
if self._data then
break
end
end
end
end
end
if not args_handled and self._data and self._info.args and next(self._info.args) then
local module_text = " (handled in [[" .. (self._data.module or "UNKNOWN").. "]])"
local args_text = {}
for k, v in pairs(self._info.args) do
insert(args_text, k .. "=" .. ((type(v) == "string" or type(v) == "number") and v or dump(v)))
end
error("poscatboiler label '" .. self._info.label .. "' " .. module_text .. " doesn't accept extra args " ..
concat(args_text, ", "))
end
if self._sc and not self._lang then
internal_error("Umbrella categories cannot have a script specified.")
end
end
function Category:convert_spec_to_string(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
internal_error("`desc` must be a string, number, function, callable table or nil; received " .. dump(desc))
end
desc = desc {
lang = self._lang,
sc = self._sc,
label = self._info.label,
raw = self._info.raw,
}
if not desc then
return desc
end
desc_type = type(desc)
if desc_type == "string" then
return desc
end
internal_error("The value returned by `desc` must be a string or nil; received " .. dump(desc))
end
local function add_obj_args(args, obj, obj_type)
if obj then
args[obj_type .. "code"] = obj:getCode()
args[obj_type .. "name"] = obj:getCanonicalName()
args[obj_type .. "disp"] = obj:getDisplayForm()
args[obj_type .. "cat"] = obj:getCategoryName()
args[obj_type .. "link"] = obj:makeCategoryLink()
end
end
-- Expands `desc` like a template, passing values for specs like {{{langname}}}.
function Category:substitute_template_specs(desc)
-- This may end up happening twice but that's OK as the function is (usually) idempotent.
-- FIXME: Not idempotent if a preprocessed template returns wikicode.
desc = self:convert_spec_to_string(desc)
if not desc then
return nil
end
-- Populate the substitution arguments.
local args = {}
args.umbrella_msg = "Isa itong ''kataasang'' kategorya. Wala itong entrada ng diksiyonaryo, kundi iba pang kategoryang pangwika na naglalaman ng mga termino sa wikang iyon." --TLCHANGE
args.umbrella_meta_msg = "Isa itong ''kataas-taasang'' kategorya, na sinasaklaw ang mga paksang \"lema\", \"pangalan\" o \"salita ayon sa etimolohiya\". Wala itong entrada ng diksiyonaryo, kundi mga kataasang kategorya na sumasaklaw ng mga tiyak na paksa, na naglalaman ng mga kategoryang pangwika para sa parehong paksa." --TLCHANGE
add_obj_args(args, self._lang, "lang")
add_obj_args(args, self._sc, "sc")
return parse(desc, true):expand(args)
end
function Category:substitute_template_specs_in_args(args)
if not args then
return args
end
local pinfo = {}
for k, v in pairs(args) do
pinfo[self:substitute_template_specs(k)] = self:substitute_template_specs(v)
end
return pinfo
end
function Category:make_new(info)
info.originating_label = self._info.label
info.originating_module = self._data.module
info.called_from_inside = true
return Category.new(info)
end
function Category:getBreadcrumbName()
local ret
if self._lang or self._info.raw then
ret = self._data.breadcrumb or self._data.breadcrumb_and_first_sort_base
else
ret = self._data.umbrella and (self._data.umbrella.breadcrumb or self._data.umbrella.breadcrumb_and_first_sort_base)
end
if not ret then
ret = self._info.label
end
if type(ret) ~= "table" then
ret = {name = ret}
end
local name = self:substitute_template_specs(ret.name)
local nocap = ret.nocap
if self._sc then
name = name .. " in " .. self._sc:getDisplayForm()
end
--TLCHANGE to take into account the "na" word, remove it
if (name:match("^[Nn]a ")) then
name = ucfirst(name:gsub("^[Nn]a ", ""))
end
return name, nocap
end
local function expand_toc_template_if(template)
local template_obj = new_title(template, 10)
if template_obj.exists then
return expand_template{title = template_obj.text}
end
return nil
end
-- Return the textual expansion of the first existing template among the given templates, first performing
-- substitutions on the template name such as replacing {{{langcode}}} with the current language's code (if any).
-- If no templates exist after expansion, or if nil is passed in, return nil. If a single string is passed in,
-- treat it like a one-element list consisting of that string.
function Category:get_template_text(templates)
if templates == nil then
return nil
elseif type(templates) ~= "table" then
templates = {templates}
end
for _, template in ipairs(templates) do
if template == false then
return false
end
template = self:substitute_template_specs(template)
return expand_toc_template_if(template)
end
return nil
end
function Category:getTOC(toc_type)
-- Type "none" means everything fits on a single page; in that case, display nothing.
if toc_type == "none" then
return nil
end
local templates, fallback_templates
-- If TOC type is "full" (more than 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template_full` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. look up and expand the `toc_template` templates (normal or umbrella, as above);
-- 3. do the default behavior, which is as follows:
-- 3a. look up a language-specific "full" template according to the current language (using English if there
-- is no current language);
-- 3b. look up a script-specific "full" template according to the first script of current language (using English
-- if there is no current language);
-- 3c. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 3d. look up a script-specific "normal" template according to the first script of the current language (using
-- English if there is no current language);
-- 3e. display nothing.
--
-- If TOC type is "normal" (between 200 and 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. do the default behavior, which is as follows:
-- 2a. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 2b. look up a script-specific "normal" template according to the first script of the current language (using
-- English if there is no current language);
-- 2c. display nothing.
local data_source
if self._lang or self._info.raw then
data_source = self._data
else
data_source = self._data.umbrella
end
if data_source then
if toc_type == "full" then
templates = data_source.toc_template_full
fallback_templates = data_source.toc_template
else
templates = data_source.toc_template
end
end
local text = self:get_template_text(templates)
if text then
return text
elseif text == false then
return nil
end
text = self:get_template_text(fallback_templates)
if text then
return text
elseif text == false then
return nil
end
local default_toc_templates_to_check = {}
local lang, sc = self:getCatfixInfo()
local langcode = lang and lang:getCode() or "tl" --TLCHANGE
local sccode = sc and sc:getCode() or lang and lang:getScriptCodes()[1] or "Latn"
-- FIXME: What is toctemplateprefix used for?
local tocname = (self._data.toctemplateprefix or "") .. "categoryTOC"
if toc_type == "full" then
insert(default_toc_templates_to_check, ("%s-%s/full"):format(langcode, tocname))
insert(default_toc_templates_to_check, ("%s-%s/full"):format(sccode, tocname))
end
insert(default_toc_templates_to_check, ("%s-%s"):format(langcode, tocname))
insert(default_toc_templates_to_check, ("%s-%s"):format(sccode, tocname))
for _, toc_template in ipairs(default_toc_templates_to_check) do
local toc_template_text = expand_toc_template_if(toc_template)
if toc_template_text then
return toc_template_text
end
end
return nil
end
function Category:getInfo()
return self._info
end
function Category:getDataModule()
return self._data.module
end
function Category:canBeEmpty()
if self._lang or self._info.raw then
return self._data.can_be_empty
end
return self._data.umbrella and self._data.umbrella.can_be_empty
end
function Category:isHidden()
if self._lang or self._info.raw then
return self._data.hidden
end
return self._data.umbrella and self._data.umbrella.hidden
end
function Category:getCategoryName()
if self._info.raw then
return self._info.canonical_name or self._info.label
elseif self._lang then
local ret = self._lang:getCanonicalName() .. " " .. self._info.label
if self._sc then
ret = ret .. " in " .. self._sc:getDisplayForm()
end
return ucfirst(ret)
end
local ret = ucfirst(self._info.label)
if not (self._data.no_by_language or self._data.umbrella and self._data.umbrella.no_by_language) then
--TLCHANGE to take into account the "na" word
if (ret:match("^[Nn]a ")) then
ret = ucfirst(ret:gsub("^[Nn]a ", "")) .. " ayon sa wika"
else
ret = ret .. " ayon sa wika" --TLCHANGE
end
end
return ret
end
function Category:getTopright()
if self._lang or self._info.raw then
return self:substitute_template_specs(self._data.topright)
end
return self._data.umbrella and self:substitute_template_specs(self._data.umbrella.topright)
end
function Category:display_title(displaytitle, lang)
if type(displaytitle) == "string" then
displaytitle = self:substitute_template_specs(displaytitle)
else
displaytitle = displaytitle(self:getCategoryName(), lang)
end
mw.getCurrentFrame():callParserFunction("DISPLAYTITLE", "Kategorya:" .. displaytitle) --TLCHANGE "Category:"
end
function Category:get_labels_categorizing()
local m_labels_utilities = require(labels_utilities_module)
local pos_cat_labels, sense_cat_labels, use_tlb
pos_cat_labels = m_labels_utilities.find_labels_for_category(self._info.label, "pos", self._lang)
local sense_label = self._info.label:match("^(.*) terms$")
if sense_label then
use_tlb = true
else
sense_label = self._info.label:match("^terms with (.*) senses$")
end
if not sense_label then
return nil
end
sense_cat_labels = m_labels_utilities.find_labels_for_category(sense_label, "sense", self._lang)
if use_tlb then
return m_labels_utilities.format_labels_categorizing(pos_cat_labels, sense_cat_labels, self._lang)
end
local all_labels = pos_cat_labels
for k, v in pairs(sense_cat_labels) do
all_labels[k] = v
end
return m_labels_utilities.format_labels_categorizing(all_labels, nil, self._lang)
end
-- FIXME: this is clunky.
local function remove_lang_params(desc)
-- Simply remove a language name/code/category from the beginning of the string, but replace the language name
-- in the middle of the string with either "specific languages" or "specific-language" depending on whether the
-- language name appears to be an attributive qualifier of another noun or to stand by itself. This may be wrong,
-- in which case the category in question should supply its own umbrella description.
desc = desc:gsub("^{{{langname}}} ", "")
:gsub("{{{langname}}} %(", "specific languages (")
:gsub("{{{langname}}}([.,])", "specific languages%1")
:gsub("{{{langname}}} ", "specific-language ")
:gsub("{{{langdisp}}}", "specific languages")
:gsub("{{{langlink}}}", "specific languages")
return desc
end
--TLCHANGE ADD THIS FUNCTION TO GET THE ENGLISH NAME
function Category:getEnglishName()
-- if there is no "english_name" added in the data, then output nil
if not self._data.english_name then
return nil
end
--override for specific kinds to remove adding the langname at the start
if self._data.english_name:find("Varieties") or self._data.english_name:find("Regional") or self._data.english_name:find("Rhymes") then
return self._data.english_name
end
--if it is a language category
if self._lang then
--if it is a topic category or a regular language category
local code, ___upcase_label = self._info.label:match("^(%l[%a-]*%a):(.+)$")
if code then
return code .. ":" .. self._data.english_name
else
-- default to canonical name if no english_name
local english_lang_name = self._lang:getData().english_name or self._lang:getCanonicalName()
return english_lang_name .. " " .. self._data.english_name
end
elseif not (self._data.no_by_language or self._data.umbrella and self._data.umbrella.no_by_language) then
--if it is an language umbrella category
if self._info.label:match("^[Nn]a ") then
return ucfirst(self._data.english_name) .. " by language"
end
return self._data.english_name
else
return self._data.english_name
end
end
-----
function Category:getDescription(isChild)
-- Allows different text in the list of a category's children
local isChild = isChild == "child"
if self._lang or self._info.raw then
if not isChild and self._data.displaytitle then
self:display_title(self._data.displaytitle, self._lang)
end
if self._sc then
return self:getCategoryName() .. "."
end
local desc = self:substitute_template_specs(self._data.description)
if not desc then
return nil
elseif isChild then
return desc
end
return sparse_concat({
self:substitute_template_specs(self._data.preceding),
desc,
self:substitute_template_specs(self._data.additional),
self:substitute_template_specs(self:get_labels_categorizing()),
}, "\n\n")
end
local umbrella = self._data.umbrella
if not isChild and umbrella and umbrella.displaytitle then
self:display_title(umbrella.displaytitle)
end
local desc = self:substitute_template_specs(umbrella and umbrella.description)
local has_umbrella_desc = not not desc
if not desc then
desc = self:convert_spec_to_string(self._data.description)
if desc then
desc = remove_lang_params(desc)
desc = lcfirst(desc)
desc = desc:gsub("%.$", "")
desc = "Categories with " .. desc .. "."
else
desc = "Categories with " .. self._info.label .. " in various specific languages."
end
desc = self:substitute_template_specs(desc)
end
if isChild then
return desc
end
return sparse_concat({
self:substitute_template_specs(umbrella and umbrella.preceding or not has_umbrella_desc and self._data.preceding),
desc,
self:substitute_template_specs(umbrella and umbrella.additional or not has_umbrella_desc and self._data.additional),
self:substitute_template_specs("{{{umbrella_msg}}}"),
self:substitute_template_specs(self:get_labels_categorizing()),
}, "\n\n")
end
function Category:new_sortkey(sortkey)
local sortkey_type = type(sortkey)
if sortkey_type == "string" then
sortkey = uupper(sortkey)
elseif sortkey_type == "table" then
function sortkey:makeSortKey()
local sort_func = self.sort_func
if sort_func ~= nil then
return sort_func(self.sort_base)
end
local lang = self.lang
if lang == nil then
return self.sort_base
end
lang = get_lang(lang, nil, true)
if lang == nil then
return self.sort_base
end
local sc = self.sc
if sc ~= nil then
sc = get_script(sc)
end
return lang:makeSortKey(self.sort_base, sc)
end
end
return sortkey
end
function Category:inherit_spec(spec, parent_spec, substitute_result)
if spec == false then
return nil
end
local retval = spec or parent_spec
if substitute_result then
retval = self:substitute_template_specs(retval)
end
return retval
end
function Category:canonicalize_parents_children(cats, is_children, fallback_sort_base)
if not cats then
return nil
elseif type(cats) == "table" then
if cats.name or cats.module then
cats = {cats}
elseif #cats == 0 then
return nil
end
else
cats = {cats}
end
local ret = {}
for _, cat in ipairs(cats) do
if type(cat) ~= "table" or not cat.name and not cat.module then
cat = {name = cat}
end
insert(ret, cat)
end
local is_umbrella = not self._lang and not self._info.raw
local table_type = is_children and "extra_children" or "parents"
for i, cat in ipairs(ret) do
local raw
if self._info.raw or is_umbrella then
raw = not cat.is_label
else
raw = cat.raw
end
local lang = self:inherit_spec(cat.lang, not raw and self._info.code or nil, "substitute")
local sc = self:inherit_spec(cat.sc, not raw and self._info.sc or nil, "substitute")
-- Get the sortkey.
local sortkey = self:inherit_spec(cat.sort, i == 1 and fallback_sort_base and {sort_base = fallback_sort_base} or nil)
if type(sortkey) == "table" then
sortkey.sort_base = self:substitute_template_specs(sortkey.sort_base) or
internal_error("Missing .sort_base in '" .. table_type .. "' .sort table for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
if sortkey.sort_func then
-- Not allowed to give a lang and/or script if sort_func is given.
local bad_spec = sortkey.lang and "lang" or sortkey.sc and "sc" or nil
if bad_spec then
internal_error("Cannot specify both ." .. bad_spec .. " and .sort_func in '" .. table_type ..
"' .sort table for '" .. self._info.label .. "' category entry in module '" ..
(self._data.module or "unknown") .. "'")
end
else
sortkey.lang = self:inherit_spec(sortkey.lang, lang, "substitute")
sortkey.sc = self:inherit_spec(sortkey.sc, sc, "substitute")
end
else
sortkey = self:substitute_template_specs(sortkey)
end
local name
if cat.module then
-- A reference to a category using another category tree module.
if not cat.args then
internal_error("Missing .args in '" .. table_type .. "' table with module=\"" .. cat.module .. "\" for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
end
name = require("Module:category tree/" .. cat.module).new(self:substitute_template_specs_in_args(cat.args))
else
name = cat.name
if not name then
internal_error("Missing .name in " .. (is_umbrella and "umbrella " or "") .. "'" .. table_type .. "' table for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
elseif type(name) == "string" then -- otherwise, assume it's a category object and use it directly
name = self:substitute_template_specs(name)
if name:find("^Category:") then
-- It's a non-poscatboiler category name.
sortkey = sortkey or is_children and name:gsub("^Category:", "") or self:getCategoryName()
else
-- It's a label.
--TLCHANGE sortkey = sortkey or is_children and name or self._info.label add `na` remover
sortkey = sortkey or is_children and name or self._info.label:gsub("^na ", "")
name = self:make_new{
label = name, code = lang, sc = sc,
raw = raw, args = self:substitute_template_specs_in_args(cat.args)
}
end
end
end
sortkey = sortkey or is_children and " " or self._info.label
ret[i] = {
name = name,
description = is_children and self:substitute_template_specs(cat.description) or nil,
sort = self:new_sortkey(sortkey)
}
end
return ret
end
function Category:getParents()
local is_umbrella, ret = not self._lang and not self._info.raw
if self._sc then
local parent1 = self:make_new{code = self._info.code, label = "terms in " .. self._sc:getCanonicalName() .. " script"}
local parent2 = self:make_new{code = self._info.code, label = self._info.label, raw = self._info.raw, args = self._info.args}
ret = {
{name = parent1, sort = self._sc:getCanonicalName()},
{name = parent2, sort = self._sc:getCanonicalName()},
}
else
local parents, fallback_sort_base
if is_umbrella then
parents = self._data.umbrella and self._data.umbrella.parents or self._data.umbrella_parents
fallback_sort_base = self._data.umbrella and self._data.umbrella.breadcrumb_and_first_sort_base or nil
else
parents = self._data.parents
fallback_sort_base = self._data.breadcrumb_and_first_sort_base
end
ret = self:canonicalize_parents_children(parents, nil, fallback_sort_base)
if not ret then
return nil
end
end
local self_cat = self:getCategoryName()
for _, parent in ipairs(ret) do
local parent_cat = parent.name.getCategoryName and parent.name:getCategoryName()
if self_cat == parent_cat then
internal_error(("Infinite loop would occur, as parent category '%s' is the same as the child category"):format(self_cat))
end
end
return ret
end
function Category:getChildren()
local is_umbrella = not self._lang and not self._info.raw
local children = self._data.children
local ret = {}
if not is_umbrella and children then
for _, child in ipairs(children) do
child = mw.clone(child)
if type(child) ~= "table" then
child = {name = child}
end
if not child.sort then
child.sort = child.name
end
-- FIXME, is preserving the script correct?
child.name = self:make_new{code = self._info.code, label = child.name, raw = child.raw, sc = self._info.sc}
insert(ret, child)
end
end
local extra_children
if is_umbrella then
extra_children = self._data.umbrella and self._data.umbrella.extra_children
else
extra_children = self._data.extra_children
end
extra_children = self:canonicalize_parents_children(extra_children, "children")
if extra_children then
for _, child in ipairs(extra_children) do
insert(ret, child)
end
end
return #ret > 0 and ret or nil
end
function Category:getUmbrella()
local umbrella = self._data.umbrella
if umbrella == false or self._info.raw or not self._lang or self._sc then
return nil
end
-- If `umbrella` is a string, use that; otherwise, use the label.
return self:make_new({label = type(umbrella) == "string" and umbrella or self._info.label})
end
function Category:getAppendix()
return nil
end --[=[ TLCHANGE THERE IS NO APPENDIX NAMESPACE (id 100) YET. UNCOMMENT IF THERE IS ALREADY.
-- FIXME, this should be customizable.
local lang, label = self._lang, self._info.label
if self._info.raw or not (lang and label) then
return nil
end
local appendix = make_title(100, lang:getCanonicalName() .. " " .. label)
--return appendix.exists and appendix.fullText or nil
end
]=]
function Category:getCatfixInfo()
if self._lang or self._sc or self._info.raw then
local langcode, sccode, lang, sc = self._data.catfix, self._data.catfix_sc
if langcode then
langcode = self:substitute_template_specs(langcode)
lang = get_lang(langcode)
elseif langcode == nil then -- not false
lang = self._lang
end
if sccode then
sccode = self:substitute_template_specs(sccode)
sc = get_script(sccode)
elseif sccode == nil then -- not false
sc = self._sc
end
return lang, sc
elseif not self._data.umbrella then
return
end
-- umbrella
local langcode, sccode, lang, sc = self._data.umbrella.catfix, self._data.umbrella.catfix_sc
if langcode then
langcode = self:substitute_template_specs(langcode)
lang = get_lang(langcode)
end
if sccode then
sccode = self:substitute_template_specs(sccode)
sc = get_script(sccode)
end
return lang, sc
end
function Category:getTOCTemplateName()
-- This should only be invoked if getTOC() returns true, meaning to do the default algorithm, but getTOC()
-- implements its own default algorithm.
internal_error("This should never get called")
end
local export = {}
function export.main(info)
local self = setmetatable({_info = info}, Category)
self:initCommon()
return self._data and self or nil
end
export.new = Category.new
return export
5jrgc74lkgw5bzdyns69fboh1oa8rti
Module:category tree/wiktionary maintenance
828
34576
177931
177904
2026-09-13T07:09:10Z
Yivan000
4078
177931
Scribunto
text/plain
local raw_categories = {}
local raw_handlers = {}
local m_template_parser = require("Module:template parser")
local get_lang = require("Module:languages").getByCode
local insert = table.insert
local is_internal_title = require("Module:pages").is_internal_title
local new_title = mw.title.new
local split_lang_label = require("Module:category tree").split_lang_label
local php_trim = require("Module:Scribunto").php_trim
local uses_hidden_category = require("Module:maintenance category").uses_hidden_category
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Pagpapanatili ng Wiksiyonaryo"] = { --TLCHANGE
description = "Categories containing pages that are being tracked for attention and improvement by editors.",
breadcrumb = "Pagpapanatili", --TLCHANGE
parents = "Wiksiyonaryo", --TLCHANGE
english_name = "Wiktionary maintenance", --TLCHANGE
}
raw_categories["Kategoryang walang laman"] = { --TLCHANGE
topright = "{{shortcut|CAT:EC}}",
description = "Categories with no members.",
additional = [=[Categories are placed here by [[Module:category tree]] when they contain no pages or subcategories.
Empty categories are not necessarily a problem, but they can clutter up their parent categories, or become orphaned if the structure of the category tree changes. This category therefore helps track down such cases, and allows them to be cleaned up.
Because of the way the wiki software works, categories will appear here for a while afterwards if they were empty at first but had entries added to them later. This can be fixed by simply performing a "null edit" on the category page: edit the page, and save without making any changes. (Alternatively, use the "null edit" option provided by the "purge tab" [[Special:Preferences#mw-prefsection-gadgets|gadget]].) This can be avoided by adding entries to categories before creating them. It also helps to create categories from the "bottom up": start at the lowest level that has entries, then create its parent categories, then the parent categories of that, and so on.]=],
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Empty categories", --TLCHANGE
}
raw_categories["Categories with incorrect names"] = {
description = "Categories with names that do not match the expected form within the category tree.",
additional = [=[This usually happens when additional parameters have been given to {{tl|auto cat}} that don't match the name of the category, or when there is a problem with capitalization or spacing in the category name.
==See also==
* [[:Category:Categories that are not defined in the category tree]]]=],
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Categories that are not defined in the category tree"] = {
description = "Categories which use {{tl|auto cat}}, but which are not registered in the category tree data modules.",
additional = [=[See the error box displayed on any of these categories for more info.
==See also==
* [[:Category:Categories with incorrect names]]]=],
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Kategoryang nakatago"] = { --TLCHANGE custom translated at [[MediaWiki:Hidden-category-category]]
description = "Categories using the <code>[[mw:Help:Magic words#HIDDENCAT|<nowiki>__HIDDENCAT__</nowiki>]]</code> behavior switch, which hides the category from the lists of categories in its members and subcategories.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Hidden categories", --TLCHANGE
}
raw_categories["Huge categories"] = {
description = "Categories with more than 1 million members.",
additional = "Such categories have the [[mw:Extension:DynamicPageList (Wikimedia)|DynamicPageList]] extension disabled, which is normally used to list the newest and oldest pages in a category. This is because categories above that size load very slowly when it is enabled, and in some cases become inaccessible due to timing-out.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pahinang naka-index"] = { --TLCHANGE custom translated at [[MediaWiki:Index-category]]
description = "Pages using the <code>[[mw:Help:Magic words#INDEX|<nowiki>__INDEX__</nowiki>]]</code> behavior switch, which tells search engines to index the page.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Indexed pages", --TLCHANGE
}
raw_categories["Pahinang naka-noindex"] = { --TLCHANGE custom translated at [[MediaWiki:Noindex-category]]
description = "Pages using the <code>[[mw:Help:Magic words#NOINDEX|<nowiki>__NOINDEX__</nowiki>]]</code> behavior switch, which tells search engines not to index the page.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Noindexed pages", --TLCHANGE
}
raw_categories["Pages using deprecated templates"] = {
description = "This category contains entries, reconstruction pages, appendixes, sign glosses and citations pages using deprecated templates—templates that have failed our deletion process, and/or that have been replaced by superior templates.",
additional = [=[This category is populated by {{tl|deprecated code}} and {{tl|deprecated lang param usage}}. The former is wrapped around templates that have been completely deprecated and remove from mainspace (particularly those in [[:Category:Successfully deprecated templates]]). The latter is wrapped around non-deprecated templates that accept the deprecated {{para|lang}} parameter; any use of that parameter will place the page in [[:Category:Pages using deprecated templates]]. Ideally, this category will be empty.
Any pages in this category, particularly those in the mainspace, need to have their deprecated template usages corrected. ]=],
breadcrumb = "Using deprecated templates",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages using lite templates"] = {
description = "Pages which use at least one of the lite templates.",
additional = "See [[:Category:Lua-free templates]].",
breadcrumb = "Using lite templates",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages with tab characters"] = {
description = "Pages which contain a tab character in their wikitext.",
additional = "These should either be removed or replaced with spaces, because they go against [[WT:NORM]].",
breadcrumb = "Tab characters",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pahinang may paulong pangwika na hindi magkasunod-sunod"] = { --TLCHANGE
description = "Pages in which the headings for each language's entry are in the wrong order.",
additional = "Level 2 language headings should be in alphabetical order, except for Translingual and English, which go at the top (in that order).",
breadcrumb = "Paulong pangwika na hindi magkasunod-sunod", --TLCHANGE "Language headings in the wrong order",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages with language headings in the wrong order", --TLCHANGE
}
raw_categories["Pahinang may paulong pangwika na hindi naaayon"] = { --TLCHANGE
description = "Pages which contain a level 2 heading which does not match any language's canonical name.",
additional = "The level 2 language heading for each language should always be that language's canonical name.",
breadcrumb = "Di-naaayong paulong pangwika", --TLCHANGE
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages with nonstandard language headings", --TLCHANGE
}
raw_categories["Pages with unwanted L1 headings"] = {
description = "Pages which contain an unwanted level 1 heading.",
additional = "Level 1 headings are not used in Wiktionary content pages, and only occur due to user error or vandalism.",
breadcrumb = "Unwanted L1 headings",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages with raw triple-brace template parameters"] = {
description = "Pages which contain raw template parameters in the form of triple braces.",
additional = "Triple-brace template parameters (e.g. {{param|param}}) are intended for use in templates, as they are substituted with the relevant template argument when the page is transcluded. Although they can theoretically be used on any page, there are currently no legitimate uses for them in content namespaces.\n\nTemplate parameters usually occur due to typos, or when {{tl|subst:}} has been used with a template that isn't supposed to be substed.",
breadcrumb = "Raw template parameters",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages with DEFAULTSORT conflicts"] = {
topright = "{{shortcut|CAT:DEFAULTSORT}}",
description = "Pages on which the {{tl|DEFAULTSORT:}} magic word has been used multiple times with different values.",
additional = "In some (but not all) cases, this causes a warning to display on the page. In the vast majority of instances, an explicit use of {{tl|DEFAULTSORT:}} in wikitext should be <u>removed</u>.This is because the {{tl|head}} template handles it automatically. The only instances where it should be used in wikitext is outside of entries (i.e. outside of mainspace or the Reconstruction namespace)." ..
"\n\nSee also [[:Category:Pages with DISPLAYTITLE conflicts]].",
breadcrumb = "DEFAULTSORT conflicts",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages with DISPLAYTITLE conflicts"] = {
topright = "{{shortcut|CAT:DISPLAYTITLE}}",
description = "Pages on which the {{tl|DISPLAYTITLE:}} magic word has been used multiple times with different values.",
additional = "In some (but not all) cases, this causes a warning to display on the page. In the vast majority of instances, an explicit use of {{tl|DISPLAYTITLE:}} in wikitext should be <u>removed</u>.This is because the {{tl|head}} template handles it automatically. The only instances where it should be used in wikitext is outside of entries (i.e. outside of mainspace or the Reconstruction namespace)." ..
"\n\nSee also [[:Category:Pages with DEFAULTSORT conflicts]].",
breadcrumb = "DISPLAYTITLE conflicts",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages with raw sortkeys"] = {
description = "Pages on which a sortkey has been used with a raw category.",
additional = "For example, {{code|[[<nowiki/>Category:IPA symbols|B]]}}." ..
"\n\nThese are a priority to replace with category templates, since they are hard-coded and override the {{tl|DEFAULTSORT:}} value for the page. This causes problems if there are any changes to the sorting scheme for the category, because there is no way of changing them centrally.\n\n" ..
"By comparison, raw categories which have no sortkey are less of a problem, because they will use the {{tl|DEFAULTSORT:}} value; this can be centrally controlled and is designed to be language-neutral, so avoids the issue of different editors using multiple different sorting schemes for the same category. However, they should still be replaced with category templates, since there may be additional language-specific sorting rules which cannot otherwise be applied.",
breadcrumb = "Raw sortkeys",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pahinang may kamalian sa iskrip"] = { --TLCHANGE custom translated at [[MediaWiki:Scribunto-common-error-category]]
topright = "{{shortcut|CAT:E|CAT:ERR|CAT:ERROR}}",
description = "Pages that have errors in a [[Wiktionary:Scribunto|Lua]] module.",
additional = "If entries are listed here for more than a day or two, the error should probably be reported at [[Wiktionary:GP|the Grease Pit]]. Memory errors are a common source of these errors; see the discussion at [[Wiktionary:Lua memory errors]]." ..
"\n\nBecause the software does not immediately update pages when a change occurs in a template or module, errors listed here may have already been fixed. Therefore, please ensure that the error is still present before reporting problems. You can do this by performing a \"[[mw:Help:Dummy_edit#A_null_edit|null edit]]\" (editing the page and saving without making changes). If the error goes away then, it has already been fixed." ..
"\n\n<u>You can use [https://en.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3APages%20with%20module%20errors&gcmlimit=20 this link] and press \"Make request\" to purge the cache of up to 20 pages from this category in one click.</u> This number can be adjusted up to 5,000, but anything above 30–100 will likely cause time-outs (depending on the size of the pages)." ..
"\n\nThe contents of this category is controlled by [[Template:maintenance category]]. It is currently set to place talk pages, user pages{{,}} and user sandbox modules and templates in a separate category." ..
"\n\nSee also [[:Category:Pages with ParserFunction errors]].",
breadcrumb = "Module errors",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages with module errors", --TLCHANGE
}
raw_categories["Pages with ParserFunction errors"] = {
topright = "{{shortcut|CAT:PFE}}",
description = "Pages that have errors in a [[mw:Help:Extension:ParserFunctions|ParserFunction]] magic word.",
additional = "Examples of these magic words are {{tl|#expr:}} and {{tl|#time:}}. If entries are listed here for more than a day or two, the error should probably be reported at [[Wiktionary:GP|the Grease Pit]]." ..
"\n\nBecause the software does not immediately update pages when a change occurs in a template or module, errors listed here may have already been fixed. Therefore, please ensure that the error is still present before reporting problems. You can do this by performing a \"[[meta:Help:Dummy_edit#Null_edit|null edit]]\" (editing the page and saving without making changes). If the error goes away then, it has already been fixed." ..
"\n\n<u>You can use [https://en.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3APages%20with%20ParserFunction%20errors&gcmlimit=20 this link] and press \"Make request\" to purge the cache of up to 20 pages from this category in one click.</u> This number can be adjusted up to 5,000, but anything above 30–100 will likely cause time-outs (depending on the size of the pages)." ..
"\n\nThe contents of this category is controlled by [[Template:maintenance category]]. It is currently set to place talk pages, user pages{{,}} and user sandbox modules and templates in a separate category." ..
"\n\nSee also [[:Category:Pages with module errors]].",
breadcrumb = "ParserFunction errors",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Requests for moves, mergers and splits"] = {
description = "Pages and categories which have been tagged with a request for them to be moved, merged or split.",
breadcrumb = "Moves, mergers and splits",
parents = {"Wiktionary maintenance", "Requests"},
can_be_empty = true,
hidden = true,
}
raw_categories["Pages to be merged"] = {
description = "Pages tagged to be merged by the {{tl|merge}} template.",
parents = "Requests for moves, mergers and splits",
can_be_empty = true,
}
raw_categories["Pages to be moved"] = {
description = "Pages tagged to be moved by the {{tl|move}} template.",
parents = "Requests for moves, mergers and splits",
can_be_empty = true,
}
raw_categories["Pages to be split"] = {
description = "Pages tagged to be split by the {{tl|split}} template.",
parents = "Requests for moves, mergers and splits",
can_be_empty = true,
}
raw_categories["Pages using invalid parameters when calling templates"] = {
description = "Pages that use unrecognized parameters when calling a template.",
breadcrumb = "Invalid template parameters",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
}
raw_categories["Pahinang gumagamit ng catfix"] = { --TLCHANGE
description = "Pages that use the <code>[[MediaWiki:Gadget-catfix.js|catfix]]</code> gadget.",
additional = "This processes links to entries in language-specific categories by adding language-specific formatting, and points them to the language's section of the entry.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages using catfix", --TLCHANGE
}
raw_categories["Pahinang tinatawag ang Padron:minitoc"] = { --TLCHANGE
description = "Pages that display a mini table of contents by calling {{tl|minitoc}}.",
additional = "This is is used on very large pages with many entries, to assist with navigation.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages calling Template:minitoc", --TLCHANGE
}
raw_categories["Kategoryang tinatawag ang Padron:auto cat"] = { --TLCHANGE
description = "Categories that have been placed in another category by calling {{tl|auto cat}}.",
additional = "This is the preferred way for categories to be subcategorized. The chief reason for this category is to facilitate the finding of categories which are not using {{tl|auto cat}} through the use of negative searches (e.g. qualifying a search with {{code|-incategory:\"{{PAGENAME}}\"}}).",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Categories calling Template:auto cat", --TLCHANGE
}
raw_categories["Categories with categories using raw markup"] = {
description = "Categories that have been placed in another category using raw wiki markup (e.g. {{cl|Wiktionary}}). They should be added to the [[Module:category tree|category tree]] data instead.",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
raw_categories["Pages using deprecated source tags"] = {
description = "Pages that use the [[mw:Extension:SyntaxHighlight|SyntaxHighlight]] extension with legacy {{wt|source}} tags instead of {{wt|syntaxhighlight}}.",
breadcrumb = "Deprecated source tags",
parents = "Pagpapanatili ng Wiksiyonaryo", --TLCHANGE "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
}
-----
--TLCHANGE CUSTOM CATEGORIES
local notice = "'''ITO AY KATEGORYANG ESPESIPIKO SA WIKSIYONARYONG TAGALOG LAMANG.'''<br/><br/>"
-- ADD NEW CUSTOM CATEGORY FOR CATEGORIES WITHOUT THE english_name PARAMETER
raw_categories["Kategoryang walang pangalan sa Ingles"] = {
description = "Mga kategoryang hindi nailagay ang <code>english_name</code> sa kanilang datos.",
additional = notice .. "Kapag sinasalin ang mga pangalan ng kategorya, ilagay ang orihinal na pangalan nito sa <code>english_name</code>.",
parents = "Pagpapanatili ng Wiksiyonaryo", -- "Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Categories that does not have an English translation",
}
-- CUSTOM CATEGORY FOR PAGES NOT USING THE =={{LANGCODE}}== SYNTAX FOR LANGUAGE HEADERS
raw_categories["Pahinang may paulong pangwika na hindi gumagamit ng padron"] = {
description = "Mga pahinang hindi gumagamit ng padron sa kanilang paulong pangwika.",
additional = notice .. "Dapat palitan ang mga ito upang gumamit ng <code><nowiki>=={{CODE}}==</nowiki></code>",
breadcrumb = "Paulong pangwika na hindi gumagamit ng padron",
parents = "Pagpapanatili ng Wiksiyonaryo", --"Wiktionary maintenance",
can_be_empty = true,
hidden = true,
english_name = "Pages whose language header does not use a template",
}
----
insert(raw_handlers, function(data)
local template_type = data.category:match("^Pages using invalid parameters when calling (.+) templates$")
if not template_type then
return
end
local parents = {{
name = "Pages using invalid parameters when calling templates",
sort = template_type == "general use" and "*" or template_type,
}}
local lang = require("Module:languages").getByCanonicalName(template_type, nil, true)
if lang then
insert(parents, {name = "entry maintenance", is_label = true, lang = lang:getCode()})
end
return {
lang = lang and lang:getCode() or nil,
description = "Pages that use unrecognized parameters when calling " .. template_type .. " templates.",
parents = parents,
breadcrumb = template_type,
}
end)
do
local prefixes = require("Module:table").listToSet{"list", "P", "R", "RQ", "table", "U"}
local function add_parent(parents, seen, cat_type, sortkey)
if seen[cat_type] then
return
end
insert(parents, {
name = ("Pages using invalid parameters when calling %s templates"):format(cat_type),
sort = sortkey,
})
seen[cat_type] = true
end
insert(raw_handlers, function(data)
local template = data.category:match("^Pages using invalid parameters when calling (.+)$")
if not template then
return
end
-- Resolve any redirects.
template = new_title(template)
while template do
local redirect = template.redirectTarget
if not (redirect and is_internal_title(redirect)) then
break
end
template = redirect
end
-- Disallow templates which would always hidden maintennace categories (e.g. sandboxes).
if not (template and not uses_hidden_category(template)) then
return
end
local prefixed_text, lang = template.prefixedText
if template.namespace == 10 then
local name = template.text
-- Remove the prefix if present (e.g. "R:" or "RQ:").
local prefix, text = name:match("^(.-):(.+)")
if not (prefix and prefixes[prefix]) then
text = name
end
-- Check the initial language code, chopping off hyphenated sections until there's a match or they run out.
local code = mw.ustring.match(text, "^[a-z][a-zA-Z-]*[a-zA-Z]%f[^%w]")
while code do
lang = get_lang(code)
if lang then
break
end
code = code:match("(.+)%-%a*$")
end
-- If no match and it's a list: or table: template, check if the template name ends "/CODE".
if not lang and (prefix == "list" or prefix == "table") then
code = text:match("%f[^/]%l[%a-]*%a$")
if code then
lang = get_lang(code)
end
end
end
local sortkey = template.text
local parents, seen = {}, {}
-- Categorize as language-specific if a language was found.
if lang then
add_parent(parents, seen, lang:getCanonicalName(), sortkey)
end
-- Also grab any language categories from the template page.
for _, cat in ipairs(template.categories) do
if cat:sub(-10) == " templates" or cat:sub(-13) == " subtemplates" then
local cat_lang = split_lang_label(new_title(cat).text)
if cat_lang then
add_parent(parents, seen, cat_lang:getCanonicalName(), sortkey)
end
end
end
-- If none were found, categorize as general use.
if #parents == 0 then
add_parent(parents, seen, "general use", sortkey)
end
-- Only add can_be_empty if the template exists and contains checkparams.
local content, can_be_empty = template:getContent()
if content then
-- Check for {{#invoke:checkparams|warn|...}}.
-- args[1] is the module and args[2] is the function name, so #INVOKE: will throw an error if either is not present.
for template in require("Module:template parser").find_templates(content) do
if template:get_name() == "#INVOKE:" then
local args = template:get_arguments()
local arg_2 = args[2]
if arg_2 and php_trim(args[1]) == "checkparams" and php_trim(arg_2) == "warn" then
can_be_empty = true
break
end
end
end
end
return {
canonical_name = "Pages using invalid parameters when calling " .. prefixed_text,
lang = lang and lang:getCode() or nil,
description = ("Pages that use unrecognized parameters when calling {{tl|%s}}.")
:format(m_template_parser.getTemplateInvocationName(template)),
additional = "These template calls should be reviewed and the invalid parameter(s) should be corrected or removed.",
breadcrumb = prefixed_text,
parents = parents,
can_be_empty = can_be_empty,
hidden = true,
}
end)
end
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
33kn61upupktfc392urrp3myh6a30ml
Module:template cat
828
36935
177913
174271
2026-09-12T13:37:52Z
Yivan000
4078
177913
Scribunto
text/plain
-- Author: Benwing
local export = {}
local require_when_needed = require("Module:utilities/require when needed")
local is_callable = require_when_needed("Module:fun", "is_callable")
local format_categories = require_when_needed("Module:utilities", "format_categories")
local parse_interface_module = "Module:parse interface"
local m_string_utilities = require("Module:string utilities")
local und_lang = require("Module:languages").getByCode("und", true)
local ugsub = m_string_utilities.gsub
local ufind = m_string_utilities.find
local split = m_string_utilities.split
local insert = table.insert
local concat = table.concat
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- This table detects the category type of the template given its name. When this is invoked, the language code has
-- already been removed from the beginning, and anything starting with a slash has been truncated. The entries are
-- processed in order and are two-element lists of Lua patterns (anchored on both sides; beware of hyphens, which need
-- to be %-escaped) and the category type to use. The category types themselves are mapped to categories in
-- category_type_to_category.
local detect_category_type_list = {
-- order is important here
-- nouns, proper nouns, pronouns
-- (1) unambiguous decl/infl templates
{"decl%-.*proper.*", "noun inflection-table"},
{"infl%-.*proper.*", "noun inflection-table"},
{"decl%-.*pron.*", "pronoun inflection-table"},
{"infl%-.*pron.*", "pronoun inflection-table"},
{"decl%-noun.*", "noun inflection-table"},
{"infl%-noun.*", "noun inflection-table"},
-- (2) nouns
{"noun", "headword-line"},
{"noun[ -]form", "headword-line"},
{"noun[ -]pl", "headword-line"},
{"noun[ -]plonly", "headword-line"},
-- Some languages, e.g. Urdu, have inflection templates called e.g. [[Template:ur-noun-f-ī]]. They should be called
-- [[Template:ur-decl-noun-f-ī]] but we can autodetect them if we exclude the likely cases that are not declension
-- templates.
{"noun%-.*", "noun inflection-table"},
{"ndecl", "noun inflection-table"},
{"ndecl%-.*", "noun inflection-table"},
-- (3) proper nouns
{"proper[ -]?noun", "headword-line"},
{"proper[ -]?noun[ -]form", "headword-line"},
{"proper[ -]?noun[ -]pl", "headword-line"},
{"proper[ -]?noun[ -]plonly", "headword-line"},
{"pnoun", "headword-line"},
{"pnoun[ -]form", "headword-line"},
{"pnoun[ -]pl", "headword-line"},
{"pnoun[ -]plonly", "headword-line"},
{"propn", "headword-line"},
{"propn[ -]form", "headword-line"},
{"propn[ -]pl", "headword-line"},
{"propn[ -]plonly", "headword-line"},
-- See above for inflection templates without 'decl' or 'infl' in them.
{"proper[ -]?noun%-.*", "noun inflection-table"},
{"pnoun%-.*", "noun inflection-table"},
{"propn%-.*", "noun inflection-table"},
-- (4) pronouns
{"pron", "headword-line"},
{"pronoun", "headword-line"},
{"pron[ -]form", "headword-line"},
{"pronoun[ -]form", "headword-line"},
{"prondecl", "pronoun inflection-table"},
{"prondecl%-.*", "pronoun inflection-table"},
-- adjectives
{"decl%-adj.*", "adjective inflection-table"},
{"infl%-adj.*", "adjective inflection-table"},
{"adj", "headword-line"},
{"adjective", "headword-line"},
{"adj[ -]form", "headword-line"},
{"adjective[ -]form", "headword-line"},
{"adj[ -]comp", "headword-line"},
{"adjective[ -]comp", "headword-line"},
{"adj[ -]sup", "headword-line"},
{"adjective[ -]sup", "headword-line"},
-- Some languages, e.g. Urdu and Lithuanian, have inflection templates called e.g. [[Template:ur-adj-1]] and
-- [[Template:lt-adj-is]]. They should be called [[Template:ur-decl-adj-1]] and [[Template:lt-decl-adj-is]] but we
-- can autodetect them if we exclude the likely cases that are not declension templates.
{"adj%-.*", "adjective inflection-table"},
{"adecl", "adjective inflection-table"},
{"adecl%-.*", "adjective inflection-table"},
-- verbs; need to avoid including conjunctions
{"verb", "headword-line"},
{"conj", "verb inflection-table"},
{"conj[0-9 -].*", "verb inflection-table"},
{"conjug.*", "verb inflection-table"},
{"infl%-verb.*", "verb inflection-table"},
-- pronunciation
{".*IPA.*", "pronunciation"},
{"pronunciation", "pronunciation"},
{"pr", "pronunciation"},
{"p", "pronunciation"},
-- form-of
{".*form of", "form-of"},
-- pronominal boxes
{".*personal pronouns", "personal pronoun"},
{".*demonstrative.*", "demonstrative"},
{".*interrogative.*", "interrogative"},
{".*possessives", "possessive"},
{".*possessive .*", "possessive"},
{".*reflexives", "reflexive"},
{".*reflexive .*", "reflexive"},
-- these next two should precede 'relative'
{".*correlatives", "pro-form"},
{".*correlative .*", "pro-form"},
{".*relative .*", "relative"},
{".*articles", "article"},
{".*prefixes", "affix"},
{".*suffixes", "affix"},
-- TOC tables
{".*TOC", "TOC"},
-- numbers, numerals
{".*numbers", "number"},
{".*numerals", "number"},
{".*ordinals", "ordinal"},
{".*cardinals", "cardinal"},
{".*digits", "digit"},
-- transliteration
{".*xlit", "orthographic conversion"},
{".*translit", "orthographic conversion"},
-- orthographic and regional variants
{".*variant", "orthographic variant"},
{".*regional", "regional variant"},
-- sign production templates
-- FIXME: We should limit this to sign languages. As it is, we put it near the bottom of the
-- pattern list so it doesn't accidentally override other patterns for non-sign languages.
{"prod .*", "sign production"},
}
-- This table indicates how to convert template category types to categories. It consists of a list of pairs, where the
-- first element is the category type and the second element is a key-value table containing the following keys:
-- * `aliases`: Optional list of aliases for the category type, which can be used when explicitly specifying the type,
-- e.g. {{tcat|hw}} instead of {{tcat|headword-line}}.
-- * `cats`: List of categories to add the template to. Each entry either specifies a ''raw'' category (if the category
-- name begins with "Category:") or a ''label'' category (for other strings, where e.g. if the label is
-- "noun inflection-table", the category name is "LANG noun inflection-table templates"). An entry is either a string,
-- directly specifying the category name, or a key-value table with keys `name` (the category name) and `sort` (how to
-- generate the sort base). By default, the sort base for raw categories is a comma-separated list of the language
-- names (not codes) associated with the template, or the full template name if there are no languages, and the sort
-- base for label categories is the template name minus the initial language code. If this isn't correct, the `sort`
-- field specifies how to compute the sort base. It is either a function of two arguments, the template name and
-- language object, which should return the sort base; or a table of specs telling how to compute the sort base. In
-- the case of a function, the template name passed in is the full name for raw categories, but the name minus any
-- language code prefix in the case of label categories; and for raw categories, a list of all associated language
-- objects is passed in, or {nil} if none, while for label categories, a single language object is passed in.
-- (Label categories can only exist if there are associated languages.) In the case where `sort` is a table of specs,
-- it is a list where each element is a two-element list of a Lua pattern anchored on both sides and the corresponding
-- pattern replacement string. The specs are processed in order.
local category_type_to_category = {
-- Inflection-table templates
{"noun inflection-table", {
aliases = {"nouninfl", "noundecl", "ndecl"},
cats = {{name = "pantalahanayan ng pagbabagong-anyo ng pangngalan", sort = { --TLCHANGE "noun inflection-table"
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"noun%-(.*)", "%1"},
-- put this twice to catch noun-decl-* and decl-noun-*
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"noun", "*"},
{"ndecl%-base%-(.*)", " %1"},
{"ndecl%-base", " "},
{"ndecl%-(.*)", "%1"},
{"ndecl", "*"},
{"propndecl%-base%-(.*)", " %1"},
{"propndecl%-base", " "},
{"propndecl%-(.*)", "%1"},
{"propndecl", "*"},
{"proper[ -]?noun%-(.*)", "%1"},
{"propn%-(.*)", "%1"},
{"pnoun%-(.*)", "%1"},
}}},
}},
{"pronoun inflection-table", {
aliases = {"proninfl", "prondecl"},
cats = {{name = "pantalahanayan ng pagbabagong-anyo ng panghalip", sort = { --TLCHANGE "pronoun inflection-table"
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"pronoun%-(.*)", "%1"},
{"pron%-(.*)", "%1"},
-- put this twice to catch pron-decl-* and decl-pron-*
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"pronoun", "*"},
{"prondecl%-base%-(.*)", " %1"},
{"prondecl%-base", " "},
{"prondecl%-(.*)", "%1"},
{"prondecl", "*"},
}}},
}},
{"adjective inflection-table", {
aliases = {"adjinfl", "adjdecl", "adecl"},
cats = {{name = "pantalahanayan ng pagbabagong-anyo ng pang-uri", sort = { --TLCHANGE "adjective inflection-table"
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"adj%-(.*)", "%1"},
{"adjective%-(.*)", "%1"},
-- put this twice to catch adj-decl-* and decl-adj-*
{"infl%-(.*)", "%1"},
{"decl%-(.*)", "%1"},
{"adj", "*"},
{"adjective", "*"},
{"adecl%-base%-(.*)", " %1"},
{"adecl%-base", " "},
{"adecl%-(.*)", "%1"},
{"adecl", "*"},
}}},
}},
{"verb inflection-table", {
aliases = {"verbinfl", "conj"},
cats = {{name = "pantalahanayan ng pagbabagong-anyo ng pandiwa", sort = { --TLCHANGE "verb inflection-table"
{"infl%-(.*)", "%1"},
{"verb%-(.*)", "%1"},
-- put this twice to catch verb-infl-* and infl-verb-*
{"infl%-(.*)", "%1"},
{"conj%-base%-(.*)", " %1"},
{"conj%-base", " "},
-- handle conj2, conj1-c, etc.
{"conj%-?(.*)", "%1"},
{"conj", "*"},
}}},
}},
-- Headword-line templates
{"headword-line", {
aliases = {"hw", "headword"},
cats = {"headword-line"},
}},
-- Definition templates
{"definition", {
aliases = {"def", "defn"},
cats = {"definition"},
}},
{"form-of", {
aliases = {"form of"},
cats = {"form-of"},
}},
-- Etymology and pronunciation templates
{"etymology", {
aliases = {"etym"},
cats = {"etymology"},
}},
{"morphology", {
aliases = {"morph"},
cats = {"etymology", "Category:Language-specific morphology templates"},
}},
{"pronunciation", {
aliases = {"pron"},
cats = {"pronunciation"},
}},
{"sign production", {
aliases = {"signprod"},
cats = {{name = "sign production", sort = {
{"prod (.*)", "%1"},
}}},
}},
-- Pseudo-namespace templates
{"reference", {
aliases = {"ref"},
cats = {"reference"},
}},
{"quotation", {
aliases = {"quote"},
cats = {"quotation"},
}},
{"usage", {
cats = {"usage"},
}},
{"list", {
cats = {"list"},
}},
{"auto-table", {
aliases = {"table"},
cats = {"auto-table"},
}},
-- Navigation templates
-- Pro-form box templates
{"pro-form", {
aliases = {"pro-forms"},
cats = {"pangnabegasyon", "Category:Padrong pangkahong pang-anyong nanghahalip"}, --TLCHANGE {"navigation", "Category:Pro-form box templates"},
}},
{"adposition", {
aliases = {"adpositions", "preposition", "prepositions", "postposition", "postpositions"},
cats = {"navigation", "Category:Adposition box templates"},
}},
{"affix", {
aliases = {"affixes", "prefix", "prefixes", "suffix", "suffixes"},
cats = {"navigation", "Category:Pro-form affix box templates"},
}},
{"article", {
aliases = {"articles"},
cats = {"navigation", "Category:Grammatical article box templates"},
}},
{"demonstrative", {
aliases = {"demonstratives"},
cats = {"navigation", "Category:Demonstrative box templates"},
}},
{"interrogative", {
aliases = {"interrogatives"},
cats = {"navigation", "Category:Interrogative box templates"},
}},
{"personal pronoun", {
aliases = {"perspron", "personal pronouns"},
cats = {"pangnabegasyon", "Category:Padrong pangkahong pampanghalip na panao"}, --TLCHANGE {"navigation", "Category:Personal pronoun box templates"},
}},
{"possessive", {
aliases = {"possessives"},
cats = {"navigation", "Category:Possessive pronoun and determiner box templates"},
}},
{"reflexive", {
aliases = {"reflexives"},
cats = {"navigation", "Category:Reflexive pronoun and determiner box templates"},
}},
{"relative", {
aliases = {"relatives"},
cats = {"navigation", "Category:Relative pronoun and determiner box templates"},
}},
{"navigation", {
-- miscellaneous navigation box templates like {{eu-aux verbs}}, {{pt-forms of address}}
aliases = {"nav"},
cats = {"navigation"},
}},
{"TOC", {
cats = {{name = "navigation", sort = {
{"categoryTOC", "TOC"},
}}, "Category:TOC templates"},
}},
{"number", {
aliases = {"numbers"},
cats = {"navigation", "Category:Language-specific number templates"},
}},
{"cardinal", {
aliases = {"cardinals"},
cats = {"navigation", "Category:Language-specific number templates"},
}},
{"ordinal", {
aliases = {"ordinals"},
cats = {"navigation", "Category:Language-specific number templates"},
}},
{"digit", {
aliases = {"digits"},
cats = {"list", "Category:Language-specific number templates"},
}},
-- Entry templates
{"entry", {
cats = {"entry"},
}},
-- Orthographic conversion templates (e.g. for converting between scripts)
{"orthographic conversion", {
aliases = {"transliteration", "translit", "xlit", "orthconv", "scriptconv"},
cats = {"conversion", "Category:Orthographic conversion templates"},
}},
-- Orthographic and regional variant templates (for displaying orthographic, script and/or regional variants)
{"orthographic variant", {
aliases = {"orthvar", "scriptvar"},
-- Currently we categorize orthographic and regional variants the same but we could split them if needed
cats = {"navigation", "Category:Orthographic and regional variant templates"},
}},
{"regional variant", {
aliases = {"regvar"},
cats = {"navigation", "Category:Orthographic and regional variant templates"},
}},
-- Internal link templates
{"link", {
cats = {"link", "Category:Language-specific internal link templates"},
}},
}
local category_type_to_category_map = {}
for _, category_type_to_category_spec in ipairs(category_type_to_category) do
local category_type, props = unpack(category_type_to_category_spec)
category_type_to_category_map[category_type] = props
if props.aliases then
for _, alias in ipairs(props.aliases) do
category_type_to_category_map[alias] = props
end
end
end
-- Split an argument on comma, but not comma followed by whitespace; split off sort base after a colon.
local function split_on_comma_and_split_off_sort_base(val)
local cattypes
if val:find(",") then
-- Don't optimize more than this because there can be commas backslashed, inside of links or followed by
-- whitespace that don't cause splitting.
cattypes = require(parse_interface_module).split_on_comma(val)
else
cattypes = {val}
end
for i, cattype_spec in ipairs(cattypes) do
if cattype_spec:find(":") then
local cattype, sort_base = cattype_spec:match("^(.-):(.*)$")
sort_base = sort_base:gsub("_", " ")
cattypes[i] = {name = cattype, sort_base = sort_base}
end
end
return cattypes
end
local function get_lang_or_script(code)
return code == "-" and code or
require("Module:languages").getByCode(code, nil, "allow etym") or
require("Module:languages").getByCode(code .. "-pro", nil, "allow etym") or
require("Module:scripts").getByCode(code)
end
local function obj_code(obj)
if obj == "-" then
return obj
end
return obj:getCode()
end
local function get_prefixed_obj(after_prefix)
return after_prefix:match("^(%a[%a-]*%a):(.+)$")
end
local function get_suffixed_obj(after_prefix)
local rest, objcode = after_prefix:match("^(.+)/(%a[%a-]*%a)$")
return objcode, rest
end
local pseudo_namespace_templates = {
{"R:", {
category_type = "reference",
get_obj_and_rest = get_prefixed_obj,
}},
{"RQ:", {
category_type = "quotation",
get_obj_and_rest = get_prefixed_obj,
}},
{"U:", {
category_type = "usage",
get_obj_and_rest = get_prefixed_obj,
}},
{"list:", {
category_type = "list",
get_obj_and_rest = get_suffixed_obj,
}},
{"table:", {
category_type = "auto-table",
get_obj_and_rest = get_suffixed_obj,
}},
}
local function infer_lang_or_script_code_and_category_type(name)
if name:find(":") then -- only check for pseudo-namespace prefix when a colon is present
for _, pseudo_namespace_spec in ipairs(pseudo_namespace_templates) do
local prefix, props = unpack(pseudo_namespace_spec)
local after_prefix = name:match("^" .. prefix .. "(.+)$")
if after_prefix then
local objcode, rest = props.get_obj_and_rest(after_prefix)
local obj
if objcode then
obj = get_lang_or_script(objcode) -- may return nil
if not obj then
rest = after_prefix
end
else
rest = after_prefix
end
return obj, rest, props.category_type
end
end
end
local hyphen_parts = split(name, "%-")
for i = #hyphen_parts - 1, 1, -1 do
local code = concat(hyphen_parts, "-", 1, i)
local obj = get_lang_or_script(code)
if obj then
local rest = concat(hyphen_parts, "-", i + 1)
return obj, rest, nil
end
end
return nil, name, nil
end
local function process_sortbase_specs(sortbase, specs)
for _, spec in ipairs(specs) do
local from, to = unpack(spec)
sortbase = ugsub(sortbase, "^" .. from .. "$", to)
end
return sortbase
end
local function template_name_minus_langcode_to_category_type(name)
for _, type_spec in ipairs(detect_category_type_list) do
local pattern, intended_type = unpack(type_spec)
if ufind(name, "^" .. pattern .. "$") then
return intended_type
end
end
return nil
end
local function compute_categories_for_template(full_template_name, template_name_minus_langcode, category_type,
langs_or_scripts)
local overriding_sort_base
if type(category_type) == "table" then
overriding_sort_base = category_type.sort_base
category_type = category_type.name
end
if not category_type_to_category_map[category_type] then
error("Unrecognized template category type: " .. category_type)
end
local props = category_type_to_category_map[category_type]
if not props.cats then
error("Internal error: No categories given for category type: " .. category_type)
end
local categories = {}
for _, catspec in ipairs(props.cats) do
if type(catspec) == "string" then
catspec = {name = catspec}
end
local rawcat = catspec.name:match("^Category:(.*)")
if rawcat then
local sortbase
-- User-specified sort base does not apply to raw categories, which have a different sort key format
-- than language-specific categories.
if not catspec.sort then
if langs_or_scripts then
local langnames = {}
for _, lang_or_sc in ipairs(langs_or_scripts) do
insert(langnames, lang_or_sc:getCanonicalName()) -- FIXME: or lang:getFullName()?
end
sortbase = concat(langnames, ",")
else
sortbase = full_template_name
end
elseif is_callable(catspec.sort) then
sortbase = catspec.sort(full_template_name, langs_or_scripts)
else
sortbase = process_sortbase_specs(full_template_name, catspec.sort)
end
insert(categories, {cat = rawcat, lang = und_lang, sort_base = sortbase})
elseif langs_or_scripts then
for _, lang_or_sc in ipairs(langs_or_scripts) do
local sortbase
if overriding_sort_base then
sortbase = overriding_sort_base
elseif not catspec.sort then
sortbase = template_name_minus_langcode
elseif is_callable(catspec.sort) then
sortbase = catspec.sort(template_name_minus_langcode, lang_or_sc)
else
sortbase = process_sortbase_specs(template_name_minus_langcode, catspec.sort)
end
if lang_or_sc:hasType("script") then
insert(categories, {
cat = ("%s na padron"):format(lang_or_sc:getCategoryName()), lang = und_lang, sc = lang_or_sc, --TLCHANGE "%s templates"
sort_base = sortbase,
})
else
insert(categories, {
cat = ("%s na padrong %s"):format(lang_or_sc:getFullName(), catspec.name), lang = lang_or_sc, --TLCHANGE "%s %s templates"
sort_base = sortbase,
})
end
end
end
end
if not categories[1] then
error(("No categories generated for template [[Template:%s]] with category type '%s'"):format(
full_template_name, category_type))
end
return categories
end
--[==[
Main entry point.
]==]
function export.categorize(frame)
local params = {
[1] = {}, -- comma-separated list of category types; by default, inferred from template name
lang = {}, -- comma-separated list of languages; by default, inferred from template name
["pagename"] = {}, -- for testing
["json"] = {type = "boolean"}, -- for testing
}
local parent_args = frame:getParent().args
args = require("Module:parameters").process(parent_args, params)
local category_specs = {}
local function insert_cat(cat, sort_key)
for _, existing_cat in ipairs(category_specs) do
if existing_cat.cat == cat then
return
end
end
insert(category_specs, {cat = cat, sort_key = sort_key})
end
local pagename = args.pagename
if not pagename then
title = mw.title.getCurrentTitle()
pagename = title.fullText
end
if pagename:find("/documentation$") or pagename:find("/documentation/") then
return ""
end
if pagename:find("^Template:User:") then
insert_cat("User sandbox templates", (pagename:gsub("^Template:User:", "")))
elseif pagename:find("^User:") then
insert_cat("User sandbox templates", (pagename:gsub("^User:", "")))
else
if not pagename:find("^Padron:") then --TLCHANGE "^Template:"
error(("This template should only be used in the Template namespace, not on page '%s'"):format(pagename))
end
local full_template_name = pagename:gsub("^Padron:", "") --TLCHANGE "^Template:"
local rootpage = full_template_name:gsub("/.*", "")
if full_template_name:find("/sandbox") then
insert_cat("Sandbox templates", full_template_name)
elseif full_template_name:find("^sandbox/") then
insert_cat("Sandbox templates", full_template_name:gsub("^sandbox/", ""))
else
local template_objs
if args.lang == "-" then
template_objs = false
elseif args.lang then
template_objs = {}
for _, code in ipairs(split(args.lang, ",")) do
-- We need to have an indicator of families because we allow bare family codes to stand for proto-languages.
if code:find("^fam:") then
code = code:gsub("^fam:", "")
local family = require("Module:families").getByCode(code) or
error(("Unrecognized family code '%s' in [[Module:template cat]]"):format(code))
local descendants = family:getDescendantCodes()
for _, desc in ipairs(descendants) do
local obj = get_lang_or_script(desc)
if obj then
-- make sure we skip families without proto-languages
insert(template_objs, obj)
end
end
else
local obj = get_lang_or_script(code)
if not obj then
error(("Unrecognized language or script code '%s'"):format(code))
end
insert(template_objs, obj)
end
end
end
local cattypes
if args[1] then
cattypes = split_on_comma_and_split_off_sort_base(args[1])
end
local inferred_obj, inferred_rest, inferred_cattype =
infer_lang_or_script_code_and_category_type(rootpage)
if template_objs == nil or not cattypes then
if template_objs == nil then
if not inferred_obj then
if not inferred_cattype then
error(("Unable to infer language or script from template root page '%s' for template '%s'; specify lang/script and type explicitly"):format(
rootpage, pagename))
else
error(("Unable to infer language or script from template root page '%s' for template '%s', inferred category type '%s'; specify lang/script explicitly"):format(
rootpage, pagename, inferred_cattype))
end
else
template_objs = {inferred_obj}
end
end
if not cattypes then
inferred_cattype = inferred_cattype or
template_name_minus_langcode_to_category_type(inferred_rest)
if not inferred_cattype then
error(("Unable to infer template category type from template remainder (after stripping langcode) '%s' for template '%s'; specify type explicitly"):format(
inferred_rest, pagename))
end
cattypes = {inferred_cattype}
end
end
for _, cattype in ipairs(cattypes) do
local cats = compute_categories_for_template(full_template_name, inferred_rest, cattype, template_objs)
for _, cat in ipairs(cats) do
insert(category_specs, cat)
end
end
end
end
-- We are returning categories for templates or user-space pages, so we need to force the output.
local retval = format_categories(category_specs, nil, nil, nil, "force_output")
if args.json then
return require("Module:JSON").toJSON {
category_specs = category_specs,
retval = mw.text.nowiki(retval),
}
else
return retval
end
end
--[==[Table used in the documentation to {{tl|template cat}}.]==]
function export.pattern_to_category_type_table()
local parts = {}
local function ins(text)
insert(parts, text)
end
ins('{|class="wikitable"')
ins("! Pattern !! Inferred category type")
for _, detect_spec in ipairs(detect_category_type_list) do
local pattern, category_type = unpack(detect_spec)
ins("|-")
ins(("| <code>%s</code> || <code>%s</code>"):format(pattern, category_type))
end
ins("|}")
return concat(parts, "\n")
end
--[==[Table used in the documentation to {{tl|template cat}}.]==]
function export.category_type_to_category_table()
local parts = {}
local function ins(text)
insert(parts, text)
end
local category_types = {}
local category_type_to_aliases = {}
for _, category_type_to_category_spec in ipairs(category_type_to_category) do
local category_type, props = unpack(category_type_to_category_spec)
insert(category_types, category_type)
category_type_to_aliases[category_type] = {}
if props.aliases then
for _, alias in ipairs(props.aliases) do
insert(category_type_to_aliases[category_type], alias)
end
table.sort(category_type_to_aliases[category_type])
end
end
table.sort(category_types)
local function get_category_type_categories(category_type)
local cats = {}
for _, catspec in ipairs(category_type_to_category_map[category_type].cats) do
if type(catspec) == "string" then
catspec = {name = catspec}
end
local cat = catspec.name
if cat:find("^Category:") then
insert(cats, ("<code>%s</code>"):format((cat:gsub("^Category:", ""))))
else
insert(cats, ("<code><var>LANG</var> %s templates</code>"):format(cat))
end
end
return concat(cats, ", ")
end
ins('{|class="wikitable"')
ins("! Category type !! Canonical category type !! Categories")
for _, category_type in ipairs(category_types) do
ins("|-")
ins(("| <code>'''%s'''</code> || ''(same)'' || <code>%s</code>"):format(
category_type, get_category_type_categories(category_type)))
for _, alias in ipairs(category_type_to_aliases[category_type]) do
ins("|-")
ins(("| <code>%s</code> || <code>'''%s'''</code> || <code>%s</code>"):format(
alias, category_type, get_category_type_categories(category_type)))
end
end
ins("|}")
return concat(parts, "\n")
end
return export
psp789kec5z60lr6u35a3yhipoqg7v8
aa1
0
38788
177909
2026-09-12T12:57:28Z
Hiyuune
5522
Nilikha ang pahina na may '{{also|Aa1}} =={{=yue=}}== ===Pagbigkas=== {{Jyutping-IPA|aa1}} ===Romanisasyon=== {{yue-jyut}} # {{yue-jyutping of|丫}} # {{yue-jyutping of|厂}} # {{yue-jyutping of|𠮩}} # {{yue-jyutping of|吖}} # {{yue-jyutping of|呀}} # {{yue-jyutping of|啊}} # {{yue-jyutping of|啞}} # {{yue-jyutping of|孲}} # {{yue-jyutping of|㝞}} # {{yue-jyutping of|扼}} # {{yue-jyutping of|椏}} # {{yue-jyutping of|㰳}} # {{yue-jyutping of|䃁}} # {{yue-jyutping of|䄅}} # {...'
177909
wikitext
text/x-wiki
{{also|Aa1}}
=={{=yue=}}==
===Pagbigkas===
{{Jyutping-IPA|aa1}}
===Romanisasyon===
{{yue-jyut}}
# {{yue-jyutping of|丫}}
# {{yue-jyutping of|厂}}
# {{yue-jyutping of|𠮩}}
# {{yue-jyutping of|吖}}
# {{yue-jyutping of|呀}}
# {{yue-jyutping of|啊}}
# {{yue-jyutping of|啞}}
# {{yue-jyutping of|孲}}
# {{yue-jyutping of|㝞}}
# {{yue-jyutping of|扼}}
# {{yue-jyutping of|椏}}
# {{yue-jyutping of|㰳}}
# {{yue-jyutping of|䃁}}
# {{yue-jyutping of|䄅}}
# {{yue-jyutping of|錏}}
# {{yue-jyutping of|錒}}
# {{yue-jyutping of|雅}}
# {{yue-jyutping of|鴉}}
# {{yue-jyutping of|枒}}
# {{yue-jyutping of|厊}}
brd13rpk8lmugdh1jw37xe7zk3j8nhq
Kategorya:Kantones na anyong di-lema
14
38789
177910
2026-09-12T12:57:57Z
Hiyuune
5522
Nilikha ang pahina na may '{{auto cat}}'
177910
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Padrong pangkahong pang-anyong nanghahalip
14
38790
177911
2026-09-12T13:30:28Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177911
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Padron:egl-personal pronouns/documentation
10
38791
177912
2026-09-12T13:34:44Z
Yivan000
4078
Nilikha ang pahina na may '{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{tcat}}'
177912
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
{{tcat}}
m8l0vseikdwj9l50rbz9wspysnkw6v1
Padron:tl-personal pronouns/documentation
10
38792
177914
2026-09-12T13:38:46Z
Yivan000
4078
Nilikha ang pahina na may '{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{tcat}}'
177914
wikitext
text/x-wiki
{{documentation subpage}}
{{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. -->
{{tcat}}
m8l0vseikdwj9l50rbz9wspysnkw6v1
Kategorya:Tagalog na padrong pangnabegasyon
14
38793
177918
2026-09-12T13:49:32Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177918
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Tagalog na padrong pangkawing
14
38794
177919
2026-09-12T13:49:49Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177919
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Padrong pangnabegasyon ayon sa wika
14
38795
177920
2026-09-12T13:50:17Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177920
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Katalan na padrong pangnabegasyon
14
38796
177921
2026-09-12T13:51:22Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177921
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Katalan na padrong pangkawing
14
38797
177922
2026-09-12T13:51:44Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177922
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Padrong pangkawing ayon sa wika
14
38798
177923
2026-09-12T13:52:04Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177923
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Ido na padrong pangnabegasyon
14
38799
177924
2026-09-12T13:52:27Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177924
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Ido na padrong pangkawing
14
38800
177925
2026-09-12T13:53:03Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177925
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Ido na padron
14
38801
177926
2026-09-12T13:53:06Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177926
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Esloveno na padrong pangnabegasyon
14
38802
177927
2026-09-12T13:53:47Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177927
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Esloveno na padrong pangkawing
14
38803
177928
2026-09-12T13:53:59Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177928
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
almuranin
0
38804
177929
2026-09-13T06:22:52Z
Hiyuune
5522
/* */
177929
wikitext
text/x-wiki
=={{=tl=}}==
===Pagbigkas===
{{tl-pr}}
===Pangngalan===
{{tl-noun|b=+}}
# {{alt form|tl|alimuranin}}
8ln18mklknr2x3ksjvvnrczx596nxv9
Kategorya:Kategoryang tinatawag ang Padron:auto cat
14
38805
177932
2026-09-13T07:09:44Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177932
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Tagalog na salitang hinango mula sa mga wikang Pilipino
14
38806
177935
2026-09-13T07:29:41Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177935
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Salitang hinango mula sa Proto-Pilipino ayon sa wika
14
38807
177936
2026-09-13T07:30:15Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177936
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Wikang Proto-Pilipino
14
38808
177937
2026-09-13T07:31:09Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177937
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Salitang hinango mula sa mga wikang Pilipino ayon sa wika
14
38809
177938
2026-09-13T07:32:04Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177938
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Ingles na salitang hinango mula sa mga wikang Malayo-Polinesya
14
38810
177939
2026-09-13T07:33:39Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177939
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Kategorya:Salitang hinango mula sa mga wikang Malayo-Polinesya ayon sa wika
14
38811
177940
2026-09-13T07:34:06Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
177940
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx