Modulo:Lang-zh/pagipadasan
Daytoy ket isu ti panid a pagipadasan ti modulo para iti Modulo:Lang-zh (dip). |
Panagusar
[urnosen ti taudan]Daytoy a modulo ket isayangkatna ti plantilia {{Lang-zh}}. Dagiti nangruna a langana ket naipalawag iti dokumentasion ti plantilia, pangngaasi a kitaen dayta para kadagiti pakaammo iti panagusar kadagiti artikulo. Daytoy a dokumentasion ket mangipalawag kadagiti naisangayan a langa ti modulo.
Ti umuna a tabla iti modulo ket ilistana dagiti artikulo nga umuna nga ikabil ti plantilia ti tradisional nga Insik. Manginayon kadagiti artikulo iti daytoy a listaan iti isu met laeng a tabas (saan a nasken ti urnos) tapno mairamanda.
Panagusar manipud kadagiti sabali a modulo
[urnosen ti taudan]Ti modulo ket mabalin a dagus a maawagan manipud iti sabali a modulo ken ti pay plantilia. Tapno mabalin daytoy, umuna nga ikarga ti modulo
local Zh = require("Modulo:Lang-zh")._Zh
Kalpasanna tawagan a kas dagiti sumaganad, nga addaan kadagiti argumento iti tabla
local output = Zh{["c"] = "中国", ["p"] = "zhōngguó"}
require('strict')
local p = {}
-- articles in which traditional Chinese preceeds simplified Chinese
local t1st = {
["Insidente ti 228"] = true,
["Kalendario nga Insik"] = true,
["Lippo Centre, Hong Kong"] = true,
["Republika ti Tsina"] = true,
["Republika ti Tsina iti Kalgaw nga Olimpiada ti 1924"] = true,
["Taiwan"] = true,
["Taiwan (isla)"] = true,
["Probinsia ti Taiwan"] = true,
["Wei Boyang"] = true,
}
-- the labels for each part
local labels = {
["c"] = "Insik",
["s"] = "napalaka nga Insik",
["t"] = "tradisional nga Insik",
["p"] = "pinyin",
["tp"] = "Tongyong Pinyin",
["w"] = "Wade–Giles",
["j"] = "Jyutping",
["cy"] = "Kantones a Yale",
["sl"] = "Sidney Lau",
["poj"] = "Pe̍h-ōe-jī",
["zhu"] = "Zhuyin Fuhao",
["l"] = "lit.",
["tr"] = "trans.",
}
-- article titles for wikilinks for each part
local wlinks = {
["c"] = "Pagsasao nga Insik",
["s"] = "karkarakter a napalaka nga Insik",
["t"] = "karkarakter a tradisional nga Insik",
["p"] = "pinyin",
["tp"] = "Tongyong Pinyin",
["w"] = "Wade–Giles",
["j"] = "Jyutping",
["cy"] = "Yale a romanisasion ti Kantones",
["sl"] = "Romanisasion ti Sidney Lau",
["poj"] = "Pe̍h-ōe-jī",
["zhu"] = "Bopomofo",
["l"] = "Literal a patarus",
["tr"] = "Patarus",
}
-- for those parts which are to be treated as languages their ISO code
local ISOlang = {
["c"] = "zh",
["t"] = "zh-Hant",
["s"] = "zh-Hans",
["p"] = "zh-Latn-pinyin",
["tp"] = "zh-Latn",
["w"] = "zh-Latn-wadegile",
["j"] = "yue-Latn-jyutping",
["cy"] = "yue-Latn",
["sl"] = "yue-Latn",
["poj"] = "nan-Latn",
["zhu"] = "zh-Bopo",
}
local italic = {
["p"] = true,
["tp"] = true,
["w"] = true,
["j"] = true,
["cy"] = true,
["sl"] = true,
["poj"] = true,
}
local superscript = {
["w"] = true,
["sl"] = true,
}
-- Categories for different kinds of Chinese text
local cats = {
["c"] = "[[Kategoria:Dagiti artikulo nga aglaon iti teksto ti pagsasao nga Insik]]",
["s"] = "[[Kategoria:Dagiti artikulo nga aglaon iti teksto ti pagsasao a napalaka nga Insik]]",
["t"] = "[[Kategoria:Dagiti artikulo nga aglaon iti teksto ti pagsasao a tradisional nga Insik]]",
}
function p.Zh(frame)
-- load arguments module to simplify handling of args
local getArgs = require('Modulo:Dagiti argumento').getArgs
local args = getArgs(frame)
return p._Zh(args)
end
function p._Zh(args)
local uselinks = not (args["links"] == "no") -- whether to add links
local uselabels = not (args["labels"] == "no") -- whether to have labels
local capfirst = args["scase"] ~= nil
local t1 = false -- whether traditional Chinese characters go first
local j1 = false -- whether Cantonese Romanisations go first
local testChar
if (args["first"]) then
for testChar in mw.ustring.gmatch(args["first"], "%a+") do
if (testChar == "t") then
t1 = true
end
if (testChar == "j") then
j1 = true
end
end
end
if (t1 == false) then
local title = mw.title.getCurrentTitle()
t1 = t1st[title.text] == true
end
-- based on setting/preference specify order
local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "sl", "poj", "zhu", "l", "tr"}
if (t1) then
orderlist[2] = "t"
orderlist[3] = "s"
end
if (j1) then
orderlist[4] = "j"
orderlist[5] = "cy"
orderlist[6] = "sl"
orderlist[7] = "p"
orderlist[8] = "tp"
orderlist[9] = "w"
end
-- rename rules. Rules to change parameters and labels based on other parameters
if args["hp"] then
-- hp an alias for p ([hanyu] pinyin)
args["p"] = args["hp"]
end
if args["tp"] then
-- if also Tongyu pinyin use full name for Hanyu pinyin
labels["p"] = "Hanyu Pinyin"
end
if (args["s"] and args["s"] == args["t"]) then
-- Treat simplified + traditional as Chinese if they're the same
args["c"] = args["s"]
args["s"] = nil
args["t"] = nil
elseif (not (args["s"] and args["t"])) then
-- use short label if only one of simplified and traditional
labels["s"] = labels["c"]
labels["t"] = labels["c"]
end
local body = "" -- the output string
local params -- for creating HTML spans
local label -- the label, i.e. the bit preceeding the supplied text
local val -- the supplied text
-- go through all possible fields in loop, adding them to the output
for i, part in ipairs(orderlist) do
if (args[part]) then
-- build label
label = ""
if (uselabels) then
label = labels[part]
if (capfirst) then
label = mw.language.getContentLanguage():ucfirst(label)
capfirst = false
end
if (uselinks) then
label = "[[" .. wlinks[part] .. "|" .. label .. "]]"
end
if (labels[part] ~= "lit.") then
label = label .. ":"
else
label = "<small>" .. label .. "</small>"
end
label = label .. " "
end
-- build value
val = args[part]
if (cats[part]) and mw.title.getCurrentTitle().namespace == 0 then
-- if has associated category AND current page in article namespace, add category
val = cats[part] .. val
end
if (ISOlang[part]) then
-- add span for language if needed
params = {["lang"] = ISOlang[part]}
val = mw.text.tag({name="span",attrs=params, content=val})
elseif ((part == "l") or (part == "tr")) then
-- put literals in quotes
val = "'" .. val .. "'"
end
if (italic[part]) then
-- italicise
val = "<i>" .. val .. "</i>"
end
if string.match(val, "</?sup>") then val = val.."[[Kategoria:Pampanid nga agus-usar iti plantilia Zh nga agraman kadagiti etiketa ti sup]]" end
if (superscript[part]) then
-- superscript
val = val:gsub("(%d)", "<sup>%1</sup>"):gsub("(%d)</sup>%*<sup>(%d)", "%1*%2"):gsub("<sup><sup>([%d%*]+)</sup></sup>", "<sup>%1</sup>")
end
-- add both to body
body = body .. label .. val .. "; "
end
end
if (body > "") then -- check for empty string
return string.sub(body, 1, -3) -- chop off final semicolon and space
else --no named parameters; see if there's a first parameter, ignoring its name
if (args[1]) then
-- if there is treat it as Chinese
label = ""
if (uselabels) then
label = labels["c"]
if (uselinks) then
label = "[[" .. wlinks["c"] .. "|" .. label .. "]]"
end
label = label .. ": "
end
-- default to show links and labels as no options given
if mw.title.getCurrentTitle().namespace == 0 then
-- if current page in article namespace
val = cats["c"] .. args[1]
else
val = args[1]
end
params = {["lang"] = ISOlang["c"]}
val = mw.text.tag({name="span",attrs=params, content=val})
return label .. val
end
return ""
end
end
return p