Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Usage  



1.1  Use from other modules  







2 Tracking categories  














Module:Lang-zh






Azərbaycanca
تۆرکجه
Basa Bali

Basa Banyumasan

Bikol Central
Bosanski
Буряад
Dagbanli
الدارجة
فارسی
Føroyskt
Gaeilge


Hausa
Ilokano
Bahasa Indonesia
Jawa

Ladin

Magyar
ि
Македонски
Bahasa Melayu
Монгол



Oʻzbekcha / ўзбекча


Português
Scots
Shqip

Simple English
سنڌي
Slovenščina
کوردی
Српски / srpski
Suomi
Tagalog
ி
 


Türkçe
Türkmençe
Українська
اردو
ئۇيغۇرچە / Uyghurche
Tiếng Vit
Winaray
 

Edit links
 









Module
Talk
 

















Read
View source
View history
 








Tools
   


Actions  



Read
View source
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikisource
Wiktionary
 
















Appearance
   

 





Permanently protected module

From Wikipedia, the free encyclopedia
 


Usage

This is the module for the template {{Lang-zh}}. Its main features are described on that template's documentation page, refer to that for how to use it in articles. This documentation describes some particular features of the module.

The first table in the module lists the articles in which the template will put traditional Chinese first. Add articles to this list in the same fashion (the order doesn't matter) to include them. If you cannot edit the module because its protected use the {{edit template-protected}} template on its talk page to request a change.

Use from other modules

The module can be called directly from another module as well as a template. To do this first load the module

local Zh = require("Module:Lang-zh")._Zh

Then call it as follows, with the arguments in a table

local output = Zh{["c"] = "中国", ["p"] = "zhōngguó"}

Tracking categories

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ī",
 ["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ī",
 ["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",
 ["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"] = "[[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
 
 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", "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] = "p"
  orderlist[6] = "tp"
  orderlist[7] = "w"
  orderlist[8] = "j"
  orderlist[9] = "cy"
  orderlist[10] = "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 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
  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 .. "&colon;"
    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") then
    local terms = ""
    -- put individual, potentially comma-separated glosses in single-quotes
    for term in val:gmatch("[^;,]+") do
     term = string.gsub(term, "^([ \"']*)(.*)([ \"']*)$", "%2")
     terms = terms .. "&apos;" .. term .. "&apos;, "
    end
    val = string.sub(terms, 1, -3)
   elseif (part == "tr") then
    -- put translations in double quotes
    val = "&quot;" .. val .. "&quot;"
   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 .. "&rpar;"
  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 .. "&colon; "
   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

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Lang-zh&oldid=1218991062"

Categories: 
Modules subject to page protection
Modules that add a tracking category
Hidden category: 
Wikipedia template-protected modules
 



This page was last edited on 15 April 2024, at 02:53 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki