Modulo Lua per svolgere le funzioni del template {{Portale}}


require('strict')

--esportazione delle funzioni del modulo
local p = {}

-- testo per il messaggio di errore se non ci sono parametri o sono tutti non esistenti
local novalid_parameter = {
	'Il [[Template:Portale]] necessita di almeno un argomento!',
	'Non sono stati inseriti portali validi nel [[Template:Portale]]'
}

-- Spazio da lasciare tra un portale e il successivo
local portal_gap = '8px';
-- layout per i portali (dato che le stringhe saranno usate in una funzione mw.ustring.format 
-- la coppia di caratteri '%s' è il segnaposto per una stringa, mentre per inserire il 
-- carattere % normalmente lo si deve inserire raddoppiato
local portal_half = '<div style="flex-basis: calc( 100%% / 2 - ' .. portal_gap .. ' / 2 );">%s</div>';
local portal_third = '<div style="flex-basis: calc( 100%% / 3 - ' .. portal_gap .. ' * 2/3 );">%s</div>';
local row_of_2 = portal_half .. portal_half;
local row_of_3 = portal_third .. portal_third .. portal_third;
local row_portals = {
	--1 portale (segnaposto vuoto, è gestito a parte)
	'',
	-- 2 portali
	row_of_2, 
	-- 3 portali
	row_of_3,
	--4 portali
	row_of_2 .. row_of_2,
	-- 5 portali
	row_of_3 .. row_of_2,
	--6 portali
	row_of_3 .. row_of_3
}

-- Stringhe specifiche per alcuni portali, quando questi sono gli unici del template
local single_portal = {
	['Astronomia'] = "accedi alle voci di Wikipedia che trattano di astronomia e astrofisica",
	['Chimica'] = "il portale della scienza della composizione, delle proprietà e delle trasformazioni della materia",
	['Comunità'] = "entra nella comunità degli autori di Wikipedia",
	['Festival di Sanremo'] = "accedi alle voci di Wikipedia che parlano del Festival di Sanremo",
	['I simpson'] = "accedi alle voci di Wikipedia su I simpson",
	['LGBTQ'] = "le voci di Wikipedia dedicate al mondo gay, lesbico, bisex, trans e queer",
	['Oggetti del profondo cielo'] = "accedi alle voci di Wikipedia che trattano di oggetti non stellari",
	['Portali'] = "accedi ai [[WP:Portale|portali]] di Wikipedia",
	['Progetti'] = "partecipa ai [[WP:Progetto|progetti]] di Wikipedia",
	['Punk'] = "accedi alle voci di Wikipedia che parlano di musica punk",
	['Seconda guerra mondiale'] = 'accedi alle voci di Wikipedia che parlano della seconda guerra mondiale',
	['Sistema solare'] = "accedi alle voci di Wikipedia sugli oggetti del Sistema solare",
	['Stelle'] = "accedi alle voci di Wikipedia che trattano di stelle e costellazioni",
	['Telematica'] = "accedi alle voci di Wikipedia che parlano di reti, telecomunicazioni e protocolli di rete",
--geografia
	['Africa Orientale'] = "accedi alle voci di Wikipedia che parlano dell'Africa Orientale",
	['Albania'] = "accedi alle voci di Wikipedia che parlano dell'Albania",
	['Algeria'] = "accedi alle voci di Wikipedia che parlano dell'Algeria",
	['America'] = "accedi alle voci di Wikipedia che parlano delle Americhe",
	['Nordafrica'] = "accedi alle voci di Wikipedia che parlano del Nordafrica",
	['Unione Europea'] = "accedi alle voci di Wikipedia che trattano l'Unione Europea",
	['Unione europea'] = "accedi alle voci di Wikipedia che trattano l'Unione europea",
	['Antartide'] = "accedi alle voci di Wikipedia che parlano dell'Antartide",
	['Argentina'] = "accedi alle voci di Wikipedia che parlano dell'Argentina",
	['Arizona'] = "accedi alle voci di Wikipedia che parlano dell'Arizona",
	['Armenia'] = "accedi alle voci di Wikipedia che parlano dell'Armenia",
	['Armenia'] = "accedi alle voci di Wikipedia che parlano dell'Armenia",
	['Artide'] = "accedi alle voci di Wikipedia che parlano dell'Artide",
	['Asia'] = "accedi alle voci di Wikipedia che parlano dell'Asia",
	['Austria'] = "accedi alle voci di Wikipedia che parlano dell'Austria",
	['Azerbaigian'] = "accedi alle voci di Wikipedia che parlano dell'Azerbaigian",
	['Bangladesh'] = "accedi alle voci di Wikipedia che parlano del Bangladesh",
	['Belgio'] = "accedi alle voci di Wikipedia che parlano del Belgio",
	['Bergamo'] = "accedi alle voci di Wikipedia su Bergamo e sul suo territorio",
	['Bhutan'] = "accedi alle voci di Wikipedia che parlano del Bhutan",
	['Bielorussia'] = "accedi alle voci di Wikipedia che parlano della Bielorussia",
	['Birmania'] = "accedi alle voci di Wikipedia che parlano della Birmania",
	['Bolivia'] = "accedi alle voci di Wikipedia che parlano della Bolivia",
	['Bosnia ed Erzegovina'] = "accedi alle voci di Wikipedia che parlano della Bosnia ed Erzegovina",
	['Brasile'] = "accedi alle voci di Wikipedia che parlano del Brasile",
	['Bulgaria'] = "accedi alle voci di Wikipedia che parlano della Bulgaria",
	['California'] = "accedi alle voci di Wikipedia che parlano della California",
	['Cambogia'] = "accedi alle voci di Wikipedia che parlano della Cambogia",
	['Canada'] = "accedi alle voci di Wikipedia che parlano del Canada",
	['Cile'] = "accedi alle voci di Wikipedia che parlano del Cile",
	['Cina'] = "accedi alle voci di Wikipedia che parlano della Cina",
	['Città del Vaticano'] = "accedi alle voci di Wikipedia che parlano della Città del Vaticano",
	['Colombia'] = "accedi alle voci di Wikipedia che parlano della Colombia",
	['Corea'] = "accedi alle voci di Wikipedia che parlano della Corea",
	['Corea del Nord'] = "accedi alle voci di Wikipedia che parlano della Corea del Nord",
	['Corea del Sud'] = "accedi alle voci di Wikipedia che parlano della Corea del Sud",
	['Corsica'] = "accedi alle voci di Wikipedia che parlano della Corsica",
	['Costa Rica'] = "accedi alle voci di Wikipedia che parlano della Costa Rica",
	['Croazia'] = "accedi alle voci di Wikipedia che parlano della Croazia",
	['Dakota del Sud'] = "accedi alle voci di Wikipedia che parlano del Dakota del Sud",
	['Danimarca'] = "accedi alle voci di Wikipedia che parlano della Danimarca",
	['Ecuador'] = "accedi alle voci di Wikipedia che parlano dell'Ecuador",
	['Estonia'] = "accedi alle voci di Wikipedia che parlano dell'Estonia",
	['Europa'] = "accedi alle voci di Wikipedia che parlano dell'Europa",
	['Filippine'] = "accedi alle voci di Wikipedia che parlano delle Filippine",
	['Finlandia'] = "accedi alle voci di Wikipedia che parlano della Finlandia",
	['Francia'] = "accedi alle voci di Wikipedia che parlano della Francia",
	['Georgia'] = "accedi alle voci di Wikipedia che parlano della Georgia",
	['Germania'] = "accedi alle voci di Wikipedia che parlano della Germania",
	['Giappone'] = "accedi alle voci di Wikipedia che parlano del Giappone",
	['Gilgit-Baltistan'] = "accedi alle voci di Wikipedia che parlano del Gilgit-Baltistan",
	['Grecia'] = "accedi alle voci di Wikipedia che parlano della Grecia",
	['Guatemala'] = "accedi alle voci di Wikipedia che parlano del Guatemala",
	['Honduras'] = "accedi alle voci di Wikipedia che parlano dell’Honduras",
	['India'] = "accedi alle voci di Wikipedia che parlano dell'India",
	['Iran'] = "accedi alle voci di Wikipedia che parlano dell'Iran",
	['Irlanda'] = "accedi alle voci di Wikipedia che parlano dell'Irlanda",
	['Islanda'] = "accedi alle voci di Wikipedia che parlano dell'Islanda",
	['Israele'] = "accedi alle voci di Wikipedia che parlano d'Israele",
	['Kazakistan'] = "accedi alle voci di Wikipedia che parlano del Kazakistan",
	['Kirghizistan'] = "accedi alle voci di Wikipedia che parlano del Kirghizistan",
	['L\'Aquila'] = "accedi alle voci di Wikipedia che parlano dell'Aquila",
	['Lettonia'] = "accedi alle voci di Wikipedia che parlano della Lettonia",
	['Libano'] = "accedi alle voci di Wikipedia che parlano del Libano",
	['Lituania'] = "accedi alle voci di Wikipedia che parlano della Lituania",
	['Lussemburgo'] = "accedi alle voci di Wikipedia che parlano del Lussemburgo",
	['Macedonia del Nord'] = "accedi alle voci di Wikipedia che parlano della Macedonia del Nord",
	['Madagascar'] = "accedi alle voci di Wikipedia che parlano del Madagascar",
	['Maldive'] = "accedi alle voci di Wikipedia che parlano delle Maldive",
	['Marocco'] = "accedi alle voci di Wikipedia che parlano del Marocco",
	['Messico'] = "accedi alle voci di Wikipedia che parlano del Messico",
	['Moldavia'] = "accedi alle voci di Wikipedia che parlano della Moldavia",
	['Montana'] = "accedi alle voci di Wikipedia che parlano del Montana",
	['Montenegro'] = "accedi alle voci di Wikipedia che parlano del Montenegro",
	['Norvegia'] = "accedi alle voci di Wikipedia che parlano della Norvegia",
	['Nuovo Messico'] = "accedi alle voci di Wikipedia che parlano del Nuovo Messico",
	['Ohio'] = "accedi alle voci di Wikipedia che parlano dell'Ohio",
	['Paesi Bassi'] = "accedi alle voci di Wikipedia che parlano del Paesi Bassi",
	['Pakistan'] = "accedi alle voci di Wikipedia che parlano del Pakistan",
	['Perù'] = "accedi alle voci di Wikipedia che parlano del Perù",
	['Polonia'] = "accedi alle voci di Wikipedia che parlano della Polonia",
	['Portogallo'] = "accedi alle voci di Wikipedia che parlano del Portogallo",
	['Principato di Monaco'] = "accedi alle voci di Wikipedia che parlano del Principato di Monaco",
	['Regno Unito'] = "accedi alle voci di Wikipedia che parlano del Regno Unito",
	['Repubblica Ceca'] = "accedi alle voci di Wikipedia che parlano della Repubblica Ceca",
	['Romania'] = "accedi alle voci di Wikipedia che parlano della Romania",
	['Russia'] = "accedi alle voci di Wikipedia che parlano della Russia",
	['Scozia'] = "accedi alle voci di Wikipedia che parlano della Scozia",
	['Serbia'] = "accedi alle voci di Wikipedia che parlano della Serbia",
	['Slovacchia'] = "accedi alle voci di Wikipedia che parlano della Slovacchia",
	['Slovenia'] = "accedi alle voci di Wikipedia che parlano della Slovenia",
	['Spagna'] = "accedi alle voci di Wikipedia che parlano della Spagna",
	['Stati Uniti d\'America'] = "accedi alle voci di Wikipedia che parlano degli Stati Uniti d'America",
	['Svezia'] = "accedi alle voci di Wikipedia che parlano della Svezia",
	['Svizzera'] = "accedi alle voci di Wikipedia che parlano della Svizzera",
	['Texas'] = "accedi alle voci di Wikipedia che parlano del Texas",
	['Thailandia'] = "accedi alle voci di Wikipedia che parlano della Thailandia",
	['Ticino'] = "accedi alle voci di Wikipedia che parlano del Ticino",
	['Turchia'] = "accedi alle voci di Wikipedia che parlano della Turchia",
	['Turkmenistan'] = "accedi alle voci di Wikipedia che parlano del Turkmenistan",
	['Ucraina'] = "accedi alle voci di Wikipedia che parlano dell'Ucraina",
	['Ungheria'] = "accedi alle voci di Wikipedia che parlano dell'Ungheria",
	['Uruguay'] = "accedi alle voci di Wikipedia che parlano dell'Uruguay",
	['Uzbekistan'] = "accedi alle voci di Wikipedia che parlano dell'Uzbekistan",
	['Valle del Nilo'] = "accedi alle voci di Wikipedia che parlano della Valle del Nilo",
	['Venezuela'] = "accedi alle voci di Wikipedia che parlano del Venezuela",
	['Vietnam'] = "accedi alle voci di Wikipedia che parlano del Vietnam",
--provincie italiane
	['Provincia di Agrigento'] = "accedi alle voci di Wikipedia che parlano della Provincia di Agrigento",
	['Provincia di Alessandria'] = "accedi alle voci di Wikipedia che parlano della Provincia di Alessandria",
	['Provincia di Ancona'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ancona",
	['Provincia di Arezzo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Arezzo",
	['Provincia di Ascoli Piceno'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ascoli Piceno",
	['Provincia di Asti'] = "accedi alle voci di Wikipedia che parlano della Provincia di Asti",
	['Provincia di Avellino'] = "accedi alle voci di Wikipedia che parlano della Provincia di Avellino",
	['Provincia di Bari'] = "accedi alle voci di Wikipedia che parlano della Provincia di Bari",
	['Provincia di Barletta-Andria-Trani'] = "accedi alle voci di Wikipedia che parlano della Provincia di Barletta-Andria-Trani",
	['Provincia di Belluno'] = "accedi alle voci di Wikipedia che parlano della Provincia di Belluno",
	['Provincia di Benevento'] = "accedi alle voci di Wikipedia che parlano della Provincia di Benevento",
	['Provincia di Bergamo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Bergamo",
	['Provincia di Biella'] = "accedi alle voci di Wikipedia che parlano della Provincia di Biella",
	['Provincia di Bologna'] = "accedi alle voci di Wikipedia che parlano della Provincia di Bologna",
	['Provincia di Bolzano'] = "accedi alle voci di Wikipedia che parlano della Provincia di Bolzano",
	['Provincia di Brescia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Brescia",
	['Provincia di Brindisi'] = "accedi alle voci di Wikipedia che parlano della Provincia di Brindisi",
	['Provincia di Cagliari'] = "accedi alle voci di Wikipedia che parlano della Provincia di Cagliari",
	['Provincia di Caltanissetta'] = "accedi alle voci di Wikipedia che parlano della Provincia di Caltanissetta",
	['Provincia di Campobasso'] = "accedi alle voci di Wikipedia che parlano della Provincia di Campobasso",
	['Provincia di Carbonia-Iglesias'] = "accedi alle voci di Wikipedia che parlano della Provincia di Carbonia-Iglesias",
	['Provincia di Caserta'] = "accedi alle voci di Wikipedia che parlano della Provincia di Caserta",
	['Provincia di Catania'] = "accedi alle voci di Wikipedia che parlano della Provincia di Catania",
	['Provincia di Catanzaro'] = "accedi alle voci di Wikipedia che parlano della Provincia di Catanzaro",
	['Provincia di Chieti'] = "accedi alle voci di Wikipedia che parlano della Provincia di Chieti",
	['Provincia di Como'] = "accedi alle voci di Wikipedia che parlano della Provincia di Como",
	['Provincia di Cosenza'] = "accedi alle voci di Wikipedia che parlano della Provincia di Cosenza",
	['Provincia di Cremona'] = "accedi alle voci di Wikipedia che parlano della Provincia di Cremona",
	['Provincia di Crotone'] = "accedi alle voci di Wikipedia che parlano della Provincia di Crotone",
	['Provincia di Cuneo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Cuneo",
	['Provincia di Enna'] = "accedi alle voci di Wikipedia che parlano della Provincia di Enna",
	['Provincia di Fermo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Fermo",
	['Provincia di Ferrara'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ferrara",
	['Provincia di Firenze'] = "accedi alle voci di Wikipedia che parlano della Provincia di Firenze",
	['Provincia di Foggia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Foggia",
	['Provincia di Forlì-Cesena'] = "accedi alle voci di Wikipedia che parlano della Provincia di Forlì-Cesena",
	['Provincia di Frosinone'] = "accedi alle voci di Wikipedia che parlano della Provincia di Frosinone",
	['Provincia di Genova'] = "accedi alle voci di Wikipedia che parlano della Provincia di Genova",
	['Provincia di Gorizia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Gorizia",
	['Provincia di Grosseto'] = "accedi alle voci di Wikipedia che parlano della Provincia di Grosseto",
	['Provincia di Imperia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Imperia",
	['Provincia di Isernia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Isernia",
	['Provincia di La Spezia'] = "accedi alle voci di Wikipedia che parlano della Provincia di La Spezia",
    ['Provincia dell\'Aquila'] = "accedi alle voci di Wikipedia che parlano della Provincia dell\'Aquila",
	['Provincia di Latina'] = "accedi alle voci di Wikipedia che parlano della Provincia di Latina",
	['Provincia di Lecce'] = "accedi alle voci di Wikipedia che parlano della Provincia di Lecce",
	['Provincia di Lecco'] = "accedi alle voci di Wikipedia che parlano della Provincia di Lecco",
	['Provincia di Livorno'] = "accedi alle voci di Wikipedia che parlano della Provincia di Livorno",
	['Provincia di Lodi'] = "accedi alle voci di Wikipedia che parlano della Provincia di Lodi",
	['Provincia di Lucca'] = "accedi alle voci di Wikipedia che parlano della Provincia di Lucca",
	['Provincia di Macerata'] = "accedi alle voci di Wikipedia che parlano della Provincia di Macerata",
	['Provincia di Mantova'] = "accedi alle voci di Wikipedia che parlano della Provincia di Mantova",
	['Provincia di Massa-Carrara'] = "accedi alle voci di Wikipedia che parlano della Provincia di Massa-Carrara",
	['Provincia di Matera'] = "accedi alle voci di Wikipedia che parlano della Provincia di Matera",
	['Provincia di Messina'] = "accedi alle voci di Wikipedia che parlano della Provincia di Messina",
	['Provincia di Milano'] = "accedi alle voci di Wikipedia che parlano della Provincia di Milano",
	['Provincia di Modena'] = "accedi alle voci di Wikipedia che parlano della Provincia di Modena",
	['Provincia di Monza e della Brianza'] = "accedi alle voci di Wikipedia che parlano della Provincia di Monza e della Brianza",
	['Provincia di Napoli'] = "accedi alle voci di Wikipedia che parlano della Provincia di Napoli",
	['Provincia di Novara'] = "accedi alle voci di Wikipedia che parlano della Provincia di Novara",
	['Provincia di Nuoro'] = "accedi alle voci di Wikipedia che parlano della Provincia di Nuoro",
	['Provincia di Olbia-Tempio'] = "accedi alle voci di Wikipedia che parlano della Provincia di Olbia-Tempio",
	['Provincia di Oristano'] = "accedi alle voci di Wikipedia che parlano della Provincia di Oristano",
	['Provincia di Padova'] = "accedi alle voci di Wikipedia che parlano della Provincia di Padova",
	['Provincia di Palermo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Palermo",
	['Provincia di Parma'] = "accedi alle voci di Wikipedia che parlano della Provincia di Parma",
	['Provincia di Pavia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pavia",
	['Provincia di Perugia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Perugia",
	['Provincia di Pesaro e Urbino'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pesaro e Urbino",
	['Provincia di Pescara'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pescara",
	['Provincia di Piacenza'] = "accedi alle voci di Wikipedia che parlano della Provincia di Piacenza",
	['Provincia di Pisa'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pisa",
	['Provincia di Pistoia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pistoia",
	['Provincia di Pordenone'] = "accedi alle voci di Wikipedia che parlano della Provincia di Pordenone",
	['Provincia di Potenza'] = "accedi alle voci di Wikipedia che parlano della Provincia di Potenza",
	['Provincia di Prato'] = "accedi alle voci di Wikipedia che parlano della Provincia di Prato",
	['Provincia di Ragusa'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ragusa",
	['Provincia di Ravenna'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ravenna",
	['Provincia di Reggio Calabria'] = "accedi alle voci di Wikipedia che parlano della Provincia di Reggio Calabria",
	['Provincia di Reggio Emilia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Reggio Emilia",
	['Provincia di Rieti'] = "accedi alle voci di Wikipedia che parlano della Provincia di Rieti",
	['Provincia di Rimini'] = "accedi alle voci di Wikipedia che parlano della Provincia di Rimini",
	['Provincia di Roma'] = "accedi alle voci di Wikipedia che parlano della Provincia di Roma",
	['Provincia di Rovigo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Rovigo",
	['Provincia di Salerno'] = "accedi alle voci di Wikipedia che parlano della Provincia di Salerno",
	['Provincia di Medio Campidano'] = "accedi alle voci di Wikipedia che parlano della Provincia di Medio Campidano",
	['Provincia di Sassari'] = "accedi alle voci di Wikipedia che parlano della Provincia di Sassari",
	['Provincia di Savona'] = "accedi alle voci di Wikipedia che parlano della Provincia di Savona",
	['Provincia di Siena'] = "accedi alle voci di Wikipedia che parlano della Provincia di Siena",
	['Provincia di Siracusa'] = "accedi alle voci di Wikipedia che parlano della Provincia di Siracusa",
	['Provincia di Sondrio'] = "accedi alle voci di Wikipedia che parlano della Provincia di Sondrio",
	['Provincia di Taranto'] = "accedi alle voci di Wikipedia che parlano della Provincia di Taranto",
	['Provincia di Teramo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Teramo",
	['Provincia di Terni'] = "accedi alle voci di Wikipedia che parlano della Provincia di Terni",
	['Provincia di Torino'] = "accedi alle voci di Wikipedia che parlano della Provincia di Torino",
	['Provincia di Ogliastra'] = "accedi alle voci di Wikipedia che parlano della Provincia di Ogliastra",
	['Provincia di Trapani'] = "accedi alle voci di Wikipedia che parlano della Provincia di Trapani",
	['Provincia di Trento'] = "accedi alle voci di Wikipedia che parlano della Provincia di Trento",
	['Provincia di Treviso'] = "accedi alle voci di Wikipedia che parlano della Provincia di Treviso",
	['Provincia di Trieste'] = "accedi alle voci di Wikipedia che parlano della Provincia di Trieste",
	['Provincia di Udine'] = "accedi alle voci di Wikipedia che parlano della Provincia di Udine",
	['Provincia di Varese'] = "accedi alle voci di Wikipedia che parlano della Provincia di Varese",
	['Provincia di Venezia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Venezia",
	['Provincia del Verbano-Cusio-Ossola'] = "accedi alle voci di Wikipedia che parlano della Provincia del Verbano-Cusio-Ossola",
	['Provincia di Vercelli'] = "accedi alle voci di Wikipedia che parlano della Provincia di Vercelli",
	['Provincia di Verona'] = "accedi alle voci di Wikipedia che parlano della Provincia di Verona",
	['Provincia di Vibo Valentia'] = "accedi alle voci di Wikipedia che parlano della Provincia di Vibo Valentia",
	['Provincia di Vicenza'] = "accedi alle voci di Wikipedia che parlano della Provincia di Vicenza",
	['Provincia di Viterbo'] = "accedi alle voci di Wikipedia che parlano della Provincia di Viterbo",
-- regioni italiane
	['Abruzzo'] = "accedi alle voci di Wikipedia che parlano dell'Abruzzo",
	['Basilicata'] = "accedi alle voci di Wikipedia che parlano della Basilicata",
	['Campania'] = "accedi alle voci di Wikipedia che parlano della Campania",
	['Calabria'] = "accedi alle voci di Wikipedia che parlano della Calabria",
	['Emilia-Romagna'] = "accedi alle voci di Wikipedia che parlano dell'Emilia-Romagna",
	['Friuli-Venezia Giulia'] = "accedi alle voci di Wikipedia che parlano del Friuli-Venezia Giulia",
	['Lazio'] = "accedi alle voci di Wikipedia che parlano del Lazio",
	['Liguria'] = "accedi alle voci di Wikipedia che parlano della Liguria",
	['Lombardia'] = "accedi alle voci di Wikipedia che parlano della Lombardia",
	['Marche'] = "accedi alle voci di Wikipedia che parlano delle Marche",
	['Molise'] = "accedi alle voci di Wikipedia che parlano del Molise",
	['Piemonte'] = "accedi alle voci di Wikipedia che parlano del Piemonte",
	['Puglia'] = "accedi alle voci di Wikipedia che parlano della Puglia",
	['Sardegna'] = "accedi alle voci di Wikipedia che parlano della Sardegna",
	['Sicilia'] = "accedi alle voci di Wikipedia che parlano della Sicilia",
	['Toscana'] = "accedi alle voci di Wikipedia che parlano della Toscana",
	['Trentino-Alto Adige'] = "accedi alle voci di Wikipedia che parlano del Trentino-Alto Adige",
	['Umbria'] = "accedi alle voci di Wikipedia che parlano dell'Umbria",
	['Valle d\'Aosta'] = "accedi alle voci di Wikipedia che parlano della Valle d\'Aosta",
	['Veneto'] = "accedi alle voci di Wikipedia che parlano del Veneto",
}

-- funzione di utilità per aggiungere elementi a una tabella
local function dump(t, ...)
	local args = {...}
	for _, s in ipairs(args) do
		table.insert(t, s)
	end
end

-- Wrapper di mw.title.exists, verifica sia che name sia valido, sia che esista
local function titleExists(name)
	local title = mw.title.new(name)
	return title and title.exists
end

-- restituisce una categoria di errore solo in ns0
local function get_error_category()
	return mw.title.getCurrentTitle().namespace == 0 and
		   '[[Categoria:Errori di compilazione del template Portale]]' or ''
end

-- funzione princpale
function p.portale(frame)
	local getArgs = require('Module:Arguments').getArgs
	local args = getArgs(frame, {removeBlanks = false})
	local lang = mw.language.getContentLanguage()
	local portals = {}
	local bad_portals = {}
	-- tabella per raccogliere gli errori
	local errors_msg = {}

	-- raccoglie in portals e bad_portals i nomi dei portali passati al modulo,
	-- ignorando quelli valorizzati a stringa vuota
	for i, arg in ipairs(args) do
		if arg ~= '' then
			if #portals < 6 then
				local ucarg = lang:ucfirst(arg)
				if titleExists('Portale:' .. ucarg) then
					table.insert(portals, { ucname=ucarg, name=arg })
				else
					table.insert(bad_portals, ucarg)
				end
			else
				dump(errors_msg, 'Il template accetta al massimo sei portali')
				break
			end
		end
	end

	-- ritorna un messaggio di errore se non sono rimasti portali validi
	if #portals == 0 then
		return mw.getCurrentFrame():expandTemplate({
					title = 'avviso',
					args = { tipo = 'importante',
							 testo= novalid_parameter[(#bad_portals == 0 and 1) or 2]
							}
					}) .. get_error_category()
	end
	-- ordina alfabeticamente i nomi
	table.sort(portals, function(a, b) return a.ucname < b.ucname end)
	local reply = {
		'<div class="noprint" style="width:100%; padding: 3px 0; display: flex; flex-wrap: wrap; row-gap: 4px; column-gap: ' .. portal_gap .. '; box-sizing: border-box;">'
	}
	-- Se un solo portale valido tratto a parte
	if #portals == 1 then
		local ucname = portals[1].ucname
		dump(reply, '<div style="flex-grow: 1">', mw.getCurrentFrame():expandTemplate({
				title = 'Occhiello',
				args = { icona = portals[1].ucname,
						 titolo = mw.ustring.format('[[Portale:%s|Portale %s]]', ucname, ucname),
						 frase = single_portal[ucname] or mw.ustring.format('accedi alle voci di Wikipedia che trattano di %s', portals[1].name)
					}
				}), '</div>')
	else -- da 2 a 6 portali
		-- genero tutti gli occhielli di collegamento in una lista
		local text = {}
		for _,portal in ipairs(portals) do
			text[#text+1] = mw.getCurrentFrame():expandTemplate({
					title = 'Occhiello',
					args = { icona = portal.ucname,
							 titolo = mw.ustring.format('[[Portale:%s|Portale %s]]', portal.ucname, portal.ucname)
						}
					})
		end
		-- carica gli occhielli generati nella tabella di layout
		dump(reply, mw.ustring.format(row_portals[#portals], unpack(text)))
	end
	dump(reply, '</div>')
	-- aggiunge i messaggi di errore per portali non esistenti
	if #bad_portals > 0 then
		if #bad_portals == 1 then
			dump(errors_msg, mw.ustring.format('Il portale %s non esiste', bad_portals[1]))
		else
			dump(errors_msg, mw.ustring.format('I portali: %s non esistono', mw.text.listToText(bad_portals) ))
		end
	end
	for pos, msg in ipairs(errors_msg) do
		errors_msg[pos] = mw.ustring.format('<strong class="error">%s</strong>', msg)
	end
	local error_msg = table.concat(errors_msg, '<br />')
	if #errors_msg > 0 then
		error_msg = error_msg .. get_error_category()
	end
	return table.concat(reply) .. error_msg
end

return p