Module:Template translation: Difference between revisions

From The FunKey Wiki
Add fallback to _getLanguageSubpage for content language. Used by Template:Pagelang
wc>Steinsplitter
m (73 revisions imported from meta:Module:Template_translation: reimport)
 
(Add fallback to _getLanguageSubpage for content language. Used by Template:Pagelang)
Line 36:
and subpage ~= "sandbox"
and subpage ~= "testcases"
and subpage ~= "init"
and subpage ~= "preload"
then
return subpage
Line 43 ⟶ 45:
end
 
--[[Get the last subpage of thean currentarbitrary page if it is a translation.
To be used from templates.
]]
function this.getLanguageSubpage(frame)
local title = frame and frame.args[1]
if not title or title == '' then
title = mw.title.getCurrentTitle()
end
return this._getLanguageSubpage(title)
end
 
--[[Get the last subpage of an arbitrary page if it is a translation.
To be used from Lua.
]]
function this._getLanguageSubpage(title)
if type(title) == 'string' then
title = mw.title.new(title)
end
if not title then
-- invalid title
return mw.language.getContentLanguage():getCode()
end
--[[This code does not work in all namespaces where the Translate tool works.
-- It works in the main namespace on Meta because it allows subpages there
Line 58 ⟶ 79:
-- bug of Meta-Wiki. The work-around is to split the full title and then
-- get the last titlepart.
local subpage = mw.title.getCurrentTitle().subpageText
--]]
local titleparts = mw.text.split(mw.title.getCurrentTitle().fullText, '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, ''mw.language.getContentLanguage():getCode())
end
 
--[[Get the last subpage of the current page if it is a translation.
]]
function this.getCurrentLanguageSubpage()
return this._getLanguageSubpage(mw.title.getCurrentTitle())
end
 
--[[Get the first part of the language code of the subpage, before the '-'.
]]
function this.getMainLanguageSubpage()
parts = mw.text.split( this.getCurrentLanguageSubpage(), '-' )
return parts[1]
end
 
Line 69 ⟶ 103:
]]
function this.getFrameLanguageSubpage(frame)
return local titleparts = mw.textthis.split_getLanguageSubpage(frame:getParent():getTitle(), '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, '')
end
 
Line 134 ⟶ 166:
]]
local title
local namespace = args['namespacetntns'] or ''
if (namespace ~= '') -- Checks for namespacetntns parameter for custom ns.
then
title = this.title(namespace, pagename) -- Costly
Line 152 ⟶ 184:
if (subpage == '')
then
subpage = this.getLanguageSubpagegetCurrentLanguageSubpage()
end
if (subpage == '')
Line 236 ⟶ 268:
end
arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded
arguments['namespacetntns'] = nil -- discard the specified namespace override
arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame
arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame
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
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.