Hopp til innhold

Modul:TranslateTemplate

Fra Wikipedia, den frie encyklopedi

local p = {}

function p.translate(frame)

	local template
	local argtable = {}
	for k, v in pairs(frame.args) do
		if k == 1 then template = v
		else argtable[k] = v end
	end
	local pframe = frame:getParent()
	if pframe ~= nil then
		for k, v in pairs(pframe.args) do 
			if k == 1 then template = v
			else argtable[k] = v end
		end
	end
	
	-- Last inn konfigurasjonsfilen basert på malnavn gitt som 1= eller template= 
	if template == nil then
		return frame:preprocess('{{Feil|Ingen mal angitt}}')
	end
	local nb = mw.language.new('nb')
	local normName = string.gsub(nb:ucfirst(template), '_', ' ')
	local filename = 'Modul:TranslateTemplate/configuration/' .. normName
	local status, config = pcall(require, filename)
	if status == false then
		return frame:preprocess('{{Feil|Konfigurasjonsfilen [[:' .. filename .. ']] ble ikke funnet}}')
	end

	-- Oversett navngitte parametere basert på mapping fra konfigurasjonsfilen
	local args = ''
	for key, val in pairs( argtable ) do
		if string.match( key, '^[0-9]+$' ) == nil and val ~= '' then 
			newkey = config['args'][key]
			if newkey == nil then
				return frame:preprocess('{{Feil|Argumentet "' .. key .. '" ble ikke funnet i konfigurasjonsfilen [[:' .. filename .. ']]}}')
			end
			args = args .. '|' .. newkey .. '=' .. val
		end
	end

	local out = '{{' .. config['name'] .. args .. '}}'

	if argtable[2] == nil then
		return frame:preprocess(out)
	end
	if argtable[2] == 'raw' then
		return out
	end
	return frame:preprocess('{{Feil|TranslateTemplate forstår ikke: ' .. argtable[2] .. '}}')
end

return p