Difference between revisions of "Module:Template translation"

Jump to navigation Jump to search
m
fix comments (there's no more any script errors)
>Verdy p
m (why did I delete the translation existence test ??? Sorry)
>Verdy p
m (fix comments (there's no more any script errors))
Line 10: Line 10:
     if (string.find(subpage, "'", 1, true) == nil)
     if (string.find(subpage, "'", 1, true) == nil)
     then
     then
         --[[If the subpage is a valid language code, check if a translation of the
         -- Return the subpage only if it is a valid language code.
            template exists in that language; if so, put it in langcode.
            ]]
         if (mw.language.isKnownLanguageTag(subpage))
         if (mw.language.isKnownLanguageTag(subpage))
         then
         then
Line 18: Line 16:
         end
         end
     end
     end
    -- Otherwise there's currently no known language subpage
     return ''
     return ''
end
end


--[[If on a translation subpage (like Foobar/de), this function renders
    a given template in the same language, if the translation is available.
    Otherwise, the template is rendered in its default language, without
    modification.
    This is aimed at replacing the current implementation of Template:TNT.
    ]]
function this.renderTranslatedTemplate(frame)
function this.renderTranslatedTemplate(frame)
    --[[If on a translation subpage (like Foobar/de), this function renders
        a given template in the same language, if the translation is available.
        Otherwise, the template is rendered in its default language, without
        modification.
        This is aimed at replacing the current implementation of Template:TNT.
        ]]
     local template = frame.args['template']
     local template = frame.args['template']
     --[[Check whether the template is actually in the Template namespace, or
     --[[Check whether the template is actually in the Template namespace, or
         if we're transcluding a main-namespace page.
         if we're transcluding a main-namespace page.
Line 39: Line 39:
         namespace = ''
         namespace = ''
     end
     end
    local langcode = 'en'
 
     -- Get the last subpage and check if it matches a known language code
     -- Get the last subpage and check if it matches a known language code
    local langcode = 'en' -- default language template subpage to render
     local subpage = this.getLanguageSubpage()
     local subpage = this.getLanguageSubpage()
     if (subpage ~= '')
     if (subpage ~= '')
     then
     then
         local translation = mw.title.new(namespace .. template .. '/' .. subpage)
        -- Check if a translation of the template exists in that language; if so, put it in langcode
         local translation = mw.title.new(template .. '/' .. subpage, namespace)
         if (translation.id ~= 0)
         if (translation.id ~= 0)
         then
         then
Line 50: Line 52:
         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
     local arguments = {}
     local arguments = {}
     for k, v in pairs(frame.args) do
     for k, v in pairs(frame.args) do
         arguments[k] = v
         arguments[k] = v
     end
     end
    -- Render the template
     return frame:expandTemplate{title = namespace .. ':' .. template .. '/' .. langcode, args = arguments}
     return frame:expandTemplate{title = namespace .. ':' .. template .. '/' .. langcode, args = arguments}
end
end


return this
return this
Anonymous user

Navigation menu