Módulo:Ficha de localidad

De Hispanopedia

Este módulo pretende implementar {{Ficha de país}}, {{Ficha de estado desaparecido}} y {{Ficha de entidad subnacional}} a través de Lua.

Funciones

Transclusiones con ejemplos

País

Actual
Estados Unidos de América
United States of America




Lema: In God we trust
(inglés: «En Dios confiamos»)  [1]
Himno: The Star-Spangled Banner
(inglés: «La bandera tachonada de estrellas»)
Archivo:Star Spangled Banner instrumental.ogg

Capital Washington D. C.
Ciudad más poblada Nueva York
40°43′N 74°00′O / 40.717, -74.000
Idiomas oficiales Ninguno a nivel federal [2]
Gentilicio estadounidense
estadunidense
norteamericano, -a
Forma de gobierno República federal presidencialista
 • Presidente Donald Trump
 • Vicepresidente Mike Pence
Independencia
 • Declarada
 • Reconocida
 • 50.º estado
de Gran Bretaña
4 de julio de 1776
3 de septiembre de 1783
21 de agosto de 1959
Superficie Puesto 4.º
 • Total 9 147 593 km²[n 1]
 • Agua (%) 2,2
Fronteras 12 048 km
Línea de costa 19 924 km
Población total Puesto 3.º
 • Estimación (2017) 325 719 178 hab.
 • Censo (2010) 309 349 689 hab.
 • Densidad (est.) 32,8 hab./km²
PIB (PPA) Puesto 2.º
 • Total (2020) Decrecimiento USD 21,345 billones
 • Per cápita Crecimiento USD 62 152
PIB (nominal) Puesto 1.º
 • Total (2020) Decrecimiento USD 21,345 billones
 • Per cápita Crecimiento USD 62 152
IDH (2018) Crecimiento 0.920 (15.º) – Muy alto
Coeficiente de Gini 39,0 medio (2017)
Moneda Dólar estadounidense ($, USD)
Huso horario UTC-10 a UTC-5
 • En verano UTC-9 a UTC-4
Código ISO 840 / USA / US [3]
Dominio internet .us.mil.gov
Prefijo telefónico +1
Prefijo radiofónico AAA-ALZ, KAA-KZZ, NAA-NZZ, WAA-WZZ
Siglas país para aeronaves N
Siglas país para automóviles USA
  1. El lema tradicional es E Pluribus Unum (latín: «De muchos, uno»).
  2. El inglés es el idioma oficial en 32 estados, pero no se reconoce un idioma oficial a nivel federal. El español, el francés cajún y el hawaiano son reconocidos oficialmente por varios estados.
  3. Así como AS, GU, MP, PR, UM y VI para sus dependencias.
  4. Miembro permanente.
Propuesta
Ficha de localidad




Lema: In God we trust
(inglés: «En Dios confiamos»)  [1]
Himno: The Star-Spangled Banner
(inglés: «La bandera tachonada de estrellas»)
Capital Washington D. C.
Ciudad más poblada Nueva York
40°43′N 74°00′O / 40.717, -74.000
Idiomas oficiales Ninguno a nivel federal [2]
Gentilicio estadounidense
estadunidense
norteamericano, -a
Forma de gobierno República federal presidencialista
Presidente Donald Trump
Vicepresidente Mike Pence
Independencia
 • Declarada
 • Reconocida
 • 50.º estado
de Gran Bretaña
4 de julio de 1776
3 de septiembre de 1783
21 de agosto de 1959
Superficie Puesto 4º
Total 9 147 593 km²
Agua 2,2% del total
Fronteras 12 048 km
Línea de costa 19 924 km
Población Puesto 3º
Censo (2010) 309 349 689 hab.
Estimación (2017) 325 719 178 hab.
Densidad (est.) 35,6 hab./km²
PIB (PPA) Puesto 2º
Total (2020) Decrecimiento USD 21,345 billones
Per cápita Crecimiento USD 62 152
PIB (nominal) Puesto 1º
Total (2020) Decrecimiento USD 21,345 billones
Per cápita Crecimiento USD 62 152
IDH (2018) Crecimiento 0.920 (15.º) – Muy alto
Coeficiente de Gini 39,0 medio (2017)
Moneda Dólar estadounidense ($, USD)
Huso horario UTC-10 a UTC-5
En verano UTC-9 a UTC-4
Código ISO 840 / USA / US [3]
Dominio internet .us.mil.gov
Prefijo telefónico +1
Prefijo radiofónico AAA-ALZ, KAA-KZZ, NAA-NZZ, WAA-WZZ
Siglas país para aeronaves N
Siglas país para automóviles USA
  1. El lema tradicional es E Pluribus Unum (latín: «De muchos, uno»).
  2. El inglés es el idioma oficial en 32 estados, pero no se reconoce un idioma oficial a nivel federal. El español, el francés cajún y el hawaiano son reconocidos oficialmente por varios estados.
  3. Así como AS, GU, MP, PR, UM y VI para sus dependencias.
  4. Miembro permanente.
Propuesta (sin datos locales)
Ficha de localidad
Población total  hab.


Entidad subnacional

Actual
Santiago
Santiago de la Nueva Extremadura
Capital de Chile

De arriba a abajo, de izquierda a derecha.
1º fila: Panorámica de Santiago. 2º fila: Estatua de la Inmaculada Concepción en el Santuario del cerro San Cristóbal, y Sanhattan, principal distrito financiero de la ciudad. 3º fila: Fuente de Neptuno en el cerro Santa Lucía, y Biblioteca Nacional. 4º fila: Casas centrales de la Universidad de Chile y Pontificia Universidad Católica de Chile, principales núcleos académicos del país. 5º fila: Palacio de La Moneda, sede del poder ejecutivo de Chile.




Mapa
Mapa interactivo
Idioma oficial Castellano
Entidad Capital de Chile
 • País Bandera de Chile Chile
 • Región Bandera de Metropolitana de Santiago Metropolitana de Santiago
 • Comunas 40 comunas
Eventos históricos  
 • Fundación 12 de febrero de 1541 por Pedro de Valdivia (484 años)[n 3]
 • Nombre Santiago de Nueva Extremadura
Superficie  
 • Total 837,89[2] km²
Altitud  
 • Media 520 m s. n. m.
Clima Mediterráneo continentalizado Csa
Población (2017)  
 • Total 6 254 314 hab.[n 4]
 • Densidad 8497 hab./km²
Gentilicio Santiaguino, -na
Capitalino, -na
IDH (2022) 0,883 [4] (1.º) – Muy alto
Huso horario UTC–4 (Abr. - Sept.)
 • en verano

UTC–3 (Sept. - Abr.)

[5][6]
Patrono(a) Santiago el Mayor
Miembro de: Unión de Ciudades Capitales Iberoamericanas, Mercociudades
Propuesta
Ficha de localidad
Santiago de la Nueva Extremadura
Capital de Chile

De arriba a abajo, de izquierda a derecha.
1º fila: Panorámica de Santiago. 2º fila: Estatua de la Inmaculada Concepción en el Santuario del cerro San Cristóbal, y Sanhattan, principal distrito financiero de la ciudad. 3º fila: Fuente de Neptuno en el cerro Santa Lucía, y Biblioteca Nacional. 4º fila: Casas centrales de la Universidad de Chile y Pontificia Universidad Católica de Chile, principales núcleos académicos del país. 5º fila: Palacio de La Moneda, sede del poder ejecutivo de Chile.


Santiago de Chile#Símbolos de la ciudad

Santiago de Chile#Símbolos de la ciudad

Mapa
Mapa interactivo
Superficie total 837,89[2] km²
Población total 6 254 314 hab. (2017)
Densidad 8497 hab./km²
IDH (2022) 0,883 [4] (1.º) – Muy alto
Huso horario UTC–4 (Abr. - Sept.)
En verano

UTC–3 (Sept. - Abr.)

[5][6]
Prefijo radiofónico
Propuesta (sin datos locales)
Ficha de localidad
Entidad subnacional
Población total  hab.


Estado desaparecido

Actual
Imperium Romanum
Senatus Populusque Romanus
Res publica populi romani
27 a. C.-476/1453 d. C.[9][10]

Bandera


El Imperio romano en el año 117, cuando alcanzó su máxima extensión, bajo el gobierno del emperador hispano Trajano.
Capital Roma (27 a. C.-330)
Milán (286–402)
Rávena (402–476)
Nicomedia (286–330)
Constantinopla (330-1453)
Entidad Entidad desaparecida
Religión Religión romana (27 a. C.-380)
Cristianismo (380-1453)
Moneda Denario, sestercio, sólido bizantino
Período histórico Edad Antigua y Edad Media
 • 2 de septiembre de
31 a. C.
Batalla de Accio
 • 16 de enero
de 27 a. C.
Octavio es proclamado Augusto
 • 29 de mayo
de 1453
Caída de Constantinopla por los turcos otomanos
Forma de gobierno Principado
(27 a. C.-235 d. C.)
Anarquía militar (235-284)
Dominado o imperio absoluto (284-1453)
Legislatura Senado romano
Precedido por
Sucedido por
República romana
Imperio romano de Occidente
Imperio bizantino
Propuesta
Ficha de localidad


27 a. C.-476/1453 d. C.[11][12]

Capital Roma (27 a. C.-330)
Milán (286–402)
Rávena (402–476)
Nicomedia (286–330)
Constantinopla (330-1453)
Idioma oficial Latín, Griego
Idiomas hablados
Forma de gobierno Principado
(27 a. C.-235 d. C.)
Anarquía militar (235-284)
Dominado o imperio absoluto (284-1453)
Emperador César Augusto (27 a. C.-14 d. C.)
Constantino XI (1449-1453)
Cónsul César Augusto (27-23 a. C.)
León VI el Sabio (886-912)
Religión Religión romana (27 a. C.-380)
Cristianismo (380-1453)
Período histórico Edad Antigua y Edad Media
Octavio es proclamado Augusto 16 de enero de 27 a. C.
Constantino I declara Constantinopla nueva capital imperial 11 de mayo de 330
División definitiva entre Occidente y Oriente 17 de enero de 395
Fin del Imperio de Occidente 4 de septiembre de 476
Caída de Constantinopla por los turcos otomanos 29 de mayo de 1453
Superficie 6 500 000 km² (117)
Población 88 000 000 hab. (117)
13,53 hab/km²
Moneda Denario, sestercio, sólido bizantino
Membresía
Propuesta (sin datos locales)
Ficha de localidad


Lista completa

Referencias

  1. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  2. 2,0 2,1 Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  3. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  4. 4,0 4,1 Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  5. 5,0 5,1 Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  6. 6,0 6,1 Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  7. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  8. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  9. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  10. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  11. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').
  12. Error de Lua en Módulo:Citas en la línea 276: bad argument #2 to 'inNamespaces' (unrecognized namespace number '100').

Notas

  1. Según el organismo gubernamental de la Oficina del Censo de los Estados Unidos, dependiente del Departamento de Comercio, el país tiene una superficie de 9 371 174 kilómetros cuadrados, lo que lo sitúa como el cuarto país del mundo en superficie. En cambio, la Agencia Central de Inteligencia (CIA) en su publicación The World Factbook sitúa la superficie en 9 833 517 kilómetros cuadrados, pues incluye aguas territoriales y zonas costeras lo que colocaría al país en tercera posición por delante de China. Por su parte la Enciclopedia Británica da la cifra de 9 522 055 km², ocupando la cuarta posición.
  2. Según el organismo gubernamental de la Oficina del Censo de los Estados Unidos, dependiente del Departamento de Comercio, el país tiene una superficie de 9 371 174 kilómetros cuadrados, lo que lo sitúa como el cuarto país del mundo en superficie. En cambio, la Agencia Central de Inteligencia (CIA) en su publicación The World Factbook sitúa la superficie en 9 833 517 kilómetros cuadrados, pues incluye aguas territoriales y zonas costeras lo que colocaría al país en tercera posición por delante de China. Por su parte la Enciclopedia Británica da la cifra de 9 522 055 km², ocupando la cuarta posición.
  3. Una investigación señala que el acta de fundación fue firmado el 12 de febrero y el acto de fundación fue realizado el 24 de febrero de 1541.[1]
  4. 4,0 4,1 La población de Santiago se calculó utilizando la base de microdatos del censo chileno de 2017. Se tomaron las manzanas asociadas a las siguientes localidades urbanas: todas las de la provincia de Santiago (excepto Ciudad del Valle, El Cambucho, El Maitén, Lo Aguirre y Noviciado Alto), Puente Alto, Pirque, La Obra-Las Vertientes, Las Canteras, Chamisero, Estación Colina, Valle Grande, Chicauma, San Bernardo, Padre Hurtado y Peñaflor. Se incluyen también manzanas no asignadas de las comunas de la provincia de Santiago, San Bernardo, Puente Alto, Padre Hurtado y Peñaflor.[3] Error en la cita: Etiqueta <ref> no válida; el nombre «poblacion2017» está definido varias veces con contenidos diferentes
  5. Una investigación señala que el acta de fundación fue firmado el 12 de febrero y el acto de fundación fue realizado el 24 de febrero de 1541.[8]
  6. El Estado romano, a diferencia de los Estados modernos, no disponía de un solo nombre. Algunas formas empleadas para referirse al Imperio romano que eran utilizadas entre los romanos y los propios griegos son Res publica Populi Romani, Imperium Romanorum (en griego: Βασιλεία τῶν Ῥωμαίων, Basileíā tôn Rhōmaíōn [‘dominio de los romanos’]) y Romania. Res publica, concepto latino utilizado tanto en la época republicana como en la imperial, cuyo significado literal es ‘cosa pública’, es el origen de la palabra «república» y, conceptualmente, de la inglesa «commonwealth», cuyo uso se vincula generalmente con los conceptos actuales de sector público y Estado, y con los conceptos tradicionales de bien común y procomún. Imperium Romanum (o Romanorum) se refiere a la extensión territorial de la autoridad romana. Populus Romanus (o Romæ; ‘el pueblo romano’ o ‘de Roma’) fue a menudo utilizado para referirse al Estado romano en los asuntos relacionados con las demás naciones. El término Romania (en griego antiguo: Ῥωμανία, romanizado: Rhômania), inicialmente coloquial para referirse al imperio, así como nombre colectivo para sus habitantes, aparece en las fuentes griegas y latinas del siglo IV en adelante y fue empleado por el Imperio bizantino (véase R. L. Wolff, «Romania: el imperio latino de Constantinopla» in Speculum 23 (1948), pp. 1-34 y más concretamente pp. 2-3).

local p = {}

local ModuloWikidata	= require('Módulo:Wikidata')
local ModuloFormatos	= require('Módulo:Wikidata/Formatos')
local ModuloPaginas		= require('Módulo:Páginas')
local ModuloArgs   		= require('Módulo:Argumentos')
local infobox			= require('Módulo:Ficha').infobox
local elementoTabla		= require('Módulo:Tablas').elemento
local obtenerIdioma		= require('Módulo:Obtener idioma').obtenerIdioma
local enlazar			= require('Módulo:Formato_texto').enlazar2
local argumentos		= ModuloArgs.obtenerValorDeArgumentos
local formatoNumero		= ModuloFormatos.formatoNumero2
local numeroUnidad		= ModuloFormatos.formatoUnidad2

-- :: Estilos por defecto
local Clase				= 'geography vcard'
local ColorTitulo		= ''--#cddeff'
local ColorTituloTexto	= '#000'
local ColorEtiqueta		= ''--'#eef5f6'
local EstiloEtiqueta	= 'padding:1px 7px'--'width:40%'
local EstiloSubEtiqueta = 'font-weight:100;border-top:0; padding:0 .6em 0 15px'
local EstiloDatos		= 'padding:1px 7px 1px 1px'--'width:60%'
local TamanoImagen		= '250px'

local Datos = mw.loadData('Módulo:Ficha de localidad/Datos')

local categorias = ''

local function _init(frame)
	ModuloWikidata:setFrame(frame)
	ModuloArgs.obtenerTablaDeArgumentos(frame)
	Entidad			= mw.wikibase.getEntity(argumentos{'id'}) or mw.wikibase.getEntity(argumentos{'entidad'}) or {}
	InstanciaDe		= propiedad('P31', {['formato'] = 'entidadID'})
	SubclaseDe		= propiedad('P279', {['formato'] = 'entidadID'})
	
	-- :: Estilos
	EstiloTitulo			= 'padding:0;' .. (ColorTitulo~='' and ('background-color:' .. ColorTitulo) or '')
	EstiloSeccion			= (ColorTitulo~='' and ('background-color:' .. ColorTitulo) or '')
	EstiloEtiqueta			= EstiloEtiqueta .. ';' .. (ColorEtiqueta~='' and ('background-color:' .. ColorEtiqueta) or '')

	-- :: Datos generales
	NombreOficial	= elementoTabla(Entidad, 'claims', 'P1448', {['idioma'] = 'es'}) or ModuloWikidata.obtenerEtiquetaWikidata(Entidad) or ModuloPaginas.nombrePagina({desambiguar='sí'})
	NombreOriginal	= argumentos{'nombre original'}
	NombreNativo	= (function ()
		local NombreNativo  = {}
		local NombreNativoObj = elementoTabla(Entidad, 'claims', 'P1705')
		if NombreNativoObj then
			for k, v in pairs(NombreNativoObj) do
				local valor, idioma
				if elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'language') == 'es' then return false end
				valor = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'text')
				idioma= elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'language')
				table.insert(NombreNativo, valor .. ' (' .. obtenerIdioma(frame, idioma) .. ')')
				if k > 3 then break end -- listar hasta tres nombres, luego terminar el bucle.
			end
			return table.concat(NombreNativo, '<br>')
		end
	end)()
	
	Titulo = (function ()
		if NombreOriginal then return NombreOficial .. '<div style="font-size:85%;font-style:italic">' .. NombreOriginal .. '</div>' end
		if NombreNativo then return NombreOficial .. '<div style="font-size:85%;font-style:italic">' .. NombreNativo .. '</div>' end
		return NombreOficial
	end)()

	local PaisesConSellos	= Datos['paises']
	EscudoEtiqueta	= PaisesConSellos[NombreOficial] or PaisesConSellos[Entidad] or 'Escudo'
	EscudoPropiedad	= (function() 
		if EscudoEtiqueta == 'Emblema nacional' then return 'P2238' end
		if EscudoEtiqueta == 'Sello' or EscudoEtiqueta == 'Gran Sello' then return 'P158' end
		return 'P94'
	end)()
	
	Bandera			= argumentos{'imagen_bandera', 'bandera', {propiedad, 'P41', {['formato'] = 'archivo'}}}
	TamanoBandera	= argumentos{'bandera_tamaño'} or '135x110px'
	PieBandera		= argumentos{'artículo bandera', {enlazar, propiedad('P163', {['uno'] = 'sí', ['enlace'] = 'no'}), 'Bandera'}, {enlazar, 'Bandera' .. (argumentos{'de'} or ' de ') .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'Bandera'}}

	Escudo			= argumentos{'imagen_escudo', 'escudo', {ModuloWikidata.obtenerImagenWikidata, Entidad, EscudoPropiedad}}
	TamanoEscudo	= argumentos{'escudo_tamaño'} or '110x105px'
	PieEscudo		= argumentos{'artículo escudo', {enlazar, propiedad('P237', {['uno'] = 'sí', ['enlace'] = 'no'}), EscudoEtiqueta}, {enlazar, EscudoEtiqueta .. (argumentos{'de'} or ' de ') .. ModuloPaginas.nombrePagina({desambiguar='sí'}), EscudoEtiqueta}}

	-- :: Datos generales
	LemaNacional	= argumentos{'lema_nacional', {propiedad, 'P1546', {['linkback'] = 'no'}}}
	if LemaNacional then LemaNacional = '[[Anexo:Lemas nacionales|Lema]]: <span style="font-style:italic">' .. LemaNacional .. '</span>' end
	HimnoNacional	= (function()
		local Himno = argumentos{'himno_nacional', {propiedad, 'P85', {['linkback'] = 'no'}}}
		if Himno then
			local Archivo = enlazar(argumentos{'archivo_himno_nacional', {propiedad, 'P85', {['calificador'] = 'P51', ['formato'] = 'archivo'}}}, {['namespace'] = 6})
			if Archivo then return '<div>[[Himno nacional|Himno]]: <span style="font-style:italic">' ..Himno .. '</span></div><div>' .. Archivo .. "</div><div style=\"line-height:1.1em; text-align:center;\" class=\"problemas_sonido\"><small>''[[Ayuda:Multimedia|¿Problemas al reproducir este archivo?]]''</small></div>" end
			return '[[Himno nacional|Himno]]: <span style="font-style:italic">' .. Himno .. '</span></div>'
		end
	end)()
	
	-- :: Datos políticos
	DatosPoliticos	= obtenerLideres()
	Lideres = (function()
		local Lideres	= DatosPoliticos['líderes']
		local Etiquetas	= DatosPoliticos['etiquetas']

		return (function()
			local Valores = {['tipo'] = 'sección', ['estiloetiqueta'] = EstiloEtiqueta ..';'..EstiloSubEtiqueta, ['estilodatos'] = EstiloDatos .. ';border-top:0;padding:0 .6em'}
			for k,v in pairs(Lideres) do
				if not v then break end
				table.insert(Valores, {Etiquetas[k], v[1]})
			end
			return Valores
		end)()
	end)()

	SedeGobierno	= argumentos{'sede_gobierno', 'sedes_gobierno'} -- Proponer propiedad

	Idiomas			= (function()
		local IdiomaOficial			= (function()
			local IdiomaOficialArgs		= argumentos{'idioma', 'idioma_oficial', 'idioma_principal'}
			local IdiomasOficialesArgs	= argumentos{'idiomas', 'idiomas_oficiales'}
			local IdiomasOficialesWd	= propiedad('P37')
			
			if (IdiomaOficialArgs~=nil and IdiomaOficialArgs~='') then
				return {'Idioma oficial', IdiomaOficialArgs}
			elseif (IdiomasOficialesArgs~=nil and IdiomasOficialesArgs~='') then
				return {'Idiomas&nbsp;oficiales', IdiomasOficialesArgs}
			elseif (IdiomasOficialesWd~=nil and IdiomasOficialesWd~='') then
				if(IdiomasOficialesWd:find(',') or IdiomasOficialesWd:find(' y ')) then
					return {'Idiomas oficiales', IdiomasOficialesWd}
				else
					return {'Idioma oficial', IdiomasOficialesWd}
				end
			end
			return ''
		end)()
		
		local IdiomaCooficial			= (function()
			local IdiomaCooficialArgs		= argumentos{'idioma_co-oficial', 'idioma co-oficial'}
			local IdiomasCooficialesArgs	= argumentos{'idiomas_co-oficiales', 'idiomas co-oficiales', 'idiomas_cooficiales'}
		
			-- Para wikidata filtro negativo de calificador (que o tenga P518)
			
			if (IdiomaCooficialArgs~=nil and IdiomaCooficialArgs~='') then
				return {'Cooficial', IdiomaCooficialArgs}
			elseif (IdiomasCooficialesArgs~=nil and IdiomasCooficialesArgs~='') then
				return {'Cooficiales', IdiomasCooficialesArgs}
			end
			return ''
		end)()
		
		local IdiomasHablados			= (function()
			local data = argumentos{'idiomas_hablados', 'idioma_no_oficial', 'idiomas'}--, {propiedad, 'P2936'}} --Por ahora no importar ochocientosmil de wikidata, estudiar como se puede limitar la lista.
		
			if (data~=nil and data:len()>50) then
				return listaDesplegable(frame, 'Idiomas hablados', data, true)
			else
				return {'Idiomas hablados', data}
			end
			return ''
		end)()
		
		
		return	
			{tipo='sección',
				IdiomaOficial,
				{
					tipo			='sección', 
					estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					IdiomaCooficial,
					IdiomasHablados,
				},
			}
	end)()

	Gentilicio		= argumentos{'gentilicio', {propiedad, 'P1549', {['idioma'] = 'es'}}}

	Religion		= argumentos{'religión', {propiedad, 'P140'}}
	
	-- :: Datos geográficos
	Latitud			= round(argumentos{'latitud', {propiedad, 'P625', {['formato'] = 'latitud'}}}, 2)
	Longitud		= round(argumentos{'longitud', {propiedad, 'P625', {['formato'] = 'longitud'}}}, 2)
	
	Superficie			= function(enlacePrincipal, enlacePuesto)
		
		local SuperficieTotal	= (function()
			local Superficie	= argumentos{'superficie'}
			if Superficie then
				Superficie	= formatoNumero(Superficie) .. ' [[kilómetro cuadrado|km²]]'
			else
				Superficie	= propiedad('P2046', {['formato'] = 'unidad', ['separador'] = ' '})
			end
			
			local wdDetail = propiedad('P2046', {['tipo de dato']='área', ['linkback']='sí', ['calificativo']='P518', ['filtroCalificador']='P518;Q16868672'})
			
			
			if (wdDetail~=nil and wdDetail~='') then
				return wdDetail
			end
			
			return Superficie
			
		end)()
		
		local SuperficieTierra	= (function()
			local wd = propiedad('P2046', {['tipo de dato']='área', ['linkback']='sí', ['calificativo']='P518', ['filtroCalificador']='P518;Q205895,Q23442'})
			local param = argumentos{'superficie_tierra'}
			
			if (param~=nil and param:find('%%')) then
			
				if (wd~=nil and wd~='') then
					return '('..param..') '..wd
				else
					return param..' del total'
				end
				
			elseif (param~=nil and not param:find('%%')) then
				return param
			end
			return ''
		end)()

		local SuperficieAgua	= (function()
			local wdData = propiedad('P2046', {['tipo de dato']='área', ['linkback']='sí', ['calificativo']='P518', ['filtroCalificador']='P518;Q23397,Q4022,Q373315,Q102192'})
			local wdPercent = propiedad('P2927', {['formato'] = 'unidad', ['separador'] = ''})
			local param = argumentos{'superficie_agua'}
			
			if (param~=nil and param~='') then
				if (wdData~=nil and wdData~='') then
					return '('..param:gsub('%%', '')..'%) '..wdData
				else
					return param:gsub('%%', '')..'% del total'
				end
			else
				if (wdData~=nil and wdData~='') and (wdPercent~=nil and wdPercent~='') then
					return '('..wdPercent:gsub('%%', '')..'%) '..wdData
				elseif (wdData~=nil and wdData~='') and not (wdPercent~=nil and wdPercent~='') then
					return wdData
				elseif not (wdData~=nil and wdData~='') and (wdPercent~=nil and wdPercent~='') then
					return '('..wdPercent:gsub('%%', '')..'%) del total'
				end
			end
			return ''
		end)()
		
		

		local SuperficiePuesto= argumentos{'superficie_puesto'}
		if SuperficiePuesto then
			SuperficiePuesto = (enlacePuesto~=nil and enlazar(enlacePuesto, 'Puesto '..SuperficiePuesto .. 'º') or 'Puesto '..SuperficiePuesto .. 'º')
			return	{
						tipo='sección',
						{(enlacePrincipal~=nil and enlazar(enlacePrincipal, 'Superficie') or 'Superficie'), SuperficiePuesto},
						{
							tipo ='sección',
							estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
							estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
							{'Total', SuperficieTotal},
							{'Tierra', SuperficieTierra},
							{'Agua', SuperficieAgua},
						},
				}
		else
			return	{
						tipo='sección',
						{(enlacePrincipal~=nil and enlazar(enlacePrincipal, 'Superficie') or 'Superficie') .. ' total', SuperficieTotal},
						{
							tipo ='sección',
							estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
							estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
							{'Tierra', SuperficieTierra},
							{'Agua', SuperficieAgua},
						}
					}
		end
	end
	
	Fronteras		= argumentos{'fronteras'}
	if Fronteras then
		Fronteras	= formatoNumero(Fronteras)
	end

	LineaDeCosta			= formatoNumero(argumentos{'costas'})

	PuntoMasAlto			= argumentos{'punto_más_alto', {propiedad, 'P610'}}
	PuntoMasBajo			= argumentos{'punto_más_bajo', {propiedad, 'P1589'}}
	PuntoMasOriental		= argumentos{'punto_más_oriental', {propiedad, 'P1334'}}
	PuntoMasOccidental		= argumentos{'punto_más_occidental', {propiedad, 'P1335'}}
	PuntoMasSeptentrional	= argumentos{'punto_más_septentrional', {propiedad, 'P1332'}}
	PuntoMasMeridional		= argumentos{'punto_más_meridional', {propiedad, 'P1333'}}
	
	Historia = (function(frame)
		--local Historia = {tipo = 'sección', titulo = 'Historia'}
		local Historia = {tipo = 'sección'}

		-- Fundación
		local FundacionFechas	= argumentos{'fundación_fechas'}
		local FundacionEtiqueta	= argumentos{'fundación'}
		local HistoriaEtiqueta		= argumentos{'fundación_hitos'}
		if FundacionEtiqueta and HitosEtiqueta then HitosEtiqueta = FundacionEtiqueta .. "\n" .. HitosEtiqueta end
		table.insert(Historia, {HistoriaEtiqueta, FundacionFechas})

		-- Periodo histórico
		local PeriodoHistorico	= argumentos{'era', {propiedad, 'P2348'}}
		table.insert(Historia, {'Período histórico', PeriodoHistorico})
		
		-- Hitos
		local Hitos = {tipo ='sección', estiloetiqueta	= EstiloEtiqueta ..';border-top:0; padding:.6em .6em 0 15px; font-size:85%; line-height:1.25em', estilodatos = EstiloDatos .. ';border-top:0;padding:.6em .6em 0 .6em'}
		
		-- Evento anterior
		if argumentos{'evento_anterior1'} and argumentos{'fecha_evento_anterior1'} then
			table.insert(Hitos, {argumentos{'evento_anterior1'}, (function()
				if argumentos{'año_evento_anterior1'} then return argumentos{'fecha_evento_anterior1'} .. ' de ' .. argumentos{'año_evento_anterior1'} end
				return argumentos{'fecha_evento_anterior1'}
			end)()})
		end
		
		-- Fecha inicio
		if argumentos{'evento_inicio'} and argumentos{'fecha_inicio'} then
			table.insert(Hitos, {(argumentos{'evento_inicio'} or 'Establecido'), (function()
				if argumentos{'año_inicio'} then return argumentos{'fecha_inicio'} .. ' de ' .. argumentos{'año_inicio'} end
				return argumentos{'fecha_inicio'}
			end)()})
		end
		
		-- Eventos intermedios
		for i = 1, 20, 1 do
			if not argumentos{'evento' .. i} then break end
			table.insert(Hitos, {(argumentos{'evento' .. i}), (function()
				if argumentos{'año_evento' .. i} then return argumentos{'fecha_ievento' .. i} .. ' de ' .. argumentos{'año_evento' .. i} end
				return argumentos{'fecha_evento' .. i}
			end)()})
		end
		
		-- Fecha fin
		if argumentos{'evento_fin'} and argumentos{'fecha_fin'} then
			table.insert(Hitos, {(argumentos{'evento_fin'} or 'Disolución'), (function()
				if argumentos{'año_fin'} then return argumentos{'fecha_fin'} .. ' de ' .. argumentos{'año_fin'} end
				return argumentos{'fecha_fin'}
			end)()})
		end
		
		-- Evento posterior
		if argumentos{'evento_posterior1'} and argumentos{'fecha_evento_posterior1'} then
			table.insert(Hitos, {argumentos{'evento_posterior1'}, (function()
				if argumentos{'año_evento_posterior1'} then return argumentos{'fecha_evento_posterior1'} .. ' de ' .. argumentos{'año_evento_posterior1'} end
				return argumentos{'fecha_evento_posterior1'}
			end)()})
		end

		table.insert(Historia, Hitos)

		-- Actualidad
		table.insert(Historia, {'Hoy parte de', argumentos{'hoy', {propiedad, 'P3842'}}})

		return Historia
	end)()
	
	Poblacion			= function(enlacePrincipal, enlaceDensidad)
		
		local PoblacionCenso	= (function()
			local Valor = argumentos{'población', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}}  -- P459=método | Q39825=censo
			local Anio = argumentos{'población_año', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha', ['formatoFecha'] = 'año', ['calificador'] = 'P585', ['enlace'] = 'no', ['calificativo'] = ''}}}  -- P585=punto en el tiempo   EL CALIFICATIVO VACÍO ES PORQUE SI NO SE IGNORA EL CALIFICADOR (ni idea de por qué)
			local Notas = argumentos{'población_notas'}
			
			if Valor then
				if Anio then
					return {'Censo&nbsp;'..small('('..Anio..')'), formatoNumero(Valor) .. '&nbsp;hab.' .. (Notas~=nil and Notas or '')}
				else
					return {'Censo', formatoNumero(Valor) .. '&nbsp;hab.' .. (Notas~=nil and Notas or '')}
				end
			end
			return ''
		end)()
		
		local PoblacionCensoValor = argumentos{'población', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}, {propiedad, 'P1082', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
		local PoblacionCensoAnio = argumentos{'población_año', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha', ['formatoFecha'] = 'año', ['calificador'] = 'P585', ['enlace'] = 'no', ['calificativo'] = ''}}}
		local PoblacionCensoResumen = formatoNumero(PoblacionCensoValor~=nil and PoblacionCensoValor or '')..'&nbsp;hab.'..(PoblacionCensoAnio~=nil and '&nbsp;('..PoblacionCensoAnio..')' or '')
		
		local PoblacionEstimada	= (function()
			local Valor = argumentos{'población_estimación', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q791801,Q29051383', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}}  -- P459=método | Q791801,Q29051383=estimación
			local Anio = argumentos{'población_estimación_año', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q791801,Q29051383', ['uno'] = 'último', ['ordenar'] = 'por fecha', ['formatoFecha'] = 'año', ['calificador'] = 'P585', ['enlace'] = 'no', ['calificativo'] = ''}}}  -- P585=punto en el tiempo   EL CALIFICATIVO VACÍO ES PORQUE SI NO SE IGNORA EL CALIFICADOR (ni idea de por qué)
			local Notas = argumentos{'población_estimación_notas'}
			
			if Valor then
				if Anio then
					return {'Estimación&nbsp;'..small('('..Anio..')'), formatoNumero(Valor) .. '&nbsp;hab.' .. (Notas~=nil and Notas or '')}
				else
					return {'Estimación', formatoNumero(Valor) .. '&nbsp;hab.' .. (Notas~=nil and Notas or '')}
				end
			end
			return ''
		end)()
		
		local Superficie = argumentos{'superficie', {propiedad, 'P2046'}}
		
		local Densidad = (function()
			local Notas = argumentos{'densidad_post'}
			local AnioCenso = argumentos{'población_año', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha', ['formatoFecha'] = 'año', ['calificador'] = 'P585', ['enlace'] = 'no', ['calificativo'] = ''}}}
			local AnioEstimado = argumentos{'población_estimación_año', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q791801,Q29051383', ['uno'] = 'último', ['ordenar'] = 'por fecha', ['formatoFecha'] = 'año', ['calificador'] = 'P585', ['enlace'] = 'no', ['calificativo'] = ''}}}
			local Valor = (function()
				local Poblacion = argumentos{'población', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q39825', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
				if argumentos{'población_densidad', 'densidad'} then return argumentos{'población_densidad', 'densidad'} end
				if tonumber(Poblacion) and tonumber(Superficie) then return (tonumber(Poblacion)/tonumber(Superficie)) else return nil end
			end)()
			local ValorEstimado = (function()
				local PoblacionEstimada = argumentos{'población_estimación', {propiedad, 'P1082', {['filtroCalificador'] = 'P459;Q791801', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
				if tonumber(PoblacionEstimada) and tonumber(Superficie) then return (tonumber(PoblacionEstimada)/tonumber(Superficie)) else return nil end
			end)()
			
			if(tonumber(AnioCenso~=nil and AnioCenso or '0')>=tonumber(AnioEstimado~=nil and AnioEstimado or '0')) then
				if Valor then return {(enlaceDensidad~=nil and enlazar(enlaceDensidad, 'Densidad') or 'Densidad'), formatoNumero(Valor, {['decimales'] = 2}) .. '&nbsp;hab./km²' .. (Notas~=nil and Notas or '')}
				elseif ValorEstimado then return {(enlaceDensidad~=nil and enlazar(enlaceDensidad, 'Densidad') or 'Densidad')..'&nbsp;'..small('(est.)'), formatoNumero(ValorEstimado, {['decimales'] = 2}) .. '&nbsp;hab./km²' .. (Notas~=nil and Notas or '')} end
			elseif ValorEstimado then return {(enlaceDensidad~=nil and enlazar(enlaceDensidad, 'Densidad') or 'Densidad')..'&nbsp;'..small('(est.)'), formatoNumero(ValorEstimado, {['decimales'] = 2}) .. '&nbsp;hab./km²' .. (Notas~=nil and Notas or '')} end
			return ''
		end)()
		
		
		mw.log('Censo:') mw.logObject(PoblacionCenso)
		mw.log('Estimada:') mw.logObject(PoblacionEstimada)
		mw.log('Densidad:') mw.logObject(Densidad)
		mw.log('------------------') 

		if argumentos{'población_puesto'} then
			return	{
				tipo = 'sección',
				{'Población', (enlacePrincipal~=nil and enlazar(enlacePrincipal, 'Puesto ' .. argumentos{'población_puesto'} .. 'º') or 'Puesto ' .. argumentos{'población_puesto'} .. 'º')},
				{
					tipo = 'sección',
					estiloetiqueta	= EstiloEtiqueta .. ';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					PoblacionCenso,
					PoblacionEstimada,
					Densidad,
				},
			}
		else
			return	{
				tipo = 'sección',
				{(enlacePrincipal~=nil and enlazar(enlacePrincipal, 'Población total') or 'Población total'), PoblacionCensoResumen},
				{
					tipo = 'sección',
					estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					PoblacionEstimada,
					Densidad,
				}
			}
		end
	end

	-- :: Datos socioeconómicos
	PIBPuesto		= function(enlace)
		local PIB = argumentos{'PIB_puesto'}
		if PIB then return (enlace~=nil and enlazar(enlace, 'Puesto ' .. PIB .. 'º') or 'Puesto ' .. PIB .. 'º') end
	end
	
	PIB				= argumentos{'PIB', {nada, ''}}
	PIBAnio			= argumentos{'PIB_año', {nada, ''}}--, {propiedad, 'P2131', {['uno'] = 'último', ['ordenar'] = 'por fecha', ['calificador'] = 'P585'}}}
	PIBPerCapita	= argumentos{'PIB_per_cápita', {nada, ''}}--, {propiedad, 'P2132', {['uno'] = 'último', ['ordenar'] = 'por fecha', ['calificador'] = 'P585'}}}

	PIBNominalPuesto= function(enlace)
		local Puesto = argumentos{'PIB_nominal_puesto'}
		if Puesto then return (enlace~=nil and enlazar(enlace, 'Puesto ' .. Puesto .. 'º') or 'Puesto ' .. Puesto .. 'º') end
	end

	PIBNominal			= argumentos{'PIB_nominal', {nada, ''}}
	PIBNominalAnio		= argumentos{'PIB_nominal_año', {nada, ''}}--, {propiedad, 'P2131', {['uno'] = 'último', ['ordenar'] = 'por fecha', ['calificador'] = 'P585'}}}
	PIBNominalPerCapita	= argumentos{'PIB_nominal_per_cápita', {nada, ''}}--, {propiedad, 'P2132', {['uno'] = 'último', ['ordenar'] = 'por fecha', ['calificador'] = 'P585'}}}

	IDH				= argumentos{'IDH'}
	IDHAnio			= argumentos{'IDH_año', 'IDH año'}
	IDHpuesto		= argumentos{'IDH_puesto', 'IDH puesto'}
	IDHcategoria	= argumentos{'IDH_categoría', 'IDH categoría'}
	
	IndiceDesarrollo = function(enlace)
		local IDH				= argumentos{'IDH'}
		local IDHAnio			= argumentos{'IDH_año', 'IDH año'}
		local IDHpuesto		    = argumentos{'IDH_puesto', 'IDH puesto'}
		local IDHcategoria   	= argumentos{'IDH_categoría', 'IDH categoría'}
		
		local etiqueta = '[[Índice de desarrollo humano|IDH]]' .. ((IDHAnio~=nil) and (' ('..IDHAnio .. ')') or '')
		
		local dato = ((IDH~=nil) and IDH or '') .. ((IDHpuesto~=nil) and (' ('..(enlace~=nil and enlazar(enlace, IDHpuesto..'.º') or IDHpuesto..'.º')..')&nbsp;–&nbsp;' .. ((IDHcategoria~=nil) and IDHcategoria or '')) or '')
		
		return {etiqueta, dato}
	end
	
	Gini			= argumentos{'gini', {propiedad, 'P1125', {['uno'] = 'último', ['ordenar'] = 'por fecha', ['calificador'] = 'P585'}}}
	
	--Moneda
	Moneda			= argumentos{'moneda', {propiedad, 'P38'}}
	
	Patrono			= argumentos{'patrona', 'patrón', {propiedad, 'P417'}}

	-- Huso horario
	Huso			= seccionDesplegable(frame, '[[Huso horario]]', argumentos{'horario', {propiedad, 'P421', {['lista'] = 'nobullet'}}})
	HorarioVerano	= argumentos{'horario_verano'}
	
	CodigoISO		= (function()
		if argumentos{'código_ISO'} then return argumentos{'código_ISO'} end
		local CodigoISO = {}
		if propiedad('P297') then table.insert(CodigoISO, propiedad('P297')) end
		if propiedad('P298') then table.insert(CodigoISO, propiedad('P298')) end
		if propiedad('P299') then table.insert(CodigoISO, propiedad('P299')) end
		return table.concat(CodigoISO, '<br>')
	end)()
	
	CCTD			= code(argumentos{'cctld', {propiedad, 'P78'}})
	
	PrefijoTelef = (function()
		local data = argumentos{'código_telefónico', {propiedad, 'P474'}}
		if data~=nil then
			if data:find('+') then return data else return '+'..data end
		end
		return ''
	end)()
	PrefijoRadio	= small(code(argumentos{'prefijo_radiofónico'}))--, {propiedad, ''}}-- Solicitar propiedad
	PrefijoMatAero	= argumentos{'matrícula_avión', {propiedad, 'P2986'}}
	PrefijoMatAuto	= argumentos{'matrícula_coche', {propiedad, 'P395'}}
	COI				= argumentos{'código_COI', {propiedad, 'P984'}}
	
	MiembroDe		= listaDesplegable(frame, 'Membresía', argumentos{'miembro_de'}, true)--, {propiedad, 'P463'}}, true) Intentar generar la lista utilizando short names, si no es demasiado texto

	Notas			= (function()
		local Notas = {}
		for i = 1, 10, 1 do
			if argumentos{'nota' .. i} then table.insert(Notas, '<li id="ficha_nota-'.. i .. '">[[#ficha_ref-' .. i .. '|↑]]' .. argumentos{'nota' .. i} .. '</li>') end
		end
		if not argumentos{'notas'} == '' then table.insert(Notas, argumentos{'notas'}) end
		if #Notas > 0 then return '<ol class="references">' .. table.concat(Notas) .. '</ol>' end
	end)()
	
	SitioWeb = (function()
		local enlace	= argumentos{'sitio_web', 'sitio web', 'página web', 'página_web', 'web', {propiedad, 'P856', {['enlace']='no', uno='sí'}}}
		local texto		= 'Sitio web oficial'
		return require('Módulo:URL').enlazar(enlace, texto)
	end)() or ''
end

function p.FichaPais(frame)
	_init(frame)
	
	local ClaseTitulo	= 'adr'

	-- Subtítulo: Miembro de (discutir este parámetro)
	local Subtitulo			= (function()
		local Unidad		= argumentos{'unidad', {propiedad, 'P31', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
		local Supraunidad	= argumentos{'supraunidad'}
		local Disputado		= argumentos{'disputado'}
		
		if Unidad and Supraunidad then
			return Unidad .. ' de ' .. Supraunidad
		elseif not Disputado == nil then
			return '[[Estado con reconocimiento limitado|Soberanía discutida]]'
		end
		
		return ''--Unidad  --No retornar, evita el título de 'Estado soberano', discutir inclusión en un futuro
	end)()
	
	local Mapa			= (function()
		local ImagenMapa		= enlazar(argumentos{'imagen_mapa', 'mapa', {propiedad, 'P242', {['formato'] = 'archivo', ['uno'] = 'sí'}}}, {['tamaño'] = '250px', ['namespace'] = 6})
		local PieMapa	= argumentos{'pie_mapa'}
		if ImagenMapa then
			return ImagenMapa .. small(PieMapa~=nil and PieMapa or '')
		end
	end)()

	local Capital = (function()
		local Capital				= argumentos{'capital', {propiedad, 'P36', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}
		local CiudadMasPoblada		= argumentos{'ciudad_más_poblada'}
		local AglomeradoMasPoblado	= argumentos{'aglomerado_más_poblado'}
		
		if Capital == CiudadMasPoblada then return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]] <small>(y ' .. enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'ciudad más poblada') .. ')</small>', Capital}
		} end

		if Capital == AglomeradoMasPoblado then return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]] <small>(y ' .. enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'aglomerado urbano más poblado') .. ')</small>', Capital}
		} end
	
		return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]]', Capital},
			{enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'Ciudad más poblada'), CiudadMasPoblada},
			{enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'Aglomerado urbano más poblado'), AglomeradoMasPoblado},
		}
	end)()
	
	
	local Historia = (function(frame)
		-- Fundación
		local FundacionEtiqueta	= argumentos{'fundación'}
		local FundacionFechas	= argumentos{'fundación_fechas'}
		local FundacionHitos	= argumentos{'fundación_hitos'}
		
		local Etiqueta = (FundacionEtiqueta~=nil and FundacionEtiqueta or ('[[Historia '..frame:preprocess('{{de país|{{Título sin coletilla}}}}')..'|Fundación]]')) .. (FundacionHitos~=nil and '<br />'..FundacionHitos or '')
		
		return {Etiqueta, FundacionFechas}
	end)(frame)
	
	local Lideres = (function()
		local DatosPoliticos = (function() 
			local Datos			= {}
			Datos['líderes']	= {}
			Datos['etiquetas']	= {}
			
			for i = 1, 20, 1 do
				if argumentos{'nombre_líder' .. i} == '' or not argumentos{'nombre_líder' .. i} then break end
				table.insert(Datos['líderes'], argumentos{'nombre_líder' .. i})
				table.insert(Datos['etiquetas'], argumentos{'título_líder' .. i})
			end
			return Datos
		end)()
		
		local Lideres	= DatosPoliticos['líderes']
		local Etiquetas	= DatosPoliticos['etiquetas']

		return (function()
			local Valores = {['tipo'] = 'sección', ['estiloetiqueta'] = EstiloEtiqueta ..';'..EstiloSubEtiqueta, ['estilodatos'] = EstiloDatos .. ';border-top:0;padding:0 .6em'}
			for k,v in pairs(Lideres) do
				if not v then break end
				table.insert(Valores, {Etiquetas[k], v})
			end
			return Valores
		end)()
		
	end)()

	--Categorizar cuando la superficie o la población no son números
	if(argumentos{'superficie'}~=nil and argumentos{'población'}~=nil) then
		if(tonumber(argumentos{'superficie'})==nil or tonumber(argumentos{'población'})==nil) then
			categorizar('Hispanopedia:Artículos de países que requieren mantenimiento')
		end
	end


	-- :: La ficha
	local TablaFicha = {
		titulo  			= Titulo,
		subtitulo			= Subtitulo,
		clase				= Clase,
		clasetitulo			= ClaseTitulo,
		estilotitulo		= EstiloTitulo,
		estilosubtitulo		= 'font-weight:bold; background-color:#cddeff',
		imagenizquierda		= Bandera,
		["tamañoimagenizquierda"]	= TamanoBandera,
		imagenderecha		= Escudo,
		["tamañoimagenderecha"]		= TamanoEscudo,
		pieizquierdo		= PieBandera,
		piederecho			= PieEscudo,
		estilopie			= "font-size:88%",
		estiloseccion		= EstiloSeccion,
		estiloetiqueta		= EstiloEtiqueta,
		estilodatos			= EstiloDatos,
		{tipo='sección',
			{'', LemaNacional, estilodatos='padding:.4em .6em;'},
		},
		{tipo='sección',
			{'', HimnoNacional, estilodatos='padding:.4em .6em;'},
		},
		{tipo='sección',
			--titulo  			= 'Ubicación',
			["tamañoimagen"]	= TamanoImagen,
			{'', Mapa, estilodatos='padding:.4em .6em;'},
		},
		{tipo='sección',
			--titulo  			= 'Información general',
			Capital,
			{'[[Sede de gobierno]]', SedeGobierno},
			Idiomas,
			{'Gentilicio', Gentilicio},
		},
		{tipo='sección',
			--titulo  = 'Información política',
			{'[[Forma de gobierno]]', FormaGobierno},
			Lideres,
			{'[[Órgano ejecutivo]]', OrganoEjecutivo},
			{'[[Órgano legislativo]]', OrganoLegislativo},
		},
		Historia, -- Esto formatea los hitos como la independencia
		{tipo='sección',
			--titulo  	= 'Información geográfica',
			Superficie('Superficie terrestre', 'Anexo:Países por superficie'),
			{'[[Frontera]]s', Fronteras},
			{'[[Línea de costa]]', LineaDeCosta},
			{'[[Anexo:Países por punto más alto|Punto más alto]]', PuntoMasAlto},
			--{'Punto más bajo', PuntoMasBajo},    --Comentados porque no existen en Ficha de país, se pueden añadir a futuro
			--{'Punto más oriental', PuntoMasOriental},
			--{'Punto más occidental', PuntoMasOccidental},
			--{'Punto más septentrional', PuntoMasSeptentrional},
			--{'Punto más meridional', PuntoMasMeridional},
		},
		{tipo='sección',
			--titulo  	= 'Información socioeconómica',
			Poblacion('Anexo:Países y territorios dependientes por población', 'Anexo:Países por densidad de población'),
			{'[[Producto interno bruto|PIB]] ([[Paridad de poder adquisitivo|PPA]])', PIBPuesto('Países por PIB (PPA)')},
			{tipo			='sección',
				estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
				estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
				{'Total&nbsp;'..small('('..PIBAnio..')'), PIB},
				{'[[Renta per cápita|Per cápita]]', PIBPerCapita},
			},
			{'PIB (nominal)', PIBNominalPuesto('Anexo:Países por PIB (nominal)')},
			{tipo			='sección',
				estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
				estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
				{'Total&nbsp;'..small('('..PIBNominalAnio..')'), PIBNominal},
				{'Per cápita', PIBNominalPerCapita},
			},
			IndiceDesarrollo('Anexo:Países por índice de desarrollo humano'),
			{'[[Coeficiente de Gini]]', Gini},
			{'[[Moneda (divisa)|Moneda]]', Moneda},
		},
		{tipo='sección',
			--titulo  			= 'Información internacional',
			Huso,
			{tipo			='sección',
				estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
				estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
				{'En [[Horario de verano|verano]]', HorarioVerano},
			},
			{'[[ISO 3166-1|Código ISO]]', CodigoISO},
			{'[[Dominio de nivel superior geográfico#Lista de dominios de nivel superior geográfico|Dominio internet]]', CCTD},
			{'[[Anexo:Prefijos telefónicos internacionales|Prefijo telefónico]]', PrefijoTelef},
			{'[[Anexo:Prefijos radiofónicos|Prefijo radiofónico]]', PrefijoRadio},
			{'[[Matrícula (aeronaves)|Siglas país para aeronaves]]', PrefijoMatAero},
			{'[[Anexo:Siglas automovilísticas internacionales|Siglas país para automóviles]]', PrefijoMatAuto},
			{'[[Anexo:Códigos del COI para los países|Código del COI]]', },
		},
		{tipo='sección',
			estilodatos = 'padding:0',
			{'', SitioWeb},
		},
		{tipo='sección',
			estilodatos = 'padding:0',
			MiembroDe,
		},
		estilopiedetabla	= 'text-align:left',
		piedetabla			= Notas,
	}
	return infobox(TablaFicha)..categorias
end

function p.FichaEntidadSubnacional(frame)
	_init(frame)
	
	local ClaseTitulo	= 'mapa fn org'
	
	local Pais				= argumentos{'país', 'pais', {propiedad, 'P17', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}
	local Capital			= argumentos{'capital', {propiedad, 'P36', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}
	local CapitalEtiqueta	= argumentos{'capital_denominación'} or '[[Capital (política)|Capital]]'

	local Subtitulo			= (function()
		if argumentos{'unidad'} then return argumentos{'unidad'} end
		
		local Unidad
		local Supraunidad
		UnidadObj = elementoTabla(Entidad, 'claims', 'P31')
		if UnidadObj then
			for k,v in pairs(UnidadObj) do
				Unidad		= elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id')
				Supraunidad	= ModuloWikidata.obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(v, 'qualifiers', 'P642', 1, 'datavalue', 'value', 'id')))
				if Unidad == 'Q5119' and Supraunidad then
					return '[[Capital (política)|Capital]] de [[' .. Supraunidad .. ']]'
				end
			end
		end
		return '[[Entidad subnacional]]'
	end)()
	
	local ImagenPanorama	= argumentos{'img_panorama_urb', 'image_skyline', 'image_skyline', 'imagen', {propiedad, 'P18', {['formato'] = 'archivo'}}}
	local PieImagenPanorama	= argumentos{'image_caption', 'pie_img_panorama_urb', 'pie_de_imagen'}

	-- :: Datos cartográficos
	local Mapa1	= obtenerMapa(frame,
			{
				[1]					= ModuloPaginas.nombrePagina({desambiguar='sí'}),
				['zoom']			= (argumentos{'zoom'} or 10),
				['latitude']		= Latitud,
				['longitude']		= Longitud,
				['mapa_loc']		= argumentos{'mapa_loc', 'pushpin_map'},
				['mapa_etiq']		= (argumentos{'nombre', 'nombre_oficial'} or NombreOficial),
				['mapa_etiq_pos']	= argumentos{'pos_etiqueta_loc'},
				['mapa_marca']		= argumentos{'imagen_marca_loc'},
				['mapa_marca_tam']	= (argumentos{'tam_marca_loc'} or 5),
				['mapa_alt']		= argumentos{'mapa_alternativo'},
				['mapa_tamaño'] = (argumentos{'tam_mapa_loc', 'pushpin_mapsize'} or 250),
			}
		)
	local MapaPie1		= (function()
		local MapaLoc	= argumentos{'mapa_loc', 'pushpin_map'}
		local Etiqueta	= (argumentos{'nombre', 'nombre_oficial'} or NombreOficial)
		if MapaLoc and Etiqueta then return 'Localización de ' .. Etiqueta .. ' en ' .. MapaLoc end
	end)()

	local Mapa2			= obtenerMapa(frame,
			{
				[1]					= argumentos{'nombre_mapa_'},
				['zoom']			= (argumentos{'zoom'} or 10),
				['latitude']		= Latitud,
				['longitude']		= Longitud,
				['mapa_loc']		= argumentos{'mapa_loc1', 'pushpin_map1'},
				['mapa_etiq']		= (argumentos{'nombre', 'nombre_oficial'} or NombreOficial),
				['mapa_etiq_pos']	= argumentos{'pos_etiqueta_loc1'},
				['mapa_marca']		= argumentos{'imagen_marca_loc1'},
				['mapa_marca_tam']	= (argumentos{'tam_marca_loc1'} or 5),
				['mapa_alt']		= argumentos{'mapa_alternativo1'},
				['mapa_tamaño']		= (argumentos{'tam_mapa_loc1', 'pushpin_mapsize1'} or 250),
			}
		)
	local MapaPie2		= (function()
		local MapaLoc	= argumentos{'mapa_loc1', 'pushpin_map1'}
		local Etiqueta	= (argumentos{'nombre', 'nombre_oficial'} or NombreOficial)
		if MapaLoc and Etiqueta then return 'Localización de ' .. Etiqueta .. ' en ' .. MapaLoc end
	end)()

	local Mapa3 		= argumentos{'mapa', 'imagen_mapa', 'image_map', {propiedad, 'P242'}, {obtenerMapa, frame, {['latitud'] = Latitud, ['longitud'] = Longitud, ['tipo'] = 'interactivo'}}}
	local Mapa3Tamano	= argumentos{'tam_mapa_loc1', 'pushpin_mapsize1'} or 250
	local Mapa3Pie		= argumentos{'pie_mapa'}

	local Mapa4 		= argumentos{'mapa1', 'imagen_mapa1', 'image_map1'}
	local Mapa4Tamano	= argumentos{'tam_mapa_loc1', 'pushpin_mapsize1'} or 250
	local Mapa4Pie		= argumentos{'pie_mapa1'}

	-- :: La ficha
	local TablaFicha = {
		titulo  			= Titulo,
		subtitulo			= Subtitulo,
		clase				= Clase,
		clasetitulo			= ClaseTitulo,
		estilotitulo		= EstiloTitulo,
		estilosubtitulo		= 'font-weight:bold; background-color:#cddeff',
		imagensuperior		= ImagenPanorama,
		piesuperior			= PieImagenPanorama,
		imagenizquierda		= Bandera,
		["tamañoimagenizquierda"]	= TamanoBandera,
		imagenderecha		= Escudo,
		["tamañoimagenderecha"]		= TamanoEscudo,
		pieizquierdo		= PieBandera,
			piederecho			= PieEscudo,
			estilopie			= "font-size:88%",
			estiloseccion		= EstiloSeccion,
			estiloetiqueta		= EstiloEtiqueta,
			estilodatos			= EstiloDatos,
			datosup1			= Apodo,
			datosup2			= LemaNacional,
			datosup3			= HimnoNacional,
			imagenflotante1		= 'sí',
			imagenflotante2		= 'sí',
			imagen1				= Mapa1,
			pie1				= Mapa1Pie,
			imagen2				= Mapa2,
			pie2				= Mapa2Pie,
			imagen3				= Mapa3,
			pie3				= Mapa3Pie,
			imagen4				= Mapa4,
			pie4				= Mapa4Pie,
			{tipo='sección',
				--titulo  			= 'Información general',
				Capital,
				{'[[Sede de gobierno]]', SedeGobierno},
--				Idiomas,
				{'Gentilicio', Gentilicio},
			},
			{tipo='sección',
				--titulo  = 'Información política',
				{'[[Forma de gobierno]]', FormaGobierno},
				Lideres,
				{'[[Órgano ejecutivo]]', OrganoEjecutivo},
				{'[[Órgano legislativo]]', OrganoLegislativo},
			},
			Historia, -- Esto formatea los hitos como la independencia
			{tipo='sección',
				--titulo  	= 'Información geográfica',
				Superficie('Área', nil),
				{'[[Frontera]]s', Fronteras},
				{'[[Línea de costa]]', LineaDeCosta},
				{'[[Anexo:Países por punto más alto|Punto más alto]]', PuntoMasAlto},
				{'Punto más bajo', PuntoMasBajo},
				{'Punto más oriental', PuntoMasOriental},
				{'Punto más occidental', PuntoMasOccidental},
				{'Punto más septentrional', PuntoMasSeptentrional},
				{'Punto más meridional', PuntoMasMeridional},
			},
			{tipo='sección',
				--titulo  	= 'Información socioeconómica',
				Poblacion('Población', 'Densidad de población'),
				{'[[Producto interno bruto|PIB]] ([[Paridad de poder adquisitivo|PPA]])', PIBPuesto(nil)},
				{tipo			='sección',
					estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					{'Total', PIBAnio},
					{'[[Renta per cápita|Per cápita]]', PIBPerCapita},
				},
				{'PIB (nominal)', PIBNominalPuesto(nil)},
				{tipo			='sección',
					estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					{'Total', PIBNominalAnio},
					{'Per cápita', PIBNominalPerCapita},
				},
				IndiceDesarrollo(nil),
				{'[[Coeficiente de Gini]]', Gini},
				{'[[Moneda (divisa)|Moneda]]', Moneda},
			},
			{tipo='sección',
				--titulo  			= 'Información internacional',
				Huso,
				{tipo			='sección',
					estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
					estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
					{'En [[Horario de verano|verano]]', HorarioVerano},
				},
				{'[[ISO 3166-1|Código ISO]]', CodigoISO},
				{'[[Dominio de nivel superior geográfico#Lista de dominios de nivel superior geográfico|Dominio internet]]', CCTD},
				{'<small>[[Anexo:Prefijos telefónicos internacionales|Prefijo telefónico]]</small>', PrefijoTelef},
				{'<small>[[Anexo:Prefijos radiofónicos|Prefijo radiofónico]]</small>', PrefijoRadio},
				{'[[Matrícula (aeronaves)|Siglas país para aeronaves]]', PrefijoMatAero},
				{'[[Anexo:Siglas automovilísticas internacionales|Siglas país para automóviles]]', PrefijoMatAuto},
				{'[[Anexo:Códigos del COI para los países|Código del COI]]', },
			},
			{tipo='sección',
				estilodatos = 'padding:0',
				{'', SitioWeb},
			},
			MiembroDe,
			estilopiedetabla	= 'text-align:left',
			--piedetabla			= Notas,
			piedetabla			= Debug,
		}
		return infobox(TablaFicha)
	end
	
function p.FichaEstadoDesaparecido(frame)
	_init(frame)
		
	local ClaseTitulo	= 'adr'
	
	local Predecesor = (function()
		local Predecesor = {}
		local Anio, Imagen, Bandera, Enlace
		for i = 1, 21, 1 do
			if not argumentos{'p'..i} then break end
		Enlace	= {}
			table.insert(Enlace, enlazar(argumentos{'p'..i}, '←'))
			if argumentos{'año_p'..i} then table.insert(Enlace, '<small>(' .. argumentos{'año_p'..i} .. ')</small>') end
			
			if argumentos{'bandera_p'..i} then 
				table.insert(Enlace, enlazar(argumentos{'bandera_p'..i}, {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'p'..i}, ['namespace'] = 6}))
			elseif argumentos{'imagen_p'..i} then
				table.insert(Enlace, argumentos{'imagen_p'..i})
			else
				table.insert(Enlace, (
						enlazar('bandera_de_'..argumentos{'p'..i}..'.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'p'..i}, ['namespace'] = 6}) or
						enlazar('bandera_de_la_'..argumentos{'p'..i}..'.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'p'..i}, ['namespace'] = 6}) or
						enlazar('3by2white.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'p'..i}, ['namespace'] = 6})
					)
				)
			end

			table.insert(Predecesor, table.concat(Enlace))
		end
		if #Predecesor > 0 then return table.concat(Predecesor, '<br>') end
		return propiedad('P155', {['lista'] = 'nobullet'})
	end)()
	
	local Periodo	= (function()
		if argumentos{'duración'} then return argumentos{'duración'} end
		if argumentos{'año_inicio'} and argumentos{'año_fin'} then return argumentos{'año_inicio'}  .. ' - ' .. argumentos{'año_fin'} end
	end)()

	local Sucesor = (function()
		local Datos = {}
		for i = 1, 21, 1 do
			if not argumentos{'s'..i} then break end
			Enlace	= {}
			if argumentos{'año_s'..i} then table.insert(Enlace, '<small>(' .. argumentos{'año_s'..i} .. ')</small>') end
			if argumentos{'bandera_s'..i} then 
				table.insert(Enlace, enlazar(argumentos{'bandera_s'..i}, {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'s'..i}, ['namespace'] = 6}))
			elseif argumentos{'imagen_s'..i} then
				table.insert(Enlace, argumentos{'imagen_s'..i})
			else
				table.insert(Enlace, (
					enlazar('bandera_de_'..argumentos{'s'..i}..'.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'s'..i}, ['namespace'] = 6}) or
						enlazar('bandera_de_la_'..argumentos{'s'..i}..'.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'s'..i}, ['namespace'] = 6}) or
						enlazar('3by2white.svg', {['tamaño'] = '30px', ['borde'] = true, ['link'] = argumentos{'s'..i}, ['namespace'] = 6})
					)
				)
			end
			table.insert(Enlace, enlazar(argumentos{'s'..i}, '→'))

			table.insert(Datos, table.concat(Enlace))
		end
		if #Datos > 0 then return table.concat(Datos, '<br>') end
		return propiedad('P155', {['lista'] = 'nobullet'})
	end)()
	
	local Bandera		= argumentos{'imagen_bandera', {propiedad, 'P41', {['formato'] = 'archivo'}}}
	local TamanoBandera	= argumentos{'bandera_tamaño'} or '135x110px'
	local PieBandera	= enlazar(argumentos{'bandera'}, (argumentos{'bandera_denom'} or 'Bandera')) or enlazar('Bandera de ' .. (argumentos{'nombre_común'} or ''), (argumentos{'bandera_denom'} or 'Bandera')) or enlazar('Bandera de la ' .. (argumentos{'nombre_común'} or ''), (argumentos{'bandera_denom'} or 'Bandera'))

	local Escudo		= argumentos{'imagen_escudo', {propiedad, 'P94', {['formato'] = 'archivo'}}}
	local TamanoEscudo	= argumentos{'escudo_tamaño'} or '110x105px'
	local PieEscudo		= enlazar(argumentos{'símbolo'}, (argumentos{'escudo_denom'} or 'Escudo')) or enlazar('Escudo de ' .. (argumentos{'nombre_común'} or ''), (argumentos{'escudo_denom'} or 'Escudo')) or enlazar('Escudo de la ' .. (argumentos{'nombre_común'} or ''), (argumentos{'escudo_denom'} or 'Escudo'))

	local Mapa		= enlazar(argumentos{'imagen_mapa', 'mapa', {propiedad, 'P242', {['formato'] = 'archivo', ['uno'] = 'sí'}}}, {['tamaño'] = '250px', ['namespace'] = 6})
	local PieMapa	= argumentos{'pie_mapa'}
	
	local Capital = (function()
		local Capital				= argumentos{'capital', {propiedad, 'P36', ['uno'] = 'último', ['ordenar'] = 'por fecha'}}
		local CiudadMasPoblada		= argumentos{'ciudad_más_poblada'}
		local AglomeradoMasPoblado	= argumentos{'aglomerado_más_poblado'}
		
		if Capital == CiudadMasPoblada then return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]] <small>(y ' .. enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'ciudad más poblada') .. ')</small>', Capital}
		} end

		if Capital == AglomeradoMasPoblado then return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]] <small>(y ' .. enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'aglomerado urbano más poblado') .. ')</small>', Capital}
		} end
	
		return {
			tipo = 'sección',
			{'[[Capital (política)|Capital]]', Capital},
			{enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'ciudad más poblada'), CiudadMasPoblada},
			{enlazar('Demografía de ' .. ModuloPaginas.nombrePagina({desambiguar='sí'}), 'aglomerado urbano más poblado'), AglomeradoMasPoblado},
		}
	end)()
	
	local Lideres = (function()
		local Lideres		= (function()
			local Datos	= DatosPoliticos['líderes']
			local Valores	= {}
			for k, v in pairs(Datos) do
				Valor = (function()
					local Lider = v[1]
					local Anio	= v[2]
					if Lider then
						if Anio then return Lider .. '&nbsp;<small>(' .. Anio .. ')</small>' end
						return Lider
					end
				end)()
				if Valor then table.insert(Valores, Valor) end
			end
			if #Valores > 0 then return table.concat(Valores, '<br>') end
		end)()
		
		local Gobernantes	= (function()
			local Datos = DatosPoliticos['gobernantes']
			local Valores = {}
			for k, v in pairs(Datos) do
				Valor = (function()
					local Lider = v[1]
					local Anio	= v[2]
					if Lider then
						if Anio then return Lider .. '&nbsp;<small>(' .. Anio .. ')</small>' end
						return Lider
					end
				end)()
				if Valor then table.insert(Valores, Valor) end
			end
			if #Valores > 0 then return table.concat(Valores, '<br>') end
		end)()

		local Etiquetas		= DatosPoliticos['etiquetas']

		local Valores = {['tipo'] = 'sección', ['estiloetiqueta'] = EstiloEtiqueta ..';'..EstiloSubEtiqueta, ['estilodatos'] = EstiloDatos .. ';border-top:0;padding:0 .6em'}

		if Lideres then table.insert(Valores, {Etiquetas[1], Lideres}) end
		
		table.insert(Valores, {Etiquetas[2], Gobernantes})

		return Valores
	end)()

	local Superficie	= (function()
		local Valor = {}
		for i = 1, 20, 1 do
			Dato		= argumentos{'datos_superficie' .. i}
			if Dato == '' or Dato == nil then break end
			Anio		= argumentos{'datos_año' .. i}
			Dato		= formatoNumero(Dato) .. '&nbsp;km²'
			if Dato and Anio then Dato = Dato .. '&nbsp;(' .. enlazar(Anio) .. ')' end
			table.insert(Valor, Dato)
		end
		return table.concat(Valor, '<br>')
	end)()

	local Poblacion	= (function()
		local Valor = {}
		for i = 1, 20, 1 do
			Dato		= argumentos{'datos_población' .. i}
			if Dato == '' or not Dato then break end
			Anio		= argumentos{'datos_año' .. i}
			Densidad	= (function() if tonumber(Dato) and tonumber(argumentos{'datos_superficie' .. i}) then return formatoNumero((tonumber(Dato)/tonumber(argumentos{'datos_superficie' .. i})), {['decimales'] = 2}) end end)()
			Ref			= argumentos{'ref_población' .. i}

			Dato		= formatoNumero(Dato) .. '&nbsp;hab.'
			if Anio then Dato = Dato .. '&nbsp;(' .. Anio .. ')' end
			if Ref then Dato = Dato .. Ref end
			if Densidad then Dato = Dato .. '<br><small>' .. Densidad .. '&nbsp;hab/km²</small>' end

			table.insert(Valor, Dato)
		end
		return table.concat(Valor, '<br>')
	end)()

	-- :: La ficha
	local TablaFicha = {
		titulo  			= Titulo,
		subtitulo			= Subtitulo,
		clase				= Clase,
		clasetitulo			= ClaseTitulo,
		estilotitulo		= EstiloTitulo,
		estilosubtitulo		= 'font-weight:bold; background-color:#cddeff',
		estiloseccion		= EstiloSeccion,
		estiloetiqueta		= EstiloEtiqueta,
		estilodatos			= EstiloDatos,
		-- Data esta implementación, las banderas irán arriba de las suseciones.
		imagenizquierda		= Bandera,
		["tamañoimagenizquierda"]	= TamanoBandera,
		imagenderecha		= Escudo,
		["tamañoimagenderecha"]		= TamanoEscudo,
		pieizquierdo		= PieBandera,
		piederecho			= PieEscudo,
		estilopie			= "font-size:88%",
		{
			tipo				= 'sucesión',
			color				= 'transparent',
			anterior			= Predecesor,
			actual				= Periodo,
			siguiente			= Sucesor,
		},
		{tipo='sección',
			{'', HimnoNacional},
		},
		{tipo='sección',
			--titulo  			= 'Ubicación',
			["tamañoimagen"]	= TamanoImagen,
			{'', Mapa},
		},
		{tipo='sección',
			--titulo  			= 'Información general',
			Capital,
			{'[[Sede de gobierno]]', SedeGobierno},
			{'Gentilicio', Gentilicio},
			Idiomas,
		},
		{tipo='sección',
			--titulo  = 'Información política',
			{'[[Forma de gobierno]]', FormaGobierno},
			Lideres,
			{'[[Órgano ejecutivo]]', OrganoEjecutivo},
			{'[[Órgano legislativo]]', OrganoLegislativo},
			{'[[Estado confesional|Religión]]', Religion},
		},
		Historia, -- Esto formatea los hitos como la independencia
		{tipo='sección',
			--titulo  	= 'Información geográfica',
			{'[[Superficie terrestre|Superficie]]', Superficie},
			{'[[Anexo:Países y territorios dependientes por población|Población]]', Poblacion},
			{'[[Frontera]]s', Fronteras},
			{'[[Línea de costa]]', LineaDeCosta},
			{'[[Anexo:Países por punto más alto|Punto más alto]]', PuntoMasAlto},
			{'Punto más bajo', PuntoMasBajo},
			{'Punto más oriental', PuntoMasOriental},
			{'Punto más occidental', PuntoMasOccidental},
			{'Punto más septentrional', PuntoMasSeptentrional},
			{'Punto más meridional', PuntoMasMeridional},
		},
		{tipo='sección',
			--titulo  	= 'Información socioeconómica',
			{'[[Moneda (divisa)|Moneda]]', Moneda},
		},
		{tipo='sección',
			estilodatos = 'padding:0',
			{'', SitioWeb},
		},
		{tipo='sección',
			estilodatos = 'padding:0',
			MiembroDe,
		},
		estilopiedetabla	= 'text-align:left',
		piedetabla			= Notas,
	}
	return infobox(TablaFicha)
end

-- Esta función permite obtener los líderes de la entidad, además de
-- preformatear datos según el tipo de gobierno.
function obtenerLideres()
	local FormaGobiernoID	= propiedad('P122', {['formato'] = 'entidadID'})
	local Organismo			= ModuloWikidata.obtenerEtiquetaWikidata(Entidad) or ModuloPaginas.nombrePagina({desambiguar='sí'})

	FormaGobierno		= argumentos{'gobierno', 'forma_de_gobierno', {propiedad, 'P122', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
	OrganoEjecutivo		= argumentos{'órgano_ejecutivo',{propiedad, 'P208', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
	OrganoLegislativo	= argumentos{'órgano_legislativo',{propiedad, 'P194', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}

	local Datos			= {}
	Datos['líderes']	= {}
	Datos['gobernantes']= {}
	Datos['etiquetas']	= {}

	-- Presidencialismo
	if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P1906', {['formato'] = 'entidadID'})), 'P279', 'Q248577')
	or ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P1906', {['formato'] = 'entidadID'})), 'P279', 'Q30461')
	then
		table.insert(Datos['líderes'], {
			argumentos{'nombre_líder1', 'líder1', 'líder' , {propiedad, 'P35', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}},
			argumentos{'año_líder1'}
		})
		table.insert(Datos['etiquetas'], argumentos{'título_líder1', (function()
			if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P35', {['formato'] = 'entidadID'})), 'P21', 'Q6581072') then return enlazar('Presidenta') end
			return enlazar('Presidente')
		end)})

		table.insert(Datos['líderes'], argumentos{'nombre_líder2', 'líder2'})--, {propiedad, 'P6149', {['uno'] = 'sí'}}} -- Buscar propiedad
		table.insert(Datos['etiquetas'], argumentos{'título_líder2', {enlazar, 'Vicepresidente'}})
		return Datos
	end

	-- Monarquía parlamentaria/constitucional
	if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P1906', {['formato'] = 'entidadID'})), 'P279', 'Q116') then
		table.insert(Datos['líderes'], {
			argumentos{'nombre_líder1', 'líder1', 'líder' , {propiedad, 'P35', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}},
			argumentos{'año_líder1'}
		})		table.insert(Datos['líderes'], argumentos{'nombre_líder2', 'líder2', {propiedad, 'P35', {['formato'] = 'enlace', ['calificador'] = 'P1393', ['ordenar'] = 'por fecha', ['uno'] = 'último', ['valor_posicional'] = 'último', ['valor_posicional_calif'] = 'último'}}})
		table.insert(Datos['líderes'], argumentos{'nombre_líder3', 'líder3', {propiedad, 'P6', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}})

		table.insert(Datos['etiquetas'], argumentos{'título_líder1', (function()
			if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P35', {['formato'] = 'entidadID'})), 'P21', 'Q6581072') then return enlazar('Reina') end
			return enlazar('Rey')
		end)})

		table.insert(Datos['etiquetas'], argumentos{'título_líder2', (function()
			if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P35', {['formato'] = 'entidadID', ['calificador'] = 'P1393', ['ordenar'] = 'por fecha', ['uno'] = 'último', ['valor_posicional'] = 'último', ['valor_posicional_calif'] = 'último'})), 'P21', 'Q6581072') then return enlazar('Gobernador general de ' .. Organismo, 'Gobernadora general') end
			return enlazar('Gobernador general de ' .. Organismo)
		end)})

		table.insert(Datos['etiquetas'], argumentos{'título_líder3', {enlazar, 'Primer ministro'}})

		return Datos
	end
	
	-- Se agregarán más formas de gobierno

	-- ::Por defecto
	return (function()
		local Lider1	= argumentos{'nombre_líder1', 'líder1', 'líder' , {propiedad, 'P35', {['uno'] = 'último', ['ordenar'] = 'por fecha'}}}
		local Lider1Anio= argumentos{'año_líder1'}
		local Lider1Etiq= argumentos{'título_líder1', 'título_líder', (function()
			if ModuloWikidata.esUnValor(mw.wikibase.getEntity(propiedad('P35', {['formato'] = 'entidadID'})), 'P21', 'Q6581072') then return enlazar('Jefe de estado', 'Jefa de estado') end
			return enlazar('Jefe de estado')
		end)()}

		table.insert(Datos['líderes'], {Lider1, Lider1Anio})
		table.insert(Datos['etiquetas'], Lider1Etiq)
		
		for i = 2, 20, 1 do
			if argumentos{'nombre_líder' .. i, 'líder' .. i} == '' or not argumentos{'nombre_líder' .. i, 'líder' .. i} then break end
			table.insert(Datos['líderes'], {
				argumentos{'nombre_líder' .. i, 'líder' .. i},
				argumentos{'año_líder' .. i}
			})
		end

		if argumentos{'título_gobernante'} then
			table.insert(Datos['etiquetas'], argumentos{'título_gobernante'})
			for i = 1, 20, 1 do
				if argumentos{'nombre_gobernante' .. i, 'gobernante' .. i} == '' or not argumentos{'nombre_gobernante' .. i, 'gobernante' .. i} then break end
				table.insert(Datos['gobernantes'], {
				argumentos{'nombre_gobernante' .. i, 'gobernante' .. i},
				argumentos{'año_gobernante' .. i}
			})
			end
		end
		return Datos
	end)()
end

-- Envoltura para la plantilla "Mapa de localización" y <mapframe>
function obtenerMapa(frame, parametros)
	if not parametros then parametros = {} end

	if parametros['latitude'] and parametros['longitude'] then
		--if parametros['tipo'] == 'interactivo' then return frame:preprocess('<mapframe frameless align=center width=275 height=250 zoom=' .. (tonumber(parametros['zoom']) or 10) .. ' latitude=' .. parametros['latitud'] .. ' longitude=' .. parametros['longitud'] ..' />') end

		-- Por alguna razón, esto arroja error al no entregar un valor de longitud válido,
		-- a pesar de que se está pasando como parámetro. Se deja para uso local.
		--return require('Módulo:Mapa_de_localización').main(frame, parametros)
	end
end

function seccionDesplegable(frame, titulo, lista, subseccion, minimo)
	if lista then
		if minimo == true or(string.len(lista) > (tonumber(minimo) or 400)) then
			if not titulo then titulo = 'Varios' end
			return {tipo='sección', estilodatos = 'padding:0', {'', frame:preprocess('{{Sección desplegable|align=left|estilotitulo=padding:.4em .6em;border-top:0;' .. (ColorEtiqueta~='' and ('background-color:' .. ColorEtiqueta) or '') .. '|título=' .. titulo .. '|datos='.. lista .. '}}')}}
		end

		if subseccion then
			return {
				tipo='sección',
				estiloetiqueta	= EstiloEtiqueta ..';'..EstiloSubEtiqueta,
				estilodatos		= EstiloDatos .. ';border-top:0;padding:0 .6em',
				{titulo, lista}}
		end
		return {tipo='sección', {titulo, lista}}
	end
end

function listaDesplegable(frame, titulo, lista, minimo)
	if lista then
		if minimo == true or(string.len(lista) > (tonumber(minimo) or 400)) then
			if not titulo then titulo = 'Varios' end
			return {tipo='sección', {'', frame:preprocess('{{Lista desplegable|título=' .. titulo .. '|1='.. lista .. '}}')}, estilodatos = 'text-align:left'}
		end
		return {tipo='sección', {titulo, lista}}
	end
end

function round(num, numDecimalPlaces)
	if type(num) == 'number' then
		return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
	else
		return num
	end
end

function code(content)
	if(content~=nil) then
		return '<code>'..content..'</code>'
	end
	return ''
end

function small(content)
	if(content~=nil) then
		return '<small>'..content..'</small>'
	end
	return ''
end

function nada(content) return content end

-- Función, propiedad() personalizada
function propiedad(idPropiedad, opciones, entidad, frame)
	if not entidad then entidad = Entidad end

	if entidad and entidad.claims and entidad.claims[idPropiedad] then
		if not opciones then
			opciones = {['linkback']='sí'}
		end

		local ValorPosicional = (function()
			if opciones['valor_posicional'] == 'último' then return -1 end
			if type(opciones['valor_posicional']) == 'number' then return opciones['valor_posicional'] end
			return 1
		end)()

		local ValorPosicionalCalif =(function()
			if opciones['valor_posicional_calif'] == 'último' then return -1 end
			if type(opciones['valor_posicional_calif']) == 'number' then return opciones['valor_posicional_calif'] end
			return 1
		end)()
		
		local Calificador = opciones['calificador']

		local Obj = (function()
			local Obj = (function()
				local Obj = elementoTabla(entidad, 'claims', idPropiedad)
				if ValorPosicional == -1 then return elementoTabla(Obj, #Obj) end
				return elementoTabla(Obj, ValorPosicional)
			end)()
			
			if Calificador then
				return (function()
					local Obj = elementoTabla(Obj, 'qualifiers', Calificador)
					if ValorPosicionalCalif == -1 then return elementoTabla(Obj, #Obj, 'datavalue') end
					return elementoTabla(Obj, ValorPosicionalCalif, 'datavalue')
				end)()
			end
			return elementoTabla(Obj, 'mainsnak', 'datavalue')
		end)()

		if Obj then
			Tipo	= elementoTabla(Obj, 'type')
			
			-- Devolver el ID de la entidad, para propiedades de entidad
			if opciones['formato'] == 'entidadID' then
				return elementoTabla(Obj, 'value', 'id')
			end
			
			-- Obtener la propiedad como cadena sin formato
			if opciones['formato'] == 'cadena' then
				opciones['linkback'] = 'no'
				if Tipo == 'string' then
					return elementoTabla(Obj, 'value')
				end
			end

			-- Devolver una cadena numérica correctamente formateada
			if opciones['formato'] == 'número' then
				if Tipo == 'quantity' then
					return formatoNumero(elementoTabla(Obj, 'value', 'amount'))
				end
			end
	
			-- Devolver una cadena numérica con su unidad
			if opciones['formato'] == 'unidad' then
				if elementoTabla(entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue') then
					return formatoNumero(elementoTabla(entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue', 'value', 'amount')) .. '&nbsp;-&nbsp;' .. numeroUnidad(elementoTabla(entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue'), opciones)
				else
					return numeroUnidad(elementoTabla(entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'), opciones)
				end
			end
			
			-- Obtener la propiedad como cadena sin formato
			if opciones['formato'] == 'enlace' then
				opciones['linkback'] = 'no'
				if Tipo == 'wikibase-entityid' then
					return enlazar(ModuloWikidata.obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(Obj, 'value', 'id'))))
				elseif Tipo == 'string' then
					return enlazar(elementoTabla(Obj, 'value'))
				end
			end
			
			-- Preparar para devolver el archivo más reciente en la propiedad. Buscar cómo hacerlo con los calificadores
			if opciones['formato'] == 'archivo' then
				if Calificador then return elementoTabla(Obj, 'value') end
				if not opciones['uno'] then opciones['uno'] = 'último' end
				opciones['ordenar'] = 'por fecha'
			end
			
			if Tipo == 'globecoordinate' then
				if opciones['formato'] == 'latitud' then return elementoTabla(Obj, 'value', 'latitude') end
				if opciones['formato'] == 'longitud' then return elementoTabla(Obj, 'value', 'longitude') end
			end
		end

		-- Invocar a la función fallback si no se cumplen las condiciones anteriores
		opciones.entityId  = entidad.id
		opciones.propiedad = idPropiedad
		return ModuloWikidata.getPropiedad(opciones, entidad.claims[idPropiedad])
	end
end

function categorizar(cat)
	categorias = categorias .. '[[Categoría:'..cat..']]'
end

return p