Module:Lang/utilities: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 6:
 
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
 
local err_texts = { -- because wrapper templates have Latn/non-Latn text ordered according to the wrapper template's name
['lang-sh-cyrl-latn'] = true, -- this template has |1=cyrl script |2=latn script
}
 
 
Line 11 ⟶ 15:
 
assembles an error message from template name, message text, help link, and error category.
<span style="font-family: monospace, monospace;">{{', template, '}}</span>
 
]]
 
local function error_msg_make (msg, template, args_tnocat)
local out = {};
local category = 'Lang and lang-xx';
 
table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: <span style="font-family: monospace, monospace;">{{', template, '}}</span>: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[Template:Lang-x2', template, '#Error messages|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args_t.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:Lang and lang-xx template errors]]'}));
end
Line 85 ⟶ 89:
]]
 
local function ietf_tag_make (args_t, codetag, swap)
local ietf_tag_t = {codetag}; -- initialize with <codetag>
local enum = swap and '1' or '2'; -- when <swap> is true latin <text1> is rendered second by _lang()
Line 99 ⟶ 103:
--[[--------------------------< _ L A N G _ X 2 >--------------------------------------------------------------
 
mimics {{lang|<codetag>|<text1>|<text2>}} except that <text2> is not a romanization of <text1> (which is always the
Latin-script form). Intended for languages where two scripts are 'official' or 'native and equal in status' (sh
is and sr may be candidatesa candidate for this; are there others?)
 
{{lang_x2|<codetag>|<text1>|<text2>|swap=yes|script2=<script>|separator=[,|;|/|<quoted string>]}}
 
<codetag> - (required) language codetag for both of <text1> and <text2>
<text1> - (required) Latin-script text (always)
<text2> - (required) non-Latin-script text (always)
Line 121 ⟶ 125:
enumerated parameters:
|script1= - ISO 15924 script tag for <text1> -- when <text1> renders first, these are passed to _lang_xx_...() individually
|region1= - ISO 3166 region tag for <text1> -- when <text1> renders second, these are combined with <codetag> to make an IETF tag for _lang()
|variant1= - IETF tag for <text1>
 
|script2= - ISO 15924 script tag for <text2> -- when <text2> renders first, these are passed to _lang_xx_...() individually
|region2= - ISO 3166 region tag for <text2> -- when <text2> renders second, these are combined with <codetag> to make an IETF tag for _lang()
|variant2= - IETF tag for <text2>
 
Line 145 ⟶ 149:
 
local function _lang_x2 (args_t)
iflocal nottag (args_t[1] and= args_t[2].tag andor args_t[31]) then;
local text1 = args_t.text1 or args_t[2];
return error_msg_make ('missing a required argument', 'lang-x2', args_t);
local text2 = args_t.text2 or args_t[3];
local translation = args_t.translation or args_t[4];
local template_name = args_t.template_name or 'lang-x2';
local nocat = ('yes' == args_t.nocat) or ('no' == args_t.cat); -- boolean
 
if not (tag and text1 and text2) then
return error_msg_make ('missing a required argument', 'lang-x2'template_name, args_tnocat);
end
if args_t[1]tag:find ('-', 1, true) then
return error_msg_make ('invalid language codetag: <codespan style="colorfont-family: inherit;monospace, background: inherit; border: none; padding: inheritmonospace;">' .. args_t[1]tag .. '</codespan>; IETF format not supported', 'lang-x2'template_name, args_tnocat);
end
iflocal notis_latn, pos = unicode.is_Latin (args_t[2]text1) then;
if not is_latn then
return error_msg_make ('<code style="color: inherit; background: inherit; border: none; padding: inherit;">&lt;text1></code> is not Latin script', 'lang-x2', args_t);
return error_msg_make ('<span style="font-family: monospace, monospace;">&lt;' .. ((err_texts[template_name:lower()] and 'text2') or 'text1') .. '></span> is not Latin script (pos ' .. pos .. ')', template_name, nocat);
end
ifis_latn, pos = unicode.is_Latin (args_t[3]text2) then;
if is_latn then
return error_msg_make ('<code style="color: inherit; background: inherit; border: none; padding: inherit;">&lt;text2></code> is Latin script', 'lang-x2', args_t);
return error_msg_make ('<span style="font-family: monospace, monospace;">&lt;' .. ((err_texts[template_name:lower()] and 'text1') or 'text2') .. '></span> is Latin script (pos ' .. pos .. ')', template_name, nocat);
end
local swap = 'yes' == args_t.swap; -- boolean
local out = {};
local code = args_t[1];
local text1 = args_t[2];
local text2 = args_t[3];
local translation = args_t[4];
 
local ietf_tags = ietf_tag_make (args_t, codetag, swap); -- for calls to {{lang}}
-- create base-form arguments tables
local lang_xx_args_t = {['code']=codetag, ['label']=args_t.label, ['link']=args_t.link, ['cat']=args_t.cat, ['nocat']=args_t.nocat, ['cat']=args_t.cat}; -- for whichever <textn> renders first
local lang_args_t = {['code']=ietf_tags, ['cat']=args_t.cat, ['nocat']=args_t.nocat, ['cat']=args_t.cat}; -- for whichever <textn> renders second
param_select (args_t, lang_args_t, lang_xx_args_t, swap); -- load <lang_args_t>, <lang_xx_args_t> tables with appropriate enumerated parameters from <args_t> table according to <swap>