Module:Infobox multi-lingual name/sandbox: Difference between revisions

Content deleted Content added
m Removed protection from "Module:Infobox multi-lingual name/sandbox": it's a sandbox
remove ambiguous references to "_transl"
 
(47 intermediate revisions by 10 users not shown)
Line 2:
TODO:
all non-English text wrapped in {{lang}}?
distingushdistinguish various scripts? Kanji is ja-Hani ...
every child infobox should support translit / transcription parameter(s)
every child infobox should have a literal meaning parameter
Line 9:
]]
 
require('Module:No globalsstrict');
local data = mw.loadData ('Module:Infobox multi-lingual name/data/sandbox');
local lang_mod = require ('Module:Lang'); -- for various functions and templates provided by Module:Lang
Line 122:
 
local function add_transcription (infobox_args, args, idx, show, i, lang)
local special_xscriptions_t = {['bpmf'] = '-Bopo', ['usy'] = '-Cyrl', ['xej'] = '-Arab', ['zh-dungan'] = '-Cyrl'}; -- list of transcriptions not transliterations; TODO move to ~/data?
local special_ipa_t = {['bi'] = true, ['ci'] = true, ['ki'] = true, ['lhasa'] = true, ['li'] = true, ['mi'] = true, ['uipa'] = true,};
infobox_args['header' .. i] = show and data.xscript[idx].header; -- if headers are displayed
i = i + 1; -- bump the enumerator
for _, v in ipairs (data.xscript[idx].t) do -- each label / data pair in the xscript subtable
if special_xscriptions_t[v[2]] then -- special cases for bopomofo, Siril Yëziqi which are transcriptions, not Latn transliterations
i = add_label_data_pair (infobox_args, v[1], is_set (args[v[2]]) and lang_mod._transl ({lang, args[v[2]], italic = 'no'}), i); -- enumerator is bumped here
i = add_label_data_pair (infobox_args, v[1], is_set (args[v[2]]) and lang_mod._lang ({lang .. special_xscriptions_t[v[2]], args[v[2]], italic = 'no'}), i); -- enumerator is bumped here
 
elseif special_ipa_t[v[2]] then
i = add_label_data_pair (infobox_args, v[1], args[v[2]], i); -- enumerator is bumped here
 
else
i = add_label_data_pair (infobox_args, v[1], is_set (args[v[2]]) and lang_mod._xlit ({lang, args[v[2]], italic = 'no'}), i); -- enumerator is bumped here
end
end
Line 229 ⟶ 239:
end
infobox_args['bodyclass'] = 'mw-collapsible mw-collapsed';
infobox_args['bodystyle'] = 'display:inline-table; text-align: left;';
infobox_args['abovestyle'] = 'font-size: 100%; text-align: left;color: #202122; background-color: #f9ffbc;'; -- TODO: #define various colors in a common config ___location; and function?
infobox_args['headerstyle'] = 'color: #202122;background-color: #dcffc9;'; -- TODO: #define various colors in a common config ___location; and function?
infobox_args['labelstyle'] = 'font-weight:normal;';
 
Line 246 ⟶ 257:
--[[--------------------------< 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) beausebecause 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
maintenencemaintenance 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
 
Line 264 ⟶ 275:
end
infobox_args['headerstyle'] = 'color: #202122;background-color: ' .. h_color .. ';';
if is_set (args.fontstyle) then -- ???? |fontstyle= not a documented parameter; supported by {{Infobox Chinese/Korean}} and {{Infobox Chinese/Vietnamese}}
Line 302 ⟶ 313:
 
if 'st' == args.order then
i = add_label_data_pair (infobox_args, '[[Simplified Chinese characters|Simplified &nbsp;Chinese]]', is_set (args.s) and lang_mod._lang ({'zh-Hans', args.s, size = '1rem'}), i)
i = add_label_data_pair (infobox_args, '[[Traditional Chinese characters|Traditional&nbsp;Chinese]]', is_set (args.t) and lang_mod._lang ({'zh-Hant', args.t, size = '1rem'}), i)
else
i = add_label_data_pair (infobox_args, '[[Traditional Chinese characters|Traditional&nbsp;Chinese]]', is_set (args.t) and lang_mod._lang ({'zh-Hant', args.t, size = '1rem'}), i)
i = add_label_data_pair (infobox_args, '[[Simplified Chinese characters|Simplified &nbsp;Chinese]]', is_set (args.s) and lang_mod._lang ({'zh-Hans', args.s, size = '1rem'}), i)
end
 
Line 392 ⟶ 403:
ibox_boilerplate (infobox_args, args);
 
local ietf_codeietf_tag = lang_mod._is_ietf_code_is_ietf_tag (args.lang);
local name_from_codename_from_tag = ietf_codeietf_tag and lang_mod._name_from_code_name_from_tag ({args.lang}) or nil;
 
if 'none' ~= args.lang_hdr and 'none' ~= args.header and 'none' ~= args.blank_header then
if is_set (args.lang_hdr) or is_set (args.header) or is_set (args.blank_header) then -- if one of these
infobox_args['header1'] = args.lang_hdr or args.header or args.blank_header; -- make a header from it
elseif ietf_codeietf_tag then
infobox_args['header1'] = name_from_codename_from_tag .. ' name'; -- make a header from the language name
else
infobox_args['header1'] = args.lang .. ' name'; -- not a code so use whatever text is in {{{lang}}}
Line 409 ⟶ 420:
local data;
if name_from_codename_from_tag then
if is_set (args.lang_article) then
label = table.concat ({ -- make a linked label from provided article name
Line 415 ⟶ 426:
args.lang_article,
'|',
args.lang_label or name_from_codename_from_tag,
']]'
});
else
label = args.lang_label or lang_mod._name_from_code_name_from_tag ({args.lang, ['link'] = 'yes'}) -- let lang module make the correct linked label
end
Line 429 ⟶ 440:
i = add_label_data_pair (infobox_args, label, data, i);
if is_set (args.lang_rom) and ietf_codeietf_tag then
i = add_label_data_pair (infobox_args, args.lang_std or 'Romanization', lang_mod._transl_xlit ({args.lang, args.lang_rom}), i);
end
i = add_label_data_pair (infobox_args, 'IPA', args.lang_ipa, i);
Line 583 ⟶ 594:
i = add_label_data_pair (infobox_args, '[[Kyūjitai]]', is_set (args.kyujitai) and lang_mod._lang ({'ja', args.kyujitai}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Shinjitai]]', is_set (args.shinjitai) and lang_mod._lang ({'ja', args.shinjitai}) or nil, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lja) and lang_mod._lang ({'ja', args.lja}) or nil, i)
 
if any_set ({args.romaji, args.revhep, args.tradhep, args.kunrei, args.nihon}) then
Line 638 ⟶ 650:
end
else
i = add_label_data_pair (infobox_args, '[[Revised Romanization of Korean|Revised Romanization]]', is_set (args.rr) and lang_mod._transl_xlit ({'ko', 'rr', args.rr}) or nil, i)
i = add_label_data_pair (infobox_args, '[[McCune–Reischauer]]', is_set (args.mr) and lang_mod._transl_xlit ({'ko', 'mr', args.mr}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Help:IPA/Korean|IPA]]', is_set (args.koreanipa) and args.koreanipa or nil, i)
end
Line 743 ⟶ 755:
local i = 2;
 
i = add_label_data_pair (infobox_args, '[[Burmese language|Burmese]]', is_set (args.my) and lang_mod._lang ({'my', args.my}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Wikipedia:IPA_for_Burmese|IPA]]', is_set (args.bi) and args.bi or nil, i)
 
Line 812 ⟶ 824:
 
i = add_label_data_pair (infobox_args, '[[Thai language|Thai]]', (is_set (args.th) or is_set (args.tha)) and lang_mod._lang ({'th', args.th or args.tha}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Royal Thai General System of Transcription|RTGS]]', is_set (args.rtgs) and lang_mod._transl_xlit ({'th', 'rtgs', args.rtgs}) or nil, i)
i = add_label_data_pair (infobox_args, 'Romanization', is_set (args.rom) and lang_mod._transl_xlit ({'th', args.rom}) or nil, i)
i = add_label_data_pair (infobox_args, '[[International Phonetic Alphabet|IPA]]', is_set (args.ipa) and args.ipa, i)
i = add_label_data_pair (infobox_args, 'Literal meaning', is_set (args.lit) and args.lit, i)
Line 915 ⟶ 927:
local i = 2;
 
i = add_label_data_pair (infobox_args, '[[Zhuang language|Zhuang]]', is_set (args.zha) and ('<span lang="za" style="font-family: Arial Unicode MS, sans-serif;">' .. args.zha .. '</span>') or nil, i)
i = add_label_data_pair (infobox_args, '[[Zhuang language|1957 orthography]]', is_set (args.zha57) and lang_mod._lang ({'za', args.zha57}) or nil, i)
i = add_label_data_pair (infobox_args, '[[Sawndip]]', is_set (args.sd) and lang_mod._lang ({'za-Hani', args.sd}) or nil, i)
 
return frame:expandTemplate ({title='Infobox', args = infobox_args});
Line 952 ⟶ 964:
end
 
-- infobox_args['subheaderstyle'] = 'font-size: 125%; color: #202122;background-color:' .. h_color .. ';';
-- infobox_args['subheader'] = is_set (args.title) and args.title or mw.title.getCurrentTitle().text;
infobox_args['image'] = frame:callParserFunction ({name = '#invoke:InfoboxImage',
Line 982 ⟶ 994:
infobox_args['caption2'] = is_set (args.piccap2) and args.piccap2 or nil;
infobox_args['headerstyle'] = 'color: #202122;background-color:' .. h_color;
infobox_args['headerstyle'] = 'width: 50%; white-space: nowrap';
-- always display the background of the image in light mode, see
-- [[Template_talk:Infobox_Chinese#Issue_in_dark_mode_or_inappropriate_use_of_infobox]]
-- FIXME: define new names for image arguments and migrate existing uses
-- to those names, so that we can use skin-invert instead for characters
infobox_args['imagestyle'] = 'background-color: #f8f9fa;'
infobox_args['imageclass'] = 'notheme'
 
return frame:expandTemplate ({title='Infobox', args = infobox_args});
Line 1,041 ⟶ 1,059:
if is_set ({args.arabic, args.arabic_rom, args.arabic_ipa, args.arabic_lit}) then
local ibox_args = {
-- ['arabic_header'] = args.tib['arabic_header'] andor 'Arabic name', -- redundant; TODO: support |arabic_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['arabic'] = args.arabic,
Line 1,115 ⟶ 1,133:
if any_set ({args.tib, args.wylie, args.thdl, args.zwpy, args.lhasa}) then
local ibox_args = {
-- ['tibetan_header'] = args.tib['tibetan_header'] andor 'Tibetan name', -- redundant; TODO: support |burmese_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,139 ⟶ 1,157:
if any_set ({args.dungan, args['dungan-xej'], args['dungan-han']}) then
local ibox_args = {
-- ['dunganese_header'] = args['dunganese_header'] or 'Dunganese name', -- redundant; TODO: support |dungan_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['dungan'] = args.dungan,
Line 1,207 ⟶ 1,225:
 
local function ja (frame, args)
local children = {};
if any_set ({args.kanji, args.kana, args.hiragana, args.katakana, args.kyujitai, args.shinjitai}) then
if any_set ({args.kanji, args.kana, args.hiragana, args.katakana, args.kyujitai, args.shinjitai, args.lja}) then
local ibox_args = {
-- ['japanese_header'] = args['japanese_header'] or 'Japanese name', -- redundant; TODO: support |japanese_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,223 ⟶ 1,242:
['kunrei'] = args.kunrei,
['nihon'] = args.nihon,
['lja'] = args.lja
}
returntable.insert (children, ibox_mln_ja (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['kanji'..i], args['kana'..i], args['hiragana'..i], args['katakana'..i], args['kyujitai'..i], args['shinjitai'..i], args['lja'..i]}) then
local ibox_args = {
['japanese_header'] = args['japanese_header'..i] or 'Alternative Japanese name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
['kanji'] = args['kanji'..i],
['kyujitai'] = args['kyujitai'..i],
['shinjitai'] = args['shinjitai'..i],
['kana'] = args['kana'..i],
['hiragana'] = args['hiragana'..i],
['katakana'] = args['katakana'..i],
['romaji'] = args['romaji'..i],
['revhep'] = args['revhep'..i],
['tradhep'] = args['tradhep'..i],
['kunrei'] = args['kunrei'..i],
['nihon'] = args['nihon'..i],
['lja'] = args['lja'..i]
 
}
table.insert (children, ibox_mln_ja (frame, ibox_args));
end
end
return table.concat (children) or ''; -- big string of ja infoboxen or an empty string if nothing was done here
end
 
Line 1,261 ⟶ 1,306:
]]
 
local function ko1 (frame, args)
local children = {};
if any_set ({args.hanja, args.hangul}) then
local ibox_args = {
-- ['korean_header'] = args['korean_header'] or 'Korean name', -- redundant; TODO: support |korean_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,275 ⟶ 1,321:
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
return ibox_mln_ko (frame, ibox_args);
for i=2, 6 do
if any_set ({args['hanja'..i], args['hangul'..i]}) then
local ibox_args = {
['korean_header'] = args['korean_header'..i] or 'Alternative Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['hangul'..i],
['hanja'] = args['hanja'..i],
['rr'] = args['rr'..i],
['mr'] = args['mr'..i],
['northkorea'] = args['northkorea'..i],
['lk'] = args['lk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
 
Line 1,289 ⟶ 1,352:
 
local function ko2 (frame, args)
local children = {};
if any_set ({args.cnhanja, args.cnhangul}) then
local ibox_args = {
['korean_header'] = args['cnkorean_header'] or '[[Korean language in China|Chinese Korean]] name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,302 ⟶ 1,366:
}
returntable.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['cnhanja'..i], args['cnhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['cnkorean_header'..i] or 'Alternative [[Korean language in China|Chinese Korean]] namee',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['cnhangul'..i],
['hanja'] = args['cnhanja'..i],
['rr'] = args['cnrr'..i],
['mr'] = args['cnmr'..i],
['northkorea'] = 'yes',
['lk'] = args['cnlk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
 
Line 1,315 ⟶ 1,397:
 
local function ko3 (frame, args)
local children = {};
if any_set ({args.nkhanja, args.nkhangul}) then
local ibox_args = {
['korean_header'] = args['nkkorean_header'] or 'North Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,328 ⟶ 1,411:
}
returntable.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['nkhanja'..i], args['nkhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['nkkorean_header'..i] or 'Alternative North Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['nkhangul'..i],
['hanja'] = args['nkhanja'..i],
['rr'] = args['nkrr'..i],
['mr'] = args['nkmr'..i],
['northkorea'] = 'yes',
['lk'] = args['nklk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
 
Line 1,341 ⟶ 1,442:
 
local function ko4 (frame, args)
local children = {};
if any_set ({args.skhanja, args.skhangul}) then
local ibox_args = {
['korean_header'] = args['skkorean_header'] or 'South Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,354 ⟶ 1,456:
}
returntable.insert (children, ibox_mln_ko (frame, ibox_args));
end
for i=2, 6 do
if any_set ({args['skhanja'..i], args['skhangul'..i]}) then
local ibox_args = {
['korean_header'] = args['skkorean_header'..i] or 'Alternative South Korean name',
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args['hide'],
['hangul'] = args['skhangul'..i],
['hanja'] = args['skhanja'..i],
['rr'] = args['skrr'..i],
['mr'] = args['skmr'..i],
['northkorea'] = nil,
['lk'] = args['sklk'..i],
}
table.insert (children, ibox_mln_ko (frame, ibox_args));
end
end
return table.concat (children) or '';
end
 
Line 1,392 ⟶ 1,512:
if any_set ({args.mong, args.mon}) then
local ibox_args = {
-- ['mongolian_header'] = args['mongolian_header'] or 'Mongolian name', -- redundant; TODO: support |mongolian_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,414 ⟶ 1,534:
if any_set ({args.mnc_rom, args.mnc}) then
local ibox_args = {
-- ['manchu_header'] = args['manchu_header'] or 'Manchu name', -- redundant; TODO: support |manchu_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['mnc'] = args.mnc,
Line 1,460 ⟶ 1,580:
if args.my then
local ibox_args = {
-- ['burmese_header'] = args['burmese_header'] or 'Burmese name', -- redundant; TODO: support |burmese_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['my'] = args.my,
Line 1,578 ⟶ 1,698:
if any_set ({args.rus, args.russian}) then -- TODO: unify parameter names
local ibox_args = {
-- ['russian_header'] = args['russian_header'] or 'Russian name', -- redundant; TODO: support |russian_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['rus'] = args.rus or args.russian,
Line 1,676 ⟶ 1,796:
if args.th or args.tha then
local ibox_args = {
-- ['thai_header'] = args['thai_header'] or 'Thai name', -- redundant; TODO: support |thai_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['header'] = args['th-hdr'],
Line 1,727 ⟶ 1,847:
if args.uig then
local ibox_args = {
-- ['uyghur_header'] = args['uyghur_header'] or 'Uyghur name', -- redundant; TODO: support |uyghur_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,753 ⟶ 1,873:
if any_set ({args.qn, args.vie, args.chuhan}) then
local ibox_args = {
-- ['vietnamese_header'] = args['vietnamese_header'] or 'Vietnamese name', -- redundant; TODO: support |vietnamese_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['vie'] = args.vie,
Line 1,777 ⟶ 1,897:
if args.zha then
local ibox_args = {
-- ['zhuang_header'] = args['zhuang_header'] or 'Zhuang name', -- redundant; TODO: support |zhuang_header=
['headercolor'] = args['child-hdr-color'] or args.headercolor,
['hide'] = args.hide,
Line 1,811 ⟶ 1,931:
 
if 'yes' == args.child then
ibox_args['chinese_header'] = args['chinese_header'] or args.name1; -- show the header name from parameter or default name from ibox_mln_zh()
elseif any_set ({ -- when any of these are set there will be other child infoboxen so ...
args.hangul, args.hanja, args.kana, args.kanji, args.hiragana,
Line 1,822 ⟶ 1,942:
args.lang9, args.lang10, args.lang11,
}) then
ibox_args['chinese_header'] = args['chinese_header'] or args.name1; -- ... show the header name from parameter or default name from ibox_mln_zh()
else
ibox_args['chinese_header'] = args['chinese_header'] or args.name1 or 'none'; -- show the header name from parameter or no header (args.name1 missing or 'empty' - nil)
end
 
Line 1,848 ⟶ 1,968:
ibox_args['chinese_header'] = args[data.zh_hdr_names[i][1]]; -- use value from parameter
else
ibox_args['chinese_header'] = args['chinese_header'..i] or data.zh_hdr_names[i][2]; -- use the default
end