Difference between revisions of "Module:Template translation"

Jump to navigation Jump to search
revert, causing script errors all over the place
en>Verdy p
m
en>Techman224
(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
    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 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


return this
return this
Anonymous user

Navigation menu