Mòdul:Llengua

De Viquipèdia
Salta a la navegació Salta a la cerca
local p = {}

local codis = mw.loadData("Module:llengua/taula") -- taula llengua - script
local scripts = mw.loadData("Module:llengua/script") -- taula script - style

-- Plantilla:lang
function p.lang(frame)
	local args = frame:getParent().args
	local codi = args[1]; if codi == "" then codi = nil end
	local text = args[2]; if tetx == "" then text = nil end
	local sc = args.sc; if sc == "" then sc = nil end
	local ret = text or ''
	
	if not (codi and text) then
		error("És necessari proporcionar dos paràmetres.")
	end
	
	if not sc then
		local sc_codi = codis[codi]
		if sc_codi then
			sc = sc_codi.script
		end
	end
	local style
	if sc and sc ~= "Latn" then
		local sc_style = scripts[sc]
		if sc_style then
			style = sc_style.style
		else
			error(sc .. ": no està definit")
		end
	end
	
	if codi ~= "ca" or style then
		ret = '<span'
		if codi ~= "ca" then
			ret = ret .. ' lang="' .. codi .. '"'
		end
		if style then
			ret = ret .. ' style="' .. style .. '"'
		end
		ret = ret .. '>' .. text .. '</span>'
	end
	
    return ret
end

-- Cerca el nom de llengua definit a /taula o en la llibreria de MediaWiki
function p.nom(codi)
    if type(codi) == "table" then codi = codi.args[1] end -- des de plantilles via invoke o des de mòduls via require
    if codi == nil then
        return
    end
    local llenguaTaula = codis[codi]
    local nom = nil
    if llenguaTaula then
        nom = llenguaTaula.nom
    end
    if nom == nil then
        nom = mw.language.fetchLanguageName(codi, 'ca') -- ca = nom en català
    end
    if nom == nil or nom == "" then
        return codi
    end
    return nom
end

return p