Module:Lang: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
No edit summary
No edit summary
Line 20: Line 20:
{{{1}}} iso language code - required
{{{1}}} iso language code - required
{{{2}}} text - required
{{{2}}} text - required
{{{rtl}}} if set to any value, set dir="rtl" attribute and inserts &lrm; after the </span> tag
{{{rtl}}} if set to any value, set rtl="rtl" attribute and inserts &lrm; after the </span> tag
{{{nocat}}} if set to any value, disables categorization
{{{nocat}}} if set to any value, disables categorization


Line 30: Line 30:


require('Module:No globals');
require('Module:No globals');
local p = {};

local getArgs = require('Module:Arguments').getArgs;
local getArgs = require('Module:Arguments').getArgs;
--local lang_name_table = mw.loadData ('Module:Language/data/iana languages');
local lang_name_table = require ('Module:Language/name/data');
local lang_name_table = require ('Module:Language/name/data');

local p = {};
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization




Line 80: Line 82:
table.insert (span, '"');
table.insert (span, '"');
if is_set (rtl) then
if is_set (rtl) then
table.insert (span, ' dir="rtl"'); -- for right to left languages
table.insert (span, ' rtl="rtl"'); -- for right to left languages
end
end
if is_set (size) then -- {{lang}} only
if is_set (size) then -- {{lang}} only
Line 87: Line 89:
table.insert (span, '>'); -- close the opening span tag
table.insert (span, '>'); -- close the opening span tag
if 'yes' == italic then
if 'yes' == italic then
table.insert (span, table.concat ({"''", text, "''"})); -- text with italic markup
table.insert (span, table.concat ({"''", text, "''"})); -- text with italic markup
else
else
table.insert (span, text); -- DEFAULT: text is not italicized
table.insert (span, text); -- DEFAULT: text is not italicized
end
end
table.insert (span, '</span>'); -- close the span
table.insert (span, '</span>'); -- close the span
Line 99: Line 101:
end
end



--[[--------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------

]]

local function make_category (code)
local cat = {};
if 0 ~= namespace then -- only categorize in article space
return ''; -- return empty string for concatenation
end
table.insert (cat, '[[Category:Articles containing ');
-- if ('en' == code) or ('eng' == code) then
-- table.insert (cat, 'explicitly cited English');
-- elseif 'art' == code then
-- table.insert (cat, 'constructed')
-- else
end


--[=[-------------------------< L A N G >----------------------------------------------------------------------
--[=[-------------------------< L A N G >----------------------------------------------------------------------


{{#invoke:lang|lang|code={{{1}}}|text={{{2}}}|dir={{{rtl}}}|size={{{size}}}|nocat={{{nocat}}}}}
{{#invoke:lang|lang|code={{{1}}}|text={{{2}}}|rtl={{{rtl}}}|size={{{size}}}|nocat={{{nocat}}}}}


]=]
]=]
Line 110: Line 133:
local out = {};
local out = {};
local language_name;
local language_name = lang_name_table.lang_iana[args.code][1]; -- table entries sometimes have multiple names, always take the first one
if lang_name_table.lang_iana[args.code] then
language_name = lang_name_table.lang_iana[args.code][1]; -- table entries sometimes have multiple names, always take the first one
end
if not is_set (language_name) then
if not is_set (language_name) then
return 'error: unknown language code: ' .. args.code; -- if here then language code not supported
table.insert (out, '<span style="font-size:100%" class="error">error: unknown language code: ');
table.insert (out, args.code);
table.insert (out, '</span>');
if 0 ~= namespace then -- only categorize in article space
table.insert (out, '[[Category:Articles containing unknown language template codes|');
table.insert (out, args.code);
table.insert (out, ']]');
end
return table.concat (out); -- emit an error message and category
end
end
table.insert (out, make_text_span (args.code, args.text, args.dir, nil, args.size)) -- italics set to nil here because not supporte by {{lang}}
table.insert (out, make_text_span (args.code, args.text, args.rtl, nil, args.size)) -- italics set to nil here because not supporte by {{lang}}
return table.concat (out); -- put it all together and done
return table.concat (out); -- put it all together and done
end
end
Line 123: Line 158:
--[=[-------------------------< L A N G _ X X >----------------------------------------------------------------
--[=[-------------------------< L A N G _ X X >----------------------------------------------------------------


{{#invoke:lang|lang_xx|code={{{1}}}|text={{{2}}}|link={{{links|{{{link}}}}}}|dir={{{rtl}}}|nocat={{{nocat}}}|italic={{{italic}}}|lit={{{lit}}}}}
{{#invoke:lang|lang_xx|code={{{1}}}|text={{{2}}}|link={{{links|{{{link}}}}}}|rtl={{{rtl}}}|nocat={{{nocat}}}|italic={{{italic}}}|lit={{{lit}}}}}


]=]
]=]
Line 137: Line 172:
local out = {};
local out = {};
local language_name;
local language_name = lang_name_table.lang_iana[args.code][1]; -- table entries someites have multiple names, always take the first one
if lang_name_table.lang_iana[args.code] then
language_name = lang_name_table.lang_iana[args.code][1]; -- table entries sometimes have multiple names, always take the first one
end
if not is_set (language_name) then
if not is_set (language_name) then
return 'error: unknown language code: ' .. args.code; -- if here then language code not supported
table.insert (out, '<span style="font-size:100%" class="error">error: unknown language code: ');
table.insert (out, args.code);
table.insert (out, '</span>');
if 0 ~= namespace then -- only categorize in article space
table.insert (out, '[[Category:Articles containing unknown language template codes|');
table.insert (out, args.code);
table.insert (out, ']]');
end
return table.concat (out); -- emit an error message and category
end
end