Module:Zh
require('strict')
local p = {}
-- articles in which traditional Chinese preceeds simplified Chinese
local t1st = {
["228 Incident"] = true,
["Chinese calendar"] = true,
["Lippo Centre, Hong Kong"] = true,
["Republic o Cheenae"] = true,
["Republic o Cheenae at the 1924 Summer Olympics"] = true,
["Taiwan"] = true,
["Taiwan (island)"] = true,
["Taiwan Province"] = true,
["Wei Boyang"] = true,
}
-- the labels for each part
local labels = {
["c"] = "Cheenese",
["s"] = "simplifeed Cheenese",
["t"] = "traditeeonal Cheenese",
["p"] = "pinyin",
["tp"] = "Tongyong Pinyin",
["w"] = "Wade–Giles",
["j"] = "Jyutping",
["cy"] = "Cantonese Yale",
["sl"] = "Sidney Lau",
["poj"] = "Pe̍h-ōe-jī",
["zhu"] = "Zhuyin Fuhao",
["l"] = "leeterally",
}
-- article titles for wikilinks for each part
local wlinks = {
["c"] = "Cheenese leid",
["s"] = "simplifeed Cheenese chairacters",
["t"] = "tradeetional Cheenese chairacters",
["p"] = "pinyin",
["tp"] = "Tongyong Pinyin",
["w"] = "Wade–Giles",
["j"] = "Jyutping",
["cy"] = "Yale romanisation o Cantonese",
["sl"] = "Sidney Lau romanisation",
["poj"] = "Pe̍h-ōe-jī",
["zhu"] = "Bopomofo",
}
-- 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-jyutping",
["cy"] = "yue",
["sl"] = "yue",
["poj"] = "nan",
["zhu"] = "zh-Bopo",
}
local italic = {
["p"] = true,
["tp"] = true,
["w"] = true,
["j"] = true,
["cy"] = true,
["sl"] = true,
["poj"] = true,
}
-- Categories for different kinds of Chinese text
local cats = {
["c"] = "[[Category:Airticles conteenin Cheenese-leid text]]",
["s"] = "[[Category:Airticles conteenin simplifee'd Cheenese-leid text]]",
["t"] = "[[Category:Airticles conteenin tradeetional Cheenese-leid text]]",
}
function p.Zh(frame)
-- load arguments module to simplify handling of args
local getArgs = require('Module:Arguments').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"}
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 and part ~= "l") then
label = "[[" .. wlinks[part] .. "|" .. label .. "]]"
end
label = label .. ": "
end
-- build value
val = args[part]
if (cats[part]) then
-- if has associated category add it
val = cats[part] .. val
end
if (ISOlang[part]) then
-- add span for language if needed
params = {["lang"] = ISOlang[part], ["xml:lang"] = ISOlang[part]}
val = mw.text.tag({name="span",attrs=params, content=val})
elseif (part == "l") then
-- put literals in quotes
val = '"' .. val .. '"'
end
if (italic[part]) then
-- italicise
val = "''" .. val .. "''"
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
val = cats["c"] .. args[1]
params = {["lang"] = ISOlang["c"], ["xml:lang"] = ISOlang["c"]}
val = mw.text.tag({name="span",attrs=params, content=val})
return label .. val
end
return ""
end
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.