ᥝᥤᥱ ᥑᥤᥱ ᥚᥤᥱ ᥖᥤᥱ ᥕᥣᥱ
tddwiki
https://tdd.wikipedia.org/wiki/%E1%A5%9E%E1%A5%A8%E1%A5%9D%E1%A5%B4_%E1%A5%98%E1%A5%A3%E1%A5%B2_%E1%A5%96%E1%A5%A5%E1%A5%B0
MediaWiki 1.47.0-wmf.24
first-letter
ᥛᥤᥱ ᥖᥤᥱ ᥕᥣᥱ
ᥑᥪᥐ ᥖᥩᥢᥰ
ᥟᥧᥙᥱ ᥐᥧᥛ
ᥚᥧᥱ ᥕᥧᥒᥱ ᥖᥪᥰ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥚᥧᥱ ᥕᥧᥒᥱ ᥖᥪᥰ
ᥝᥤᥱ ᥑᥤᥱ ᥚᥤᥱ ᥖᥤᥱ ᥕᥣᥱ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥝᥤᥱ ᥑᥤᥱ ᥚᥤᥱ ᥖᥤᥱ ᥕᥣᥱ
ᥜᥣᥭᥱ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥜᥣᥭᥱ
ᥛᥤᥱ ᥖᥤᥱ ᥕᥣᥱ ᥝᥤᥱ ᥑᥤᥱ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥛᥤᥱ ᥖᥤᥱ ᥕᥣᥱ ᥝᥤᥱ ᥑᥤᥱ
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ
ᥘᥩᥒ ᥓᥩᥭ ᥗᥦᥛ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥘᥩᥒ ᥓᥩᥭ ᥗᥦᥛᥴ
ᥙᥫᥒ ᥗᥣᥢ
ᥟᥧᥙᥱ ᥐᥧᥛ ᥙᥫᥒ ᥗᥣᥢ
TimedText
TimedText talk
ᥛᥨᥝᥱ ᥓᥧᥰ
ᥟᥧᥙᥱ ᥐᥧᥛᥴ ᥛᥩᥱ ᥓᥧᥰ
Event
Event talk
ᥛᥨᥝᥱ ᥓᥧᥰ:Box-header
828
384
8043
1278
2026-10-20T01:17:29Z
Saimawnkham
28
ဢၢပ်ႉတဵတ်ႉၶေႃႈမုၼ်း
8043
Scribunto
text/plain
local getArgs = require('Module:Arguments').getArgs
local p = {}
---------- Config data ----------
local namedColours = mw.loadData( 'Module:Box-header/colours' )
local modes = {
lightest = { sat=0.10, val=1.00 },
light = { sat=0.15, val=0.95 },
normal = { sat=0.40, val=0.85 },
dark = { sat=0.90, val=0.70 },
darkest = { sat=1.00, val=0.45 },
content = { sat=0.04, val=1.00 },
grey = { sat=0.00 }
}
local min_contrast_ratio_normal_text = 7 -- i.e 7:1
local min_contrast_ratio_large_text = 4.5 -- i.e. 4.5:1
-- Template parameter aliases
-- Specify each as either a single value, or a table of values
-- Aliases are checked left-to-right, i.e. `['one'] = { 'two', 'three' }` is equivalent to using `{{{one| {{{two| {{{three|}}} }}} }}}` in a template
local parameterAliases = {
['1'] = 1,
['2'] = 2,
['colour'] = 'color'
}
---------- Dependecies ----------
local colourContrastModule = require('Module:Color contrast')
local hex = require( 'luabit.hex' )
---------- Utility functions ----------
local function getParam(args, parameter)
if args[parameter] then
return args[parameter]
end
local aliases = parameterAliases[parameter]
if not aliases then
return nil
end
if type(aliases) ~= 'table' then
return args[aliases]
end
for _, alias in ipairs(aliases) do
if args[alias] then
return args[alias]
end
end
return nil
end
local function setCleanArgs(argsTable)
local cleanArgs = {}
for key, val in pairs(argsTable) do
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val ~= '' then
cleanArgs[key] = val
end
else
cleanArgs[key] = val
end
end
return cleanArgs
end
-- Merge two tables into a new table. If the are any duplicate keys, the values
-- from the second overwrite the values from the first.
local function mergeTables(first, second)
local merged = {}
for key, val in pairs(first) do
merged[key] = val
end
for key, val in pairs(second) do
merged[key] = val
end
return merged
end
local function toOpenTagString(selfClosedHtmlObject)
local closedTagString = tostring(selfClosedHtmlObject)
local openTagString = mw.ustring.gsub(closedTagString, ' />$', '>')
return openTagString
end
local function normaliseHexTriplet(hexString)
if not hexString then return nil end
local hexComponent = mw.ustring.match(hexString, '^#(%x%x%x)$') or mw.ustring.match(hexString, '^#(%x%x%x%x%x%x)$')
if hexComponent and #hexComponent == 6 then
return mw.ustring.upper(hexString)
end
if hexComponent and #hexComponent == 3 then
local r = mw.ustring.rep(mw.ustring.sub(hexComponent, 1, 1), 2)
local g = mw.ustring.rep(mw.ustring.sub(hexComponent, 2, 2), 2)
local b = mw.ustring.rep(mw.ustring.sub(hexComponent, 3, 3), 2)
return '#' .. mw.ustring.upper(r .. g .. b)
end
return nil
end
---------- Conversions ----------
local function decimalToPaddedHex(number)
local prefixedHex = hex.to_hex(tonumber(number)) -- prefixed with '0x'
local padding = #prefixedHex == 3 and '0' or ''
return mw.ustring.gsub(prefixedHex, '0x', padding)
end
local function hexToDecimal(hexNumber)
return tonumber(hexNumber, 16)
end
local function RGBtoHexTriplet(R, G, B)
return '#' .. decimalToPaddedHex(R) .. decimalToPaddedHex(G) .. decimalToPaddedHex(B)
end
local function hexTripletToRGB(hexTriplet)
local R_hex, G_hex, B_hex = string.match(hexTriplet, '(%x%x)(%x%x)(%x%x)')
return hexToDecimal(R_hex), hexToDecimal(G_hex), hexToDecimal(B_hex)
end
-- per [[HSL and HSV#Converting_to_RGB]]
local function HSVtoRGB(H, S, V)
local C = V * S
local H_prime = H / 60
local X = C * ( 1 - math.abs(math.fmod(H_prime, 2) - 1) )
local R1, G1, B1
if H_prime <= 1 then
R1 = C
G1 = X
B1 = 0
elseif H_prime <= 2 then
R1 = X
G1 = C
B1 = 0
elseif H_prime <= 3 then
R1 = 0
G1 = C
B1 = X
elseif H_prime <= 4 then
R1 = 0
G1 = X
B1 = C
elseif H_prime <= 5 then
R1 = X
G1 = 0
B1 = C
elseif H_prime <= 6 then
R1 = C
G1 = 0
B1 = X
end
local m = V - C
local R = R1 + m
local G = G1 + m
local B = B1 + m
local R_255 = math.floor(R*255)
local G_255 = math.floor(G*255)
local B_255 = math.floor(B*255)
return R_255, G_255, B_255
end
-- per [[HSL and HSV#Hue and chroma]]
local function RGBtoHue(R_255, G_255, B_255)
local R = R_255/255
local G = G_255/255
local B = B_255/255
local M = math.max(R, G, B)
local m = math.min(R, G, B)
local C = M - m
local H_prime
if C == 0 then
return null
elseif M == R then
H_prime = math.fmod(((G - B)/C + 6), 6) -- adding six before taking mod ensures positive value
elseif M == G then
H_prime = (B - R)/C + 2
elseif M == B then
H_prime = (R - G)/C + 4
end
local H = 60 * H_prime
return H
end
local function nameToHexTriplet(name)
if not name then return nil end
local codename = mw.ustring.gsub(mw.ustring.lower(name), ' ', '')
return namedColours[codename]
end
---------- Choose colours ----------
local function calculateColours(H, S, V, minContrast)
local bgColour = RGBtoHexTriplet(HSVtoRGB(H, S, V))
local textColour = colourContrastModule._greatercontrast({bgColour})
local contrast = colourContrastModule._ratio({ bgColour, textColour })
if contrast >= minContrast then
return bgColour, textColour
elseif textColour == '#FFFFFF' then
-- make the background darker and slightly increase the saturation
return calculateColours(H, math.min(1, S+0.005), math.max(0, V-0.03), minContrast)
else
-- make the background lighter and slightly decrease the saturation
return calculateColours(H, math.max(0, S-0.005), math.min(1, V+0.03), minContrast)
end
end
local function makeColours(hue, modeName)
local mode = modes[modeName]
local isGrey = not(hue)
if isGrey then hue = 0 end
local borderSat = isGrey and modes.grey.sat or 0.15
local border = RGBtoHexTriplet(HSVtoRGB(hue, borderSat, 0.75))
local titleSat = isGrey and modes.grey.sat or mode.sat
local titleBackground, titleForeground = calculateColours(hue, titleSat, mode.val, min_contrast_ratio_large_text)
local contentSat = isGrey and modes.grey.sat or modes.content.sat
local contentBackground, contentForeground = calculateColours(hue, contentSat, modes.content.val, min_contrast_ratio_normal_text)
return border, titleForeground, titleBackground, contentForeground, contentBackground
end
local function findHue(colour)
local colourAsNumber = tonumber(colour)
if colourAsNumber and ( -1 < colourAsNumber ) and ( colourAsNumber < 360) then
return colourAsNumber
end
local colourAsHexTriplet = normaliseHexTriplet(colour) or nameToHexTriplet(colour)
if colourAsHexTriplet then
return RGBtoHue(hexTripletToRGB(colourAsHexTriplet))
end
return null
end
local function normaliseMode(mode)
if not mode or not modes[mw.ustring.lower(mode)] or mw.ustring.lower(mode) == 'grey' then
return 'normal'
end
return mw.ustring.lower(mode)
end
---------- Build output ----------
local function boxHeaderOuter(args)
local border_top_width = getParam(args, 'border-top') or getParam(args, 'border-width')
if border_top_width then border_top_width = border_top_width .. 'px' end
local border_left_width = getParam(args, 'border-width')
if border_left_width then border_left_width = border_left_width .. 'px' end
local border_right_width = getParam(args, 'border-width')
if border_right_width then border_right_width = border_right_width .. 'px' end
local tag = mw.html.create('div', {selfClosing = true})
:addClass('box-header-title-container flex-columns-noflex')
:css({
['border-style'] = getParam(args, 'border-type'),
['border-color'] = getParam(args, 'titleborder') or getParam(args, 'border'),
background = getParam(args, 'titlebackground'),
color = getParam(args, 'titleforeground'),
padding = getParam(args, 'padding'),
['text-align'] = getParam(args, 'title-align'),
['font-family'] = getParam(args, 'font-family'),
['font-size'] = getParam(args, 'titlefont-size'),
})
:css('border-top-width', border_top_width)
:css('border-left-width', border_left_width)
:css('border-right-width', border_right_width)
:css('padding-top', getParam(args, 'padding-top'))
:css('padding-left', getParam(args, 'padding-left'))
:css('padding-right', getParam(args, 'padding-right'))
:css('padding-bottom', getParam(args, 'padding-bottom'))
:css('border-radius', getParam(args, 'title-border-radius'))
return toOpenTagString(tag)
end
local function boxHeaderTopLinks(args)
local tag = mw.html.create('div', {selfClosing = true})
:addClass('box-header-top plainlinks noprint')
:css({
['font-size'] = getParam(args, 'font-size'),
color = getParam(args, 'titleforeground')
})
return toOpenTagString(tag)
end
local function boxHeaderEditLink(args)
local page = getParam(args, 'editpage')
if not page or page == '{{{2}}}'
then
return ''
end
local tag = mw.html.create('span')
:addClass('box-header-viewedit')
:css({ color = getParam(args, 'titleforeground') })
:wikitext('edit')
local linktext = tostring(tag)
local linktarget = tostring(mw.uri.fullUrl(page, {action='edit', section=getParam(args, 'section')}))
return '[' .. linktarget .. ' ' .. linktext .. '] '
end
local function boxHeaderViewLink(args)
local tag = mw.html.create('span')
:addClass('box-header-viewedit')
:css({ color = getParam(args, 'titleforeground') })
:wikitext('view')
local linktext = tostring(tag)
local linktarget = ':' .. getParam(args, 'viewpage')
return "<b>·</b> [[" .. linktarget .. '|' .. linktext .. ']] '
end
local function boxHeaderTitle(args)
local tagName = getParam(args, 'SPAN') and 'span' or 'h2'
local tag = mw.html.create(tagName)
:addClass('box-header-title')
:css({
['font-family'] = getParam(args, 'title-font-family'),
['font-size'] = getParam(args, 'title-font-size'),
['font-weight'] = getParam(args, 'title-font-weight'),
color = getParam(args, 'titleforeground')
})
:wikitext(getParam(args, 'title'))
if getParam(args, 'extra') then
local rules = mw.text.split(getParam(args, 'extra'), ';', true)
for _, rule in pairs(rules) do
local parts = mw.text.split(rule, ':', true)
local prop = parts[1]
local val = parts[2]
if prop and val then
tag:css(prop, val)
end
end
end
return tostring(tag)
end
local function boxBody(args)
local border_width = getParam(args, 'border-width')
if border_width then border_width = border_width .. 'px' end
local border_top_width = getParam(args, 'border-top')
if border_top_width then border_top_width = border_top_width .. 'px' end
local tag = mw.html.create('div', {selfClosing = true})
:addClass('box-header-body')
:css({
['border-color'] = getParam(args, 'border'),
['border-width'] = border_width,
background = getParam(args, 'background'),
opacity = getParam(args, 'background-opacity'),
color = getParam(args, 'foreground'),
['text-align'] = getParam(args, 'text-align'),
padding = getParam(args, 'padding'),
})
:css('border-top-width', border_top_width)
:css('padding-top', getParam(args, 'padding-top'))
:css('border-radius', getParam(args, 'border-radius'))
return toOpenTagString(tag)
end
local function contrastCategories(args)
local cats = ''
local titleText = nameToHexTriplet(getParam(args, 'titleforeground')) or normaliseHexTriplet(getParam(args, 'titleforeground')) or '#000000'
local titleBackground = nameToHexTriplet(getParam(args, 'titlebackground')) or normaliseHexTriplet(getParam(args, 'titlebackground')) or '#bcbcbc'
local titleContrast = colourContrastModule._ratio({titleBackground, titleText})
local insufficientTitleContrast = type(titleContrast) == 'number' and ( titleContrast < min_contrast_ratio_large_text )
local bodyText = nameToHexTriplet(getParam(args, 'foreground')) or normaliseHexTriplet(getParam(args, 'foreground')) or '#000000'
local bodyBackground = nameToHexTriplet(getParam(args, 'background')) or normaliseHexTriplet(getParam(args, 'background')) or '#fefeef'
local bodyContrast = colourContrastModule._ratio({bodyBackground, bodyText})
local insufficientBodyContrast = type(bodyContrast) == 'number' and ( bodyContrast < min_contrast_ratio_normal_text )
if insufficientTitleContrast and insufficientBodyContrast then
return '[[Category:Box-header with insufficient title contrast]][[Category:Box-header with insufficient body contrast]]'
elseif insufficientTitleContrast then
return '[[Category:Box-header with insufficient title contrast]]'
elseif insufficientBodyContrast then
return '[[Category:Box-header with insufficient body contrast]]'
else
return ''
end
end
---------- Main functions / entry points ----------
-- Entry point for templates (manually-specified colours)
function p.boxHeader(frame)
local args = getArgs(frame)
local page = args.editpage
if not args.editpage or args.editpage == '' then
page = mw.title.getCurrentTitle().prefixedText
end
local output = p._boxHeader(args, page)
if mw.ustring.find(output, '{') then
return frame:preprocess(output)
end
return output
end
-- Entry point for modules (manually-specified colours)
function p._boxHeader(_args, page)
local args = setCleanArgs(_args)
if page and not args.editpage then
args.editpage = page
end
if not args.title then
args.title = '{{{title}}}'
end
local output = {}
table.insert(output, mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Box-header/styles.css' }
})
table.insert(output, boxHeaderOuter(args))
if not getParam(args, 'EDITLINK') then
table.insert(output, boxHeaderTopLinks(args))
if not getParam(args, 'noedit') then
table.insert(output, boxHeaderEditLink(args))
end
if getParam(args, 'viewpage') then
table.insert(output, boxHeaderViewLink(args))
end
if getParam(args, 'top') then
table.insert(output, getParam(args, 'top') .. ' ')
end
table.insert(output, '</div>')
end
table.insert(output, boxHeaderTitle(args))
table.insert(output, '</div>')
table.insert(output, boxBody(args))
if not getParam(args, 'TOC') then
table.insert(output, '__NOTOC__')
end
if not getParam(args, 'EDIT') then
table.insert(output, '__NOEDITSECTION__')
end
table.insert(output, contrastCategories(args))
return table.concat(output)
end
-- Entry point for templates (automatically calculated colours)
function p.autoColour(frame)
local args = getArgs(frame)
local colourParam = getParam(args, 'colour')
local generatedColour = nil
if not colourParam or colourParam == '' then
-- convert the root page name into a number and use that
local root = mw.title.getCurrentTitle().rootPageTitle.prefixedText
local rootStart = mw.ustring.sub(root, 1, 12)
local digitsFromRootStart = mw.ustring.gsub(rootStart, ".", function(s) return math.fmod(string.byte(s, 2) or string.byte(s, 1), 10) end)
local numberFromRoot = tonumber(digitsFromRootStart, 10)
generatedColour = math.fmod(numberFromRoot, 360)
end
local output = p._autoColour(args, generatedColour)
if mw.ustring.find(output, '{') then
return frame:preprocess(output)
end
return output
end
-- Entry point for modules (automatically calculated colours)
function p._autoColour(_args, generatedColour)
local args = setCleanArgs(_args)
local hue = generatedColour or findHue(getParam(args, 'colour'))
local mode = normaliseMode(getParam(args, 'mode'))
local border, titleForeground, titleBackground, contentForeground, contentBackground = makeColours(hue, mode)
local boxTemplateArgs = mergeTables(args, {
title = getParam(args, '1') or '{{{1}}}',
editpage = getParam(args, '2') or '',
noedit = getParam(args, '2') and '' or 'yes',
border = border,
titleforeground = titleForeground,
titlebackground = titleBackground,
foreground = contentForeground,
background = contentBackground
})
return p._boxHeader(boxTemplateArgs)
end
return p
fon6b7ncbv18ms3vo7s43r3ehqxu35y
ᥑᥣᥛᥰ ᥑᥥᥱ
0
2650
8044
7982
2026-10-20T01:21:02Z
Saimawnkham
28
ᥟᥣᥙᥳ ᥖᥥᥖᥳ ᥑᥩᥲ ᥛᥧᥢᥰ
8044
wikitext
text/x-wiki
{{Infobox language
| name = ᥑᥣᥛᥰ ᥑᥥᥱ
| states = [[China]] (including [[Mainland China]], [[Hong Kong]], and [[Macau]]),<br />[[Malaysia]],<br />[[Singapore]],<br />[[Taiwan]]
| ethnicity = [[Han Chinese]], [[Hui people|Hui]]
| speakers = {{sigfig|1.390940300|3}} billion
| date = 2017–2024
| ref = <ref name=e28>{{e28|zho}}</ref>
| familycolor = Sino-Tibetan
| fam2 = [[Sinitic languages|Sinitic]]
| ancestor = [[Proto-Sino-Tibetan]]
| ancestor2 = [[Old Chinese]]
| ancestor3 = [[Eastern Han Chinese]]
| ancestor4 = [[Middle Chinese]]{{efn|The colloquial layers of many varieties, particularly Min varieties, reflect features that predate Middle Chinese.{{sfnmp|Norman|1988|1pp=211–214|Pulleyblank|1984|2p=3}}}}
| dia1 = [[Mandarin Chinese|Mandarin]]
| dia2 = [[Jin Chinese|Jin]]
| dia3 = [[Wu Chinese|Wu]]
| dia4 = [[Gan Chinese|Gan]]
| dia5 = [[Xiang Chinese|Xiang]]
| dia6 = [[Min Chinese|Min]]
| dia7 = [[Hakka Chinese|Hakka]]
| dia8 = [[Yue Chinese|Yue]]
| dia9 = [[Pinghua Chinese|Pinghua]]
| dia10 = [[Huizhou Chinese|Huizhou]]
| stand1 = [[Standard Chinese]]
| stand2 = [[Standard Cantonese]]
| stand3 = [[Taiwanese Hokkien]]
| script = {{hlist|[[Chinese characters]]|[[Bopomofo]]|[[Pinyin]]|[[Xiao'erjing]]|[[Dungan alphabets|Dungan]]|[[Chinese braille (disambiguation)|Chinese Braille]]|[[ʼPhags-pa]]}}
| nation = {{hlist|China{{efn|Standard Chinese is an official language throughout China. Cantonese is a co-official language specifically in Hong Kong and Macao.}}|Taiwan{{efn|Mandarin, Hakka, and Hokkien}}|Singapore}}
| agency = {{indented plainlist|
* China: [[State Language Commission]]
* Taiwan: [[National Languages Committee]], [[Hakka Affairs Council]]
* Malaysia: [[Chinese Language Standardisation Council]]
* Singapore: [[Ministry of Education (Singapore)|Ministry of Education]], [[Promote Mandarin Council]]
}}
| iso1 = zh
| iso2b = chi
| iso2t = zho
| iso3 = zho
| image = Chineselanguage.svg
| imagescale = 0.5
| imagecaption = {{tlit|zh|Hànyǔ}}{{efn|name=Hanyu lit|{{lit|[[Han Chinese|Han]] language}}}} written in [[Traditional Chinese characters|traditional]] (top) and [[Simplified Chinese characters|simplified]] (middle) forms, {{tlit|zh|Zhōngwén}}{{efn|name=Zhongwen lit|{{lit|Chinese writing}}}} (bottom)
| image_class = skin-invert-image
| notice = IPA
| listclass = hlist
| glotto = sini1245
| glottorefname = Sinitic
| map = Mandarin sphere.svg
| mapscale = 1
| mapcaption = Countries where Chinese is spoken as L1 or L2
{{legend|#0E0069|Chinese is the majority native language}}
{{legend|#439DD4|Chinese is the statutory or de facto national language}}
{{legend|#9FCEFF|Countries with more than 1,000,000 speakers}}
{{legend|#D5E8FF|Countries with more than 500,000 speakers}}
{{legend|#F7D5FF|Countries with more than 100,000 speakers}}
| module = {{Infobox Chinese
| child = yes
| headercolor = {{Infobox language/family-color|Sino-Tibetan}}
| order = st
| s = {{linktext|汉语}}
| t = {{linktext|漢語}}
| l = [[Han Chinese|Han]] language
| p = Hànyǔ
| gr = Hannyeu
| w = {{tonesup|Han4-yu3}}
| mi = {{IPAc-cmn|h|an|4|.|yu|3}}
| myr = Hàn-yǔ
| tp = Hàn-yǔ
| h = Hon Ngi
| j = Hon3 jyu5
| y = Honyúh
| gd = {{tonesup|Hon3 yü5}}
| ci = {{IPA|yue|hɔ̄ːn.jy̬ː}}
| buc = Háng-ngṳ̄
| poj = {{ubl|Hàn-gí|Hàn-gú}}
| wuu = {{tonesup|Hoe3 nyiu2}}
| c2 = {{linktext|lang=zh|中文}}
| l2 = [[Names of China|Chinese]] writing
| p2 = Zhōngwén
| gr2 = Jongwen
| h2 = Chung-Vun
| w2 = {{tonesup|Chung1-wen2}}
| mi2 = {{IPAc-cmn|zh|ong|1|.|wen|2}}
| myr2 = Jūng-wén
| tp2 = Jhong-wún
| buc2 = Dṳng-ùng
| poj2 = Tiong-bûn
| wuu2 = {{tonesup|Tson1 ven1}}
| j2 = Zung1 man4*2
| y2 = Jūngmán
| gd2 = Zung<sup>1</sup> men<sup>4</sup>*<sup>2</sup>
| s3 = {{linktext|汉文}}
| t3 = {{linktext|漢文}}
| l3 = Han writing
| p3 = Hànwén
| bpmf = {{bpmfsp|ㄏㄢˋ|ㄩˇ}}
| bpmf2 = {{bpmfsp|ㄓㄨㄥ|ㄨㄣˊ}}
| bpmf3 = {{bpmfsp|ㄏㄢˋ|ㄨㄣˊ}}
| gr3 = Hannwen
| w3 = {{tonesup|Han4-wen2}}
| tp3 = Hàn-wún
| mi3 = {{IPAc-cmn|h|an|4|.|wen|2}}
| ci2 = {{ubl|{{IPAc-yue|z|ong|1|-|m|an|4}}|{{IPAc-yue|z|ong|1|-|m|an|2}}}}
}}
}}
[[File:Chinese language tree.png|left|thumb|ᥘᥩᥒᥲ ᥑᥪᥢᥲ ᥕᥬᥱ ᥛᥬᥱ ᥔᥧᥒᥴ ᥐᥣᥛᥰ ᥘᥣᥖᥲ ᥑᥦᥱ ᥘᥣᥭᥴ ᥘᥣᥭᥴ ᥛᥥᥝᥰ]]'''ᥑᥣᥛᥰ ᥑᥥᥱ''' (汉语 - 漢語 - Hànyǔ - ᥞᥣᥢᥲ ᥕᥤᥱ, 华语 - 華語 - Huáyǔ - ᥑᥩᥲ ᥕᥤᥱ ᥞᥪᥴ 中文 - Zhōngwén - ᥓᥨᥒ ᥝᥫᥢᥴ) ᥙᥥᥢ ᥘᥫᥒ ᥘᥬᥰ[[:th:ตระกูลภาษาจีน-ทิเบต|ᥓᥫᥳ ᥑᥫᥰ ᥑᥣᥛᥰ ᥑᥥᥱ-ᥖᥤᥳ ᥙᥥᥖᥱ]] ᥐᥨᥢᥰ ᥑᥥᥱ ᥖᥤ ᥘᥛᥴ ᥖᥪᥰ ᥑᥣᥛᥰ ᥑᥥᥱ ᥘᥣᥖ ᥙᥩᥖᥴ ᥖᥣᥒᥰ ᥝᥣ ᥙᥥᥢ[[:th:ภาษา|ᥑᥣᥛᥰ]]<nowiki/>ᥘᥥᥝ ᥖᥒᥰ ᥛᥨᥖᥴ ᥐᥣᥱ ᥞᥝᥳ ᥑᥣᥛᥰ ᥘᥬᥰ ᥓᥧᥛᥰ ᥑᥣᥛᥰ ᥑᥥᥱ ᥙᥥᥢ ᥑᥣᥛᥰ ᥖᥤ ᥛᥤᥰ ᥔᥥᥒᥴ ᥖᥒᥰ ᥟᥛᥱ ᥟᥣᥢᥱ ᥘᥫᥒᥱ ᥔᥥᥒᥴ ᥛᥥᥝᥰ ᥘᥬ ᥐᥩᥲ ᥘᥤ ᥕᥒᥰ ᥛᥤᥰ ᥘᥩᥒ ᥙᥦᥐᥱ ᥙᥫᥒ ᥐᥢ ᥑᥣᥛᥰ ᥘᥣᥖ ᥖᥒᥰ ᥑᥣᥛᥰ ᥚᥬᥴ ᥛᥢᥰ ᥘᥛᥴ ᥕᥧᥱ ᥘᥩᥒ ᥙᥦᥐᥱ ᥙᥫᥒ ᥓᥫᥰ ᥘᥭᥳ ᥖᥦᥐ ᥘᥭᥲ ᥖᥒᥰ ᥘᥩᥒ ᥙᥦᥐᥱ ᥙᥫᥒ ᥘᥬᥰ ᥐᥥ ᥑᥣᥛᥰ ᥑᥩᥒ[[:th:ภาษากลุ่มโรมานซ์|ᥑᥣᥛᥰ ᥓᥧᥛᥰ ᥘᥨᥝ ᥛᥣᥢᥱ]] ᥞᥝᥰ ᥐᥩᥳ ᥛᥦᥒᥱ ᥑᥣᥛᥰ ᥘᥣᥖ ᥑᥩᥒᥴ ᥑᥥᥱ ᥘᥭᥲ 6 ᥗᥪᥒᥴ 12 ᥓᥧᥛᥰ ᥑᥪᥢᥲ ᥕᥧᥱ ᥘᥬᥰ ᥘᥩᥐᥴ ᥖᥤ ᥓᥬᥳ ᥛᥦᥒᥱ ᥖᥤ ᥙᥥᥢ ᥖᥤ ᥞᥧᥳ ᥓᥐᥴ ᥘᥤ ᥕᥣᥒᥱ ᥓᥧᥛᥰ ᥛᥦᥢᥰ ᥖᥣ ᥗᥤᥢᥱ ᥓᥧᥛᥰ ᥝᥧᥰ ᥖᥒᥰ ᥓᥧᥛᥰ ᥐᥩᥒᥰ ᥖᥨᥒ ᥕᥒ ᥙᥥᥢ ᥖᥤ ᥖᥨᥝᥳ ᥗᥥᥒᥴ ᥐᥢ ᥕᥧᥱ ᥕᥣᥛᥰ ᥙᥖ ᥓᥧᥳ ᥙᥢᥱ ᥝᥣ ᥑᥣᥛᥰ ᥘᥣᥖ ᥛᥣᥒ ᥓᥧᥛᥰ ᥐᥩᥲ ᥘᥨᥝᥱ ᥓᥖᥱ ᥙᥥᥢ"ᥑᥣᥛᥰ" ᥞᥪᥴ ᥙᥥᥢ ᥐᥩᥭᥰ ᥙᥥᥢ "ᥔᥥᥒᥴ"
ᥞᥨᥝᥴ ᥐᥨᥢᥰ ᥑᥫᥰ 1/5 ᥖᥒᥰ ᥘᥨᥐ ᥘᥣᥖ ᥑᥣᥛᥰ ᥑᥥᥱ ᥛᥥᥝᥰ ᥘᥬ ᥛᥥᥝᥰ ᥘᥫᥒ ᥙᥥᥢ ᥚᥣᥱ ᥔᥣᥱ ᥑᥣᥛᥰ ᥛᥥ ᥞᥥᥖᥱ ᥞᥬᥲ ᥙᥥᥢ ᥑᥣᥛᥰ ᥖᥤ ᥛᥤᥰ ᥐᥨᥢᥰ ᥘᥣᥖ ᥙᥥᥢ ᥑᥣᥛᥰ ᥛᥥ ᥘᥛᥴ ᥗᥪᥒᥴ ᥔᥧᥖᥴ ᥘᥐᥴ ᥔᥥᥒᥴ ᥘᥣᥖ ᥖᥤ ᥖᥪᥰ ᥙᥥᥢ ᥘᥩᥐᥴ ᥗᥣᥢᥳ ᥐᥩᥰ ᥘᥩᥐᥴ ᥔᥥᥒᥴ ᥙᥫᥲ ᥓᥤᥢ ᥙᥐ ᥐᥤᥒᥱ ᥞᥪᥴ ᥑᥣᥛᥰ ᥞᥣᥢᥲ ᥐᥩᥲ ᥕᥧᥱ ᥘᥬᥰ ᥓᥧᥛᥰ ᥑᥣᥛᥰ ᥑᥥᥱ ᥛᥦᥢᥰ ᥖᥣᥱ ᥘᥤᥢᥱ [[:th:ภาษาจีนกลาง|ᥑᥣᥛᥰ ᥑᥥᥱ ᥐᥣᥒ]] ᥞᥪᥴ ᥑᥣᥛᥰ ᥑᥥᥱ ᥛᥦᥢᥰ ᥖᥣ ᥘᥤᥢᥱ (Standard Mandarin) ᥙᥥᥢ[[:th:ภาษาทางการ|ᥑᥣᥛᥰ ᥙᥥᥢ ᥘᥐᥴ ᥐᥣᥢ]]<nowiki/>ᥑᥩᥒᥴ ᥖᥒᥰ[[ᥛᥫᥒᥰ ᥑᥥᥱ|ᥛᥫᥒᥰ ᥞᥨᥛ ᥖᥧᥛ ᥑᥥᥱ]]<nowiki/>ᥞᥪᥴ ᥗᥣᥭᥱ ᥝᥣᥢ ᥙᥥᥢ ᥘᥫᥒ ᥘᥬᥰ ᥑᥣᥛᥰ ᥖᥣᥒᥰ ᥘᥐᥴ 4 ᥑᥣᥛᥰ ᥖᥣᥒᥰ ᥐᥣᥢ ᥘᥐᥴ ᥑᥩᥒᥴ[[ᥛᥫᥒᥰ ᥔᥤᥒᥱ ᥐᥣ ᥙᥨᥝᥱ]] (ᥞᥨᥛ ᥖᥒᥰ[[ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥣ ᥘᥥᥖᥳ|ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥤ ᥘᥥᥖ]] [[:th:ภาษามลายู|ᥑᥣᥛᥰ ᥛᥣ ᥘᥣ ᥕᥧᥳ]] ᥖᥒᥰ[[:th:ภาษาทมิฬ|ᥑᥣᥛᥰ ᥗᥣᥳ ᥛᥤᥢᥱ]]) ᥖᥒᥰ ᥙᥥᥢ ᥘᥫᥒ ᥘᥬᥰ 6 ᥑᥣᥛᥰ ᥓᥬᥳ ᥘᥬᥰ[[:th:องค์การสหประชาชาติ|ᥖᥫᥒᥰ ᥐᥣᥰ ᥙᥧᥢᥳ ᥖᥤ ᥙᥣᥱ]] (ᥞᥨᥛ ᥖᥒᥰ [[ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥣ ᥘᥤᥖ|ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥣ ᥘᥥᥖ]] [[ᥑᥣᥛᥰ ᥟᥣ ᥘᥙ]] [[:th:ภาษาฝรั่งเศส|ᥑᥣᥛᥰ ᥜᥣ ᥘᥒᥱ ᥔᥥᥖᥱ]] [[:th:ภาษารัสเซีย|ᥑᥣᥛᥰ ᥘᥖ ᥔᥥᥰ]] ᥖᥒᥰ[[:th:ภาษาสเปน|ᥑᥣᥛᥰ ᥔᥣ ᥙᥥᥢ]]) ᥑᥣᥛᥰ ᥑᥥᥱ ᥐᥩᥒᥰ ᥖᥧᥒ ᥙᥥᥢ ᥑᥣᥛᥰ ᥘᥐᥴ ᥐᥤᥢ ᥖᥣᥒᥰ [[:th:ฮ่องกง|ᥞᥩᥒᥱ ᥐᥩᥒᥱ]] (ᥞᥨᥛ ᥖᥒᥰ[[ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥣ ᥘᥤᥖ|ᥑᥣᥛᥰ ᥟᥤᥒᥰ ᥐᥣ ᥘᥥᥖ]]) ᥖᥒᥰ[[:th:มาเก๊า|ᥛᥣ ᥐᥝᥰ]] (ᥞᥨᥛ ᥖᥒᥰ[[:th:ภาษาโปรตุเกส|ᥑᥣᥛᥰ ᥙᥨᥝ ᥖᥧᥳ ᥐᥥᥖᥱ]])
ᥘᥫᥴ ᥔᥤᥴ ᥘᥭᥳ ᥘᥣᥭᥰ ᥖᥦᥛᥲ ᥕᥒ ᥘᥭᥲ ᥘᥦᥐ ᥙᥦᥢᥱ ᥖᥣᥛᥰ ᥓᥩᥛᥰ ᥑᥣᥝᥰ ᥕᥣᥛᥰ ᥐᥩᥭᥰ ᥘᥩᥒ ᥘᥦᥐ ᥘᥣᥭ ᥑᥣᥛᥰ ᥖᥦᥛᥲ ᥗᥫᥒᥰ ᥔᥤᥴ ᥘᥩᥒ ᥘᥦᥐ ᥘᥣᥭ ᥑᥣᥛᥰ ᥘᥣᥖ ᥖᥥᥳ ᥓᥒᥱ ᥖᥤᥴ ᥟᥛᥱ ᥓᥐᥴ ᥐᥖᥱ ᥘᥩᥒ ᥘᥦᥐ ᥘᥣᥭ ᥑᥣᥛᥰ ᥘᥣᥖ ᥖᥒᥰ ᥖᥤ ᥘᥐᥴ ᥘᥬᥰ ᥙᥖ ᥓᥧᥳ ᥙᥢᥱ ᥑᥣᥛᥰ ᥑᥥᥱ ᥓᥬᥳ ᥖᥨᥝ ᥘᥣᥭᥰ ᥘᥩᥐ ᥙᥫᥒ2 ᥚᥧᥒᥱ ᥛᥥᥝᥰ ᥖᥒᥰ ᥙᥧᥢᥳ ᥖᥤ ᥙᥣᥱ ᥐᥩᥭᥰ ᥘᥭᥲ[[:th:อักษรจีนตัวเต็ม|ᥘᥣᥭᥰ ᥑᥥᥱ ᥖᥨᥝ ᥖᥥᥛ]] ᥖᥒᥰ [[:th:อักษรจีนตัวย่อ|ᥖᥨᥝ ᥘᥣᥭᥰ ᥑᥥᥱ ᥖᥨᥝ ᥒᥣᥭ]]
[[ᥜᥣᥭᥱ:Map of sinitic languages full-th.svg|alt=|thumb|295x295px|ᥘᥣᥲ ᥖᥤ ᥙᥦᥰ ᥘᥥᥴ ᥟᥩᥒᥲ ᥖᥤ ᥛᥤᥰ ᥓᥧᥛᥰ ᥐᥨᥢᥰ ᥘᥣᥖ ᥑᥣᥛᥰ ᥑᥥᥱ ᥘᥣᥭᥴ ᥘᥣᥭᥴ ᥘᥬᥰ[[ᥛᥫᥒᥰ ᥑᥥᥱ|ᥖᥫᥒᥰ ᥛᥫᥒᥰ ᥑᥥᥱ]]]]
==ᥚᥪᥢᥴ ᥟᥤᥒᥴ==
{{Reflist}}
<references group="lower-alpha"/>
01jru82zw2qaduk9665lobiuvxttjwj
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Flag data ᥛᥫᥒᥰ ᥑᥥᥱ
10
2655
7993
2026-10-20T00:32:34Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Country data China]]
7993
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Country data China]]
f5zq1afi1d87qrdceai4507sjb90pxw
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Country data PRC
10
2656
7994
2026-10-20T00:32:40Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Country data China]]
7994
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Country data China]]
f5zq1afi1d87qrdceai4507sjb90pxw
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Ethnologue28
10
2657
7995
2026-10-20T00:38:47Z
Saimawnkham
28
Created page with "{{#if: {{{1|}}} |[https://www.ethnologue.com/language/{{{1|}}} {{{2|{{PAGENAME}}}}}] at ''[[Ethnologue]]'' (28th ed., 2025) {{closed access}} |{{cite book|editor-last1 = Eberhard| editor-first1 = David M.| editor-last2 = Simons| editor-first2 = Gary F.| editor-last3 = Fennig| editor-first3 = Charles D.| year=2025|title=Ethnologue: Languages of the World|edition=28th|location=Dallas, Texas|publisher=SIL International|url=https://www.ethnologue.com}} }}<includeonly>Cate..."
7995
wikitext
text/x-wiki
{{#if: {{{1|}}}
|[https://www.ethnologue.com/language/{{{1|}}} {{{2|{{PAGENAME}}}}}] at ''[[Ethnologue]]'' (28th ed., 2025) {{closed access}}
|{{cite book|editor-last1 = Eberhard| editor-first1 = David M.| editor-last2 = Simons| editor-first2 = Gary F.| editor-last3 = Fennig| editor-first3 = Charles D.| year=2025|title=Ethnologue: Languages of the World|edition=28th|location=Dallas, Texas|publisher=SIL International|url=https://www.ethnologue.com}}
}}<includeonly>[[Category:Language articles citing Ethnologue 28]]</includeonly><noinclude>
{{documentation}}
</noinclude>
sjbntqwgl2gle069n1owa1ofc9j6pxa
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Ethnologue28/doc
10
2658
7996
2026-10-20T00:40:18Z
Saimawnkham
28
Created page with "{{Documentation subpage<noinclude>|override={{lc:{{SUBPAGENAME}}}}</noinclude>}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata --> <includeonly> {{Template shortcut|E{{#invoke:string|sub|{{BASEPAGENAME}}|11}}}}</includeonly> '''{{NAMESPACE}}:<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>Ethnologue''N''</noinclude>''' is designed for use in the reference section of a language article. It links to the appropriate artic..."
7996
wikitext
text/x-wiki
{{Documentation subpage<noinclude>|override={{lc:{{SUBPAGENAME}}}}</noinclude>}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata -->
<includeonly>
{{Template shortcut|E{{#invoke:string|sub|{{BASEPAGENAME}}|11}}}}</includeonly>
'''{{NAMESPACE}}:<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>Ethnologue''N''</noinclude>''' is designed for use in the reference section of a language article. It links to the appropriate article at ''[[Ethnologue]]'', <includeonly>{{ordinal|{{#invoke:string|sub|{{BASEPAGENAME}}|11}}}}</includeonly><noinclude>''N''th</noinclude> edition.
== ᥘᥩᥒᥲ ᥓᥬᥳ ᥖᥪᥰ ==
<noinclude>{{memo|Examples are omitted when viewed on the shared doc page for technical reasons; see them at e.g. [[Template:Ethnologue14]].}}</noinclude>
; One parameter
: Replace <code>XYZ</code> with the [[ISO 639-3]] code for the language. The page name will be used as the [[link text]]
<includeonly>: {{tld|{{BASEPAGENAME}}|XYZ}}
: {{tld|E{{#invoke:string|sub|{{BASEPAGENAME}}|11}}|XYZ}}</includeonly>
; Two parameters
: Replace <code>ABC</code> with the link text to be displayed. This may be useful if the ''Ethnologue'' name differs from the page name of the Wikipedia article.
<includeonly>: {{tld|{{BASEPAGENAME}}|XYZ|ABC}}
: {{tld|E{{#invoke:string|sub|{{BASEPAGENAME}}|11}}|XYZ|ABC}}</includeonly>
; No parameters
: The template will revert to a generic citation and link to ''Ethnologue''
<includeonly>: {{tld|{{BASEPAGENAME}}}}
: {{tld|E{{#invoke:string|sub|{{BASEPAGENAME}}|11}}}}</includeonly>
== ᥖᥨᥝᥴ ᥕᥣᥒᥱ ==
; One parameter
<includeonly>: {{tld|{{BASEPAGENAME}}|eng}}
: {{ {{BASEPAGENAME}}|eng}}</includeonly>
; Two parameters
<includeonly>: {{tld|{{BASEPAGENAME}}|eng|English}}
: {{ {{BASEPAGENAME}}|eng|English}}</includeonly>
; No parameters
<includeonly>: {{tld|{{BASEPAGENAME}}}}
: {{ {{BASEPAGENAME}} }}</includeonly>
==ᥑᥩᥲ ᥛᥣᥭᥴ ᥖᥩᥒᥰ==
For a reference to the ''Ethnologue'' population figures, enter "e<includeonly>{{#invoke:string|sub|{{BASEPAGENAME}}|11}}</includeonly><noinclude>(number)</noinclude>" in the <code>ref</code> parameter of {{tl|Infobox language}}. This will automatically generate a reference based on this template, and is easier for other editors to update.
==See also==
* {{tl|Ethnolink}}, for inline links when the data is not date-dependent<!--
-->{{#ifexist:Template:Ethnologue{{padleft:{{#expr:{{#invoke:string|sub|{{BASEPAGENAME}}|11}}-1}}|2}}|
* {{tl|Ethnologue{{padleft:{{#expr:{{#invoke:string|sub|{{BASEPAGENAME}}|11}}-1}}|2}}}}, <!--
-->{{#ifexist:Template:Ethnologue{{padleft:{{#expr:{{#invoke:string|sub|{{BASEPAGENAME}}|11}}-2}}|2}}|{{tl|Ethnologue{{padleft:{{#expr:{{#invoke:string|sub|{{BASEPAGENAME}}|11}}-2}}|2}}}}, }} etc., for references to the previous editions
}}
* Newer and older versions of this template can be found at [[:Category:Language external link templates]]
* The link format <code><nowiki>[[Ethnologue:xxx]]</nowiki></code> can also be used, e.g. [[Ethnologue:ENG]]
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Language code",
"type": "string",
"suggested": true,
"description": "The ISO 639-3 code for the language."
},
"2": {
"label": "Link text",
"type": "string",
"description": "The link text to be displayed. This may be useful if the Ethnologue name differs from the page name of the Wikipedia article. If you omit it, the page title will be displayed as the link text."
}
},
"description": "This template is designed for use in the reference section of a language article. It links to the appropriate article at the relevant edition of the Ethnologue. "
}
</templatedata>
<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Language external link templates|Ethnologue]]
}}</includeonly>
6cbdrdth27uybeb7ugckuutg2cpiwl9
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:E28
10
2659
7997
2026-10-20T00:40:29Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Ethnologue28]]
7997
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Ethnologue28]]
2sx6c40wfku8ioxjf6mcpao4wjhduxn
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Literal translation
10
2660
7998
2026-10-20T00:44:30Z
Saimawnkham
28
Created page with "{{#if:{{{sortable|}}} |<span style="display:none;">{{{1|}}}</span> }}{{#if:{{{i|}}} |<nowiki/>'' }}{{#ifeq:{{yesno-no|{{{link|{{{lk|}}}}}}}}|yes|[[Literal translation|{{abbreviation|style=font-size:85%|lit.|literal translation}}]]|{{abbreviation|style=font-size:85%|lit.|literal translation}}}}{{#if:{{{i|}}} |''<nowiki/> }}{{#if:{{{1|}}} | {{thinsp}}{{gloss|{{{1}}}}} }}{{#if:{{{2|}}} |  or {{gloss|{{{2}}}}} }}{{#if:{{{3|}}} |  or {{gloss|{{{3}}}}} }}{{#if:{{..."
7998
wikitext
text/x-wiki
{{#if:{{{sortable|}}}
|<span style="display:none;">{{{1|}}}</span>
}}{{#if:{{{i|}}}
|<nowiki/>''
}}{{#ifeq:{{yesno-no|{{{link|{{{lk|}}}}}}}}|yes|[[Literal translation|{{abbreviation|style=font-size:85%|lit.|literal translation}}]]|{{abbreviation|style=font-size:85%|lit.|literal translation}}}}{{#if:{{{i|}}}
|''<nowiki/>
}}{{#if:{{{1|}}}
| {{thinsp}}{{gloss|{{{1}}}}}
}}{{#if:{{{2|}}}
|  or {{gloss|{{{2}}}}}
}}{{#if:{{{3|}}}
|  or {{gloss|{{{3}}}}}
}}{{#if:{{{4|}}}
|  or {{gloss|{{{4}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
k338dwjwta6bj0nfduex9nw8rjiq2jx
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Literal translation/doc
10
2661
7999
2026-10-20T00:44:59Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{High-use}} {{Template shortcut|lit|literal|literally}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This template uses single quotation marks ({{char|'…'}}), because Wikipedia's Manual of Style at [[MOS:SINGLE]] calls for [[Gloss (annotation)#In linguistics|simple glosses]] to be enclosed this way. == Usage == * <code><nowiki>{{literal translation}}</nowi..."
7999
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{Template shortcut|lit|literal|literally}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
This template uses single quotation marks ({{char|'…'}}), because Wikipedia's Manual of Style at [[MOS:SINGLE]] calls for [[Gloss (annotation)#In linguistics|simple glosses]] to be enclosed this way.
== Usage ==
* <code><nowiki>{{literal translation}}</nowiki></code> → {{literal translation}}
* <code><nowiki>{{literal translation|lk=yes}}</nowiki></code> → {{literal translation|lk=yes}}
* <code><nowiki>{{literal translation|lk=on}}</nowiki></code> → {{literal translation|lk=on}}
* <code><nowiki>{{literal translation|a}}</nowiki></code> → {{literal translation|a}}
* <code><nowiki>{{literal translation|''a'' A}}</nowiki></code> → {{literal translation|''a'' A}}
* <code><nowiki>{{literal translation|a|b}}</nowiki></code> → {{literal translation|a|b}}
* <code><nowiki>{{literal translation|a|b|c|d}}</nowiki></code> → {{literal translation|a|b|c|d}}
The template takes up to four separate translations (<code>|a|b|c|d</code>). If each meaning is a single word, using serial commas is another stylistic choice: <code>|a, b, c, d</code>
The usage of this template is preferred when the literal meaning of a word differs from its actual meaning; in other instances, {{tlx|gloss}} or {{tlx|translation}} may be more suitable.
== See also ==
* {{tlx|gloss}} – similar template but without "lit." lead-in.
* {{tlx|translation}} – for cases where it isn't obvious that the word is a translation, or when ambiguity isn't preferred, such as translating titles of works.
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language formatting and function templates]]
[[Category:Translation templates]]
}}</includeonly>
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Literal meaning",
"description": "Gloss for a term",
"type": "string",
"required": false
},
"2": {
"label": "2nd literal meaning",
"description": "Another meaning, if any",
"type": "string"
},
"3": {
"label": "3rd literal meaning",
"description": "Another meaning, if any",
"type": "string"
},
"4": {
"label": "4th literal meaning",
"description": "Another meaning (last possible), if any",
"type": "string"
},
"sortable": {
"label": "Sortable",
"type": "string",
"description": "In sortable tables, ignore 'lit.'"
},
"i": {
"label": "Italic",
"description": "If 'yes', the prefix 'lit.' is italicized. The meaning is still not italicized. Italics of either is almost never necessary stylistically.",
"type": "string"
},
"lk": {
"label": "Link",
"type": "string",
"description": "If 'yes' or 'on', adds a link to 'lit.' for the article on literal translation, overriding the default behaviour (not linked)."
}
},
"description": "Format as literal translation. Only use when the literal meaning differs from the idiomatic meaning; otherwise, use {{gloss}} or {{translation}}."
}
</templatedata>
d0n5goy22maqwm6n1nj03hugqah5cy1
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Abbreviation
10
2662
8000
2026-10-20T00:45:25Z
Saimawnkham
28
Created page with "<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}} </noinclude>"
8000
wikitext
text/x-wiki
<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}}
</noinclude>
b6zvtcrye54kh0akzk3y1jq9lxg4lm6
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Lit
10
2663
8001
2026-10-20T00:46:13Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Literal translation]]
8001
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Literal translation]]
eejbeb102rkovp5xrcerq2t8htdw00v
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space
10
2664
8002
2026-10-20T00:47:01Z
Saimawnkham
28
Created page with "<span style="white-space: nowrap;">{{#if:{{{1|}}}|{{#if:{{{2|}}}|| }}}}{{{1|}}} <!-- -->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}| {{{3}}}}}<!-- -->{{#if:{{{4|}}}| {{{4}}}}}{{#if:{{{5|}}}| {{{5}}}}}<!-- -->{{#if:{{{6|}}}| {{{6}}}}}{{#if:{{{7|}}}| {{{7}}}}}<!-- -->{{#if:{{{8|}}}| {{{8}}}}}{{#if:{{{9|}}}| {{{9}}}}}<!-- -->{{#if:{{{10|}}}| {{{10}}}}}</span><noinclude> {{Documentation}} <!-- Please add categ..."
8002
wikitext
text/x-wiki
<span style="white-space: nowrap;">{{#if:{{{1|}}}|{{#if:{{{2|}}}|| }}}}{{{1|}}} <!--
-->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}| {{{3}}}}}<!--
-->{{#if:{{{4|}}}| {{{4}}}}}{{#if:{{{5|}}}| {{{5}}}}}<!--
-->{{#if:{{{6|}}}| {{{6}}}}}{{#if:{{{7|}}}| {{{7}}}}}<!--
-->{{#if:{{{8|}}}| {{{8}}}}}{{#if:{{{9|}}}| {{{9}}}}}<!--
-->{{#if:{{{10|}}}| {{{10}}}}}</span><noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
b3t8ug596s2nqqnys55o7tsr76dnm00
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space/doc
10
2665
8003
2026-10-20T00:47:23Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{High-use}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> {{Template shortcut|tsp}} Displays its arguments in a {{template link|nowrap}} span separated by thin spaces (<code>&thinsp;</code>) (supports up to 10 arguments). If only one parameter is used, the text in parameter one is surrounded by one thin space on each side. With no parameters, it will output one <code>&thinsp;</code>. == Usage == {| class="wik..."
8003
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
{{Template shortcut|tsp}}
Displays its arguments in a {{template link|nowrap}} span separated by thin spaces (<code>&thinsp;</code>) (supports up to 10 arguments). If only one parameter is used, the text in parameter one is surrounded by one thin space on each side. With no parameters, it will output one <code>&thinsp;</code>.
== Usage ==
{| class="wikitable"
! Input !! Output
|-
| <syntaxhighlight lang="wikitext" inline>{{thin space|sin|2''φ''}}</syntaxhighlight>
| {{thin space|sin|2''φ''}}
|-
| {{tlx|thin space|299|792|458 m/s}}
| {{thin space|299|792|458 m/s}}
|-
| {{tlx|thin space}}
| {{thin space}}
|-
| ({{tlx|thin space|symbol}})
| ({{thin space|symbol}})
|}
==Comparisons==
{{Space comparison}}
{{Inline spacing templates}}
<includeonly>{{Sandbox other||<!--
++++ PLEASE ADD CATEGORIES AND INTERWIKIS BELOW THIS LINE, INSIDE INCLUDEONLY TAGS, THANK YOU. -->
[[Category:Character templates]]
[[Category:Inline spacing templates]]
}}</includeonly>
ilsf4bd5vuz87f7urezsmidd6wgzs7n
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thinsp
10
2666
8004
2026-10-20T00:47:37Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space]]
8004
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space]]
4f1v60pudg0f0y647dfef7xzi0uyeqg
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tsp
10
2667
8005
2026-10-20T00:47:41Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space]]
8005
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Thin space]]
4f1v60pudg0f0y647dfef7xzi0uyeqg
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Gloss
10
2668
8006
2026-10-20T00:48:10Z
Saimawnkham
28
Created page with "{{#if:{{{term|}}}|<dfn>{{{term|}}}</dfn> }}<span class="{{#ifeq:{{{mode}}}|wikt|gloss-brac|gloss-quot}}">{{#if:{{{mode|{{{term|}}}}}}|{{gloss/brac-start|brac={{{mode|{{{quot}}}}}}|term={{{term}}}}}|<nowiki>'</nowiki>}}</span><span class="{{#ifeq:{{{mode}}}|wikt|gloss-content|gloss-text}}">{{{1}}}</span><span class="{{#ifeq:{{{mode}}}|wikt|gloss-brac|gloss-quot}}">{{#if:{{{mode|{{{term|}}}}}}|{{gloss/brac-end|brac={{{mode|{{{quot}}}}}}|term={{{term}}}}}|<nowiki>'</now..."
8006
wikitext
text/x-wiki
{{#if:{{{term|}}}|<dfn>{{{term|}}}</dfn> }}<span class="{{#ifeq:{{{mode}}}|wikt|gloss-brac|gloss-quot}}">{{#if:{{{mode|{{{term|}}}}}}|{{gloss/brac-start|brac={{{mode|{{{quot}}}}}}|term={{{term}}}}}|<nowiki>'</nowiki>}}</span><span class="{{#ifeq:{{{mode}}}|wikt|gloss-content|gloss-text}}">{{{1}}}</span><span class="{{#ifeq:{{{mode}}}|wikt|gloss-brac|gloss-quot}}">{{#if:{{{mode|{{{term|}}}}}}|{{gloss/brac-end|brac={{{mode|{{{quot}}}}}}|term={{{term}}}}}|<nowiki>'</nowiki>}}</span><noinclude>
<!-- Categories go in the /doc page -->
{{Documentation}}</noinclude>
no8e5qweyekz6zhinzt6mafj4l0wonb
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Gloss/doc
10
2669
8007
2026-10-20T00:48:32Z
Saimawnkham
28
Created page with "{{Documentation subpage}} ==Usage== Use this template to apply the correct styling to a [[Gloss (annotation)#In linguistics|gloss]], given as the first (and often only) parameter. *Based on linguistic standards, for linguistic material *Based on default [[WP:Manual of Style]] expectations, out of a linguistic context; see [[MOS:SINGLE]] *Adjustable in [[Help:User style|user stylesheets]] '''Typical usage:''' {{in5}}<code><nowiki>Foreign term {{gloss|English term}}</..."
8007
wikitext
text/x-wiki
{{Documentation subpage}}
==Usage==
Use this template to apply the correct styling to a [[Gloss (annotation)#In linguistics|gloss]], given as the first (and often only) parameter.
*Based on linguistic standards, for linguistic material
*Based on default [[WP:Manual of Style]] expectations, out of a linguistic context; see [[MOS:SINGLE]]
*Adjustable in [[Help:User style|user stylesheets]]
'''Typical usage:'''
{{in5}}<code><nowiki>Foreign term {{gloss|English term}}</nowiki></code>
E.g.:
{{in5}}<code><nowiki>{{langx|es|casa}} {{gloss|house}}</nowiki></code>
yields:
{{in5}}{{langx|es|casa}} {{gloss|house}}
'''With parentheses (round brackets):'''
See below for when to use this option.
{{in5}}<code><nowiki>Technical or ambiguous term {{gloss</nowiki>'''|mode=def'''<nowiki>|contextual plain-English meaning}}</nowiki></code>
E.g.:
{{in5}}<code><nowiki>billiards {{gloss|mode=def|cue sports on a pocketless table}}</nowiki></code>
yields:
{{in5}}billiards {{gloss|mode=def|cue sports on a pocketless table}}
===Inline glosses===
Most translations and definitions are worded as ''glosses''. That is, the words in the definition or translation function with the same part of speech and semantics as the defined or translated material. For example, a contextual gloss of the word ''cats'' (a noun) might be the noun phrase ''members of the family [[Felidae]]'' (to distinguish it from the narrow meaning ''domestic cats''), and a translating gloss of the Spanish verb {{lang|es|vivir}} is a verb phrase in English, ''to live''. Some terms are difficult or impossible to define with a gloss. For example, one of the definitions of the word ''of'' in English that a dictionary could give might be ''Connects a noun derived from a verb with the object of that verb''.<ref>as in "[[The Taming of the Shrew|The Taming {{bracket|noun}} {{strong|of}} the Shrew {{bracket|object}}]]" cf. "he {{bracket|subject}} tames {{bracket|verb}} the shrew {{bracket|object}}."</ref> That definition is not a gloss, because the words in the definition cannot be used as a substitute for ''of''.
[[WP:Wikipedia is not a dictionary|Wikipedia is not a dictionary]], and thus we do not usually specially format glosses (or non-gloss explanations) of terms or concepts in any particular way, but present this content as best fits the context:
* {{xt|The flower is available in many specific [[cultivar]]s.}}
* {{xt|The flower is available in many specific cultivated varieties ([[cultivar]]s).}}
* {{xt|The flower is available in many specific [[cultivar]]s (cultivated varieties).}}
* {{xt|The flower is available in many specific [[cultivar]]s (short for ''cultivated varieties'').}}
* {{xt|The flower is available in many specific cultivated varieties, technically termed ''[[cultivar]]s''.}}
* And so on.
There are some exceptions, where a consistent approach can be helpful:
# In the presentation of translations of non-English content into English, it is useful to both readers and editors to consistently distinguish meaning, as in {{xt|1=[[Lao language|Lao]]: {{lang|lo-Latn|khwaay}} 'water buffalo'}}, from other annotations, as in {{xt|1=[[Lao language|Lao]]: {{lang|lo-Latn|khwaay}} {{smallcaps|noun}}}}, or {{xt|1=[[Lao language|Lao]]: {{lang|lo-Latn|khwaay}} ({{lang|th-Latn|kwai}} in [[Thai language|Thai]])}}. '''Standard linguistic practice (and WP practice – see [[MOS:SINGLE]]) is to place English translation glosses of foreign terms in 'single quotation marks', non-italicized, non-bracketed, and without intervening punctuation (e.g. comma); and to italicize the non-English original (see [[MOS:FOREIGN]]).''' This is the default behavior of this template: <code><nowiki>[[Lao language|Lao]]: {{lang|lo-Latn|khwaay}} {{gloss|water buffalo}}</nowiki></code> produces: [[Lao language|Lao]]: {{lang|lo-Latn|khwaay}} {{gloss|water buffalo}} – without need of any further parameters.
# When glossing a literal but ambiguous English translation (itself a different kind of gloss), to make the meaning clearer: {{xt|{{langx|vi|trâu}} 'water buffalo' (domestic water buffalo, ''[[Bubalus bubalis]]'')}}, since "water buffalo" by itself could be misinterpreted as inclusive of the wild species. This additional kind of gloss is most often put in parentheses (round brackets), and is not italicized in most contexts. (They are italicized or otherwise distinguished in some dictionaries, for distinction from the definition as such.) The typical non-italicized use is the second of this template's basic functions: <code><nowiki>... playing billiards {{gloss|mode=def|cue sports on a pocketless table}} ...</nowiki></code> produces: "... playing billiards {{gloss|mode=def|cue sports on a pocketless table}} ...". If this use of the template becomes common, it will be possible for [[Help:User style|user stylesheets]] to hide them for more concise presentation (e.g. on mobile devices) or perhaps a [[Wikipedia:Gadget]] to toggle display/hide mode on the fly.
# When quickly explaining jargon, slang, or other possibly unfamiliar wording, and without need for elaboration, the use of parentheses is the most common and concise approach, and usually the least likely to lead to a comprehension difficulty: {{xt|cultivars (cultivated varieties)}}, or {{xt|cats (felids)}} vs. {{xt|cats (domesticated felines)}}. Note that the ''or'' format can easily imply an alternative term instead of a gloss, and is frequently confused for this reason: {{xtg|cats or felids}}. The use of double quotation marks can easily be misinterpreted as skepticism or sarcasm, whichever direction they are applied: {{xtg|cultivar ("cultivated variety")}} and {{xtg|cultivated variety ("cultivar")}}. The use of italics for ''[[words as words]]'' can similarly lead to difficulty, such as applying the wrong style to a taxonomic group that is never italicized, as in {{!xt|cats (''[[Felidae]]'')}}, or being misinterpreted as {{em|emphasis}} or as a ''{{lang|fr|terme non-anglais}}'' (non-English term). This is another case for use of {{tlx|gloss|mode{{=}}def|...}}.
==Interlinear glosses==
Other templates have been provided for [[interlinear gloss]]ing:
* Use {{tlx|interlinear}} for glossed text
* Use {{tlx|gcl}} for individual glossing abbreviations
However, {{tlx|gloss}} can technically be used (possibly awkwardly) to provide glosses (the bottom line) of an interlinear gloss.
It is not presently suited for a gloss spread out over several table columns, because it generates 'single quotes' on each use. A parameter could be added to suppress this, but may never be needed since we have {{tlx|interlinear}}.
===Don't over-do it===
Regardless what template you use, please note that excessively complex interlinear glosses (such as might be found in a linguistics journal paper) are usually ''not appropriate'' in an encyclopedia. As the ''Leipzig Glossing Rules'' states: "Depending on the author's purposes and the readers' assumed background knowledge, different degrees of detail will be chosen."<ref name="Leipzig" /> Our readers have {{em|zero assumed background knowledge}} other than enough English-language competence to get the gist of articles on the English Wikipedia. Many of our readers are elementary school children, and learners of [[English as a second language]] (ESL). Even a native speaker with a masters degree may have no knowledge of linguistics jargon.
In most contexts, it is thus not necessary, and may be confusing, to provide a great deal of metalanguage ''morpheme-by-morpheme correspondence'' information, between the original text and the free English gloss (much less to mix such information into the gloss).
When such information is provided, e.g. in an article on detailed linguistic matters, link at least the first occurrence of standardized linguistics abbreviations (given in {{smallcaps|smallcaps}}) to the corresponding article about that feature of language, as in: {{xt|stay-[[Future tense|{{smallcaps|FUT}}]]-[[Affirmative and negative|{{smallcaps|NEG}}]]}}. Use the {{tlx|gcl}} template, as it was created to do this without having to resort to a bunch of manual markup.
Interlinear glosses of any complexity are best arranged in a bare table, to preserve vertical alignment between elements.
==See also==
* {{tlx|translation}}{{dash}}For cases where it isn't obvious that the word is a translation, or when ambiguity isn't preferred, such as translating titles of works.
* {{tlx|Literal translation}} or {{tlx|Lit}}{{dash}}similar template but with a "lit." lead-in.
* {{tlx|Language with name/for}} or {{tlx|Langnf}}
==References and further reading==
{{reflist|refs=
<ref name="Leipzig">{{cite web |title=Leipzig Glossing Rules: Conventions for interlinear morpheme-by-morpheme glosses |author=
Department of Linguistics |publisher=Max Planck Institute for Evolutionary Anthropology |version=Revised Version |date=February 2008 |url= https://www.eva.mpg.de/lingua/resources/glossing-rules.php |access-date=9 September 2015}}</ref>
}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language formatting and function templates]]
[[Category:Translation templates]]
}}</includeonly>
tcrye0p1gtma55ugil71fptnshav6xo
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Closed access
10
2670
8008
2026-10-20T00:50:33Z
Saimawnkham
28
Created page with "<span style="position:relative; top: -2px;">[[File:Closed Access logo transparent.svg|9px|link=Paywall|closed access publication – behind paywall|alt=Closed access icon]]</span><noinclude>{{access level documentation}}</noinclude>"
8008
wikitext
text/x-wiki
<span style="position:relative; top: -2px;">[[File:Closed Access logo transparent.svg|9px|link=Paywall|closed access publication – behind paywall|alt=Closed access icon]]</span><noinclude>{{access level documentation}}</noinclude>
gb1gm1ieixlg81svhg4e2sdcx3mc7oy
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Access level documentation
10
2671
8009
2026-10-20T00:51:11Z
Saimawnkham
28
Created page with "<includeonly>{{documentation|content= {{High-use}} {{Notice|'''This template should only be used on references input as free text.''' Access signaling has been integrated in the CS1/2 citation templates. [[Help:Citation Style 1#Registration or subscription required|See the relevant documentation]]. }} {{#switch:{{{1|{{lc:{{First word|{{PAGENAME}}}}}}}}} |closed=Use {{tl|closed access}} to indicate that a publication is not available under Open access (publishing)|open..."
8009
wikitext
text/x-wiki
<includeonly>{{documentation|content=
{{High-use}}
{{Notice|'''This template should only be used on references input as free text.''' Access signaling has been integrated in the CS1/2 citation templates. [[Help:Citation Style 1#Registration or subscription required|See the relevant documentation]]. }}
{{#switch:{{{1|{{lc:{{First word|{{PAGENAME}}}}}}}}}
|closed=Use {{tl|closed access}} to indicate that a publication is not available under [[Open access (publishing)|open access]]. Use {{tl|open access}} to indicate that a publication is available under open access.
Most closed-access publications are behind a [[paywall]] and require a personal or institutional subscription to access their full text. Others, including several studies, require purchase.
Still, they can often be read an abstract or summary of a closed-access publication for free, even without a subscription.
|limited=Use {{tl|limited access}} to indicate manually that a publication is available to be read under certain conditions – a cap on daily views, a restriction to certain day or night times, a free trial, a required account, or providing the contents only to certain IP ranges/locales on behalf of the provider of the source, etc. For citations input with citation templates such as {{tl|cite journal}}, use [[Help:Citation_Style_1#Registration_or_subscription_required|the relevant parameters]] (such as {{para|url-access|limited}}) to indicate the access level. For publications that are available to read for free, use {{tl|free access}}.
|free=Use {{tl|free access}} to indicate manually that a publication is available to be read freely. Use {{tl|open access}} for [[open access]] publications.
|#default
|open=Use {{tl|open access}} to indicate manually that a [[research]]-based publication is available under [[Open access (publishing)|open access]] (not merely that it's accessible without subscription etc.).
}}
For citations input with citation templates such as {{tl|cite journal}}, use [[Help:Citation Style 1#Registration or subscription required|the relevant parameters]] (such as {{para|doi-access|free}}) to indicate the access level for a given identifier.
== Usage ==
After a <code><nowiki><ref></nowiki></code> tag and a citation input as free text, add:
* a space
* then {{tl|{{#switch:{{{1|{{lc:{{First word|{{PAGENAME}}}}}}}}}
|closed=closed
|limited=limited
|free=free
|#default
|open=open}} access}}
* then a closing <code><nowiki></ref></nowiki></code> tag.
== Example ==
{{Markup
| col2 = With the help of a <code><nowiki><references></nowiki></code> tag, this renders as
|
<nowiki><ref>Testa A, Giannuzzi R, Sollazzo F, Petrongolo L, Bernardini L, Daini S (February 2013). [http://www.europeanreview.org/article/3083 "Psychiatric emergencies (part I): psychiatric disorders causing organic symptoms"]. ''European Review for Medical and Pharmacological Sciences''. 17 Suppl 1: 55–64. {{open access}}
</ref>
== References ==
<references /></nowiki>
|
<ref>Testa A, Giannuzzi R, Sollazzo F, Petrongolo L, Bernardini L, Daini S (February 2013). [http://www.europeanreview.org/article/3083 "Psychiatric emergencies (part I): psychiatric disorders causing organic symptoms"]. ''European Review for Medical and Pharmacological Sciences''. 17 Suppl 1: 55–64. {{open access}}</ref>
== References ==
<references />
}}
==See also==
{{Link notes}}
{{navbox
|title=Access level family of templates
|listclass=hlist
|list1=
* {{tl|open access}}
* {{tl|closed access}}
* {{tl|free access}}
* {{tl|limited access}}
}}
{{Sandbox other||
<!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Single-image insertion templates|{{PAGENAME}}]]
[[Category:External link note templates]]
}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
nzm4u4tzgiofh3sca2n71yamoamos8u
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Access level documentation/doc
10
2672
8010
2026-10-20T00:51:59Z
Saimawnkham
28
Created page with "{{Documentation subpage}} == Usage == This is a shared documentation template for the access level family of templates. == See also == {{Link notes}} {{navbox |title=Access level family of templates |listclass=hlist |list1= * {{tl|open access}} * {{tl|closed access}} * {{tl|free access}} * {{tl|limited access}} }} <includeonly>{{Sandbox other|| <!-- Categories below this line --> [[Category:Documentation shared content templates]] }}</includeonly>"
8010
wikitext
text/x-wiki
{{Documentation subpage}}
== Usage ==
This is a shared documentation template for the access level family of templates.
== See also ==
{{Link notes}}
{{navbox
|title=Access level family of templates
|listclass=hlist
|list1=
* {{tl|open access}}
* {{tl|closed access}}
* {{tl|free access}}
* {{tl|limited access}}
}}
<includeonly>{{Sandbox other||
<!-- Categories below this line -->
[[Category:Documentation shared content templates]]
}}</includeonly>
7yn3nron119iain87iwf7ul2pll2ssr
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list
10
2673
8011
2026-10-20T00:52:42Z
Saimawnkham
28
Created page with "{{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}| {{{1}}} {{endplainlist}}}}<noinclude></div> {{documentation}} </noinclude>"
8011
wikitext
text/x-wiki
{{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}|
{{{1}}}
{{endplainlist}}}}<noinclude></div>
{{documentation}}
</noinclude>
9pwqbwr77qreu5ic9nufyjxuxbhv4cn
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list/doc
10
2674
8012
2026-10-20T00:53:07Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{Template shortcut|idp|ilist}} This template is very similar to {{tlx|plainlist}}, except that it automatically indents parts of long items that are wrapped onto a new line. This makes it easier to tell apart multiple such items when width is limited—e.g. in an {{tlx|infobox}}—and eliminates the need for a bulleted list. {{tld|Indented plainlist}} provides a [[WCAG]]-compliant and accessible alternative to <code><nowiki><br /></nowiki></co..."
8012
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|idp|ilist}}
This template is very similar to {{tlx|plainlist}}, except that it automatically indents parts of long items that are wrapped onto a new line. This makes it easier to tell apart multiple such items when width is limited—e.g. in an {{tlx|infobox}}—and eliminates the need for a bulleted list.
{{tld|Indented plainlist}} provides a [[WCAG]]-compliant and accessible alternative to <code><nowiki><br /></nowiki></code>-separated lists, per [[MOS:UBLIST]] and [[MOS:PLIST]].
=== Usage ===
{{Infobox
|bodystyle = width:21em
|title = Example
|label1 = First label
| data1 = Some data
|label2 = Awards
| data2 = {{indented plainlist|
* [[Royal Geographical Society's Founder's Medal]] (1888)
* [[Knight Commander of the Order of the Bath]] (1896)
* [[Chevalier dans l'Ordre de la Légion d'Honneur]] (1899)
}}
|label3 = Second label
| data3 = Some more data
}}
<syntaxhighlight lang="wikitext">
{{Infobox
|label1 = Some data
|awards = {{indented plainlist|
* [[Royal Geographical Society's Founder's Medal]] (1888)
* [[Knight Commander of the Order of the Bath]] (1896)
* [[Chevalier dans l'Ordre de la Légion d'Honneur]] (1899)
}}
|label2 = Some more data
}}</syntaxhighlight>
==== Custom indentation ====
{{Infobox
|bodystyle = width:21em
|title = Example
|label1 = First label
| data1 = Some data
|label2 = Awards
| data2 = {{indented plainlist|indent=2em|
* [[Royal Geographical Society's Founder's Medal]] (1888)
* [[Knight Commander of the Order of the Bath]] (1896)
* [[Chevalier dans l'Ordre de la Légion d'Honneur]] (1899)
}}
|label3 = Second label
| data3 = Some more data
}}
<syntaxhighlight lang="wikitext" highlight="4">
{{Infobox
|label1 = Some data
|awards = {{indented plainlist
|indent=2em|
* [[Royal Geographical Society's Founder's Medal]] (1888)
* [[Knight Commander of the Order of the Bath]] (1896)
* [[Chevalier dans l'Ordre de la Légion d'Honneur]] (1899)
}}
|label2 = Some more data
}}
</syntaxhighlight>
=== TemplateData ===
{{collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "An automatically indented plainlist variant.",
"params": {
"1": {
"label": "Content",
"description": "If supplied, the list, as a normal bulleted list. Every line should start with an asterisk. No blank lines between lines.",
"type": "content",
"required": true
},
"class": {
"label": "Class",
"description": "Adds a CSS class to the containing div.",
"type": "string",
"default": "The class \"plainlist\" is always applied.",
"example": "nowrap"
},
"style": {
"label": "Style",
"description": "Adds CSS style options. Complex styles should not be used in articles—per [[WP:Deviations]]—but may be acceptable on user, project, and talk pages.",
"type": "string",
"example": "border:solid 1px silver; background:lightyellow;"
},
"in": {
"label": "Indentation",
"description": "Sets a custom indentation width for the lists' items.",
"type": "string",
"default": "1em",
"aliases": [ "indent" ]
}
}
}
</templatedata>
{{collapse bottom}}
=== See also ===
* {{tl|plainlist}}
* {{tl|unbulleted indent list}}
<includeonly>{{Sandbox other||
{{DEFAULTSORT:Indented plainlist}}
[[Category:List formatting and function templates]]
[[Category:Semantic markup templates]]
[[Category:Typing-aid templates]]
}}</includeonly>
2gxr9xu82wobchgtjg58t1cjsmb2c5v
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plainlist
10
2675
8013
2026-10-20T00:53:25Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
8013
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
fmdmp6j39rswsszgowuv5cglqklmc65
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Idp
10
2676
8014
2026-10-20T00:53:33Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
8014
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
fmdmp6j39rswsszgowuv5cglqklmc65
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Ilist
10
2677
8015
2026-10-20T00:53:36Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
8015
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Indented plain list]]
fmdmp6j39rswsszgowuv5cglqklmc65
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list
10
2678
8016
2026-10-20T00:54:30Z
Saimawnkham
28
Created page with "<includeonly></div></includeonly><noinclude> {{documentation|Template:Plain list/doc}} </noinclude>"
8016
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{documentation|Template:Plain list/doc}}
</noinclude>
4rtg0iwl3jjgi2p5g4szf7vx2h2wo83
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Plain list/doc
10
2679
8017
2026-10-20T00:54:58Z
Saimawnkham
28
Created page with "{{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{Cascade-protected template}} {{High-use}} {{Template shortcut|plist|PL}} {{Uses TemplateStyles|Template:Plainlist/styles.css}} This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]] == Usage == {{tl|plain list}} starts a plain (i.e...."
8017
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{Cascade-protected template}}
{{High-use}}
{{Template shortcut|plist|PL}}
{{Uses TemplateStyles|Template:Plainlist/styles.css}}
This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]
== Usage ==
{{tl|plain list}} starts a plain (i.e. unbulleted) list, such as:
{{plain list|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with {{tag|br|s}}. Detailed reasons for using this template can be found at [[WP:UBLIST]].
This template can be used with or without {{tl|end plain list}}. It is an alternative to {{tl|unbulleted list}}, which performs the same function in a more concise but less wiki-style manner. Note that {{tl|unbulleted list}} will work inside image captions, whereas {{tl|plain list}} does not.
== Examples ==
{{Markup|tag=syntaxhighlight
|<nowiki>
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
</nowiki>
|
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
}}
=== Alternative syntax ===
{{Markup|tag=syntaxhighlight
|<nowiki>
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
</nowiki>
|
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
}}
== Parameters ==
{{Format TemplateData|JSON= {
"params": {
"1": {
"label": "List content",
"description": "If supplied, the list, as a normal bulleted list. (Every line should start with an asterisk. No blank lines between lines.) See template page for how this works otherwise.",
"type": "content",
"suggested": true
},
"class": {
"label": "CSS classes",
"description": "Adds a CSS class to the containing div.",
"type": "string",
"default": "The class \"plainlist\" is always applied."
},
"style": {
"label": "Custom CSS",
"description": "Adds CSS style options. Complex styles should not be used in articles (per [[WP:Deviations]]) but may be acceptable on user, project, and talk pages.",
"type": "string",
"example": "border:solid 1px silver; background:lightyellow"
},
"indent": {
"label": "Indent level",
"description": "Indents the list by a number of standard indents (one indent being 1.6 em), particularly handy for inclusion in an indented discussion thread.",
"type": "number",
"example": "2"
}
},
"description": "This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO standards–compliant accessible alternative to <code class=\"nowrap\"><[[HTML element#br|br]] /></code>-separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]. It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with <code class=\"nowrap\"><br /></code>. Detailed reasons for using this template can be found at [[WP:UBLIST]]."
} }}
=== Controlling line-breaking ===
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists, to prevent wrapped long entries from being confused with multiple entries. See {{slink|Template:Wbr/doc#Controlling line-breaking in infoboxes}} for details.
== Technical details ==
{{tl|Plainlist}} works by constructing a [[span and div|div]] with the [[Cascading Style Sheets|CSS]] class "plainlist" which has the styles listed in [[Template:Plainlist/styles.css]].
{| class="wikitable"
! Wikitext
! Expanded template
! HTML
|- style="vertical-align:top;"
| class="nowrap" | <pre>
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
</pre>
| class="nowrap" | {{nowiki2|tag=pre|
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
}}
| <syntaxhighlight lang="html">
<div class="plainlist">
<ul>
<li>Example 1</li>
<li>Example 2</li>
<li>Example 3</li>
</ul>
</div>
</syntaxhighlight>
|}
== Redirects ==
* {{Template link|Bulletless list}}
* {{Template link|Plain list}}
* {{tl|Startplainlist}}
== Tracking category ==
* {{clc|Pages using plainlist with unknown parameters}}
== See also ==
* {{tl|unbulleted list}} – essentially the same but uses <code><nowiki>| ... | ... | ...</nowiki></code> instead of <code><nowiki>|* ... * ... * ...</nowiki></code>
* {{tl|flatlist}} and {{tl|hlist}} (replacements for comma- or dash-separated lists)
* {{tl|bulleted list}}
* {{tl|indented plainlist}}
* {{tl|ordered list}}
* {{section link|Template:Infobox person#Inline lists}} for more information on creating lists within the Infobox family of templates, with examples in the following {{section link|Template:Infobox person#Examples|nopage=y}}
{{navbox lists}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:List formatting and function templates|Plainlist]]
[[Category:Semantic markup templates]]
[[Category:Typing-aid templates|Plainlist]]
}}</includeonly>
9zg3rf5swq9mvifbp1xx2hmv0faa4le
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Plist
10
2680
8018
2026-10-20T00:55:42Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
8018
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
n5tudgw4zz8if9zx95gzpcmysau3hed
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:PL
10
2681
8019
2026-10-20T00:55:46Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
8019
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
n5tudgw4zz8if9zx95gzpcmysau3hed
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Endplainlist
10
2682
8020
2026-10-20T00:56:00Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
8020
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:End plain list]]
n5tudgw4zz8if9zx95gzpcmysau3hed
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Sfnmp
10
2683
8021
2026-10-20T00:56:49Z
Saimawnkham
28
Created page with "<includeonly>{{#invoke:Footnotes|sfnm |bracket_year_left = ( |bracket_year_right = ) |template=sfnmp }}</includeonly><noinclude> {{Documentation}} </noinclude>"
8021
wikitext
text/x-wiki
<includeonly>{{#invoke:Footnotes|sfnm
|bracket_year_left = (
|bracket_year_right = )
|template=sfnmp
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
347ginkjgekg1bavpp24f3kahhg5ern
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Sfnmp/doc
10
2684
8022
2026-10-20T00:57:13Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{lua |Module:Footnotes}} <!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. --> This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnmp}} supports the inclusion of multiple sources in a single footnote and renders the year in parentheses. ==Usage== Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameter..."
8022
wikitext
text/x-wiki
{{Documentation subpage}}
{{lua |Module:Footnotes}}
<!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnmp}} supports the inclusion of multiple sources in a single footnote and renders the year in parentheses.
==Usage==
Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameters where the first source is numbered <code>1</code>, the second <code>2</code>, etc. There is no set limit to the number of sources that may be listed in a single template though editors should be aware that readability suffers with an increase of the number of sources.
The following markup:
<code><nowiki>{{Sfnmp|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50}}</nowiki></code>
will produce the following footnote: {{Sfnmp|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|1ignore-err=yes|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
===Parameters===
The following parameters are used where {{var|n}} always begins at 1, increases by one for each successive source; {{var|n}} has no set limit.
*{{para|{{var|n}}a{{var|m}}}} – source {{var|n}} author (required) – has the form: <code>{{var|n}}a{{var|m}}</code> where <code>{{var|n}}</code> is the source number, <code>a</code> indicates that this is an author parameter, and <code>{{var|m}}</code> identifies the {{var|m}}th author of source {{var|n}} → {{para|1a1}} is first source author one, {{para|5a4}} is fifth source author four; author numbers (<code>{{var|m}}</code>) greater than <code>4</code> are ignored;
*{{para|{{var|n}}y}} – year – accepted formats are: <code>YYYY</code>, <code>n.d.</code> or <code>nd</code> (no date), <code>c. YYYY</code>, <code>YYYY–YYYY</code> (endash separator); all dates may have a single lowercase letter disambiguator suffix; see [[Template:Sfn#More than one work in a year|sfn §More than one work in a year]]
*{{para|{{var|n}}p}} – in-source page cited
*{{para|{{var|n}}pp}} – in-source pages cited
*{{para|{{var|n}}loc}} – in-source location when not pagination – appended to {{para|{{var|n}}p}} or {{para|{{var|n}}pp}} if present
*{{para|{{var|n}}ref}} – alternate reference identifier used to link source to its full citation; the special keyword <code>none</code> inhibits creation of a link from source to its long form reference
*{{para|{{var|n}}ps}} – source postscript – terminal character or text; defaults to none; the special keyword <code>none</code> (used by {{tld|sfn}}) is silently ignored
*{{para|ps}} – postscript – template's final terminal character or text; defaults to period (<code>.</code>); the special keyword <code>none</code> inhibits the postscript character; yields to {{para|{{var|n}}ps}} where {{var|n}} is the last source
*{{para|group}} – [[Help:Footnotes#Footnotes: groups|reference group]] for the footnote
When a source has a single author, use of positional parameters for author and year is supported; both <code>|{{var|author}}</code> and <code>{{var|year}}</code> are required when there is more than one of these single-author sources listed in the template:
<code><nowiki>{{Sfnmp|Smith|2005|1p=15|Jones|2004|2p=2}}</nowiki></code>
which will produce the following footnote: {{Sfnmp|Smith|2005|1p=15|1ignore-err=yes|Jones|2004|2p=2|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
==Literature cited==
*{{cite journal|last1=Jones|first1=John|year=2004|title=My Journal Article|journal=Journal of Important Studies|volume=509|issue=13 |pages=10–23}}
*{{cite book|last1=Jones|first1=John|last2=Johnson|first2=John|last3=Smith|first3=John|year=2004|title=Our First Book}}
*{{cite journal|last1=Smith|first1=John|year=2005|title=Another Journal Article|journal=Journal of Important Studies|volume=510|issue=14 |pages=100–134}}
*{{cite book|last1=Smith|first1=John|last2=Jones|first2=John|last3=Johnson|first3=John|year=2005|title=Our Second Book}}
==See also==
{{Multiple references}}
<includeonly>{{sandbox other||
<!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE -->
[[Category:Footnote templates]]
[[Category:Author–date citation templates]]
}}</includeonly>
gyg2ujizxzln0d03chi442z6lzqd1o2
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tlit
10
2685
8023
2026-10-20T00:58:00Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Transliteration]]
8023
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Transliteration]]
3q8oefokcbajfyyvgttyn7qx1w4y6xu
ᥛᥨᥝᥱ ᥓᥧᥰ:Infobox multi-lingual name
828
2686
8024
2026-10-20T00:59:32Z
Saimawnkham
28
Created page with "--[[ TODO: all non-English text wrapped in {{lang}}? distinguish various scripts? Kanji is ja-Hani ... every child infobox should support translit / transcription parameter(s) every child infobox should have a literal meaning parameter revise parameter names to be IETF language code or obvious derivations thereof for error messaging create a separate ibox? else messages are not necessarily visible ]] require('strict'); local data = mw.loadData ('Module:Info..."
8024
Scribunto
text/plain
--[[
TODO:
all non-English text wrapped in {{lang}}?
distinguish various scripts? Kanji is ja-Hani ...
every child infobox should support translit / transcription parameter(s)
every child infobox should have a literal meaning parameter
revise parameter names to be IETF language code or obvious derivations thereof
for error messaging create a separate ibox? else messages are not necessarily visible
]]
require('strict');
local data = mw.loadData ('Module:Infobox multi-lingual name/data');
local lang_mod = require ('Module:Lang'); -- for various functions and templates provided by Module:Lang
local getArgs = require ('Module:Arguments').getArgs;
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< A N Y _ S E T >----------------------------------------------------------------
Returns true if any member of the table is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function any_set (t)
for _, v in pairs (t) do
if is_set (v) then
return true;
end
end
return false;
end
--[[--------------------------< S H O W F L A G >--------------------------------------------------------------
This function handles the |showflag= parameter from the template {{Infobox Chinese}}. That template passes the
value to {{Infobox Chinese/Chinese}} which calls this function. This function does not take any frame parameters
but it does require a copy of the frame so that it can expand {{Infobox}}. All arguments used by this function
come from the args table in the function call
returns a child infobox or an empty string
]]
local function showflag (frame, args)
local show_flag = args.showflag;
if not is_set (show_flag) then
return ''; -- |showflag= not set so nothing to do; return empty string
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
infobox_args['child'] = 'yes'; -- showflag infoboxen are always children
infobox_args['labelstyle'] = 'font-weight:normal'; -- and always have this label style
if data.transl_map[show_flag] then
local i=1;
while (1) do
local labeln = 'label' .. i; -- make label index that matches |labeln= parameter
local datan = 'data' .. i; -- make data index that matches |datan= parameter
if not data.transl_map[show_flag][labeln] then
break; -- not found then done
end
infobox_args[labeln] = data.label_map[data.transl_map[show_flag][labeln]]; -- add |labeln=<label text / wikilink>
infobox_args[datan] = args[data.transl_map[show_flag][datan]]; -- add |datan={{{data}}}
i = i + 1; -- bump to next label / data pair
end
else
return ''; -- |showflag= value invalid; TODO: return error message?
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[--------------------------< A D D _ L A B E L _ D A T A _ P A I R >----------------------------------------
Adds a label parameter and matching data parameter to infobox arguments table; bumps the enumerator on return
]]
local function add_label_data_pair (infobox_args, label, data, i)
if is_set (data) then
infobox_args['label' .. i] = label; -- make an enumerated label parameter
infobox_args['data' .. i] = data; -- make an enumerated data parameter
return i + 1; -- return bumped enumerator
end
return i; -- if here, no data so no need to add label or bump enumerator
end
--[[--------------------------< A D D _ T R A N S C R I P T I O N >--------------------------------------------
This function does that repetative work when assembling the parameter list for {{Infobox}} template
inputs are:
infobox_args - table of infobox parameters
args - args table from the {{#invoke:}} frame
idx - index into xscript table
show - pseudo-boolean (true or nil) header display flag; when true display the header
i - enumerator for {{infobox}} parameters |headern=, |labeln=, |datan=; in this application i continually
increments; there are no gaps as there are in the original template
lang - language code used by {{tlansl}} - must be valid IETF code
returns i for the next time this function is called
]]
local function add_transcription (infobox_args, args, idx, show, i, lang)
local special_xscriptions_t = {['bpmf'] = '-Bopo', ['usy'] = '-Cyrl', ['xej'] = '-Arab', ['zh-dungan'] = '-Cyrl'}; -- list of transcriptions not transliterations; TODO move to ~/data?
local special_ipa_t = {['bi'] = true, ['ci'] = true, ['ki'] = true, ['lhasa'] = true, ['li'] = true, ['mi'] = true, ['uipa'] = true,};
infobox_args['header' .. i] = show and data.xscript[idx].header; -- if headers are displayed
i = i + 1; -- bump the enumerator
for _, v in ipairs (data.xscript[idx].t) do -- each label / data pair in the xscript subtable
if special_xscriptions_t[v[2]] then -- special cases for bopomofo, Siril Yëziqi which are transcriptions, not Latn transliterations
i = add_label_data_pair (infobox_args, v[1], is_set (args[v[2]]) and lang_mod._lang ({lang .. special_xscriptions_t[v[2]], args[v[2]], italic = 'no'}), i); -- enumerator is bumped here
elseif special_ipa_t[v[2]] then
i = add_label_data_pair (infobox_args, v[1], args[v[2]], i); -- enumerator is bumped here
else
i = add_label_data_pair (infobox_args, v[1], is_set (args[v[2]]) and lang_mod._xlit ({lang, args[v[2]], italic = 'no'}), i); -- enumerator is bumped here
end
end
return i; -- and done
end
--[[--------------------------< T R A N S C R I P T I O N S _ Z H >--------------------------------------------
transcriptions support for {{Infobox Chinese/Chinese}}. This function adds headers and label data pairs to
infobox_arg table according to which parameters are set
returns the enumerator in case it is needed
]]
local function transcriptions_zh (infobox_args, args, show, i)
if any_set ({args.p, args.bpmf, args.gr, args.w, args.tp, args.myr, args.mps, args.mi}) then
i = add_transcription (infobox_args, args, 'standard mandarin', show, i, 'zh');
end
if any_set ({args.xej, args['zh-dungan'], args.sic}) then
i = add_transcription (infobox_args, args, 'other mandarin', show, i, 'zh');
end
if any_set ({args.wgn, args.wuu, args.ouji, args.suz, args.wi}) then
i = add_transcription (infobox_args, args, 'wu', show, i, 'wuu');
end
if is_set (args.gan) then
i = add_transcription (infobox_args, args, 'gan', show, i, 'gan');
end
if is_set (args.hsn) then
i = add_transcription (infobox_args, args, 'xiang', show, i, 'hsn');
end
if any_set ({args.h, args.phfs}) then
i = add_transcription (infobox_args, args, 'hakka', show, i, 'hak');
end
if any_set ({args.y, args.ci, args.j, args.sl, args.gd, args.hk, args.mo}) then -- ???? sl, hk, mo not here in original; why?
i = add_transcription (infobox_args, args, 'yue cantonese', show, i, 'yue');
end
if is_set (args.toi) then
i = add_transcription (infobox_args, args, 'other yue', show, i, 'yue');
end
if any_set ({args.poj, args.tl, args.bp, args.teo, args.hain, args.lizu}) then -- ???? bp not here in original; why?
i = add_transcription (infobox_args, args, 'southern min', show, i, 'nan');
end
if is_set (args.buc) then
i = add_transcription (infobox_args, args, 'eastern min', show, i, 'cdo');
end
if is_set (args.hhbuc) then
i = add_transcription (infobox_args, args, 'pu-xian min', show, i, 'cpx');
end
if is_set (args.mblmc) then
i = add_transcription (infobox_args, args, 'northern min', show, i, 'mnp');
end
if is_set (args['phagspa-latin']) then -- phagspa is a script
i = add_transcription (infobox_args, args, 'old mandarin', show, i, 'zh');
end
if any_set ({args.mc, args.emc, args.lmc}) then
i = add_transcription (infobox_args, args, 'middle chinese', show, i, 'ltc');
end
if any_set ({args['oc-b92'], args['oc-bs'], args['oc-zz']}) then
i = add_transcription (infobox_args, args, 'old chinese', show, i, 'och');
end
return i; -- return current state of the enumerator
end
--[[--------------------------< T R A N S C R I P T I O N S >--------------------------------------------------
This function handles the transcription infobox called by various {{Infobox Chinese/xxx}}. Creates header and
label / data pairs according to the presence of certain parameters provided to {{Infobox Chinese}}
]]
local function transcriptions (frame, args, lang)
if not args then
args = frame.args;
end
local show = 'no' ~= args.hide or nil; -- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
local i = 1; -- enumerator used with {{infobox}} |headern=, |labeln=, and |datan= parameters
if show then
infobox_args['subbox'] = 'yes';
infobox_args['above'] = 'Transcriptions';
else
infobox_args['child'] = 'yes';
end
infobox_args['bodyclass'] = 'mw-collapsible mw-collapsed';
infobox_args['bodystyle'] = 'display:inline-table; text-align: left;';
infobox_args['abovestyle'] = 'font-size: 100%; text-align: left;color: #202122; background-color: #f9ffbc;'; -- TODO: #define various colors in a common config location; and function?
infobox_args['headerstyle'] = 'color: #202122;background-color: #dcffc9;'; -- TODO: #define various colors in a common config location; and function?
infobox_args['labelstyle'] = 'font-weight:normal;';
if 'zh' == lang then
transcriptions_zh (infobox_args, args, show, i); -- special case because there are various headers etc
else
add_transcription (infobox_args, args, data.keys[lang], show, i, lang);
end
return frame:expandTemplate ({title='Infobox', args = infobox_args}); -- render the infobox and done
end
--[[--------------------------< I B O X _ B O I L E R P L A T E >----------------------------------------------
boilerplate style settings for the various child infoboxen (not for transcription infoboxen) because they are
mostly the same child-infobox to child-infobox
TODO: |headercolor= is set to its default color in {{Infobox Chinese}}. Better here than there isn't it? less
maintenance headache when a default value is set in only one place; override in the highest level appropriate
but leave the default here. in the higher-level template(s) remove |headercolor= default values
]]
local function ibox_boilerplate (infobox_args, args)
infobox_args['child'] = 'yes';
local h_color;
if is_set (args.headercolor) then
h_color = args.headercolor;
else
h_color = '#b0c4de' -- TODO: #define various colors in a common config location; and / or function?
end
infobox_args['headerstyle'] = 'color: #202122;background-color: ' .. h_color .. ';';
if is_set (args.fontstyle) then -- ???? |fontstyle= not a documented parameter; supported by {{Infobox Chinese/Korean}} and {{Infobox Chinese/Vietnamese}}
infobox_args['labelstyle'] = 'font-weight:' .. fontstyle .. ';';
else
infobox_args['labelstyle'] = 'font-weight:normal;';
end
end
--[[--------------------------< I B O X _ M L N _ Z H >--------------------------------------------------------
bypasses {{Infobox Chinese/Chinese}}
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_zh}}
]]
local function ibox_mln_zh (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args)
if 'none' ~= args.header and 'none' ~= args.chinese_header then
infobox_args['header1'] = args.header or args.chinese_header or 'Chinese name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Chinese language|Chinese]]', is_set (args.c) and lang_mod._lang ({'zh-Hani', args.c, size = '1rem'}), i)
if 'st' == args.order then
i = add_label_data_pair (infobox_args, '[[Simplified Chinese characters|Simplified Chinese]]', is_set (args.s) and lang_mod._lang ({'zh-Hans', args.s, size = '1rem'}), i)
i = add_label_data_pair (infobox_args, '[[Traditional Chinese characters|Traditional Chinese]]', is_set (args.t) and lang_mod._lang ({'zh-Hant', args.t, size = '1rem'}), i)
else
i = add_label_data_pair (infobox_args, '[[Traditional Chinese characters|Traditional Chinese]]', is_set (args.t) and lang_mod._lang ({'zh-Hant', args.t, size = '1rem'}), i)
i = add_label_data_pair (infobox_args, '[[Simplified Chinese characters|Simplified Chinese]]', is_set (args.s) and lang_mod._lang ({'zh-Hans', args.s, size = '1rem'}), i)
end
if is_set (args.phagspa) then -- ???? this parameter isn't passed from {{Infobox Chinese}} to {{infobox Chinese/Chinese}}
i = add_label_data_pair (infobox_args, '[[\'Phags-pa script]]', frame:expandTemplate ({title='Phagspa', args = {'h', args.phagspa, args['phagspa-latin'], size = 12}}), i)
end
infobox_args['data' .. i] = showflag (frame, args); -- needs frame so that it can frame:expandTemplate()
i = i + 1;
-- ???? why is this transliteration here and not part of the transcription list?
i = add_label_data_pair (infobox_args, '[[Chinese postal romanization|Postal]]', is_set (args.psp) and args.psp or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.l) and args.l or nil, i)
if 'no' == args.hide then
infobox_args['rowstyle' .. i] = 'display:none;';
infobox_args['rowcellstyle' .. i] = 'display:none;';
end
if any_set ({args.c, args.t, args.p, args.s, args.phagspa}) then -- ???? phagspa not passed into {{infobox Chinese/Chinese}} Why?
infobox_args['data' .. i] = transcriptions (frame, args, 'zh'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ A R >---------------------------------------------------------
implements {{Infobox Chinese/Arabic}} (Note template has been moved to {{Infobox Arabic}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_ar}}
Template:Infobox_Arabic_term/testcases
TODO: standardize on lowercase parameter names for transcriptions
]]
local function ibox_mln_ar (frame, args)
if not args then
args = getArgs (frame); --, {removeBlanks = false}?
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.arabic_header then
infobox_args['header1'] = args.header or args.arabic_header or 'Arabic name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Arabic]]', is_set (args.arabic) and args.arabic or nil, i)
i = add_label_data_pair (infobox_args, '[[Romanization of Arabic|Romanization]]', is_set (args.arabic_rom) and args.arabic_rom or nil, i)
i = add_label_data_pair (infobox_args, '[[Help:IPA for Arabic|IPA]]', is_set (args.arabic_ipa) and args.arabic_ipa or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.arabic_lit) and args.arabic_lit or nil, i)
if any_set ({args.chat, args.Chat, args['ala-lc'], args['ALA-LC'], args.iso, args.ISO, args.din, args.DIN}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'ar'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ B L A N K >---------------------------------------------------
implements {{Infobox Chinese/Blank}}
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_blank}}
]]
local function ibox_mln_blank (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
local ietf_tag = lang_mod._is_ietf_tag (args.lang);
local name_from_tag = ietf_tag and lang_mod._name_from_tag ({args.lang}) or nil;
if 'none' ~= args.lang_hdr and 'none' ~= args.header and 'none' ~= args.blank_header then
if is_set (args.lang_hdr) or is_set (args.header) or is_set (args.blank_header) then -- if one of these
infobox_args['header1'] = args.lang_hdr or args.header or args.blank_header; -- make a header from it
elseif ietf_tag then
infobox_args['header1'] = name_from_tag .. ' name'; -- make a header from the language name
else
infobox_args['header1'] = args.lang .. ' name'; -- not a code so use whatever text is in {{{lang}}}
end
end
local i = 2;
local label;
local data;
if name_from_tag then
if is_set (args.lang_article) then
label = table.concat ({ -- make a linked label from provided article name
'[[',
args.lang_article,
'|',
args.lang_label or name_from_tag,
']]'
});
else
label = args.lang_label or lang_mod._name_from_tag ({args.lang, ['link'] = 'yes'}) -- let lang module make the correct linked label
end
data = lang_mod._lang ({args.lang, args.lang_content});
else
label = args.lang_label or args.lang; -- fall back
data = args.lang_content;
end
i = add_label_data_pair (infobox_args, label, data, i);
if is_set (args.lang_rom) and ietf_tag then
i = add_label_data_pair (infobox_args, args.lang_std or 'Romanization', lang_mod._xlit ({args.lang, args.lang_rom}), i);
end
i = add_label_data_pair (infobox_args, 'IPA', args.lang_ipa, i);
i = add_label_data_pair (infobox_args, 'Literal meaning', args.lang_lit, i);
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ B O >---------------------------------------------------------
implements {{Infobox Chinese/Tibetan}} (Note template has been moved to {{Infobox Tibetan}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_bo}}
]]
local function ibox_mln_bo (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.tibetan_header then
infobox_args['header1'] = args.header or args.tibetan_header or 'Tibetan name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Tibetan alphabet|Tibetan]]', is_set (args.tib) and frame:expandTemplate ({title='Bo-textonly', args = {lang = 'bo', args.tib}}) or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.literal_tibetan) and args.literal_tibetan or nil, i)
if any_set ({args.wylie, args.thdl, args.zwpy, args.lhasa}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'bo'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ D N G >-------------------------------------------------------
implements {{Infobox Chinese/Dunganese}} (Note template has been moved to {{Infobox Dunganese}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_dng}}
]]
local function ibox_mln_dng (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.dunganese_header then
infobox_args['header1'] = args.header or args.dunganese_header or 'Dunganese name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Dungan language|Dungan]]', is_set (args.dungan) and args.dungan or nil, i)
i = add_label_data_pair (infobox_args, '[[Xiao\'erjing]]', is_set (args['dungan-xej']) and args['dungan-xej'] or nil, i)
i = add_label_data_pair (infobox_args, '[[Romanization]]', is_set (args['dungan-latin']) and args['dungan-latin'] or nil, i)
i = add_label_data_pair (infobox_args, '[[Hanzi]]', is_set (args['dungan-han']) and args['dungan-han'] or nil, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ H O K K I E N >-----------------------------------------------
implements {{Infobox Chinese/Hokkien}} (Note template has been moved to {{Infobox Hokkien}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_hokkien}}
Template:Infobox Hokkien name/testcases
]]
local function ibox_mln_hokkien (frame, args)
if not args then
args = getArgs (frame); --, {removeBlanks = false}?
end
local show = 'no' ~= args.hide or nil; -- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.hokkien_header then
infobox_args['header1'] = args.header or args.hokkien_header or 'Hokkien name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Hàn-jī]]', is_set (args.hanji) and lang_mod._lang ({'nan', args.hanji, size = '115%'}) or nil, i);
i = add_label_data_pair (infobox_args, '[[Pe̍h-ōe-jī]]', is_set (args.poj) and lang_mod._lang ({'nan', args.poj, size = '115%'}) or nil, i);
i = add_label_data_pair (infobox_args, '[[Hàn-lô]]', is_set (args.hanlo) and lang_mod._lang ({'nan', args.hanlo, size = '115%'}) or nil, i);
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lm) and args.lm or nil, i)
if show then
if any_set ({args.tl, args.bp, args.hokkienipa}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'hokkien'); -- needs frame so that it can frame:expandTemplate()
end
else
i = add_label_data_pair (infobox_args, '[[Taiwanese Romanization System|Tâi-lô]]', is_set (args.tl) and args.tl or nil, i)
i = add_label_data_pair (infobox_args, '[[Bbánlám pìngyīm|Bbánpìng]]', is_set (args.bp) and args.bp or nil, i)
i = add_label_data_pair (infobox_args, '[[Help:IPA for Hokkien|IPA]]', is_set (args.hokkienipa) and args.hokkienipa or nil, i)
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ J A >---------------------------------------------------------
implements {{Infobox Chinese/Japanese}} (Note template has been moved to {{Infobox Japanese}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_ja}}
]]
local function ibox_mln_ja (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.japanese_header then
infobox_args['header1'] = args.header or args.japanese_header or 'Japanese name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Kanji]]', is_set (args.kanji) and lang_mod._lang ({'ja', args.kanji}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Kana]]', is_set (args.kana) and lang_mod._lang ({'ja', args.kana}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Hiragana]]', is_set (args.hiragana) and lang_mod._lang ({'ja', args.hiragana}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Katakana]]', is_set (args.katakana) and lang_mod._lang ({'ja', args.katakana}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Kyūjitai]]', is_set (args.kyujitai) and lang_mod._lang ({'ja', args.kyujitai}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Shinjitai]]', is_set (args.shinjitai) and lang_mod._lang ({'ja', args.shinjitai}) or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lja) and lang_mod._lang ({'ja', args.lja}) or nil, i)
if any_set ({args.romaji, args.revhep, args.tradhep, args.kunrei, args.nihon}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'ja'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ K O >---------------------------------------------------------
implements {{Infobox Chinese/Korean}} (Note template has been moved to {{Infobox Korean}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_ko}}
]]
local function ibox_mln_ko (frame, args)
if not args then
args = frame.args;
end
local show = 'no' ~= args.hide or nil; -- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.korean_header then
infobox_args['header1'] = args.header or args.korean_header or 'Korean name';
end
local i = 2;
if 'yes' == args.northkorea then
i = add_label_data_pair (infobox_args, '[[Hangul|Chosŏn\'gŭl]]', is_set (args.hangul) and lang_mod._lang ({'ko', args.hangul, size = '1rem'}) or nil, i)
elseif 'old' == args.northkorea then
i = add_label_data_pair (infobox_args, '[[Hunminjeongeum]]', is_set (args.hangul) and lang_mod._lang ({'ko', args.hangul, size = '1rem'}) or nil, i)
else
i = add_label_data_pair (infobox_args, '[[Hangul]]', is_set (args.hangul) and lang_mod._lang ({'ko', args.hangul, size = '1rem'}) or nil, i)
end
if 'yes' == args.northkorea then
i = add_label_data_pair (infobox_args, '[[Hanja|Hancha]]', is_set (args.hanja) and lang_mod._lang ({'ko', args.hanja, size = '1rem'}) or nil, i)
else
i = add_label_data_pair (infobox_args, '[[Hanja]]', is_set (args.hanja) and lang_mod._lang ({'ko', args.hanja, size = '1rem'}) or nil, i)
end
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lk) and args.lk or nil, i)
if show then
if any_set ({args.mr, args.rr}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'ko'); -- needs frame so that it can frame:expandTemplate()
end
else
i = add_label_data_pair (infobox_args, '[[Revised Romanization of Korean|Revised Romanization]]', is_set (args.rr) and lang_mod._xlit ({'ko', 'rr', args.rr}) or nil, i)
i = add_label_data_pair (infobox_args, '[[McCune–Reischauer]]', is_set (args.mr) and lang_mod._xlit ({'ko', 'mr', args.mr}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Help:IPA/Korean|IPA]]', is_set (args.koreanipa) and args.koreanipa or nil, i)
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ M N >---------------------------------------------------------
implements {{Infobox Chinese/Mongolian}} (Note template does not exist but should be created at {{Infobox Mongolian}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_mn}}
]]
local function ibox_mln_mn (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.mongolian_header then
infobox_args['header1'] = args.header or args.mongolian_header or 'Mongolian name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Mongolian Cyrillic script|Mongolian Cyrillic]]',
is_set (args.mon) and lang_mod._lang ({'mn', args.mon}) or nil, i)
-- i = add_label_data_pair (infobox_args, '[[Mongolian language|Mongolian]]', -- TODO: weird construct in original template; is this one required?
-- is_set (args.mong) and lang_mod._lang ({'mn', frame:expandTemplate ({title='MongolUnicode', args = {args.mong}}) }) or nil, i)
i = add_label_data_pair (infobox_args, '[[Mongolian script]]',
is_set (args.mong) and lang_mod._lang ({'mn', frame:expandTemplate ({title='MongolUnicode', args = {args.mong}}) }) or nil, i)
if is_set (args.monr) then
infobox_args['data' .. i] = transcriptions (frame, args, 'mn'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ M N C >-------------------------------------------------------
implements {{Infobox Chinese/Manchu}} (Note template has been moved to {{Infobox Manchu}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_mnc}}
]]
local function ibox_mln_mnc (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.manchu_header then
infobox_args['header1'] = args.header or args.manchu_header or 'Manchu name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Manchu alphabet|Manchu script]]', is_set (args.mnc) and frame:expandTemplate ({title='ManchuSibeUnicode', args = {lang='mnc', args.mnc}}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Transliterations of Manchu|Romanization]]', is_set (args.mnc_rom) and args.mnc_rom or nil, i)
i = add_label_data_pair (infobox_args, '[[Transliterations of Manchu|Abkai]]', is_set (args.mnc_a) and args.mnc_a or nil, i)
i = add_label_data_pair (infobox_args, '[[Transliterations of Manchu|Möllendorff]]', is_set (args.mnc_v) and args.mnc_v or nil, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ M Y >---------------------------------------------------------
implements {{Infobox Chinese/Burmese}} (Note template doesn't exist but should be created at {{Infobox Burmese}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_my}}
]]
local function ibox_mln_my (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.burmese_header then
infobox_args['header1'] = args.header or args.burmese_header or 'Burmese name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Burmese language|Burmese]]', is_set (args.my) and lang_mod._lang ({'my', args.my}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Wikipedia:IPA_for_Burmese|IPA]]', is_set (args.bi) and args.bi or nil, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ R U >---------------------------------------------------------
implements {{Infobox Chinese/Russian}} (Note template has been moved to {{Infobox Russian}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_ru}}
]]
local function ibox_mln_ru (frame, args)
if not args then
args = getArgs (frame);
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.russian_header then
infobox_args['header1'] = args.header or args.russian_header or 'Russian name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Russian language|Russian]]', is_set (args.rus) and lang_mod._lang ({'ru', args.rus}) or nil, i);
i = add_label_data_pair (infobox_args, '[[Romanization of Russian|Romanization]]', is_set (args.rusr) and lang_mod._lang ({'ru-Latn', args.rusr}) or nil, i); --TODO: use transl instead?
i = add_label_data_pair (infobox_args, '[[Wikipedia:IPA for Russian|IPA]]', is_set (args.rusipa) and args.rusipa or nil, i);
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.ruslit) and args.ruslit or nil, i);
if any_set ({args.scientific, args.Scientific, args.iso, args.ISO, args.gost, args.GOST, args['bgn/pcgn'], args['BGN/PCGN']}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'ru'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ T H >---------------------------------------------------------
implements {{Infobox Chinese/Thai}} (Note template has been moved to {{Infobox Thai}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_th}}
]]
local function ibox_mln_th (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.thai_header then
infobox_args['header1'] = args.header or args.thai_header or 'Thai name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Thai language|Thai]]', (is_set (args.th) or is_set (args.tha)) and lang_mod._lang ({'th', args.th or args.tha}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Royal Thai General System of Transcription|RTGS]]', is_set (args.rtgs) and lang_mod._xlit ({'th', 'rtgs', args.rtgs}) or nil, i)
i = add_label_data_pair (infobox_args, 'Romanization', is_set (args.rom) and lang_mod._xlit ({'th', args.rom}) or nil, i)
i = add_label_data_pair (infobox_args, '[[International Phonetic Alphabet|IPA]]', is_set (args.ipa) and args.ipa, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lit) and args.lit, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ U G >---------------------------------------------------------
implements {{Infobox Chinese/Uyghur}} (Note template has been moved to {{Infobox Uyghur}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_ug}}
]]
local function ibox_mln_ug (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.uyghur_header then
infobox_args['header1'] = args.header or args.uyghur_header or 'Uyghur name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Uyghur language|Uyghur]]', is_set (args.uig) and frame:expandTemplate ({title='ug-textonly', args = {args.uig}}) or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lu) and args.lu or nil, i)
if any_set ({args.uly, args.uyy, args.sgs, args.usy, args.uipa}) then
infobox_args['data' .. i] = transcriptions (frame, args, 'ug'); -- needs frame so that it can frame:expandTemplate()
end
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ V I >---------------------------------------------------------
implements {{Infobox Chinese/Vietnamese}} (Note template has been moved to {{Infobox Vietnamese}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_vi}}
]]
local function ibox_mln_vi (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.vietnamese_header then
infobox_args['header1'] = args.header or args.vietnamese_header or 'Vietnamese name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Vietnamese language|Vietnamese]]', is_set (args.vie) and lang_mod._lang ({'vi', args.vie}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Vietnamese alphabet]]', is_set (args.qn) and lang_mod._lang ({'vi', args.qn}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Hán-Nôm]]', is_set (args.hn) and lang_mod._lang ({'vi-Hani', args.hn}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Chữ Hán]]', is_set (args.chuhan) and lang_mod._lang ({'vi-Hani', args.chuhan}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Chữ Nôm]]', is_set (args.chunom) and lang_mod._lang ({'vi-Hani', args.chunom}) or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lqn) and args.lqn or nil, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ Z A >---------------------------------------------------------
implements {{Infobox Chinese/Zhuang}} (Note template doesn't exist and should be created at {{Infobox Zhuang}})
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_za}}
]]
local function ibox_mln_za (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
ibox_boilerplate (infobox_args, args);
if 'none' ~= args.header and 'none' ~= args.zhuang_header then
infobox_args['header1'] = args.header or args.zhuang_header or 'Zhuang name';
end
local i = 2;
i = add_label_data_pair (infobox_args, '[[Zhuang language|Zhuang]]', is_set (args.zha) and ('<span lang="za" style="font-family: Arial Unicode MS, sans-serif;">' .. args.zha .. '</span>') or nil, i)
i = add_label_data_pair (infobox_args, '[[Zhuang language|1957 orthography]]', is_set (args.zha57) and lang_mod._lang ({'za', args.zha57}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Sawndip]]', is_set (args.sd) and lang_mod._lang ({'za-Hani', args.sd}) or nil, i)
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ H E A D E R >-------------------------------------------------
bypasses {{Infobox Chinese/Header}}
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_header}}
]]
local function ibox_mln_header (frame, args)
if not args then
args = getArgs (frame);
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
infobox_args['decat'] = 'yes';
infobox_args['child'] = is_set (args.child) and args.child or 'yes';
-- infobox_args['bodystyle'] = is_set (args.float) and 'float: left; clear: left; margin: 0 1em 1em 0;' or nil;
-- infobox_args['bodyclass'] = is_set (args.collapse) and ('collapsible' .. ('yes' == args.collapse and ' collapsed' or '')) or nil;
local h_color;
if is_set (args.headercolor) then
h_color = args.headercolor;
else
h_color = '#b0c4de' -- TODO: #define various colors in a common config location; and function?
end
-- infobox_args['subheaderstyle'] = 'font-size: 125%; color: #202122;background-color:' .. h_color .. ';';
-- infobox_args['subheader'] = is_set (args.title) and args.title or mw.title.getCurrentTitle().text;
infobox_args['image'] = frame:callParserFunction ({name = '#invoke:InfoboxImage',
args =
{
'InfoboxImage',
image = args.pic,
sizedefault = 'frameless',
size = args.picsize,
upright = args.picupright,
alt = args.picalt or args.pictooltip
}
});
infobox_args['caption'] = is_set (args.piccap) and args.piccap or nil;
infobox_args['image2'] = frame:callParserFunction ({name = '#invoke:InfoboxImage',
args =
{
'InfoboxImage',
image = args.pic2,
sizedefault = 'frameless',
size = args.picsize2,
upright = args.picupright2,
alt = args.picalt2 or args.pictooltip2
}
});
infobox_args['caption2'] = is_set (args.piccap2) and args.piccap2 or nil;
infobox_args['headerstyle'] = 'color: #202122;background-color:' .. h_color;
infobox_args['headerstyle'] = 'width: 50%; white-space: nowrap';
-- always display the background of the image in light mode, see
-- [[Template_talk:Infobox_Chinese#Issue_in_dark_mode_or_inappropriate_use_of_infobox]]
-- FIXME: define new names for image arguments and migrate existing uses
-- to those names, so that we can use skin-invert instead for characters
infobox_args['imagestyle'] = 'color: var(--color-base,#202122);background-color: var(--background-color-base,#ffffff);';
-- infobox_args['imageclass'] = 'notheme'
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ M L N _ F O O T E R >-------------------------------------------------
bypasses {{Infobox Chinese/Footer}}
Module entry point
{{#invoke:Infobox multi-lingual name|ibox_mln_footer}}
]]
local function ibox_mln_footer (frame, args)
if not args then
args = frame.args;
end
local infobox_args = {}; -- table to hold arguments for frame:expandTemplate()
infobox_args['decat'] = 'yes';
infobox_args['child'] = is_set (args.child) and args.child or 'yes';
infobox_args['bodystyle'] = ''; -- present in wikisource template but not assigned a value there
infobox_args['below'] = args.footnote;
return frame:expandTemplate ({title='Infobox', args = infobox_args});
end
--[[-------------------------< I B O X _ Z H Z H _ E N U M _ P A R A M S _ G E T >----------------------------
]]
local function ibox_zhzh_enum_params_get (args, i)
local ibox_args = {};
local count = 0; -- counts how many args got added to ibox_args {}
for _, v in ipairs (data.ibox_zhzh_enum_params) do -- add enumerated parameters
if args[v .. i] then -- only when there is an assigned value
ibox_args[v] = args[v .. i]; -- add
count = count + 1; -- and tally
end
end
return 0 ~= count and ibox_args or nil; -- if table is empty return nil as a flag
end
--[[--------------------------< A R >--------------------------------------------------------------------------
----< A R A B I C >----
]]
local function ar (frame, args)
if is_set ({args.arabic, args.arabic_rom, args.arabic_ipa, args.arabic_lit}) then
local ibox_args = {
['arabic_header'] = args['arabic_header'] or 'Arabic name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['arabic'] = args.arabic,
['arabic_rom'] = args.arabic_rom,
['arabic_ipa'] = args.arabic_ipa,
['arabic_lit'] = args.arabic_lit or args['literal meaning'], -- 'literal meaning' is from {{Infobox Arabic term}}; itis param name a good idea? TODO: unify parameter names
['chat'] = args.chat or args.Chat, -- TODO: unify parameter names
['ala-lc'] = args['ala-lc'] or args['ALA-LC'], -- TODO: unify parameter names
['iso'] = args.iso or args.ISO, -- TODO: unify parameter names
['din'] = args.din or args.DIN -- TODO: unify parameter names
}
return ibox_mln_ar (frame, ibox_args);
end
end
--[[--------------------------< A S >--------------------------------------------------------------------------
----< A S S A M E S E >----
]]
local function as (frame, args)
if args.as or args.asm then
local ibox_args = {
['lang_hdr'] = args['as-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'as',
['lang_content'] = args.as or args.asm,
['lang_ipa'] = args['as-ipa'],
['lang_rom'] = args['as-rom'],
['lang_std'] = args['as-std'],
['lang_lit'] = args['as-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< B N >--------------------------------------------------------------------------
----< B E N G A L I >----
]]
local function bn (frame, args)
if args.bn or args.ben then
local ibox_args = {
['lang_hdr'] = args['bn-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'bn',
['lang_content'] = args.bn or args.ben,
['lang_ipa'] = args['bn-ipa'],
['lang_rom'] = args['bn-rom'],
['lang_std'] = args['bn-std'],
['lang_lit'] = args['bn-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< B O >--------------------------------------------------------------------------
----< T I B E T A N >----
]]
local function bo (frame, args)
if any_set ({args.tib, args.wylie, args.thdl, args.zwpy, args.lhasa}) then
local ibox_args = {
['tibetan_header'] = args['tibetan_header'] or 'Tibetan name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['tib'] = args.tib,
['wylie'] = args.wylie,
['thdl'] = args.thdl,
['zwpy'] = args.zwpy,
['lhasa'] = args.lhasa,
}
return ibox_mln_bo (frame, ibox_args);
end
end
--[[--------------------------< D N G >------------------------------------------------------------------------
----< D U N G A N E S E >----
]]
local function dng (frame, args)
if any_set ({args.dungan, args['dungan-xej'], args['dungan-han']}) then
local ibox_args = {
['dunganese_header'] = args['dunganese_header'] or 'Dunganese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['dungan'] = args.dungan,
['dungan-xej'] = args['dungan-xej'],
['dungan-han'] = args['dungan-han'],
['dungan-latin'] = args['dungan-latin'],
}
return ibox_mln_dng (frame, ibox_args);
end
end
--[[--------------------------< H I >--------------------------------------------------------------------------
----< H I N D I >----
]]
local function hi (frame, args)
if args.hi or args.hin then
local ibox_args = {
['lang_hdr'] = args['hi-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'hi',
['lang_content'] = args.hi or args.hin,
['lang_ipa'] = args['hi-ipa'],
['lang_rom'] = args['hi-rom'],
['lang_std'] = args['hi-std'],
['lang_lit'] = args['hi-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< I D >--------------------------------------------------------------------------
----< I N D O N E S I A N >----
]]
local function id (frame, args)
if args.id or args.ind then
local ibox_args = {
['lang_hdr'] = args['id-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'id',
['lang_content'] = args.id or args.ind,
['lang_ipa'] = args['id-ipa'],
['lang_rom'] = args['id-rom'],
['lang_std'] = args['id-std'],
['lang_lit'] = args['id-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< J A >--------------------------------------------------------------------------
----< J A P A N E S E >----
]]
local function ja (frame, args)
local children = {};
if any_set ({args.kanji, args.kana, args.hiragana, args.katakana, args.kyujitai, args.shinjitai, args.lja}) then
local ibox_args = {
['japanese_header'] = args['japanese_header'] or 'Japanese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['kanji'] = args.kanji,
['kyujitai'] = args.kyujitai,
['shinjitai'] = args.shinjitai,
['kana'] = args.kana,
['hiragana'] = args.hiragana,
['katakana'] = args.katakana,
['romaji'] = args.romaji,
['revhep'] = args.revhep,
['tradhep'] = args.tradhep,
['kunrei'] = args.kunrei,
['nihon'] = args.nihon,
['lja'] = args.lja
}
table.insert (children, ibox_mln_ja (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['kanji'..i], args['kana'..i], args['hiragana'..i], args['katakana'..i], args['kyujitai'..i], args['shinjitai'..i], args['lja'..i]}) then
local ibox_args = {
['japanese_header'] = args['japanese_header'..i] or 'Alternative Japanese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['kanji'] = args['kanji'..i],
['kyujitai'] = args['kyujitai'..i],
['shinjitai'] = args['shinjitai'..i],
['kana'] = args['kana'..i],
['hiragana'] = args['hiragana'..i],
['katakana'] = args['katakana'..i],
['romaji'] = args['romaji'..i],
['revhep'] = args['revhep'..i],
['tradhep'] = args['tradhep'..i],
['kunrei'] = args['kunrei'..i],
['nihon'] = args['nihon'..i],
['lja'] = args['lja'..i]
}
table.insert (children, ibox_mln_ja (frame, ibox_args));
end
end
return table.concat (children) or ''; -- big string of ja infoboxen or an empty string if nothing was done here
end
--[[--------------------------< K M >--------------------------------------------------------------------------
----< K H M E R >----
]]
local function km (frame, args)
if args.km or args.khm then
local ibox_args = {
['lang_hdr'] = args['km-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'km',
['lang_content'] = args.km or args.khm,
['lang_ipa'] = args['km-ipa'],
['lang_rom'] = args['km-rom'],
['lang_std'] = args['km-std'],
['lang_lit'] = args['km-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< K O 1 >------------------------------------------------------------------------
TODO: handle ko same way as enumerated zh?
----< K O R E A N (1) >----
]]
local function ko1 (frame, args)
local children = {};
if any_set ({args.hanja, args.hangul}) then
local ibox_args = {
['korean_header'] = args['korean_header'] or 'Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['hangul'] = args.hangul,
['hanja'] = args.hanja,
['rr'] = args.rr,
['mr'] = args.mr,
['northkorea'] = args.northkorea,
['lk'] = args.lk,
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['hanja'..i], args['hangul'..i]}) then
local ibox_args = {
['korean_header'] = args['korean_header'..i] or 'Alternative Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['hangul'..i],
['hanja'] = args['hanja'..i],
['rr'] = args['rr'..i],
['mr'] = args['mr'..i],
['northkorea'] = args['northkorea'..i],
['lk'] = args['lk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
--[[--------------------------< K O 2 >------------------------------------------------------------------------
TODO: handle ko same way as enumerated zh?
----< K O R E A N (2) >----
]]
local function ko2 (frame, args)
local children = {};
if any_set ({args.cnhanja, args.cnhangul}) then
local ibox_args = {
['korean_header'] = args['cnkorean_header'] or '[[Korean language in China|Chinese Korean]] name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['hangul'] = args.cnhangul,
['hanja'] = args.cnhanja,
['rr'] = args.cnrr,
['mr'] = args.cnmr,
['northkorea'] = 'yes',
['lk'] = args.cnlk,
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['cnhanja'..i], args['cnhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['cnkorean_header'..i] or 'Alternative [[Korean language in China|Chinese Korean]] namee',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['cnhangul'..i],
['hanja'] = args['cnhanja'..i],
['rr'] = args['cnrr'..i],
['mr'] = args['cnmr'..i],
['northkorea'] = 'yes',
['lk'] = args['cnlk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
--[[--------------------------< K O 3 >------------------------------------------------------------------------
TODO: handle ko same way as enumerated zh?
----< K O R E A N (3) >----
]]
local function ko3 (frame, args)
local children = {};
if any_set ({args.nkhanja, args.nkhangul}) then
local ibox_args = {
['korean_header'] = args['nkkorean_header'] or 'North Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['hangul'] = args.nkhangul,
['hanja'] = args.nkhanja,
['rr'] = args.nkrr,
['mr'] = args.nkmr,
['northkorea'] = 'yes',
['lk'] = args.nklk,
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['nkhanja'..i], args['nkhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['nkkorean_header'..i] or 'Alternative North Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['nkhangul'..i],
['hanja'] = args['nkhanja'..i],
['rr'] = args['nkrr'..i],
['mr'] = args['nkmr'..i],
['northkorea'] = 'yes',
['lk'] = args['nklk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
--[[--------------------------< K O 4 >------------------------------------------------------------------------
TODO: handle ko same way as enumerated zh?
----< K O R E A N (4) >----
]]
local function ko4 (frame, args)
local children = {};
if any_set ({args.skhanja, args.skhangul}) then
local ibox_args = {
['korean_header'] = args['skkorean_header'] or 'South Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['hangul'] = args.skhangul,
['hanja'] = args.skhanja,
['rr'] = args.skrr,
['mr'] = args.skmr,
['northkorea'] = nil,
['lk'] = args.sklk,
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['skhanja'..i], args['skhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['skkorean_header'..i] or 'Alternative South Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['skhangul'..i],
['hanja'] = args['skhanja'..i],
['rr'] = args['skrr'..i],
['mr'] = args['skmr'..i],
['northkorea'] = nil,
['lk'] = args['sklk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
--[[--------------------------< L O >--------------------------------------------------------------------------
----< L A O >----
]]
local function lo (frame, args)
if args.lo or args.lao then
local ibox_args = {
['lang_hdr'] = args['lo-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'lo',
['lang_content'] = args.lo or args.lao,
['lang_ipa'] = args['lo-ipa'],
['lang_rom'] = args['lo-rom'],
['lang_std'] = args['lo-std'],
['lang_lit'] = args['lo-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< M N >--------------------------------------------------------------------------
----< M O N G O L I A N >----
]]
local function mn (frame, args)
if any_set ({args.mong, args.mon}) then
local ibox_args = {
['mongolian_header'] = args['mongolian_header'] or 'Mongolian name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['mon'] = args.mon,
['mong'] = args.mong,
['monr'] = args.monr,
}
return ibox_mln_mn (frame, ibox_args);
end
end
--[[--------------------------< M N C >------------------------------------------------------------------------
----< M A N C H U >----
]]
local function mnc (frame, args)
if any_set ({args.mnc_rom, args.mnc}) then
local ibox_args = {
['manchu_header'] = args['manchu_header'] or 'Manchu name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['mnc'] = args.mnc,
['mnc_rom'] = args.mnc_rom,
['mnc_a'] = args.mnc_a,
['mnc_v'] = args.mnc_v,
}
return ibox_mln_mnc (frame, ibox_args);
end
end
--[[--------------------------< M S >--------------------------------------------------------------------------
----< M A L A Y >----
]]
local function ms (frame, args)
if args.ms or args.msa then
local ibox_args = {
['lang_hdr'] = args['ms-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'ms',
['lang_content'] = args.ms or args.msa,
['lang_ipa'] = args['ms-ipa'],
['lang_rom'] = args['ms-rom'],
['lang_std'] = args['ms-std'],
['lang_lit'] = args['ms-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< M Y >--------------------------------------------------------------------------
----< B U R M E S E >----
]]
local function my (frame, args)
if args.my then
local ibox_args = {
['burmese_header'] = args['burmese_header'] or 'Burmese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['my'] = args.my,
['bi'] = args.bi,
}
return ibox_mln_my (frame, ibox_args);
end
end
--[[--------------------------< N E >--------------------------------------------------------------------------
----< N E P A L I >----
]]
local function ne (frame, args)
if args.ne or args.nep then
local ibox_args = {
['lang_hdr'] = args['ne-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'ne',
['lang_content'] = args.ne or args.nep,
['lang_ipa'] = args['ne-ipa'],
['lang_rom'] = args['ne-rom'],
['lang_std'] = args['ne-std'],
['lang_lit'] = args['ne-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< P I >--------------------------------------------------------------------------
----< P A L I >----
]]
local function pi (frame, args)
if args.pi or args.pli then
local ibox_args = {
['lang_hdr'] = args['pi-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'pi',
['lang_content'] = args.pi or args.pli,
['lang_ipa'] = args['pi-ipa'],
['lang_rom'] = args['pi-rom'],
['lang_std'] = args['pi-std'],
['lang_lit'] = args['pi-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< P T >--------------------------------------------------------------------------
----< P O R T U G U E S E >----
]]
local function pt (frame, args)
if args.pt or args.por then
local ibox_args = {
['lang_hdr'] = args['pt-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'pt',
['lang_lbl'] = args['pt-label'],
['lang_content'] = args.pt or args.por,
['lang_ipa'] = args['pt-ipa'],
['lang_rom'] = args['pt-rom'],
['lang_std'] = args['pt-std'],
['lang_lit'] = args['pt-lit'],
['lang_lit'] = args['pt-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< P R A >------------------------------------------------------------------------
----< P R A K R I T >----
]]
local function pra (frame, args)
if args.pra then
local ibox_args = {
['lang_hdr'] = args['pra-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'pra',
['lang_content'] = args.pra,
['lang_ipa'] = args['pra-ipa'],
['lang_rom'] = args['pra-rom'],
['lang_std'] = args['pra-std'],
['lang_lit'] = args['pra-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< R U >--------------------------------------------------------------------------
----< R U S S I A N >----
]]
local function ru (frame, args)
if any_set ({args.rus, args.russian}) then -- TODO: unify parameter names
local ibox_args = {
['russian_header'] = args['russian_header'] or 'Russian name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['rus'] = args.rus or args.russian,
['rusr'] = args.rusr,
['rusipa'] = args.rusipa or args['native pronunciation'], -- TODO: unify parameter names
['ruslit'] = args.ruslit or args['literal meaning'], -- TODO: unify parameter names
['scientific'] = args.scientific,
['iso'] = args.iso,
['gost'] = args.gost,
['bgn/pcgn'] = args['bgn/pcgn'],
}
return ibox_mln_ru (frame, ibox_args);
end
end
--[[--------------------------< S A >--------------------------------------------------------------------------
----< S A N S K R I T >----
]]
local function sa (frame, args)
if args.sa or args.san then
local ibox_args = {
['lang_hdr'] = args['sa-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'sa',
['lang_content'] = args.sa or args.san,
['lang_ipa'] = args['sa-ipa'],
['lang_rom'] = args['sa-rom'],
['lang_std'] = args['sa-std'],
['lang_lit'] = args['sa-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< T A >--------------------------------------------------------------------------
----< T A M I L >----
]]
local function ta (frame, args)
if args.ta or args.tam then
local ibox_args = {
['lang_hdr'] = args['ta-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'ta',
['lang_content'] = args.ta or args.tam,
['lang_ipa'] = args['ta-ipa'],
['lang_rom'] = args['ta-rom'],
['lang_std'] = args['ta-std'],
['lang_lit'] = args['ta-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< T E T >------------------------------------------------------------------------
----< T E T U M >----
]]
local function tet (frame, args)
if args.tet then
local ibox_args = {
['lang_hdr'] = args['tet-hdr'],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'tet',
['lang_content'] = args.tet,
['lang_ipa'] = args['tet-ipa'],
['lang_rom'] = args['tet-rom'],
['lang_std'] = args['tet-std'],
['lang_lit'] = args['tet-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< T H >--------------------------------------------------------------------------
----< T H A I >----
]]
local function th (frame, args)
if args.th or args.tha then
local ibox_args = {
['thai_header'] = args['thai_header'] or 'Thai name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['header'] = args['th-hdr'],
['th'] = args.th or args.tha,
['rtgs'] = args.rtgs,
['ipa'] = args['th-ipa'],
['rom'] = args['th-rom'],
['std'] = args['th-std'],
['lit'] = args['th-lit'],
}
return ibox_mln_th (frame, ibox_args);
end
end
--[[--------------------------< T L >--------------------------------------------------------------------------
----< F I L I P I N O >----
]]
local function tl (frame, args)
-- if args.tl or args.tgl then
if args.tgl then
local ibox_args = {
-- ['blank_header'] = 'Filipino name',
['lang_hdr'] = args['tl-hdr'] or 'Filipino name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = 'tl',
-- ['lang_content'] = args.tl or args.tgl, -- tl is used for Taiwanese Romanization System of Hokkien
['lang_content'] = args.tgl,
['lang_ipa'] = args['tl-ipa'],
['lang_rom'] = args['tl-rom'],
['lang_std'] = args['tl-std'],
['lang_lit'] = args['tl-lit'],
}
return ibox_mln_blank (frame, ibox_args);
end
end
--[[--------------------------< U G >--------------------------------------------------------------------------
----< U Y G H U R >----
]]
local function ug (frame, args)
if args.uig then
local ibox_args = {
['uyghur_header'] = args['uyghur_header'] or 'Uyghur name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['uig'] = args.uig,
['lu'] = args.lu,
['uly'] = args.uly,
['uyy'] = args.uyy,
['sgs'] = args.sgs,
['usy'] = args.usy,
['uipa'] = args.uipa,
}
return ibox_mln_ug (frame, ibox_args);
end
end
--[[--------------------------< V I >--------------------------------------------------------------------------
----< V I E T N A M E S E >----
]]
local function vi (frame, args)
if any_set ({args.qn, args.vie, args.chuhan}) then
local ibox_args = {
['vietnamese_header'] = args['vietnamese_header'] or 'Vietnamese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['vie'] = args.vie,
['qn'] = args.qn,
['hn'] = args.hn,
['chuhan'] = args.chuhan,
['chunom'] = args.chunom,
['lqn'] = args.lqn,
}
return ibox_mln_vi (frame, ibox_args);
end
end
--[[--------------------------< Z A >--------------------------------------------------------------------------
----< Z H U A N G >----
]]
local function za (frame, args)
if args.zha then
local ibox_args = {
['zhuang_header'] = args['zhuang_header'] or 'Zhuang name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['zha'] = args.zha,
['zha57'] = args.zha57,
['sd'] = args.sd,
}
return ibox_mln_za (frame, ibox_args);
end
end
--[[--------------------------< Z H >--------------------------------------------------------------------------
----------< C H I N E S E >----------
]]
local function zh (frame, args)
local children = {};
if any_set ({args.c, args.t, args.p, args.s}) then -- first infobox zh/zh
local ibox_args = ibox_zhzh_enum_params_get (args, ''); -- get the enumerated parameters (here enumerator is empty string)
if ibox_args then
ibox_args['hide'] = args.hide;
ibox_args['showflag'] = args.showflag;
ibox_args['order'] = args.order;
ibox_args['p'] = args.p or args.hp; -- add special case parameters
ibox_args['xej'] = args.xej and lang_mod._lang ({'zh-Arab', args.xej});
if 'yes' == args.child then
ibox_args['chinese_header'] = args['chinese_header'] or args.name1; -- show the header name from parameter or default name from ibox_mln_zh()
elseif any_set ({ -- when any of these are set there will be other child infoboxen so ...
args.hangul, args.hanja, args.kana, args.kanji, args.hiragana,
args.katakana, args.kyujitai, args.shinjitai, args.tam, args.hin,
args.san, args.pli, args.tgl, args.msa, args.mnc, args.mon, args.mong,
args.por, args.rus, args.tha, args.tib, args.qn, args.uig, args.vie,
args.chuhan, args.chunom, args.hn, args.zha, args['dungan-xej'],
args.dungan, args.lao, args.khm, args.tet, args.lang1, args.lang2,
args.lang3, args.lang4, args.lang5, args.lang6, args.lang7, args.lang8,
args.lang9, args.lang10, args.lang11,
}) then
ibox_args['chinese_header'] = args['chinese_header'] or args.name1; -- ... show the header name from parameter or default name from ibox_mln_zh()
else
ibox_args['chinese_header'] = args['chinese_header'] or args.name1 or 'none'; -- show the header name from parameter or no header (args.name1 missing or 'empty' - nil)
end
ibox_args['headercolor'] = args['child-hdr-color'] or args.headercolor;
table.insert (children, ibox_mln_zh (frame, ibox_args));
end
end
for i=2, 6 do
if any_set ({args['c'..i], args['t'..i], args['p'..i], args['s'..i]}) then
local ibox_args = ibox_zhzh_enum_params_get (args, i); -- get the enumerated parameters
if ibox_args then
ibox_args['hide'] = args.hide;
ibox_args['showflag'] = args.showflag;
ibox_args['order'] = args.order;
ibox_args['p'] = args['p'..i] or args['hp'..i]; -- add special case parameters
ibox_args['xej'] = args['xej'..i] and lang_mod._lang ({'zh-Arab', args['xej'..i]});
if args[data.zh_hdr_names[i][1]] then
ibox_args['chinese_header'] = args[data.zh_hdr_names[i][1]]; -- use value from parameter
else
ibox_args['chinese_header'] = args['chinese_header'..i] or data.zh_hdr_names[i][2]; -- use the default
end
ibox_args['headercolor'] = args['child-hdr-color'] or args.headercolor;
table.insert (children, ibox_mln_zh (frame, ibox_args));
end
end
end
return table.concat (children) or ''; -- big string of zh infoboxen or an empty string if nothing was done here
end
--[[==========================<< I B O X _ M L N >>============================================================
implements {{Infobox Chinese}}
TODO: do a valueFunc () on getArgs() so that when they are blank we acknowledge the blank (|name1= present with
empty string or whitespace as assigned value)
]]
local function ibox_mln (frame)
local args = getArgs(frame); -- also gets parent frame params (there are no frame params for this function) TODO:, {removeBlanks = false}?
local infobox_args = {}; -- table to hold arguments for ibox_mln frame:expandTemplate()
local children = {}; -- table of returned infoboxen text
----------< H E A D E R I N F O B O X >----------
infobox_args['child'] = args.child;
infobox_args['rowstyle1'] = 'display:none;';
if 'yes' ~= args.child then
local hdr_args = {
['title'] = args.title or mw.title.getCurrentTitle().text:gsub ('%s+%b()$', ''); -- mimic {{PAGENAMEBASE}} (template not magic word)
['headercolor'] = args.headercolor,
['float'] = args.float,
['collapse'] = args.collapse,
['pic'] = args.pic or args.image, -- TODO: unify parameter names
['picsize'] = args.picsize or args.imgwidth, -- TODO: unify parameter names
['picupright'] = args.picupright,
['picalt'] = args.picalt,
['pictooltip'] = args.pictooltip,
['piccap'] = args.piccap or args.caption, -- TODO: unify parameter names
['pic2'] = args.pic2,
['picsize2'] = args.picsize2,
['picupright2'] = args.picupright2,
['picalt2'] = args.picalt2,
['pictooltip2'] = args.pictooltip2,
['piccap2'] = args.piccap2,
}
table.insert (children, ibox_mln_header (frame, hdr_args));
end
----------< L A N G U A G E I N F O B O X E N >----------
local lang_iboxen = { -- table of codes used in |ibox-order= and their matching function pointers
['ar'] = ar, ['as'] = as, ['bn'] = bn, ['bo'] = bo, ['dng'] = dng,
['hi'] = hi, ['id'] = id, ['ja'] = ja, ['km'] = km, ['ko1'] = ko1,
['ko2'] = ko2, ['ko3'] = ko3, ['ko4'] = ko4, ['lo'] = lo, ['mn'] = mn,
['mnc'] = mnc, ['ms'] = ms, ['my'] = my, ['ne'] = ne, ['pi'] = pi,
['pra'] = pra, ['pt'] = pt, ['ru'] = ru, ['sa'] = sa, ['ta'] = ta,
['tet'] = tet, ['th'] = th, ['tl'] = tl, ['ug'] = ug, ['vi'] = vi,
['za'] = za, ['zh'] = zh
}
local lang_ibox_order = { -- default list of lang ibox calling functions as used by legacy {{Infobox Chinese}}
zh, my, bo, dng, vi, th, za, ko1, ko2, ko3, ko4, mn, ja, ms, id, tl,
ug, mnc, bn, as, ne, pra, ta, hi, sa, pi, pt, ru, lo, km, tet
};
if args['ibox-order'] then -- parameter value is comma-separated list of lang iboxen to render and their order
local t = mw.text.split (args['ibox-order'], '%s*,%s*') -- make a table from the list
lang_ibox_order = {}; -- reset; don't use default list
for _, v in ipairs (t) do -- spin through the lang_ibox_order list in order and
if lang_iboxen[v] then -- if there is a matching ibox function
table.insert (lang_ibox_order, lang_iboxen[v]); -- add it to the list of functions to call; TODO: error message when specified language does not exist?
end
end
end
for _, ibox_func in ipairs (lang_ibox_order) do -- call each function in the list in the list order
table.insert (children, ibox_func (frame, args) or ''); -- add ibox string (or empty string when there is no ibox string)
end
----------< B L A N K # I N F O B O X E N >----------
local i = 1; -- blank ibox enumerator
while args['lang' .. i] and (args['lang-content' .. i] or args['lang' .. i .. '_content']) do -- for as many ibox blank as there are ...
local ibox_args = {
['lang_hdr'] = args['lang-hdr' .. i],
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['lang'] = args['lang' .. i],
['lang_label'] = args['lang-lbl' .. i],
['lang_content'] = args['lang-content' .. i] or args['lang' .. i .. '_content'],
['lang_ipa'] = args['lang-ipa' .. i],
['lang_rom'] = args['lang-rom' .. i],
['lang_std'] = args['lang-std' .. i],
['lang_lit'] = args['lang-lit' .. i],
}
table.insert (children, ibox_mln_blank (frame, ibox_args));
i = i + 1; -- bump the enumerator
end
----------< F O O T E R I N F O B O X >----------
if 'yes' ~= args.child then
table.insert (children, ibox_mln_footer (frame, {['footnote'] = args.footnote}));
end
----------< R E N D E R >----------
return table.concat (children); -- concatenate all of the children together into a ginormous string
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
these not used outside of old {{Infobox Chinese}}:
ibox_mln_dng = ibox_mln_dng, -- {{infobox Chinese/Dunganese}}
ibox_mln_mn = ibox_mln_mn, -- {{infobox Chinese/Mongolian}}
ibox_mln_mnc = ibox_mln_mnc, -- {{infobox Chinese/Manchu}}
ibox_mln_my = ibox_mln_my, -- {{infobox Chinese/Burmese}}
ibox_mln_th = ibox_mln_th, -- {{infobox Chinese/Thai}}
ibox_mln_ug = ibox_mln_ug, -- {{infobox Chinese/Uyghur}}
ibox_mln_za = ibox_mln_za, -- {{infobox Chinese/Zhuang}}
these templates require parameter-name unification before they can directly use this module (and avoid the subtemplates):
{{Infobox Tibetan-Chinese}} uses:
{{Infobox Chinese/Chinese}}
{{Infobox Chinese/Tibetan}}
{{Infobox East Asian name}} uses:
{{Infobox Chinese/Chinese}}
{{Infobox Chinese/Japanese}}
{{Infobox Chinese/Korean}}
{{Infobox Chinese/Russian}}
{{Infobox Chinese/Blank}}
]]
return {
ibox_mln = ibox_mln, -- {{infobox Chinese}}
ibox_mln_ar = ibox_mln_ar, -- {{infobox Chinese/Arabic}} (used in Template:Infobox Arabic term)
ibox_mln_blank = ibox_mln_blank, -- {{infobox Chinese/Blank}}
ibox_mln_bo = ibox_mln_bo, -- {{infobox Chinese/Tibetan}}
ibox_mln_footer = ibox_mln_footer, -- {{infobox Chinese/Footer}}
ibox_mln_header = ibox_mln_header, -- {{infobox Chinese/Header}}
ibox_mln_hokkien = ibox_mln_hokkien, -- {{infobox Chinese/Hokkien}} (used in Template:Infobox Hokkien name)
ibox_mln_ja = ibox_mln_ja, -- {{infobox Chinese/Japanese}}
ibox_mln_ko = ibox_mln_ko, -- {{infobox Chinese/Korean}}
ibox_mln_ru = ibox_mln_ru, -- {{infobox Chinese/Russian}} (used in Template:Infobox Russian term)
ibox_mln_vi = ibox_mln_vi, -- {{infobox Chinese/Vietnamese}} (used in Template:Infobox Vietnamese)
ibox_mln_zh = ibox_mln_zh, -- {{infobox Chinese/Chinese}}
}
moth5px1yt2z26dwyy468atbq3l9gqz
ᥛᥨᥝᥱ ᥓᥧᥰ:Infobox multi-lingual name/data
828
2687
8025
2026-10-20T01:00:13Z
Saimawnkham
28
Created page with "--[[--------------------------< L A B E L _ M A P >------------------------------------------------------------ Table to map |showflags= value to the |labeln= parameter value for {{Infobox}} TODO: convert showflag to a comma delimited list instead of these peculiar codes? ]] local label_map = { ['bp'] = '[[Bbánlám pìngyīm|Bbánlám Pìngyīm]]', ['bpmf'] = '[[Bopomofo]]', ['gan'] = '[[Gan Chinese|Gan]]', ['gd'] = '[[Guangdong Romanization]]', ['h'] = '[[Gua..."
8025
Scribunto
text/plain
--[[--------------------------< L A B E L _ M A P >------------------------------------------------------------
Table to map |showflags= value to the |labeln= parameter value for {{Infobox}}
TODO: convert showflag to a comma delimited list instead of these peculiar codes?
]]
local label_map = {
['bp'] = '[[Bbánlám pìngyīm|Bbánlám Pìngyīm]]',
['bpmf'] = '[[Bopomofo]]',
['gan'] = '[[Gan Chinese|Gan]]',
['gd'] = '[[Guangdong Romanization]]',
['h'] = '[[Guangdong Romanization#Hakka|Hakka]]',
['hsn'] = '[[Xiang Chinese|Xiang]]',
['j'] = '[[Jyutping]]',
['p'] = '[[Hanyu Pinyin]]',
['phfs'] = '[[Pha̍k-fa-sṳ]]',
['poj'] = '[[Hokkien]] [[Pe̍h-ōe-jī|POJ]]',
['psic'] = '[[Sichuanese Mandarin|Sichuanese]] [[Sichuanese Pinyin|Pinyin]]',
['tl'] = '[[Taiwanese Romanization System|Tâi-lô]]',
['toi'] = '[[Taishanese]]',
['tp'] = '[[Tongyong Pinyin]]',
['w'] = '[[Wade–Giles]]',
['wgn'] = '[[Romanization of Wu Chinese|Wugniu]]',
['wuu'] = '[[Wu Chinese|Wu]]',
['xej'] = '[[Xiao\'erjing]]',
['y'] = '[[Cantonese]] [[Yale romanization of Cantonese|Yale]]',
}
--[[--------------------------< T R A N S L _ M A P >----------------------------------------------------------
Table to map |showflags= value to an index into label_map for child infobox |labeln= value and to map |showflags=
value to the correct parameter for use in child infobox |datan= parameter
Implementation deatils of |showflag= are in dispute see: Template_talk:Infobox_Chinese#Rfc_on_fixing_the_template_showflag
linked conversation is at: Template_talk:Infobox_Chinese/Archive_4#Showflag broken
]]
local transl_map = { -- maps |showflag= value to label from label_map table and data from matching parameter name
['bp'] = {['label1'] = 'bp', ['data1'] = 'bp'},
['bpmf'] = {['label1'] = 'bpmf', ['data1'] = 'bpmf'},
['gan'] = {['label1'] = 'gan', ['data1'] = 'gan'},
['gdp'] = {['label1'] = 'gd', ['data1'] = 'gd', ['label2'] = 'p', ['data2'] = 'p'},
['h'] = {['label1'] = 'h', ['data1'] = 'h'},
['hsn'] = {['label1'] = 'hsn', ['data1'] = 'hsn'},
['j'] = {['label1'] = 'j', ['data1'] = 'j'},
['jp'] = {['label1'] = 'j', ['data1'] = 'j', ['label2'] = 'p', ['data2'] = 'p'},
['jy'] = {['label1'] = 'j', ['data1'] = 'j', ['label2'] = 'y', ['data2'] = 'y'},
['jyp'] = {['label1'] = 'j', ['data1'] = 'j', ['label2'] = 'y', ['data2'] = 'y', ['label3'] = 'p', ['data3'] = 'p'},
['p'] = {['label1'] = 'p', ['data1'] = 'p'},
['phfs'] = {['label1'] = 'phfs', ['data1'] = 'phfs'},
['phsn'] = {['label1'] = 'p', ['data1'] = 'p', ['label2'] = 'hsn', ['data2'] = 'hsn'},
['pj'] = {['label1'] = 'p', ['data1'] = 'p', ['label2'] = 'j', ['data2'] = 'j'},
['poj'] = {['label1'] = 'poj', ['data1'] = 'poj'},
['psic'] = {['label1'] = 'p', ['data1'] = 'p', ['label2'] = 'sic', ['data2'] = 'sic'},
['pwuu'] = {['label1'] = 'p', ['data1'] = 'p', ['label2'] = 'wuu', ['data2'] = 'wuu'},
['py'] = {['label1'] = 'p', ['data1'] = 'p', ['label2'] = 'y', ['data2'] = 'y'},
['tl'] = {['label1'] = 'tl', ['data1'] = 'tl'},
['toip'] = {['label1'] = 'toi', ['data1'] = 'toi', ['label2'] = 'p', ['data2'] = 'p'},
['tp'] = {['label1'] = 'tp', ['data1'] = 'tp'},
['wp'] = {['label1'] = 'w', ['data1'] = 'w', ['label2'] = 'p', ['data2'] = 'p'},
['wgn'] = {['label1'] = 'wgn', ['data1'] = 'wgn'},
['wuu'] = {['label1'] = 'wuu', ['data1'] = 'wuu'},
['y'] = {['label1'] = 'y', ['data1'] = 'y'},
['yj'] = {['label1'] = 'y', ['data1'] = 'y', ['label2'] = 'j', ['data2'] = 'j'},
['xej'] = {
['label1'] = 'xej',
['data1'] = 'xej', -- ???? what to do about this; template calls {{lang|zh-Arab|{{{xej}}}}} on this value
},
['xejp'] = {
['label1'] = 'xej',
['data1'] = 'xej', -- ???? template does not call {{lang|zh-Arab|{{{xej}}}}} on this value; why?
['label2'] = 'p',
['data2'] = 'p'
},
}
--[[--------------------------< K E Y S >----------------------------------------------------------------------
]]
local keys = { -- table of xscript table keys calls
ar = 'arabic',
bo = 'tibetan',
hokkien = 'hokkien',
ja = 'japanese',
ko = 'korean',
mn = 'mongolian',
ru = 'russian',
ug = 'uyghur',
}
--[[--------------------------< X S C R I P T >----------------------------------------------------------------
table that holds the various transcription headers and labels used by transcriptions()
indexed in this table are lower case versions of the header display text without punctuation (if any)
TODO: add support for transl transliteration standard parameter; akin to {{transl|lang code|standard code|text|italic=??}}
]]
local xscript = {
['standard mandarin'] = { -- lower case version of the header display text
['header'] = '[[Standard Chinese|Standard Mandarin]]', -- text to be displayed if headers are displayed
['t'] = { -- table of labels and their associated data parameter
{'[[Hanyu Pinyin]]', 'p'}, -- label is [[Hanyu Pinyin]], data is taken from |p= parameter
{'[[Bopomofo]]','bpmf'},
{'[[Spelling in Gwoyeu Romatzyh|Gwoyeu Romatzyh]]', 'gr'},
{'[[Wade–Giles]]', 'w'},
{'[[Tongyong Pinyin]]', 'tp'},
{'[[Yale romanization of Mandarin|Yale Romanization]]', 'myr'},
{'[[Mandarin Phonetic Symbols II|MPS2]]', 'mps'},
{'[[Help:IPA/Mandarin|IPA]]', 'mi'}
}
},
['other mandarin'] = {
['header'] = '[[Mandarin Chinese|other Mandarin]]',
['t'] = {
{'[[Xiao\'erjing]]', 'xej'},
{'[[Dungan language|Dungan]]','zh-dungan'},
{'[[Sichuanese Mandarin|Sichuanese]] [[Sichuanese Pinyin|Pinyin]]', 'sic'},
}
},
['wu'] = {
['header'] = '[[Wu Chinese|Wu]]',
['t'] = {
{'[[Romanization of Wu Chinese|Wugniu]]', 'wgn'},
{'[[Romanization of Wu Chinese|Romanization]]', 'wuu'},
{'[[Wenzhounese]]<br />[[Wenzhounese romanisation|Romanisation]]', 'ouji'},
{'[[Suzhounese]]', 'suz'},
{'[[Help:IPA/Wu Chinese|IPA]]', 'wi'},
}
},
['gan'] = {
['header'] = '[[Gan Chinese|Gan]]',
['t'] = {
{'Romanization', 'gan'},
}
},
['xiang'] = {
['header'] = '[[Xiang Chinese|Xiang]]',
['t'] = {
{'IPA', 'hsn'},
}
},
['hakka'] = {
['header'] = '[[Hakka Chinese|Hakka]]',
['t'] = {
{'[[Guangdong Romanization#Hakka|Romanization]]', 'h'},
{'[[Pha̍k-fa-sṳ]]', 'phfs'},
}
},
['yue cantonese'] = {
['header'] = '[[Cantonese|Yue: Cantonese]]',
['t'] = {
{'[[Yale romanization of Cantonese|Yale Romanization]]', 'y'},
{'[[Jyutping]]', 'j'},
{'[[Sidney Lau romanisation|Sidney Lau]]', 'sl'},
{'[[Guangdong Romanization|Canton Romanization]]', 'gd'},
{'[[Hong Kong Government Cantonese Romanisation|Hong Kong Romanisation]]', 'hk'},
{'[[Cantonese#Romanization|Macau Romanization]]', 'mo'},
{'[[Help:IPA/Cantonese|IPA]]', 'ci'},
}
},
['other yue'] = {
['header'] = '[[Yue Chinese|other Yue]]',
['t'] = {
{'[[Taishanese]]', 'toi'},
}
},
['southern min'] = {
['header'] = '[[Southern Min]]',
['t'] = {
{'[[Hokkien]] [[Pe̍h-ōe-jī|POJ]]', 'poj'},
{'[[Taiwanese Romanization System|Tâi-lô]]', 'tl'},
{'[[Bbánlám pìngyīm|Bbánlám Pìngyīm]]', 'bp'},
{'[[Teochew dialect|Teochew]] [[Guangdong Romanization#Teochew|Peng\'im]]', 'teo'},
{'[[Hainanese]] Romanization', 'hain'},
{'[[Leizhou Min|Leizhou]] Romanization', 'lizu'},
}
},
['eastern min'] = {
['header'] = '[[Eastern Min]]',
['t'] = {
{'[[Fuzhou dialect|Fuzhou]] [[Foochow Romanized|BUC]]', 'buc'},
}
},
['pu-xian min'] = {
['header'] = '[[Pu-Xian Min]]',
['t'] = {
{'[[Pu-Xian Min|Hinghwa]] [[Hinghwa Romanized|BUC]]', 'hhbuc'},
}
},
['northern min'] = {
['header'] = '[[Northern Min]]',
['t'] = {
{'[[Jian\'ou dialect|Jian\'ou]] [[Kienning Colloquial Romanized|Romanized]]', 'mblmc'},
}
},
['old mandarin'] = {
['header'] = '[[Old Mandarin]]',
['t'] = {
{'Romanized \'Phags-pa', 'phagspa-latin'},
}
},
['middle chinese'] = {
['header'] = '[[Middle Chinese]]',
['t'] = {
{'[[Middle Chinese]]', 'mc'},
{'[[Middle Chinese#Early Middle Chinese|Early Middle Chinese]]', 'emc'},
{'[[Middle Chinese#Late Middle Chinese|Late Middle Chinese]]', 'lmc'},
}
},
['old chinese'] = {
['header'] = '[[Old Chinese]]',
['t'] = {
{'[[Reconstructions_of_Old_Chinese#Baxter (1992)|Baxter (1992)]]', 'oc-b92'},
{'[[Reconstructions of Old Chinese#Baxter–Sagart (2014)|Baxter–Sagart (2014)]]', 'oc-bs'},
{'[[Reconstructions of Old Chinese#Zhengzhang (1981–1995)|Zhengzhang]]', 'oc-zz'},
}
},
--------< non-Chinese transcriptions >--------
['arabic'] = {
['header'] = nil, -- {{Infobox Chinese/Arabic}}; doesn't use header
['t'] = {
{'[[Arabic chat alphabet|Chat]]', 'chat'}, -- TODO: standardize on lowercase parameter names
{'[[Arabic chat alphabet|Chat]]', 'Chat'},
{'[[ALA-LC romanization|ALA-LC]]', 'ala-lc'},
{'[[ALA-LC romanization|ALA-LC]]', 'ALA-LC'},
{'[[ISO 233|ISO]]', 'iso'},
{'[[ISO 233|ISO]]', 'ISO'},
{'[[DIN 31635|DIN]]', 'din'},
{'[[DIN 31635|DIN]]', 'DIN'},
}
},
['hokkien'] = {
['header'] = nil, -- {{Infobox Chinese/Hokkien}}; doesn't use header
['t'] = {
{'[[Taiwanese Romanization System|Tâi-lô]]', 'tl'},
{'[[Bbánlám pìngyīm|Bbánpìng]]', 'bp'},
{'[[Help:IPA for Hokkien|IPA]]', 'hokkienipa'},
}
},
['japanese'] = {
['header'] = nil, -- {{Infobox Chinese/Japanese}}; doesn't use header
['t'] = {
{'[[Romanization of Japanese|Romanization]]', 'romaji'},
{'[[Hepburn romanization|Revised Hepburn]]', 'revhep'},
{'[[Hepburn romanization|Traditional Hepburn]]', 'tradhep'},
{'[[Kunrei-shiki romanization|Kunrei-shiki]]', 'kunrei'},
{'[[Nihon-shiki romanization|Nihon-shiki]]', 'nihon'},
}
},
['korean'] = {
['header'] = nil, -- {{Infobox Chinese/Korean}}; doesn't use header
['t'] = {
{'[[Revised Romanization of Korean|Revised Romanization]]', 'rr'},
{'[[McCune–Reischauer]]', 'mr'},
{'[[Yale romanization of Korean|Yale]]', 'kyale'},
{'[[Help:IPA/Korean|IPA]]', 'koreanipa'},
}
},
['mongolian'] = {
['header'] = nil, -- {{Infobox Chinese/Mongolian}}; doesn't use header
['t'] = {
{'[[SASM/GNC romanization#Mongolian|SASM/GNC]]', 'monr'},
}
},
['russian'] = {
['header'] = nil, -- {{Infobox Chinese/Russian}}; doesn't use header
['t'] = {
{'[[Scientific transliteration of Cyrillic|Scientific]]', 'scientific'},
{'[[Scientific transliteration of Cyrillic|Scientific]]', 'Scientific'},
{'[[ISO 9|ISO]]', 'iso'},
{'[[ISO 9|ISO]]', 'ISO'},
{'[[GOST 16876-71|GOST 71]]', 'gost'},
{'[[GOST 16876-71|GOST 71]]', 'GOST'},
{'[[BGN/PCGN romanization of Russian|BGN/PCGN]]', 'bgn/pcgn'},
{'[[BGN/PCGN romanization of Russian|BGN/PCGN]]', 'BGN/PGCN'},
}
},
['tibetan'] = {
['header'] = nil, -- {{Infobox Chinese/Tibetan}}; doesn't use header
['t'] = {
{'[[Wylie transliteration|Wylie]]', 'wylie'},
{'[[THL Simplified Phonetic Transcription|THL]]', 'thdl'},
{'[[Tibetan pinyin|Tibetan Pinyin]]', 'zwpy'},
{'[[Standard Tibetan|Lhasa]] [[Help:IPA/Tibetan|IPA]]', 'lhasa'},
}
},
['uyghur'] = {
['header'] = nil, -- {{Infobox Chinese/Uyghur}}; doesn't use header
['t'] = {
{'[[Uyghur Latin alphabet|Latin Yëziqi]]', 'uly'},
{'[[Uyghur New Script|Yengi Yeziⱪ]]', 'uyy'},
{'[[SASM/GNC romanization#Uyghur|SASM/GNC]]', 'sgs'},
{'[[Uyghur Cyrillic alphabet|Siril Yëziqi]]', 'usy'},
{'Uyghur [[Wikipedia: IPA|IPA]]', 'uipa'},
}
},
}
--[[--------------------------< I B O X _ Z H Z H _ E N U M _ P A R A M S >------------------------------------
]]
local ibox_zhzh_enum_params = { -- 'p', 'hp', 'xej' are special case enum parameters
'c', 't', 's', 'l', 'tp', 'w', 'mi', 'myr', 'psp', 'myale', 'gr', 'bpmf', 'mps',
'zh-dungan', 'sic', 'y', 'j', 'sl', 'gd', 'hk', 'mo', 'ci', 'toi', 'gan', 'wgn', 'wuu', 'ouji', 'suz', 'wi',
'hsn', 'h', 'phfs', 'poj', 'tl', 'bp', 'buc', 'hhbuc', 'mblmc', 'teo', 'lizu', 'hain',
'mc', 'emc', 'lmc', 'oc-bs', 'oc-zz',
'oc-b92', -- only supported in the first ibox zhzh; why?
'lao', 'khm', 'tet' -- not supported by ibox zh/zh why are they here?
}
--[[--------------------------< Z H _ H D R _ N A M E S >------------------------------------------------------
this table fixes an oddity in the ibox zh/zh header name parameters. |chinese_header= for the first ibox zh/zh
gets filled from |name1= but the second gets its name from |altname= and then the third from |altname3=.
All of these parameter names should be replaced with |chinese_header= followed by |chinese_header2= ... like all
of the other enumerated parameters
]]
local zh_hdr_names = {
[2] = {'altname', 'Alternative Chinese name'},
[3] = {'altname3', 'Second alternative Chinese name'},
[4] = {'altname4', 'Third alternative Chinese name'},
[5] = {'altname5', 'Fourth alternative Chinese name'},
[6] = {'altname6', 'Fifth alternative Chinese name'},
};
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
ibox_zhzh_enum_params = ibox_zhzh_enum_params,
keys = keys,
label_map = label_map,
transl_map = transl_map,
xscript = xscript,
zh_hdr_names = zh_hdr_names,
}
1tv77qebmer58wl5xpcwulbjrtiuo57
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Bopomofo spacing
10
2688
8026
2026-10-20T01:01:24Z
Saimawnkham
28
Created page with "<includeonly>{{#invoke:Bopomofo spacing|main}}</includeonly><noinclude> {{documentation}}</noinclude>"
8026
wikitext
text/x-wiki
<includeonly>{{#invoke:Bopomofo spacing|main}}</includeonly><noinclude>
{{documentation}}</noinclude>
aoxjo45tir2n4qo1ncix894k161ze3h
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Bopomofo spacing/doc
10
2689
8027
2026-10-20T01:01:49Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{template shortcut|bpmfsp}} {{Lua|Module:Bopomofo spacing}} == Usage == This template formats [[bopomofo]] with spacing of {{code|0.5ic}}[https://developer.mozilla.org/en-US/docs/Web/CSS/length#ic] between each pipe-separated syllable. == Example == {{tlx|Bopomofo spacing|ㄓㄨˋ|ㄧㄣ|ㄈㄨˊ|ㄏㄠˋ}} → {{Bopomofo spacing|ㄓㄨˋ|ㄧㄣ|ㄈㄨˊ|ㄏㄠˋ}}. == Tracking categories == * {{cat|Pages using Tone superscript with sup tags..."
8027
wikitext
text/x-wiki
{{Documentation subpage}}
{{template shortcut|bpmfsp}}
{{Lua|Module:Bopomofo spacing}}
== Usage ==
This template formats [[bopomofo]] with spacing of {{code|0.5ic}}[https://developer.mozilla.org/en-US/docs/Web/CSS/length#ic] between each pipe-separated syllable.
== Example ==
{{tlx|Bopomofo spacing|ㄓㄨˋ|ㄧㄣ|ㄈㄨˊ|ㄏㄠˋ}} → {{Bopomofo spacing|ㄓㄨˋ|ㄧㄣ|ㄈㄨˊ|ㄏㄠˋ}}.
== Tracking categories ==
* {{cat|Pages using Tone superscript with sup tags}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Chinese multilingual support templates]]
}}</includeonly>
ayfe8ac9ecazihf4mzj6zv3e2npw2x7
ᥛᥨᥝᥱ ᥓᥧᥰ:Bopomofo spacing
828
2690
8028
2026-10-20T01:02:02Z
Saimawnkham
28
Created page with "require('strict') local p = {} function p._main(frame) local root = mw.html.create() local pad = '<span style="padding-left:0.5ic;"> </span>' local result = '<span lang="zh-Bopo">' for k,v in pairs(frame) do if k > 1 then result = result .. pad end result = result .. v end result = result .. '</span>' return result end function p.main(frame) local getArgs = require('Module:Arguments').getArgs return p._main(getArgs(frame)) end return p"
8028
Scribunto
text/plain
require('strict')
local p = {}
function p._main(frame)
local root = mw.html.create()
local pad = '<span style="padding-left:0.5ic;"> </span>'
local result = '<span lang="zh-Bopo">'
for k,v in pairs(frame) do
if k > 1 then
result = result .. pad
end
result = result .. v
end
result = result .. '</span>'
return result
end
function p.main(frame)
local getArgs = require('Module:Arguments').getArgs
return p._main(getArgs(frame))
end
return p
2i3xvcj8s5lapczmdx82cr39kchltq5
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Bpmfsp
10
2691
8029
2026-10-20T01:02:36Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Bopomofo spacing]]
8029
wikitext
text/x-wiki
#REDIRECT [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Bopomofo spacing]]
sgrgpgyrvj1dm72e7zj48k23k394f66
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:IPAc-cmn
10
2692
8030
2026-10-20T01:08:45Z
Saimawnkham
28
Created page with "<includeonly><span class="IPA" lang="cmn-Latn-fonipa" style="white-space:nowrap">[[Help:IPA/Mandarin|{{#switch:{{{1}}}|[-|[]|[]AUD=[|/-|//|//AUD=/|--|-]|-/|-]AUD|-/AUD=|[}}{{#switch:{{{1}}}|[-|-]|[]|/-|-/|//|--|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2}}}|1|2|3|4|5={{c-cmn|{{{1}}}|{{{2}}}}}|{{c-cmn|{{{1}}}}}}}}}{{#if:{{{2|}}}|{{#switch:{{{1|}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2|}}}|1|2|3|4|5=|{{#switch:{{{3}}}|1|2|3|4|5={{c-cmn|{{{2}}}|{{{3}}}}}|{{c-cmn|{{{2}..."
8030
wikitext
text/x-wiki
<includeonly><span class="IPA" lang="cmn-Latn-fonipa" style="white-space:nowrap">[[Help:IPA/Mandarin|{{#switch:{{{1}}}|[-|[]|[]AUD=[|/-|//|//AUD=/|--|-]|-/|-]AUD|-/AUD=|[}}{{#switch:{{{1}}}|[-|-]|[]|/-|-/|//|--|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2}}}|1|2|3|4|5={{c-cmn|{{{1}}}|{{{2}}}}}|{{c-cmn|{{{1}}}}}}}}}{{#if:{{{2|}}}|{{#switch:{{{1|}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2|}}}|1|2|3|4|5=|{{#switch:{{{3}}}|1|2|3|4|5={{c-cmn|{{{2}}}|{{{3}}}}}|{{c-cmn|{{{2}}}}}}}}}}}}}{{#if:{{{3|}}}|{{#switch:{{{3|}}}|1|2|3|4|5=|{{#switch:{{{4}}}|1|2|3|4|5={{c-cmn|{{{3}}}|{{{4}}}}}|{{c-cmn|{{{3}}}}}}}}}}}{{#if:{{{4|}}}|{{#switch:{{{4|}}}|1|2|3|4|5=|{{#switch:{{{5}}}|1|2|3|4|5={{c-cmn|{{{4}}}|{{{5}}}}}|{{c-cmn|{{{4}}}}}}}}}}}{{#if:{{{5|}}}|{{#switch:{{{5|}}}|1|2|3|4|5=|{{#switch:{{{6}}}|1|2|3|4|5={{c-cmn|{{{5}}}|{{{6}}}}}|{{c-cmn|{{{5}}}}}}}}}}}{{#if:{{{6|}}}|{{#switch:{{{6|}}}|1|2|3|4|5=|{{#switch:{{{7}}}|1|2|3|4|5={{c-cmn|{{{6}}}|{{{7}}}}}|{{c-cmn|{{{6}}}}}}}}}}}{{#if:{{{7|}}}|{{#switch:{{{7|}}}|1|2|3|4|5=|{{#switch:{{{8}}}|1|2|3|4|5={{c-cmn|{{{7}}}|{{{8}}}}}|{{c-cmn|{{{7}}}}}}}}}}}{{#if:{{{8|}}}|{{#switch:{{{8|}}}|1|2|3|4|5=|{{#switch:{{{9}}}|1|2|3|4|5={{c-cmn|{{{8}}}|{{{9}}}}}|{{c-cmn|{{{8}}}}}}}}}}}{{#if:{{{9|}}}|{{#switch:{{{9|}}}|1|2|3|4|5=|{{#switch:{{{10}}}|1|2|3|4|5={{c-cmn|{{{9}}}|{{{10}}}}}|{{c-cmn|{{{9}}}}}}}}}}}{{#if:{{{10|}}}|{{#switch:{{{10|}}}|1|2|3|4|5=|{{#switch:{{{11}}}|1|2|3|4|5={{c-cmn|{{{10}}}|{{{11}}}}}|{{c-cmn|{{{10}}}}}}}}}}}{{#if:{{{11|}}}|{{#switch:{{{11|}}}|1|2|3|4|5=|{{#switch:{{{12}}}|1|2|3|4|5={{c-cmn|{{{11}}}|{{{12}}}}}|{{c-cmn|{{{11}}}}}}}}}}}{{#if:{{{12|}}}|{{#switch:{{{12|}}}|1|2|3|4|5=|{{#switch:{{{13}}}|1|2|3|4|5={{c-cmn|{{{12}}}|{{{13}}}}}|{{c-cmn|{{{12}}}}}}}}}}}{{#if:{{{13|}}}|{{#switch:{{{13|}}}|1|2|3|4|5=|{{#switch:{{{14}}}|1|2|3|4|5={{c-cmn|{{{13}}}|{{{14}}}}}|{{c-cmn|{{{13}}}}}}}}}}}{{#if:{{{14|}}}|{{#switch:{{{14|}}}|1|2|3|4|5=|{{#switch:{{{15}}}|1|2|3|4|5={{c-cmn|{{{14}}}|{{{15}}}}}|{{c-cmn|{{{14}}}}}}}}}}}{{#if:{{{15|}}}|{{#switch:{{{15|}}}|1|2|3|4|5=|{{#switch:{{{16}}}|1|2|3|4|5={{c-cmn|{{{15}}}|{{{16}}}}}|{{c-cmn|{{{15}}}}}}}}}}}{{#if:{{{16|}}}|{{#switch:{{{16|}}}|1|2|3|4|5=|{{#switch:{{{17}}}|1|2|3|4|5={{c-cmn|{{{16}}}|{{{17}}}}}|{{c-cmn|{{{16}}}}}}}}}}}{{#if:{{{17|}}}|{{#switch:{{{17|}}}|1|2|3|4|5=|{{#switch:{{{18}}}|1|2|3|4|5={{c-cmn|{{{17}}}|{{{18}}}}}|{{c-cmn|{{{17}}}}}}}}}}}{{#if:{{{18|}}}|{{#switch:{{{18|}}}|1|2|3|4|5=|{{#switch:{{{19}}}|1|2|3|4|5={{c-cmn|{{{18}}}|{{{19}}}}}|{{c-cmn|{{{18}}}}}}}}}}}{{#if:{{{19|}}}|{{#switch:{{{19|}}}|1|2|3|4|5=|{{#switch:{{{20}}}|1|2|3|4|5={{c-cmn|{{{19}}}|{{{20}}}}}|{{c-cmn|{{{19}}}}}}}}}}}{{#if:{{{20|}}}|{{#switch:{{{20|}}}|1|2|3|4|5=|{{#switch:{{{21}}}|1|2|3|4|5={{c-cmn|{{{20}}}|{{{21}}}}}|{{c-cmn|{{{20}}}}}}}}}}}{{#if:{{{21|}}}|{{#switch:{{{21|}}}|1|2|3|4|5=|{{#switch:{{{22}}}|1|2|3|4|5={{c-cmn|{{{21}}}|{{{22}}}}}|{{c-cmn|{{{21}}}}}}}}}}}{{#if:{{{22|}}}|{{#switch:{{{22|}}}|1|2|3|4|5=|{{#switch:{{{23}}}|1|2|3|4|5={{c-cmn|{{{22}}}|{{{23}}}}}|{{c-cmn|{{{22}}}}}}}}}}}{{#if:{{{23|}}}|{{#switch:{{{23|}}}|1|2|3|4|5=|{{#switch:{{{24}}}|1|2|3|4|5={{c-cmn|{{{23}}}|{{{24}}}}}|{{c-cmn|{{{23}}}}}}}}}}}{{#if:{{{24|}}}|{{#switch:{{{24|}}}|1|2|3|4|5=|{{#switch:{{{25}}}|1|2|3|4|5={{c-cmn|{{{24}}}|{{{25}}}}}|{{c-cmn|{{{24}}}}}}}}}}}{{#if:{{{25|}}}|{{#switch:{{{25|}}}|1|2|3|4|5=|{{#switch:{{{26}}}|1|2|3|4|5={{c-cmn|{{{25}}}|{{{26}}}}}|{{c-cmn|{{{25}}}}}}}}}}}{{#if:{{{26|}}}|{{#switch:{{{26|}}}|1|2|3|4|5=|{{#switch:{{{27}}}|1|2|3|4|5={{c-cmn|{{{26}}}|{{{27}}}}}|{{c-cmn|{{{26}}}}}}}}}}}{{#if:{{{27|}}}|{{#switch:{{{27|}}}|1|2|3|4|5=|{{#switch:{{{28}}}|1|2|3|4|5={{c-cmn|{{{27}}}|{{{28}}}}}|{{c-cmn|{{{27}}}}}}}}}}}{{#if:{{{28|}}}|{{#switch:{{{28|}}}|1|2|3|4|5=|{{#switch:{{{29}}}|1|2|3|4|5={{c-cmn|{{{28}}}|{{{29}}}}}|{{c-cmn|{{{28}}}}}}}}}}}{{#if:{{{29|}}}|{{#switch:{{{29|}}}|1|2|3|4|5=|{{#switch:{{{30}}}|1|2|3|4|5={{c-cmn|{{{29}}}|{{{30}}}}}|{{c-cmn|{{{29}}}}}}}}}}}{{#if:{{{30|}}}|{{#switch:{{{30|}}}|1|2|3|4|5=|{{#switch:{{{31}}}|1|2|3|4|5={{c-cmn|{{{30}}}|{{{31}}}}}|{{c-cmn|{{{30}}}}}}}}}}}{{#if:{{{31|}}}|{{#switch:{{{31|}}}|1|2|3|4|5=|{{#switch:{{{32}}}|1|2|3|4|5={{c-cmn|{{{31}}}|{{{32}}}}}|{{c-cmn|{{{31}}}}}}}}}}}{{#if:{{{32|}}}|{{#switch:{{{32|}}}|1|2|3|4|5=|{{#switch:{{{33}}}|1|2|3|4|5={{c-cmn|{{{32}}}|{{{33}}}}}|{{c-cmn|{{{32}}}}}}}}}}}{{#if:{{{33|}}}|{{#switch:{{{33|}}}|1|2|3|4|5=|{{#switch:{{{34}}}|1|2|3|4|5={{c-cmn|{{{33}}}|{{{34}}}}}|{{c-cmn|{{{33}}}}}}}}}}}{{#if:{{{34|}}}|{{#switch:{{{34|}}}|1|2|3|4|5=|{{#switch:{{{35}}}|1|2|3|4|5={{c-cmn|{{{34}}}|{{{35}}}}}|{{c-cmn|{{{34}}}}}}}}}}}{{#if:{{{35|}}}|{{#switch:{{{35|}}}|1|2|3|4|5=|{{#switch:{{{36}}}|1|2|3|4|5={{c-cmn|{{{35}}}|{{{36}}}}}|{{c-cmn|{{{35}}}}}}}}}}}{{#if:{{{36|}}}|{{#switch:{{{36|}}}|1|2|3|4|5=|{{#switch:{{{37}}}|1|2|3|4|5={{c-cmn|{{{36}}}|{{{37}}}}}|{{c-cmn|{{{36}}}}}}}}}}}{{#if:{{{37|}}}|{{#switch:{{{37|}}}|1|2|3|4|5=|{{#switch:{{{38}}}|1|2|3|4|5={{c-cmn|{{{37}}}|{{{38}}}}}|{{c-cmn|{{{37}}}}}}}}}}}{{#if:{{{38|}}}|{{#switch:{{{38|}}}|1|2|3|4|5=|{{#switch:{{{39}}}|1|2|3|4|5={{c-cmn|{{{38}}}|{{{39}}}}}|{{c-cmn|{{{38}}}}}}}}}}}{{#if:{{{39|}}}|{{#switch:{{{39|}}}|1|2|3|4|5=|{{#switch:{{{40}}}|1|2|3|4|5={{c-cmn|{{{39}}}|{{{40}}}}}|{{c-cmn|{{{39}}}}}}}}}}}{{#if:{{{40|}}}|{{#switch:{{{40|}}}|1|2|3|4|5=|{{#switch:{{{41}}}|1|2|3|4|5={{c-cmn|{{{40}}}|{{{41}}}}}|{{c-cmn|{{{40}}}}}}}}}}}{{#switch:{{{1}}}|-]|[]|-]AUD|[]AUD=]|-/|//|\/AUD|//AUD=/|--|[-|/-=|]}}]]</span>{{#switch:{{{1}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD={{IPA audio link|{{{2}}} }}}}</includeonly><noinclude>
{{documentation}}
[[Category:Chinese multilingual support templates]]
</noinclude>
5mlzp0h2xlm7z4bxmau1xp8u7q2ysbf
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:IPAc-cmn/doc
10
2693
8031
2026-10-20T01:09:10Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{High-use}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This template is used to produce a phonetic or phonemic representation (using the [[International Phonetic Alphabet|IPA]] system) of [[Mandarin Chinese]] words or sounds, using [[Pinyin]] input to avoid the need to search for the correct phonetic symbols. The result is wikilinked to [[Help:IPA/Mandarin]]. Optionally, an audio file can also be specified. ==Usa..."
8031
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This template is used to produce a phonetic or phonemic representation (using the [[International Phonetic Alphabet|IPA]] system) of [[Mandarin Chinese]] words or sounds, using [[Pinyin]] input to avoid the need to search for the correct phonetic symbols. The result is wikilinked to [[Help:IPA/Mandarin]]. Optionally, an audio file can also be specified.
==Usage==
The number of parameters is always limited to 41 (Note: parameter #41 can only be a tone number).
Normal usage:
* {{tlx|IPAc-cmn|zh|ong|1|h|ua|2|_show_result=yes}}
* {{tlx|IPAc-cmn|r|en|2|m|in|2|-|g|ong|4|h|e|2|g|uo|2|_show_result=yes}}
With an audio file:
* {{tlx|IPAc-cmn|AUD|Zh-hànyǔ.ogg|h|an|4|yu|3|_show_result=yes}}
To change the delimiters (for example, if several instances of the template need to be strung together because of the limit on the number of parameters):
* {{tlx|IPAc-cmn|[-|zh|ong|1|h|ua|2|-|r|en|2|m|in|2|-|g|ong|4|h|e|2|g|uo|2|_show_result=yes}}
* {{tlx|IPAc-cmn|-]|zh|ong|1|h|ua|2|-|r|en|2|m|in|2|-|g|ong|4|h|e|2|g|uo|2|_show_result=yes}}
The full range of special values for the first parameter (changing the delimiters and/or specifying that the next parameter is an audio file) is as follows:
*<code>-- [- -] // /- -/ AUD -]AUD //AUD -/AUD</code>
For example, to link an audio clip as well as change delimeters:
* {{tlx|IPAc-cmn|-/AUD|Zh-hànyǔ.ogg|h|an|4|yu|3|_show_result=yes}}
==Initials==
The following initials are used as in Pinyin, and represent their normal sounds in Standard Mandarin:
*<code>b p m f d t n l g k h j q x zh ch sh r z c s</code>
==Finals==
Each final should be entered as a whole parameter, and as if it were not preceded by an initial, though in most cases either form is acceptable:
*<code>yong</code> (or <code>iong</code>), <code>wa</code> (or <code>ua</code>), etc.
But note that the finals with ⟨ü⟩, despite usually being written ⟨u⟩ in Pinyin, must either be substituted with <code>yu ü v</code>, or written together with the initial j, q, or x. Similarly, the null final of ''shi, ri'', etc. must either be substituted with <code>^</code> (a caret), or written together with the initial z(h) c(h) s(h) or r.
[[Erhua]] is indicated simply with an ‹-r› as part of the final, e.g., <code>angr</code>.
==List of Pinyin finals accepted for template input==
<!--{{col-begin}}
{{col-4}}-->
*<code>^</code> = {{IPAc-cmn|^}}
*<code>ai</code> = {{IPAc-cmn|ai}}
*<code>an</code> = {{IPAc-cmn|an}}
*<code>a</code> = {{IPAc-cmn|a}}
*<code>ang</code> = {{IPAc-cmn|ang}}
*<code>ao</code> = {{IPAc-cmn|ao}}
*<code>ei</code> = {{IPAc-cmn|ei}}
*<code>en</code> = {{IPAc-cmn|en}}
*<code>ê</code> = {{IPAc-cmn|ê}}
*<code>e</code> = {{IPAc-cmn|e}}
*<code>eng</code> = {{IPAc-cmn|eng}}
*<code>yi, i</code> = {{IPAc-cmn|yi}}
*<code>yin, in</code> = {{IPAc-cmn|yin}}
*<code>ying, ing</code> = {{IPAc-cmn|ying}}
*<code>ya, ia</code> = {{IPAc-cmn|ya}}
*<code>yang, iang</code> = {{IPAc-cmn|yang}}
*<code>yao, iao</code> = {{IPAc-cmn|yao}}
<!--{{col-4}}-->
*<code>ye, ie</code> = {{IPAc-cmn|ye}}
*<code>yan, ian</code> = {{IPAc-cmn|yan}}
*<code>you, iu</code> = {{IPAc-cmn|you}}
*<code>yo, io</code> = {{IPAc-cmn|yo}}
*<code>yong, iong</code> = {{IPAc-cmn|yong}}
*<code>ou</code> = {{IPAc-cmn|ou}}
*<code>o</code> = {{IPAc-cmn|o}}
*<code>wu</code> = {{IPAc-cmn|wu}}
*<code>yue, üe, ve</code> = {{IPAc-cmn|yue}}
*<code>yuan, üan, van</code> = {{IPAc-cmn|yuan}}
*<code>ong</code> = {{IPAc-cmn|ong}}
*<code>wa, ua</code> = {{IPAc-cmn|wa}}
*<code>wai, uai</code> = {{IPAc-cmn|wai}}
*<code>wan, uan</code> = {{IPAc-cmn|wan}}
*<code>wang, uang</code> = {{IPAc-cmn|wang}}
*<code>wei, ui</code> = {{IPAc-cmn|wei}}
*<code>wen, un</code> = {{IPAc-cmn|wen}}
<!--{{col-4}}-->
*<code>weng</code> = {{IPAc-cmn|weng}}
*<code>wo, uo, o</code> = {{IPAc-cmn|wo}}
*<code>yu, ü, v</code> = {{IPAc-cmn|yu}}
*<code>yun, ün, vn</code> = {{IPAc-cmn|yun}}
*<code>er, ar, air, anr</code> = {{IPAc-cmn|er}}
*<code>angr</code> = {{IPAc-cmn|angr}}
*<code>aor</code> = {{IPAc-cmn|aor}}
*<code>^r</code> = {{IPAc-cmn|^r}}
*<code>eir, enr</code> = {{IPAc-cmn|eir}}
*<code>engr</code> = {{IPAc-cmn|engr}}
*<code>e'r</code> = {{IPAc-cmn|e'r}}
*<code>yar, iar</code> = {{IPAc-cmn|yar}}
*<code>yanr, ianr</code> = {{IPAc-cmn|yanr}}
*<code>yangr, iangr</code> = {{IPAc-cmn|yangr}}
*<code>yaor, iaor</code> = {{IPAc-cmn|yaor}}
*<code>yinr, inr, yir, ir</code> = {{IPAc-cmn|yir}}
*<code>yer, ier</code> = {{IPAc-cmn|yer}}
*<code>yingr, ingr</code> = {{IPAc-cmn|yingr}}
<!--{{col-4}}-->
*<code>your, iur</code> = {{IPAc-cmn|your}}
*<code>yongr, iongr</code> = {{IPAc-cmn|yongr}}
*<code>our</code> = {{IPAc-cmn|our}}
*<code>yuanr, üanr, vanr</code> = {{IPAc-cmn|yuanr}}
*<code>yur, ür, vr, yunr, ünr, vnr</code> = {{IPAc-cmn|yur}}
*<code>yuer, üer, ver</code> = {{IPAc-cmn|yuer}}
*<code>ongr</code> = {{IPAc-cmn|ongr}}
*<code>war, uar, wair, uair, wanr, uanr</code> = {{IPAc-cmn|war}}
*<code>wangr, uangr</code> = {{IPAc-cmn|wangr}}
*<code>weir, uir, wenr, unr</code> = {{IPAc-cmn|weir}}
*<code>wengr</code> = {{IPAc-cmn|wengr}}
*<code>wur</code> = {{IPAc-cmn|wur}}
*<code>wor, uor</code> = {{IPAc-cmn|wor}}
*<code>M</code> = {{IPAc-cmn|M}}
*<code>N</code> = {{IPAc-cmn|N}}
*<code>NG</code> = {{IPAc-cmn|NG}}
<!--{{col-end}}-->
===Tones===
The tones are indicated by their traditional [[tone number]], entered as the parameter after the final of the syllable. Note that this template uses IPA tone diacritics, which are different from the Pinyin tone diacritics:
{| class="wikitable" style="margin: auto;"
|-
! Tone number!! Description !! Input !! Result !! Pinyin
|-
| 1 ||high|| {{demo|<nowiki>{{IPAc-cmn|a|1}}</nowiki>|br={{!}}{{!}}}} || ā
|-
| 2 ||rising|| {{demo|<nowiki>{{IPAc-cmn|a|2}}</nowiki>|br={{!}}{{!}}}} || á
|-
| 3 ||low|| {{demo|<nowiki>{{IPAc-cmn|a|3}}</nowiki>|br={{!}}{{!}}}} || ǎ
|-
| 4 ||falling|| {{demo|<nowiki>{{IPAc-cmn|a|4}}</nowiki>|br={{!}}{{!}}}} || à
|-
| 5 || neutral||{{demo|<nowiki>{{IPAc-cmn|a|5}}</nowiki>|br={{!}}{{!}}}} || a
|}
==Special parameters==
The following parameters have special meanings:
*<code>-</code> (hyphen) for a space between words
*<code>.</code> (period) for a syllable break
*<code>'</code> (apostrophe) for a primary stress mark (placed before the stressed syllable)
*<code>,</code> (comma) for a secondary stress mark (placed before the stressed syllable)
Other values used as parameters will be displayed unconverted. (The conversion system is coded in [[Template:c-cmn]]. The tones are encoded in [[Template:tone-cmn]])
==See also==
* [[Help:IPA/Mandarin]]
* [[Standard Chinese phonology]]
* {{tl|IPAc-yue}} – IPA template for [[Cantonese]]
{{IPA templates}}
<includeonly>{{Sandbox other||
[[Category:IPA language templates|c]]
}}</includeonly>
gpjjhqwdo2xchnhwno3nz7wri0rh6ae
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:IPAc-yue
10
2694
8032
2026-10-20T01:09:53Z
Saimawnkham
28
Created page with "<includeonly><span class="IPA" lang="yue-Latn-fonipa" style="white-space:nowrap">[[Help:IPA/Cantonese|{{#switch:{{{1}}}|[-|[]|[]AUD=[|/-|//|//AUD=/|--|-]|-/|-]AUD|-/AUD=|[}}{{#switch:{{{1}}}|[-|-]|[]|/-|-/|//|--|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2}}}|1|2|3|4|5|6|7={{c-yue|{{{1}}}|{{{2}}}}}|{{c-yue|{{{1}}}}}}}}}{{#if:{{{2|}}}|{{#switch:{{{1|}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2|}}}|1|2|3|4|5|6|7=|{{#switch:{{{3}}}|1|2|3|4|5|6|7={{c-yue|{{{2}}}|{{{3}}}}}|..."
8032
wikitext
text/x-wiki
<includeonly><span class="IPA" lang="yue-Latn-fonipa" style="white-space:nowrap">[[Help:IPA/Cantonese|{{#switch:{{{1}}}|[-|[]|[]AUD=[|/-|//|//AUD=/|--|-]|-/|-]AUD|-/AUD=|[}}{{#switch:{{{1}}}|[-|-]|[]|/-|-/|//|--|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2}}}|1|2|3|4|5|6|7={{c-yue|{{{1}}}|{{{2}}}}}|{{c-yue|{{{1}}}}}}}}}{{#if:{{{2|}}}|{{#switch:{{{1|}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD=|{{#switch:{{{2|}}}|1|2|3|4|5|6|7=|{{#switch:{{{3}}}|1|2|3|4|5|6|7={{c-yue|{{{2}}}|{{{3}}}}}|{{c-yue|{{{2}}}}}}}}}}}}}{{#if:{{{3|}}}|{{#switch:{{{3|}}}|1|2|3|4|5|6|7=|{{#switch:{{{4}}}|1|2|3|4|5|6|7={{c-yue|{{{3}}}|{{{4}}}}}|{{c-yue|{{{3}}}}}}}}}}}{{#if:{{{4|}}}|{{#switch:{{{4|}}}|1|2|3|4|5|6|7=|{{#switch:{{{5}}}|1|2|3|4|5|6|7={{c-yue|{{{4}}}|{{{5}}}}}|{{c-yue|{{{4}}}}}}}}}}}{{#if:{{{5|}}}|{{#switch:{{{5|}}}|1|2|3|4|5|6|7=|{{#switch:{{{6}}}|1|2|3|4|5|6|7={{c-yue|{{{5}}}|{{{6}}}}}|{{c-yue|{{{5}}}}}}}}}}}{{#if:{{{6|}}}|{{#switch:{{{6|}}}|1|2|3|4|5|6|7=|{{#switch:{{{7}}}|1|2|3|4|5|6|7={{c-yue|{{{6}}}|{{{7}}}}}|{{c-yue|{{{6}}}}}}}}}}}{{#if:{{{7|}}}|{{#switch:{{{7|}}}|1|2|3|4|5|6|7=|{{#switch:{{{8}}}|1|2|3|4|5|6|7={{c-yue|{{{7}}}|{{{8}}}}}|{{c-yue|{{{7}}}}}}}}}}}{{#if:{{{8|}}}|{{#switch:{{{8|}}}|1|2|3|4|5|6|7=|{{#switch:{{{9}}}|1|2|3|4|5|6|7={{c-yue|{{{8}}}|{{{9}}}}}|{{c-yue|{{{8}}}}}}}}}}}{{#if:{{{9|}}}|{{#switch:{{{9|}}}|1|2|3|4|5|6|7=|{{#switch:{{{10}}}|1|2|3|4|5|6|7={{c-yue|{{{9}}}|{{{10}}}}}|{{c-yue|{{{9}}}}}}}}}}}{{#if:{{{10|}}}|{{#switch:{{{10|}}}|1|2|3|4|5|6|7=|{{#switch:{{{11}}}|1|2|3|4|5|6|7={{c-yue|{{{10}}}|{{{11}}}}}|{{c-yue|{{{10}}}}}}}}}}}{{#if:{{{11|}}}|{{#switch:{{{11|}}}|1|2|3|4|5|6|7=|{{#switch:{{{12}}}|1|2|3|4|5|6|7={{c-yue|{{{11}}}|{{{12}}}}}|{{c-yue|{{{11}}}}}}}}}}}{{#if:{{{12|}}}|{{#switch:{{{12|}}}|1|2|3|4|5|6|7=|{{#switch:{{{13}}}|1|2|3|4|5|6|7={{c-yue|{{{12}}}|{{{13}}}}}|{{c-yue|{{{12}}}}}}}}}}}{{#if:{{{13|}}}|{{#switch:{{{13|}}}|1|2|3|4|5|6|7=|{{#switch:{{{14}}}|1|2|3|4|5|6|7={{c-yue|{{{13}}}|{{{14}}}}}|{{c-yue|{{{13}}}}}}}}}}}{{#if:{{{14|}}}|{{#switch:{{{14|}}}|1|2|3|4|5|6|7=|{{#switch:{{{15}}}|1|2|3|4|5|6|7={{c-yue|{{{14}}}|{{{15}}}}}|{{c-yue|{{{14}}}}}}}}}}}{{#if:{{{15|}}}|{{#switch:{{{15|}}}|1|2|3|4|5|6|7=|{{#switch:{{{16}}}|1|2|3|4|5|6|7={{c-yue|{{{15}}}|{{{16}}}}}|{{c-yue|{{{15}}}}}}}}}}}{{#if:{{{16|}}}|{{#switch:{{{16|}}}|1|2|3|4|5|6|7=|{{#switch:{{{17}}}|1|2|3|4|5|6|7={{c-yue|{{{16}}}|{{{17}}}}}|{{c-yue|{{{16}}}}}}}}}}}{{#if:{{{17|}}}|{{#switch:{{{17|}}}|1|2|3|4|5|6|7=|{{#switch:{{{18}}}|1|2|3|4|5|6|7={{c-yue|{{{17}}}|{{{18}}}}}|{{c-yue|{{{17}}}}}}}}}}}{{#if:{{{18|}}}|{{#switch:{{{18|}}}|1|2|3|4|5|6|7=|{{#switch:{{{19}}}|1|2|3|4|5|6|7={{c-yue|{{{18}}}|{{{19}}}}}|{{c-yue|{{{18}}}}}}}}}}}{{#if:{{{19|}}}|{{#switch:{{{19|}}}|1|2|3|4|5|6|7=|{{#switch:{{{20}}}|1|2|3|4|5|6|7={{c-yue|{{{19}}}|{{{20}}}}}|{{c-yue|{{{19}}}}}}}}}}}{{#if:{{{20|}}}|{{#switch:{{{20|}}}|1|2|3|4|5|6|7=|{{#switch:{{{21}}}|1|2|3|4|5|6|7={{c-yue|{{{20}}}|{{{21}}}}}|{{c-yue|{{{20}}}}}}}}}}}{{#if:{{{21|}}}|{{#switch:{{{21|}}}|1|2|3|4|5|6|7=|{{#switch:{{{22}}}|1|2|3|4|5|6|7={{c-yue|{{{21}}}|{{{22}}}}}|{{c-yue|{{{21}}}}}}}}}}}{{#if:{{{22|}}}|{{#switch:{{{22|}}}|1|2|3|4|5|6|7=|{{#switch:{{{23}}}|1|2|3|4|5|6|7={{c-yue|{{{22}}}|{{{23}}}}}|{{c-yue|{{{22}}}}}}}}}}}{{#if:{{{23|}}}|{{#switch:{{{23|}}}|1|2|3|4|5|6|7=|{{#switch:{{{24}}}|1|2|3|4|5|6|7={{c-yue|{{{23}}}|{{{24}}}}}|{{c-yue|{{{23}}}}}}}}}}}{{#if:{{{24|}}}|{{#switch:{{{24|}}}|1|2|3|4|5|6|7=|{{#switch:{{{25}}}|1|2|3|4|5|6|7={{c-yue|{{{24}}}|{{{25}}}}}|{{c-yue|{{{24}}}}}}}}}}}{{#if:{{{25|}}}|{{#switch:{{{25|}}}|1|2|3|4|5|6|7=|{{#switch:{{{26}}}|1|2|3|4|5|6|7={{c-yue|{{{25}}}|{{{26}}}}}|{{c-yue|{{{25}}}}}}}}}}}{{#if:{{{26|}}}|{{#switch:{{{26|}}}|1|2|3|4|5|6|7=|{{#switch:{{{27}}}|1|2|3|4|5|6|7={{c-yue|{{{26}}}|{{{27}}}}}|{{c-yue|{{{26}}}}}}}}}}}{{#if:{{{27|}}}|{{#switch:{{{27|}}}|1|2|3|4|5|6|7=|{{#switch:{{{28}}}|1|2|3|4|5|6|7={{c-yue|{{{27}}}|{{{28}}}}}|{{c-yue|{{{27}}}}}}}}}}}{{#if:{{{28|}}}|{{#switch:{{{28|}}}|1|2|3|4|5|6|7=|{{#switch:{{{29}}}|1|2|3|4|5|6|7={{c-yue|{{{28}}}|{{{29}}}}}|{{c-yue|{{{28}}}}}}}}}}}{{#if:{{{29|}}}|{{#switch:{{{29|}}}|1|2|3|4|5|6|7=|{{#switch:{{{30}}}|1|2|3|4|5|6|7={{c-yue|{{{29}}}|{{{30}}}}}|{{c-yue|{{{29}}}}}}}}}}}{{#if:{{{30|}}}|{{#switch:{{{30|}}}|1|2|3|4|5|6|7=|{{#switch:{{{31}}}|1|2|3|4|5|6|7={{c-yue|{{{30}}}|{{{31}}}}}|{{c-yue|{{{30}}}}}}}}}}}{{#if:{{{31|}}}|{{#switch:{{{31|}}}|1|2|3|4|5|6|7=|{{#switch:{{{32}}}|1|2|3|4|5|6|7={{c-yue|{{{31}}}|{{{32}}}}}|{{c-yue|{{{31}}}}}}}}}}}{{#if:{{{32|}}}|{{#switch:{{{32|}}}|1|2|3|4|5|6|7=|{{#switch:{{{33}}}|1|2|3|4|5|6|7={{c-yue|{{{32}}}|{{{33}}}}}|{{c-yue|{{{32}}}}}}}}}}}{{#if:{{{33|}}}|{{#switch:{{{33|}}}|1|2|3|4|5|6|7=|{{#switch:{{{34}}}|1|2|3|4|5|6|7={{c-yue|{{{33}}}|{{{34}}}}}|{{c-yue|{{{33}}}}}}}}}}}{{#if:{{{34|}}}|{{#switch:{{{34|}}}|1|2|3|4|5|6|7=|{{#switch:{{{35}}}|1|2|3|4|5|6|7={{c-yue|{{{34}}}|{{{35}}}}}|{{c-yue|{{{34}}}}}}}}}}}{{#if:{{{35|}}}|{{#switch:{{{35|}}}|1|2|3|4|5|6|7=|{{#switch:{{{36}}}|1|2|3|4|5|6|7={{c-yue|{{{35}}}|{{{36}}}}}|{{c-yue|{{{35}}}}}}}}}}}{{#if:{{{36|}}}|{{#switch:{{{36|}}}|1|2|3|4|5|6|7=|{{#switch:{{{37}}}|1|2|3|4|5|6|7={{c-yue|{{{36}}}|{{{37}}}}}|{{c-yue|{{{36}}}}}}}}}}}{{#if:{{{37|}}}|{{#switch:{{{37|}}}|1|2|3|4|5|6|7=|{{#switch:{{{38}}}|1|2|3|4|5|6|7={{c-yue|{{{37}}}|{{{38}}}}}|{{c-yue|{{{37}}}}}}}}}}}{{#if:{{{38|}}}|{{#switch:{{{38|}}}|1|2|3|4|5|6|7=|{{#switch:{{{39}}}|1|2|3|4|5|6|7={{c-yue|{{{38}}}|{{{39}}}}}|{{c-yue|{{{38}}}}}}}}}}}{{#if:{{{39|}}}|{{#switch:{{{39|}}}|1|2|3|4|5|6|7=|{{#switch:{{{40}}}|1|2|3|4|5|6|7={{c-yue|{{{39}}}|{{{40}}}}}|{{c-yue|{{{39}}}}}}}}}}}{{#if:{{{40|}}}|{{#switch:{{{40|}}}|1|2|3|4|5|6|7=|{{#switch:{{{41}}}|1|2|3|4|5|6|7={{c-yue|{{{40}}}|{{{41}}}}}|{{c-yue|{{{40}}}}}}}}}}}{{#switch:{{{1}}}|-]|[]|-]AUD|[]AUD=]|-/|//|\/AUD|//AUD=/|--|[-|/-=|]}}]]</span>{{#switch:{{{1}}}|-]AUD|[]AUD|-/AUD|//AUD|AUD={{IPA audio link|{{{2}}} }}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
mlpr260jbuw06gxzqx1qrij58fmx4ip
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:IPAc-yue/doc
10
2695
8033
2026-10-20T01:10:16Z
Saimawnkham
28
Created page with "{{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This template is used to produce a phonetic or phonemic representation (using the [[International Phonetic Alphabet|IPA]] system) of [[Yue Chinese]] (including [[Cantonese]]) words or sounds. It converts [[Jyutping]] (JP) to IPA, to avoid the need to search for the correct phonetic symbols, but one can also use som..."
8033
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
This template is used to produce a phonetic or phonemic representation (using the [[International Phonetic Alphabet|IPA]] system) of [[Yue Chinese]] (including [[Cantonese]]) words or sounds. It converts [[Jyutping]] (JP) to IPA, to avoid the need to search for the correct phonetic symbols, but one can also use some IPA symbols directly (listed below). The result is wikilinked to [[Help:IPA/Cantonese]].
== Usage ==
Standard usage: {{tlx|IPAc-yue|initial|final|tone number}}
{{Example needed|date=August 2025}}
Use <code>m0</code>/<code>M</code> and <code>ng0</code>/<code>NG</code> for syllabic nasals {{IPAc-yue|M}} and {{IPAc-yue|NG}} respectively.
Periods indicate intra-word syllable boundaries; hyphens (spaces) indicate word boundaries.
=== IPA symbols ===
JP uses some IPA symbols for different sounds. Only some IPA symbols can be used for their intended sounds.
{| class="wikitable"
! IPA Sounds||JP|| IPA or IPA-like symbols
|-
| aspirated sounds:<br>/pʰ, tʰ, tsʰ, kʰ/||p, t, c, k||pʰ, tʰ, tsʰ, kʰ<br>ph, th, tsh, kh<br>p', t', ts', k'
|-
| /ts/||z||ts
|-
| /ŋ/||ng ||ŋ (currently only in initial [ŋ]; rimes [ɐŋ], [œŋ])
|-
| [[Syllable#Chinese_model|null initial]] /ʔ/||/ ||(omit when inputting), 0, ?
|-
| /ɐ/ rimes||ai, au etc||ɐi, ɐu etc
|-
| /œ/, /ɵ/||oe, eo||œ, ɵ
|-
| /y/ rimes||yu, yun, yut ||y, yn, yt
|}
== See also ==
{{IPA templates}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:IPA language templates|c]]
}}</includeonly>
nc8k816invy46rq7xuap0lb23zzom33
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:C-cmn
10
2696
8034
2026-10-20T01:10:47Z
Saimawnkham
28
Created page with "{{#switch:{{{1}}} |-= |.=. |'|ˈ=ˈ |,|ˌ=ˌ |er|ar|air|anr=a{{tone-cmn|{{{2}}}}}ɚ |angr=ã{{tone-cmn|{{{2}}}}}ɚ̃ |aor=a{{tone-cmn|{{{2}}}}}ʊ˞ |eir|enr=ɚ{{tone-cmn|{{{2}}}}} |^r=ɨɚ{{tone-cmn|{{{2}}}}} |zhir=ʈʂɚ{{tone-cmn|{{{2}}}}} |chir=ʈʂʰɚ{{tone-cmn|{{{2}}}}} |shir=ʂɚ{{tone-cmn|{{{2}}}}} |rir=ɻɚ{{tone-cmn|{{{2}}}}} |zir=tsɚ{{tone-cmn|{{{2}}}}} |cir=tsʰɚ{{tone-cmn|{{{2}}}}} |sir=sɚ{{tone-cmn|{{{2}}}}} |engr=ɚ̃{{tone-cmn|{{{2}}}}} |e'r=ɤ{{..."
8034
wikitext
text/x-wiki
{{#switch:{{{1}}}
|-=
|.=.
|'|ˈ=ˈ
|,|ˌ=ˌ
|er|ar|air|anr=a{{tone-cmn|{{{2}}}}}ɚ
|angr=ã{{tone-cmn|{{{2}}}}}ɚ̃
|aor=a{{tone-cmn|{{{2}}}}}ʊ˞
|eir|enr=ɚ{{tone-cmn|{{{2}}}}}
|^r=ɨɚ{{tone-cmn|{{{2}}}}}
|zhir=ʈʂɚ{{tone-cmn|{{{2}}}}}
|chir=ʈʂʰɚ{{tone-cmn|{{{2}}}}}
|shir=ʂɚ{{tone-cmn|{{{2}}}}}
|rir=ɻɚ{{tone-cmn|{{{2}}}}}
|zir=tsɚ{{tone-cmn|{{{2}}}}}
|cir=tsʰɚ{{tone-cmn|{{{2}}}}}
|sir=sɚ{{tone-cmn|{{{2}}}}}
|engr=ɚ̃{{tone-cmn|{{{2}}}}}
|e'r=ɤ{{tone-cmn|{{{2}}}}}˞
|yar|iar=ja{{tone-cmn|{{{2}}}}}ɚ
|yanr|ianr=jɐ{{tone-cmn|{{{2}}}}}ɚ
|yangr|iangr=jã{{tone-cmn|{{{2}}}}}ɚ̃
|yaor|iaor=ja{{tone-cmn|{{{2}}}}}ʊ˞
|yir|ir|yinr|inr=jɚ{{tone-cmn|{{{2}}}}}
|yer|ier=jɚ{{tone-cmn|{{{2}}}}}
|yingr|ingr=jɚ̃{{tone-cmn|{{{2}}}}}
|your|iur=jo{{tone-cmn|{{{2}}}}}ʊ˞
|yongr|iongr=jʊ̃{{tone-cmn|{{{2}}}}}˞
|our=o{{tone-cmn|{{{2}}}}}ʊ˞
|yuanr|yüanr|üanr|vanr=ɥɐ{{tone-cmn|{{{2}}}}}ɚ
|yur|yür|ür|vr|yunr|ünr|vnr=ɥɚ{{tone-cmn|{{{2}}}}}
|yuer|yüer|üer|ver=ɥɚ{{tone-cmn|{{{2}}}}}
|ongr=ʊ̃{{tone-cmn|{{{2}}}}}˞
|war|uar|wair|uair|wanr|uanr=wa{{tone-cmn|{{{2}}}}}ɚ
|wangr|uangr=wã{{tone-cmn|{{{2}}}}}ɚ̃
|weir|uir|wenr|unr=wɚ{{tone-cmn|{{{2}}}}}
|wengr=wɚ̃{{tone-cmn|{{{2}}}}}
|wor|uor=wo{{tone-cmn|{{{2}}}}}˞
|wur|ur=u{{tone-cmn|{{{2}}}}}˞
|ai=a{{tone-cmn|{{{2}}}}}ɪ
|an=a{{tone-cmn|{{{2}}}}}n
|a=a{{tone-cmn|{{{2}}}}}
|ang=a{{tone-cmn|{{{2}}}}}ŋ
|ao=a{{tone-cmn|{{{2}}}}}ʊ
|ei=e{{tone-cmn|{{{2}}}}}ɪ
|en=ə{{tone-cmn|{{{2}}}}}n
|eng=ə{{tone-cmn|{{{2}}}}}ŋ
|ê=ɛ{{tone-cmn|{{{2}}}}}
|e=ɤ{{tone-cmn|{{{2}}}}}
|yi|i=i{{tone-cmn|{{{2}}}}}
|yin|in=i{{tone-cmn|{{{2}}}}}n
|ying|ing=i{{tone-cmn|{{{2}}}}}ŋ
|zhi=ʈʂɻ̩{{tone-cmn|{{{2}}}}}
|chi=ʈʂʰɻ̩{{tone-cmn|{{{2}}}}}
|shi=ʂɻ̩{{tone-cmn|{{{2}}}}}
|ri=ɻɻ̩{{tone-cmn|{{{2}}}}}
|zi=tsɹ̩{{tone-cmn|{{{2}}}}}
|ci=tsʰɹ̩{{tone-cmn|{{{2}}}}}
|si=sɹ̩{{tone-cmn|{{{2}}}}}
|^=ɨ{{tone-cmn|{{{2}}}}}
|ju|jv|jü=tɕy{{tone-cmn|{{{2}}}}}
|qu|qv|qü=tɕʰy{{tone-cmn|{{{2}}}}}
|xu|xv|xü=ɕy{{tone-cmn|{{{2}}}}}
|jun|jün|jvn=tɕy{{tone-cmn|{{{2}}}}}n
|jue|jüe|jve=tɕɥe{{tone-cmn|{{{2}}}}}
|juan|jüan|jvan=tɕɥɛ{{tone-cmn|{{{2}}}}}n
|qun|qün|qvn=tɕʰy{{tone-cmn|{{{2}}}}}n
|que|qüe|qve=tɕʰɥe{{tone-cmn|{{{2}}}}}
|quan|qüan|qvan=tɕʰɥɛ{{tone-cmn|{{{2}}}}}n
|xun|xün|xvn=ɕy{{tone-cmn|{{{2}}}}}n
|xue|xüe|xve=ɕɥe{{tone-cmn|{{{2}}}}}
|xuan|xüan|xvan=ɕɥɛ{{tone-cmn|{{{2}}}}}n
|ya|ia=ja{{tone-cmn|{{{2}}}}}
|yang|iang=ja{{tone-cmn|{{{2}}}}}ŋ
|yao|iao=ja{{tone-cmn|{{{2}}}}}ʊ
|ye|ie=je{{tone-cmn|{{{2}}}}}
|yan|ian=jɛ{{tone-cmn|{{{2}}}}}n
|you|iu=jo{{tone-cmn|{{{2}}}}}ʊ
|yo|io=jɔ{{tone-cmn|{{{2}}}}}
|yong|iong=jʊ{{tone-cmn|{{{2}}}}}ŋ
|ou=o{{tone-cmn|{{{2}}}}}ʊ
|wu|u=u{{tone-cmn|{{{2}}}}}
|yue|yüe|üe|yve|ve=ɥe{{tone-cmn|{{{2}}}}}
|yuan|yüan|üan|yvan|van=ɥɛ{{tone-cmn|{{{2}}}}}n
|ong=ʊ{{tone-cmn|{{{2}}}}}ŋ
|wa|ua=wa{{tone-cmn|{{{2}}}}}
|wai|uai=wa{{tone-cmn|{{{2}}}}}ɪ
|wan|uan=wa{{tone-cmn|{{{2}}}}}n
|wang|uang=wa{{tone-cmn|{{{2}}}}}ŋ
|wei|ui=we{{tone-cmn|{{{2}}}}}ɪ
|wen|un=wə{{tone-cmn|{{{2}}}}}n
|weng=wə{{tone-cmn|{{{2}}}}}ŋ
|wo|uo|o=wo{{tone-cmn|{{{2}}}}}
|yu|yü|ü|yv|v=y{{tone-cmn|{{{2}}}}}
|yun|yün|ün|yvn|vn=y{{tone-cmn|{{{2}}}}}n
|M=m̩{{tone-cmn|{{{2}}}}}
|N=n̩{{tone-cmn|{{{2}}}}}
|NG=ŋ̩{{tone-cmn|{{{2}}}}}
|B=b
|b=p
|p=pʰ
|m=m
|f=f
|D=d
|d=t
|t=tʰ
|n=n
|l=l
|G=ɡ
|g=k
|k=kʰ
|h=x
|J=dʑ
|j=tɕ
|q=tɕʰ
|x=ɕ
|ZH=ɖʐ
|zh=ʈʂ
|ch=ʈʂʰ
|sh=ʂ
|r=ɻ
|R=ʐ
|Z=dz
|z=ts
|c=tsʰ
|s=s
|#default=<includeonly>]][[Help:IPA/Mandarin|{{tooltip|2=Unrecognized symbol: {{{1}}}|'''[unsupported input]'''|dotted=no}}]][[Category:Ill-formatted IPAc-cmn transclusions]][</includeonly><includeonly>[Help:IPA/Mandarin{{!}}</includeonly>}}<noinclude>
{{documentation|content=
This template defines the phonetic respelling system used by [[Template:IPAc-cmn]]. It should not be linked to directly.
[[Category:IPA working templates|{{PAGENAME}}]]
}}
</noinclude>
levahfvq12ay5bpdzhirae6rgbknjkr
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:C-yue
10
2697
8035
2026-10-20T01:11:19Z
Saimawnkham
28
Created page with "{{#switch:{{{1}}} |aa=a{{tone-yue|{{{2}}}}} |aai=aj{{tone-yue|{{{2}}}}} |aau=aw{{tone-yue|{{{2}}}}} |aam=am{{tone-yue|{{{2}}}}} |aan=an{{tone-yue|{{{2}}}}} |aang=aŋ{{tone-yue|{{{2}}}}} |aap=ap̚{{tone-yue|{{{2}}}}} |aat=at̚{{tone-yue|{{{2}}}}} |aak=ak̚{{tone-yue|{{{2}}}}} |ɐi=ɐj{{tone-yue|{{{2}}}}} |ɐu=ɐw{{tone-yue|{{{2}}}}} |ɐm=ɐm{{tone-yue|{{{2}}}}} |ɐn=ɐn{{tone-yue|{{{2}}}}} |ɐŋ=ɐŋ{{tone-yue|{{{2}}}}} |ɐp=ɐp̚{{tone-yue|{{{2}}}}} |ɐt=ɐt̚{{tone-yue|..."
8035
wikitext
text/x-wiki
{{#switch:{{{1}}}
|aa=a{{tone-yue|{{{2}}}}}
|aai=aj{{tone-yue|{{{2}}}}}
|aau=aw{{tone-yue|{{{2}}}}}
|aam=am{{tone-yue|{{{2}}}}}
|aan=an{{tone-yue|{{{2}}}}}
|aang=aŋ{{tone-yue|{{{2}}}}}
|aap=ap̚{{tone-yue|{{{2}}}}}
|aat=at̚{{tone-yue|{{{2}}}}}
|aak=ak̚{{tone-yue|{{{2}}}}}
|ɐi=ɐj{{tone-yue|{{{2}}}}}
|ɐu=ɐw{{tone-yue|{{{2}}}}}
|ɐm=ɐm{{tone-yue|{{{2}}}}}
|ɐn=ɐn{{tone-yue|{{{2}}}}}
|ɐŋ=ɐŋ{{tone-yue|{{{2}}}}}
|ɐp=ɐp̚{{tone-yue|{{{2}}}}}
|ɐt=ɐt̚{{tone-yue|{{{2}}}}}
|ɐk=ɐk̚{{tone-yue|{{{2}}}}}
|ai=ɐj{{tone-yue|{{{2}}}}}
|au=ɐw{{tone-yue|{{{2}}}}}
|am=ɐm{{tone-yue|{{{2}}}}}
|an=ɐn{{tone-yue|{{{2}}}}}
|ang=ɐŋ{{tone-yue|{{{2}}}}}
|ap=ɐp̚{{tone-yue|{{{2}}}}}
|at=ɐt̚{{tone-yue|{{{2}}}}}
|ak=ɐk̚{{tone-yue|{{{2}}}}}
|e=ɛ{{tone-yue|{{{2}}}}}
|ei=ej{{tone-yue|{{{2}}}}}
|eu=ɛw{{tone-yue|{{{2}}}}}
|em=ɛm{{tone-yue|{{{2}}}}}
|en=ɛn{{tone-yue|{{{2}}}}}
|eng=ɛŋ{{tone-yue|{{{2}}}}}
|ep=ɛp̚{{tone-yue|{{{2}}}}}
|ek=ɛk̚{{tone-yue|{{{2}}}}}
|œ=œ{{tone-yue|{{{2}}}}}
|ɵy=ɵɥ{{tone-yue|{{{2}}}}}
|ɵn=ɵn{{tone-yue|{{{2}}}}}
|œŋ=œːŋ{{tone-yue|{{{2}}}}}
|ɵt=ɵt̚{{tone-yue|{{{2}}}}}
|œk=œk̚{{tone-yue|{{{2}}}}}
|oe=œ{{tone-yue|{{{2}}}}}
|eoi=ɵɥ{{tone-yue|{{{2}}}}}
|eon=ɵn{{tone-yue|{{{2}}}}}
|oeng=œŋ{{tone-yue|{{{2}}}}}
|eot=ɵt̚{{tone-yue|{{{2}}}}}
|oek=œk̚{{tone-yue|{{{2}}}}}
|o=ɔ{{tone-yue|{{{2}}}}}
|oi=ɔj{{tone-yue|{{{2}}}}}
|ou=ɔw{{tone-yue|{{{2}}}}}
|on=ɔn{{tone-yue|{{{2}}}}}
|ong=ɔŋ{{tone-yue|{{{2}}}}}
|ot=ɔt̚{{tone-yue|{{{2}}}}}
|ok=ɔk̚{{tone-yue|{{{2}}}}}
|i=i{{tone-yue|{{{2}}}}}
|iu=iw{{tone-yue|{{{2}}}}}
|im=im{{tone-yue|{{{2}}}}}
|in=in{{tone-yue|{{{2}}}}}
|ing=ɪŋ{{tone-yue|{{{2}}}}}
|ip=ip̚{{tone-yue|{{{2}}}}}
|it=it̚{{tone-yue|{{{2}}}}}
|ik=ɪk̚{{tone-yue|{{{2}}}}}
|y=y{{tone-yue|{{{2}}}}}
|yn=yn{{tone-yue|{{{2}}}}}
|yt=yt̚{{tone-yue|{{{2}}}}}
|yu=y{{tone-yue|{{{2}}}}}
|yun=yn{{tone-yue|{{{2}}}}}
|yut=yt̚{{tone-yue|{{{2}}}}}
|u=u{{tone-yue|{{{2}}}}}
|ui=uj{{tone-yue|{{{2}}}}}
|un=un{{tone-yue|{{{2}}}}}
|ung=ʊŋ{{tone-yue|{{{2}}}}}
|ut=ut̚{{tone-yue|{{{2}}}}}
|uk=ʊk̚{{tone-yue|{{{2}}}}}
|m0=m̩{{tone-yue|{{{2}}}}}
|ng0=ŋ̍{{tone-yue|{{{2}}}}}
|M=m̩{{tone-yue|{{{2}}}}}
|NG=ŋ̍{{tone-yue|{{{2}}}}}
|b=p
|p=pʰ
|m=m
|f=f
|d=t
|t=tʰ
|n=n
|l=l
|z=ts
|c=tsʰ
|s=s
|g=k
|k=kʰ
|gw=kʷ
|kw=kʷʰ
|ng=ŋ
|h=h
|0=ʔ
|j=j
|w=w
|pʰ=pʰ
|tʰ=tʰ
|tsʰ=tsʰ
|kʰ=kʰ
|ph=pʰ
|th=tʰ
|tsh=tsʰ
|kh=kʰ
|p'=pʰ
|t'=tʰ
|ts'=tsʰ
|k'=kʰ
|ŋ=ŋ
|?=ʔ
|-=
|.=.
|'=.
| '''[unsupported input]'''{{main other|<includeonly>[[Category:Ill-formatted IPAc-yue transclusions]]</includeonly>}}}}<noinclude>
{{doc|content=
This template defines the phonetic respelling system used by [[Template:IPAc-yue]]. It should not be linked to directly.
[[Category:IPA working templates|{{PAGENAME}}]]
}}
</noinclude>
o2na6iavbeqmyltyi9xttbkcu96it7g
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone-cmn
10
2698
8036
2026-10-20T01:12:02Z
Saimawnkham
28
Created page with "{{#switch:{{{1}}} |1=́ |2=̌ |3=̀ |4=̂ |5=}}<noinclude> {{doc|content= This template defines the diacritic tones used by [[Template:c-cmn]], which is then used for [[Template:IPAc-cmn]]. It should not be linked to directly. [[Category:IPA working templates|{{PAGENAME}}]] }} </noinclude>"
8036
wikitext
text/x-wiki
{{#switch:{{{1}}}
|1=́
|2=̌
|3=̀
|4=̂
|5=}}<noinclude>
{{doc|content=
This template defines the diacritic tones used by [[Template:c-cmn]], which is then used for [[Template:IPAc-cmn]]. It should not be linked to directly.
[[Category:IPA working templates|{{PAGENAME}}]]
}}
</noinclude>
jrsmwf0is0qzrzs9w2pb30vqei31pxv
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone-yue
10
2699
8037
2026-10-20T01:12:33Z
Saimawnkham
28
Created page with "{{#switch:{{{1}}} |1=˥ |7=˥˧ |2=˧˥ |3=˧ |4=˩ |5=˩˧ |6=˨ }}<noinclude> {{doc}} </noinclude>"
8037
wikitext
text/x-wiki
{{#switch:{{{1}}}
|1=˥
|7=˥˧
|2=˧˥
|3=˧
|4=˩
|5=˩˧
|6=˨
}}<noinclude>
{{doc}}
</noinclude>
esr0nnqp20y0d7hys6gc2khnwj4f7gs
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone-yue/doc
10
2700
8038
2026-10-20T01:12:56Z
Saimawnkham
28
Created page with "<noinclude>{{documentation subpage}}</noinclude> This template defines the diacritic tones used by [[Template:c-yue]], which is then used for [[Template:IPAc-yue]]. It should not be linked to directly. {|class="wikitable" style="text-align:center" ! Tone name !! Dark level,<br>upper dark check !! Dark rising !! Dark departing,<br>lower dark check !! Light level !! Light rising !! Light departing,<br>Light check !! (Dark level) |- ! Tone number | 1 | 2 | 3 | 4 | 5 | 6 |..."
8038
wikitext
text/x-wiki
<noinclude>{{documentation subpage}}</noinclude>
This template defines the diacritic tones used by [[Template:c-yue]], which is then used for [[Template:IPAc-yue]]. It should not be linked to directly.
{|class="wikitable" style="text-align:center"
! Tone name !! Dark level,<br>upper dark check !! Dark rising !! Dark departing,<br>lower dark check !! Light level !! Light rising !! Light departing,<br>Light check !! (Dark level)
|-
! Tone number
| 1
| 2
| 3
| 4
| 5
| 6
| (7)
|-
! Result
| style="font-size: 200%" | ◌{{tone-yue|1}}
| style="font-size: 200%" | ◌{{tone-yue|2}}
| style="font-size: 200%" | ◌{{tone-yue|3}}
| style="font-size: 200%" | ◌{{tone-yue|4}}
| style="font-size: 200%" | ◌{{tone-yue|5}}
| style="font-size: 200%" | ◌{{tone-yue|6}}
| style="font-size: 200%" | ◌{{tone-yue|7}}
|}
<includeonly>
[[Category:IPA working templates|{{PAGENAME}}]]
</includeonly>
9jwprrjxov0lemuqelxkepxddtyqweq
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone superscript
10
2701
8039
2026-10-20T01:13:34Z
Saimawnkham
28
Created page with "<includeonly>{{#invoke:Tone superscript|main}}</includeonly><noinclude>{{documentation}}</noinclude>"
8039
wikitext
text/x-wiki
<includeonly>{{#invoke:Tone superscript|main}}</includeonly><noinclude>{{documentation}}</noinclude>
h2ih5gfsbtgmlqby71hq5lq99x0d6fa
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone superscript/doc
10
2702
8040
2026-10-20T01:13:56Z
Saimawnkham
28
Created page with "{{Documentation subpage}} {{template shortcut|tonesup}} {{Lua|Module:Tone superscript}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> == Usage == This template automatically formats numbers as superscript for romanization systems like [[Wade–Giles]]. == Example == {{tlx|Tone superscript|Shuo1-wen2 chieh3-tzŭ4}} → {{tonesup|Shuo1-wen2 chieh3-tzŭ4}}. == Tracking categories == * {..."
8040
wikitext
text/x-wiki
{{Documentation subpage}}
{{template shortcut|tonesup}}
{{Lua|Module:Tone superscript}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
== Usage ==
This template automatically formats numbers as superscript for romanization systems like [[Wade–Giles]].
== Example ==
{{tlx|Tone superscript|Shuo1-wen2 chieh3-tzŭ4}} → {{tonesup|Shuo1-wen2 chieh3-tzŭ4}}.
== Tracking categories ==
* {{cat|Pages using Tone superscript with sup tags}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Chinese multilingual support templates]]
}}</includeonly>
884ztxe5l2fyye33fb00mebfyv00n9l
ᥛᥨᥝᥱ ᥓᥧᥰ:Tone superscript
828
2703
8041
2026-10-20T01:14:42Z
Saimawnkham
28
Created page with "local p = {} function p.main(frame) local root = mw.html.create() local arg = frame:getParent().args[1] or "" local x = arg:gsub("%f[%d%s]([%d\*]+)", "<sup>%1</sup>") root:tag('span'):wikitext(x) local tracking = '' if string.match(arg, "</?sup>") then tracking = '[[Category:Pages using Tone superscript with sup tags]]' end return tostring(root)..tracking end return p"
8041
Scribunto
text/plain
local p = {}
function p.main(frame)
local root = mw.html.create()
local arg = frame:getParent().args[1] or ""
local x = arg:gsub("%f[%d%s]([%d\*]+)", "<sup>%1</sup>")
root:tag('span'):wikitext(x)
local tracking = ''
if string.match(arg, "</?sup>") then tracking = '[[Category:Pages using Tone superscript with sup tags]]' end
return tostring(root)..tracking
end
return p
ppkgznf40stowgb2feydent8vghrxti
ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tonesup
10
2704
8042
2026-10-20T01:15:24Z
Saimawnkham
28
Redirected page to [[ᥗᥦᥛᥰ ᥙᥣ ᥘᥥᥐᥳ:Tone superscript]]
8042
wikitext
text/x-wiki
#REDIRECT [[Template:Tone superscript]]
eprxtz0fbhzhlfi026fwrurwxala57k