Module:Template translation: Difference between revisions
Content added Content deleted
m (arguments still need to be copied (they are not a proper table)) |
m (supplement for TNTN (to be used to solve self-recursions of TNT, with translatable templates trying to transclude other translatable templates also with TNT)) |
||
Line 109: | Line 109: | ||
end |
end |
||
--[[If on a translation subpage (like Foobar/de), this function |
--[[If on a translation subpage (like Foobar/de), this function returns |
||
a given template in the same language, if the translation is available. |
a given template in the same language, if the translation is available. |
||
Otherwise, the template is |
Otherwise, the template is returned in its default language, without |
||
modification. |
modification. |
||
This is aimed at replacing the current implementation of Template: |
This is aimed at replacing the current implementation of Template:TNTN. |
||
This version does not expand the returned template name: this solves the |
|||
problem of self-recursion in TNT when translatable templates need themselves |
|||
to transclude other translable templates (such as Tnavbar). |
|||
]] |
]] |
||
function this. |
function this.getTranslatedTemplate(frame) |
||
local args = frame.args |
local args = frame.args |
||
local pagename = args['template'] |
local pagename = args['template'] |
||
Line 167: | Line 171: | ||
end |
end |
||
end |
end |
||
-- At this point the title should exist |
|||
return title.prefixedText, title.id ~= nil |
|||
end |
|||
--[[If on a translation subpage (like Foobar/de), this function renders |
|||
a given template in the same language, if the translation is available. |
|||
Otherwise, the template is rendered in its default language, without |
|||
modification. |
|||
This is aimed at replacing the current implementation of Template:TNT. |
|||
Note that translatable templates cannot transclude themselves other |
|||
⚫ | |||
translatable templates, as it will recurse on TNT. Use TNTN instead |
|||
if title.id == nil |
|||
to return only the effective template name to expand externally, with |
|||
then |
|||
template parameters also provided externally. |
|||
⚫ | |||
]] |
|||
function this.renderTranslatedTemplate(frame) |
|||
local title, found = this.getTranslatedTemplate(frame) |
|||
-- At this point the title should exist prior to performing the expansion |
|||
⚫ | |||
-- (resolved in its assumed namespace). If we don't tet this here, a |
|||
-- script error would be thrown. Returning a red link is consistant with |
|||
-- MediaWiki behavior when attempting to transclude inexistant templates. |
|||
if not found then |
|||
⚫ | |||
end |
|||
-- Copy args pseudo-table to a proper table so we can feed it to expandTemplate. |
-- Copy args pseudo-table to a proper table so we can feed it to expandTemplate. |
||
-- Then render the pagename. |
-- Then render the pagename. |
||
Line 199: | Line 222: | ||
end |
end |
||
end |
end |
||
arguments['template'] = title |
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['namespace'] = 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 |
return frame:expandTemplate{title = ':' .. title, args = arguments} |
||
end |
end |
||