Module:Infobox Pokémon/test

De Poképédia
Aller à la navigation Aller à la recherche

Ce module est une version test du Module:Infobox Pokémon.


local p = {}

function separate_thousands(amount)
	local formatted = amount
	while true do
		formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1 %2')
		if (k==0) then
			break
		end
	end
	return formatted
end

-- remplace le point des decimales par une virgule dans une chaine, et ajoute une décimale quand il n'y en a pas
function decimal_dot_to_comma(str)
	if string.find(str, '%.')
	then return string.gsub(str,'%.',',')
	else return str .. ',0'
	end
end

-- convertit en nombre de pieds
function meters_to_feet_and_inches(str)
	local conversion = (tonumber(str) * 3.2808)
	return {feet = math.floor(conversion + 1/24), inches = math.floor((conversion - math.floor(conversion + 1/24)) * 12 + 0.5)}
end

-- convertit en nombre de livres
function kg_to_pounds(str)
	return math.floor((tonumber(str) * 2.2046)*10+0.5)/10
end

function nil_to_string(str)
	if str == nil
	then return ''
	else return str
	end
end

function association_region(frame, region)
	-- Jeux principaux

	if region == 'Kanto'					then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kanto|Kanto]]"
	elseif region == 'Kanto-LGPE'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kanto|Kanto]]" .. frame:expandTemplate{title='Sup', args={'LGPE'}}
	elseif region == 'Johto'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Johto|Johto]]" .. frame:expandTemplate{title='Sup', args={'OAC'}}
	elseif region == 'Johto-HGSS'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Johto (Pokémon Or HeartGold et Argent SoulSilver)|Johto]]" .. frame:expandTemplate{title='Sup', args={'HGSS'}}
	elseif region == 'Hoenn'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hoenn|Hoenn]]" .. frame:expandTemplate{title='Sup', args={'RSE'}}
	elseif region == 'Hoenn-ROSA'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hoenn (Pokémon Rubis Oméga et Saphir Alpha)|Hoenn]]" .. frame:expandTemplate{title='Sup', args={'ROSA'}}
	elseif region == 'Sinnoh'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Sinnoh|Sinnoh]]"
	elseif region == 'Sinnoh-Pt'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Sinnoh|Sinnoh]]" .. frame:expandTemplate{title='Sup', args={'Pt'}}
	elseif region == 'Unys'					then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Unys|Unys]]" .. frame:expandTemplate{title='Sup', args={'NB'}}
	elseif region == 'Unys-NB2'				then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Unys (Pokémon Noir 2 et Blanc 2)|Unys]]" .. frame:expandTemplate{title='Sup', args={'NB2'}}
	elseif region == 'Kalos (Centre)'		then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Centre)</b></small>"
	elseif region == 'Kalos (Côtes)'		then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Côtes)</b></small>"
	elseif region == 'Kalos (Monts)'		then return "[[Liste des Pokémon dans l'ordre du Pokédex de Kalos|Kalos]]<br/><small><b>(Monts)</b></small>"
	elseif region == 'Alola'				then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Alola|Alola]]" .. frame:expandTemplate{title='Sup', args={'SL'}}
	elseif region == 'Alola-USUL'			then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Alola (Pokémon Ultra-Soleil et Ultra-Lune)|Alola]]" .. frame:expandTemplate{title='Sup', args={'USUL'}}
	elseif region == 'Galar'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Galar|Galar]]"
	elseif region == 'Isolarmure'			then return "[[Liste des Pokémon dans l'ordre du Pokédex d'Isolarmure|Isolarmure]]"
	elseif region == 'Couronneige'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Couronneige|Couronneige]]"
	elseif region == 'Hisui'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Hisui|Hisui]]"
	elseif region == 'Paldea'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Paldea|Paldea]]"

	-- Jeux secondaires

	elseif region == 'Fiore'				then return "[[Liste des Pokémon dans l'ordre du Navigateur de Fiore|Fiore]]"
	elseif region == 'Almia'				then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Almia|Almia]]"
	elseif region == 'Oblivia (Présent)'	then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Oblivia (Présent)|Oblivia]]<br/><small><b>(Présent)</b></small>"
	elseif region == 'Oblivia (Passé)'		then return "[[Liste des Pokémon dans l'ordre du Navigateur d'Oblivia (Passé)|Oblivia]]<br/><small><b>(Passé)</b></small>"
	elseif region == 'Ransei'				then return "[[Liste des Pokémon de la région de Ransei|Ransei]]"
	elseif region == 'Ransei (Reshiram)'	then return "[[Liste des Pokémon de la région de Ransei|Ransei]]<br/><small><b>(DLC Reshiram)</b></small>"
	elseif region == 'PokéPark'				then return "[[Liste des Pokémon de PokéPark Wii : La Grande Aventure de Pikachu|PokéPark]]"
	elseif region == 'PokéPark 2'			then return "[[Liste des Pokémon de PokéPark 2 : Le Monde des Vœux|PokéPark 2]]"
	elseif region == 'Google Maps'			then return "[[Liste des Pokémon dans l'ordre du Pokédex de Google Maps: Pokémon Challenge|Google Maps:<br/><small>Pokémon Challenge]]</small>"
	elseif region == 'Shuffle'				then return "[[Liste des Pokémon dans l'ordre du Pokédex de Pokémon Shuffle|Shuffle]]"
	elseif region == 'Picross'				then return "[[Liste des niveaux de Pokémon Picross|Picross]]"
	elseif region == 'Picross (Alternatif)'	then return "[[Liste des niveaux de Pokémon Picross|Picross]]<br/><small><b>(Alternatif)</b></small>"
	elseif region == 'Lentis'				then return "[[Liste des Pokémon dans l'ordre du Photodex|Lentis]]"
	else return '<i>' .. region .. '</i>'
	end
end

function Set (list)
  local set = {}
  for _, l in ipairs(list) do set[l] = true end
  return set
end

local regions_navigateur = Set {'Fiore', 'Almia', 'Oblivia (Présent)', 'Oblivia (Passé)'}

function p.infobox(frame)
	local resultat = {}
	
	local debug_mode = frame.args['debug']
	debug_mode = (debug_mode == "oui")

	local nom = frame.args['nom']
	if nom == nil or nom == '' then nom = frame:getParent():getTitle() end
	local nom_anglais = frame.args['nom-anglais']
	if nom_anglais == nil or nom_anglais == '' then nom_anglais = '<i>Information manquante</i>' end
	local nom_japonais = frame.args['nom-japonais']
	local nom_romaji = frame.args['nom-romaji']
	local nom_depose = frame.args['nom-déposé']
	if nom_depose == nil or nom_depose == ''
	then if not (nom_romaji == nil or nom_romaji == '')
		then nom_depose = nom_romaji
			nom_romaji = ''
		end
	end
	local artwork = frame.args['artwork']
	if artwork == nil or artwork == '' then artwork = nom end
	artwork = mw.text.split(artwork, "/")
	local forme_principale = frame.args['forme-principale']

	local legende = frame.args['légende']

	local type1 = frame.args['type1']
	if type1 == nil or type1 == '' then type1 = "inconnu" end
	type1 = mw.text.split(type1, "/")
	local type2 = frame.args['type2']
	if type2 == '' or type2 == '-' or type2 == nil then type2 = {} else type2 = mw.text.split(type2, "/") end --on accepte que type2 soit nil
	local switch_artworks = frame.args['switch-artworks'] == 'oui'

	local ndex = frame.args['ndex']
	if ndex == nil or ndex == '' then ndex = "—" end
	local dex = frame.args['dex']
	local dex_secondaires = frame.args['dex-secondaires']
	local donnees = frame.args['données']
	donnees = donnees ~= 'non'
	local donnee_semantique_ndex = frame.args['donnée-sémantique-ndex']
	donnee_semantique_ndex = donnee_semantique_ndex ~= 'non'
	local categories_wiki = frame.args['catégories-wiki']
	if categories_wiki
	then categories_wiki = categories_wiki ~= 'non'
	else local namespace = frame:preprocess("{{NAMESPACENUMBER}}")
		categories_wiki = (tonumber(namespace) == 0)
	end
	
	local categorisation_plusieurs_formes = frame.args['catégorisation-plusieurs-formes']
	categorisation_plusieurs_formes = categorisation_plusieurs_formes ~= 'non'
	local generation = frame.args['génération']

	generation = tonumber(generation)
	if generation == nil
	then local ndex_int = tonumber(ndex)
		if ndex_int
		then if ndex_int <= 151 then generation = 1
			elseif ndex_int <= 251 then generation = 2
			elseif ndex_int <= 386 then generation = 3
			elseif ndex_int <= 493 then generation = 4
			elseif ndex_int <= 649 then generation = 5
			elseif ndex_int <= 721 then generation = 6
			elseif ndex_int <= 809 then generation = 7
			elseif ndex_int <= 905 then generation = 8
			else generation = 9
			end
		else generation = 9
		end
	end

	-- Calcul automatique du nombre de formes et changement optionnel automatique d'artworks
	local nombre_formes = 1
	local couleur_principale
	local couleur_secondaire = nil
	while artwork[nombre_formes + 1] do
		nombre_formes = nombre_formes + 1
	end

	if nombre_formes > 1 and categories_wiki and categorisation_plusieurs_formes then table.insert(resultat, '[[Catégorie:Pokémon à plusieurs formes]]') end
	if tonumber(forme_principale) and nombre_formes >= tonumber(forme_principale)
	then forme_principale = tonumber(forme_principale)
	elseif nombre_formes > 1 and switch_artworks
		then forme_principale = (math.floor(os.time()) % nombre_formes) + 1
	else forme_principale = 1
	end
	if forme_principale > 1
	then if type1[forme_principale] then couleur_principale = type1[forme_principale] else couleur_principale = type1[1] end
		if type2 ~= {}
		then if type2[forme_principale] ~= nil and type2[forme_principale] ~= '' and type2[forme_principale] ~= '-'
				then couleur_secondaire = type2[forme_principale]
			elseif type2[forme_principale] == nil
				then if type2[1] == '' or type2[1] == '-'
					then couleur_secondaire = nil
					else couleur_secondaire = type2[1]
					end
			else couleur_secondaire = nil
			end
		end
		if forme_principale > 1
		then for i = forme_principale, 2, -1 do
			artwork[i], artwork[i-1] = artwork[i-1], artwork[i]
			end
		end
	else couleur_principale = type1[1]
		couleur_secondaire = type2[1]
	end
	if couleur_principale == "inconnu" then couleur_principale = "" end
	if couleur_secondaire == "inconnu" then couleur_secondaire = "" end
	if couleur_secondaire ~= nil then couleur_secondaire = frame:expandTemplate{title='Couleur', args={couleur_secondaire}} end

	-- Conditions de forme
	local conditions = frame.args['conditions']
	if conditions == nil then conditions = '' end
	conditions = mw.text.split(conditions, "/")
	local conditions_type = frame.args['conditions-type']
	if conditions_type == nil then conditions_type = '' end
	conditions_type = mw.text.split(conditions_type, "/")
	local conditions_categorie = frame.args['conditions-espèce'] -- deprecated
	local conditions_categorie = frame.args['conditions-catégorie']
	if conditions_categorie == nil then conditions_categorie = conditions_categorie end
	if conditions_categorie == nil then conditions_categorie = '' end
	conditions_categorie = mw.text.split(conditions_categorie, "/")
	local conditions_taille = frame.args['conditions-taille']
	if conditions_taille == nil then conditions_taille = '' end
	conditions_taille = mw.text.split(conditions_taille, "/")
	local conditions_poids = frame.args['conditions-poids']
	if conditions_poids == nil then conditions_poids = '' end
	conditions_poids = mw.text.split(conditions_poids, "/")
	local conditions_talents = frame.args['conditions-talents']
	if conditions_talents == nil then conditions_talents = '' end
	conditions_talents = mw.text.split(conditions_talents, "/")
	local conditions_oeufpas = frame.args['conditions-oeufpas']
	if conditions_oeufpas == nil then conditions_oeufpas = '' end
	conditions_oeufpas = mw.text.split(conditions_oeufpas, "/")
	local conditions_effortval = frame.args['conditions-effortval']
	if conditions_effortval == nil then conditions_effortval = '' end
	conditions_effortval = mw.text.split(conditions_effortval, "/")
	local conditions_fmratio = frame.args['conditions-fmratio']
	if conditions_fmratio == nil then conditions_fmratio = '' end
	conditions_fmratio = mw.text.split(conditions_fmratio, "/")
	local conditions_couleur = frame.args['conditions-couleur']
	if conditions_couleur == nil then conditions_couleur = '' end
	conditions_couleur = mw.text.split(conditions_couleur, "/")
	local conditions_captureval = frame.args['conditions-captureval']
	if conditions_captureval == nil then conditions_captureval = '' end
	conditions_captureval = mw.text.split(conditions_captureval, "/")
	local conditions_corps = frame.args['conditions-corps']
	if conditions_corps == nil then conditions_corps = '' end
	conditions_corps = mw.text.split(conditions_corps, "/")
	local conditions_cri = frame.args['conditions-cri']
	if conditions_cri == nil then conditions_cri = '' end
	conditions_cri = mw.text.split(conditions_cri, "/")
	local i = 1
	while conditions[i] do
		if conditions_categorie[i] == nil or conditions_categorie[i] == '' then conditions_categorie[i] = conditions[i] end
		if conditions_taille[i] == nil or conditions_taille[i] == '' then conditions_taille[i] = conditions[i] end
		if conditions_poids[i] == nil or conditions_poids[i] == '' then conditions_poids[i] = conditions[i] end
		if conditions_talents[i] == nil or conditions_talents[i] == '' then conditions_talents[i] = conditions[i] end
		if conditions_oeufpas[i] == nil or conditions_oeufpas[i] == '' then conditions_oeufpas[i] = conditions[i] end
		if conditions_effortval[i] == nil or conditions_effortval[i] == '' then conditions_effortval[i] = conditions[i] end
		if conditions_fmratio[i] == nil or conditions_fmratio[i] == '' then conditions_fmratio[i] = conditions[i] end
		if conditions_couleur[i] == nil or conditions_couleur[i] == '' then conditions_couleur[i] = conditions[i] end
		if conditions_captureval[i] == nil or conditions_captureval[i] == '' then conditions_captureval[i] = conditions[i] end
		if conditions_corps[i] == nil or conditions_corps[i] == '' then conditions_corps[i] = conditions[i] end
		if conditions_corps[i] == nil or conditions_corps[i] == '' then conditions_corps[i] = conditions[i] end
		if conditions_cri[i] == nil or conditions_cri[i] == '' then conditions_cri[i] = conditions[i] end
		i = i + 1
	end

	local espece = frame.args['espèce']	-- deprecated
	local categorie = frame.args['catégorie']
	if categorie == nil then categorie = espece end
	local taille = frame.args['taille']
	local poids = frame.args['poids']

	local talents = frame.args['talents']
	local groupeoeuf1 = frame.args['groupeoeuf1']
	local groupeoeuf1diff = frame.args['groupeoeuf1diff']
	local groupeoeuf2 = frame.args['groupeoeuf2']
	local groupeoeuf2diff = frame.args['groupeoeuf2diff']
	local oeufpas = frame.args['oeufpas']
	local effortval = frame.args['effortval']
	local expval = frame.args['expval']
	local expvaldiff = frame.args['expvaldiff']
	local expmax = frame.args['expmax']
	local fmratio = frame.args['fmratio']
	local couleur = frame.args['couleur']
	local captureval = frame.args['captureval']
	local empreinte = frame.args['empreinte']
	local forme = frame.args['forme'] -- deprecated
	local corps = frame.args['corps']
	if corps == nil then corps = forme end
	local cri = frame.args['cri']

	-- EN-TÊTE
	table.insert(resultat, '<table class="tableaustandard ficheinfo ' .. mw.ustring.lower(couleur_principale) .. '"><thead><tr><th class="entêtesection"')
	if couleur_secondaire ~= nil then table.insert(resultat, ' style="background: ' .. couleur_secondaire .. ' !important"') end
	table.insert(resultat, '><big><span class="explain" title="Numérotation nationale">№ ')
	if ndex ~= "—" and donnee_semantique_ndex and donnees
	then table.insert(resultat, '[[Numéro National::' .. ndex .. ']]')
	else table.insert(resultat, ndex)
	end
	table.insert(resultat, '</span></big></th><th class="entêtesection" colspan="3">' .. nom .. '</th></thead>')

	-- ARTWORK
	table.insert(resultat, '<tbody><tr><td class="illustration" colspan="4">[[Fichier:' .. artwork[1] .. '.png|250px]]')
	local i = 2
	while artwork[i] and artwork[i+1] and artwork[i+2] and artwork[i+3] and artwork[i+4] do
		table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|80px]] [[Fichier:' .. artwork[i+1] .. '.png|80px]] [[Fichier:' .. artwork[i+2] .. '.png|80px]]')
		i = i + 3
	end
	if artwork[i] and artwork[i+1] and artwork[i+2] and artwork[i+3]
		then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|120px]] [[Fichier:' .. artwork[i+1] .. '.png|120px]]<br/><br/>[[Fichier:' .. artwork[i+2] .. '.png|120px]] [[Fichier:' .. artwork[i+3] .. '.png|120px]]')
	elseif artwork[i] and artwork[i+1] and artwork[i+2]
		then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|80px]] [[Fichier:' .. artwork[i+1] .. '.png|80px]] [[Fichier:' .. artwork[i+2] .. '.png|80px]]')
	elseif artwork[i] and artwork[i+1]
		then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|120px]] [[Fichier:' .. artwork[i+1] .. '.png|120px]]')
	elseif artwork[i]
		then table.insert(resultat, '<br/><br/>[[Fichier:' .. artwork[i] .. '.png|150px]]')
	end
	if legende ~= nil then table.insert(resultat, '<br/><small>' .. legende .. '</small>') end
	table.insert(resultat, '</td></tr>')

	-- NOM JAPONAIS
	table.insert(resultat, '<tr><th>Nom japonais</th><td colspan="3">')
	if nom_japonais ~= nil
	then if nom_romaji ~= nil and nom_romaji ~= '' and nom_romaji ~= nom_depose
		then table.insert(resultat, frame:expandTemplate{title='Furigana', args={nom_japonais, nom_romaji}})
		else table.insert(resultat, '<span lang="ja">' .. nom_japonais ..'</span>')
		end
	end
	if nom_depose ~= nil and nom_depose ~= ''
	then table.insert(resultat, ' <br/><span title="Nom déposé officiel"><i>' .. nom_depose .. '</i></span>')
	end
	table.insert(resultat, '</td></tr>')
	
	-- NOM ANGLAIS
	table.insert(resultat, '<tr><th>Nom anglais</th><td colspan="3">' .. nom_anglais .. '</td></tr>')

	-- NUMÉROS DE POKÉDEX
	table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Liste des Pokémon dans l\'ordre du Pokédex National|Numéros de Pokédex]] régionaux</th></tr>')
	if dex == nil or dex == ''
	then table.insert(resultat, '<tr><td colspan="4" style="text-align:center"><i>Ce Pokémon n\'apparaît dans aucun Pokédex régional.</i></td></tr>')
	else if dex ~= nil and dex ~= ''
		then table.insert(resultat, '<tr><td colspan="4" style="padding:0px;"><table style="width:100%;text-align:center;background-color:white;border-radius:3px;">') -- on fait une sous-table pour les dex
			dex = mw.text.split(dex, "//")
			local i = 1
			local infos_region1 = {}
			local infos_region2 = {}
			local infos_region3 = {}
			local infos_region4 = {}
			while dex[i] and dex[i+1] and dex[i+2] and dex[i+3] do -- on regroupe les régions par 4 jusqu'à ce qu'il en reste moins que 4
				infos_region1 = mw.text.split(dex[i], "/")
				infos_region2 = mw.text.split(dex[i+1], "/")
				infos_region3 = mw.text.split(dex[i+2], "/")
				infos_region4 = mw.text.split(dex[i+3], "/")
				table.insert(resultat, '<tr>')
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region4[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '</tr><tr>')
				if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region2[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region4[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region4[2]) if infos_region4[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region4[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				table.insert(resultat, '</tr>')
				i = i + 4
			end
			if dex[i] and dex[i+1] and dex[i+2] -- il ne reste plus que 3 régions
			then local infos_region1 = mw.text.split(dex[i], "/")
				local infos_region2 = mw.text.split(dex[i+1], "/")
				local infos_region3 = mw.text.split(dex[i+2], "/")
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '</tr><tr>')
				if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
				table.insert(resultat, '</tr>')
			elseif dex[i] and dex[i+1] -- il ne reste plus que 2 régions
			then local infos_region1 = mw.text.split(dex[i], "/")
				local infos_region2 = mw.text.split(dex[i+1], "/")
				table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
				table.insert(resultat, '</tr><tr>')
				if infos_region1[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
				if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
				table.insert(resultat, '</tr>')
			elseif dex[i] -- il ne reste plus qu'1 région
			then local infos_region1 = mw.text.split(dex[i], "/")
				table.insert(resultat, '<tr><td colspan="4" style="line-height:8pt;width:100%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td></tr><tr><td colspan="4" style="line-height:10pt;padding: 2px;">')
				if infos_region1[2] ~= nil then table.insert(resultat, infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td></tr>') else table.insert(resultat, '—</td></tr>') end
			end
			table.insert(resultat, '</table></td></tr>')
		end
		dex = nil
	end
	-- meme chose pour les dex_secondaires : copier/coller en remplacant dex par dex_secondaires
	if dex_secondaires ~= nil and dex_secondaires ~= ''
	then dex_secondaires = mw.text.split(dex_secondaires, "//")
		table.insert(resultat, '<tr><th colspan="4" style="text-align:center">')
		local i = 1
		local region_avec_navigateur = false
		local region_sans_navigateur = false
		while dex_secondaires[i] do
			local b = false
			infos_region = mw.text.split(dex_secondaires[i], "/")
			if regions_navigateur[infos_region[1]]
			then region_avec_navigateur = true
			else region_sans_navigateur = true
			end
			i = i + 1
		end
		if region_avec_navigateur
		then if region_sans_navigateur
			then table.insert(resultat, '[[Capstick#Autres fonctions|Navigateurs]] et autres numérotations')
			else table.insert(resultat, '[[Capstick#Autres fonctions|Navigateurs]]')
			end
		else table.insert(resultat, 'Autres numérotations')
		end
		table.insert(resultat, '</th></tr><tr><td colspan="4" style="padding:0px;"><table style="width:100%;text-align:center;background-color:white;border-radius:3px;">') -- on fait une sous-table pour les dex_secondaires
		local i = 1
		local infos_region1 = {}
		local infos_region2 = {}
		local infos_region3 = {}
		local infos_region4 = {}
		while dex_secondaires[i] and dex_secondaires[i+1] and dex_secondaires[i+2] and dex_secondaires[i+3] do
			infos_region1 = mw.text.split(dex_secondaires[i], "/")
			infos_region2 = mw.text.split(dex_secondaires[i+1], "/")
			infos_region3 = mw.text.split(dex_secondaires[i+2], "/")
			infos_region4 = mw.text.split(dex_secondaires[i+3], "/")
			table.insert(resultat, '<tr>')
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region4[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '</tr><tr>')
			if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region2[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region4[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region4[2]) if infos_region4[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region4[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			table.insert(resultat, '</tr>')
			i = i + 4
		end
		if dex_secondaires[i] and dex_secondaires[i+1] and dex_secondaires[i+2] -- il ne reste plus que 3 régions
		then local infos_region1 = mw.text.split(dex_secondaires[i], "/")
			local infos_region2 = mw.text.split(dex_secondaires[i+1], "/")
			local infos_region3 = mw.text.split(dex_secondaires[i+2], "/")
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td style="line-height:8pt;width:25%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region3[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '</tr><tr>')
			if infos_region1[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region3[2] ~= nil then table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">' .. infos_region3[2]) if infos_region3[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region3[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td style="line-height:10pt;padding: 2px;">—</td>') end
			table.insert(resultat, '</tr>')
		elseif dex_secondaires[i] and dex_secondaires[i+1] -- il ne reste plus que 2 régions
		then local infos_region1 = mw.text.split(dex_secondaires[i], "/")
			local infos_region2 = mw.text.split(dex_secondaires[i+1], "/")
			table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '<td colspan="2" style="line-height:8pt;width:50%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region2[1]) .. '</strong></small></em></td>')
			table.insert(resultat, '</tr><tr>')
			if infos_region1[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
			if infos_region2[2] ~= nil then table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">' .. infos_region2[2]) if infos_region2[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region2[3] .. '">*</span>') end table.insert(resultat, '</td>') else table.insert(resultat, '<td colspan="2" style="line-height:10pt;padding: 2px;">—</td>') end
			table.insert(resultat, '</tr>')
		elseif dex_secondaires[i] -- il ne reste plus qu'1 région
		then local infos_region1 = mw.text.split(dex_secondaires[i], "/")
			table.insert(resultat, '<tr><td colspan="4" style="line-height:8pt;width:100%;padding: 2px;"><em><small><strong>' .. association_region(frame, infos_region1[1]) .. '</strong></small></em></td></tr><tr><td colspan="4" style="line-height:10pt;padding: 2px;">')
			if infos_region1[2] ~= nil then table.insert(resultat, infos_region1[2]) if infos_region1[3] ~= nil then table.insert(resultat, '<span class="explain" title="' .. infos_region1[3] .. '">*</span>') end table.insert(resultat, '</td></tr>') else table.insert(resultat, '—</td></tr>') end
		end
		table.insert(resultat, '</table></td></tr>')
	end
	dex_secondaires = nil

	-- TYPES
	if not type1[2]
	-- Une seule forme
	then if type2[1] == nil
		then table.insert(resultat, '<tr><th>[[Type]]</th><td colspan="3">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[1]) .. '.png|68px|link=' .. type1[1] .. ' (type)]]')
			if donnees then table.insert(resultat, '[[Premier type::' .. type1[1] .. '|]]') end
			if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[1] .. ']]') end
		else table.insert(resultat, '<tr><th>[[Type]]s</th><td colspan="3">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[1]) .. '.png|68px|link=' .. type1[1] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[1]) .. '.png|68px|link=' .. type2[1] .. ' (type)]]')
			if donnees then table.insert(resultat, '[[Premier type::' .. type1[1] .. '|]][[Second type::' .. type2[1] ..'|]]') end
			if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[1] .. ']][[Catégorie:Pokémon de type ' .. type2[1] .. ']]') end
		end
		if conditions_type[1] ~= '' then table.insert(resultat, '<small> <i>(' .. nil_to_string(conditions_type[1]) .. ')</i></small></td>') end
		table.insert(resultat, '</td></tr>')
	-- Plusieurs formes
	else 
		local i = 1
		-- initialisation ici pour pouvoir avoir une possibilité de précision même avec un seul set de types
		while conditions[i] do 
			if conditions_type[i] == nil or conditions_type[i] == '' then conditions_type[i] = conditions[i] end
			i = i + 1
		end
		table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Type]]s</th></tr>')
		local i = 1
		while type1[i] and type1[i+1] do
			if type2 ~= {} then if type2[i] == nil then type2[i] = type2[1] end end
			if type2[i] == nil or type2[i] == '' or type2[i] == '-'
			then table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|68px|link=' .. type1[i] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']]') end
			else table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|68px|link=' .. type1[i] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i]) .. '.png|68px|link=' .. type2[i] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]][[Second type::' .. type2[i] ..'|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']][[Catégorie:Pokémon de type ' .. type2[i] .. ']]') end
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i]) .. ')</i></small></td>')
			if type2 ~= {} then if type2[i+1] == nil then type2[i+1] = type2[1] end end
			if type2[i+1] == nil or type2[i+1] == '' or type2[i+1] == '-'
			then table.insert(resultat, '<td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i+1]) .. '.png|68px|link=' .. type1[i+1] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i+1] .. '|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i+1] .. ']]') end
			else table.insert(resultat, '<td colspan="2" style="text-align:center;">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i+1]) .. '.png|68px|link=' .. type1[i+1] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i+1]) .. '.png|68px|link=' .. type2[i+1] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i+1] .. '|]][[Second type::' .. type2[i+1] ..'|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i+1] .. ']][[Catégorie:Pokémon de type ' .. type2[i+1] .. ']]') end
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if type1[i]
		then if type2[i] == nil or type2[i] == '' or type2[i] == '-'
			then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|68px|link=' .. type1[i] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']]') end
			else table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type1[i]) .. '.png|68px|link=' .. type1[i] .. ' (type)]] - [[Fichier:Miniature Type ' .. mw.getContentLanguage():ucfirst(type2[i]) .. '.png|68px|link=' .. type2[i] .. ' (type)]]')
				if donnees then table.insert(resultat, '[[Premier type::' .. type1[i] .. '|]][[Second type::' .. type2[i] ..'|]]') end
				if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon de type ' .. type1[i] .. ']][[Catégorie:Pokémon de type ' .. type2[i] .. ']]') end
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_type[i]) .. ')</i></small></td></tr>')
		end
	end

	-- CATÉGORIE
	if categorie == nil then categorie = {} else categorie = mw.text.split(categorie, "/") end
	if categorie[2] == nil
	then table.insert(resultat, '<tr><th>[[Catégorie]]</th><td colspan="3">')
		if categorie[1] == nil or categorie[1] == ''
		then table.insert(resultat, '—')
			if categories_wiki
			then table.insert(resultat, "[[Catégorie:Pokémon dont la catégorie est inconnue]]")
			end
		else table.insert(resultat, '[[Pokémon (créature)|Pokémon]] ')
			if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[1] .. ']]') else table.insert(resultat, categorie[1]) end
		end
		table.insert(resultat, '</td></tr>')
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Catégorie]]s</th></tr>')
		local i = 1
		while categorie[i] and categorie[i+1] do
			table.insert(resultat, '<tr><td colspan="2" style="text-align:center">[[Pokémon (créature)|Pokémon]] ')
			if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i] .. ']]') else table.insert(resultat, categorie[i]) end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i]) .. ')</i></small></td>')
			
			table.insert(resultat, '<td colspan="2" style="text-align:center">[[Pokémon (créature)|Pokémon]] ')
			if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i+1] .. ']]') else table.insert(resultat, categorie[i+1]) end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if categorie[i]
		then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">[[Pokémon (créature)|Pokémon]] ')
			if donnees then table.insert(resultat, '[[Catégorie du Pokémon::' .. categorie[i] .. ']]') else table.insert(resultat, categorie[i]) end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_categorie[i]) .. ')</i></small></td></tr>')
		end
	end
	categorie = nil

	-- TAILLE
	if taille == nil then taille = {} else taille = mw.text.split(taille, "/") end
	if taille[2] == nil
	-- Une seule forme
	then table.insert(resultat, '<tr><th>[[Taille]]</th><td colspan="3">')
		if taille[1] == nil or taille[1] == '' or taille[1] == '-'
		then table.insert(resultat, '???,? m')
			if categories_wiki and taille[1] ~= '-'
			then table.insert(resultat, "[[Catégorie:Pokémon dont la taille est inconnue]]")
			end
		else local taille_plus = false
			if string.sub(taille[1], -1, -1) == '+'
			then taille[1] = string.sub(taille[1], 1, -2)
				taille_plus = true
			end
			if tonumber(taille[1])
			then if taille_plus then table.insert(resultat, 'Plus de ') end
				if donnees
				then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[1]) .. ']] m, soit ') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(taille[1]) .. ' m, soit ')
				end
				
				local taille_pieds_pouces = meters_to_feet_and_inches(taille[1])
				local taille_pieds = taille_pieds_pouces.feet
				local taille_pouces = taille_pieds_pouces.inches
				table.insert(resultat, taille_pieds .. ' pied')
				if taille_pieds > 1.0 then table.insert(resultat, 's') end
				table.insert(resultat, ' ' .. taille_pouces .. ' pouce')
				if taille_pouces > 1.0 then table.insert(resultat, 's') end
				
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[1] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]')
			end
			table.insert(resultat, '</td></tr>')
		end
	-- Plusieurs formes
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Taille|Tailles]]</th></tr>')
		local i = 1
		local taille_pieds
		while taille[i] and taille[i+1] do
			table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">')
			local taille_plus = false
			if string.sub(taille[i], -1, -1) == '+'
			then taille[i] = string.sub(taille[i], 1, -2)
				taille_plus = true
			end
			if tonumber(taille[i])
			then if taille_plus then table.insert(resultat, 'Plus de ') end
				if donnees
				then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i]) .. ']] m, soit<br/>') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(taille[i]) .. ' m, soit<br/>')
				end
				
				local taille_pieds_pouces = meters_to_feet_and_inches(taille[i])
				local taille_pieds = taille_pieds_pouces.feet
				local taille_pouces = taille_pieds_pouces.inches
				table.insert(resultat, taille_pieds .. ' pied')
				if taille_pieds > 1.0 then table.insert(resultat, 's') end
				table.insert(resultat, ' ' .. taille_pouces .. ' pouce')
				if taille_pouces > 1.0 then table.insert(resultat, 's') end
			elseif taille[i] == '' or taille[i] == '-'
				then table.insert(resultat, '???,? m')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i]) .. ')</i></small></td><td colspan="2" style="text-align:center;">')
			local taille_plus = false
			if string.sub(taille[i+1], -1, -1) == '+'
			then taille[i+1] = string.sub(taille[i+1], 1, -2)
				taille_plus = true
			end
			if tonumber(taille[i+1])
			then if taille_plus then table.insert(resultat, 'Plus de ') end
				if donnees
				then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i+1]) .. ']] m, soit<br/>') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(taille[i+1]) .. ' m, soit<br/>')
				end
				
				local taille_pieds_pouces = meters_to_feet_and_inches(taille[i+1])
				local taille_pieds = taille_pieds_pouces.feet
				local taille_pouces = taille_pieds_pouces.inches
				table.insert(resultat, taille_pieds .. ' pied')
				if taille_pieds > 1.0 then table.insert(resultat, 's') end
				table.insert(resultat, ' ' .. taille_pouces .. ' pouce')
				if taille_pouces > 1.0 then table.insert(resultat, 's') end
			elseif taille[i+1] == '' or taille[i+1] == '-'
				then table.insert(resultat, '???,? m')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i+1] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if taille[i]
		then local taille_plus = false
			if string.sub(taille[i], -1, -1) == '+'
			then taille[i] = string.sub(taille[i], 1, -2)
				taille_plus = true
			end
			table.insert(resultat, '<tr><td colspan="4" style="text-align:center">')
			if tonumber(taille[i])
			then if taille_plus then table.insert(resultat, 'Plus de ') end
				if donnees
				then table.insert(resultat, '[[Taille::' .. decimal_dot_to_comma(taille[i]) .. ']] m, soit ') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(taille[i]) .. ' m, soit ')
				end
				
				local taille_pieds_pouces = meters_to_feet_and_inches(taille[i])
				local taille_pieds = taille_pieds_pouces.feet
				local taille_pouces = taille_pieds_pouces.inches
				table.insert(resultat, taille_pieds .. ' pied')
				if taille_pieds > 1.0 then table.insert(resultat, 's') end
				table.insert(resultat, ' ' .. taille_pouces .. ' pouce')
				if taille_pouces > 1.0 then table.insert(resultat, 's') end
			elseif taille[i] == '' or taille[i] == '-'
				then table.insert(resultat, '???,? m')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie de la taille : le format doit être de la forme « xxx.y », sans indiquer « m ».]] <i>' .. taille[i] .. '</i>[[Catégorie:Pokémon dont la taille est mal indiquée]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_taille[i]) .. ')</i></small></td></tr>')
		end
	end
	taille = nil

	-- POIDS
	if poids == nil then poids = {} else poids = mw.text.split(poids, "/") end
	if poids[2] == nil
	-- Une seule forme
	then table.insert(resultat, '<tr><th>[[Poids]]</th><td colspan="3">')
		if poids[1] == nil or poids[1] == '' or poids[1] == '-'
		then table.insert(resultat, '???,? kg')
			if categories_wiki and poids[1] ~= '-'
			then table.insert(resultat, "[[Catégorie:Pokémon dont le poids est inconnu]]")
			end
		else if tonumber(poids[1])
			then if donnees
				then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[1]) .. ']] kg, soit ') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(poids[1]) .. ' kg, soit ')
				end
				local poids_livres = kg_to_pounds(poids[1])
				if poids_livres <= 1.0
				then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre')
				else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres')
				end
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]')
			end
			table.insert(resultat, '</td></tr>')
		end
	-- Plusieurs formes
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Poids]]</th></tr>')
		local i = 1
		local poids_livres
		while poids[i] and poids[i+1] do
			table.insert(resultat, '<tr><td colspan="2" style="text-align:center;">')
			if tonumber(poids[i])
			then if donnees
				then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i]) .. ']] kg, soit<br/>') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(poids[i]) .. ' kg, soit<br/>')
				end
				local poids_livres = kg_to_pounds(poids[i])
				if poids_livres <= 1.0
				then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre')
				else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres')
				end
			elseif poids[i] == '' or poids[i] == '-'
				then table.insert(resultat, '???,? kg')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i]) .. ')</i></small></td><td colspan="2" style="text-align:center;">')
			if tonumber(poids[i+1])
			then if donnees
				then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i+1]) .. ']] kg, soit<br/>') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(poids[i+1]) .. ' kg, soit<br/>')
				end
				local poids_livres = kg_to_pounds(poids[i+1])
				if poids_livres <= 1.0
				then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre')
				else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres')
				end
			elseif poids[i+1] == '' or poids[i+1] == '-'
				then table.insert(resultat, '???,? kg')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[i+1] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if poids[i]
		then table.insert(resultat, '<tr><td colspan="4" style="text-align:center">')
			if tonumber(poids[i])
			then if donnees
				then table.insert(resultat, '[[Poids::' .. decimal_dot_to_comma(poids[i]) .. ']] kg, soit ') -- on change la notation de type '0.2' en '0,2'.
				else table.insert(resultat, decimal_dot_to_comma(poids[i]) .. ' kg, soit ')
				end
				local poids_livres = kg_to_pounds(poids[i])
				if poids_livres <= 1.0
				then table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livre')
				else table.insert(resultat, decimal_dot_to_comma(tostring(poids_livres)) .. ' livres')
				end
			elseif poids[i] == '' or poids[i] == '-'
				then table.insert(resultat, '???,? kg')
			else table.insert(resultat, '[[Fichier:Panneau Attention.png|x20px|Erreur dans la saisie du poids : le format doit être de la forme « xxx.y », sans indiquer « kg ».]] <i>' .. poids[i] .. '</i>[[Catégorie:Pokémon dont le poids est mal indiqué]]')
			end
			table.insert(resultat, '<br/><small><i>(' .. nil_to_string(conditions_poids[i]) .. ')</i></small></td></tr>')
		end
	end
	poids = nil

	-- TALENTS
	if talents == nil or talents == ''
	then table.insert(resultat, '<tr><th>[[Talent]]s</th><td colspan="3">—</td></tr>')
		if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont le talent est inconnu]]")
		end
	else
		function talents_to_list(talents)
			talents = mw.text.split(talents, "//")
			local j = 1
			local infos_talent = {}
			local init = true
			local function_ans = {}
			while talents[j] do
				infos_talent_j = mw.text.split(talents[j], "/")
				
				if infos_talent_j[1] ~= nil then
					if init	then init = false else table.insert(function_ans, '<br>') end
					if talents[2] then table.insert(function_ans, j .. '. ') end
					
					if infos_talent_j[1] == "" or infos_talent_j[1] == '-' or infos_talent_j[1] == '—'
					then table.insert(function_ans, '—')
					else table.insert(function_ans, '[[' .. infos_talent_j[1] .. ']]')
					end
					
					if infos_talent_j[2] ~= nil and infos_talent_j[2] ~= "" then
						table.insert(function_ans, '<small> <i>(' .. infos_talent_j[2] .. ')</i></small>')
					end
				end
				j = j + 1
			end
			return {["how_many"] = j - 1, ["ans"] = table.concat(function_ans, "")}
		end
		talents = mw.text.split(talents, "///")
		if not talents[2]
		then local ttl = talents_to_list(talents[1])
			local plural = ""
			if ttl.how_many >= 2 then plural = "s" end
			table.insert(resultat, '<tr><th>[[Talent]]' .. plural .. '</th><td colspan="3">' .. ttl.ans .. '</td></tr>')
		else
			table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Talent]]s</th></tr>')
			local i = 1
			while talents[i] and talents[i+1] do
				local ttl_i = talents_to_list(talents[i])
				local ttl_ip1 = talents_to_list(talents[i+1])
				
				if ttl_i.how_many >= 2
				then table.insert(resultat, '<tr><td colspan="2">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td>')
				else table.insert(resultat, '<tr><td colspan="2" style="text-align:center">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td>')
				end
				
				if ttl_ip1.how_many >= 2
				then table.insert(resultat, '<td colspan="2">' .. ttl_ip1.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i+1]) .. ')</i></small></div></td></tr>')
				else table.insert(resultat, '<td colspan="2" style="text-align:center">' .. ttl_ip1.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i+1]) .. ')</i></small></div></td></tr>')
				end
				
				i = i + 2
			end
			if talents[i]
			then 
				local ttl_i = talents_to_list(talents[i])
				
				if ttl_i.how_many >= 2
				then table.insert(resultat, '<tr><td colspan="4">' .. ttl_i.ans .. '<div style="text-align:center"><small><i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></div></td></tr>')
				else table.insert(resultat, '<tr><td colspan="4" style="text-align:center">' .. ttl_i.ans .. '<small> <i>(' .. nil_to_string(conditions_talents[i]) .. ')</i></small></td></tr>')
				end
			end
		end
	end
	talents = nil

	-- GROUPES ŒUF
	if groupeoeuf2 ~= nil and groupeoeuf2 ~= '' and groupeoeuf2 ~= '-'
	then table.insert(resultat, '<tr><th>[[Liste des Pokémon par groupe d\'Œuf|Groupes d\'Œuf]]</th><td colspan="3">')
	else table.insert(resultat, '<tr><th>[[Liste des Pokémon par groupe d\'Œuf|Groupe d\'Œuf]]</th><td colspan="3">')
	end
	if groupeoeuf1 == nil or groupeoeuf1 == '' or groupeoeuf1 == '-'
	then table.insert(resultat, '—')
		if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont le groupe d'Œuf est inconnu]]")
		end
	else table.insert(resultat, '[[:Catégorie:Pokémon du groupe ' .. groupeoeuf1 .. '|' .. groupeoeuf1 .. ']]')
		if groupeoeuf1diff ~= nil
		then table.insert(resultat, '<small> <i>(' .. groupeoeuf1diff .. ')</i></small>')
		end
		if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon du groupe ' .. groupeoeuf1 .. ']]') end
		if groupeoeuf2 ~= nil and groupeoeuf2 ~= '' and groupeoeuf2 ~= '-'
		then table.insert(resultat, '<br>[[:Catégorie:Pokémon du groupe ' .. groupeoeuf2 .. '|' .. groupeoeuf2 .. ']]')
			if groupeoeuf2diff ~= nil
			then table.insert(resultat, '<small> <i>(' .. groupeoeuf2diff .. ')</i></small>')
			end
			if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon du groupe ' .. groupeoeuf2 .. ']]') end
		end
	end
	table.insert(resultat, '</td></tr>')

	-- ÉCLOSION
	if oeufpas == nil then oeufpas = {} else oeufpas = mw.text.split(oeufpas, "/") end
	if oeufpas[2] == nil
	then if tonumber(oeufpas[1])
		then table.insert(resultat, '<tr><th>Éclosion</th><td colspan="3">')
			local oeufcycles = math.floor(oeufpas[1]/255) - 1
			
			local s = ''
			if oeufcycles > 1
			then s = 's'
			end
			
			table.insert(resultat, oeufcycles .. ' cycle' .. s .. ' – ')
			if donnees
			then table.insert(resultat, '[[Éclosion::' .. separate_thousands(oeufpas[1]) .. ']] pas')
			else table.insert(resultat, separate_thousands(oeufpas[1]) .. ' pas')
			end
		
			table.insert(resultat, '</td></tr>')
		else if categories_wiki and oeufpas[1] ~= '-'
			then table.insert(resultat, "[[Catégorie:Pokémon dont le temps d'éclosion est inconnu]]")
			end
		end
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">Éclosion</th></tr>')
		local i = 1
		while oeufpas[i] and tonumber(oeufpas[i]) and oeufpas[i+1] and tonumber(oeufpas[i+1]) do
			local oeufcycles0 = math.floor(oeufpas[i]/255) - 1
			local oeufcycles1 = math.floor(oeufpas[i+1]/255) - 1
		
			local s = ''
			if oeufcycles0 > 1 then s = 's' end
			table.insert(resultat, '<tr><td colspan="2" style="text-align:center">' .. oeufcycles0 .. ' cycle' .. s .. ' – ')
			if donnees
			then table.insert(resultat, '[[Éclosion::' .. separate_thousands(oeufpas[i]) .. ']]')
			else table.insert(resultat, separate_thousands(oeufpas[i]))
			end
			table.insert(resultat, ' pas<br><small><i>(' .. nil_to_string(conditions_oeufpas[i]) .. ')</i></small></td>')
			
			if oeufcycles1 > 1 then s = 's' else s = '' end
			table.insert(resultat, '<td colspan="2" style="text-align:center">' .. oeufcycles1 .. ' cycle' .. s .. ' – ')
			if donnees
			then table.insert(resultat, '[[Éclosion::' .. separate_thousands(oeufpas[i+1]) .. ']]')
			else table.insert(resultat, separate_thousands(oeufpas[i+1]))
			end
			table.insert(resultat, ' pas<br><small><i>(' .. nil_to_string(conditions_oeufpas[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if oeufpas[i]
		then local oeufcycles = math.floor(oeufpas[i]/255) - 1
			
			local s = ''
			if oeufcycles > 1 then s = 's' end
			table.insert(resultat, '<tr><td colspan="4" style="text-align:center">' .. oeufcycles .. ' cycle' .. s .. ' – ')
			if donnees
			then table.insert(resultat, '[[Éclosion::' .. separate_thousands(oeufpas[i]) .. ']]')
			else table.insert(resultat, separate_thousands(oeufpas[i]))
			end
			table.insert(resultat, ' pas<br><small><i>(' .. nil_to_string(conditions_oeufpas[i]) .. ')</i></small></td></tr>')
		end
	end
	

	-- EV
	if effortval == nil then effortval = {} else effortval = mw.text.split(effortval, "/") end
	if effortval[2] == nil
	then table.insert(resultat, '<tr><th>[[EV|Points effort]]</th><td colspan="3">')
		if effortval[1] == nil or effortval[1] == ''
		then table.insert(resultat, '—')
			if categories_wiki
			then table.insert(resultat, "[[Catégorie:Pokémon dont les EV gagnés sont inconnus]]")
			end
		else if donnees
			then table.insert(resultat, '[[Points effort::' .. effortval[1] .. ']]')
			else table.insert(resultat, effortval[1])
			end
		end
		table.insert(resultat, '</td></tr>')
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[EV|Points effort]]</th></tr>')
		local i = 1
		while effortval[i] and effortval[i+1] do
			if donnees then for z = i, i+1 do effortval[z] = '[[Points effort::' .. effortval[z] .. ']]' end end
			table.insert(resultat, '<tr><td colspan="2" style="text-align:center">' .. effortval[i] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i]) .. ')</i></small></td>')
			table.insert(resultat, '<td colspan="2" style="text-align:center">' .. effortval[i+1] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i+1]) .. ')</i></small></td></tr>')
			i = i + 2
		end
		if effortval[i]
		then if donnees then effortval[i] = '[[Points effort::' .. effortval[i] .. ']]' end
			table.insert(resultat, '<tr><td colspan="4" style="text-align:center">' .. effortval[i] .. '<br/><small><i>(' .. nil_to_string(conditions_effortval[i]) .. ')</i></small></td></tr>') end
	end
	effortval = nil

	-- POINTS EXP
	table.insert(resultat, '<tr><th>[[Expérience|Points exp.]]</th><td colspan="3">')
	if expval == nil or expval == ""
	then if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont le gain d'expérience est inconnu]]")
		end
		expval = {"—"}
	else expval = mw.text.split(expval, "//")
	end
	i = 1
	while expval[i] do
		expval_i = mw.text.split(expval[i], "/")
		if expval_i[1] == "—"
		then table.insert(resultat, '—')
		else if i ~= 1 then table.insert(resultat, "<br>") end
			if donnees and expval[i+1] == nil -- semantic data only for the latest instance
			then table.insert(resultat, '[[Points exp::' .. expval_i[1] .. ']] exp.')
			else table.insert(resultat, expval_i[1] .. ' exp.')
			end
			if expval_i[2]
			then table.insert(resultat, "<small> <i>(" .. expval_i[2] .. ")</i></small>")
			end
			
			if i == 1 and expvaldiff ~= nil
			then table.insert(resultat, ' (' .. expvaldiff .. ')')
			end
		end
		i = i + 1
	end
	table.insert(resultat, '</td></tr>')

	-- EXPÉRIENCE AU NIVEAU 100
	table.insert(resultat, '<tr><th>[[Expérience|Exp au niveau 100]]</th><td colspan="3">')
	if expmax then expmax = expmax:gsub(" ", "") end -- Pour permettre la saisie de données sous la forme "1 000 000"
	
	if not tonumber(expmax)
	then table.insert(resultat, '—')
		if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont l'expérience au niveau 100 est inconnue]]")
		end
	else expmax = separate_thousands(expmax)
		if donnees
		then table.insert(resultat, '[[Exp au niveau 100::' .. expmax .. ']] exp.')
		else table.insert(resultat, expmax .. ' exp.')
		end
	end
	table.insert(resultat, '</td></tr>')

	-- SEXE
	table.insert(resultat, '<tr><th>[[Liste des Pokémon par répartition des sexes|Sexe]]</th><td colspan="3">')
	if fmratio == nil or fmratio == '' or fmratio == '-'
	then table.insert(resultat, '<i>Répartition inconnue</i>')
		if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont la répartition des sexes est inconnue]]")
		end
	else fmratio = mw.text.split(fmratio, "/")
		local i = 1
		local init = true
		while fmratio[i] do
			if tonumber(fmratio[i])
			then fmratio[i] = tonumber(fmratio[i])
				if init then init = false else table.insert(resultat, '<br/>') end
				if fmratio[i] == -1
				then table.insert(resultat, 'Asexué')
					if fmratio[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_fmratio[i]) .. ')</small></i>') end
					if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon asexué]]') end
				else table.insert(resultat, fmratio[i]*100 .. ' % femelle ; ' .. 100-fmratio[i]*100 .. ' % mâle<br/><div style="border-radius: 10px;overflow: hidden;line-height: 15px;"><div style="background-color:pink;display:inline-block;width:' .. fmratio[i]*100 .. '%">&nbsp;</div><div style="background-color:lightblue;display:inline-block;width:' .. 100-fmratio[i]*100 .. '%">&nbsp;</div></div>')
					if fmratio[2] then table.insert(resultat, '<i><small>(' .. nil_to_string(conditions_fmratio[i]) .. ')</small></i>') end
					if categories_wiki and fmratio[i] == 1 then table.insert(resultat, '[[Catégorie:Pokémon uniquement femelle]]')
					elseif categories_wiki and fmratio[i] == 0 then table.insert(resultat, '[[Catégorie:Pokémon uniquement mâle]]') end
				end
			end
			i = i + 1
		end
	end
	table.insert(resultat, '</td></tr>')

	-- COULEUR
	if not debug_mode and (couleur == nil or couleur == '' or couleur == '-' or couleur == 'Inconnue')
	then if categories_wiki then table.insert(resultat, '[[Catégorie:Pokémon dont la couleur est inconnue]]') end
		-- En commentaire : un code pour mettre la couleur "Inconnu" par défaut. Actuellement, on retire complètement la section.
		-- table.insert(resultat, '<tr><th>[[Couleur]]</th><td colspan="3">—')
		-- table.insert(resultat, '</th></tr>')
	else if couleur == nil then couleur = '' end
		couleur = mw.text.split(couleur, "/")
		local i = 1
		local init = true
		if couleur[2]
		then table.insert(resultat, '<tr><th>[[Couleur|Couleurs]]</th><td colspan="3">')
		else table.insert(resultat, '<tr><th>[[Couleur]]</th><td colspan="3">')
		end
		while couleur[i] do
			if init then init = false else table.insert(resultat, '<br/>') end
			if donnees then table.insert(resultat, '[[Couleur::' .. couleur[i] .. '|]]') end
			table.insert(resultat, frame:expandTemplate{title='Image couleur', args={couleur[i]}})
			if categories_wiki
			then if couleur[i] ~= "Inconnue"
				then table.insert(resultat, '[[Catégorie:Pokémon listé comme ' .. couleur[i] .. ']]')
				else table.insert(resultat, '[[Catégorie:Pokémon dont la couleur est inconnue]]')
				end
			end
			if couleur[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_couleur[i]) .. ')</small></i>') end
			i = i + 1
		end
		table.insert(resultat, '</td></tr>')
	end
	couleur = nil

	-- TAUX DE CAPTURE
	if not debug_mode and not (captureval == nil or captureval == '' or captureval == '-')
	then 
		if captureval == nil then captureval = '' end
		table.insert(resultat, '<tr><th>[[Capture de Pokémon|Taux de capture]]</th><td colspan="3">')
		captureval = mw.text.split(captureval, "/")
		local i = 1
		local init = true
		while captureval[i] do
			if init then init = false else table.insert(resultat, '<br/>') end
			if donnees then table.insert(resultat, '[[Taux de capture::' .. captureval[i] .. ']]') else table.insert(resultat, captureval[i]) end
			if captureval[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_captureval[i]) .. ')</small></i>') end
			i = i + 1
		end
		table.insert(resultat, '</td></tr>')
	else if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont le taux de capture est inconnu]]")
		end
	end

	-- EMPREINTE
	table.insert(resultat, '')
	if debug_mode or (empreinte ~= '-' and (empreinte == nil or empreinte == '')) and tonumber(ndex) and generation <= 5
	then table.insert(resultat, '<tr><th>Empreinte</th><td colspan="3">[[Fichier:' .. ndex .. 'empreinte.png|x22px]]</td></tr>')
	elseif not(empreinte == nil or empreinte == '' or empreinte == '-')
		then table.insert(resultat, '<tr><th>Empreinte</th><td colspan="3">[[Fichier:' .. empreinte .. '.png|x22px]]</td></tr>')
	end

	-- APPARENCE DU CORPS
	if corps == nil then corps = forme end
	if corps == nil or corps == '' or corps == '-'
	then table.insert(resultat, '<tr><th>[[Apparence du corps|Apparence<br/>du corps]]</th><td colspan="3">—')
		if categories_wiki
		then table.insert(resultat, "[[Catégorie:Pokémon dont l'apparence du corps est inconnue]]")
		end
	else corps = mw.text.split(corps, "/")
		local i = 1
		local init = true
		if corps[2]
		then table.insert(resultat, '<tr><th>[[Apparence du corps|Apparences<br/>du corps]]</th><td colspan="3">')
		else table.insert(resultat, '<tr><th>[[Apparence du corps|Apparence<br/>du corps]]</th><td colspan="3">')
		end
		while corps[i] do
			if init then init = false else table.insert(resultat, '<br/>') end
			table.insert(resultat, frame:expandTemplate{title='Apparence du corps', args={corps[i]}})
			if corps[2] then table.insert(resultat, ' <i><small>(' .. nil_to_string(conditions_corps[i]).. ')</small></i>') end
			i = i + 1
		end
	end
	table.insert(resultat, '</td></tr>')

	-- CRI
	if cri == '' then cri = nil end
	if cri == nil and not tonumber(ndex)
	then table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr><tr><td colspan="4" style="text-align:center">—</td></tr>')
	elseif cri ~= nil
	then cri = mw.text.split(cri, "/")
		if cri[2]
		then table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]s</th></tr>')
		else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr>')
		end
		local i = 1
		while cri[i] do
			table.insert(resultat, '<tr><td colspan="4" style="text-align:center"><center>[[Fichier:' .. cri[i] .. '.ogg|noicon]]</center>')
			if cri[2] then table.insert(resultat, '<small><i>(' .. nil_to_string(conditions_cri[i]) .. ')</i></small>') end
			table.insert(resultat, '</td></tr>')
			i = i + 1
		end
	else table.insert(resultat, '<tr><th colspan="4" style="text-align:center">[[Cri]]</th></tr><tr><td colspan="4" style="text-align:center"><center>')
		if tonumber(ndex) <= 493 then table.insert(resultat, '[[Fichier:Cri 4 d ' .. ndex .. '.ogg|noicon]]')
		elseif tonumber(ndex) <= 649 then table.insert(resultat, '[[Fichier:Cri 5 n ' .. ndex .. '.ogg|noicon]]')
		elseif tonumber(ndex) <= 721 then table.insert(resultat, '[[Fichier:Cri 6 x ' .. ndex .. '.ogg|noicon]]')
		elseif tonumber(ndex) <= 809 then table.insert(resultat, '[[Fichier:Cri 7 s ' .. ndex .. '.ogg|noicon]]')
		else table.insert(resultat, '[[Fichier:Cri ' .. ndex .. ' EB.ogg|noicon]]')
		end
		table.insert(resultat, '</center></td></tr>')
	end
	cri = nil

	-- GESTION CATÉGORISATION GÉNÉRATION ET DONNÉES
	table.insert(resultat, '<tr><td style="width:30%; height: 0px; padding: 0px;">')
	if categories_wiki
	then table.insert(resultat, '[[Catégorie:Pokémon]]')

		if generation == 1 then table.insert(resultat, '[[Catégorie:Pokémon de la première génération]]')
		elseif generation == 2 then table.insert(resultat, '[[Catégorie:Pokémon de la deuxième génération]]')
		elseif generation == 3 then table.insert(resultat, '[[Catégorie:Pokémon de la troisième génération]]')
		elseif generation == 4 then table.insert(resultat, '[[Catégorie:Pokémon de la quatrième génération]]')
		elseif generation == 5 then table.insert(resultat, '[[Catégorie:Pokémon de la cinquième génération]]')
		elseif generation == 6 then table.insert(resultat, '[[Catégorie:Pokémon de la sixième génération]]')
		elseif generation == 7 then table.insert(resultat, '[[Catégorie:Pokémon de la septième génération]]')
		elseif generation == 8 then table.insert(resultat, '[[Catégorie:Pokémon de la huitième génération]]')
		elseif generation == 9 then table.insert(resultat, '[[Catégorie:Pokémon de la neuvième génération]]')
		end

		if fmratio == -1 then table.insert(resultat, '[[Catégorie:Pokémon asexué]]')
		elseif fmratio == 1 then table.insert(resultat, '[[Catégorie:Pokémon uniquement femelle]]')
		elseif fmratio == 0 then table.insert(resultat, '[[Catégorie:Pokémon uniquement mâle]]')
		end
	end

	if donnees
	then if generation == 1 then table.insert(resultat, '[[Génération du Pokémon::Première génération|]]')
		elseif generation == 2 then table.insert(resultat, '[[Génération du Pokémon::Deuxième génération|]]')
		elseif generation == 3 then table.insert(resultat, '[[Génération du Pokémon::Troisième génération|]]')
		elseif generation == 4 then table.insert(resultat, '[[Génération du Pokémon::Quatrième génération|]]')
		elseif generation == 5 then table.insert(resultat, '[[Génération du Pokémon::Cinquième génération|]]')
		elseif generation == 6 then table.insert(resultat, '[[Génération du Pokémon::Sixième génération|]]')
		elseif generation == 7 then table.insert(resultat, '[[Génération du Pokémon::Septième génération|]]')
		elseif generation == 8 then table.insert(resultat, '[[Génération du Pokémon::Huitième génération|]]')
		elseif generation == 9 then table.insert(resultat, '[[Génération du Pokémon::Neuvième génération|]]')
		end
	end

	table.insert(resultat, '</td><td style="width:20%; height: 0px; padding: 0px;"></td><td style="width:20%; height: 0px; padding: 0px;"></td><td style="width:30%; height: 0px; padding: 0px;"></td></tbody>')
	table.insert(resultat, '</table>')
	return table.concat(resultat, "")
end

return p