Module:Template translation: Difference between revisions

Content added Content deleted
mNo edit summary
(revert, causing script errors all over the place)
Line 58: Line 58:
]]
]]
function this.renderTranslatedTemplate(frame)
function this.renderTranslatedTemplate(frame)
local args = frame.args
local template = frame.args['template']

local pagename = args['template']
--[[Check whether the template is actually in the Template namespace, or
--[[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 title
local namespace = 'Template'
local namespace = args['namespace'] or ''
if (frame.args['namespace']~='')--checks for namespace parameter for custom ns
if (namespace ~= '') -- Checks for namespace parameter for custom ns.
then
then
title = mw.title.new(pagename, namespace) -- Costly
namespace = frame.args['namespace']
else -- Supposes that set page is in ns10.
else--supposes that set page is in ns10
title = mw.title.new(pagename, 'Template') -- Costly
local templateFullTitle = mw.title.new(template, namespace)
if (title.id == 0)
if (templateFullTitle.id == 0)
then -- not found in the Template namespace, assume the main namespace (for backward compatibility)
then -- not found in the Template namespace, assume the main namespace
title = mw.title.new(pagename, '') -- Costly
namespace = ''
end
end
end
end
-- At this point the title should exist, otherwise render a red link to the missing page
-- Get the last subpage and check if it matches a known language code
local langcode = 'en' -- default language template subpage to render
if (title.id == 0)
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 pagename exists in English
-- Check if a translation of the template exists in that language; if so, put it in langcode
local newtitle = mw.title.new(title.prefixedText .. '/' .. 'en') -- Costly
local translation = mw.title.new(template .. '/' .. subpage, namespace)
-- Use the translation when it exists
if (translation.id ~= 0)
if (newtitle.id ~= 0)
then
title = newtitle
end
else
-- Check if a translation of the pagename exists in that language
local newtitle = mw.title.new(title.prefixedText .. '/' .. subpage) -- Costly
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
langcode = subpage
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 pagename.
-- Then render the template
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 126: Line 105:
end
end
end
end
return frame:expandTemplate{title = title, args = arguments}
return frame:expandTemplate{title = namespace .. ':' .. template .. '/' .. langcode, args = arguments}
end
end