Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
--[[ TODO: all non-English text wrapped in {{lang}}? distingush 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'); localdata=mw.loadData('Module:Infobox multi-lingual name/data'); locallang_mod=require('Module:Lang');-- for various functions and templates provided by Module:Lang localgetArgs=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. ]] localfunctionis_set(var) returnnot(var==nilorvar==''); 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. ]] localfunctionany_set(t) for_,vinpairs(t)do ifis_set(v)then returntrue; end end returnfalse; 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 ]] localfunctionshowflag(frame,args) localshow_flag=args.showflag; ifnotis_set(show_flag)then return'';-- |showflag= not set so nothing to do; return empty string end localinfobox_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 ifdata.transl_map[show_flag]then locali=1; while(1)do locallabeln='label'..i;-- make label index that matches |labeln= parameter localdatan='data'..i;-- make data index that matches |datan= parameter ifnotdata.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 returnframe: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 ]] localfunctionadd_label_data_pair(infobox_args,label,data,i) ifis_set(data)then infobox_args['label'..i]=label;-- make an enumerated label parameter infobox_args['data'..i]=data;-- make an enumerated data parameter returni+1;-- return bumped enumerator end returni;-- 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 ]] localfunctionadd_transcription(infobox_args,args,idx,show,i,lang) infobox_args['header'..i]=showanddata.xscript[idx].header;-- if headers are displayed i=i+1;-- bump the enumerator for_,vinipairs(data.xscript[idx].t)do-- each label / data pair in the xscript subtable i=add_label_data_pair(infobox_args,v[1],is_set(args[v[2]])andlang_mod._transl({lang,args[v[2]],italic='no'}),i);-- enumerator is bumped here end returni;-- 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 ]] localfunctiontranscriptions_zh(infobox_args,args,show,i) ifany_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 ifany_set({args.xej,args['zh-dungan'],args.sic})then i=add_transcription(infobox_args,args,'other mandarin',show,i,'zh'); end ifany_set({args.wuu,args.lmz,args.ouji,args.suz})then-- ???? ouji was not included here in original template; why? i=add_transcription(infobox_args,args,'wu',show,i,'wuu'); end ifis_set(args.gan)then i=add_transcription(infobox_args,args,'gan',show,i,'gan'); end ifis_set(args.hsn)then i=add_transcription(infobox_args,args,'xiang',show,i,'hsn'); end ifany_set({args.h,args.phfs})then i=add_transcription(infobox_args,args,'hakka',show,i,'hak'); end ifany_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 ifis_set(args.toi)then i=add_transcription(infobox_args,args,'other yue',show,i,'yue'); end ifany_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 ifis_set(args.buc)then i=add_transcription(infobox_args,args,'eastern min',show,i,'cdo'); end ifis_set(args.hhbuc)then i=add_transcription(infobox_args,args,'pu-xian min',show,i,'cpx'); end ifis_set(args.mblmc)then i=add_transcription(infobox_args,args,'northern min',show,i,'mnp'); end ifis_set(args['phagspa-latin'])then-- phagspa is a script i=add_transcription(infobox_args,args,'old mandarin',show,i,'zh'); end ifany_set({args.mc,args.emc,args.lmc})then i=add_transcription(infobox_args,args,'middle chinese',show,i,'ltc'); end ifany_set({args['oc-b92'],args['oc-bs'],args['oc-zz']})then i=add_transcription(infobox_args,args,'old chinese',show,i,'och'); end returni;-- 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}} ]] localfunctiontranscriptions(frame,args,lang) ifnotargsthen args=frame.args; end localshow='no'~=args.hideornil;-- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header localinfobox_args={};-- table to hold arguments for frame:expandTemplate() locali=1;-- enumerator used with {{infobox}} |headern=, |labeln=, and |datan= parameters ifshowthen infobox_args['subbox']='yes'; infobox_args['above']='Transkripsi'; else infobox_args['child']='yes'; end infobox_args['bodyclass']='collapsible collapsed'; infobox_args['bodystyle']='display:inline-table; text-align: left;'; infobox_args['abovestyle']='font-size: 100%; text-align: left; background-color: #f9ffbc;';-- TODO: #define various colors in a common config location; and function? infobox_args['headerstyle']='background-color: #dcffc9;';-- TODO: #define various colors in a common config location; and function? infobox_args['labelstyle']='font-weight:normal;'; if'zh'==langthen 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 returnframe: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) beause 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 maintenence 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 ]] localfunctionibox_boilerplate(infobox_args,args) infobox_args['child']='yes'; localh_color; ifis_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']='background-color: '..h_color..';'; ifis_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}} ]] localfunctionibox_mln_zh(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args) if'none'~=args.headerand'none'~=args.chinese_headerthen infobox_args['header1']=args.headerorargs.chinese_headeror'Nama Tionghoa'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Tionghoa|Bahasa Tionghoa]]',is_set(args.c)andlang_mod._lang({'zh-Hani',args.c,size='1rem'}),i) if'st'==args.orderthen i=add_label_data_pair(infobox_args,'[[Karakter Tionghoa sederhana|Aksara Tionghoa Sederhana]]',is_set(args.s)andlang_mod._lang({'zh-Hans',args.s,size='1rem'}),i) i=add_label_data_pair(infobox_args,'[[Karakter Tionghoa tradisional|Aksara Tionghoa Tradisional]]',is_set(args.t)andlang_mod._lang({'zh-Hant',args.t,size='1rem'}),i) else i=add_label_data_pair(infobox_args,'[[Karakter Tionghoa tradisional|Aksara Tionghoa Tradisional]]',is_set(args.t)andlang_mod._lang({'zh-Hant',args.t,size='1rem'}),i) i=add_label_data_pair(infobox_args,'[[Karakter Tionghoa sederhana|Aksara Tionghoa Sederhana]]',is_set(args.s)andlang_mod._lang({'zh-Hans',args.s,size='1rem'}),i) end ifis_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|Aksara \'Phags-pa]]',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,'[[Romanisasi pos Tionghoa|Romanisasi pos Tionghoa]]',is_set(args.psp)andargs.pspornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.l)andargs.lornil,i) if'no'==args.hidethen infobox_args['rowstyle'..i]='display:none;'; infobox_args['rowcellstyle'..i]='display:none;'; end ifany_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 returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ A R >--------------------------------------------------------- implements {{Infobox Chinese/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 ]] localfunctionibox_mln_ar(frame,args) ifnotargsthen args=getArgs(frame);--, {removeBlanks = false}? end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.arabic_headerthen infobox_args['header1']=args.headerorargs.arabic_headeror'Nama Arab'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Arab|Bahasa Arab]]',is_set(args.arabic)andargs.arabicornil,i) i=add_label_data_pair(infobox_args,'[[Romanisasi bahasa Arab|Romanisasi bahasa Arab]]',is_set(args.arabic_rom)andargs.arabic_romornil,i) i=add_label_data_pair(infobox_args,'[[Bantuan:IPA untuk bahasa Arab|IPA]]',is_set(args.arabic_ipa)andargs.arabic_ipaornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.arabic_lit)andargs.arabic_litornil,i) ifany_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 returnframe: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}} ]] localfunctionibox_mln_blank(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); localietf_tag=lang_mod._is_ietf_tag(args.lang); localname_from_tag=ietf_tagandlang_mod._name_from_tag({args.lang})ornil; if'none'~=args.lang_hdrand'none'~=args.headerand'none'~=args.blank_headerthen ifis_set(args.lang_hdr)oris_set(args.header)oris_set(args.blank_header)then-- if one of these infobox_args['header1']=args.lang_hdrorargs.headerorargs.blank_header;-- make a header from it elseifietf_tagthen infobox_args['header1']=name_from_tag..' nama';-- make a header from the language name else infobox_args['header1']=args.lang..' nama';-- not a code so use whatever text is in {{{lang}}} end end locali=2; locallabel; localdata; ifname_from_tagthen ifis_set(args.lang_article)then label=table.concat({-- make a linked label from provided article name '[[', args.lang_article, '|', args.lang_labelorname_from_tag, ']]' }); else label=args.lang_labelorlang_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_labelorargs.lang;-- fall back data=args.lang_content; end i=add_label_data_pair(infobox_args,label,data,i); ifis_set(args.lang_rom)andietf_tagthen i=add_label_data_pair(infobox_args,args.lang_stdor'Romanisasi',lang_mod._transl({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,'Makna harfiah',args.lang_lit,i); returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ B O >--------------------------------------------------------- implements {{Infobox Chinese/Tibetan}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_bo}} ]] localfunctionibox_mln_bo(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.tibetan_headerthen infobox_args['header1']=args.headerorargs.tibetan_headeror'Nama Tibet'; end locali=2; i=add_label_data_pair(infobox_args,'[[Aksara Tibet|Aksara Tibet]]',is_set(args.tib)andframe:expandTemplate({title='Bo-textonly',args={lang='bo',args.tib}})ornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.literal_tibetan)andargs.literal_tibetanornil,i) ifany_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 returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ D N G >------------------------------------------------------- implements {{Infobox Chinese/Dunganese}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_dng}} ]] localfunctionibox_mln_dng(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.dunganese_headerthen infobox_args['header1']=args.headerorargs.dunganese_headeror'Nama Dungan'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Dungan|Bahasa Dungan]]',is_set(args.dungan)andargs.dunganornil,i) i=add_label_data_pair(infobox_args,'[[Xiao\'erjing]]',is_set(args['dungan-xej'])andargs['dungan-xej']ornil,i) i=add_label_data_pair(infobox_args,'[[Romanisasi|Romanisasi]]',is_set(args['dungan-latin'])andargs['dungan-latin']ornil,i) i=add_label_data_pair(infobox_args,'[[Hanzi]]',is_set(args['dungan-han'])andargs['dungan-han']ornil,i) returnframe: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}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_hokkien}} Template:Infobox Hokkien name/testcases ]] localfunctionibox_mln_hokkien(frame,args) ifnotargsthen args=getArgs(frame);--, {removeBlanks = false}? end localshow='no'~=args.hideornil;-- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.hokkien_headerthen infobox_args['header1']=args.headerorargs.hokkien_headeror'Nama Hokkien'; end locali=2; i=add_label_data_pair(infobox_args,'[[Hàn-jī]]',is_set(args.hanji)andlang_mod._lang({'nan',args.hanji,size='115%'})ornil,i); i=add_label_data_pair(infobox_args,'[[Pe̍h-ōe-jī]]',is_set(args.poj)andlang_mod._lang({'nan',args.poj,size='115%'})ornil,i); i=add_label_data_pair(infobox_args,'[[Hàn-lô]]',is_set(args.hanlo)andlang_mod._lang({'nan',args.hanlo,size='115%'})ornil,i); i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lm)andargs.lmornil,i) ifshowthen ifany_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,'[[Sistem Romanisasi Taiwan|Tâi-lô]]',is_set(args.tl)andargs.tlornil,i) i=add_label_data_pair(infobox_args,'[[Bbánlám pìngyīm|Bbánpìng]]',is_set(args.bp)andargs.bpornil,i) i=add_label_data_pair(infobox_args,'[[Bantuan:IPA untuk Hokkien|IPA]]',is_set(args.hokkienipa)andargs.hokkienipaornil,i) end returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ J A >--------------------------------------------------------- implements {{Infobox Chinese/Japanese}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_ja}} ]] localfunctionibox_mln_ja(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.japanese_headerthen infobox_args['header1']=args.headerorargs.japanese_headeror'Nama Jepang'; end locali=2; i=add_label_data_pair(infobox_args,'[[Kanji]]',is_set(args.kanji)andlang_mod._lang({'ja',args.kanji})ornil,i) i=add_label_data_pair(infobox_args,'[[Kana]]',is_set(args.kana)andlang_mod._lang({'ja',args.kana})ornil,i) i=add_label_data_pair(infobox_args,'[[Hiragana]]',is_set(args.hiragana)andlang_mod._lang({'ja',args.hiragana})ornil,i) i=add_label_data_pair(infobox_args,'[[Katakana]]',is_set(args.katakana)andlang_mod._lang({'ja',args.katakana})ornil,i) i=add_label_data_pair(infobox_args,'[[Kyūjitai]]',is_set(args.kyujitai)andlang_mod._lang({'ja',args.kyujitai})ornil,i) i=add_label_data_pair(infobox_args,'[[Shinjitai]]',is_set(args.shinjitai)andlang_mod._lang({'ja',args.shinjitai})ornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lja)andlang_mod._lang({'ja',args.lja})ornil,i) ifany_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 returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ K O >--------------------------------------------------------- implements {{Infobox Chinese/Korean}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_ko}} ]] localfunctionibox_mln_ko(frame,args) ifnotargsthen args=frame.args; end localshow='no'~=args.hideornil;-- make boolean-ish for controlling display of headers; |hide=no means show transcriptions without collapsed header localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.korean_headerthen infobox_args['header1']=args.headerorargs.korean_headeror'Nama Korea'; end locali=2; if'yes'==args.northkoreathen i=add_label_data_pair(infobox_args,'[[Hangul|Chosŏn\'gŭl]]',is_set(args.hangul)andlang_mod._lang({'ko',args.hangul,size='1rem'})ornil,i) elseif'old'==args.northkoreathen i=add_label_data_pair(infobox_args,'[[Hunminjeongeum]]',is_set(args.hangul)andlang_mod._lang({'ko',args.hangul,size='1rem'})ornil,i) else i=add_label_data_pair(infobox_args,'[[Hangul]]',is_set(args.hangul)andlang_mod._lang({'ko',args.hangul,size='1rem'})ornil,i) end if'yes'==args.northkoreathen i=add_label_data_pair(infobox_args,'[[Hanja|Hanja]]',is_set(args.hanja)andlang_mod._lang({'ko',args.hanja,size='1rem'})ornil,i) else i=add_label_data_pair(infobox_args,'[[Hanja]]',is_set(args.hanja)andlang_mod._lang({'ko',args.hanja,size='1rem'})ornil,i) end i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lk)andargs.lkornil,i) ifshowthen ifany_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,'[[Revisi Romanisasi bahasa Korea|Romanisasi Revisi]]',is_set(args.rr)andlang_mod._transl({'ko','rr',args.rr})ornil,i) i=add_label_data_pair(infobox_args,'[[McCune–Reischauer]]',is_set(args.mr)andlang_mod._transl({'ko','mr',args.mr})ornil,i) i=add_label_data_pair(infobox_args,'[[Bantuan:IPA/Bahasa Korea|IPA]]',is_set(args.koreanipa)andargs.koreanipaornil,i) end returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ M N >--------------------------------------------------------- implements {{Infobox Chinese/Mongolian}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_mn}} ]] localfunctionibox_mln_mn(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.mongolian_headerthen infobox_args['header1']=args.headerorargs.mongolian_headeror'Nama Mongolia'; end locali=2; i=add_label_data_pair(infobox_args,'[[Aksara Kiril Mongolia|Aksara Kiril Mongolia]]', is_set(args.mon)andlang_mod._lang({'mn',args.mon})ornil,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,'[[Aksara Mongolia|Aksara Mongolia]]', is_set(args.mong)andlang_mod._lang({'mn',frame:expandTemplate({title='MongolUnicode',args={args.mong}})})ornil,i) ifis_set(args.monr)then infobox_args['data'..i]=transcriptions(frame,args,'mn');-- needs frame so that it can frame:expandTemplate() end returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ M N C >------------------------------------------------------- implements {{Infobox Chinese/Manchu}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_mnc}} ]] localfunctionibox_mln_mnc(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.manchu_headerthen infobox_args['header1']=args.headerorargs.manchu_headeror'Nama Manchu'; end locali=2; i=add_label_data_pair(infobox_args,'[[Aksara Manchu|Aksara Manchu]]',is_set(args.mnc)andframe:expandTemplate({title='ManchuSibeUnicode',args={lang='mnc',args.mnc}})ornil,i) i=add_label_data_pair(infobox_args,'[[Transliterasi bahasa Manchu|Romanisasi]]',is_set(args.mnc_rom)andargs.mnc_romornil,i) i=add_label_data_pair(infobox_args,'[[Transliterasi bahasa Manchu|Abkai]]',is_set(args.mnc_a)andargs.mnc_aornil,i) i=add_label_data_pair(infobox_args,'[[Transliterasi bahasa Manchu|Möllendorff]]',is_set(args.mnc_v)andargs.mnc_vornil,i) returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ M Y >--------------------------------------------------------- implements {{Infobox Chinese/Burmese}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_my}} ]] localfunctionibox_mln_my(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.burmese_headerthen infobox_args['header1']=args.headerorargs.burmese_headeror'Nama Burma'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Burma|Bahasa Burma]]',is_set(args.my)andargs.myornil,i) i=add_label_data_pair(infobox_args,'[[Wikipedia:IPA untuk bahasa Burma|IPA]]',is_set(args.bi)andargs.biornil,i) returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ R U >--------------------------------------------------------- implements {{Infobox Chinese/Russian}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_ru}} ]] localfunctionibox_mln_ru(frame,args) ifnotargsthen args=getArgs(frame); end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.russian_headerthen infobox_args['header1']=args.headerorargs.russian_headeror'Nama Rusia'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Rusia|Bahasa Rusia]]',is_set(args.rus)andlang_mod._lang({'ru',args.rus})ornil,i); i=add_label_data_pair(infobox_args,'[[Romanisasi bahasa Rusia|Romanisasi bahasa Rusia]]',is_set(args.rusr)andlang_mod._lang({'ru-Latn',args.rusr})ornil,i);--TODO: use transl instead? i=add_label_data_pair(infobox_args,'[[Wikipedia:IPA untuk bahasa Rusia|IPA]]',is_set(args.rusipa)andargs.rusipaornil,i); i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.ruslit)andargs.ruslitornil,i); ifany_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 returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ T H >--------------------------------------------------------- implements {{Infobox Chinese/Thai}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_th}} ]] localfunctionibox_mln_th(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.thai_headerthen infobox_args['header1']=args.headerorargs.thai_headeror'Nama Thai'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Thai|Bahasa Thai]]',(is_set(args.th)oris_set(args.tha))andlang_mod._lang({'th',args.thorargs.tha})ornil,i) i=add_label_data_pair(infobox_args,'[[Sistem Romanisasi Umum Kerajaan Thai|RTGS]]',is_set(args.rtgs)andlang_mod._transl({'th','rtgs',args.rtgs})ornil,i) i=add_label_data_pair(infobox_args,'Romanisasi',is_set(args.rom)andlang_mod._transl({'th',args.rom})ornil,i) i=add_label_data_pair(infobox_args,'[[Alfabet Fonetik Internasional|IPA]]',is_set(args.ipa)andargs.ipa,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lit)andargs.lit,i) returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ U G >--------------------------------------------------------- implements {{Infobox Chinese/Uyghur}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_ug}} ]] localfunctionibox_mln_ug(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.uyghur_headerthen infobox_args['header1']=args.headerorargs.uyghur_headeror'Nama Uighur'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Uighur|Bahasa Uighur]]',is_set(args.uig)andframe:expandTemplate({title='ug-textonly',args={args.uig}})ornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lu)andargs.luornil,i) ifany_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 returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ V I >--------------------------------------------------------- implements {{Infobox Chinese/Vietnamese}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_vi}} ]] localfunctionibox_mln_vi(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.vietnamese_headerthen infobox_args['header1']=args.headerorargs.vietnamese_headeror'Nama Vietnam'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Vietnam|Bahasa Vietnam]]',is_set(args.vie)andlang_mod._lang({'vi',args.vie})ornil,i) i=add_label_data_pair(infobox_args,'[[Alfabet Vietnam|Alfabet Vietnam]]',is_set(args.qn)andlang_mod._lang({'vi',args.qn})ornil,i) i=add_label_data_pair(infobox_args,'[[Hán-Nôm]]',is_set(args.hn)andlang_mod._lang({'vi-Hani',args.hn})ornil,i) i=add_label_data_pair(infobox_args,'[[Chữ Hán]]',is_set(args.chuhan)andlang_mod._lang({'vi-Hani',args.chuhan})ornil,i) i=add_label_data_pair(infobox_args,'[[Chữ Nôm]]',is_set(args.chunom)andlang_mod._lang({'vi-Hani',args.chunom})ornil,i) i=add_label_data_pair(infobox_args,'Makna harfiah',is_set(args.lqn)andargs.lqnornil,i) returnframe:expandTemplate({title='Infobox',args=infobox_args}); end --[[-------------------------< I B O X _ M L N _ Z A >--------------------------------------------------------- implements {{Infobox Chinese/Zhuang}} Module entry point {{#invoke:Infobox multi-lingual name|ibox_mln_za}} ]] localfunctionibox_mln_za(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() ibox_boilerplate(infobox_args,args); if'none'~=args.headerand'none'~=args.zhuang_headerthen infobox_args['header1']=args.headerorargs.zhuang_headeror'Nama Zhuang'; end locali=2; i=add_label_data_pair(infobox_args,'[[Bahasa Zhuang|Bahasa Zhuang]]',is_set(args.zha)and('<span style="font-family: Arial Unicode MS, sans-serif;">'..args.zha..'</span>')ornil,i) i=add_label_data_pair(infobox_args,'[[Bahasa Zhuang|Ortografi 1957]]',is_set(args.zha57)andargs.zha57ornil,i) i=add_label_data_pair(infobox_args,'[[Sawndip]]',is_set(args.sd)andargs.sdornil,i) returnframe: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}} ]] localfunctionibox_mln_header(frame,args) ifnotargsthen args=getArgs(frame); end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() infobox_args['decat']='yes'; infobox_args['child']=is_set(args.child)andargs.childor'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; localh_color; ifis_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%; 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.picaltorargs.pictooltip } }); infobox_args['caption']=is_set(args.piccap)andargs.piccapornil; infobox_args['image2']=frame:callParserFunction({name='#invoke:InfoboxImage', args= { 'InfoboxImage', image=args.pic2, sizedefault='frameless', size=args.picsize2, upright=args.picupright2, alt=args.picalt2orargs.pictooltip2 } }); infobox_args['caption2']=is_set(args.piccap2)andargs.piccap2ornil; infobox_args['headerstyle']='background-color:'..h_color; infobox_args['headerstyle']='width: 50%; white-space: nowrap'; returnframe: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}} ]] localfunctionibox_mln_footer(frame,args) ifnotargsthen args=frame.args; end localinfobox_args={};-- table to hold arguments for frame:expandTemplate() infobox_args['decat']='yes'; infobox_args['child']=is_set(args.child)andargs.childor'yes'; infobox_args['bodystyle']='';-- present in wikisource template but not assigned a value there infobox_args['below']=args.footnote; returnframe: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 >---------------------------- ]] localfunctionibox_zhzh_enum_params_get(args,i) localibox_args={}; localcount=0;-- counts how many args got added to ibox_args {} for_,vinipairs(data.ibox_zhzh_enum_params)do-- add enumerated parameters ifargs[v..i]then-- only when there is an assigned value ibox_args[v]=args[v..i];-- add count=count+1;-- and tally end end return0~=countandibox_argsornil;-- if table is empty return nil as a flag end --[[--------------------------< A R >-------------------------------------------------------------------------- ----< A R A B I C >---- ]] localfunctionar(frame,args) ifis_set({args.arabic,args.arabic_rom,args.arabic_ipa,args.arabic_lit})then localibox_args={ ['arabic_header']=args['arabic_header']or'Nama Arab', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['arabic']=args.arabic, ['arabic_rom']=args.arabic_rom, ['arabic_ipa']=args.arabic_ipa, ['arabic_lit']=args.arabic_litorargs['literal meaning'],-- 'literal meaning' is from {{Infobox Arabic term}}; itis param name a good idea? TODO: unify parameter names ['chat']=args.chatorargs.Chat,-- TODO: unify parameter names ['ala-lc']=args['ala-lc']orargs['ALA-LC'],-- TODO: unify parameter names ['iso']=args.isoorargs.ISO,-- TODO: unify parameter names ['din']=args.dinorargs.DIN-- TODO: unify parameter names } returnibox_mln_ar(frame,ibox_args); end end --[[--------------------------< A S >-------------------------------------------------------------------------- ----< A S S A M E S E >---- ]] localfunctionas(frame,args) ifargs.asorargs.asmthen localibox_args={ ['lang_hdr']=args['as-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='as', ['lang_content']=args.asorargs.asm, ['lang_ipa']=args['as-ipa'], ['lang_rom']=args['as-rom'], ['lang_std']=args['as-std'], ['lang_lit']=args['as-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< B N >-------------------------------------------------------------------------- ----< B E N G A L I >---- ]] localfunctionbn(frame,args) ifargs.bnorargs.benthen localibox_args={ ['lang_hdr']=args['bn-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='bn', ['lang_content']=args.bnorargs.ben, ['lang_ipa']=args['bn-ipa'], ['lang_rom']=args['bn-rom'], ['lang_std']=args['bn-std'], ['lang_lit']=args['bn-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< B O >-------------------------------------------------------------------------- ----< T I B E T A N >---- ]] localfunctionbo(frame,args) ifany_set({args.tib,args.wylie,args.thdl,args.zwpy,args.lhasa})then localibox_args={ ['tibetan_header']=args['tibetan_header']or'Nama Tibet', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['hide']=args.hide, ['tib']=args.tib, ['wylie']=args.wylie, ['thdl']=args.thdl, ['zwpy']=args.zwpy, ['lhasa']=args.lhasa, } returnibox_mln_bo(frame,ibox_args); end end --[[--------------------------< D N G >------------------------------------------------------------------------ ----< D U N G A N E S E >---- ]] localfunctiondng(frame,args) ifany_set({args.dungan,args['dungan-xej'],args['dungan-han']})then localibox_args={ ['dunganese_header']=args['dunganese_header']or'Nama Dungan', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['dungan']=args.dungan, ['dungan-xej']=args['dungan-xej'], ['dungan-han']=args['dungan-han'], ['dungan-latin']=args['dungan-latin'], } returnibox_mln_dng(frame,ibox_args); end end --[[--------------------------< H I >-------------------------------------------------------------------------- ----< H I N D I >---- ]] localfunctionhi(frame,args) ifargs.hiorargs.hinthen localibox_args={ ['lang_hdr']=args['hi-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='hi', ['lang_content']=args.hiorargs.hin, ['lang_ipa']=args['hi-ipa'], ['lang_rom']=args['hi-rom'], ['lang_std']=args['hi-std'], ['lang_lit']=args['hi-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< I D >-------------------------------------------------------------------------- ----< I N D O N E S I A N >---- ]] localfunctionid(frame,args) ifargs.idorargs.indthen localibox_args={ ['lang_hdr']=args['id-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='id', ['lang_content']=args.idorargs.ind, ['lang_ipa']=args['id-ipa'], ['lang_rom']=args['id-rom'], ['lang_std']=args['id-std'], ['lang_lit']=args['id-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< J A >-------------------------------------------------------------------------- ----< J A P A N E S E >---- ]] localfunctionja(frame,args) localchildren={}; ifany_set({args.kanji,args.kana,args.hiragana,args.katakana,args.kyujitai,args.shinjitai,args.lja})then localibox_args={ ['japanese_header']=args['japanese_header']or'Nama Jepang', ['headercolor']=args['child-hdr-color']orargs.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 fori=2,6do ifany_set({args['kanji'..i],args['kana'..i],args['hiragana'..i],args['katakana'..i],args['kyujitai'..i],args['shinjitai'..i],args['lja'..i]})then localibox_args={ ['japanese_header']=args['japanese_header'..i]or'Nama Jepang alternatif', ['headercolor']=args['child-hdr-color']orargs.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 returntable.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 >---- ]] localfunctionkm(frame,args) ifargs.kmorargs.khmthen localibox_args={ ['lang_hdr']=args['km-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='km', ['lang_content']=args.kmorargs.khm, ['lang_ipa']=args['km-ipa'], ['lang_rom']=args['km-rom'], ['lang_std']=args['km-std'], ['lang_lit']=args['km-lit'], } returnibox_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) >---- ]] localfunctionko1(frame,args) localchildren={}; ifany_set({args.hanja,args.hangul})then localibox_args={ ['korean_header']=args['korean_header']or'Nama Korea', ['headercolor']=args['child-hdr-color']orargs.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 fori=2,6do ifany_set({args['hanja'..i],args['hangul'..i]})then localibox_args={ ['korean_header']=args['korean_header'..i]or'Nama Korea alternatif', ['headercolor']=args['child-hdr-color']orargs.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 returntable.concat(children)or''; end --[[--------------------------< K O 2 >------------------------------------------------------------------------ TODO: handle ko same way as enumerated zh? ----< K O R E A N (2) >---- ]] localfunctionko2(frame,args) localchildren={}; ifany_set({args.cnhanja,args.cnhangul})then localibox_args={ ['korean_header']=args['cnkorean_header']or'Nama Korea Tionghoa', ['headercolor']=args['child-hdr-color']orargs.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 fori=2,6do ifany_set({args['cnhanja'..i],args['cnhangul'..i]})then localibox_args={ ['korean_header']=args['cnkorean_header'..i]or'Nama Korea Tionghoa alternatif', ['headercolor']=args['child-hdr-color']orargs.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 returntable.concat(children)or''; end --[[--------------------------< K O 3 >------------------------------------------------------------------------ TODO: handle ko same way as enumerated zh? ----< K O R E A N (3) >---- ]] localfunctionko3(frame,args) localchildren={}; ifany_set({args.nkhanja,args.nkhangul})then localibox_args={ ['korean_header']=args['nkkorean_header']or'Nama Korea Utara', ['headercolor']=args['child-hdr-color']orargs.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 fori=2,6do ifany_set({args['nkhanja'..i],args['nkhangul'..i]})then localibox_args={ ['korean_header']=args['nkkorean_header'..i]or'Nama Korea Utara alternatif', ['headercolor']=args['child-hdr-color']orargs.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 returntable.concat(children)or''; end --[[--------------------------< K O 4 >------------------------------------------------------------------------ TODO: handle ko same way as enumerated zh? ----< K O R E A N (4) >---- ]] localfunctionko4(frame,args) localchildren={}; ifany_set({args.skhanja,args.skhangul})then localibox_args={ ['korean_header']=args['skkorean_header']or'Nama Korea Selatan', ['headercolor']=args['child-hdr-color']orargs.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 fori=2,6do ifany_set({args['skhanja'..i],args['skhangul'..i]})then localibox_args={ ['korean_header']=args['skkorean_header'..i]or'Nama Korea Selatan alternatif', ['headercolor']=args['child-hdr-color']orargs.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 returntable.concat(children)or''; end --[[--------------------------< L O >-------------------------------------------------------------------------- ----< L A O >---- ]] localfunctionlo(frame,args) ifargs.loorargs.laothen localibox_args={ ['lang_hdr']=args['lo-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='lo', ['lang_content']=args.loorargs.lao, ['lang_ipa']=args['lo-ipa'], ['lang_rom']=args['lo-rom'], ['lang_std']=args['lo-std'], ['lang_lit']=args['lo-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< M N >-------------------------------------------------------------------------- ----< M O N G O L I A N >---- ]] localfunctionmn(frame,args) ifany_set({args.mong,args.mon})then localibox_args={ ['mongolian_header']=args['mongolian_header']or'Nama Mongolia', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['hide']=args.hide, ['mon']=args.mon, ['mong']=args.mong, ['monr']=args.monr, } returnibox_mln_mn(frame,ibox_args); end end --[[--------------------------< M N C >------------------------------------------------------------------------ ----< M A N C H U >---- ]] localfunctionmnc(frame,args) ifany_set({args.mnc_rom,args.mnc})then localibox_args={ ['manchu_header']=args['manchu_header']or'Nama Manchu', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['mnc']=args.mnc, ['mnc_rom']=args.mnc_rom, ['mnc_a']=args.mnc_a, ['mnc_v']=args.mnc_v, } returnibox_mln_mnc(frame,ibox_args); end end --[[--------------------------< M S >-------------------------------------------------------------------------- ----< M A L A Y >---- ]] localfunctionms(frame,args) ifargs.msorargs.msathen localibox_args={ ['lang_hdr']=args['ms-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='ms', ['lang_content']=args.msorargs.msa, ['lang_ipa']=args['ms-ipa'], ['lang_rom']=args['ms-rom'], ['lang_std']=args['ms-std'], ['lang_lit']=args['ms-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< M Y >-------------------------------------------------------------------------- ----< B U R M E S E >---- ]] localfunctionmy(frame,args) ifargs.mythen localibox_args={ ['burmese_header']=args['burmese_header']or'Nama Burma', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['my']=args.my, ['bi']=args.bi, } returnibox_mln_my(frame,ibox_args); end end --[[--------------------------< N E >-------------------------------------------------------------------------- ----< N E P A L I >---- ]] localfunctionne(frame,args) ifargs.neorargs.nepthen localibox_args={ ['lang_hdr']=args['ne-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='ne', ['lang_content']=args.neorargs.nep, ['lang_ipa']=args['ne-ipa'], ['lang_rom']=args['ne-rom'], ['lang_std']=args['ne-std'], ['lang_lit']=args['ne-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< P I >-------------------------------------------------------------------------- ----< P A L I >---- ]] localfunctionpi(frame,args) ifargs.piorargs.plithen localibox_args={ ['lang_hdr']=args['pi-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='pi', ['lang_content']=args.piorargs.pli, ['lang_ipa']=args['pi-ipa'], ['lang_rom']=args['pi-rom'], ['lang_std']=args['pi-std'], ['lang_lit']=args['pi-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< P T >-------------------------------------------------------------------------- ----< P O R T U G U E S E >---- ]] localfunctionpt(frame,args) ifargs.ptorargs.porthen localibox_args={ ['lang_hdr']=args['pt-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='pt', ['lang_lbl']=args['pt-label'], ['lang_content']=args.ptorargs.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'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< P R A >------------------------------------------------------------------------ ----< P R A K R I T >---- ]] localfunctionpra(frame,args) ifargs.prathen localibox_args={ ['lang_hdr']=args['pra-hdr'], ['headercolor']=args['child-hdr-color']orargs.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'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< R U >-------------------------------------------------------------------------- ----< R U S S I A N >---- ]] localfunctionru(frame,args) ifany_set({args.rus,args.russian})then-- TODO: unify parameter names localibox_args={ ['russian_header']=args['russian_header']or'Nama Rusia', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['rus']=args.rusorargs.russian, ['rusr']=args.rusr, ['rusipa']=args.rusipaorargs['native pronunciation'],-- TODO: unify parameter names ['ruslit']=args.ruslitorargs['literal meaning'],-- TODO: unify parameter names ['scientific']=args.scientific, ['iso']=args.iso, ['gost']=args.gost, ['bgn/pcgn']=args['bgn/pcgn'], } returnibox_mln_ru(frame,ibox_args); end end --[[--------------------------< S A >-------------------------------------------------------------------------- ----< S A N S K R I T >---- ]] localfunctionsa(frame,args) ifargs.saorargs.santhen localibox_args={ ['lang_hdr']=args['sa-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='sa', ['lang_content']=args.saorargs.san, ['lang_ipa']=args['sa-ipa'], ['lang_rom']=args['sa-rom'], ['lang_std']=args['sa-std'], ['lang_lit']=args['sa-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< T A >-------------------------------------------------------------------------- ----< T A M I L >---- ]] localfunctionta(frame,args) ifargs.taorargs.tamthen localibox_args={ ['lang_hdr']=args['ta-hdr'], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']='ta', ['lang_content']=args.taorargs.tam, ['lang_ipa']=args['ta-ipa'], ['lang_rom']=args['ta-rom'], ['lang_std']=args['ta-std'], ['lang_lit']=args['ta-lit'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< T E T >------------------------------------------------------------------------ ----< T E T U M >---- ]] localfunctiontet(frame,args) ifargs.tetthen localibox_args={ ['lang_hdr']=args['tet-hdr'], ['headercolor']=args['child-hdr-color']orargs.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'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< T H >-------------------------------------------------------------------------- ----< T H A I >---- ]] localfunctionth(frame,args) ifargs.thorargs.thathen localibox_args={ ['thai_header']=args['thai_header']or'Nama Thai', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['header']=args['th-hdr'], ['th']=args.thorargs.tha, ['rtgs']=args.rtgs, ['ipa']=args['th-ipa'], ['rom']=args['th-rom'], ['std']=args['th-std'], ['lit']=args['th-lit'], } returnibox_mln_th(frame,ibox_args); end end --[[--------------------------< T L >-------------------------------------------------------------------------- ----< F I L I P I N O >---- ]] localfunctiontl(frame,args) -- if args.tl or args.tgl then ifargs.tglthen localibox_args={ -- ['blank_header'] = 'Filipino name', ['lang_hdr']=args['tl-hdr']or'Nama Filipino', ['headercolor']=args['child-hdr-color']orargs.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'], } returnibox_mln_blank(frame,ibox_args); end end --[[--------------------------< U G >-------------------------------------------------------------------------- ----< U Y G H U R >---- ]] localfunctionug(frame,args) ifargs.uigthen localibox_args={ ['uyghur_header']=args['uyghur_header']or'Nama Uighur', ['headercolor']=args['child-hdr-color']orargs.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, } returnibox_mln_ug(frame,ibox_args); end end --[[--------------------------< V I >-------------------------------------------------------------------------- ----< V I E T N A M E S E >---- ]] localfunctionvi(frame,args) ifany_set({args.qn,args.vie,args.chuhan})then localibox_args={ ['vietnamese_header']=args['vietnamese_header']or'Nama Vietnam', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['vie']=args.vie, ['qn']=args.qn, ['hn']=args.hn, ['chuhan']=args.chuhan, ['chunom']=args.chunom, ['lqn']=args.lqn, } returnibox_mln_vi(frame,ibox_args); end end --[[--------------------------< Z A >-------------------------------------------------------------------------- ----< Z H U A N G >---- ]] localfunctionza(frame,args) ifargs.zhathen localibox_args={ ['zhuang_header']=args['zhuang_header']or'Nama Zhuang', ['headercolor']=args['child-hdr-color']orargs.headercolor, ['hide']=args.hide, ['zha']=args.zha, ['zha57']=args.zha57, ['sd']=args.sd, } returnibox_mln_za(frame,ibox_args); end end --[[--------------------------< Z H >-------------------------------------------------------------------------- ----------< C H I N E S E >---------- ]] localfunctionzh(frame,args) localchildren={}; ifany_set({args.c,args.t,args.p,args.s})then-- first infobox zh/zh localibox_args=ibox_zhzh_enum_params_get(args,'');-- get the enumerated parameters (here enumerator is empty string) ifibox_argsthen ibox_args['hide']=args.hide; ibox_args['showflag']=args.showflag; ibox_args['order']=args.order; ibox_args['p']=args.porargs.hp;-- add special case parameters ibox_args['xej']=args.xejandlang_mod._lang({'zh-Arab',args.xej}); if'yes'==args.childthen ibox_args['chinese_header']=args['chinese_header']orargs.name1;-- show the header name from parameter or default name from ibox_mln_zh() elseifany_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']orargs.name1;-- ... show the header name from parameter or default name from ibox_mln_zh() else ibox_args['chinese_header']=args['chinese_header']orargs.name1or'none';-- show the header name from parameter or no header (args.name1 missing or 'empty' - nil) end ibox_args['headercolor']=args['child-hdr-color']orargs.headercolor; table.insert(children,ibox_mln_zh(frame,ibox_args)); end end fori=2,6do ifany_set({args['c'..i],args['t'..i],args['p'..i],args['s'..i]})then localibox_args=ibox_zhzh_enum_params_get(args,i);-- get the enumerated parameters ifibox_argsthen ibox_args['hide']=args.hide; ibox_args['showflag']=args.showflag; ibox_args['order']=args.order; ibox_args['p']=args['p'..i]orargs['hp'..i];-- add special case parameters ibox_args['xej']=args['xej'..i]andlang_mod._lang({'zh-Arab',args['xej'..i]}); ifargs[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]ordata.zh_hdr_names[i][2];-- use the default end ibox_args['headercolor']=args['child-hdr-color']orargs.headercolor; table.insert(children,ibox_mln_zh(frame,ibox_args)); end end end returntable.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) ]] localfunctionibox_mln(frame) localargs=getArgs(frame);-- also gets parent frame params (there are no frame params for this function) TODO:, {removeBlanks = false}? localinfobox_args={};-- table to hold arguments for ibox_mln frame:expandTemplate() localchildren={};-- 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.childthen localhdr_args={ ['title']=args.titleormw.title.getCurrentTitle().text:gsub('%s+%b()$','');-- mimic {{PAGENAMEBASE}} (template not magic word) ['headercolor']=args.headercolor, ['float']=args.float, ['collapse']=args.collapse, ['pic']=args.picorargs.image,-- TODO: unify parameter names ['picsize']=args.picsizeorargs.imgwidth,-- TODO: unify parameter names ['picupright']=args.picupright, ['picalt']=args.picalt, ['pictooltip']=args.pictooltip, ['piccap']=args.piccaporargs.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 >---------- locallang_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 } locallang_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 }; ifargs['ibox-order']then-- parameter value is comma-separated list of lang iboxen to render and their order localt=mw.text.split(args['ibox-order'],'%s*,%s*')-- make a table from the list lang_ibox_order={};-- reset; don't use default list for_,vinipairs(t)do-- spin through the lang_ibox_order list in order and iflang_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_funcinipairs(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 >---------- locali=1;-- blank ibox enumerator whileargs['lang'..i]and(args['lang-content'..i]orargs['lang'..i..'_content'])do-- for as many ibox blank as there are ... localibox_args={ ['lang_hdr']=args['lang-hdr'..i], ['headercolor']=args['child-hdr-color']orargs.headercolor, ['lang']=args['lang'..i], ['lang_label']=args['lang-lbl'..i], ['lang_content']=args['lang-content'..i]orargs['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.childthen table.insert(children,ibox_mln_footer(frame,{['footnote']=args.footnote})); end ----------< R E N D E R >---------- returntable.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}} }