มอดูล:category tree/poscatboiler/data/กลุ่มภาษา
- The following documentation is generated by Template:poscatboiler data submodule documentation. [edit]
- Useful links: root page • root page’s subpages • links • transclusions • testcases • sandbox
This data submodule defines part of Wiktionary's category structure.
For an introduction to the poscatboiler
system and a description of how to add or modify categories, see Module:category tree/poscatboiler/data/documentation.
local raw_categories = {}
local raw_handlers = {}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["กลุ่มภาษาทั้งหมด"] = {
topright = "{{commonscat|Languages by family}}\n{{wikipedia|Language family|Language family|mul=List of language families|mullabel=List of language families}}",
description = "This category lists all [[language family|language families]].",
parents = {"มูลฐาน"},
}
raw_categories["ภาษาแบ่งตามกลุ่มภาษา"] = {
topright = "{{commonscat|Languages by family}}\n{{wikipedia|Language family|Language family|mul=List of language families|mullabel=List of language families}}",
description = "This category contains all languages categorized hierarchically according to the [[language family]] they belong to.",
additional = "Only top-level language families are shown here. For a full list of all language families, see [[:Category:All language families]] or [[Wiktionary:List of families]].",
parents = {
{name = "ภาษาทั้งหมด", sort = " "},
{name = "กลุ่มภาษาทั้งหมด", sort = " "},
},
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function family_is_not_a_family(fam)
local famcode = fam:getCode()
if famcode == "paa" then
return false -- Papuan languages are not a family but have a category
elseif famcode == "qfa-iso" or famcode == "qfa-not" then
return true
else
local parfam = fam:getFamily()
if parfam and parfam:getCode() == "qfa-not" then
-- Constructed languages, sign languages, etc.; no category for them
return true
end
end
return false
end
local function infobox(fam)
local ret = {}
table.insert(ret, "<table class=\"wikitable\">\n")
table.insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\">[//th.wiktionary.org/w/index.php?title=Module:families/data&action=edit แก้ไขข้อมูลกลุ่มภาษา]</th>\n</tr>\n")
table.insert(ret, "<tr>\n<th>ชื่อบัญญัติ</th><td>" .. fam:getCanonicalName() .. "</td>\n</tr>\n")
local otherNames = fam:getOtherNames(true)
if otherNames then
local names = {}
for _, name in ipairs(otherNames) do
table.insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>ชื่ออื่น</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
local aliases = fam:getAliases()
if aliases then
local names = {}
for _, name in ipairs(aliases) do
table.insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>ชื่อพ้อง</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
local varieties = fam:getVarieties()
if varieties then
local names = {}
for _, name in ipairs(varieties) do
if type(name) == "string" then
table.insert(names, "<li>" .. name .. "</li>")
else
assert(type(name) == "table")
local first_var
local subvars = {}
for i, var in ipairs(name) do
if i == 1 then
first_var = var
else
table.insert(subvars, "<li>" .. var .. "</li>")
end
end
if #subvars > 0 then
table.insert(names, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. table.concat(subvars, "\n") .. "</ul></dd></dl></li>")
elseif first_var then
table.insert(names, "<li>" .. first_var .. "</li>")
end
end
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>วิธภาษา</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|รหัสกลุ่มภาษา]]</th><td><code>" .. fam:getCode() .. "</code></td>\n</tr>\n")
table.insert(ret, "<tr>\n<th>[[w:Proto-language|บรรพบุรุษร่วม]]</th><td>")
local protoLanguage = fam:getProtoLanguage()
if protoLanguage then
table.insert(ret, "[[:หมวดหมู่:" .. protoLanguage:getCategoryName() .. "|" .. protoLanguage:getCanonicalName() .. "]]")
else
table.insert(ret, "ไม่มี")
end
table.insert(ret, "</td>\n")
table.insert(ret, "\n</tr>\n")
local parent = fam:getFamily()
if not parent then
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|กลุ่มภาษาแม่]]</th>\n<td>")
table.insert(ret, "ยังไม่จัดประเภท")
elseif parent:getCode() == "qfa-not" then
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|กลุ่มภาษาแม่]]</th>\n<td>")
table.insert(ret, "ไม่ใช่กลุ่มภาษา")
else
local chain = {}
while parent do
if family_is_not_a_family(parent) then
break
end
table.insert(chain, "[[:หมวดหมู่:" .. parent:getCategoryName() .. "|" .. parent:getCanonicalName() .. "]]")
parent = parent:getFamily()
end
if #chain == 0 then
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|กลุ่มภาษาแม่]]</th>\n<td>")
table.insert(ret, "ไม่มี")
else
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|กลุ่มภาษาแม่]]</th>\n<td>")
for i = #chain, 1, -1 do
table.insert(ret, "<ul><li>" .. chain[i])
end
table.insert(ret, string.rep("</li></ul>", #chain))
end
end
table.insert(ret, "</td>\n</tr>\n")
if fam:getWikidataItem() and mw.wikibase then
local link = '[' .. mw.wikibase.getEntityUrl(fam:getWikidataItem()) .. ' ' .. fam:getWikidataItem() .. ']'
table.insert(ret, "<tr><th>วิกิสนเทศ</th><td>" .. link .. "</td></tr>")
end
table.insert(ret, "</table>")
return table.concat(ret)
end
table.insert(raw_handlers, function(data)
--[[
local family_name = data.category:match("^(.+) languages$")
if not family_name then
family_name = data.category:match("^(.+ Languages)$")
end
--]]
local family_name = mw.ustring.match(data.category, "^กลุ่มภาษา(.+)$")
if not family_name then
return nil
end
local family = require("Module:families").getByCanonicalName(family_name) or
require("Module:families").getByCanonicalName(mw.ustring.lower(family_name))
if not family then
return nil
end
local parent_fam = family:getFamily()
local first_parent
if not parent_fam or family_is_not_a_family(parent_fam) then
first_parent = "ภาษาแบ่งตามกลุ่มภาษา"
else
first_parent = parent_fam:getCategoryName()
end
local topright, description, additional = "", "", ""
if not data.called_from_inside then
local wikipedia_art = family:getWikipediaArticle()
topright = "{{commonscat|" .. family:getCategoryName() .. "}}\n{{wikipedia|" .. wikipedia_art .. "}}"
description = "This is the main category of the '''" .. family:getDisplayForm() .. "'''."
additional = "Information about " .. family:getCanonicalName() .. ":\n\n" .. infobox(family)
end
local parents = {
first_parent,
"กลุ่มภาษาทั้งหมด",
}
if parent_fam and parent_fam:getCode() == "sgn" then
table.insert(parents, "กลุ่มภาษามือทั้งหมด")
end
return {
topright = topright,
description = description,
additional = additional,
parents = parents,
breadcrumb = family:getCanonicalName(),
can_be_empty = true,
}
end)
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}