Module:Template translation: Difference between revisions
Content added Content deleted
m (debug version in separate sandbox) |
m (fix the script error when TNT is used on a pagename still without any /en subpage) |
||
Line 58: | Line 58: | ||
]] |
]] |
||
function this.renderTranslatedTemplate(frame) |
function this.renderTranslatedTemplate(frame) |
||
local |
local args = frame.args |
||
local pagename = args['template'] |
|||
--[[Check whether the |
--[[Check whether the pagename is actually in the Template namespace, or |
||
if we're transcluding a main-namespace page. |
if we're transcluding a main-namespace page. |
||
(added for backward compatibility of Template:TNT) |
(added for backward compatibility of Template:TNT) |
||
]] |
]] |
||
local |
local title |
||
local namespace = args['namespace'] or '' |
|||
if (namespace ~= '') -- Checks for namespace parameter for custom ns. |
|||
then |
then |
||
title = mw.title.new(pagename, namespace) -- Costly |
|||
else-- |
else -- Supposes that set page is in ns10. |
||
title = mw.title.new(pagename, 'Template') -- Costly |
|||
if ( |
if (title.id == 0) |
||
then -- not found in the Template namespace, assume the main namespace |
then -- not found in the Template namespace, assume the main namespace (for backward compatibility) |
||
title = mw.title.new(pagename, '') -- Costly |
|||
end |
end |
||
end |
end |
||
-- |
-- At this point the title should exist, otherwise render a red link to the missing page |
||
if (title.id == 0) |
|||
local langcode = 'en' -- default language template subpage to render |
|||
then |
|||
return '[[' .. title.prefixedText .. ']]' |
|||
end |
|||
-- Get the last subpage and check if it matches a known language code. |
|||
local subpage = this.getLanguageSubpage() |
local subpage = this.getLanguageSubpage() |
||
if (subpage ~= '') |
if (subpage ~= '') |
||
then |
then |
||
-- Check if a translation of the |
-- Check if a translation of the pagename exists in that language |
||
local |
local newtitle = mw.title.new(title.prefixedText .. '/' .. subpage) -- Costly |
||
if ( |
if (newtitle.id == 0) |
||
then |
|||
-- Check if a translation of the pagename exists in English |
|||
newtitle = mw.title.new(title.prefixedText .. '/' .. 'en') -- Costly |
|||
end |
|||
-- Use the translation when it exists |
|||
if (newtitle.id ~= 0) |
|||
then |
then |
||
title = newtitle |
|||
end |
end |
||
end |
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 |
-- Then render the pagename. |
||
local arguments = {} |
local arguments = {} |
||
for k, v in pairs((frame:getParent() or {}).args) do |
for k, v in pairs((frame:getParent() or {}).args) do |
||
Line 105: | Line 118: | ||
end |
end |
||
end |
end |
||
return frame:expandTemplate{title = |
return frame:expandTemplate{title = title, args = arguments} |
||
end |
end |
||