Module:TranslateThis
This module depends on the following other modules: |
This Lua module is used on approximately 115,000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
Usage
edit{{#invoke:TranslateThis|main}}
local fb = require('Module:Fallback')
return { main = function( frame )
function shallowcopy(orig)
if type(orig) ~= 'table' then
return orig
end
local result = {}
for key, value in pairs(orig) do
result[key] = value
end
return result
end
local lang = frame:preprocess("{{int:lang}}") -- I don't know of any other way to get the user's language...
local args = shallowcopy(frame:getParent().args)
local anchor = args.anchor
args.anchor = nil
if (anchor and args[anchor]) then
anchor = args[anchor]
end
anchor = anchor and frame:expandTemplate( { title = "Anchor", args = { anchor } } ) or ''
local result = args[ lang ]
if result and result ~= '' then
result = '<span lang="' .. lang .. '">' .. result .. '</span>'
else
local default = ''
for i, v in pairs( args ) do
if v ~= "" then
default = default .. ' / <span lang="' .. i .. '">' .. v .. '</span> <small>(' .. i .. ')</small>'
end
end
default = default:sub( 4 )
args.default=default
local newlang
result, newlang = fb._langSwitch(args, lang)
if not newlang then
result = ''
elseif newlang~='default' then
result = '<span lang="' .. newlang .. '">' .. result .. '</span> <small>(' .. newlang .. ')</small>'
end
local langname = mw.language.fetchLanguageName( lang, lang )
if langname ~= "" and newlang then
result = result
end
end
return anchor .. result
end}