Module:Infobox multi-lingual name/data

--[[--------------------------< 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',

['bpmf'] = 'Bopomofo',

['gan'] = 'Gan',

['gd'] = 'Guangdong Romanization',

['h'] = 'Hakka',

['hsn'] = 'Xiang',

['j'] = 'Jyutping',

['p'] = 'Hanyu Pinyin',

['phfs'] = 'Pha̍k-fa-sṳ',

['poj'] = 'Hokkien POJ',

['psic'] = 'Sichuanese Pinyin',

['tl'] = 'Tâi-lô',

['toi'] = 'Taishanese',

['tp'] = 'Tongyong Pinyin',

['w'] = 'Wade–Giles',

['wgn'] = 'Wungiu',

['wuu'] = 'Wu',

['xej'] = 'Xiao\'erjing',

['y'] = '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 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'},

{'Gwoyeu Romatzyh', 'gr'},

{'Wade–Giles', 'w'},

{'Tongyong Pinyin', 'tp'},

{'Yale Romanization', 'myr'},

{'MPS2', 'mps'},

{'IPA', 'mi'}

}

},

['other mandarin'] = {

['header'] = 'other Mandarin',

['t'] = {

{'Xiao\'erjing', 'xej'},

{'Dungan','zh-dungan'},

{'Sichuanese Pinyin', 'sic'},

}

},

['wu'] = {

['header'] = 'Wu',

['t'] = {

{'Wugniu', 'wgn'},

{'Romanization', 'wuu'},

{'Wenzhounese
Romanisation', 'ouji'},

{'Suzhounese', 'suz'},

{'[Help:IPA/Wu Chinese|IPA]]', 'wi'},

}

},

['gan'] = {

['header'] = 'Gan',

['t'] = {

{'Romanization', 'gan'},

}

},

['xiang'] = {

['header'] = 'Xiang',

['t'] = {

{'IPA', 'hsn'},

}

},

['hakka'] = {

['header'] = 'Hakka',

['t'] = {

{'Romanization', 'h'},

{'Pha̍k-fa-sṳ', 'phfs'},

}

},

['yue cantonese'] = {

['header'] = 'Yue: Cantonese',

['t'] = {

{'Yale Romanization', 'y'},

{'Jyutping', 'j'},

{'Sidney Lau', 'sl'},

{'Canton Romanization', 'gd'},

{'Hong Kong Romanisation', 'hk'},

{'Macau Romanization', 'mo'},

{'IPA', 'ci'},

}

},

['other yue'] = {

['header'] = 'other Yue',

['t'] = {

{'Taishanese', 'toi'},

}

},

['southern min'] = {

['header'] = 'Southern Min',

['t'] = {

{'Hokkien POJ', 'poj'},

{'Tâi-lô', 'tl'},

{'Bbánlám Pìngyīm', 'bp'},

{'Teochew Peng\'im', 'teo'},

{'Hainanese Romanization', 'hain'},

{'Leizhou Romanization', 'lizu'},

}

},

['eastern min'] = {

['header'] = 'Eastern Min',

['t'] = {

{'Fuzhou BUC', 'buc'},

}

},

['pu-xian min'] = {

['header'] = 'Pu-Xian Min',

['t'] = {

{'Hinghwa BUC', 'hhbuc'},

}

},

['northern min'] = {

['header'] = 'Northern Min',

['t'] = {

{'Jian\'ou Romanized', 'mblmc'},

}

},

['old mandarin'] = {

['header'] = 'Old Mandarin',

['t'] = {

{'Romanized \'Phags-pa', 'phagspa-latin'},

}

},

['middle chinese'] = {

['header'] = 'Middle Chinese',

['t'] = {

{'Middle Chinese', 'mc'},

{'Early Middle Chinese', 'emc'},

{'Late Middle Chinese', 'lmc'},

}

},

['old chinese'] = {

['header'] = 'Old Chinese',

['t'] = {

{'Baxter (1992)', 'oc-b92'},

{'Baxter–Sagart (2014)', 'oc-bs'},

{'Zhengzhang', 'oc-zz'},

}

},

--------< non-Chinese transcriptions >--------

['arabic'] = {

['header'] = nil, -- {{Infobox Chinese/Arabic}}; doesn't use header

['t'] = {

{'Chat', 'chat'}, -- TODO: standardize on lowercase parameter names

{'Chat', 'Chat'},

{'ALA-LC', 'ala-lc'},

{'ALA-LC', 'ALA-LC'},

{'ISO', 'iso'},

{'ISO', 'ISO'},

{'DIN', 'din'},

{'DIN', 'DIN'},

}

},

['hokkien'] = {

['header'] = nil, -- {{Infobox Chinese/Hokkien}}; doesn't use header

['t'] = {

{'Tâi-lô', 'tl'},

{'Bbánpìng', 'bp'},

{'IPA', 'hokkienipa'},

}

},

['japanese'] = {

['header'] = nil, -- {{Infobox Chinese/Japanese}}; doesn't use header

['t'] = {

{'Romanization', 'romaji'},

{'Revised Hepburn', 'revhep'},

{'Traditional Hepburn', 'tradhep'},

{'Kunrei-shiki', 'kunrei'},

{'Nihon-shiki', 'nihon'},

}

},

['korean'] = {

['header'] = nil, -- {{Infobox Chinese/Korean}}; doesn't use header

['t'] = {

{'Revised Romanization', 'rr'},

{'McCune–Reischauer', 'mr'},

{'Yale', 'kyale'},

{'IPA', 'koreanipa'},

}

},

['mongolian'] = {

['header'] = nil, -- {{Infobox Chinese/Mongolian}}; doesn't use header

['t'] = {

{'SASM/GNC', 'monr'},

}

},

['russian'] = {

['header'] = nil, -- {{Infobox Chinese/Russian}}; doesn't use header

['t'] = {

{'Scientific', 'scientific'},

{'Scientific', 'Scientific'},

{'ISO', 'iso'},

{'ISO', 'ISO'},

{'GOST 71', 'gost'},

{'GOST 71', 'GOST'},

{'BGN/PCGN', 'bgn/pcgn'},

{'BGN/PCGN', 'BGN/PGCN'},

}

},

['tibetan'] = {

['header'] = nil, -- {{Infobox Chinese/Tibetan}}; doesn't use header

['t'] = {

{'Wylie', 'wylie'},

{'THL', 'thdl'},

{'Tibetan Pinyin', 'zwpy'},

{'Lhasa IPA', 'lhasa'},

}

},

['uyghur'] = {

['header'] = nil, -- {{Infobox Chinese/Uyghur}}; doesn't use header

['t'] = {

{'Latin Yëziqi', 'uly'},

{'Yengi Yeziⱪ', 'uyy'},

{'SASM/GNC', 'sgs'},

{'Siril Yëziqi', 'usy'},

{'Uyghur 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,

}