Module:Template translation: Difference between revisions

Content added Content deleted
m (Protected "Module:Template translation": high-risk Lua module ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)))
(update from mw:Module:Template_translation, please revert if it causes issues)
Line 63: Line 63:
local subpage = titleparts[#titleparts]
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, '')
return this.checkLanguage(subpage, '')
end

--[[Get the first part of the language code of the subpage, before the '-'.
]]
function this.getMainLanguageSubpage()
parts = mw.text.split( this.getLanguageSubpage(), '-' )
return parts[1]
end
end


Line 134: Line 141:
]]
]]
local title
local title
local namespace = args['namespace'] or ''
local namespace = args['tntns'] or ''
if (namespace ~= '') -- Checks for namespace parameter for custom ns.
if (namespace ~= '') -- Checks for tntns parameter for custom ns.
then
then
title = this.title(namespace, pagename) -- Costly
title = this.title(namespace, pagename) -- Costly
Line 236: Line 243:
end
end
arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded
arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded
arguments['namespace'] = nil -- discard the specified namespace override
arguments['tntns'] = nil -- discard the specified namespace override
arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame
arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame
arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame
arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame
return frame:expandTemplate{title = ':' .. title, args = arguments}
return frame:expandTemplate{title = ':' .. title, args = arguments}
end

--[[A helper for mocking TNT in Special:TemplateSandbox. TNT breaks
TemplateSandbox; mocking it with this method means templates won't be
localized but at least TemplateSandbox substitutions will work properly.
Won't work with complex uses.
]]
function this.mockTNT(frame)
local pargs = (frame:getParent() or {}).args
local arguments = {}
for k, v in pairs(pargs) do
-- numbered args >= 1 need to be shifted
local n = tonumber(k) or 0
if (n > 0)
then
if (n >= 2)
then
arguments[n - 1] = v
end
else
arguments[k] = v
end
end
if not pargs[1]
then
return ''
end
return frame:expandTemplate{title = 'Template:' .. pargs[1], args = arguments}
end
end