Module:User:Littlepenny413/zh-pron

local gsub = mw.ustring.gsub

local export = {}

local langname = { ["cdo"] = "閩東語", ["cmn"] = "普通話", ["cjy"] = "晉語", ["gan"] = "贛語", ["hak"] = "客家語", ["hsn"] = "湘語", ["nan"] = "閩南語", ["wuu"] = "吳語", ["yue"] = "廣東話", }

local langname_abbr = { ["m"] = "官話", ["c"] = "粵語", ["c-t"] = "台山話", ["g"] = "贛語", ["h"] = "客家語", ["j"] = "晉語", ["md"] = "閩東語", ["mn"] = "閩南語", ["mn-t"] = "閩南語", ["w"] = "吳語", ["x"] = "湘語", }

local pos_aliases_cat = { ["n"] = "名詞", ["noun"] = "名詞", ["pn"] = "專有名詞", ["propn"] = "專有名詞", ["proper"] = "專有名詞", ["proper noun"] = "專有名詞", ["pron"] = "代詞", ["pronoun"] = "代詞", ["v"] = "動詞", ["verb"] = "動詞", ["a"] = "形容詞", ["adj"] = "形容詞", ["adjective"] = "形容詞", ["adv"] = "副詞", ["adverb"] = "副詞", ["prep"] = "前置介詞", ["pre"] = "前置介詞", ["postp"] = "後置介詞", ["post"] = "後置介詞", ["con"] = "連詞", ["conj"] = "連詞", ["conjunction"] = "連詞", ["part"] = "助詞", ["particle"] = "助詞", ["pref"] = "前綴", ["prefix"] = "前綴", ["suf"] = "後綴", ["suffix"] = "後綴", ["interfix"] = "間綴", ["prov"] = "諺語", ["proverb"] = "諺語", ["id"] = "熟語", ["idiom"] = "熟語", ["ch"] = "成語", ["cy"] = "成語", ["chengyu"] = "成語", ["成語"] = "成語", ["ph"] = "詞組", ["phrase"] = "詞組", ["intj"] = "感嘆詞", ["interj"] = "感嘆詞", ["interjection"] = "感嘆詞", ["cl"] = "分類詞", ["cls"] = "分類詞", ["classifier"] = "分類詞", ["num"] = "數詞", ["numeral"] = "數詞", ["abb"] = "縮寫", ["abbreviation"] = "縮寫", ["det"] = "限定詞", ["deter"] = "限定詞", ["determiner"] = "限定詞", }

function makeNote(text) return "\n***  註解: " .. text .. " " end

function export.make(frame) local args = frame:getParent.args local pagename = mw.title.getCurrentTitle.text local m_rom = args["m"] or args["官話"] or "" local c_rom = args["c"] or args["粵語"] or "" local c_t_rom = args["c-t"] or args["粵語台山"] or "" local g_rom = args["g"] or args["贛語"] or "" local h_rom = args["h"] or args["客家"] or "" local j_rom = args["j"] or args["晉語"] or "" local md_rom = args["md"] or args["閩東"] or "" local mn_rom = args["mn"] or args["閩南"] or "" local mn_t_rom = args["mn-t"] or args["閩南潮州"] or "" local w_rom = args["w"] or args["吳語"] or "" local x_rom = args["x"] or args["湘語"] or "" local m_audio = args["ma"] or args["官話音"] or "" local m_audio2 = args["ma2"] or args["官話音2"] or "" local c_audio = args["ca"] or args["粵語音"] or "" local c_t_audio = args["c-ta"] or args["粵語台山音"] or "" local g_audio = args["ga"] or args["贛語音"] or "" local h_audio = args["ha"] or args["客家音"] or "" local j_audio = args["ja"] or args["晉語音"] or "" local md_audio = args["mda"] or args["閩東音"] or "" local mn_audio = args["mna"] or args["閩南音"] or "" local mn_t_audio = args["mn-ta"] or args["閩南潮州音"] or "" local w_audio = args["wa"] or args["吳語音"] or "" local x_audio = args["xa"] or args["湘語音"] or "" local dial = args["dial"] or "" local mc = (args["mc"] and args["mc"] ~= "") and args["mc"] or (args["中古"] and args["中古"] ~= "") and args["中古"] or false local oc = (args["oc"] and args["oc"] ~= "") and args["oc"] or (args["上古"] and args["上古"] ~= "") and args["上古"] or false local only_cat = args["only_cat"] or ""

text = {} if only_cat ~= "yes" then textShow = {' '} textHide = {} if m_rom .. m_audio ~= "" then local m_pron = require("Module:cmn-pron") if m_rom ~= "" then table.insert(textShow, '\n* 官話\n') table.insert(textShow, m_pron.str_analysis(m_rom,'head')) end m_args = {} m_args[1] = m_pron.str_analysis(m_rom,'') m_args_names = { '1n','1na','1nb','1nc','1nd','py','cap','tl','tl2','tl3','a','audio','er','ertl','ertl2','ertl3','era','eraudio', '2n','2na','2nb','2nc','2nd','2py','2cap','2tl','2tl2','2tl3','2a','2audio','2er','2ertl','2ertl2','2ertl3','2era','2eraudio', '3n','3na','3nb','3nc','3nd','3py','3cap','3tl','3tl2','3tl3','3a','3audio','3er','3ertl','3ertl2','3ertl3','3era','3eraudio', '4n','4na','4nb','4nc','4nd','4py','4cap','4tl','4tl2','4tl3','4a','4audio','4er','4ertl','4ertl2','4ertl3','4era','4eraudio', }			for _,name in ipairs(m_args_names) do				m_args[name] = m_pron.str_analysis(m_rom,name) end m_args[2] = m_pron.str_analysis(m_rom,'2') m_args[3] = m_pron.str_analysis(m_rom,'3') m_args[4] = m_pron.str_analysis(m_rom,'4') m_args['a'] = m_audio m_args['a2'] = m_audio2 local debug = "" for code,name in pairs(m_args) do debug = debug .. code .. ":" .. name .. ","			end table.insert(textHide, m_pron.make_args(m_args)) if args["m_note"] then table.insert(textHide, makeNote(args["m_note"])) end end if c_rom .. c_audio .. c_t_rom .. c_t_audio ~= "" then local c_pron = require("Module:User:Littlepenny413/yue-pron") if c_rom .. c_t_rom ~= "" then table.insert(textShow, '\n* 粵語') table.insert(textHide, '\n* 粵語') if c_rom ~= "" then c_rom = c_rom:gsub("%*","-") local c_processed = c_rom:gsub(',([^ ])',', %1') if mw.ustring.len(mw.title.getCurrentTitle.text) == 1 then c_processed = c_processed:gsub('([^, ]+)','%1') c_processed = c_processed:gsub('%[%[%[%[',)						c_processed = c_processed:gsub('%]%]%]%]',) c_processed = gsub(c_processed, '%[%[([^%]]+)%]%]', function(a)							return  .. gsub(a, '([1-9-]+)', '%1') ..  end) else c_processed = gsub(c_processed, '([1-9-]+)', '%1') end if c_t_rom == "" then table.insert(textShow, ' (')					else						table.insert(textShow, '\n*: (廣州, ') end table.insert(textShow, '耶魯粤拼) : ' .. c_pron.yale_format(c_rom) .. ' ')						c_rom = c_rom:gsub('[%[%]]','')					local c_hom = mw.loadData("Module:yue-pron/hom")					local c_hom_exists = false					table.insert(textHide, '\n** (廣東話) ')					if not c_hom_exists then						table.insert(textHide, '  [')						table.insert(textHide, tostring(mw.uri.fullUrl("Module:yue-pron/hom",{["action"]="edit"})))						table.insert(textHide, ' +] ')					end					c_comma = gsub(c_rom,',([^ ])',', %1')					table.insert(textHide, '\n*** 耶魯粵拼 : ')					table.insert(textHide, c_pron.yale_format(c_rom))					table.insert(textHide, ' ')					table.insert(textHide, '\n*** 粵拼 : ')					table.insert(textHide, c_pron.yale_to_jyutping(c_rom))					table.insert(textHide, ' ')					table.insert(textHide, '\n*** 教院 : ')					table.insert(textHide, c_pron.yale_to_cantonese_pinyin(c_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 劉錫祥 : ') table.insert(textHide, c_pron.yale_to_sidney(c_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 廣州話拼音 : ') table.insert(textHide, c_pron.yale_to_guangdong(c_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國際音標 : /') table.insert(textHide, c_pron.yale_to_ipa(c_rom)) table.insert(textHide, '/ ') add_audio(textHide, c_audio, 'yue') if args["c_note"] then table.insert(textHide, makeNote(args["c_note"])) end end if c_t_rom ~= "" then local c_t_processed = c_t_rom:gsub(',([^ ])',', %1') c_t_processed = gsub(c_t_processed, '([1-9%*]%-?[1-9%*]?)', '%1') table.insert(textShow, ((c_rom ~= "") and '\n*:' or '') .. ' (台山, 維基詞典) : ') table.insert(textShow, c_t_processed .. ' ') c_t_rom = c_t_rom:gsub('[%[%]]','') c_t_comma = gsub(c_t_rom,',([^ ])',', %1') table.insert(textHide, '\n** (台山話) ') table.insert(textHide, '\n*** 維基詞典 : ') table.insert(textHide, tostring(gsub(c_t_comma, '([1-9%*]%-?[1-9%*]?)', '%1'))) table.insert(textHide, ' ') table.insert(textHide, '\n*** Gene Chin : ') table.insert(textHide, c_pron.hoi_convert(c_t_rom, 'Gene')) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國防語言學院 : ') table.insert(textHide, c_pron.hoi_convert(c_t_rom, 'DLI')) table.insert(textHide, ' ') table.insert(textHide, '\n*** Stephen Li : ') table.insert(textHide, c_pron.hoi_convert(c_t_rom, 'Stephen')) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國際音標 : /') table.insert(textHide, c_pron.hoi_convert(c_t_rom, 'IPA')) table.insert(textHide, '/ ') add_audio(textHide, c_t_audio, 'yue-taishan') if args["c-t_note"] then table.insert(textHide, makeNote(args["c-t_note"])) end end end end if g_rom .. g_audio ~= "" then local g_pron = require("Module:gan-pron") if g_rom ~= "" then table.insert(textShow, '\n* 贛語 (維基詞典) : ') table.insert(textShow, g_pron.rom(g_rom)) table.insert(textShow, ' ') end table.insert(textHide, '\n* 贛語') table.insert(textHide, '\n** (南昌話) ') table.insert(textHide, '\n*** 維基詞典 : ') table.insert(textHide, g_pron.rom(g_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國際音標 : /') table.insert(textHide, g_pron.ipa(g_rom)) table.insert(textHide, '/ ') add_audio(textHide, g_audio, 'gan') if args["g_note"] then table.insert(textHide, makeNote(args["g_note"])) end end if (mw.ustring.match(h_rom, 'pfs=.') or mw.ustring.match(h_rom, 'gd=.') or "") .. h_audio ~= "" then local h_pron = require("Module:hak-pron") if (mw.ustring.match(h_rom, "pfs=.") or "") .. (mw.ustring.match(h_rom, 'gd=.') or "") ~= "" then table.insert(textShow, '\n* 客家語') table.insert(textShow, h_pron.rom_display(h_rom,'yes')) end table.insert(textHide, '\n* 客家語') if h_rom ~=  then table.insert(textHide, h_pron.rom_display(h_rom,)) end if h_audio ~= '' then add_audio(textHide,h_audio,'hak') end if args["h_note"] then table.insert(textHide, makeNote(args["h_note"])) end end if j_rom .. j_audio ~= "" then local j_pron = require("Module:cjy-pron") if j_rom ~= "" then table.insert(textShow, '\n* 晉語 (維基詞典) : ') table.insert(textShow, j_pron.rom(j_rom)) table.insert(textShow, ' ') end table.insert(textHide, '\n* 晉語') table.insert(textHide, '\n** (太原話)+ ') if j_rom ~= '' then table.insert(textHide, '\n*** 維基詞典 : <font face="Consolas">') table.insert(textHide, j_pron.rom(j_rom)) table.insert(textHide, ' ') end local no_sandhi = false local roms = mw.text.split(j_rom, '/') for i = 1, table.getn(roms) do				if mw.ustring.find(roms[i], ' [^ ]+ ') then no_sandhi = true break end end table.insert(textHide, '\n*** 國際音標 (舊式' .. (no_sandhi and ', no sandhi' or '') .. ') : /')			table.insert(textHide, j_pron.ipa(j_rom, no_sandhi and "no_sandhi" or "")) table.insert(textHide, '/ ') add_audio(textHide, j_audio, 'cjy') if args["j_note"] then table.insert(textHide, makeNote(args["j_note"])) end end if md_rom .. md_audio ~= "" then local md_pron = require("Module:cdo-pron") if md_rom ~= "" then table.insert(textShow, '\n* 閩東語 (平話字) : <font face="Consolas">') table.insert(textShow, md_pron.rom(md_rom)) table.insert(textShow, ' ') end table.insert(textHide, '\n* 閩東語') table.insert(textHide, '\n** (福州話) ') if md_rom ~= '' then table.insert(textHide, '\n*** 平話字 : <font face="Consolas">') table.insert(textHide, md_pron.rom(md_rom)) table.insert(textHide, ' ') if not mw.ustring.match(md_rom, '([^/]*)-([^/]*)-([^/]*)-([^/]*)-([^/]*)') then table.insert(textHide, '\n*** 國際音標 : /') table.insert(textHide, md_pron.ipa(md_rom)) table.insert(textHide, '/ ') else table.insert(textHide, '\n*** 國際音標(no sandhi) : /') table.insert(textHide, md_pron.ipa(md_rom, "no_sandhi")) table.insert(textHide, '/ ') end end add_audio(textHide, md_audio, 'cdo') if args["md_note"] then table.insert(textHide, makeNote(args["md_note"])) end end if mn_rom .. mn_audio .. mn_t_rom .. mn_t_audio ~= "" then local mn_pron = require("Module:nan-pron") if mn_rom .. mn_t_rom ~= "" then table.insert(textShow, '\n* 閩南語') if mn_rom ~= "" then table.insert(textShow, ((mn_t_rom == "") and " (" or "\n*: (福建, ") .. '白話字) : <font face="Consolas">')					table.insert(textShow, mn_pron.poj_display(mn_pron.poj_check_invalid(mn_rom)))					table.insert(textShow, ' ')				end				if mn_t_rom ~= "" then					table.insert(textShow, ((mn_rom ~= "") and '\n*:' or '') .. ' (潮州, 潮州话拼音) : <font face="Consolas">')					table.insert(textShow, mn_pron.pengim_display(mn_t_rom))					table.insert(textShow, ' ')				end			end			table.insert(textHide, '\n* 閩南語')			if mn_rom .. mn_audio ~= "" then				table.insert(textHide, mn_pron.generate_all(mn_rom))				add_audio(textHide, mn_audio, 'nan')				if args["mn_note"] then table.insert(textHide, makeNote(args["mn_note"])) end			end			if mn_t_rom .. mn_t_audio ~= "" then				table.insert(textHide, '\n** (潮州話) ')				table.insert(textHide, '\n*** 潮州話拼音 : <font face="Consolas">')				table.insert(textHide, mn_pron.pengim_display(mn_t_rom))				table.insert(textHide, ' ')				table.insert(textHide, '\n*** 模仿白話字 : <font face="Consolas">')				table.insert(textHide, mn_pron.pengim_to_pojlike_conv(mn_t_rom))				table.insert(textHide, ' ')				table.insert(textHide, '\n*** 國際音標 : ') table.insert(textHide, mn_pron.pengim_to_ipa_conv(mn_t_rom)) table.insert(textHide, ' ') add_audio(textHide, mn_t_audio, 'nan') if args["mn-t_note"] then table.insert(textHide, makeNote(args["mn-t_note"])) end end end if w_rom .. w_audio ~= "" then local w_pron = require("Module:wuu-pron") if w_rom ~= "" then table.insert(textShow, '\n* 吳語 (維基詞典) : <font face="Consolas">') table.insert(textShow, w_pron.rom(w_rom)) table.insert(textShow, ' ') end table.insert(textHide, '\n* 吳語') table.insert(textHide, '\n** (上海話) ') table.insert(textHide, '\n*** 維基詞典 : <font face="Consolas">') table.insert(textHide, w_pron.rom(w_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國際音標 : /') table.insert(textHide, w_pron.ipa_conv(w_rom)) table.insert(textHide, '/ ') add_audio(textHide, w_audio, 'wuu') if args["w_note"] then table.insert(textHide, makeNote(args["w_note"])) end end if x_rom .. x_audio ~= "" then local x_pron = require("Module:hsn-pron") if x_rom ~= "" then table.insert(textShow, '\n* 湘語 (維基詞典) : <font face="Consolas">') table.insert(textShow, x_pron.rom(x_rom)) table.insert(textShow, ' ') end table.insert(textHide, '\n* 湘語') table.insert(textHide, '\n** (長沙話) ') if x_rom ~= '' then x_diff = x_pron.stylediff(x_rom) table.insert(textHide, '\n*** 維基詞典 : <font face="Consolas">') table.insert(textHide, x_pron.rom(x_rom)) table.insert(textHide, ' ') table.insert(textHide, '\n*** 國際音標') table.insert(textHide, x_diff and ' (舊式)' or '') table.insert(textHide, ' : /') table.insert(textHide, x_pron.ipa(x_rom)) table.insert(textHide, '/ ') if x_diff then table.insert(textHide, '\n*** 國際音標 (新式) : /') table.insert(textHide, x_pron.ipa(x_rom, 'new')) table.insert(textHide, '/ ') end end add_audio(textHide, x_audio, 'hsn') if args["x_note"] then table.insert(textHide, makeNote(args["x_note"])) end end text = {table.concat(textShow), '\n \n\n', table.concat(textHide), ' '} if c_rom == "" then table.insert(text, "") end if dial ~= "n" and mw.ustring.len(mw.title.getCurrentTitle.text) == 1 then local success, m_dial = pcall(mw.loadData, "Module:zh/data/dial-pron/" .. pagename) if success then local dialPron = {} reading_count = 0 local temporary = {} if mw.ustring.match(dial, "^[0-9\,]+$") then for element in mw.text.gsplit(dial, ",") do						table.insert(dialPron, m_dial[tonumber(element)]) reading_count = reading_count + 1 end else for _, element in ipairs(m_dial) do						table.insert(dialPron, element) reading_count = reading_count + 1 end end for _, set in ipairs(dialPron) do					for _, object in ipairs(set[2]) do						table.insert(temporary, object) end end rand = mw.ustring.gsub("-" .. table.concat(temporary), "[^A-Za-z0-9]", mw.ustring.codepoint('%1')) table.insert(text, '\n\n \n* <div title="expand" ' ..					'class="mw-customtoggle-dial' .. rand .. '"> Dialectal data' ..					' <span style="float:right; border:1px solid #ccc; border-radius:1px; ' ..					'padding:0 0; font-size:90%">▼ ') table.insert(text, '\n{| class="wikitable mw-collapsible mw-collapsed" ' ..					'id="mw-customcollapsible-dial' .. rand .. '" style="width:100%; margin:0; ' ..					'text-align:center; border-collapse: collapse; border-style: hidden;"') local locStart = '\n|-\n!' local readingStart = table.concat({'\n!style="background:#E8ECFA; width:9em"|',				' [', tostring(mw.uri.fullUrl("Module:zh/data/dial-pron/" .. pagename, {["action"]="edit"})), ' edit]   '}) local locEnd = ' ' local headclr = 'style="background:#E8ECFA"|' local mclr = 'style="background:#FAF5F0"|' local jclr = 'style="background:#F0F5FA"|' local wclr = 'style="background:#F4F0FA"|' local huclr = 'style="background:#FAF9F0"|' local xclr = 'style="background:#F0F2FA"|' local gclr = 'style="background:#F0FAF3"|' local haclr = 'style="background:#FAF0F6"|' local cclr = 'style="background:#F0F5FA"|' local minclr = 'style="background:#F7FAF0"|' local clrList = { mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, jclr, jclr, jclr, wclr, wclr, wclr, wclr, huclr, huclr, xclr, xclr, gclr, haclr, haclr, cclr, cclr, cclr, minclr, minclr, minclr, minclr, minclr }				local locList = { table.concat({headclr, "Variety\n!", headclr, "Location"}), table.concat({"rowspan=17 ", mclr, "普通話\n!", mclr, "北京\n|", mclr}), table.concat({mclr, "哈爾濱\n|", mclr}), table.concat({mclr, "天津\n|", mclr}), table.concat({mclr, "濟南\n|", mclr}), table.concat({mclr, "青島\n|", mclr}), table.concat({mclr, "鄭州\n|", mclr}), table.concat({mclr, "西安\n|", mclr}), table.concat({mclr, "西寧\n|", mclr}), table.concat({mclr, "銀川\n|", mclr}), table.concat({mclr, "蘭州\n|", mclr}), table.concat({mclr, "烏魯木齊\n|", mclr}), table.concat({mclr, "武漢\n|", mclr}), table.concat({mclr, "成都\n|", mclr}), table.concat({mclr, "貴陽\n|", mclr}), table.concat({mclr, "昆明\n|", mclr}), table.concat({mclr, "南京\n|", mclr}), table.concat({mclr, "合肥\n|", mclr}), table.concat({"rowspan=3 ", jclr, "晉語\n!", jclr, "太原\n|", jclr}), table.concat({jclr, "平遙\n|", jclr}), table.concat({jclr, "呼和浩特\n|", jclr}), table.concat({"rowspan=4 ", wclr, "吳語\n!", wclr, "上海\n|", wclr}), table.concat({wclr, "蘇州\n|", wclr}), table.concat({wclr, "杭州\n|", wclr}), table.concat({wclr, "溫州\n|", wclr}), table.concat({"rowspan=2 ", huclr, "徽語\n!", huclr, "歙縣\n|", huclr}), table.concat({huclr, "屯溪\n|", huclr}), table.concat({"rowspan=2 ", xclr, "湘語\n!", xclr, "長沙\n|", xclr}), table.concat({xclr, "湘潭\n|", xclr}), table.concat({gclr, "Gan\n!", gclr, "南昌\n|", gclr}), table.concat({"rowspan=2 ", haclr, "客家語\n!", haclr, "梅縣\n|", haclr}), table.concat({haclr, "桃源\n|", haclr}), table.concat({"rowspan=3 ", cclr, "粵語\n!", cclr, "廣州\n|", cclr}), table.concat({cclr, "南寧\n|", cclr}), table.concat({cclr, "香港\n|", cclr}), table.concat({"rowspan=5 ", minclr, "閩語\n!", minclr, "廈門 (閩南)\n|", minclr}), table.concat({minclr, "福州 (閩東)\n|", minclr}), table.concat({minclr, "建甌 (閩北)\n|", minclr}), table.concat({minclr, "汕頭 (閩南)\n|", minclr}), table.concat({minclr, "海口 (閩南)\n|", minclr})} function ipa_correct(ipa, location) if location == 22 then return (gsub(ipa, "13", "23")) else return ipa end end function fmtDial(text, location) local fmttedPron = {} if text == "" then return "" end for pronunciation in mw.text.gsplit(text, "|") do						ipa = mw.ustring.match(pronunciation, "^[^\(\)一-龯㐀-䶵～,]+") ipa = gsub(ipa, "([ptk])([0-5])", "%1̚%2") environ = mw.ustring.match(pronunciation, "[\(\)一-龯㐀-䶵～,]*$") or false table.insert(fmttedPron, "<span class=\"IPA\"> /" ..							tostring(ipa_format(ipa_correct(ipa, location))) .. "/ " .. (environ and " <span class=\"Hani\" lang=\"zh\">"..environ.." " or nil)) end return table.concat(fmttedPron, " ") end for locationNo = 1, 40 do					for readingNo = 1, #dialPron do						if readingNo == 1 then table.insert(text, locStart) table.insert(text, locList[locationNo]) end if locationNo == 1 then situation = dialPron[readingNo][1] table.insert(text, readingStart) table.insert(text, pagename) table.insert(text, (pagename ~= situation and " (" ..								gsub(situation, pagename, "'''" .. pagename .. "'''") .. ")" or "")) table.insert(text, " ") else table.insert(text, (readingNo == 1 and "" or "\n|" .. clrList[locationNo-1])) table.insert(text, locEnd) table.insert(text, fmtDial(dialPron[readingNo][2][locationNo-1], locationNo)) table.insert(text, " ") end end end table.insert(text, "\n|} ") end end if mc then m_ltc_pron = require("Module:ltc-pron") mc_preview = m_ltc_pron.retrieve_pron(pagename, false, mc, true) if not mc_preview then mc = false end end if oc then m_och_pron = require("Module:och-pron") oc_preview = m_och_pron.generate_show(pagename, oc) if not oc_preview then oc = false end end if mc or oc then table.insert(text, '\n\n ') if mc then table.insert(text, m_ltc_pron.ipa(mc, mc_preview)) end if oc then table.insert(text, m_och_pron.ipa(oc, oc_preview)) end table.insert(text, " ") end table.insert(text, " ") end conv_text = {} if mw.title.getCurrentTitle.nsText == "" then local catText = args["cat"] or args["分類"] local cat = {} local cat_start = '[[Category:'		local cat_end = ']]' rom = m_rom ~= "" and m_rom or mw.title.getCurrentTitle.text if mw.ustring.match(rom, '[一-龯㐀-䶵]') then local m_cmn_pron = mw.loadData("Module:zh/data/cmn-pron") rom = gsub(rom, '.', m_cmn_pron.py) end local m_pron = require("Module:cmn-pron") rom = m_pron.py_transform(rom, true, true) if w_rom ~= '' then w_rom = gsub(w_rom, '%d', '') end local function add_cat(cat_table, name, cat, rom) local this_cat = {} table.insert(this_cat, cat_start) table.insert(this_cat, name) table.insert(this_cat, cat) table.insert(this_cat, "|") table.insert(this_cat, rom) table.insert(this_cat, cat_end) table.insert(cat_table, table.concat(this_cat)) end if catText and catText ~=  and mw.title.getCurrentTitle.nsText ==  or mw.title.getCurrentTitle.nsText == 'User' then cat = mw.text.split(catText, ',', true) if (pos_aliases_cat[cat[1]] or "") == 'chengyu' then table.insert(cat, 2, '成語') end table.insert(cat, 1, "字詞") for i = 1, #cat do				cat[i] = gsub(cat[i], '^ +', '') if mw.ustring.match(cat[i], ':') then local lang_name, category = langname_abbr[mw.text.split(cat[i], ':', true)[1]], (pos_aliases_cat[mw.text.split(cat[i], ':', true)[2]] or cat[i]) add_cat(conv_text, '漢語', category, rom) table.insert(conv_text, cat_start) table.insert(conv_text, lang_name) table.insert(conv_text, category) table.insert(conv_text, '|') table.insert(conv_text, (lang_name == '粵語' and c_rom or (lang_name == '閩南' and (mn_rom ~=  and mn_rom) or (mn_t_rom ~=  and mn_t_rom) or rom)) .. cat_end) else cat[i] = pos_aliases_cat[cat[i]] or cat[i] add_cat(conv_text, '漢語', cat[i], rom) if m_rom ~= '' then add_cat(conv_text, '官話', cat[i], m_rom) end if c_rom ~=  then add_cat(conv_text, '廣東話', cat[i], c_rom:gsub('[%[%]]',)) end if c_t_rom ~= '' then add_cat(conv_text, '台山話', cat[i], c_t_rom) end if g_rom ~=  or g_audio ~=  then add_cat(conv_text, '贛語', cat[i], g_rom:gsub("'", "")) end if mw.ustring.match(h_rom, 'pfs=.') or mw.ustring.match(h_rom, 'gd=.') or h_audio ~=  then add_cat(conv_text, '客家語', cat[i], mw.ustring.gsub(mw.ustring.gsub(h_rom, 'pfs=', ), 'gd=', '')) end if j_rom ~=  or j_audio ~=  then add_cat(conv_text, '晉語', cat[i], j_rom) end if md_rom ~=  or md_audio ~=  then add_cat(conv_text, '閩東語', cat[i], md_rom) end if mn_rom ~=  or mn_audio ~=  then add_cat(conv_text, '閩南語', cat[i], mn_rom) end if mn_t_rom ~=  or mn_t_audio ~=  then add_cat(conv_text, '閩南語', cat[i], mn_t_rom) end if w_rom ~=  or w_audio ~=  then add_cat(conv_text, '吳語', cat[i], w_rom) end if x_rom ~=  or x_audio ~=  then add_cat(conv_text, '湘語', cat[i], x_rom) end end end end table.insert(conv_text, cat_start) table.insert(conv_text, '漢語字詞有國際音標|') table.insert(conv_text, rom) table.insert(conv_text, cat_end) if mw.ustring.len(mw.title.getCurrentTitle.text) == 1 then table.insert(conv_text, cat_start) table.insert(conv_text, '漢字|') table.insert(conv_text, rom) table.insert(conv_text, cat_end) end end if mw.title.getCurrentTitle.nsText ~= '' then return (gsub(table.concat(text) .. table.concat(conv_text), "%[%[Category:[^%]]+%]%]", "")) else return (table.concat(text) .. table.concat(conv_text)) end end

function ipa_format(text) local numbers = { [1]='¹',[2]='²',[3]='³',[4]='⁴',[5]='⁵',[0]='⁰',['-']='⁻',['/']='/, /' } return gsub(text,'[0-5%-/]',numbers) end

function add_audio(text, audio, lang) -- This function has side effects if audio ~= "" then if audio == "y" then audio = lang .. '-' .. mw.title.getCurrentTitle.baseText .. '.ogg' end table.insert(text, '\n*** [[File:')		table.insert(text, audio)		table.insert(text, ']]') table.insert(text, '[[Category:')		table.insert(text, langname[lang])		table.insert(text, '字詞有錄音]]') end end

return export