Sari la conținut

Modul:Lang

De la Wikipedia, enciclopedia liberă

local p = {}
local getArgs = require('Modul:Arguments').getArgs
local wikidata = require('Modul:Wikidata')

p.fromArgs = function(langISOcode, languageDir, langText, italic)
	local span = mw.html.create('span')
	span:attr('lang', langISOcode)
	span:attr('translate', 'no')
	if languageDir then span:attr('dir', languageDir) end
	if italic then span:css('font-style', 'italic') end
	span:wikitext(langText)
	return tostring(span)
end

p.fromFrame = function(frame)
	local args = getArgs(frame)
	local langId = args[1]
	local langISOCode = langId
	local languageRTL = args['rtl']
	local italic = true
	if mw.ustring.match(langId, 'Q?%d+') then
		langISOCode = wikidata.findOneValueNoRef('P218', langId) or wikidata.findOneValueNoRef('P219', langId) or wikidata.findOneValueNoRef('P305', langId)
		if languageAlphabets and languageAlphabets[1] then
			languageDirectionalities = wikidata.getBestEntityIdsList(languageAlphabets[1], 'P1406')
			if languageDirectionalities and languageDirectionalities[1] then
				languageRTL = (languageDirectionalities[1] == 7333457)
			end
		end
	end
	local italicarg = args.italic or args.i
	if italicarg == 'no' or italicarg == 'false' or italicarg == 'nu' or italicarg == 'n' then
		italic = false
	end
	
	return p.fromArgs(langISOCode, languageRTL and 'rtl', args[2], italic)
end

return p