Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Cultopedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Lang-zh
Module
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
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 of China"] = true, ["Republic of China 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"] = "Chinese", ["s"] = "simplified Chinese", ["t"] = "traditional Chinese", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Cantonese Yale", ["sl"] = "Sidney Lau", ["poj"] = "Pe̍h-ōe-jī", ["tl"] = "Tâi-lô", ["zhu"] = "Zhuyin Fuhao", ["l"] = "lit.", ["tr"] = "trans.", } -- article titles for wikilinks for each part local wlinks = { ["c"] = "Chinese language", ["s"] = "simplified Chinese characters", ["t"] = "traditional Chinese characters", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Yale romanization of Cantonese", ["sl"] = "Sidney Lau romanisation", ["poj"] = "Pe̍h-ōe-jī", ["tl"] = "Tâi-uân Lô-má-jī Phing-im Hong-àn", ["zhu"] = "Bopomofo", ["l"] = "Literal translation", ["tr"] = "Translation", } -- 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", ["tp"] = "zh-Latn-tongyong", ["w"] = "zh-Latn-wadegile", ["j"] = "yue-Latn-jyutping", ["cy"] = "yue-Latn", ["sl"] = "yue-Latn", ["poj"] = "nan-Latn", ["tl"] = "nan-Latn-tailo", ["zhu"] = "zh-Bopo", } local italic = { ["p"] = true, ["tp"] = true, ["w"] = true, ["j"] = true, ["cy"] = true, ["sl"] = true, ["poj"] = true, ["tl"] = true, } local superscript = { ["w"] = true, ["sl"] = true, } -- Categories for different kinds of Chinese text local cats = { ["c"] = "[[Category:Articles containing Chinese-language text]]", ["s"] = "[[Category:Articles containing simplified Chinese-language text]]", ["t"] = "[[Category:Articles containing traditional Chinese-language 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) if args["link"] then args["links"] = args["link"]; end if args["label"] then args["labels"] = args["label"]; end local uselinks = args["links"] ~= "no" -- whether to add links local uselabels = args["labels"] ~= "no" -- whether to have labels local capfirst = args["scase"] ~= nil local out = nil -- which term to put before the brackets local usebrackets = 0 -- whether to have bracketed terms local numargs = 0 local regionalvariant = nil if args["out"] then out = args["out"] usebrackets = 1 end local t1 = false -- whether traditional Chinese characters go first local j1 = false -- whether Cantonese Romanisations go first local poj1 = false -- whether Hokkien 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 if (testChar == "poj") then poj1 = 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", "tl", "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 if (poj1) then orderlist[4] = "poj" orderlist[5] = "tl" orderlist[6] = "p" orderlist[7] = "tp" orderlist[8] = "w" orderlist[9] = "j" orderlist[10] = "cy" orderlist[11] = "sl" 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 Tongyong pinyin use full name for Hanyu pinyin labels["p"] = "Hanyu Pinyin" end -- specify traditional Chinese variants if args["t_hk"] then args["t"] = args["t_hk"] regionalvariant = "HK" elseif args["t_tw"] then args["t"] = args["t_tw"] regionalvariant = "TW" 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 if out == "s" or out == "t" then out = "c" end 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 if out then for i, v in ipairs (orderlist) do -- shift `out` to the beginning of the order list if v == out then table.remove(orderlist, i) table.insert(orderlist, 1, v) break end end end if (out == "c" and args["s"]) then usebrackets = 2; 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 numargs = numargs + 1 -- 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" and part ~= "tr") then label = "[[" .. wlinks[part] .. "|" .. label .. "]]" end if (part == "l" or part == "tr") then label = "<abbr title=\"" .. wlinks[part] .. "\"><small>" .. label .. "</small></abbr>" else label = label .. ":" 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] .. (regionalvariant and "-" .. regionalvariant or "")} val = mw.text.tag({name="span",attrs=params, content=val}) elseif (part == "l") then local terms = "" -- put individual, potentially comma-separated glosses in single quotes -- (first strip leading and trailing whitespace and quotes, including bold/italic markup) for term in val:gmatch("[^;,]+") do term = mw.text.trim(term, "%s\"") terms = terms .. "'" .. term .. "', " end val = string.sub(terms, 1, -3) elseif (part == "tr") then -- put translations in double quotes -- (first strip leading and trailing spaces and quotes, including bold/italic markup) val = mw.text.trim(val, "%s\"'") val = """ .. val .. """ end if (italic[part]) then -- italicise val = "<i>" .. val .. "</i>" end if string.match(val, "</?sup>") then val = val.."[[Category:Pages using template Zh with sup tags]]" 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 if numargs == usebrackets then -- opening bracket after the `out` term body = body .. label .. val .. " (" else body = body .. label .. val .. "; " end end end if (body > "") then -- check for empty string body = string.sub(body, 1, -3) -- chop off final semicolon and space if out and numargs > usebrackets then -- closing bracket after the rest of the terms body = body .. ")" end return body 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
Summary:
Please note that all contributions to Cultopedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Cultopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Lang-zh/doc
(
edit
)
Search
Search
Editing
Module:Lang-zh
Add topic