Difference between revisions of "Module:Template translation"
Jump to navigation
Jump to search
m
Module:Template translation (view source)
Revision as of 14:05, 12 January 2014
, 14:05, 12 January 2014fix the script error when TNT is used on a pagename still without any /en subpage
>Verdy p m (debug version in separate sandbox) |
>Verdy p 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 namespace = ' | local title | ||
if ( | 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 | ||
-- Get the last subpage and check if it matches a known language code | -- At this point the title should exist, otherwise render a red link to the missing page | ||
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 | -- Check if a translation of the pagename exists in that language | ||
local | local newtitle = mw.title.new(title.prefixedText .. '/' .. subpage) -- Costly | ||
if (translation.id ~= 0) | 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 | ||
return this | return this |