มอดูล:zh-dial-syn
หน้าตา
- This มอดูล lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local m_links = require("Module:links")
local zh = require("Module:languages").getByCode("zh")
local variety_list = {
"Classical", "Formal", "Taxonomic",
"Northeastern Mandarin", "Jilu Mandarin", "Jiaoliao Mandarin",
"Central Plains Mandarin", "Lanyin Mandarin",
"Southwestern Mandarin", "Jianghuai Mandarin",
"Mandarin", "Cantonese", "Gan", "Hakka", "Huizhou", "Jin", "Jiuxing Yumin",
"Northern Min", "Eastern Min", "Southern Min", "Puxian Min", "Central Min", "Shaojiang Min", "Zhongshan Min",
"Southern Pinghua", "Northern Pinghua", "Shehua", "Waxiang", "Wu", "Xiang", "Xiangnan Tuhua", "Yuebei Tuhua"
}
local variety_list_th = {
["Classical"]="คลาสสิก", ["Formal"]="ทางการ", ["Taxonomic"]="ชื่ออนุกรมวิธาน",
["Northeastern Mandarin"]="จีนกลางตะวันออกเฉียงเหนือ", ["Jilu Mandarin"]="จีนกลางแบบจี้หลู่", ["Jiaoliao Mandarin"]="จีนกลางแบบเจียวเหลียว",
["Central Plains Mandarin"]="จีนกลาง", ["Lanyin Mandarin"]="จีนกลางแบบหลันอิ๋น",
["Southwestern Mandarin"]="จีนกลางตะวันตกเฉียงใต้", ["Jianghuai Mandarin"]="จีนกลางแบบเจียงหวย",
["Mandarin"]="จีนกลาง", ["Cantonese"]="กวางตุ้ง", ["Gan"]="กั้น", ["Hakka"]="แคะ", ["Huizhou"]="ฮุ่ยโจว", ["Jin"]="จิ้น", ["Jiuxing Yumin"]="จิ่วซิ่งยฺหวีหมิน",
["Northern Min"]="หมิ่นเหนือ", ["Eastern Min"]="หมิ่นตะวันออก", ["Southern Min"]="หมิ่นใต้", ["Puxian Min"]="หมิ่นแบบผูเซียน",
["Central Min"]="หมิ่นตอนกลาง", ["Shaojiang Min"]="หมิ่นแบบเซ่าเจียง", ["Zhongshan Min"]="หมิ่นแบบจงซัน",
["Southern Pinghua"]="ผิงใต้", ["Northern Pinghua"]="ผิงเหนือ", ["Shehua"]="เซอ", ["Waxiang"]="หวาเซียง", ["Wu"]="อู๋", ["Xiang"]="เซียง", ["Xiangnan Tuhua"]="TuhuaแบบXiangnan", ["Yuebei Tuhua"]="TuhuaแบบYuebei"
}
local variety_colour = {
["Classical"] = "FAF0F2",
["Formal"] = "FAF0F2",
["Taxonomic"] = "FAF0F2",
["Northeastern Mandarin"] = "FAF5F0",
["Jilu Mandarin"] = "FAF5F0",
["Jiaoliao Mandarin"] = "FAF5F0",
["Central Plains Mandarin"] = "FAF5F0",
["Lanyin Mandarin"] = "FAF5F0",
["Southwestern Mandarin"] = "FAF5F0",
["Jianghuai Mandarin"] = "FAF5F0",
["Mandarin"] = "FAF5F0",
["Cantonese"] = "F0F5FA",
["Gan"] = "F0FAF3",
["Hakka"] = "FAF0F6",
["Huizhou"] = "FAF9F0",
["Jin"] = "FAF5F0",
["Jiuxing Yumin"] = "FAF0FE",
["Northern Min"] = "F7FAF0",
["Eastern Min"] = "F7FAF0",
["Southern Min"] = "F7FAF0",
["Puxian Min"] = "F7FAF0",
["Central Min"] = "F7FAF0",
["Shaojiang Min"] = "F7FAF0",
["Zhongshan Min"] = "F7FAF0",
["Southern Pinghua"] = "F0F5FA",
["Northern Pinghua"] = "F0F5FA",
["Shehua"] = "FAF0F6",
["Waxiang"] = "F0FAF6",
["Wu"] = "F4F0FA",
["Xiang"] = "F0F2FA",
["Xiangnan Tuhua"] = "F0F9FA",
["Yuebei Tuhua"] = "F0F9FA",
}
local special_note = {
["Classical"] = "[[w:ภาษาจีนคลาสสิก|คลาสสิก]]",
["Formal"] = "ทางการ <small>([[w:Written vernacular Chinese|Written Standard Chinese]])</small>",
["Taxonomic"] = "ชื่ออนุกรมวิธาน",
}
function export.main(frame)
local data = {}
local args = frame:getParent().args
local pagename = mw.title.getCurrentTitle().text
local target_page = args[1] or pagename
local resource_page = "Module:zh/data/dial-syn/" .. target_page
local m_syndata
if mw.title.new(resource_page).exists then
m_syndata = require(resource_page).list
else
return frame:expandTemplate{ title = "Template:zh-dial/uncreated", args = { target_page } }
end
--allow alternative title linking for sum-of-parts tables
local title = m_syndata["title"] and m_syndata["title"] ~= "" and m_syndata["title"] or target_page
local main_title = m_links.full_link( { term = title:gsub("[0-9%-]", "") .. "//", lang = zh, tr = "-" } )
local syn_table = { [=[
<div class="NavFrame" style="border:0px; max-width: 40em; text-align:center;"><div class="NavHead" style="font-size:105%; border:1px solid #aaaaaa; margin-left:-1px; background-color:#CCCCFF; text-align:center;" cellpadding="3">คำพ้องความในภาษาถิ่นของ ]=] ..
main_title .. ' (“' .. m_syndata["meaning"] .. '”) ' ..
"[[Template:zh-dial-map/" .. target_page .. '|<small>[แผนที่]</small>]]\n' .. [=[</div><div class="NavContent">
{| class="wikitable" style="margin:0; text-align:center; width: 100%"
|-
! style="background:#E8ECFA" | วิธภาษา
! style="background:#E8ECFA" | ที่ตั้ง
! style="background:#E8ECFA" | คำ]=] .. [=[
<div style="float: right; clear: right; font-size:60%"><span class="plainlinks">[]=] ..
tostring(mw.uri.fullUrl("Module:zh/data/dial-syn/" .. target_page, { ["action"] = "edit" })) ..
' แก้ไข]</span></div>' }
local note = m_syndata["note"]
if m_syndata["Formal"][1] == "" then
m_syndata["Formal"] = { target_page }
elseif m_syndata["Formal"][1] == "-" then
m_syndata["Formal"] = nil
end
local m_dialdata = require("Module:zh/data/dial")
local variety = ""
local current_variety = ""
local location_name = ""
local location_link = ""
local colour = ""
local exists = {}
local variety_count = {}
local formatted_synonyms = {}
local loc = {}
local cur = {}
for i, v in pairs(variety_list) do
variety_count[v] = 0
end
for i = 1,#m_dialdata,1 do
loc = m_dialdata[i]
cur = m_syndata[loc.key] or {""}
if cur[1] == "" then
exists[i] = false
else
exists[i] = true
variety = loc.group
variety_count[variety] = variety_count[variety] + 1
end
end
for i = 1,#exists,1 do
if exists[i] then
loc = m_dialdata[i]
variety = loc.group
location_name = (loc.english or loc.key):gsub("(%(.*%))", "<small>%1</small>")
location_link = loc.link or loc.key
formatted_synonyms = {}
for i, synonym in ipairs(m_syndata[loc.key]) do
local synonym_note = mw.text.split(synonym, ":")
local synonym_etym = mw.text.split(synonym_note[1], "_")
local syn, etym, note = synonym_etym[1], synonym_etym[2], synonym_note[2]
local synonym_link = m_links.full_link( {
term = syn .. (etym and string.format("#รากศัพท์ %s", etym) or "") .. "//",
alt = etym and (syn .. string.format("<sub>%s</sub>", etym)) .. "//",
lang = zh,
tr = "-"
} )
if note == "GT" then
require('Module:debug/track')("zh-dial-GT")
end
note = note and ' <span style="font-size:60%"><i>' .. note .. '</i></span>' or ""
table.insert(formatted_synonyms, synonym_link .. note)
end
table.insert(syn_table, "\n|-")
if variety ~= current_variety then
current_variety = variety
colour = variety_colour[variety]
table.insert(syn_table, "\n!rowspan=" .. variety_count[variety] .. (special_note[variety] and " colspan=2" or "") ..
' style="background:#' .. colour .. '"| ' .. (special_note[variety] or variety_list_th[variety])) --Thai name here
end
table.insert(syn_table,
((location_name and not special_note[variety]) and ('\n|style="background:#' .. colour .. '"| ' ..
'[[w:' .. location_link .. '|' .. location_name .. ']]') or '') ..
'\n|style="background:#' .. colour .. '"| ' ..
table.concat(formatted_synonyms, ", "))
end
end
if note and note ~= "" then
table.insert(syn_table, '\n|-\n! style="background:#FFF7FB; padding-top:5px; padding-bottom: 5px" | ' ..
"<small>หมายเหตุ</small>\n| colspan=2|<small><i>" .. note .. "</i></small>")
end
table.insert(syn_table, '\n|}</div></div>')
return table.concat(syn_table, "")
end
return export