local m_links = require("Module:links")
local export = {}
local interwiki_langs = {
= "nds",
= "nds",
= "nds",
}
local ignore_caps = {
= true,
}
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local params = {
= {required = true, default = "und"},
= {},
= {list = true},
= {},
= {},
= {},
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local terminfo = {
lang = require("Module:languages").getByCode(args) or error("The language code \"" .. args .. "\" is not valid."),
sc = (args and (require("Module:scripts").getByCode(args) or error("The script code \"" .. args .. "\" is not valid.")) or nil),
term = args or (mw.title.getCurrentTitle().nsText == "Template" and "term") or nil,
alt = args,
genders = args,
tr = args,
lit = args,
interwiki = frame.args,
}
-- Translations must be for mainspace languages
if terminfo.lang:getType() == "reconstructed" or terminfo.lang:getType() == "appendix-constructed" then
error("Translations must be for attested and approved main-namespace languages.")
end
-- Don't show the interwiki link if there is nothing to link to.
if terminfo.term then
local wmlangs = {}
if interwiki_langs then
wmlangs = {require("Module:wikimedia languages").getByCode(interwiki_langs)}
else
wmlangs = terminfo.lang:getWikimediaLanguages()
end
-- Don't show the interwiki link if the language is not recognised by Wikimedia
-- or if the term contains links (for SOP translations)
if terminfo.term:find("[[", nil, true) or #wmlangs == 0 then
terminfo.interwiki = false
end
if wmlangs and ignore_caps:getCode()] then
terminfo.term2 = mw.ustring.gsub(terminfo.term, "^%^", "")
end
if terminfo.interwiki then
terminfo.interwiki =
"<span class=\"" .. terminfo.interwiki .. "\"> [[:" ..
wmlangs:getCode() .. ":" ..
terminfo.lang:makeEntryName(terminfo.term2 or terminfo.term) ..
"|(" .. wmlangs:getCode() .. ")]]</span>"
end
end
if terminfo.lang and terminfo.lang:getCode() == 'yue' and terminfo.tr then
terminfo.tr = mw.ustring.gsub(terminfo.tr, '()','<sup>%1</sup>')
terminfo.tr = mw.ustring.gsub(terminfo.tr, '','⁻')
end
return m_links.full_link(terminfo, nil, true)
end
return export