Difference between revisions of "Module:Template translation"

Jump to navigation Jump to search
m
fix 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 template = frame.args['template']
     local args = frame.args
 
    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 namespace = 'Template'
    local title
     if (frame.args['namespace']~='')--checks for namespace parameter for custom ns
     local namespace = args['namespace'] or ''
     if (namespace ~= '') -- Checks for namespace parameter for custom ns.
     then
     then
    namespace = frame.args['namespace']
        title = mw.title.new(pagename, namespace) -- Costly
     else--supposes that set page is in ns10
     else -- Supposes that set page is in ns10.
         local templateFullTitle = mw.title.new(template, namespace)
         title = mw.title.new(pagename, 'Template') -- Costly
         if (templateFullTitle.id == 0)
         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)
             namespace = ''
             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
    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 template exists in that language; if so, put it in langcode
         -- Check if a translation of the pagename exists in that language
         local translation = mw.title.new(template .. '/' .. subpage, namespace)
         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
             langcode = subpage
             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 template
     -- 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 = namespace .. ':' .. template .. '/' .. langcode, args = arguments}
     return frame:expandTemplate{title = title, args = arguments}
end
end


return this
return this
Anonymous user

Navigation menu