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 | ||
-- | -- Return the subpage only if it is a valid language code. | ||
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) | ||
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 | ||
-- 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( | -- 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 | ||
return frame:expandTemplate{title = namespace .. ':' .. template .. '/' .. langcode, args = arguments} | return frame:expandTemplate{title = namespace .. ':' .. template .. '/' .. langcode, args = arguments} | ||
end | end | ||
return this | return this |