Module:Name in various languages
Appearance
| This module is rated as alpha. It is ready for limited use and third-party feedback. It may be used on a small number of pages, but should be monitored closely. Suggestions for new features or adjustments to input and output are welcome. |
Usage
[edit]{{#invoke:Name in various languages|main}}
This module implements {{Name in various languages}}, a Lua-based replacement for {{Name in official languages}}.
Example
[edit]
local lang_mod = require('Module:Lang');
local get_args = require('Module:Arguments').getArgs;
local yesno = require('Module:Yesno');
local p = {};
-- Ensure that list of names is sorted by name of language.
local function sorted_pairs(t, f)
local keys = {}
for key in pairs(t) do table.insert(keys, key) end
table.sort(keys, f)
local i = 0
local iter = function ()
i = i + 1; if keys[i] == nil then return nil else return keys[i], t[keys[i]] end end
return iter
end
local function make_language_row(frame, lang_code, lang_text)
local language_row = mw.html.create('tr')
language_row:css{
["text-align"] = "left"
}
local lang_link_wikilink = lang_mod.name_from_tag(
{lang_code, ['link'] = 'yes'}
)
local language_name = mw.html.create('td')
local lang_name_wikitext = frame.args[lang_code .. '_display'] or lang_link_wikilink
language_name:wikitext(lang_name_wikitext)
language_name:addClass(frame.args[lang_code .. '_name_class'] or '')
language_name:addClass(frame.args['langname_class'] or '')
local language_data = mw.html.create('td')
language_data:css{["padding-left"]="0.5em"}
language_data:addClass(frame.args[lang_code .. '_text_class'] or '')
language_data:addClass(frame.args['langtext_class'] or '')
language_data:wikitext(frame:expandTemplate{
title='lang',args={lang_code, lang_text}
})
language_row:node(language_name)
language_row:node(language_data)
return language_row
end
function p._main(frame)
local args = get_args(frame)
local root = mw.html.create('table')
root:addClass(args.class or 'mw-collapsible')
if yesno(args.collapse or true) then root:addClass("mw-collapsed") end
root:css{
["width"] = args.width or '100%',
["font_size"] = args.font_size or '88%',
["border-collapse"] = "collapse"
}
local name_row = mw.html.create('tr')
name_row:node(mw.html.create('td')
:css{
["text-align"] = "center",
["border-top"] = "0px"
}
:attr{["colspan"] = 2}
:wikitext(args.name or ''))
root:node(name_row)
for k,v in sorted_pairs(args) do
if lang_mod._is_ietf_tag(k) then
local out = make_language_row(frame,k,v)
root:node(out)
end
end
return tostring(root);
end
function p.main(frame)
return p._main(frame:getParent())
end
return p