Diferencia entre revisiones de «Módulo:Ficha de personaje»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
mSin resumen de edición
mSin resumen de edición
Línea 39: Línea 39:
end
end


local Alias = argumentos{'sobrenombre', 'alias'} or propiedad('P1449') or ''
local Alias = argumentos{'sobrenombre', 'alias', {propiedad, 'P1449'}} or ''
local FechaNac = argumentos{'nacido'} or propiedad('P569', {['uno'] = 'sí'}) or ''
local FechaNac = argumentos{'nacido', {propiedad, 'P569', {['uno'] = 'sí'}}} or ''
local FechaFall = argumentos{'fallecido'} or propiedad('P570', {['uno'] = 'sí'}) or ''
local FechaFall = argumentos{'fallecido', {propiedad, 'P570', {['uno'] = 'sí'}}} or ''
local Raza = argumentos{'raza'} or propiedad('P4743', {['uno'] = 'sí'}) or ''
local Raza = argumentos{'raza', {propiedad, 'P4743', {['uno'] = 'sí'}}} or ''
local Genero = argumentos{'sexo', 'género'} or propiedad('P21', {['uno'] = 'sí'}) or ''
local Genero = argumentos{'sexo', 'género', {propiedad, 'P21', {['uno'] = 'sí'}}} or ''


local Edad = argumentos{'edad'} or numeroUnidad(elementoTabla(Entidad, 'claims', 'P6249', 1, 'mainsnak', 'datavalue', 'value')) or ''
local Edad = argumentos{'edad'} or numeroUnidad(elementoTabla(Entidad, 'claims', 'P6249', 1, 'mainsnak', 'datavalue', 'value')) or ''
Línea 69: Línea 69:
end
end


local Cabello = argumentos{'pelo', 'cabello'} or propiedad('P1884', {['uno'] = 'sí'}) or ''
local Cabello = argumentos{'pelo', 'cabello', {propiedad, 'P1884', {['uno'] = 'sí'}}} or ''
local Ojos = argumentos{'ojos'} or propiedad('P1340', {['uno'] = 'sí'}) or ''
local Ojos = argumentos{'ojos', {propiedad, 'P1340', {['uno'] = 'sí'}}} or ''


-- :: Datos de personaje
-- :: Datos de personaje
local Poderes = argumentos{'especialidad', 'poderes'} or ''
local Poderes = argumentos{'especialidad', 'poderes'} or ''
local Habilidades = argumentos{'habilidad', 'ability'} or ''
local Habilidades = argumentos{'habilidad', 'ability'} or ''
local Ocupacion = argumentos{'ocupación'} or propiedad('P106') or ''
local Ocupacion = argumentos{'ocupación', {propiedad, 'P106'}} or ''
local TituloCortes = argumentos{'título'} or propiedad('P1035') or ''
local TituloCortes = argumentos{'título', {propiedad, 'P1035'}} or ''
local Equipamiento = argumentos{'equipamiento'} or ''
local Equipamiento = argumentos{'equipamiento'} or ''
local Miembros = argumentos{'miembros'} or '' --propiedad('') or ''
local Miembros = argumentos{'miembros'} or '' --propiedad('') or ''
Línea 82: Línea 82:
local Aliados = argumentos{'aliados'} or '' --propiedad('') or ''
local Aliados = argumentos{'aliados'} or '' --propiedad('') or ''
local Enemigos = argumentos{'enemigos'} or '' --propiedad('') or ''
local Enemigos = argumentos{'enemigos'} or '' --propiedad('') or ''
local Afiliaciones = argumentos{'afiliaciones'} or propiedad('P1416') or ''
local Afiliaciones = argumentos{'afiliaciones', {propiedad, 'P1416'}} or ''
local AfilAnt = argumentos{'afiliaciones_anteriores'} or ''
local AfilAnt = argumentos{'afiliaciones_anteriores'} or ''
local Familia = argumentos{'familia'} or propiedad('P53') or ''
local Familia = argumentos{'familia', {propiedad, 'P53'}} or ''
local Conexiones = argumentos{'conexiones'} or ''
local Conexiones = argumentos{'conexiones'} or ''
local Conyuge = argumentos{'cónyuge'} or propiedad('P26') or ''
local Conyuge = argumentos{'cónyuge', {propiedad, 'P26'}} or ''
local Pareja = argumentos{'pareja'} or propiedad('P451') or ''
local Pareja = argumentos{'pareja', {propiedad, 'P451'}} or ''


local Padres = argumentos{'padres'}
local Padres = argumentos{'padres'}
Línea 94: Línea 94:
if not Padres then
if not Padres then
Padres = {}
Padres = {}
Padre = argumentos{'padre'} or propiedad('P22')
Padre = argumentos{'padre', {propiedad, 'P22'}}
Madre = argumentos{'madre'} or propiedad('P25')
Madre = argumentos{'madre', {propiedad, 'P25'}}
if Padre then table.insert(Padres, Padre) end
if Padre then table.insert(Padres, Padre) end
if Madre then table.insert(Padres, Madre) end
if Madre then table.insert(Padres, Madre) end
Línea 101: Línea 101:
end
end


local Hijos = argumentos{'hijos'} or propiedad('P40') or ''
local Hijos = argumentos{'hijos', {propiedad, 'P40'}} or ''
local Familiares = argumentos{'familiares', 'parientes'} or propiedad('P1038') or ''
local Familiares = argumentos{'familiares', 'parientes', {propiedad, 'P1038'}} or ''
local Residencia = argumentos{'residencia'} or propiedad('P551') or ''
local Residencia = argumentos{'residencia', {propiedad, 'P551'}} or ''
local Religion = argumentos{'religión', 'credo'} or propiedad('P140') or ''
local Religion = argumentos{'religión', 'credo', {propiedad, 'P140'}} or ''
local Nacionalidad = argumentos{'nacionalidad'} or propiedad('P27') or ''
local Nacionalidad = argumentos{'nacionalidad', {propiedad, 'P27'}} or ''
local EstadoActual = argumentos{'estatus', 'status', 'estado'} or ''
local EstadoActual = argumentos{'estatus', 'status', 'estado'} or ''


Línea 131: Línea 131:


-- :: Autoría
-- :: Autoría
local Autor = argumentos{'creador', 'autor'} or propiedad('P170') or ''
local Autor = argumentos{'creador', 'autor', {propiedad, 'P170'}} or ''
local Interprete = argumentos{'actor'} or propiedad('P175', {['lista'] = 'nobullet'}) or ''
local Interprete = argumentos{'actor', {propiedad, 'P175', {['lista'] = 'nobullet'}}} or ''
local Voz = argumentos{'voz', 'doblador', 'seiyu'} or propiedad('P725') or ''
local Voz = argumentos{'voz', 'doblador', 'seiyu', {propiedad, 'P725'}} or ''
local VozLatam = argumentos{'doblador_hispanoamérica', 'doblador hispanoamérica'} or ''
local VozLatam = argumentos{'doblador_hispanoamérica', 'doblador hispanoamérica'} or ''
local VozEsp = argumentos{'doblador_españa', 'doblador españa'} or ''
local VozEsp = argumentos{'doblador_españa', 'doblador españa'} or ''
local Editorial = argumentos{'editorial'} or propiedad('P123') or ''
local Editorial = argumentos{'editorial', {propiedad, 'P123'}} or ''


-- :: Fechas
-- :: Fechas
local Debut = argumentos{'primera_aparición', 'primera', 'debut'} or propiedad('P4584') or propiedad('P580') or ''
local Debut = argumentos{'primera_aparición', 'primera', 'debut', {propiedad, 'P4584'}, {propiedad, 'P580'}} or ''
local Retiro = argumentos{'última_aparición', 'ultima', 'última'} or propiedad('P582') or ''
local Retiro = argumentos{'última_aparición', 'ultima', 'última', {propiedad, 'P582'}} or ''
local MotivoRetiro = argumentos{'última_aparición_causa', 'causa'}
local MotivoRetiro = argumentos{'última_aparición_causa', 'causa'}
if MotivoRetiro then Retiro = Retiro .. '<small>(' .. MotivoRetiro .. ')</small>' end
if MotivoRetiro then Retiro = Retiro .. '<small>(' .. MotivoRetiro .. ')</small>' end
Línea 278: Línea 278:
local Subtitulo
local Subtitulo


local Franquicia = argumentos{'obra'} or propiedad('P8345', {['uno'] = 'sí', ['link'] = 'sí'}) or propiedad('P1441', {['uno'] = 'sí', ['link'] = 'sí'})
local Franquicia = argumentos{'obra', {propiedad, 'P8345', {['uno'] = 'sí', ['link'] = 'sí'}}, {propiedad, 'P1441', {['uno'] = 'sí', ['link'] = 'sí'}}}
if next(Pokedex) then
if next(Pokedex) then
Subtitulo = '[[Pokémon]]'
Subtitulo = '[[Pokémon]]'

Revisión del 17:21 19 sep 2020

Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Este es un módulo que pretende reemplazar a la actual plantilla {{Ficha de personaje}}, con el propósito de hacer labores más complejas, como la integración con Wikidata, además de fusionar {{Ficha de pokémon}} aquí, e interoperabilidad con Módulo:Ficha animanga/Ficha. Este módulo es usado por {{Ficha de personaje/zona de pruebas}}.

Uso

{{#invoke:Ficha de personaje|Ficha}}

Transclusión con diferentes ejemplos

La plantilla {{Ficha de personaje/zona de pruebas}} es usada en los siguientes artículos:

Además, se proveen los siguientes ejemplos:

Pikachu (Q9351)

Al ser un Pokémon (instancia de (P31)Pokémon de tipo eléctrico (Q25930719)subclase de (P279)especie de Pokémon (Q3966183)), el módulo toma valores específicos y los formatea de manera específica, para imitar el comportamiento de la plantilla {{Ficha de pokémon}}, solo que los datos de la Pokédex se muestran debajo, y el color de la ficha se basa en el tipo primario (Q25931659) (en base a instancia de (P31) → Pokémon de cierto tipo → subclase de (P279)especie de Pokémon (Q3966183)), definido en Módulo:Ficha de personaje/Pokémon. En otros casos específicos, el color de la ficha se basa en el color de pelo (P1884) (véase el ejemplo sobre Vocaloid).

La clase CSS para esto es animanga.

Original
Pikachu
Pokédex Nacional
Arbok - Pikachu (#25) - Raichu

Pokédex Johto
Pichu - Pikachu (#22) - Raichu

Pokédex Hoenn
Pichu - Pikachu (#156) - Raichu

Pokédex Sinnoh
Ning - Pikachu (#104) - Raichu

Pokédex Kalos Centro
Pichu - Pikachu (#36) - Raichu

Pokédex Alola
Pichu - Pikachu (#25) - Raichu
N. japonés ピカチュウ (Pikachu)
Etapa 0
Preevolución Pichu
Evolución Raichu
Generación Primera
Especie Pokémon ratón
Tipo
Altura 0.4 m
Peso 6 kg
Habilidad Electricidad estática, cuando entra en contacto corporal con el rival, a veces lo paraliza.
Propuesta
Pikachu
Pokémon
Creador(es) Ken Sugimori Ver y modificar los datos en Wikidata
Voz original Ikue Ōtani y Ryan Reynolds Ver y modificar los datos en Wikidata
Primera aparición Pokémon Rojo y Azul
Datos del Pokémon
Nombre original ピカチュウ (Pikachu)
Estatura 0,4 m
Especie Pokémon ratón
Tipo eléctrico
Habilidades Electricidad estática, cuando entra en contacto corporal con el rival, a veces lo paraliza.
Linea evolutiva (Básico)
Pichu
Pikachu
Raichu
Pokédex nacional / Kanto (#25)
Arbok
Pikachu
Raichu
Pokédex de Johto (#22)
Pichu
Pikachu
Raichu
Pokédex de Hoenn (#156)
Pichu
Pikachu
Raichu
Pokédex de Sinnoh (#104)
Pichu
Pikachu
Raichu
Pokédex de Kalos Centro (#36)
Pichu
Pikachu
Raichu
Pokédex de Alola (#25)
Pichu
Pikachu
Raichu
Pokédex de Galar (#194)
Pichu
Pikachu
Raichu
Ficha en IMDb
Propuesta (sin datos locales)
Pikachu
Pokémon
Creador(es) Ken Sugimori Ver y modificar los datos en Wikidata
Voz original Ikue Ōtani y Ryan Reynolds Ver y modificar los datos en Wikidata
Primera aparición Pokémon Rojo y Pokémon Azul y primera generación de Pokémon Ver y modificar los datos en Wikidata
Datos del Pokémon
Nombre original ピカチュウ (Pikachu)
Tipo eléctrico
Linea evolutiva (Básico)
Pichu
Pikachu
Raichu
Pokédex nacional / Kanto (#25)
Arbok
Pikachu
Raichu
Pokédex de Johto (#22)
Pichu
Pikachu
Raichu
Pokédex de Hoenn (#163)
Pichu
Pikachu
Raichu
Pokédex de Sinnoh (#104)
Pichu
Pikachu
Raichu
Pokédex de Kalos Centro (#36)
Pichu
Pikachu
Raichu
Pokédex de Galar (#194)
Pichu
Pikachu
Raichu
Ficha en IMDb

Mew (Q12342580)

Original
Ficha de personaje
Pokédex Nacional
Mewtwo - Ficha de personaje (#151) - Chikorita

Pokédex Johto
Mewtwo - Ficha de personaje (#250) - Celebi

Pokédex Sinnoh
- Ficha de personaje (#20) -
N. japonés ミュウ (Miyuu)
Etapa Básica
Preevolución No tiene
Evolución No tiene
Generación Primera
Especie Pokémon psi
Tipo
Altura 0,4 m
Peso 4,0 kg
Habilidad Sincronía
Propuesta (con datos locales)
Mew
Pokémon
Creador(es) Shigeki Morimoto Ver y modificar los datos en Wikidata
Primera aparición primera generación de Pokémon Ver y modificar los datos en Wikidata
Datos del Pokémon
Nombre original ミュウ (Miyuu)
Género sexo desconocido
Estatura 0,4 m
Peso 4,0 kg
Tipo psíquico
Habilidades Sincronía
Pokédex nacional / Kanto (#151)
Mewtwo
Mew
Chikorita
Pokédex de Johto (#250)
Mewtwo
Mew
Celebi
Ficha en IMDb
Propuesta (sin datos locales)
Mew
Pokémon
Creador(es) Shigeki Morimoto Ver y modificar los datos en Wikidata
Primera aparición primera generación de Pokémon Ver y modificar los datos en Wikidata
Datos del Pokémon
Género sexo desconocido
Tipo psíquico
Pokédex nacional / Kanto (#151)
Mewtwo
Mew
Chikorita
Pokédex de Johto (#255)
Mewtwo
Mew
Celebi
Pokédex de Hoenn (#306)
Mewtwo
Mew
Chikorita
Ficha en IMDb

Bart Simpson (Q5480)

Original
Bart Simpson
Personaje de Los Simpson
Primera aparición Good Night (corto de The Tracey Ullman Show)
Creado por Matt Groening
Voz original Nancy Cartwright
Doblador en España Sara Vivas
Doblador en Hispanoamérica Bandera de México Marina Huerta (temp. 1-9, 16-presente), Claudia Mota (temp. 9-15), Maggie Vera (canciones; temp. 30-presente)
Información personal
Nombre de nacimiento Bartholomew Jo-Jo Simpson
Nacimiento 23 de febrero de 1979
Edad 10 años
Nacionalidad Estadounidense
Religión Protestante
Características físicas
Sexo Masculino
Color de pelo Rubio encrestado, con nueve puntas
Familia y relaciones
Familia Simpson
Padres Homer (padre), Marge (madre)
Cónyuge Jenda (en el futuro)
Otros familiares Lisa y Maggie (hermanas), Abraham (abuelo), Mona (abuela paterna), Jacqueline Bouvier (abuela materna), Patty y Selma Bouvier (tías), Herbert Powell (medio-tío), Ling Bouvier (prima).
Información profesional
Ocupación Estudiante de la escuela primaria de Springfield
Aliados Lisa Simpson
Milhouse Van Houten
Krusty el payaso
Martin Prince
Nelson Muntz
Ned Flanders
Seymour Skinner(Algunos Capítulos)
Enemigos Sideshow Bob
Nelson Muntz (al comienzo)
Jimbo Jones
Seymour Skinner
Sherri y Terri
Montgomery Burns
Russ Cargill
Perfil en IMDb
Propuesta
Bart Simpson
Personaje de Los Simpson
Creador(es) Matt Groening
Voz original Nancy Cartwright
Doblador en Hispanoamérica Bandera de México Marina Huerta (temp. 1-9, 16-presente), Claudia Mota (temp. 9-15), Maggie Vera (canciones; temp. 30-presente)
Doblador en España Sara Vivas
Primera aparición Good Night (corto de The Tracey Ullman Show)
Información
Nombre original Bartholomew Jo-Jo Simpson
Nacionalidad Estadounidense
Residencia Springfield Ver y modificar los datos en Wikidata
Religión Protestante
Fecha de nacimiento 23 de febrero de 1979
Género Masculino
Edad 10 años
Cabello Rubio encrestado, con nueve puntas
Ocupacion Estudiante de la escuela primaria de Springfield
Familia Simpson
Conyuge Jenda (en el futuro)
Padres Homer (padre), Marge (madre)
Familiares Lisa y Maggie (hermanas), Abraham (abuelo), Mona (abuela paterna), Jacqueline Bouvier (abuela materna), Patty y Selma Bouvier (tías), Herbert Powell (medio-tío), Ling Bouvier (prima).
Aliados Lisa Simpson
Milhouse Van Houten
Krusty el payaso
Martin Prince
Nelson Muntz
Ned Flanders
Seymour Skinner(Algunos Capítulos)
Enemigos Sideshow Bob
Nelson Muntz (al comienzo)
Jimbo Jones
Seymour Skinner
Sherri y Terri
Montgomery Burns
Russ Cargill
Ficha en IMDb
Propuesta (sin datos locales)
Bart Simpson
Personaje de Los Simpson
Creador(es) Matt Groening Ver y modificar los datos en Wikidata
Voz original Nancy Cartwright, Nathalie Bienaimé y Claudia Motta Ver y modificar los datos en Wikidata
Primera aparición Good Night Ver y modificar los datos en Wikidata
Información
Nombre original Bartholomew JoJo Simpson
Nacionalidad Estados Unidos Ver y modificar los datos en Wikidata
Residencia Springfield Ver y modificar los datos en Wikidata
Fecha de nacimiento 23 de febrero de 1979
Género masculino
Ocupacion alumno, Presidente de la Corte Suprema de los Estados Unidos y presentador de noticias Ver y modificar los datos en Wikidata
Familia familia Simpson Ver y modificar los datos en Wikidata
Padres Homer Simpson y Montgomery Burns Ver y modificar los datos en Wikidata
Marge Simpson Ver y modificar los datos en Wikidata
Familiares Abraham Simpson, Mona Simpson, Clancy Bouvier, Jacqueline Bouvier, Herb Powell, Abbie Simpson, Selma Bouvier, Patty Bouvier, Bill Simpson, Cyrus Simpson, Orville Simpson, Yuma Hickman, Pépé Bouvier, Bambi Bouvier, Gladys Gurney y Alvarine Gurney Ver y modificar los datos en Wikidata
Ficha en IMDb

Son Gokū (Q2142)

Este ejemplo ilustra la fusión de {{Ficha de personaje de manga y anime}}.

Estándar
Son Gokū

Figura de Son Gokū según su apariencia en sus primeras aventuras.
そん 悟空ごくう
(Son Gokū)
SexoMasculino
Fecha de nacimiento16 de abril de 736
Origen enManga
Primera apariciónVolumen 1 Capítulo 1(manga)
Episodio 1 de Dragon Ball (1986 anime; 1984 manga)
Dragon Ball
Edad 3 (Dragon Ball Minus)
13-20 (Dragon Ball)
25-48 (Dragon Ball Z)
40 (Gokū y sus Amigos Regresan)
42-44 (Dragon Ball Super)
44 (Super Dragon Ball Heroes (anime))
53-54 (Dragon Ball GT)
Peso89 kg
OcupacionArtista marcial
RelevanciaProtagonista de la serie
ProcedenciaPlaneta Vegeta
Monte Paozu
Maestro
EquipoZ-Fighters
Familia
Página no enlazada a Wikidata y añade el enlace en español: Módulo:Ficha de personaje.
Propuesta
Son Gokū
Personaje de Dragon Ball
Creador(es) Akira Toriyama Ver y modificar los datos en Wikidata
Interpretado por Justin Chatwin
Voz original Masako Nozawa, Sean Schemmel y Lex Lang Ver y modificar los datos en Wikidata
Primera aparición Dragon Ball Ver y modificar los datos en Wikidata
Información
Nombre original 孫 悟空
Residencia Kame House Ver y modificar los datos en Wikidata
Género Masculino
Cabello cabello negro
Ocupacion luchador, artista marcial, agricultor y guerrero Ver y modificar los datos en Wikidata
Conyuge Chichi Ver y modificar los datos en Wikidata
Padres Bardock Ver y modificar los datos en Wikidata
Gine Ver y modificar los datos en Wikidata
Hijos Son Gohan y Son Goten Ver y modificar los datos en Wikidata
Familiares Ox-King, Videl, Pan y Mr. Satán Ver y modificar los datos en Wikidata
Ficha en IMDb
Dragon BallEdad 3 (Dragon Ball Minus)
13-20 (Dragon Ball)
25-48 (Dragon Ball Z)
40 (Gokū y sus Amigos Regresan)
42-44 (Dragon Ball Super)
44 (Super Dragon Ball Heroes (anime))
53-54 (Dragon Ball GT)Peso89 kgOcupacionArtista marcialRelevanciaProtagonista de la serieProcedenciaPlaneta Vegeta
Monte PaozuMaestroEquipoZ-FightersFamilia Página no enlazada a Wikidata y añade el enlace en español: Módulo:Ficha de personaje.

Hatsune Miku (Q552682)

Este ejemplo ilustra la fusión de {{Infobox animanga vocaloid}}, junto con establecer el color de la ficha en base al color de pelo (P1884) del personaje, siempre que sea animanga.

  • Estándar: {{Ficha de software}} (la mayoría de los artículos sobre personajes de Vocaloid)
  • Propuesta: {{Infobox animanga vocaloid}} fue fusionada en este módulo, integrando tanto los datos del personaje como los del software de banco de voz. Usada solo por dos páginas.

El color de la ficha se determina por el color de pelo (P1884) del personaje, listado en Módulo:Ficha_de_personaje/Colores, siempre que se establezca el parámetro |color auto=, de lo contrario, se mostrará el color estándar.

La clase CSS para esto es animanga.

Estándar
Hatsune Miku (初音ミク)
Información general
Desarrollador Crypton Future Media
Lanzamiento inicial

31 de agosto del 2007

  • 30 de abril de 2010 (Hatsune Miku Append) - VOCALOID2
  • 31 de agosto de 2013 (Hatsune Miku V3 English) - VOCALOID3
  • 26 de septiembre de 2013 (Hatsune Miku V3) - VOCALOID3
  • 31 de agosto de 2016 (Hatsune Miku V4X) - VOCALOID4
  • 10 de septiembre de 2017 (Hatsune Miku V4C) - VOCALOID4
Licencia Propietaria
Idiomas Japonés, inglés, chino
Información técnica
Plataformas admitidas

VOCALOID2 , VOCALOID3, VOCALOID3 English VOCALOID4XB Beta VOCALOID4X VOCALOID4X English VOCALOID4XChinese

Piapro Studio
Enlaces
Propuesta
Hatsune Miku
Personaje de pop'n music
Interpretado por Saki Fujita
Información
Nombre original 初音ミク
Género femenino
Cabello turquoise hair

Esta documentación está transcluida desde Módulo:Ficha de personaje/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

local p = {}

local ModuloFicha				= require('Módulo:Ficha')
local ModuloWikidata			= require('Módulo:Wikidata')
local ModuloPaginas				= require('Módulo:Páginas')
local ModuloArgs    			= require('Módulo:Argumentos')
local elementoTabla				= require('Módulo:Tablas').elemento
local numeroUnidad				= require('Módulo:Wikidata/unidades').numeroUnidad
local formatoNumero				= require('Módulo:Wikidata/Formatos').formatoNumero2
local obtenerEtiquetaWikidata	= ModuloWikidata.obtenerEtiquetaWikidata
local argumentos				= ModuloArgs.obtenerValorDeArgumentos
local args
local Entidad
local InstanciaDeID

function p.Ficha(frame)
	-- :: Inicializardor
	ModuloWikidata:setFrame(frame)
	ModuloArgs.obtenerTablaDeArgumentos(frame)

	Entidad		= mw.wikibase.getEntityObject(argumentos{'id'}) or mw.wikibase.getEntityObject(argumentos{'entidad'}) or {}

	local InstanciaDe	= elementoTabla(Entidad, 'claims', 'P31', 1)
	if InstanciaDe then InstanciaDeID = elementoTabla(InstanciaDe, 'mainsnak', 'datavalue', 'value', 'id') end
	
	-- :: General
	local NombreOrig	= argumentos{'nombre_original', 'nombre original', 'real', 'nombrejapon', 'japanname', 'namejapon'}
	local NombreTransliterado
	if not NombreOrig then
		local NO		= elementoTabla(Entidad, 'claims', 'P1559', 1) or elementoTabla(Entidad, 'claims', 'P1705', 1)
		if NO then

			NombreOrig			= elementoTabla(NO, 'mainsnak', 'datavalue', 'value', 'text')
			NombreTransliterado = elementoTabla(NO, 'qualifiers', 'P2440', 1, 'datavalue', 'value')
			if NombreTransliterado then
				NombreOrig = NombreOrig .. ' (' .. NombreTransliterado .. ')'
			end
		end
	end

	local Alias			= argumentos{'sobrenombre', 'alias', {propiedad, 'P1449'}} or ''
	local FechaNac		= argumentos{'nacido', {propiedad, 'P569', {['uno'] = 'sí'}}} or ''
	local FechaFall		= argumentos{'fallecido', {propiedad, 'P570', {['uno'] = 'sí'}}} or ''
	local Raza			= argumentos{'raza', {propiedad, 'P4743', {['uno'] = 'sí'}}} or ''
	local Genero		= argumentos{'sexo', 'género', {propiedad, 'P21', {['uno'] = 'sí'}}} or ''

	local Edad			= argumentos{'edad'} or numeroUnidad(elementoTabla(Entidad, 'claims', 'P6249', 1, 'mainsnak', 'datavalue', 'value')) or ''

	local Estatura		= argumentos{'altura', 'metricheight'}
	if Estatura then Estatura = Estatura .. ' [[Metro|m]]'
	else
		local ES = elementoTabla(Entidad, 'claims', 'P2048', 1)
		if ES then
			Estatura = numeroUnidad(elementoTabla(ES, 'mainsnak', 'datavalue', 'value'))
		else
			Estatura = ''
		end
	end	

	local Peso			= argumentos{'peso', 'metricweight'}
	if Peso then Peso = Peso .. ' [[kg]]'
	else
		local PE = elementoTabla(Entidad, 'claims', 'P2067', 1)
		if PE then
			Peso = numeroUnidad(elementoTabla(PE, 'mainsnak', 'datavalue', 'value'))
		else
			Peso = ''
		end
	end		

	local Cabello		= argumentos{'pelo', 'cabello', {propiedad, 'P1884', {['uno'] = 'sí'}}} or ''
	local Ojos			= argumentos{'ojos', {propiedad, 'P1340', {['uno'] = 'sí'}}} or ''

	-- :: Datos de personaje
	local Poderes		= argumentos{'especialidad', 'poderes'} or ''
	local Habilidades	= argumentos{'habilidad', 'ability'} or ''
	local Ocupacion		= argumentos{'ocupación', {propiedad, 'P106'}} or ''
	local TituloCortes	= argumentos{'título', {propiedad, 'P1035'}} or ''
	local Equipamiento	= argumentos{'equipamiento'} or ''
	local Miembros		= argumentos{'miembros'} or '' --propiedad('') or ''
	local ExMiembros	= argumentos{'exmiembros'} or ''
	local Aliados		= argumentos{'aliados'} or '' --propiedad('') or ''
	local Enemigos		= argumentos{'enemigos'} or '' --propiedad('') or ''
	local Afiliaciones	= argumentos{'afiliaciones', {propiedad, 'P1416'}} or ''
	local AfilAnt		= argumentos{'afiliaciones_anteriores'} or ''
	local Familia		= argumentos{'familia', {propiedad, 'P53'}} or ''
	local Conexiones	= argumentos{'conexiones'} or ''
	local Conyuge		= argumentos{'cónyuge', {propiedad, 'P26'}} or ''
	local Pareja		= argumentos{'pareja', {propiedad, 'P451'}} or ''

	local Padres		= argumentos{'padres'}
	local Padre
	local Madre
	if not Padres then
		Padres			= {}
		Padre			= argumentos{'padre', {propiedad, 'P22'}}
		Madre			= argumentos{'madre', {propiedad, 'P25'}}
		if Padre then table.insert(Padres, Padre) end
		if Madre then table.insert(Padres, Madre) end
		Padres			= table.concat(Padres, '<br>')
	end

	local Hijos			= argumentos{'hijos', {propiedad, 'P40'}} or ''
	local Familiares	= argumentos{'familiares', 'parientes', {propiedad, 'P1038'}} or ''
	local Residencia	= argumentos{'residencia', {propiedad, 'P551'}} or ''
	local Religion		= argumentos{'religión', 'credo', {propiedad, 'P140'}} or ''
	local Nacionalidad	= argumentos{'nacionalidad', {propiedad, 'P27'}} or ''
	local EstadoActual	= argumentos{'estatus', 'status', 'estado'} or ''

	-- :: Datos extra	
	local Extra1Etiq	= argumentos{'etiqueta21', 'lbl21'} or ''
	local Extra1Dato	= argumentos{'datos21', 'data21'} or ''
	local Extra2Etiq	= argumentos{'etiqueta22', 'lbl22'} or ''
	local Extra2Dato	= argumentos{'datos22', 'data22'} or ''
	local Extra3Etiq	= argumentos{'etiqueta23', 'lbl23'} or ''
	local Extra3Dato	= argumentos{'datos23', 'data23'} or ''
	local Extra4Etiq	= argumentos{'etiqueta24', 'lbl24'} or ''
	local Extra4Dato	= argumentos{'datos24', 'data24'} or ''
	local Extra5Etiq	= argumentos{'etiqueta25', 'lbl25'} or ''
	local Extra5Dato	= argumentos{'datos25', 'data25'} or ''
	local Extra6Etiq	= argumentos{'etiqueta31', 'lbl31'} or ''
	local Extra6Dato	= argumentos{'datos31', 'data31'} or ''
	local Extra7Etiq	= argumentos{'etiqueta32', 'lbl32'} or ''
	local Extra7Dato	= argumentos{'datos32', 'data32'} or ''
	local Extra8Etiq	= argumentos{'etiqueta33', 'lbl33'} or ''
	local Extra8Dato	= argumentos{'datos33', 'data33'} or ''
	local Extra9Etiq	= argumentos{'etiqueta34', 'lbl34'} or ''
	local Extra9Dato	= argumentos{'datos34', 'data34'} or ''
	local Extra10Etiq	= argumentos{'etiqueta35', 'lbl35'} or ''
	local Extra10Dato	= argumentos{'datos35', 'data35'} or ''

	-- :: Autoría
	local Autor			= argumentos{'creador', 'autor', {propiedad, 'P170'}} or ''
	local Interprete	= argumentos{'actor', {propiedad, 'P175', {['lista'] = 'nobullet'}}} or ''
	local Voz			= argumentos{'voz', 'doblador', 'seiyu', {propiedad, 'P725'}} or ''
	local VozLatam		= argumentos{'doblador_hispanoamérica', 'doblador hispanoamérica'} or ''
	local VozEsp		= argumentos{'doblador_españa', 'doblador españa'} or ''
	local Editorial		= argumentos{'editorial', {propiedad, 'P123'}} or ''

	-- :: Fechas
	local Debut			= argumentos{'primera_aparición', 'primera', 'debut', {propiedad, 'P4584'}, {propiedad, 'P580'}} or ''
	local Retiro		= argumentos{'última_aparición', 'ultima', 'última', {propiedad, 'P582'}} or ''
	local MotivoRetiro	= argumentos{'última_aparición_causa', 'causa'}
	if MotivoRetiro then Retiro = Retiro .. '<small>(' .. MotivoRetiro .. ')</small>' end
	
	-- :: Datos externos
	local imdbId, filmaffinityId, seccionEnlacesExternos
	if argumentos{'test'} == 'sí' then
		seccionEnlacesExternos = frame:preprocess('<small>{{#Invoke:listas|listahtml|clase=hlist'..
			'|'..((propiedad('P3593', {['uno'] = 'sí'}) and '[http://www.afi.com/members/catalog/DetailView.aspx?s=&Movie='..propiedad('P3593', {['uno'] = 'sí'})..' AFI]') or '')..
			'|'..((propiedad('P1562', {['uno'] = 'sí'}) and '[http://www.allmovie.com/movie/'..propiedad('P1562', {['uno'] = 'sí'})..' AllMovie]') or '')..
			'|'..((propiedad('P1237', {['uno'] = 'sí'}) and '[http://www.boxofficemojo.com/movies/?id='..propiedad('P1237', {['uno'] = 'sí'})..' Box Office Mojo]') or '')..
			'|'..((propiedad('P480', {['uno'] = 'sí'}) and '[https://www.filmaffinity.com/es/film'..propiedad('P480', {['uno'] = 'sí'})..'.html FilmAffinity]') or '')..
			'|'..((propiedad('P345', {['uno'] = 'sí'}) and '[https://www.imdb.com/title/'..propiedad('P345', {['uno'] = 'sí'})..'/ IMDb]') or '')..
			'|'..((propiedad('P1712', {['uno'] = 'sí'}) and '[http://www.metacritic.com/'..propiedad('P1712', {['uno'] = 'sí'})..' Metacritic]') or '')..
			'|'..((propiedad('P3302', {['uno'] = 'sí'}) and '[https://www.omdb.org/movie/'..propiedad('P3302', {['uno'] = 'sí'})..' omdb]') or '')..
			'|'..((propiedad('P1258', {['uno'] = 'sí'}) and '[https://www.rottentomatoes.com/'..propiedad('P1258', {['uno'] = 'sí'})..' Rotten Tomatoes]') or '')..
			'|'..((propiedad('P1265', {['uno'] = 'sí'}) and '[http://www.sensacine.com/film/fichefilm_gen_cfilm='..propiedad('P1265', {['uno'] = 'sí'})..'.html SensaCine]') or '')..
			'|'..((propiedad('P2631', {['uno'] = 'sí'}) and '[http://tcmdb.com/title/title.jsp?stid='..propiedad('P2631', {['uno'] = 'sí'})..' TCM]') or '')..
			'|'..((propiedad('P2638', {['uno'] = 'sí'}) and '[http://www.tv.com/'..propiedad('P2638', {['uno'] = 'sí'})..' TV.com]') or '')..'}}</small>')
	else
		imdbId = propiedad('P345', {['uno'] = 'sí'})
		filmaffinityId = propiedad('P480', {['uno'] = 'sí'})
	end

	local enlaceImdb = imdbId and '[https://www.imdb.com/title/'..imdbId..'/ Ficha] en [[Internet Movie Database|IMDb]]'
	local enlaceFilmaffinity = filmaffinityId and '[https://www.filmaffinity.com/es/film'..filmaffinityId..'.html Ficha] en [[FilmAffinity]]'
	local identificadoresExternos
	
	if imdbId and filmaffinityId then
		identificadoresExternos = enlaceImdb..'<br />'..enlaceFilmaffinity
	elseif imdbId or filmaffinityId then 
		identificadoresExternos = enlaceImdb or enlaceFilmaffinity
	end

	-- :: Específicos de Pokémon
	local Pokedex			= obtenerPokedex(frame)
	local PokemonTipo		= Pokedex['tipo']
	local PokemonEspecie	= Pokedex['especie']
	local PokemonEtapa		= Pokedex['etapa']
	local DifrenciaGenero	= Pokedex['dif_genero'] or ''
	local Generacion		= Pokedex['generacion'] or argumentos{'generación', 'generation'}
	if not Debut == '' and Generacion then
		Debut = Debut .. '<br>(' .. Generacion .. ' generación)'
	elseif not Debut and Generacion then
		Debut = Generacion .. 'generación'
	end

	local Preevolucion		= Pokedex['preevolución']
	if Preevolucion then Preevolucion = enlazar(frame, Preevolucion) end
	
	local Evolucion			= Pokedex['evolución']
	if Evolucion then Evolucion = enlazar(frame, Evolucion) end

	-- Nacional / Kanto
	local PokedexNacNum		= Pokedex['pokedex_nac']
	local PokedexNacAnt		= Pokedex['anterior_nac'] or ''
	local PokedexNacSig		= Pokedex['siguiente_nac'] or ''
	local KantoTitulo		= '[[Pokédex#Pokédex_Nacional|Pokédex nacional]] / [[Anexo:Lugares_de_Pokémon#Kanto|Kanto]]'
	if PokedexNacNum then KantoTitulo = KantoTitulo .. ' (#' .. formatoNumero(PokedexNacNum) .. ')' end

	-- Johto
	local PokedexJotNum		= Pokedex['pokedex_jot']
	local PokedexJotAnt		= Pokedex['anterior_jot'] or ''
	local PokedexJotSig		= Pokedex['siguiente_jot'] or ''
	local JohtoTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Johto|Johto]]'
	if PokedexJotNum then JohtoTitulo = JohtoTitulo .. ' (#' ..  formatoNumero(PokedexJotNum) .. ')' end

	-- Hoenn
	local PokedexHoeNum		= Pokedex['pokedex_hoe']
	local PokedexHoeAnt		= Pokedex['anterior_hoe'] or ''
	local PokedexHoeSig		= Pokedex['siguiente_hoe'] or ''
	local HoennTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Hoenn|Hoenn]]'
	if PokedexHoeNum then HoennTitulo = HoennTitulo .. ' (#' ..  formatoNumero(PokedexHoeNum) .. ')' end

	-- Sinnoh
	local PokedexSinNum		= Pokedex['pokedex_sin']
	local PokedexSinAnt		= Pokedex['anterior_sin'] or ''
	local PokedexSinSig		= Pokedex['siguiente_sin'] or ''
	local SinnohTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Sinnoh|Sinnoh]]'
	if PokedexSinNum then SinnohTitulo = SinnohTitulo .. ' (#' ..  formatoNumero(PokedexSinNum) .. ')' end

	-- Teselia
	local PokedexTesNum		= Pokedex['pokedex_tes']
	local PokedexTesAnt		= Pokedex['anterior_tes'] or ''
	local PokedexTesSig		= Pokedex['siguiente_tes'] or ''
	local TeseliaTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Teselia|Teselia]]'
	if PokedexTesNum then TeseliaTitulo = TeseliaTitulo .. ' (#' ..  formatoNumero(PokedexTesNum) .. ')' end

	local PokedexTes2Num	= Pokedex['pokedex_te2']
	local PokedexTes2Ant	= Pokedex['anterior_te2'] or ''
	local PokedexTes2Sig	= Pokedex['siguiente_te2'] or ''
	local Teselia2Titulo	= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Teselia|Teselia]] ([[Pokémon negro 2 y Pokémon blanco 2|NB2]])'
	if PokedexTes2Num then Teselia2Titulo = Teselia2Titulo .. ' (#' ..  formatoNumero(PokedexTes2Num) .. ')' end

	-- Kalos
	local PokedexKalMonNum	= Pokedex['pokedex_kal_mon']
	local PokedexKalMonAnt	= Pokedex['anterior_kal_mon'] or ''
	local PokedexKalMonSig	= Pokedex['siguiente_kal_mon'] or ''
	local KalosMonTitulo	= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Kalos|Kalos Montaña]]'
	if PokedexKalMonNum then KalosMonTitulo = KalosMonTitulo .. ' (#' ..  formatoNumero(PokedexKalMonNum) .. ')' end

	local PokedexKalCenNum	= Pokedex['pokedex_kal_cen']
	local PokedexKalCenAnt	= Pokedex['anterior_kal_cen'] or ''
	local PokedexKalCenSig	= Pokedex['siguiente_kal_cen'] or ''
	local KalosCenTitulo	= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Kalos|Kalos Centro]]'
	if PokedexKalCenNum then KalosCenTitulo = KalosCenTitulo .. ' (#' ..  formatoNumero(PokedexKalCenNum) .. ')' end
	
	local PokedexKalCosNum	= Pokedex['pokedex_kal_cos']
	local PokedexKalCosAnt	= Pokedex['anterior_kal_cos'] or ''
	local PokedexKalCosSig	= Pokedex['siguiente_kal_cos'] or ''
	local KalosCosTitulo	= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Kalos|Kalos Costa]]'
	if PokedexKalCosNum then KalosCosTitulo = KalosCosTitulo .. ' (#' ..  formatoNumero(PokedexKalCosNum) .. ')' end

	-- Alola
	local PokedexAloNum		= Pokedex['pokedex_alo']
	local PokedexAloAnt		= Pokedex['anterior_alo'] or ''
	local PokedexAloSig		= Pokedex['siguiente_alo'] or ''
	local AlolaTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Alola|Alola]]'
	if PokedexAloNum then AlolaTitulo = AlolaTitulo .. ' (#' ..  formatoNumero(PokedexAloNum) .. ')' end

	-- Galar
	local PokedexGalNum		= Pokedex['pokedex_gal']
	local PokedexGalAnt		= Pokedex['anterior_gal'] or ''
	local PokedexGalSig		= Pokedex['siguiente_gal'] or ''
	local GalarTitulo		= '[[Pokédex]] de [[Anexo:Lugares_de_Pokémon#Galar|Galar]]'
	if PokedexGalNum then GalarTitulo = GalarTitulo .. ' (#' ..  formatoNumero(PokedexGalNum) .. ')' end

	-- :: Estilos
	local TipoCabecera		= argumentos{'tipocabecera'}
	local ColorTituloFondo	= argumentos{'piel', 'colorfondo'} or Pokedex['colortitulo'] or '#69A0F3'
	local ColorTituloTexto	= argumentos{'colortexto'} or Pokedex['colortexto'] or '#FFFFFF'
	local EstiloTitulo		= 'background:' .. ColorTituloFondo .. ';color:' .. ColorTituloTexto .. ';'
	local EstiloTabla		= 'background:#f9f9f9;'

	-- :: Cabecera ficha
	local Titulo		= argumentos{'nombre', 'nombre_personaje'} or obtenerEtiquetaWikidata(Entidad) or ModuloPaginas.nombrePagina({desambiguar='sí'})
	local Subtitulo

	local Franquicia	= argumentos{'obra', {propiedad, 'P8345', {['uno'] = 'sí', ['link'] = 'sí'}}, {propiedad, 'P1441', {['uno'] = 'sí', ['link'] = 'sí'}}}
	if next(Pokedex) then
		Subtitulo = '[[Pokémon]]'
	elseif
		Franquicia then Subtitulo = 'Personaje de ' .. Franquicia
	end

	local Imagen		= argumentos{'imagen', 'image'}
	local TamanoImagen	= argumentos{'image_width', 'tamaño imagen', 'tamaño_imagen'} or '250px'
	local Pie
	if Imagen then
		Pie				= argumentos{'pie', 'image_caption'} or ''
	else
		Imagen, Pie		= ModuloWikidata.obtenerImagenWikidata('P18')
	end
	
	local TituloPersonaje
	if next(Pokedex) then
		TituloPersonaje = "Datos del Pokémon"
	else
		TituloPersonaje = "Información"
	end
	
	local TituloEtapa = "Linea evolutiva"
	if PokemonEtapa then TituloEtapa = TituloEtapa .. ' (' .. PokemonEtapa .. ')' end

	local TablaFicha = {
--		entidad				= argumentos.id,
		titulo  			= Titulo,
		subtitulo			= Subtitulo,
		estilo				= EstiloTabla,
		clasetitulo			= ClaseTitulo,
		estilotitulo		= EstiloTitulo,
		estiloseccion		= EstiloTitulo,
		imagen				= Imagen,
		["tamañoimagen"]	= TamanoImagen,
		pie					= Pie,
		estilopie			= "font-size:88%",

		-- :: General
		{tipo="sección",
			{'Creador(es)', Autor},
			{'Interpretado&nbsp;por', Interprete},
			{'Voz original', Voz},
			{'Doblador en [[Hispanoamérica]]', VozLatam},
			{'Doblador en [[España]]', VozEsp},
			{'Primera&nbsp;aparición', Debut},
			{'Última&nbsp;aparición', Retiro},
			{'Motivo de retiro', MotivoRetiro},
			{'Editorial', Editorial},
		},

		{tipo="sección",
			titulo = TituloPersonaje,
			{'Nombre&nbsp;original', NombreOrig},
			{'Alias', Alias},
			{'Nacionalidad', Nacionalidad},
			{'Residencia', Residencia},
			{'Religión', Religion},
			{'Estado&nbsp;actual', EstadoActual},
			{'Fecha de nacimiento', FechaNac},
			{'Fecha de fallecimiento', FechaFall},
			{'Raza', Raza}, -- Para Pokémon, véase PokemonEspecie
			{'Género', Genero},
			{'Diferencia de género', DifrenciaGenero},
			{'Edad', Edad},
			{'Estatura', Estatura},
			{'Peso', Peso},
			{'Cabello', Cabello},
			{'Ojos', Ojos},
			{'Poderes', Poderes}, -- Para Pokémon, véase Habilidades
			{'Ocupacion', Ocupacion},
			{'Título', TituloCortes},
			{'Equipamiento', Equipamiento},
		},

		{tipo="sección",
			--titulo = "Información familiar",
			{'Familia', Familia},
			{'Conexiones', Conexiones},
			{'Conyuge', Conyuge},
			{'Pareja', Pareja},
			{'Padres', Padres},
			{'Hijos', Hijos},
			{'Familiares', Familiares},
		},

		{tipo="sección",
			--titulo = "Afiliaciones",
			{'Miembros', Miembros},
			{'Ex miembros', ExMiembros},
			{'Aliados', Aliados},
			{'Enemigos', Enemigos},
			{'Afiliaciones', Afiliaciones},
			{'Afiliaciones anteriores', AfilAnt},
		},

		-- :: Específicos de Pokémon
		{tipo="sección",
			{'Especie', PokemonEspecie},
			{'Tipo', PokemonTipo},
			{'Habilidades', Habilidades},
		},
		{tipo="sección",
			titulo = TituloEtapa,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= Preevolucion,
				['siguiente']		= Evolucion,
			},
		},
		{tipo="sección",
			titulo					= KantoTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexNacAnt,
				['siguiente']		= PokedexNacSig,
			},
		},
		{tipo="sección",
			titulo					= JohtoTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexJotAnt,
				['siguiente']		= PokedexJotSig,
			},
		},
		{tipo="sección",
			titulo					= HoennTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexHoeAnt,
				['siguiente']		= PokedexHoeSig,
			},
		},
		{tipo="sección",
			titulo					= SinnohTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexSinAnt,
				['siguiente']		= PokedexSinSig,
			},
		},
		{tipo="sección",
			titulo					= TeseliaTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexTesAnt,
				['siguiente']		= PokedexTesSig,
			},
		},
		{tipo="sección",
			titulo 					= Teselia2Titulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexTes2Ant,
				['siguiente']		= PokedexTes2Sig,
			},
		},
		{tipo="sección",
			titulo 					= KalosMonTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexKalMonAnt,
				['siguiente']		= PokedexKalMonSig,
			},
		},
		{tipo="sección",
			titulo 					= KalosCenTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexKalCenAnt,
				['siguiente']		= PokedexKalCenSig,
			},
		},
		{tipo="sección",
			titulo 					= KalosCosTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{'Número', PokedexKalCosNum},
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexKalCosAnt,
				['siguiente']		= PokedexKalCosSig,
			},
		},
		{tipo="sección",
			titulo 					= AlolaTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexAloAnt,
				['siguiente']		= PokedexAloSig,
			},
		},
		{tipo="sección",
			titulo 					= GalarTitulo,
			estilotitulo			= EstiloTabla,
			['ocultar_vacíos']		= 'sí',
			{
				['tipo']			= 'sucesión',
				['anterior']		= PokedexGalAnt,
				['siguiente']		= PokedexGalSig,
			},
		},

		{tipo="sección",
			titulo = "Datos extra",
			{Extra1Etiq, Extra1Dato},
			{Extra2Etiq, Extra2Dato},
			{Extra3Etiq, Extra3Dato},
			{Extra4Etiq, Extra4ato},
			{Extra5Etiq, Extra5Dato},
			{Extra6Etiq, Extra6Dato},
			{Extra7Etiq, Extra7Dato},
			{Extra8Etiq, Extra8Dato},
			{Extra9tiq, Extra9Dato},
			{Extra10Etiq, Extra10Dato},
		},

		piedetabla		= identificadoresExternos,
		estilopiedetabla= 'padding-top:10px'
	}

	return ModuloFicha.infobox(TablaFicha)
	
end

function obtenerPokedex(frame)
	local DatosPokemon	= mw.loadData('Módulo:Ficha de personaje/Pokémon')
	local Pokedex		= {}
	local PokedexDatos	= {}
	
	-- Etapas evolutivas
	local Preevolucion
	local Evolucion
	local Etapa
	
	-- Nacional / Kanto
	local PokedexNacNum
	local PokedexNacAnt
	local PokedexNacSig

	-- Johto
	local PokedexJotNum
	local PokedexJotAnt
	local PokedexJotSig

	-- Hoenn
	local PokedexHoeNum
	local PokedexHoeAnt
	local PokedexHoeSig

	-- Sinnoh
	local PokedexSinNum
	local PokedexSinAnt
	local PokedexSinSig

	-- Teselia
	local PokedexTesNum
	local PokedexTesAnt
	local PokedexTesSig

	local PokedexTes2Num
	local PokedexTes2Ant
	local PokedexTes2Sig

	-- Kalos
	local PokedexKalMonNum
	local PokedexKalMonAnt
	local PokedexKalMonSig

	local PokedexKalCenNum
	local PokedexKalCenAnt
	local PokedexKalCenSig
	
	local PokedexKalCosNum
	local PokedexKalCosAnt
	local PokedexKalCosSig

	-- Alola
	local PokedexAloNum
	local PokedexAloAnt
	local PokedexAloSig

	-- Galar
	local PokedexGalNum
	local PokedexGalAnt
	local PokedexGalSig
	
	-- Obtener el número en la Pokédex según el catálogo
	local PN = elementoTabla(Entidad, 'claims', 'P1685')
	if PN then
		for i,v in pairs(PN) do
			Numero		= elementoTabla(v, 'mainsnak', 'datavalue', 'value')
			Catalogo	= elementoTabla(v, 'qualifiers','P972', 1, 'datavalue', 'value', 'id')
			Anterior	= obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(v, 'qualifiers','P155', 1, 'datavalue', 'value', 'id')))
			if Anterior then 
				Anterior = enlazar(frame, Anterior)
			else
				Anterior = '--'
			end
			Siguiente	= obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(v, 'qualifiers','P156', 1, 'datavalue', 'value', 'id')))
			if Siguiente then 
				Siguiente = enlazar(frame, Siguiente)
			else
				Siguiente = '--'
			end
			PokedexDatos[Catalogo] = {Numero, Anterior, Siguiente}
		end
	end

	-- Pokédex Nacional
	if PokedexDatos['Q18086661'] then
		PokedexNacNum	= PokedexDatos['Q20005020'][1]
		PokedexNacAnt	= PokedexDatos['Q20005020'][2]
		PokedexNacSig	= PokedexDatos['Q20005020'][3]
	end
	
	-- Pokédex de Kanto
	if PokedexDatos['Q20005020'] then
		PokedexNacNum	= PokedexDatos['Q20005020'][1]
		PokedexNacAnt	= PokedexDatos['Q20005020'][2]
		PokedexNacSig	= PokedexDatos['Q20005020'][3]
	end

	-- Pokédex de Johto
	if PokedexDatos['Q11310550'] then
		PokedexJotNum	= PokedexDatos['Q11310550'][1]
		PokedexJotAnt	= PokedexDatos['Q11310550'][2]
		PokedexJotSig	= PokedexDatos['Q11310550'][3]
	end
	
	-- Pokédex de Johto revisada
	if PokedexDatos['Q18099930'] then
		PokedexJotNum	= PokedexDatos['Q18099930'][1]
		PokedexJotAnt	= PokedexDatos['Q18099930'][2]
		PokedexJotSig	= PokedexDatos['Q18099930'][3]
	end

	-- Pokédex de Hoenn
	if PokedexDatos['Q18086665'] then
		PokedexHoeNum	= PokedexDatos['Q18086665'][1]
		PokedexHoeAnt	= PokedexDatos['Q18086665'][2]
		PokedexHoeSig	= PokedexDatos['Q18086665'][3]
	end
	
	-- Pokédex de Hoenn revisada
	if PokedexDatos['Q18922463'] then
		PokedexHoeNum	= PokedexDatos['Q18922463'][1]
		PokedexHoeAnt	= PokedexDatos['Q18922463'][2]
		PokedexHoeSig	= PokedexDatos['Q18922463'][3]
	end

	-- Pokedex de Sinnoh
	if PokedexDatos['Q18086666'] then
		PokedexSinNum	= PokedexDatos['Q18086666'][1]
		PokedexSinAnt	= PokedexDatos['Q18086666'][2]
		PokedexSinSig	= PokedexDatos['Q18086666'][3]
	end

	-- Pokédex de Teselia
	if PokedexDatos['Q18086667'] then
		PokedexTesNum	= PokedexDatos['Q18086667'][1]
		PokedexTesAnt	= PokedexDatos['Q18086667'][2]
		PokedexTesSig	= PokedexDatos['Q18086667'][3]
	end
	
	-- Pokédex de Teselia revisada
	if PokedexDatos['Q18100125'] then
		PokedexTesNum	= PokedexDatos['Q18100125'][1]
		PokedexTesAnt	= PokedexDatos['Q18100125'][2]
		PokedexTesSig	= PokedexDatos['Q18100125'][3]
	end

	-- Kalos Montaña
	if PokedexDatos['Q18089575'] then
		PokedexKalMonNum= PokedexDatos['Q18089575'][1]
		PokedexKalMonAnt= PokedexDatos['Q18089575'][2]
		PokedexKalMonSig= PokedexDatos['Q18089575'][3]
	end

	-- Kalos Centro
	if PokedexDatos['Q18086671'] then
		PokedexKalCenNum= PokedexDatos['Q18086671'][1]
		PokedexKalCenAnt= PokedexDatos['Q18086671'][2]
		PokedexKalCenSig= PokedexDatos['Q18086671'][3]
	end

	-- Kalos Costa
	if PokedexDatos['Q18089574'] then
		PokedexKalCosNum= PokedexDatos['Q18089574'][1]
		PokedexKalCosAnt= PokedexDatos['Q18089574'][2]
		PokedexKalCosSig= PokedexDatos['Q18089574'][3]
	end

	-- Alola
	if PokedexDatos['Q25336664'] then
		PokedexAloNum	= PokedexDatos['Q25336664'][1]
		PokedexAloAnt	= PokedexDatos['Q25336664'][2]
		PokedexAloSig	= PokedexDatos['Q25336664'][3]
	end

	-- Galar
	if PokedexDatos['Q75387698'] then
		PokedexGalNum	= PokedexDatos['Q75387698'][1]
		PokedexGalAnt	= PokedexDatos['Q75387698'][2]
		PokedexGalSig	= PokedexDatos['Q75387698'][3]
	end

	-- Obtener las etapas evolutivas
	local FPD			= elementoTabla(Entidad, 'claims', 'P361') or {}
	for i,v in ipairs(FPD) do
		FormaParteDe			= mw.wikibase.getEntity(elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id'))
		if FormaParteDe then
			if elementoTabla(FormaParteDe, 'claims', 'P31', 1, 'mainsnak', 'datavalue', 'value', 'id') == 'Q15795637' then
				Preevolucion	= obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(v, 'qualifiers','P155', 1, 'datavalue', 'value', 'id')))
				Evolucion		= obtenerEtiquetaWikidata(mw.wikibase.getEntity(elementoTabla(v, 'qualifiers','P156', 1, 'datavalue', 'value', 'id')))
				Etapa			= elementoTabla(v, 'qualifiers','P1545', 1, 'datavalue', 'value') or argumentos{'etapa', 'stage'}
				if DatosPokemon['etapas'][Etapa] then Etapa = DatosPokemon['etapas'][Etapa] end
				break
			end
		end
	end

	-- Obtener el tipo de Pokémon
	local PokemonTipo		= {}
	local TipoPrimario		= argumentos{'tipo', 'type'}
	local TipoSecundario	= argumentos{'tipo2', 'type2'}
	local TipoTerciario		= argumentos{'tipo3', 'type3'}
	local ColorFondoPrimario
	local ColorTextoPrimario
	local ColorFondoSecundario
	local ColorTextoSecundario
	local ColorFondoTerciario
	local ColorTextoTerciario

	if not TipoPrimario then
		local PT			= elementoTabla(Entidad, 'claims', 'P31')
		for i,v in ipairs(PT) do
			Tipo	= elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id')

			if elementoTabla(v, 'qualifiers','P518', 1, 'datavalue', 'value', 'id') == 'Q25931659' then
				TipoPrimario = Tipo
			end

			if elementoTabla(v, 'qualifiers','P518', 1, 'datavalue', 'value', 'id') == 'Q25931668' then
				TipoSecundario = Tipo
			end
		end
	end

	if DatosPokemon['tipos'][TipoPrimario]  then
		TipoPrimario			= DatosPokemon['tipos'][TipoPrimario][1]
		ColorFondoPrimario		= DatosPokemon['tipos'][TipoPrimario][2]
		ColorTextoPrimario		= DatosPokemon['tipos'][TipoPrimario][3]
		table.insert(PokemonTipo,'<span style="border-radius:8px;padding:5px;background:' .. ColorFondoPrimario .. ';color:' .. ColorTextoPrimario .. ';" title="Pokémon tipo ' .. TipoPrimario .. '">' .. TipoPrimario)
	end
	
	if DatosPokemon['tipos'][TipoSecundario]  then
		TipoSecundario			= DatosPokemon['tipos'][TipoSecundario][1]
		ColorFondoSecundario	= DatosPokemon['tipos'][TipoSecundario][2]
		ColorTextoSecundario	= DatosPokemon['tipos'][TipoSecundario][3]
		table.insert(PokemonTipo,'<span style="border-radius:8px;padding:5px;background:' .. ColorFondoSecundario .. ';color:' .. ColorTextoSecundario .. ';" title="Pokémon tipo ' .. TipoSecundario .. '">' .. TipoSecundario)
	end
	
	if DatosPokemon['tipos'][TipoTerciario]  then
		TipoTerciario			= DatosPokemon['tipos'][TipoTerciario][1]
		ColorFondoSecundario	= DatosPokemon['tipos'][TipoTerciario][2]
		ColorTextoSecundario	= DatosPokemon['tipos'][TipoTerciario][3]
		table.insert(PokemonTipo,'<span style="border-radius:8px;padding:5px;background:' .. ColorFondoTerciario .. ';color:' .. ColorTextoTerciario .. ';" title="Pokémon tipo ' .. TipoTerciario .. '">' .. TipoTerciario)
	end

	if next(PokemonTipo) then Pokedex['tipo'] = table.concat(PokemonTipo, ' ') end

	-- :: General
	Pokedex['generacion']		= argumentos{'generación', 'generation'}
	Pokedex['especie']			= argumentos{'especie', 'species'}
	Pokedex['preevolución']		= argumentos{'preevolución', 'evolvesfrom'} or Preevolucion
	Pokedex['evolución']		= argumentos{'evolución', 'evolvesto'} or Evolucion
	Pokedex['etapa']			= Etapa
	Pokedex['dif_genero']		= argumentos{'diferencia'}
	
	-- :: Colores
	Pokedex['colortitulo']		= ColorFondoPrimario
	Pokedex['colortexto']		= ColorTextoPrimario

	-- :: Catálogo
	Pokedex['pokedex_nac']		= argumentos{'numero', 'número', 'number'} or PokedexNacNum
	Pokedex['anterior_nac']		= argumentos{'anterior', 'preceding'} or PokedexNacAnt
	Pokedex['siguiente_nac']	= argumentos{'siguiente', 'following'} or PokedexNacSig

	Pokedex['pokedex_jot']		= argumentos{'johtonumero'} or PokedexJotNum
	Pokedex['anterior_jot']		= argumentos{'johtoanterior'} or PokedexJotAnt
	Pokedex['siguiente_jot']	= argumentos{'johtosiguiente'} or PokedexJotSig

	Pokedex['pokedex_hoe']		= argumentos{'hoennumero'} or PokedexHoeNum
	Pokedex['anterior_hoe']		= argumentos{'hoennanterior'} or PokedexHoeAnt
	Pokedex['siguiente_hoe']	= argumentos{'hoennsiguiente'} or PokedexHoeSig

	Pokedex['pokedex_sin']		= argumentos{'shinounumero'} or PokedexSinNum
	Pokedex['anterior_sin']		= argumentos{'shinouanterior'} or PokedexSinAnt
	Pokedex['siguiente_sin']	= argumentos{'shinousiguiente'} or PokedexSinSig
	
	Pokedex['pokedex_tes']		= argumentos{'unovanumero', 'teselianumero'} or PokedexTesNum
	Pokedex['anterior_tes']		= argumentos{'unovaanterior', 'teseliaanterior'} or PokedexTesAnt
	Pokedex['siguiente_tes']	= argumentos{'unovasiguiente', 'teseliasiguiente'} or PokedexTesSig
	
	Pokedex['pokedex_te2']		= argumentos{'unovanumero2', 'teselianumero2'} or PokedexTes2Num
	Pokedex['anterior_te2']		= argumentos{'unovaanterior2', 'teseliaanterior2'} or PokedexTes2Ant
	Pokedex['siguiente_te2']	= argumentos{'unovasiguiente2', 'teseliasiguiente2'} or PokedexTes2Sig
	
	Pokedex['pokedex_kal_mon']	= argumentos{'kalosmontañanumero'} or PokedexKalMonNum
	Pokedex['anterior_kal_mon']	= argumentos{'kalosmontañaanterior'} or PokedexKalMonAnt
	Pokedex['siguiente_kal_mon']= argumentos{'kalosmontañasiguiente'} or PokedexKalMonSig
	
	Pokedex['pokedex_kal_cen']	= argumentos{'kaloscentronumero'} or PokedexKalCenNum
	Pokedex['anterior_kal_cen']	= argumentos{'kaloscentroanterior'} or PokedexKalCenAnt
	Pokedex['siguiente_kal_cen']= argumentos{'kaloscentrosiguiente'} or PokedexKalCenSig
	
	Pokedex['pokedex_kal_cos']	= argumentos{'kaloscostanumero'} or PokedexKalCosNum
	Pokedex['anterior_kal_cos']	= argumentos{'kaloscostaanterior'} or PokedexKalCosAnt
	Pokedex['siguiente_kal_cos']= argumentos{'kaloscostasiguiente'} or PokedexKalCosSig
	
	Pokedex['pokedex_alo']		= argumentos{'alolanumero'} or PokedexAloNum
	Pokedex['anterior_alo']		= argumentos{'alolaanterior'} or PokedexAloAnt
	Pokedex['siguiente_alo']	= argumentos{'alolasiguiente'} or PokedexAloSig
	
	Pokedex['pokedex_gal']		= argumentos{'galarnumero'} or PokedexGalNum
	Pokedex['anterior_gal']		= argumentos{'galaranterior'} or PokedexGalAnt
	Pokedex['siguiente_gal']	= argumentos{'galarsiguiente'} or PokedexGalSig

	return Pokedex
end

-- Alternativa a la función MóduloWikidata.propiedad(), que acepta
-- el valor de la propiedad como primer parámetro.
function propiedad(idPropiedad, opciones, entidad)
	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
		opciones.entityId  = entidad.id
		opciones.propiedad = idPropiedad
		valorPropiedad = ModuloWikidata.getPropiedad(opciones,entidad.claims[idPropiedad])
		return valorPropiedad
	end
end

-- Quick-and-dirty
function enlazar(frame, enlace)
	if frame:preprocess('{{#ifexist:' .. enlace .. '|1}}') == '1' then enlace = '[[' .. enlace .. ']]' end
	return enlace
end

return p