ᥝᥤᥱ ᥑᥤᥱ ᥚᥤᥱ ᥖᥤᥱ ᥕᥣᥱ 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 .. ']&nbsp;' 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>&nbsp;[[" .. linktarget .. '|' .. linktext .. ']]&nbsp;' 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') .. '&nbsp;') 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|}}} | &#32;or {{gloss|{{{2}}}}} }}{{#if:{{{3|}}} | &#32;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|}}} | &#32;or {{gloss|{{{2}}}}} }}{{#if:{{{3|}}} | &#32;or {{gloss|{{{3}}}}} }}{{#if:{{{4|}}} | &#32;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> &rarr; {{literal translation}} * <code><nowiki>{{literal translation|lk=yes}}</nowiki></code> &rarr; {{literal translation|lk=yes}} * <code><nowiki>{{literal translation|lk=on}}</nowiki></code> &rarr; {{literal translation|lk=on}} * <code><nowiki>{{literal translation|a}}</nowiki></code> &rarr; {{literal translation|a}} * <code><nowiki>{{literal translation|''a'' A}}</nowiki></code> &rarr; {{literal translation|''a'' A}} * <code><nowiki>{{literal translation|a|b}}</nowiki></code> &rarr; {{literal translation|a|b}} * <code><nowiki>{{literal translation|a|b|c|d}}</nowiki></code> &rarr; {{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|}}}|"|&quot;}}}}">{{{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|}}}|"|&quot;}}}}">{{{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|}}}||&thinsp;}}}}{{{1|}}}&thinsp;<!-- -->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}|&thinsp;{{{3}}}}}<!-- -->{{#if:{{{4|}}}|&thinsp;{{{4}}}}}{{#if:{{{5|}}}|&thinsp;{{{5}}}}}<!-- -->{{#if:{{{6|}}}|&thinsp;{{{6}}}}}{{#if:{{{7|}}}|&thinsp;{{{7}}}}}<!-- -->{{#if:{{{8|}}}|&thinsp;{{{8}}}}}{{#if:{{{9|}}}|&thinsp;{{{9}}}}}<!-- -->{{#if:{{{10|}}}|&thinsp;{{{10}}}}}</span><noinclude> {{Documentation}} <!-- Please add categ..." 8002 wikitext text/x-wiki <span style="white-space: nowrap;">{{#if:{{{1|}}}|{{#if:{{{2|}}}||&thinsp;}}}}{{{1|}}}&thinsp;<!-- -->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}|&thinsp;{{{3}}}}}<!-- -->{{#if:{{{4|}}}|&thinsp;{{{4}}}}}{{#if:{{{5|}}}|&thinsp;{{{5}}}}}<!-- -->{{#if:{{{6|}}}|&thinsp;{{{6}}}}}{{#if:{{{7|}}}|&thinsp;{{{7}}}}}<!-- -->{{#if:{{{8|}}}|&thinsp;{{{8}}}}}{{#if:{{{9|}}}|&thinsp;{{{9}}}}}<!-- -->{{#if:{{{10|}}}|&thinsp;{{{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>&amp;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>&amp;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>&amp;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>&amp;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>&#32;}}<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>&#32;}}<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&nbsp;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&nbsp;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\">&lt;[[HTML element#br|br]]&#32;&#47;&gt;</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\">&lt;br&#32;&#47;&gt;</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&nbsp;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&nbsp;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&nbsp;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&nbsp;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;">&nbsp;</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;">&nbsp;</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}}} |-=&nbsp; |.=. |'|ˈ=ˈ |,|ˌ=ˌ |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}}} |-=&nbsp; |.=. |'|ˈ=ˈ |,|ˌ=ˌ |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ʰ |ŋ=ŋ |?=ʔ |-=&nbsp; |.=. |'=. | '''[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=&#769; |2=&#780; |3=&#768; |4=&#770; |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=&#769; |2=&#780; |3=&#768; |4=&#770; |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