>Verdy p |
>Verdy p |
Line 57: |
Line 57: |
| This is aimed at replacing the current implementation of Template:TNT. | | This is aimed at replacing the current implementation of Template:TNT. |
| ]] | | ]] |
| function this.renderTranslatedTemplate(frame)
| |
| local args = frame.args
| |
| local pagename = args['template']
| |
|
| |
| --[[Check whether the pagename is actually in the Template namespace, or
| |
| if we're transcluding a main-namespace page.
| |
| (added for backward compatibility of Template:TNT)
| |
| ]]
| |
| local namespace = 'Template'
| |
| if (args['namespace'] ~= '') -- Checks for namespace parameter for custom ns.
| |
| then
| |
| namespace = args['namespace']
| |
| else -- Supposes that set page is in ns10.
| |
| local templateFullTitle = mw.title.new(pagename, namespace) -- Costly
| |
| if (templateFullTitle.id == 0)
| |
| then -- not found in the Template namespace, assume the main namespace
| |
| namespace = ''
| |
| end
| |
| end
| |
|
| |
| -- Get the last subpage and check if it matches a known language code.
| |
| local langcode = 'en' -- Default language subpage to render.
| |
| local subpage = this.getLanguageSubpage()
| |
| if (subpage ~= '')
| |
| then
| |
| -- Check if a translation of the pagename exists in that language; if so, put it in langcode
| |
| local translation = mw.title.new(pagename .. '/' .. subpage, namespace) -- Costly
| |
| if (translation.id ~= 0)
| |
| then
| |
| langcode = subpage
| |
| end
| |
| end
| |
|
| |
| -- Copy args pseudo-table to a proper table so we can feed it to expandTemplate.
| |
| -- Then render the pagename.
| |
| local arguments = {}
| |
| for k, v in pairs((frame:getParent() or {}).args) do
| |
| -- numbered args >= 1 need to be shifted
| |
| local n = tonumber(k) or 0
| |
| if (n > 0)
| |
| then
| |
| if (n >= 2)
| |
| then
| |
| arguments[n - 1] = v
| |
| end
| |
| else
| |
| arguments[k] = v
| |
| end
| |
| end
| |
| return frame:expandTemplate{title = namespace .. ':' .. pagename .. '/' .. langcode, args = arguments}
| |
| 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.renderTranslatedTemplateDebug(frame)
| |
| local args = frame.args
| |
| local pagename = args['template']
| |
|
| |
| --[[Check whether the pagename is actually in the Template namespace, or
| |
| if we're transcluding a main-namespace page.
| |
| (added for backward compatibility of Template:TNT)
| |
| ]]
| |
| local title
| |
| local namespace = args['namespace'] or ''
| |
| if (namespace ~= '') -- Checks for namespace parameter for custom ns.
| |
| then
| |
| title = mw.title.new(pagename, namespace) -- Costly
| |
| else -- Supposes that set page is in ns10.
| |
| title = mw.title.new(pagename, 'Template') -- Costly
| |
| if (title.id == 0)
| |
| then -- not found in the Template namespace, assume the main namespace (for backward compatibility)
| |
| namespace = ''
| |
| title = mw.title.new(pagename, namespace) -- Costly
| |
| end
| |
| end
| |
|
| |
| -- Get the last subpage and check if it matches a known language code.
| |
| local langcode = 'en' -- Default language subpage to render.
| |
| local subpage = this.getLanguageSubpage()
| |
| if (subpage ~= '')
| |
| then
| |
| -- Check if a translation of the pagename exists in that language; if so, put it in langcode
| |
| local title = mw.title.new(title.prefixedText .. '/' .. subpage) -- Costly
| |
| if (title.id == 0)
| |
| then
| |
| langcode = subpage
| |
| end
| |
| end
| |
|
| |
| -- Copy args pseudo-table to a proper table so we can feed it to expandTemplate.
| |
| -- Then render the pagename.
| |
| local arguments = {}
| |
| for k, v in pairs((frame:getParent() or {}).args) do
| |
| -- numbered args >= 1 need to be shifted
| |
| local n = tonumber(k) or 0
| |
| if (n > 0)
| |
| then
| |
| if (n >= 2)
| |
| then
| |
| arguments[n - 1] = v
| |
| end
| |
| else
| |
| arguments[k] = v
| |
| end
| |
| end
| |
| return frame:expandTemplate{title = title, args = arguments}
| |
| -- return frame:expandTemplate{title = namespace .. ':' .. pagename .. '/' .. langcode, args = arguments}
| |
| end
| |
|
| |
| function this.renderTranslatedTemplate(frame) | | function this.renderTranslatedTemplate(frame) |
| local template = frame.args['template'] | | local template = frame.args['template'] |