Vouiquipèdia
frpwiki
https://frp.wikipedia.org/wiki/Vouiquip%C3%A8dia:Re%C3%A7ua_princip%C3%A2la
MediaWiki 1.47.0-wmf.4
first-letter
Mèdia
Spèciâl
Discussion
Utilisator
Discussion utilisator
Vouiquipèdia
Discussion Vouiquipèdia
Fichiér
Discussion fichiér
MediaWiki
Discussion MediaWiki
Modèlo
Discussion modèlo
Éde
Discussion éde
Catègorie
Discussion catègorie
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Module:Dâta
828
8341
231440
231397
2026-06-01T21:39:55Z
ChrisPtDe
22
mês’a jorn
231440
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local fun = {}
local Outils = require 'Module:Outils'
-- chargement de la base de données répertoriant certaines pages existant ou n'existant pas pour éviter les "ifexist".
local dataLims
local success, resultat = pcall ( mw.loadData, 'Module:Dâta/Data' )
if success then
dataLims = resultat
else
-- protection au cas où le sous-module serait mal modifié
dataLims = { [''] = { mes = { nion = 1000, tos = { 1773, 2014 } }, } }
end
-- nettoie un paramètre non nommé (vire les espaces au début et à la fin)
-- retourne nil si le texte est vide ou n'est pas du texte. Attention c'est important pour les fonctions qui l'utilisent.
local trim = Outils.trim
-- Fonction destinée à mettre la première lettre du mois en majuscule :
-- utilisation de string car aucun mois ne commence par une lettre non ascii en français ou anglais.
local function ucfirst( str )
return str:sub( 1, 1 ):upper() .. str:sub( 2 )
end
local modeloPremier = '<abbr class="abbr" title="premiér">1<sup>ér</sup></abbr>'
-- liste des mois, écriture exacte et alias, en minuscule
local listaMes = {
{ num = 1, nJorn = 31, abrev = 'janv.', nom = 'de janviér', alias = { 'janviér', 'janvier', 'jan.', 'jan', 'janv.', 'janv', 'january' } },
{ num = 2, nJorn = 29, abrev = 'fev.', nom = 'de fevriér', alias = { 'fevriér', 'fevrier', 'fev.', 'fev', 'fevr.', 'fevr', 'feb.', 'feb', 'february' } },
{ num = 3, nJorn = 31, abrev = 'mârs', nom = 'de mârs', alias = { 'mârs', 'mars', 'mâr.', 'mâr', 'mar.', 'mar', 'march' } },
{ num = 4, nJorn = 30, abrev = 'avr.', nom = 'd’avril', alias = { 'avril', 'avr.', 'avr', 'apr.', 'apr', 'april'} },
{ num = 5, nJorn = 31, abrev = 'mê', nom = 'de mê', alias = { 'mê', 'me', 'may' } },
{ num = 6, nJorn = 30, abrev = 'jouin', nom = 'de jouin', alias = { 'jouin', 'jun', 'june' } },
{ num = 7, nJorn = 31, abrev = 'july.', nom = 'de julyèt', alias = { 'julyèt', 'julyet', 'july.', 'july', 'jul.', 'jul', 'july' } },
{ num = 8, nJorn = 31, abrev = 'oût', nom = 'd’oût', alias = { 'oût', 'out', 'aug.', 'aug', 'august' } },
{ num = 9, nJorn = 30, abrev = 'sept.', nom = 'de septembro', alias = { 'septembro', 'sept.', 'sept', 'sep.', 'sep', 'september' } },
{ num = 10, nJorn = 31, abrev = 'oct.', nom = 'd’octobro', alias = { 'octobro', 'oct.', 'oct', 'october' } },
{ num = 11, nJorn = 30, abrev = 'nov.', nom = 'de novembro', alias = { 'novembro', 'nov.', 'nov', 'november' } },
{ num = 12, nJorn = 31, abrev = 'dèc.', nom = 'de dècembro', alias = { 'dècembro', 'decembro', 'dèc.', 'dèc', 'dec.', 'dec', 'december' } },
out = { num = 8, nJorn = 31, abrev = 'oût', nom = 'd’oût', alias = { 'oût', 'out' } },
}
-- ajoute les noms, abréviations et alias en tant que clés de listeMois
for i = 1, 12 do
local mes = listaMes[ i ]
listaMes[tostring( i )] = mes
if i < 10 then
listaMes['0' .. i] = mes
end
listaMes[mes.nom] = mes
listaMes[mes.abrev] = mes
for j = 1, #mes.alias do
listaMes[mes.alias[j]] = mes
end
end
for i = 1, #listaMes.out.alias do
listaMes[n] = listaMes.out
end
local lista_sesons = {
{ 'forél', 'spring', },
{ 'chôd-temps', 'summer', },
{ 'ôton', 'autumn', },
{ 'hivèrn', 'winter', },
}
-- à partir d'un nom de saison (en français ou en anglais),
-- retourne son nom canonique (exemple : "été")
-- si non reconnu, retourne nil
function fun.determenacionSeson( seson )
local s = trim( seson )
if s then
s = s:gsub( 'C', 'c' ):lower()
for i = 1, 4 do
for j = 1, #lista_sesons[i] do
if s == lista_sesons[i][j] then
return lista_sesons[i][1]
end
end
end
end
end
---
-- à partir d'un nom de mois (en français ou en anglais), de son numéro ou d'une abréviation,
-- retourne son nom canonique (exemple : "juin") et son numéro (exemple : 6)
-- si non reconnu, retourne nil, nil
function fun.determenacionMes( mes )
local result
local num = tonumber( mes )
if num then
result = listaMes[num]
else
local str = trim( mes )
if str then
result = listaMes[str]
if not result then
result = listaMes[str:gsub( 'C', 'c' ):gsub( 'Û', 'û' ):lower()]
end
end
end
if result then
return result.nom, result.num
else
return nil, nil
end
end
-- fonction interne à modeleDate, pour déterminer si on peut se passer de faire un ifexist
local function existData( dataQualificatif, an, mes )
local data
if mes then
data = dataQualificatif.mes
else
data = dataQualificatif.an
end
if type( data ) ~= 'table' then
-- si data n'existe pas c'est que l'on considère qu'il n'y a pas de lien.
return
end
-- le qualificatif est remplacé par celui de la base de données, ce qui permet des alias.
local lim = an
if dataQualificatif.qualificatif ~= '' then
lim = lim .. ' ' .. dataQualificatif.qualificatif
end
local solet = an
if mes then
lim = mes .. ' ' .. lim
solet = ucfirst( mes ) .. ' ' .. an
end
local nion = tonumber( data.nion )
if nion and an <= nion then
-- si l'année est dans la partie 'aucun' on teste s'il y a malgré tout un lien isolé
if type( data.solet ) == 'table' then
for i, v in ipairs( data.solet ) do
if solet == v or solet == tonumber( v ) then
return lim
end
end
end
-- partie aucun et pas de lien => nil
return nil
elseif type( data.tos ) == 'table' then
local tos1, tos2 = tonumber( data.tos[1] ), tonumber( data.tos[2] )
if tos1 and tos2 and an >= tos1 and an <= tos2 then
-- l'année est dans la partie 'tous' donc on retourne le lien
return lim
end
end
-- l'année n'est ni dans la partie aucun, ni dans la partie tous donc il faut tester si la page existe.
local cibaLim = mw.title.new( lim )
if cibaLim and cibaLim.exists then
return lim
end
end
---
-- Supprime le jour de la semaine, et "le" avant une date
function fun.neteyajoJorn( jorn )
if type( jorn ) == 'string' then
local nomJorn = { '[Dd]elon', '[Dd]emârs', '[Dd]emécro', '[Dd]ejô', '[Dd]evendro',
'[Dd]essando', '[Dd]emenge', '^ *[Ll]o', '^ *[Ll]e', '^ *[Ll]a' }
local premier = { '<abbr class="abbr *" title="[Pp]remiér" *>1<sup>ér</sup></abbr>', '1<sup>ér</sup>', '1ér' }
for i = 1, #nomJorn do
jorn = jorn:gsub( nomJorn[i], '' )
end
for i = 1, #premier do
jorn = jorn:gsub( premier[i], '1' )
end
jorn = trim( jorn )
end
return jorn
end
---
-- Sépare une chaine date en une table contenant les champs jour, mois et annee.
-- la date doit contenir le mois.
function fun.separacionJornMesAn( date )
date = trim( date )
if date then
local function fota( temps, valor )
return false, '<span class="error">' .. temps .. ' envalido (' .. valor .. ')</span>'
end
local dataDevantCleanup = date
local jorn, mes, an, cachierMes, cachierAn, separator
-- variable pour construire les regex
local j = '([0-3]?%d)' -- jour
local m = '([01]?%d)' -- mois numérique
local mmm = '([^%s%p%d]+[.]?)' -- mois en toute lettre
local mmm2 = '([^%s%p%d]+[.]?[-/][^%s%p%d]+[.]?)' -- mois-mois en toute lettre
local aj = '(%-?%d+)' -- année ou jour
local s = '[ ./-]+' -- séparateur simple
local sep = '([ ./-]+)' -- séparateur avec capture, pour le détecter deux fois
local muens = '(%-?)' -- signe moins pour signifier qu'il ne faut pas afficher cette donnée
date = fun.neteyajoJorn( date )
if date == nil then
return fota( 'Dâta', dataDevantCleanup )
end
if date:find( '[[', nil, true ) then
date = date
-- suppression catégories (doit être exécuté avant le code de suppression des liens)
:gsub( '%[%[[Cc]atègorie:.-%]%]', '' )
:gsub( '%[%[[Cc]ategory:.-%]%]', '' )
-- suppression liens
:gsub( '%[%[([^%[%]|]*)|?([^%[%]]*)%]%]', function ( l, t ) return trim( t ) or l end )
end
date = date
-- suppression balises
:gsub( '%b<>', '' )
-- suppression des espaces insécables
-- nbsp
:gsub( '\194\160', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- narrow nbsp
:gsub( '\226\128\175', ' ' )
:gsub( ' ', ' ' )
-- thin space
:gsub( '\226\128\137', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- simple space
:gsub( ' ', ' ' )
-- plusieurs espaces (doit être exécuté après les autres remplacements)
:gsub( ' +', ' ' )
-- réduction av. J-C pour simplifier un peu les regex
:gsub( '(%d+) ?[Dd][Ee][Vv]%.? ?[Jj][ .-]*[Cc]%.?', '-%1' )
-- suppression de l'heure dans les dates ISO
:gsub( '^+?([%d-]*%d%d%-%d%d)T%d%d[%d:,.+-]*Z?$' , '%1')
-- test année seule
if date:match( '^'..aj..'$' ) then
an = date:match( '^'..aj..'$' )
elseif date:match( '^'..aj..s..aj..muens..'$' ) then
-- jj/mm, mm/aaaa ou aaaa/mm
local a, separator, b, sb = date:match( '^'..aj..sep..aj..muens..'$' )
a, b = tonumber( a ), tonumber( b )
if separator:match( '^.+%-$' ) then
-- probablement mm/-aaaa, année av.JC
b = 0 - b
end
if a > 12 and ( b < 1 or b > 31 ) or
b > 12 and ( a < 1 or a > 31 ) then
return fota( 'Dâta', dataDevantCleanup )
elseif b < 1 or b > 31 then
mes, an, cachierAn = a, b, sb
elseif a < 1 or a > 31 then
an, mes = a, b
elseif b > 12 then
return fota( 'Mês', b )
else
jorn, mes, cachierMes = a, b, sb
end
elseif date:match( '^'..aj..sep..m..muens..'%2'..aj..muens..'$' ) then
-- jj/mm/aaaa ou aaaa/mm/jj
jorn, separator, mes, cachierMes, an, cachierAn = date:match( '^'..aj..sep..m..muens..'%2'..aj..muens..'$' )
if separator == '-' and cachierMes == '-' and cachierAn == '' and tonumber( an ) > 0 then
-- date au format jj-mm--aaaa type 17-06--44 pour 17 juin 44 av. JC
cachierMes = nil
an = 0 - an
end
elseif date:match( '^'..j..sep..mmm..muens..'%2'..aj..muens..'$' ) then
-- jj mmm aaaa
jorn, separator, mes, cachierMes, an, cachierAn = date:match( '^'..j..sep..mmm..muens..'%2'..aj..muens..'$' )
elseif date:match( '^'..mmm..s..aj..muens..'$' ) then
-- mmm aaaa
mes, separator, an, cachierAn = date:match( '^'..mmm..sep..aj..muens..'$' )
if separator:match( '^.+%-$' ) then
an = '-' .. an
end
elseif date:match( '^'..mmm2..s..aj..muens..'$' ) then
-- mmm-mmm aaaa
mes, separator, an, cachierAn = date:match( '^'..mmm2..sep..aj..muens..'$' )
if separator:match( '^.+%-$' ) then
an = '-' .. an
end
elseif date:match( '^'..j..s..mmm..muens..'$' ) then
-- jj mmm
jorn, mes, cachierMes = date:match( '^'..j..s..mmm..muens..'$' )
elseif date:match( '^'..mmm..s..j..', ?'..aj..'$') then
-- mmm jj, aaaa (format anglo-saxon)
mes, jorn, an = date:match( '^'..mmm..s..j..', ?'..aj..'$')
elseif date:match( '^'..mmm..'$' ) then
mes = date
else
return fota( 'Dâta', dataDevantCleanup )
end
local jn, ann = tonumber( jorn ), tonumber( an )
if jn and ann and ( jn > 31 or jn < 0 or #jorn >= 3 ) and ann <= 31 then
-- cas notamment des date ISO 2015-06-17, -0044-06-17 et -0002-06-17
-- inversion du jour et de l'année
local temp = an
an = jorn
jorn = temp
end
return fun.validacionJornMesAn{
jorn, mes, an,
cachierAn = trim( cachierAn ) and true or nil,
cachierMes = ( trim( cachierAn ) or not an ) and trim( cachierMes ) and true or nil,
-- or nil sert juste à éviter de trainer une valeur false dans tous les tests unitaires.
}
else
return true, {}
end
end
---
-- validationJourMoisAnnee vérifie que les paramètres correspondent à une date valide.
-- la date peut être dans les paramètres 1 à 3, ou dans des paramètres jour, mois et annee.
-- La fonction retourne true suivi d'une table avec la date en paramètres nommés (sans accent sur année)
-- ou false suivi d'un message d'erreur.
function fun.validacionJornMesAn( frame )
local args = Outils.extractArgs( frame )
local jorn, mes, numMes, an
local bjorn = args['jorn'] or args[1] or ''
local bmes = tostring( args['mês'] or args[2] or '' )
local ban = args['an'] or args[3] or ''
local function fota( temps, valor )
return false, '<span class="error">' .. temps .. ' envalido (' .. valor .. ')</span>'
end
-- on traite l'année
if Outils.notEmpty( ban ) then
an = tonumber( ban )
if an == nil and type( ban ) == 'string' then
-- test si l'année contient av. J.-C.
an = ban:match( '^(%d+) ?[Aa][Vv]%.? ?[Jj][ .-]*[Cc]%.?' )
an = tonumber( an )
if an then
an = 0 - an
else
return fota( 'An', ban )
end
elseif an == 0 then
return fota( 'An', 0 )
end
else
an = nil
end
-- on traite le mois
if Outils.notEmpty( bmes ) then
mes, numMes = fun.determenacionMes( bmes )
if mes == nil then
mes = fun.determenacionSeson( bmes )
if mes == nil then
local mes1, sep, mes2 = bmes:match( '^([^%s%p%d]+[.]?)([-/])([^%s%p%d]+[.]?)$' )
if mes1 then
mes1 = fun.determenacionMes( mes1 )
mes2 = fun.determenacionMes( mes2 )
if mes1 == nil or mes2 == nil then
return fota( 'Mês', bmes )
end
mes = mes1 .. sep .. mes2
else
return fota( 'Mês', bmes )
end
end
end
-- on traite le jour si présent
if Outils.notEmpty( bjorn ) then
if not numMes then
fota( 'Dâta', 'jorn avouéc sêson ou ben un mouél de mês' )
end
jorn = tonumber( bjorn )
if jorn == nil then
jorn = tonumber( fun.neteyajoJorn( bjorn ) )
end
if jorn == nil then
return fota( 'Jorn', bjorn )
end
-- on valide que le jour est correct
if jorn < 1 or jorn > 31 then
return fota( 'Jorn', bjorn )
elseif jorn > listaMes[numMes].nJorn then
return fota( 'Jorn', bjorn .. ' ' .. mes )
elseif jorn == 29 and numMes == 2 and an and ( math.fmod( an, 4 ) ~= 0 ) then
-- l'année bisextile sur les siècles est toujours acceptée pour être compatible avec les dates juliennes.
return fota( 'Jorn', '29 de fevriér ' .. an )
end
else
-- S'il n'y a pas de jour on regarde si la première lettre du mois est en majuscule
if bmes:match( '^%u' ) then
-- oui, on passe la première lettre en majuscule
mes = ucfirst( mes )
end
-- s'il n'y a pas d'année non plus on retourne le mois simple
end
else
-- on teste le jour si présent
if Outils.notEmpty( bjorn ) then
if an then
return fota( 'Mês', 'absent' )
else
bjorn = fun.neteyajoJorn( bjorn )
jorn = tonumber( bjorn )
if jorn then
if jorn > 31 or jorn < 1 then
an = jorn
jorn = nil
else
return fota( 'Dâta', 'jorn solèt : ' .. bjorn )
end
else
return fota( 'Jorn', bjorn )
end
end
end
end
-- vérification de l'absence d'un décalage
if an and an < 13 and an > 0 and not jorn and ( tonumber( bmes ) or ( not mes and tonumber( args[4] ) ) ) then
return false, '<span class="error">an emprobâblo (' .. an .. ')</span>'
end
local resultat = {
jorn = jorn,
mes = mes,
numMes = numMes,
an = an,
cachierAn = args.cachierAn,
cachierMes = args.cachierMes,
}
return true, resultat
end
---
-- émule le modèle {{m|Date}}.
-- Paramètres :
-- 1 : jour (numéro ou "1er") ou la date complète
-- 2 : mois (en toutes lettres) ou spécialité de l'année
-- 3 : année (nombre)
-- 4 : spécialité de l'année
-- julien : date dans le calendrier julien
-- compact : affiche le mois sous forme d'abréviation
-- avJC : non pour désactiver l'affichage de « av. J.-C. » pour les dates négatives
-- âge : ajoute la durée depuis cette date
-- agePrefix : préfixe pour l'age, 'à ' par défaut pour les décès
-- liens : active les liens par défaut
-- nolinks : ne met pas de lien sur la date (a précédence sur le paramètre "liens")
-- afficherErreurs : en cas d'erreur, si défini à "non" ne retourne pas un message d'erreur, mais le 1er argument inchangé
-- categoriserErreurs : en cas d'erreur, si défini à "non" ne catégorise pas ; peut aussi être défini avec une catégorie à utiliser à la place de celle par défaut
-- naissance : ajoute la class "bday"
-- mort : ajoute la class "dday"
function fun.modeloData( frame )
local Yesno = require 'Module:Yesno'
local args
if frame. args and frame.args.nogetparent then args = frame.args else args = Outils.extractArgs( frame ) end
-- l'import des paramètres passés au modèle appelant et non au #invoke est désactivable par nogetparent
for i,j in ipairs(args) do args[i] = tostring(j) end
local resultat
local dataNessenceMort
local cherchedovesdates = args.mort or args['èvènament'] or args.evenament
-- analyse des paramètres non nommés (ou paramètres de la date jour, mois, annee)
local eprova, params
local arg1, arg2, arg3, arg4 = fun.neteyajoJorn( args[1] ), trim( args[2] ), trim( args[3] ), trim( args[4] )
if cherchedovesdates then args2 = fun.neteyajoJorn( args2 ) end
local slashesinarg1 = arg1 and arg1:match( '[^ ./-][ ./-]+[^ ./-]' )
local slashesinarg2 = cherchedovesdates and arg2 and arg2:match( '[^ ./-][ ./-]+[^ ./-]' )
if arg1 and not arg3 and ((slashesinarg1 and not cherchedovesdates) or arg2 == nil or dataLims[arg2] or mw.ustring.match( arg2, '%a %a' ) ) then
-- une date dans le premier paramètre
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
dataNessenceMort = trim( arg2 )
params.qualificatif = trim( arg2 )
end
elseif type( arg1 ) == 'string' and type( arg2 ) == 'string' and arg3 ~= nil and arg4 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or dataLims[arg3] or mw.ustring.match( arg3, '%a %a' ) ) then
-- la date est dans le premier paramètre
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
if dataLims[trim( arg2 )] then
params.qualificatif = trim( arg2 )
end
end
elseif cherchedovesdates and (not arg4) and ( slashesinarg1 or slashesinarg2 or dataLims[arg3] or (arg3 and mw.ustring.match( arg3, '%a %a' ) ) ) then
-- deux dates dans les deux premiers paramètres
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
dataNessenceMort = trim( arg2 )
if dataLims[trim( arg3 )] then
params.qualificatif = trim( arg3 )
end
end
else
local cleanArgs = {jorn = args.jorn, mes = args.mes, an = args.an or args['an']}
if arg1 and listaMes[arg1] and not tonumber(arg1) then --le premier argument est un mois donc le deuxième est présumé année
cleanArgs.mes = (cleanArgs.mes or arg1)
cleanArgs.an = cleanArgs.an or arg2
cleanArgs.qualificatif = arg3
else
cleanArgs.jorn = cleanArgs.jorn or arg1
cleanArgs.mes = cleanArgs.mes or arg2
cleanArgs.an = cleanArgs.an or arg3
cleanArgs.qualificatif = arg4
end
local function cachierParam( p )
-- sépare le signe moins final éventuel signifiant que le paramètre ne doit pas être affiché.
if type( p ) ~= 'string' then
return p, nil
end
local value, mask = p:match( '^%s*(.-)(%-?)%s*$' )
return value, ( mask == '-' or nil )
end
cleanArgs.mees, cleanArgs.cachierMes = cachierParam( cleanArgs.mes )
cleanArgs.an, cleanArgs.cachierAn = cachierParam( cleanArgs.an )
-- Si les paramètres ont été envoyés directement, ils ont précédence
if args.cachierMes then cleanArgs.cachierMes = args.cachierMes end
if args.cachierAn then cleanArgs.cachierAn = args.cachierAn end
eprova, params = fun.validacionJornMesAn( cleanArgs )
if eprova and dataLims[trim( cleanArgs.qualificatif )] then
params.qualificatif = trim( cleanArgs.qualificatif )
end
end
-- analyse des paramètres nommés
if eprova then
params.ajoPrefix = args.ajoPrefix
if args.qualificatif and dataLims[args.qualificatif] then
params.qualificatif = args.qualificatif
end
-- julien peut avoir trois valeurs : inactif, format standard (true), format court
params.jelien = Yesno( args.jelien, 'côrt', false )
params.devJC = Yesno( args.devJC )
if args['rèpubliquen'] and args['rèpubliquen'] ~= '' then
if args['rèpubliquen'] == 'lims' then
params.republiquen = 'lims'
else
params.republiquen = Yesno( args['rèpubliquen'], false )
end
else
params.republiquen = false
end
if args.dataNessenceMort and args.dataNessenceMort ~= '' then
dataNessenceMort = args.dataNessenceMort
elseif args['dâtaNèssenceÈvènament'] and args['dâtaNèssenceÈvènament'] ~= '' then
dataNessenceMort = args['dâtaNèssenceÈvènament']
end
if dataNessenceMort then
local eprovaNessenceMort, paramsNessenceMort = fun.separacionJornMesAn( dataNessenceMort )
if eprovaNessenceMort then
params.anNessenceMort, params.mesNessenceMort, params.numMesNessenceMort, params.jornNessenceMort = paramsNessenceMort.an, paramsNessenceMort.mes, paramsNessenceMort.numMes, paramsNessenceMort.jorn
end
end
local listaParam = {
ajo = 'âjo',
['âjo'] = 'âjo',
nessence = 'nèssence',
['nèssence'] = 'nèssence',
mort = 'môrt',
['môrt'] = 'môrt',
apJC = 'apJC',
nolinks = 'nolinks',
compact = 'compacto',
compacto = 'compacto',
}
for n, v in pairs( listaParam ) do
params[v] = params[v] or Yesno( args[n], true, false ) or nil
end
if not params.nolinks then
local lims = Yesno( args.lims )
if lims == nil then
-- liens actifs par défaut si qualificatif
lims = params.qualificatif and params.qualificatif ~= "" and true or false
end
params.nolinks = not lims
end
-- sortie pour les tests unitaire, ou pour débugger
if args.debug then
return params
end
resultat = fun._modeloData( params )
else
local yn_farevereFotes = Yesno( args.farevereFotes )
if yn_farevereFotes == nil or yn_farevereFotes == true then
resultat = params
else
resultat = args[1]
end
local currentTitle = mw.title.getCurrentTitle()
if currentTitle:inNamespaces( 0, 4, 10, 14, 100 )
and not Outils.notEmpty( args.nocat )
and not currentTitle.prefixedText:match( '^Modèlo:.+/Èprôva$' ) then
local categoria
local yn_categorisarFotes = Yesno( args.categorisarFotes, 'custom', true )
if yn_categorisarFotes == nil or yn_categorisarFotes == true then
categoria = '[[Catègorie:Pâge qu’emplèye lo modèlo dâta avouéc na sintaxa fôssa]]'
elseif yn_categorisarFotes == false then
categoria = ''
else
local nomCategoria = args.categorisarFotes
:gsub( '^%[%[', '' )
:gsub( '%]%]$', '' )
:gsub( '^:?[Cc]atègorie:', '' )
:gsub( '^:?[Cc]atègory:', '' )
categoria = '[[Catègorie:' .. nomCategoria .. ']]'
end
resultat = resultat .. categoria
end
end
return resultat or ''
end
function fun._modeloData( args )
local an, mes, numMes, jorn = args.an, args.mes, args.numMes, args.jorn
local qualificatif = args.qualificatif
if ( an or mes or jorn ) == nil then
return
end
-- on traite l'âge, naissance et mort
local ajoPrefix = args.ajoPrefix
local ajo = args['âjo'] and fun.ajo( an, numMes, jorn )
local nessence = args['nèssence'] or args.nessence
local mort = args['môrt'] or args.mort
local evenament = args['èvènament'] or args.evenament
if mort and args.anNessenceMort then
ajo = fun.ajo( args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort, an, numMes, jorn )
ajoPrefix = ajoPrefix or 'a ' -- faut-il mettre \194\160 ?
elseif evenament and args.anNessenceMort then
if nessence then
ajo = fun.ajo( an, numMes, jorn, args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort )
else
ajo = fun.ajo(args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort, an, numMes, jorn )
end
end
ajoPrefix = ajoPrefix or ''
-- on traite le calendrier
local gan, gmes, gjorn = an, numMes, jorn -- date suivant le calendrier grégorien pour <time>
local jan, jmes, jjorn = an, mes, jorn -- date suivant le calendrier julien si necessaire
local jelienData, jelienSup, jelienSep -- servira éventuellement à afficher la date selon le calendrier julien
local gregAprMes, gregAprAn, gregFin -- message de calendrier grégorien lorsque la date est selon le calendrier julien
local dataRepubliquena
if an and jorn then
local amj = an * 10000 + numMes * 100 + jorn
if amj < 15821014 then
if an > 0 then
gan, gmes, gjorn = fun.julianToGregorian( an, numMes, jorn )
else
-- calendrier grégorien proleptique avec année 0.
gan, gmes, gjorn = fun.julianToGregorian( an + 1, numMes, jorn )
end
args.jelien = false
elseif args.jelien then
gan, gmes, gjorn = fun.julianToGregorian( an, numMes, jorn )
an, mes, jorn = gan, listaMes[gmes].nom, gjorn
if jjorn == 1 then
jjorn = modeloPremier
end
if args.compact then
jmes = listaMes[jmes].abrev
end
if args.jelien == 'côrt' then
jelienData = jjorn .. ' ' .. jmes .. ' '
jelienSup = '<sup>[[calendriér jelien|jel.]]</sup>'
if jan == an then
gregAprMes = '<sup>[[calendriér grègorien|grèg.]]</sup>'
else
jelienData = jelienData .. jan .. ' '
gregAprAn = '<sup>[[calendriér grègorien|grèg.]]</sup>'
end
jelienSep = ' / '
else
jelienData = jjorn .. ' ' .. jmes .. ' ' .. jan
jelienSep = ' ('
gregFin = ' [[Passâjo du calendriér jelien u calendriér grègorien|dens lo calendriér grègorien]])'
end
elseif args.republiquen then
local DataRep = require 'Module:Dâta rèpubliquèna'
local RepSenLims
if args.republiquen == 'lims' then
RepSenLims = false
else
RepSenLims = true
end
dataRepubliquena = DataRep._data_republiquena(
RepSenLims,
{ fun.formatRepCal( fun.do_toRepCal{gan, gmes, gjorn} ) }
)
end
else
if an and an < 0 then
gan = gan + 1
end
args.jelien = false
args.republiquen = false
end
-- on génère le résultat
-- Déclarations des variables
local wikiLista = {} -- reçoit le texte affiché pour chaque paramètre
local iso = {} -- reçoit le format date ISO de ce paramètre
local textoMes = mes -- texte du mois qui sera affiché (éventuellement l'abréviation)
if args.compact then
if not numMes then
-- mois est autre chose qu'un simple mois : saison, mois-mois... auquel cas, pas d'abréviation (provoquait erreur Lua)
-- (les abréviations pour le cas "mois[-/]mois" seraient théoriquement possibles, mais ça reste à implémenter)
else
if args.nolinks then
textoMes = '<abbr class="abbr" title="' .. mes .. '">' .. listaMes[mes].abrev .. '</abbr>'
else
textoMes = listaMes[mes].abrev
end
end
end
mes = mes and mes:gsub( 'out', 'oût' )
local dataQualificatif, dataCat
if not args.nolinks then
dataQualificatif = dataLims[qualificatif or '']
if type( dataQualificatif ) ~= 'table' then
-- si le qualificatif n'est pas dans la base de données, on crée une table minimum,
-- qui imposera un test sur l'année, mais considère qu'il n'y a pas de lien sur le jour ou le mois
dataQualificatif = { qualificatif = qualificatif, an = { } }
end
dataCat = dataLims[dataQualificatif.cat]
if type( dataCat ) ~= 'table' or dataCat == dataQualificatif then
dataCat = { qualificatif = '' }
end
end
local function wikiLim( lim, texto )
if lim == texto then
return '[[' .. texto .. ']]'
else
return '[[' .. lim .. '|' .. texto .. ']]'
end
end
-- le jour si présent
local qualifJorn = ''
if jorn then
if args.nolinks then
if jorn == 1 then
jorn = modeloPremier
end
table.insert( wikiLista, jorn )
else
qualifJorn = dataQualificatif.jorn and dataQualificatif.qualificatif
or dataCat.jorn and dataCat.qualificatif
or ''
local textoJorn, lim
if jorn == 1 then
textoJorn = '1<sup>ér</sup>'
lim = '1ér ' .. mes
else
textoJorn = jorn
lim = jorn .. ' ' .. mes
end
if qualifJorn ~= '' then
lim = lim .. ' ' .. qualifJorn
end
-- s'il n'y a pas de lien sur le mois, il sera affiché avec le jour.
table.insert( wikiLista, wikiLim( lim, textoJorn ) )
table.insert( wikiLista, wikiLim( lim, textoJorn .. ' '.. textoMes ) )
end
table.insert( iso, 1, string.sub( '0' .. gjorn, -2 ) )
end
-- le mois
if mes then
if #wikiLista == 0 and an == nil then
return textoMes
end
if args.nolinks then
if not args.cachierMes then
table.insert( wikiLista, textoMes )
end
else
local lim
if an then
if not numMes then
-- mois est autre chose qu'un simple mois : saison, mois-mois... auquel cas, pas de lien
else
lim = existData( dataQualificatif, an, mes ) or existData( dataCat, an, mes )
if lim == nil and qualificatif and qualifJorn == '' then
-- nouveau test sans le qualificatif uniquement s'il n'y a pas d'éphémérides pour ce qualificatif.
lim = existData( dataLims[''], an, mes )
end
end
end
if lim or args.cachierMes then
-- s'il y a un lien on retire le lien affichant 'jour mois' pour ajouter '[[mois annee|mois]]'
table.remove( wikiLista )
if not args.cachierMes then
table.insert( wikiLista, wikiLim( lim, textoMes ) )
end
elseif #wikiLista > 0 then
-- sinon on retire le lien affichant 'jour' pour ne garder que le lien 'jour mois'
table.remove( wikiLista, #wikiLista - 1 )
elseif args.cachierAn then
-- s'il n'y a pas de jour et que l'année n'est pas affichée, on insère le mois seul.
table.insert( wikiLista, textoMes )
end
end
if gmes then
table.insert( iso, 1, string.sub( '0' .. gmes, -2 ) )
end
table.insert( wikiLista, gregAprMes )
end
-- l'année
if an and not (args.jelien == true and args.nolinks and jan == an ) then
if not args.cachierAn then
local textoAn = an
if an < 0 then
local anDevJc = 0 - an
if args.devJC == false then
textoAn = anDevJc
else
textoAn = anDevJc .. ' <abbr class="abbr" title="'
.. 'devant Jèsus-Crist">dev. J.-C.</abbr>'
end
elseif args.apJC then
textoAn = textoAn .. ' <abbr class="abbr" title="'
.. 'aprés Jèsus-Crist">apr. J.-C.</abbr>'
end
if args.nolinks then -- seulement si on doit l'afficher
table.insert( wikiLista, textoAn )
else
local lim = existData( dataQualificatif, an ) or existData( dataCat, an )
if not lim then
if an < 0 then
local anDevJc = 0 - an
lim = anDevJc .. ' dev. J.-C.'
else
lim = an
end
end
if mes and #wikiLista == 0 then
-- si le mois n'a pas de lien et n'est pas affiché avec le jour, il est affiché avec l'année.
textoAn = textoMes .. ' ' .. textoAn
end
table.insert( wikiLista, wikiLim( lim, textoAn ) )
end
end
end
if an then
if gan > 999 then
table.insert( iso, 1, gan )
elseif gan > -1 then
table.insert( iso, 1, string.sub( '000' .. gan , -4 ) )
elseif gan > -999 then
-- calendrier grégorien proleptique avec année 0.
table.insert( iso, 1, 'U-' .. string.sub( '000' .. ( 0 - gan ), -4 ) )
else
table.insert( iso, 1, 'U' .. gan )
end
end
table.insert( wikiLista, gregAprAn )
-- l'age
if type( ajo ) == 'number' and ajo >= 0 and ( not nessence or ajo < 120 ) then
if ajo == 0 then
ajo = '(' .. ajoPrefix .. 'muens d’un\194\160an)'
elseif ajo == 1 then
ajo = '(' .. ajoPrefix .. '1\194\160an)'
else
ajo = '('.. ajoPrefix .. ajo .. '\194\160ans)'
end
else
ajo = false
end
-- compilation du résultat
local wikiTexto = table.concat( wikiLista, ' ' )
local isoTexto = table.concat( iso, '-' )
-- On ajoute un peu de sémantique.
local wikiHtml = mw.html.create( '' )
if jelienData then
wikiHtml:tag( 'span')
:addClass( 'nowrap' )
:attr( 'data-sort-value', isoTexto )
:wikitext( jelienData )
:node( jelienSup )
:done()
:wikitext( jelienSep )
end
local dataHtml = wikiHtml:tag( 'time' )
:wikitext( wikiTexto )
if wikiTexto:match( ' ' ) then
dataHtml:addClass( 'nowrap' )
end
if isoTexto ~= wikiTexto then
dataHtml:attr( 'datetime', isoTexto )
:attr( 'data-sort-value', isoTexto )
end
if not args.nolinks then
dataHtml:addClass( 'dâta-lim' )
end
if nessence then
dataHtml:addClass( 'bday' )
elseif mort then
dataHtml:addClass( 'dday' )
end
wikiHtml:wikitext( gregFin )
if dataRepubliquena then
wikiHtml:wikitext( ' (', dataRepubliquena, ')' )
end
if ajo then
wikiHtml:wikitext( ' ' )
:tag( 'span' )
:addClass( 'noprint')
:wikitext( ajo )
:done()
end
return tostring( wikiHtml )
end
-- isoJourMoisAnnee transforme une date iso en un tableau équivalent à celui retourné par separationJourMoisAnnee
local function isoJornMesAn( dataiso )
if dataiso and dataiso:sub( 1, 2 ) == 'U-' then
dataiso = dataiso:sub( 2 )
end
local an, mes, jorn = dataiso:match( '^(%-?%d%d%d%d+)%-(%d+)%-(%d+)$' )
if not an then
an, mes = dataiso:match( '^(%-?%d%d%d%d+)%-(%d+)$' )
end
if not an then
an = dataiso:match( '^(%-?%d%d%d%d+)$' )
end
if an and tonumber( an ) <= 0 then
-- la date iso utilise une année 0
an = tonumber( an ) - 1
end
if not an then
mes, jorn = dataiso:match( '^(%d+)%-(%d+)$' )
end
return fun.validacionJornMesAn{ jorn, mes, an }
end
-- analyseDate sépare la date du contenu qui précède et suit, supprime les liens, et retourne si possible une table avec jour mois année
local function analisaData( d )
if trim( d ) then
local datesMultiples = d:match( ' ou ben ' ) or d:match( '^[Ee]ntre-mié ' ) or d:match( '<time.->.-<time.->' )
if datesMultiples then
return d
end
local aprox = d:match( '^[Dd]e vers ' ) or d:match( '^[Aa]prés ' ) or d:match( '^[Dd]evant ' )
-- booléen qui indique que la date est approximative, empêchant l'affichage de l'âge ou de la durée
aprox = aprox and true or false
local analisa = d
-- s'il s'agit d'une date formattée avec {{date}}, on utilisera la valeur du datetime pour reconstruire la date
local dataiso = d:match( 'datetime="([U%d-]+)"' ) or d:match( '<time>(.-)</time>' )
local comencement, strData, fin
if dataiso then
-- supprime le formatage créé par {{date}}
comencement, strData, fin = analisa:match( '(.-)<time.->(.-)</time>(.*)' )
end
if not strData then
-- sépare une date av. J.-C. du contenu qui suit
strData, fin = analisa:match( '(.-%d av%. J%.%-C%.]*%-?)(.*)' )
end
if not strData then
-- sépare la date (avec ses liens) d'une référence ou contenu commençant par un espace
strData, fin = analisa:match( '(.-%d%d%d%]*%-?)([\127 ].+)' )
end
if not strData then
-- sépare la date du contenu commençant par <br>
strData, fin = analisa:match( '(.-%d%d%d%]*%-?)(<br ?/?>.+)' )
end
analisa = strData or analisa
-- supprime les liens
analisa = analisa:gsub(
'%[%[([^%[%]|]*)|?([^%[%]]*)%]%]',
function ( l, t )
return trim( t ) or l
end
)
local t, r
if dataiso then
-- Si la date était formatée avec {{date}}, on la reconstruit à partir de la valeur de datetime
t, r = isoJornMesAn( dataiso )
end
if t then
local tTexto, rTexto = fun.separacionJornMesAn( analisa )
if r.an and r.jorn then
local amj = r.an * 10000 + r.numMes * 100 + r.jorn
-- Les dates avant le 14 octobre 1582 sont dans le calendrier julien mais utilisent un datetime grégorien
local gregToJul = amj < 15821014
if not gregToJul and amj < 15821024 then
-- Entre le 14 et le 23 octobre, on ne peut pas différencier entre julien et grégorien sans comparer avec le texte
gregToJul = tTexto and rTexto.jorn ~= r.jorn
end
if gregToJul then
local jan, jmes, jjorn = fun.gregorianToJulian( r.an, r.numMes, r.jorn )
r = {
an = jan,
numMes = jmes,
mes = listaMes[jmes].nom,
jorn = jjorn
}
end
end
if tTexto then
-- On analyse le texte de la date pour repérer les dates partiellement masquées
-- Si seul le jour est affiché, separationJourMoisAnnee l'interprète comme une année
if not rTexto.jorn and not rTexto.mes and rTexto.an == r.jorn then
r.cachierMes = true
r.cachierAn = true
elseif rTexto.jorn == r.jorn and rTexto.mes == r.mes and not rTexto.an then
r.cachierAn = true
end
end
else
t, r = fun.separacionJornMesAn( analisa )
end
if t then
return r, fin, comencement, aprox
else
return d, fin, comencement, aprox
end
end
end
---
-- fonction destinée aux infobox, notamment pour afficher les dates de naissance et de mort
-- les liens présent dans les dates fournies sont automatiquement supprimés pour gérer les cas où
-- le paramètre contient déjà un modèle date.
-- Paramètres :
-- 1 : type de date à afficher (naissance / n, mort / m, ou date / d)
-- 2 : Date ou date de naissance
-- 3 : Date de mort si type n ou m
-- qualificatif = suffixe des page de date à lier (exemple : en musique)
-- nolinks : n'affiche pas de lien
-- préfixe : préfixe à afficher s'il y a un jour (par défaut '')
-- préfixe sans jour : préfixe à afficher s'il n'y a pas de jour (par défaut : '')
function fun.dataEnfocajon( frame )
local args = frame.args
if type( args ) ~= 'table' or not ( args[1] and args[2] ) then
return
end
-- prefix ajoute un préfixe en fonction de la présence ou non du jour si le paramètre "préfixe sans jour" est défini
local function prefix( dataString )
if dataString then
local datetime = dataString:match( 'datetime="([U%d%-]+)"' )
if datetime and datetime:match('%-%d%d%-%d%d') and trim( args['prèfixo'] ) then
return args['prèfixo'] .. ' ' .. dataString
end
if trim( args['prèfixo sen jorn'] ) then
return args['prèfixo sen jorn'] .. ' ' .. dataString
end
end
return dataString
end
local nessence = args[1]:match( '^n' ) == 'n'
local mort = args[1]:match( '^m' ) or args[1]:match( 'môrt' )
local evenament = args[1]:match( '^è' )
local afichajoData, qualificatif = args[2], args[4]
local afichajoDataTab, resultatData, complementData, prefixoData, aproxData
local dataNessence, dataMort, aproxNessence, aproxMort
if mort or evenament then
afichajoData = args[3]
end
if not trim( afichajoData ) then
return
end
if afichajoData:match( ']]</time>' ) or afichajoData:match( '</time>]]' ) then
-- S'il y a des liens il y a probablement déjà un modèle date, évitons de l'exécuter une 2e fois
if ( nessence or mort or evenament ) and ( afichajoData:match( 'wikidata%-linkback' )) then
local _
dataNessence, _, _, aproxNessence = analisaData( args[2] )
dataMort, _, _, aproxMort = analisaData( args[3] )
resultatData = afichajoData
else
return prefix( afichajoData )
end
else
afichajoDataTab, complementData, prefixoData, aproxData = analisaData( afichajoData )
if type( afichajoDataTab ) ~= 'table' then
return afichajoDataTab
else
if nessence then
local _
dataNessence, aproxNessence = afichajoDataTab, aproxData
dataMort, _, _, aproxMort = analisaData( args[3] )
elseif mort then
local _
dataNessence, _, _, aproxNessence = analisaData( args[2] )
dataMort, aproxMort = afichajoDataTab, aproxData
else
qualificatif = args[3]
end
afichajoDataTab.nessence = not aproxNessence and nessence
afichajoDataTab.mort = not aproxMort and mort
afichajoDataTab.evenament = evenament
afichajoDataTab.qualificatif = args.qualificatif or qualificatif
afichajoDataTab.lims = true -- Dans les infobox, liens activés par défaut
afichajoDataTab.nolinks = args.nolinks
afichajoDataTab.nocat = args.nocat
afichajoDataTab.jelien = args.jelien
end
end
resultatData = resultatData or fun._modeloData( afichajoDataTab )
local ajo, prefixAjo, suffixAjo, carculAjo = '', ' <span class="noprint">(', ')</span>', nil
if nessence and
dataNessence and
not aproxNessence and
not dataMort and
type( dataNessence ) == 'table'
then
carculAjo = fun.ajo( dataNessence.an, dataNessence.numMes, dataNessence.jorn )
if carculAjo and carculAjo > 120 then
carculAjo = nil
end
elseif ( mort or evenament ) and
dataNessence and
dataMort and
not aproxNessence and
not aproxMort and
type( dataNessence ) == 'table'
and type( dataMort ) == 'table'
then
carculAjo = fun.ajo(
dataNessence.an,
dataNessence.numMes,
dataNessence.jorn,
dataMort.an,
dataMort.numMes,
dataMort.jorn
)
prefixAjo = ' (tant qu’a '
suffixAjo = ')'
end
if tonumber( carculAjo ) then
if carculAjo > 1 then
ajo = prefixAjo .. carculAjo .. '\194\160ans' .. suffixAjo
elseif carculAjo == 1 then
ajo = prefixAjo .. '‘n\194\160an' .. suffixAjo
elseif carculAjo == 0 then
ajo = prefixAjo .. 'muens d’un\194\160an' .. suffixAjo
end
if complementData and complementData:match( 'ans?%)' ) then
complementData = ''
end
end
return ( prefixoData or '' ) .. prefix( resultatData ) .. ( complementData or '' ) .. ajo
end
function fun.tempsEnfocajon( frame )
local args = frame.args
if type( args ) ~= 'table' or not args[1] then
return
end
-- vérifie si une chaîne semble contenir une durée
local function contintTemps( chena )
return chena and (
mw.ustring.match( chena, '%f[%w]ans?%f[^%w]' ) or
mw.ustring.match( chena, '%f[%w]mês%f[^%w]' ) or
mw.ustring.match( chena, '%f[%w]jorns?%f[^%w]' )
)
end
local jorn1, mes1, an1, jorn2, mes2, an2 = '', '', '', '', '', ''
local t1, fin1, _, aprox1 = analisaData( args[1] )
if aprox1 or type( t1 ) ~= 'table' then
return
end
jorn1 = t1.jorn or ''
mes1 = t1.numMes or ''
an1 = t1.an or ''
if args[2] and args[2] ~= "" then
local t2, fin2, _, aprox2 = analisaData( args[2] )
if aprox2 or type( t2 ) ~= 'table' then
return
end
if contintTemps( fin2 ) then
-- La durée semble déjà renseignée manuellement
return
end
jorn2 = t2.jorn or ''
mes2 = t2.numMes or ''
an2 = t2.an or ''
if an1 == '' or an2 == '' then
-- Mieux vaut ne pas extrapoler l'année
return
end
if ( jorn1 ~= '' and jorn2 == '' ) or
( mes1 ~= '' and mes2 == '' ) then
-- Si la deuxième date est moins précise que la première, mieux vaut ne rien afficher
return
end
elseif an1 == '' or contintTemps( fin1 ) then
-- L'année n'est pas spécifiée ou la durée semble déjà renseignée
return
end
local temps = (require 'Module:Temps').temps({ jorn1, mes1, an1, jorn2, mes2, an2, noerror = true })
if temps then
return '<br /><small>(' .. temps .. ')</small>'
end
end
---
-- la fonction dateISO renvoie un date au format aaaa-mm-jj (sans liens)
-- l'année peut être sous la forme 2013 ou [[2013 en litérature|2013]]
-- le mois peut être en lettres ou en chiffres
-- le jour peut être sous la forme '05', '{{1er}}' ou 'vendredi 13'
function fun.dataISO( frame )
local args = Outils.extractArgs( frame )
local an = Outils.notEmpty( args['an'], args.an, args.year, args.date )
-- extraction de l'année
if type( an ) == 'string' then
an = ( tonumber( an ) -- match '2013'
or string.match ( an, '%D(%d%d%d%d)%D' ) -- match '[[2013 en musique|2013]]'
or string.match ( an, '%D(%d%d%d%d)$' ) -- match '17 septembre 2013'
or string.match ( an, '^(%d%d%d%d)%D' ) -- match '2013-09-17'
)
end
an = tonumber( an )
-- le format de date iso est défini suivant le calendrier grégorien.
-- Avant l'année 1583 la date est calendrier est probablement du calendrier julien,
-- donc autant s'abstenir.
if an and an > 1582 then
local mes = Outils.notEmpty( args.mes, args.month )
-- num mois trouve le numéro du mois, qu'il soit numérique ou texte, complet ou abrégé.
local nomMes, numMes = fun.determenacionMes( mes )
if numMes then
mes = '-' .. string.sub( '0' .. numMes, -2 )
local jorn = Outils.notEmpty( args.jorn, args.day, args['quantiémo'] )
if type( jorn ) == 'string' then
jorn = tonumber( jorn ) or tonumber( string.match ( jorn, '%d+') )
end
jorn = tonumber( jorn )
if jorn and jorn <= listaMes[numMes].nJorn then
jorn = '-' .. string.sub( '0' .. jorn, -2 )
return an .. mes .. jorn
else
return an .. mes
end
else
return tostring( an )
end
end
end
---
-- Rang du jour dans l'année
-- Usage : do_dayRank{année,mois,jour}
function fun.do_dayRank(arguments)
local yr = tonumber(arguments.year or arguments[1]) or 1
local mt = tonumber(arguments.month or arguments[2]) or 1
local dy = tonumber(arguments.day or arguments[3]) or 1
-- Rangs des premiers des mois
local ranks = {0,31,59,90,120,151,181,212,243,273,304,334}
local rank = (ranks[mt] or 0) + dy - 1
if(fun.isLeapYear(yr) and (mt >= 3)) then
rank = rank+1
end
return rank
end
-- Nombre de jours entre deux années (du 1er janvier au 1er janvier)
-- Suit le calendrier grégorien
function fun.do_daysBetween(arguments)
local yr1 = tonumber(arguments[1]) or 0
local yr2 = tonumber(arguments[2]) or 0
return fun.daysSinceOrigin(yr2) - fun.daysSinceOrigin(yr1)
end
-- Nombre de jours depuis l'année 1 (du 1er janvier au 1er janvier)
function fun.daysSinceOrigin(year)
local yr = year-1
return 365*yr + math.floor(yr/4) - math.floor(yr/100) + math.floor(yr/400)
end
-- Test d'année bissextile (Suit le calendrier grégorien)
function fun.isLeapYear(year)
local yr = tonumber(year) or 1
return (yr%4 == 0) and ((yr%100 ~= 0) or (yr%400 == 0))
end
-- Conversion d'un nombre en chiffres romains
function fun.toRoman(number)
local n = math.floor(number)
local letters = {"I","V","X","L","C","D","M","",""}
local pattern = {"","0","00","000","01","1","10","100","1000","02"}
local result = ""
if(n<=0 or n>=4000) then
result = "---"
else
for i=1,7,2 do
local p = pattern[n%10 + 1]
for j=0,2 do
p = string.gsub(p,tostring(j),letters[i+j])
end
result = p .. result
n = math.floor(n/10)
end
end
return result
end
-- Conversion et affichage d'une date dans le calendrier républicain
function fun.dataRepubliquen(frame)
local pframe = frame:getParent()
local arguments = pframe.args
return fun.formatRepCal(fun.do_toRepCal(arguments))
end
---
-- Calcul d'une date dans le calendrier républicain
-- On suppose que les années 4n+3 sont sextiles (3, 7, 11...)
function fun.do_toRepCal(arguments)
local yr = tonumber(arguments.year or arguments[1]) or 2000
-- rang absolu du jour demandé, le jour 0 étant le 22 septembre 1792 (1er jour de l'an I)
local repDays = fun.do_dayRank(arguments) + fun.do_daysBetween{1792,yr} - fun.do_dayRank{1792,9,22}
local repYear = math.floor((repDays+731)/365.25) - 1
local repDayRank = repDays - 365*(repYear-1) - math.floor(repYear/4)
local repMonth, repDay = math.floor(repDayRank/30)+1, (repDayRank%30)+1
return {repYear, repMonth, repDay}
end
---
-- Formatage d'une date selon le calendrier républicain
-- Usage : fun.formatRepCal{année,mois,jour}
function fun.formatRepCal(arguments)
local months = {"Vendèmiéro","Brumèro","Fremèro","Nevôso","Ploviôso","Ventôso","Gèrniâl","Flloriâl","Prâriâl","Mêssidor","Tèrmidor","Fruitidor"}
local extras = {"de la vèrtu","du genie","de l’ôvra","de les rècompenses","de l’avis","de la Rebênâda"}
local result = ""
if(arguments[2] < 13) then
result = result .. tostring(arguments[3]) .. "\194\160" .. months[arguments[2]]
else
result = result .. "jorn " .. extras[arguments[3]]
end
result = result .. " de l’an " .. fun.toRoman(arguments[1])
return result
end
---
-- Voir Modèle:Âge
-- retourne l'âge en fonction de la ou les dates fournies. La valeur retournée est de type 'number'
-- Paramètres :
-- 1, 2, 3 : année, mois jour de naissance (supposé dans le calendrier grégorien)
-- 4, 5, 6 : année, mois, jour du calcul (facultatif, par défaut la date UTC courante).
function fun.ajo( ann, mn, jn, ac, mc, jc )
if ac == nil then
local today = os.date( '!*t' )
ac = today.year
mc = today.month
jc = today.day
else
ac = tonumber( ac )
mc = tonumber( mc )
jc = tonumber( jc )
end
ann = tonumber( ann )
mn = tonumber( mn )
jn = tonumber( jn )
if ann == nil or ac == nil or mn == nil or mc == nil then
-- pas de message d'erreur qui risque de faire planter la fonction appelante
-- à elle de gérer ce retour.
return
end
local ajo = ac - ann
-- si l'intervalle traverse l'année zéro, il faut soustraire une année
-- parce que cette année n'existe pas dans les calendriers chrétiens
if ann < 0 and ac > 0 then
ajo = ajo - 1
end
if mc == mn then
if jc == nil or jn == nil then
return
end
return ajo - ( jc < jn and 1 or 0 )
else
return ajo - ( mc < mn and 1 or 0 )
end
end
function fun.modeloAjo( frame )
local args = Outils.extractArgs( frame )
local ajo = fun.ajo(
args[1] or args['an'],
args[2] or args['mês'],
args[3] or args['jorn'],
args[4],
args[5],
args[6]
)
if ajo then
return ajo
else
return '<span class="error">Paramètros fôx ou ben ensufisents por carcular l’âjo prècis</span>'
end
end
---
-- calcul du jour julien à partir d'une date du calendrier grégorien
function fun.julianDay( year, month, day, hour, min, sec )
local julian
julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )
- math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 100 )
+ math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 400 )
+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )
+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400
- 32167.5
return julian
end
---
-- calcul du jour julien à partir d'une date du calendrier julien
function fun.julianDayJulian( year, month, day, hour, min, sec )
local julian
julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )
+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )
+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400
- 32205.5
return julian
end
---
-- calcul d'une date dans le calendrier grégorien à partir du jour julien
function fun.julianDayToGregorian( julianDay )
local base = math.floor( julianDay + 32044.5 ) -- 1 March -4800 (proleptic Gregorian date)
local nCentury = math.floor( ( base * 4 + 3 ) / 146097 )
local sinceCentury = base - math.floor( nCentury * 146097 / 4 )
local nYear = math.floor( ( sinceCentury * 4 + 3 ) / 1461 )
local sinceYear = sinceCentury - math.floor( nYear * 1461 / 4 )
local nMonth = math.floor( ( sinceYear * 5 + 2 ) / 153 )
local day = sinceYear - math.floor( ( nMonth * 153 + 2 ) / 5 ) + 1
local month = nMonth - math.floor( nMonth / 10 ) * 12 + 3
local year = math.floor( sinceYear / 306 ) + nYear + 100 * nCentury - 4800
return year, month, day
end
---
-- calcul d'une date dans le calendrier julien à partir du jour julien
-- calcul basé sur l'algorithme de la page https://en.wikipedia.org/wiki/Julian_day#Julian_or_Gregorian_calendar_from_Julian_day_number
function fun.julianDayToJulian( julianDay )
local y = 4716
local v = 3
local j = 1401
local u = 5
local m = 2
local s = 153
local n = 12
local w = 2
local r = 4
local B = 274277
local p = 1461
local C = -38
local f = julianDay + j
local e = r * f + v
local g = math.modf( math.fmod( e, p ) / r )
local h = u * g + w
local D = math.modf( math.fmod( h, s ) / u ) + 1
local M = math.fmod( math.modf( h / s ) + m, n ) + 1
local Y = math.modf( e / p ) - y + math.modf( ( n + m - M ) / n )
return Y, M, D
end
---
-- calcul d'une date dans le calendrier grégorien à partir d'une date dans le calendrier julien
function fun.julianToGregorian( year, month, day )
return fun.julianDayToGregorian( fun.julianDayJulian( year, month, day ) )
end
---
-- calcul d'une date dans le calendrier julien à partir d'une date dans le calendrier grégorien
function fun.gregorianToJulian( year, month, day )
year = tonumber(year)
if month then month = tonumber(month) else month = 6 end --prend une valeur centrale pour donner un best "guess"
if day then day = tonumber(day) else day = 15 end
return fun.julianDayToJulian( fun.julianDay( year, month, day ) )
end
--[[
Cette fonction retourne "CET" ou "CEST" selon que dans la pseudo-timezone en cours
c'est l'heure d'été ou l'heure d'hiver.
Cette fonction n'a de sens a priori que pour des modèles utilisés en Europe
Paramètre optionnel non nommé : "sans lien" : retourne le texte CET/CEST. sinon
retourne ce même texte avec un wikilien vers les articles correspondants
--]]
function fun.CEST(frame)
-- option : ne pas créer de wikilien
local opt = trim(frame.args[1] or frame:getParent().args[1])
-- on récupère l'information dans la zone courante
local t = mw.getContentLanguage():formatDate("I", nil, true)
if (t == "1") then -- heure d'été
if (opt == "sen lim") then
return "CEST"
elseif (opt == "dècalâjo") then
return "2"
else
return "[[Hora de chôd-temps d’Eropa centrâla|CEST]]"
end
else -- heure d'hiver (ou autre zone où ça ne s'applique pas)
if (opt == "sen lim") then
return "CET"
elseif (opt == "dècalâjo") then
return "1"
else
return "[[Hora normala d’Eropa centrâla|CET]]"
end
end
end
return fun
nnptt7iaqpixf2e8f5z20nubvqati83
231442
231440
2026-06-01T21:49:51Z
ChrisPtDe
22
corrèccion
231442
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local fun = {}
local Outils = require 'Module:Outils'
-- chargement de la base de données répertoriant certaines pages existant ou n'existant pas pour éviter les "ifexist".
local dataLims
local success, resultat = pcall ( mw.loadData, 'Module:Dâta/Data' )
if success then
dataLims = resultat
else
-- protection au cas où le sous-module serait mal modifié
dataLims = { [''] = { mes = { nion = 1000, tos = { 1773, 2014 } }, } }
end
-- nettoie un paramètre non nommé (vire les espaces au début et à la fin)
-- retourne nil si le texte est vide ou n'est pas du texte. Attention c'est important pour les fonctions qui l'utilisent.
local trim = Outils.trim
-- Fonction destinée à mettre la première lettre du mois en majuscule :
-- utilisation de string car aucun mois ne commence par une lettre non ascii en français ou anglais.
local function ucfirst( str )
return str:sub( 1, 1 ):upper() .. str:sub( 2 )
end
local modeloPremier = '<abbr class="abbr" title="premiér">1<sup>ér</sup></abbr>'
-- liste des mois, écriture exacte et alias, en minuscule
local listaMes = {
{ num = 1, nJorn = 31, abrev = 'janv.', nom = 'de janviér', alias = { 'janviér', 'janvier', 'jan.', 'jan', 'janv.', 'janv', 'january' } },
{ num = 2, nJorn = 29, abrev = 'fev.', nom = 'de fevriér', alias = { 'fevriér', 'fevrier', 'fev.', 'fev', 'fevr.', 'fevr', 'feb.', 'feb', 'february' } },
{ num = 3, nJorn = 31, abrev = 'mârs', nom = 'de mârs', alias = { 'mârs', 'mars', 'mâr.', 'mâr', 'mar.', 'mar', 'march' } },
{ num = 4, nJorn = 30, abrev = 'avr.', nom = 'd’avril', alias = { 'avril', 'avr.', 'avr', 'apr.', 'apr', 'april'} },
{ num = 5, nJorn = 31, abrev = 'mê', nom = 'de mê', alias = { 'mê', 'me', 'may' } },
{ num = 6, nJorn = 30, abrev = 'jouin', nom = 'de jouin', alias = { 'jouin', 'jun', 'june' } },
{ num = 7, nJorn = 31, abrev = 'july.', nom = 'de julyèt', alias = { 'julyèt', 'julyet', 'july.', 'july', 'jul.', 'jul', 'july' } },
{ num = 8, nJorn = 31, abrev = 'oût', nom = 'd’oût', alias = { 'oût', 'out', 'aug.', 'aug', 'august' } },
{ num = 9, nJorn = 30, abrev = 'sept.', nom = 'de septembro', alias = { 'septembro', 'sept.', 'sept', 'sep.', 'sep', 'september' } },
{ num = 10, nJorn = 31, abrev = 'oct.', nom = 'd’octobro', alias = { 'octobro', 'oct.', 'oct', 'october' } },
{ num = 11, nJorn = 30, abrev = 'nov.', nom = 'de novembro', alias = { 'novembro', 'nov.', 'nov', 'november' } },
{ num = 12, nJorn = 31, abrev = 'dèc.', nom = 'de dècembro', alias = { 'dècembro', 'decembro', 'dèc.', 'dèc', 'dec.', 'dec', 'december' } },
out = { num = 8, nJorn = 31, abrev = 'oût', nom = 'd’oût', alias = { 'oût', 'out' } },
}
-- ajoute les noms, abréviations et alias en tant que clés de listeMois
for i = 1, 12 do
local mes = listaMes[ i ]
listaMes[tostring( i )] = mes
if i < 10 then
listaMes['0' .. i] = mes
end
listaMes[mes.nom] = mes
listaMes[mes.abrev] = mes
for j = 1, #mes.alias do
listaMes[mes.alias[j]] = mes
end
end
for i = 1, #listaMes.out.alias do
listaMes[listaMes.out.alias[i]] = listaMes.out
end
local lista_sesons = {
{ 'forél', 'spring', },
{ 'chôd-temps', 'summer', },
{ 'ôton', 'autumn', },
{ 'hivèrn', 'winter', },
}
-- à partir d'un nom de saison (en français ou en anglais),
-- retourne son nom canonique (exemple : "été")
-- si non reconnu, retourne nil
function fun.determenacionSeson( seson )
local s = trim( seson )
if s then
s = s:gsub( 'C', 'c' ):lower()
for i = 1, 4 do
for j = 1, #lista_sesons[i] do
if s == lista_sesons[i][j] then
return lista_sesons[i][1]
end
end
end
end
end
---
-- à partir d'un nom de mois (en français ou en anglais), de son numéro ou d'une abréviation,
-- retourne son nom canonique (exemple : "juin") et son numéro (exemple : 6)
-- si non reconnu, retourne nil, nil
function fun.determenacionMes( mes )
local result
local num = tonumber( mes )
if num then
result = listaMes[num]
else
local str = trim( mes )
if str then
result = listaMes[str]
if not result then
result = listaMes[str:gsub( 'C', 'c' ):gsub( 'Û', 'û' ):lower()]
end
end
end
if result then
return result.nom, result.num
else
return nil, nil
end
end
-- fonction interne à modeleDate, pour déterminer si on peut se passer de faire un ifexist
local function existData( dataQualificatif, an, mes )
local data
if mes then
data = dataQualificatif.mes
else
data = dataQualificatif.an
end
if type( data ) ~= 'table' then
-- si data n'existe pas c'est que l'on considère qu'il n'y a pas de lien.
return
end
-- le qualificatif est remplacé par celui de la base de données, ce qui permet des alias.
local lim = an
if dataQualificatif.qualificatif ~= '' then
lim = lim .. ' ' .. dataQualificatif.qualificatif
end
local solet = an
if mes then
lim = mes .. ' ' .. lim
solet = ucfirst( mes ) .. ' ' .. an
end
local nion = tonumber( data.nion )
if nion and an <= nion then
-- si l'année est dans la partie 'aucun' on teste s'il y a malgré tout un lien isolé
if type( data.solet ) == 'table' then
for i, v in ipairs( data.solet ) do
if solet == v or solet == tonumber( v ) then
return lim
end
end
end
-- partie aucun et pas de lien => nil
return nil
elseif type( data.tos ) == 'table' then
local tos1, tos2 = tonumber( data.tos[1] ), tonumber( data.tos[2] )
if tos1 and tos2 and an >= tos1 and an <= tos2 then
-- l'année est dans la partie 'tous' donc on retourne le lien
return lim
end
end
-- l'année n'est ni dans la partie aucun, ni dans la partie tous donc il faut tester si la page existe.
local cibaLim = mw.title.new( lim )
if cibaLim and cibaLim.exists then
return lim
end
end
---
-- Supprime le jour de la semaine, et "le" avant une date
function fun.neteyajoJorn( jorn )
if type( jorn ) == 'string' then
local nomJorn = { '[Dd]elon', '[Dd]emârs', '[Dd]emécro', '[Dd]ejô', '[Dd]evendro',
'[Dd]essando', '[Dd]emenge', '^ *[Ll]o', '^ *[Ll]e', '^ *[Ll]a' }
local premier = { '<abbr class="abbr *" title="[Pp]remiér" *>1<sup>ér</sup></abbr>', '1<sup>ér</sup>', '1ér' }
for i = 1, #nomJorn do
jorn = jorn:gsub( nomJorn[i], '' )
end
for i = 1, #premier do
jorn = jorn:gsub( premier[i], '1' )
end
jorn = trim( jorn )
end
return jorn
end
---
-- Sépare une chaine date en une table contenant les champs jour, mois et annee.
-- la date doit contenir le mois.
function fun.separacionJornMesAn( date )
date = trim( date )
if date then
local function fota( temps, valor )
return false, '<span class="error">' .. temps .. ' envalido (' .. valor .. ')</span>'
end
local dataDevantCleanup = date
local jorn, mes, an, cachierMes, cachierAn, separator
-- variable pour construire les regex
local j = '([0-3]?%d)' -- jour
local m = '([01]?%d)' -- mois numérique
local mmm = '([^%s%p%d]+[.]?)' -- mois en toute lettre
local mmm2 = '([^%s%p%d]+[.]?[-/][^%s%p%d]+[.]?)' -- mois-mois en toute lettre
local aj = '(%-?%d+)' -- année ou jour
local s = '[ ./-]+' -- séparateur simple
local sep = '([ ./-]+)' -- séparateur avec capture, pour le détecter deux fois
local muens = '(%-?)' -- signe moins pour signifier qu'il ne faut pas afficher cette donnée
date = fun.neteyajoJorn( date )
if date == nil then
return fota( 'Dâta', dataDevantCleanup )
end
if date:find( '[[', nil, true ) then
date = date
-- suppression catégories (doit être exécuté avant le code de suppression des liens)
:gsub( '%[%[[Cc]atègorie:.-%]%]', '' )
:gsub( '%[%[[Cc]ategory:.-%]%]', '' )
-- suppression liens
:gsub( '%[%[([^%[%]|]*)|?([^%[%]]*)%]%]', function ( l, t ) return trim( t ) or l end )
end
date = date
-- suppression balises
:gsub( '%b<>', '' )
-- suppression des espaces insécables
-- nbsp
:gsub( '\194\160', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- narrow nbsp
:gsub( '\226\128\175', ' ' )
:gsub( ' ', ' ' )
-- thin space
:gsub( '\226\128\137', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- simple space
:gsub( ' ', ' ' )
-- plusieurs espaces (doit être exécuté après les autres remplacements)
:gsub( ' +', ' ' )
-- réduction av. J-C pour simplifier un peu les regex
:gsub( '(%d+) ?[Dd][Ee][Vv]%.? ?[Jj][ .-]*[Cc]%.?', '-%1' )
-- suppression de l'heure dans les dates ISO
:gsub( '^+?([%d-]*%d%d%-%d%d)T%d%d[%d:,.+-]*Z?$' , '%1')
-- test année seule
if date:match( '^'..aj..'$' ) then
an = date:match( '^'..aj..'$' )
elseif date:match( '^'..aj..s..aj..muens..'$' ) then
-- jj/mm, mm/aaaa ou aaaa/mm
local a, separator, b, sb = date:match( '^'..aj..sep..aj..muens..'$' )
a, b = tonumber( a ), tonumber( b )
if separator:match( '^.+%-$' ) then
-- probablement mm/-aaaa, année av.JC
b = 0 - b
end
if a > 12 and ( b < 1 or b > 31 ) or
b > 12 and ( a < 1 or a > 31 ) then
return fota( 'Dâta', dataDevantCleanup )
elseif b < 1 or b > 31 then
mes, an, cachierAn = a, b, sb
elseif a < 1 or a > 31 then
an, mes = a, b
elseif b > 12 then
return fota( 'Mês', b )
else
jorn, mes, cachierMes = a, b, sb
end
elseif date:match( '^'..aj..sep..m..muens..'%2'..aj..muens..'$' ) then
-- jj/mm/aaaa ou aaaa/mm/jj
jorn, separator, mes, cachierMes, an, cachierAn = date:match( '^'..aj..sep..m..muens..'%2'..aj..muens..'$' )
if separator == '-' and cachierMes == '-' and cachierAn == '' and tonumber( an ) > 0 then
-- date au format jj-mm--aaaa type 17-06--44 pour 17 juin 44 av. JC
cachierMes = nil
an = 0 - an
end
elseif date:match( '^'..j..sep..mmm..muens..'%2'..aj..muens..'$' ) then
-- jj mmm aaaa
jorn, separator, mes, cachierMes, an, cachierAn = date:match( '^'..j..sep..mmm..muens..'%2'..aj..muens..'$' )
elseif date:match( '^'..mmm..s..aj..muens..'$' ) then
-- mmm aaaa
mes, separator, an, cachierAn = date:match( '^'..mmm..sep..aj..muens..'$' )
if separator:match( '^.+%-$' ) then
an = '-' .. an
end
elseif date:match( '^'..mmm2..s..aj..muens..'$' ) then
-- mmm-mmm aaaa
mes, separator, an, cachierAn = date:match( '^'..mmm2..sep..aj..muens..'$' )
if separator:match( '^.+%-$' ) then
an = '-' .. an
end
elseif date:match( '^'..j..s..mmm..muens..'$' ) then
-- jj mmm
jorn, mes, cachierMes = date:match( '^'..j..s..mmm..muens..'$' )
elseif date:match( '^'..mmm..s..j..', ?'..aj..'$') then
-- mmm jj, aaaa (format anglo-saxon)
mes, jorn, an = date:match( '^'..mmm..s..j..', ?'..aj..'$')
elseif date:match( '^'..mmm..'$' ) then
mes = date
else
return fota( 'Dâta', dataDevantCleanup )
end
local jn, ann = tonumber( jorn ), tonumber( an )
if jn and ann and ( jn > 31 or jn < 0 or #jorn >= 3 ) and ann <= 31 then
-- cas notamment des date ISO 2015-06-17, -0044-06-17 et -0002-06-17
-- inversion du jour et de l'année
local temp = an
an = jorn
jorn = temp
end
return fun.validacionJornMesAn{
jorn, mes, an,
cachierAn = trim( cachierAn ) and true or nil,
cachierMes = ( trim( cachierAn ) or not an ) and trim( cachierMes ) and true or nil,
-- or nil sert juste à éviter de trainer une valeur false dans tous les tests unitaires.
}
else
return true, {}
end
end
---
-- validationJourMoisAnnee vérifie que les paramètres correspondent à une date valide.
-- la date peut être dans les paramètres 1 à 3, ou dans des paramètres jour, mois et annee.
-- La fonction retourne true suivi d'une table avec la date en paramètres nommés (sans accent sur année)
-- ou false suivi d'un message d'erreur.
function fun.validacionJornMesAn( frame )
local args = Outils.extractArgs( frame )
local jorn, mes, numMes, an
local bjorn = args['jorn'] or args[1] or ''
local bmes = tostring( args['mês'] or args[2] or '' )
local ban = args['an'] or args[3] or ''
local function fota( temps, valor )
return false, '<span class="error">' .. temps .. ' envalido (' .. valor .. ')</span>'
end
-- on traite l'année
if Outils.notEmpty( ban ) then
an = tonumber( ban )
if an == nil and type( ban ) == 'string' then
-- test si l'année contient av. J.-C.
an = ban:match( '^(%d+) ?[Aa][Vv]%.? ?[Jj][ .-]*[Cc]%.?' )
an = tonumber( an )
if an then
an = 0 - an
else
return fota( 'An', ban )
end
elseif an == 0 then
return fota( 'An', 0 )
end
else
an = nil
end
-- on traite le mois
if Outils.notEmpty( bmes ) then
mes, numMes = fun.determenacionMes( bmes )
if mes == nil then
mes = fun.determenacionSeson( bmes )
if mes == nil then
local mes1, sep, mes2 = bmes:match( '^([^%s%p%d]+[.]?)([-/])([^%s%p%d]+[.]?)$' )
if mes1 then
mes1 = fun.determenacionMes( mes1 )
mes2 = fun.determenacionMes( mes2 )
if mes1 == nil or mes2 == nil then
return fota( 'Mês', bmes )
end
mes = mes1 .. sep .. mes2
else
return fota( 'Mês', bmes )
end
end
end
-- on traite le jour si présent
if Outils.notEmpty( bjorn ) then
if not numMes then
fota( 'Dâta', 'jorn avouéc sêson ou ben un mouél de mês' )
end
jorn = tonumber( bjorn )
if jorn == nil then
jorn = tonumber( fun.neteyajoJorn( bjorn ) )
end
if jorn == nil then
return fota( 'Jorn', bjorn )
end
-- on valide que le jour est correct
if jorn < 1 or jorn > 31 then
return fota( 'Jorn', bjorn )
elseif jorn > listaMes[numMes].nJorn then
return fota( 'Jorn', bjorn .. ' ' .. mes )
elseif jorn == 29 and numMes == 2 and an and ( math.fmod( an, 4 ) ~= 0 ) then
-- l'année bisextile sur les siècles est toujours acceptée pour être compatible avec les dates juliennes.
return fota( 'Jorn', '29 de fevriér ' .. an )
end
else
-- S'il n'y a pas de jour on regarde si la première lettre du mois est en majuscule
if bmes:match( '^%u' ) then
-- oui, on passe la première lettre en majuscule
mes = ucfirst( mes )
end
-- s'il n'y a pas d'année non plus on retourne le mois simple
end
else
-- on teste le jour si présent
if Outils.notEmpty( bjorn ) then
if an then
return fota( 'Mês', 'absent' )
else
bjorn = fun.neteyajoJorn( bjorn )
jorn = tonumber( bjorn )
if jorn then
if jorn > 31 or jorn < 1 then
an = jorn
jorn = nil
else
return fota( 'Dâta', 'jorn solèt : ' .. bjorn )
end
else
return fota( 'Jorn', bjorn )
end
end
end
end
-- vérification de l'absence d'un décalage
if an and an < 13 and an > 0 and not jorn and ( tonumber( bmes ) or ( not mes and tonumber( args[4] ) ) ) then
return false, '<span class="error">an emprobâblo (' .. an .. ')</span>'
end
local resultat = {
jorn = jorn,
mes = mes,
numMes = numMes,
an = an,
cachierAn = args.cachierAn,
cachierMes = args.cachierMes,
}
return true, resultat
end
---
-- émule le modèle {{m|Date}}.
-- Paramètres :
-- 1 : jour (numéro ou "1er") ou la date complète
-- 2 : mois (en toutes lettres) ou spécialité de l'année
-- 3 : année (nombre)
-- 4 : spécialité de l'année
-- julien : date dans le calendrier julien
-- compact : affiche le mois sous forme d'abréviation
-- avJC : non pour désactiver l'affichage de « av. J.-C. » pour les dates négatives
-- âge : ajoute la durée depuis cette date
-- agePrefix : préfixe pour l'age, 'à ' par défaut pour les décès
-- liens : active les liens par défaut
-- nolinks : ne met pas de lien sur la date (a précédence sur le paramètre "liens")
-- afficherErreurs : en cas d'erreur, si défini à "non" ne retourne pas un message d'erreur, mais le 1er argument inchangé
-- categoriserErreurs : en cas d'erreur, si défini à "non" ne catégorise pas ; peut aussi être défini avec une catégorie à utiliser à la place de celle par défaut
-- naissance : ajoute la class "bday"
-- mort : ajoute la class "dday"
function fun.modeloData( frame )
local Yesno = require 'Module:Yesno'
local args
if frame. args and frame.args.nogetparent then args = frame.args else args = Outils.extractArgs( frame ) end
-- l'import des paramètres passés au modèle appelant et non au #invoke est désactivable par nogetparent
for i,j in ipairs(args) do args[i] = tostring(j) end
local resultat
local dataNessenceMort
local cherchedovesdates = args.mort or args['èvènament'] or args.evenament
-- analyse des paramètres non nommés (ou paramètres de la date jour, mois, annee)
local eprova, params
local arg1, arg2, arg3, arg4 = fun.neteyajoJorn( args[1] ), trim( args[2] ), trim( args[3] ), trim( args[4] )
if cherchedovesdates then args2 = fun.neteyajoJorn( args2 ) end
local slashesinarg1 = arg1 and arg1:match( '[^ ./-][ ./-]+[^ ./-]' )
local slashesinarg2 = cherchedovesdates and arg2 and arg2:match( '[^ ./-][ ./-]+[^ ./-]' )
if arg1 and not arg3 and ((slashesinarg1 and not cherchedovesdates) or arg2 == nil or dataLims[arg2] or mw.ustring.match( arg2, '%a %a' ) ) then
-- une date dans le premier paramètre
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
dataNessenceMort = trim( arg2 )
params.qualificatif = trim( arg2 )
end
elseif type( arg1 ) == 'string' and type( arg2 ) == 'string' and arg3 ~= nil and arg4 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or dataLims[arg3] or mw.ustring.match( arg3, '%a %a' ) ) then
-- la date est dans le premier paramètre
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
if dataLims[trim( arg2 )] then
params.qualificatif = trim( arg2 )
end
end
elseif cherchedovesdates and (not arg4) and ( slashesinarg1 or slashesinarg2 or dataLims[arg3] or (arg3 and mw.ustring.match( arg3, '%a %a' ) ) ) then
-- deux dates dans les deux premiers paramètres
eprova, params = fun.separacionJornMesAn( arg1 )
if eprova then
dataNessenceMort = trim( arg2 )
if dataLims[trim( arg3 )] then
params.qualificatif = trim( arg3 )
end
end
else
local cleanArgs = {jorn = args.jorn, mes = args.mes, an = args.an or args['an']}
if arg1 and listaMes[arg1] and not tonumber(arg1) then --le premier argument est un mois donc le deuxième est présumé année
cleanArgs.mes = (cleanArgs.mes or arg1)
cleanArgs.an = cleanArgs.an or arg2
cleanArgs.qualificatif = arg3
else
cleanArgs.jorn = cleanArgs.jorn or arg1
cleanArgs.mes = cleanArgs.mes or arg2
cleanArgs.an = cleanArgs.an or arg3
cleanArgs.qualificatif = arg4
end
local function cachierParam( p )
-- sépare le signe moins final éventuel signifiant que le paramètre ne doit pas être affiché.
if type( p ) ~= 'string' then
return p, nil
end
local value, mask = p:match( '^%s*(.-)(%-?)%s*$' )
return value, ( mask == '-' or nil )
end
cleanArgs.mees, cleanArgs.cachierMes = cachierParam( cleanArgs.mes )
cleanArgs.an, cleanArgs.cachierAn = cachierParam( cleanArgs.an )
-- Si les paramètres ont été envoyés directement, ils ont précédence
if args.cachierMes then cleanArgs.cachierMes = args.cachierMes end
if args.cachierAn then cleanArgs.cachierAn = args.cachierAn end
eprova, params = fun.validacionJornMesAn( cleanArgs )
if eprova and dataLims[trim( cleanArgs.qualificatif )] then
params.qualificatif = trim( cleanArgs.qualificatif )
end
end
-- analyse des paramètres nommés
if eprova then
params.ajoPrefix = args.ajoPrefix
if args.qualificatif and dataLims[args.qualificatif] then
params.qualificatif = args.qualificatif
end
-- julien peut avoir trois valeurs : inactif, format standard (true), format court
params.jelien = Yesno( args.jelien, 'côrt', false )
params.devJC = Yesno( args.devJC )
if args['rèpubliquen'] and args['rèpubliquen'] ~= '' then
if args['rèpubliquen'] == 'lims' then
params.republiquen = 'lims'
else
params.republiquen = Yesno( args['rèpubliquen'], false )
end
else
params.republiquen = false
end
if args.dataNessenceMort and args.dataNessenceMort ~= '' then
dataNessenceMort = args.dataNessenceMort
elseif args['dâtaNèssenceÈvènament'] and args['dâtaNèssenceÈvènament'] ~= '' then
dataNessenceMort = args['dâtaNèssenceÈvènament']
end
if dataNessenceMort then
local eprovaNessenceMort, paramsNessenceMort = fun.separacionJornMesAn( dataNessenceMort )
if eprovaNessenceMort then
params.anNessenceMort, params.mesNessenceMort, params.numMesNessenceMort, params.jornNessenceMort = paramsNessenceMort.an, paramsNessenceMort.mes, paramsNessenceMort.numMes, paramsNessenceMort.jorn
end
end
local listaParam = {
ajo = 'âjo',
['âjo'] = 'âjo',
nessence = 'nèssence',
['nèssence'] = 'nèssence',
mort = 'môrt',
['môrt'] = 'môrt',
apJC = 'apJC',
nolinks = 'nolinks',
compact = 'compacto',
compacto = 'compacto',
}
for n, v in pairs( listaParam ) do
params[v] = params[v] or Yesno( args[n], true, false ) or nil
end
if not params.nolinks then
local lims = Yesno( args.lims )
if lims == nil then
-- liens actifs par défaut si qualificatif
lims = params.qualificatif and params.qualificatif ~= "" and true or false
end
params.nolinks = not lims
end
-- sortie pour les tests unitaire, ou pour débugger
if args.debug then
return params
end
resultat = fun._modeloData( params )
else
local yn_farevereFotes = Yesno( args.farevereFotes )
if yn_farevereFotes == nil or yn_farevereFotes == true then
resultat = params
else
resultat = args[1]
end
local currentTitle = mw.title.getCurrentTitle()
if currentTitle:inNamespaces( 0, 4, 10, 14, 100 )
and not Outils.notEmpty( args.nocat )
and not currentTitle.prefixedText:match( '^Modèlo:.+/Èprôva$' ) then
local categoria
local yn_categorisarFotes = Yesno( args.categorisarFotes, 'custom', true )
if yn_categorisarFotes == nil or yn_categorisarFotes == true then
categoria = '[[Catègorie:Pâge qu’emplèye lo modèlo dâta avouéc na sintaxa fôssa]]'
elseif yn_categorisarFotes == false then
categoria = ''
else
local nomCategoria = args.categorisarFotes
:gsub( '^%[%[', '' )
:gsub( '%]%]$', '' )
:gsub( '^:?[Cc]atègorie:', '' )
:gsub( '^:?[Cc]atègory:', '' )
categoria = '[[Catègorie:' .. nomCategoria .. ']]'
end
resultat = resultat .. categoria
end
end
return resultat or ''
end
function fun._modeloData( args )
local an, mes, numMes, jorn = args.an, args.mes, args.numMes, args.jorn
local qualificatif = args.qualificatif
if ( an or mes or jorn ) == nil then
return
end
-- on traite l'âge, naissance et mort
local ajoPrefix = args.ajoPrefix
local ajo = args['âjo'] and fun.ajo( an, numMes, jorn )
local nessence = args['nèssence'] or args.nessence
local mort = args['môrt'] or args.mort
local evenament = args['èvènament'] or args.evenament
if mort and args.anNessenceMort then
ajo = fun.ajo( args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort, an, numMes, jorn )
ajoPrefix = ajoPrefix or 'a ' -- faut-il mettre \194\160 ?
elseif evenament and args.anNessenceMort then
if nessence then
ajo = fun.ajo( an, numMes, jorn, args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort )
else
ajo = fun.ajo(args.anNessenceMort, args.numMesNessenceMort, args.jornNessenceMort, an, numMes, jorn )
end
end
ajoPrefix = ajoPrefix or ''
-- on traite le calendrier
local gan, gmes, gjorn = an, numMes, jorn -- date suivant le calendrier grégorien pour <time>
local jan, jmes, jjorn = an, mes, jorn -- date suivant le calendrier julien si necessaire
local jelienData, jelienSup, jelienSep -- servira éventuellement à afficher la date selon le calendrier julien
local gregAprMes, gregAprAn, gregFin -- message de calendrier grégorien lorsque la date est selon le calendrier julien
local dataRepubliquena
if an and jorn then
local amj = an * 10000 + numMes * 100 + jorn
if amj < 15821014 then
if an > 0 then
gan, gmes, gjorn = fun.julianToGregorian( an, numMes, jorn )
else
-- calendrier grégorien proleptique avec année 0.
gan, gmes, gjorn = fun.julianToGregorian( an + 1, numMes, jorn )
end
args.jelien = false
elseif args.jelien then
gan, gmes, gjorn = fun.julianToGregorian( an, numMes, jorn )
an, mes, jorn = gan, listaMes[gmes].nom, gjorn
if jjorn == 1 then
jjorn = modeloPremier
end
if args.compact then
jmes = listaMes[jmes].abrev
end
if args.jelien == 'côrt' then
jelienData = jjorn .. ' ' .. jmes .. ' '
jelienSup = '<sup>[[calendriér jelien|jel.]]</sup>'
if jan == an then
gregAprMes = '<sup>[[calendriér grègorien|grèg.]]</sup>'
else
jelienData = jelienData .. jan .. ' '
gregAprAn = '<sup>[[calendriér grègorien|grèg.]]</sup>'
end
jelienSep = ' / '
else
jelienData = jjorn .. ' ' .. jmes .. ' ' .. jan
jelienSep = ' ('
gregFin = ' [[Passâjo du calendriér jelien u calendriér grègorien|dens lo calendriér grègorien]])'
end
elseif args.republiquen then
local DataRep = require 'Module:Dâta rèpubliquèna'
local RepSenLims
if args.republiquen == 'lims' then
RepSenLims = false
else
RepSenLims = true
end
dataRepubliquena = DataRep._data_republiquena(
RepSenLims,
{ fun.formatRepCal( fun.do_toRepCal{gan, gmes, gjorn} ) }
)
end
else
if an and an < 0 then
gan = gan + 1
end
args.jelien = false
args.republiquen = false
end
-- on génère le résultat
-- Déclarations des variables
local wikiLista = {} -- reçoit le texte affiché pour chaque paramètre
local iso = {} -- reçoit le format date ISO de ce paramètre
local textoMes = mes -- texte du mois qui sera affiché (éventuellement l'abréviation)
if args.compact then
if not numMes then
-- mois est autre chose qu'un simple mois : saison, mois-mois... auquel cas, pas d'abréviation (provoquait erreur Lua)
-- (les abréviations pour le cas "mois[-/]mois" seraient théoriquement possibles, mais ça reste à implémenter)
else
if args.nolinks then
textoMes = '<abbr class="abbr" title="' .. mes .. '">' .. listaMes[mes].abrev .. '</abbr>'
else
textoMes = listaMes[mes].abrev
end
end
end
mes = mes and mes:gsub( 'out', 'oût' )
local dataQualificatif, dataCat
if not args.nolinks then
dataQualificatif = dataLims[qualificatif or '']
if type( dataQualificatif ) ~= 'table' then
-- si le qualificatif n'est pas dans la base de données, on crée une table minimum,
-- qui imposera un test sur l'année, mais considère qu'il n'y a pas de lien sur le jour ou le mois
dataQualificatif = { qualificatif = qualificatif, an = { } }
end
dataCat = dataLims[dataQualificatif.cat]
if type( dataCat ) ~= 'table' or dataCat == dataQualificatif then
dataCat = { qualificatif = '' }
end
end
local function wikiLim( lim, texto )
if lim == texto then
return '[[' .. texto .. ']]'
else
return '[[' .. lim .. '|' .. texto .. ']]'
end
end
-- le jour si présent
local qualifJorn = ''
if jorn then
if args.nolinks then
if jorn == 1 then
jorn = modeloPremier
end
table.insert( wikiLista, jorn )
else
qualifJorn = dataQualificatif.jorn and dataQualificatif.qualificatif
or dataCat.jorn and dataCat.qualificatif
or ''
local textoJorn, lim
if jorn == 1 then
textoJorn = '1<sup>ér</sup>'
lim = '1ér ' .. mes
else
textoJorn = jorn
lim = jorn .. ' ' .. mes
end
if qualifJorn ~= '' then
lim = lim .. ' ' .. qualifJorn
end
-- s'il n'y a pas de lien sur le mois, il sera affiché avec le jour.
table.insert( wikiLista, wikiLim( lim, textoJorn ) )
table.insert( wikiLista, wikiLim( lim, textoJorn .. ' '.. textoMes ) )
end
table.insert( iso, 1, string.sub( '0' .. gjorn, -2 ) )
end
-- le mois
if mes then
if #wikiLista == 0 and an == nil then
return textoMes
end
if args.nolinks then
if not args.cachierMes then
table.insert( wikiLista, textoMes )
end
else
local lim
if an then
if not numMes then
-- mois est autre chose qu'un simple mois : saison, mois-mois... auquel cas, pas de lien
else
lim = existData( dataQualificatif, an, mes ) or existData( dataCat, an, mes )
if lim == nil and qualificatif and qualifJorn == '' then
-- nouveau test sans le qualificatif uniquement s'il n'y a pas d'éphémérides pour ce qualificatif.
lim = existData( dataLims[''], an, mes )
end
end
end
if lim or args.cachierMes then
-- s'il y a un lien on retire le lien affichant 'jour mois' pour ajouter '[[mois annee|mois]]'
table.remove( wikiLista )
if not args.cachierMes then
table.insert( wikiLista, wikiLim( lim, textoMes ) )
end
elseif #wikiLista > 0 then
-- sinon on retire le lien affichant 'jour' pour ne garder que le lien 'jour mois'
table.remove( wikiLista, #wikiLista - 1 )
elseif args.cachierAn then
-- s'il n'y a pas de jour et que l'année n'est pas affichée, on insère le mois seul.
table.insert( wikiLista, textoMes )
end
end
if gmes then
table.insert( iso, 1, string.sub( '0' .. gmes, -2 ) )
end
table.insert( wikiLista, gregAprMes )
end
-- l'année
if an and not (args.jelien == true and args.nolinks and jan == an ) then
if not args.cachierAn then
local textoAn = an
if an < 0 then
local anDevJc = 0 - an
if args.devJC == false then
textoAn = anDevJc
else
textoAn = anDevJc .. ' <abbr class="abbr" title="'
.. 'devant Jèsus-Crist">dev. J.-C.</abbr>'
end
elseif args.apJC then
textoAn = textoAn .. ' <abbr class="abbr" title="'
.. 'aprés Jèsus-Crist">apr. J.-C.</abbr>'
end
if args.nolinks then -- seulement si on doit l'afficher
table.insert( wikiLista, textoAn )
else
local lim = existData( dataQualificatif, an ) or existData( dataCat, an )
if not lim then
if an < 0 then
local anDevJc = 0 - an
lim = anDevJc .. ' dev. J.-C.'
else
lim = an
end
end
if mes and #wikiLista == 0 then
-- si le mois n'a pas de lien et n'est pas affiché avec le jour, il est affiché avec l'année.
textoAn = textoMes .. ' ' .. textoAn
end
table.insert( wikiLista, wikiLim( lim, textoAn ) )
end
end
end
if an then
if gan > 999 then
table.insert( iso, 1, gan )
elseif gan > -1 then
table.insert( iso, 1, string.sub( '000' .. gan , -4 ) )
elseif gan > -999 then
-- calendrier grégorien proleptique avec année 0.
table.insert( iso, 1, 'U-' .. string.sub( '000' .. ( 0 - gan ), -4 ) )
else
table.insert( iso, 1, 'U' .. gan )
end
end
table.insert( wikiLista, gregAprAn )
-- l'age
if type( ajo ) == 'number' and ajo >= 0 and ( not nessence or ajo < 120 ) then
if ajo == 0 then
ajo = '(' .. ajoPrefix .. 'muens d’un\194\160an)'
elseif ajo == 1 then
ajo = '(' .. ajoPrefix .. '1\194\160an)'
else
ajo = '('.. ajoPrefix .. ajo .. '\194\160ans)'
end
else
ajo = false
end
-- compilation du résultat
local wikiTexto = table.concat( wikiLista, ' ' )
local isoTexto = table.concat( iso, '-' )
-- On ajoute un peu de sémantique.
local wikiHtml = mw.html.create( '' )
if jelienData then
wikiHtml:tag( 'span')
:addClass( 'nowrap' )
:attr( 'data-sort-value', isoTexto )
:wikitext( jelienData )
:node( jelienSup )
:done()
:wikitext( jelienSep )
end
local dataHtml = wikiHtml:tag( 'time' )
:wikitext( wikiTexto )
if wikiTexto:match( ' ' ) then
dataHtml:addClass( 'nowrap' )
end
if isoTexto ~= wikiTexto then
dataHtml:attr( 'datetime', isoTexto )
:attr( 'data-sort-value', isoTexto )
end
if not args.nolinks then
dataHtml:addClass( 'dâta-lim' )
end
if nessence then
dataHtml:addClass( 'bday' )
elseif mort then
dataHtml:addClass( 'dday' )
end
wikiHtml:wikitext( gregFin )
if dataRepubliquena then
wikiHtml:wikitext( ' (', dataRepubliquena, ')' )
end
if ajo then
wikiHtml:wikitext( ' ' )
:tag( 'span' )
:addClass( 'noprint')
:wikitext( ajo )
:done()
end
return tostring( wikiHtml )
end
-- isoJourMoisAnnee transforme une date iso en un tableau équivalent à celui retourné par separationJourMoisAnnee
local function isoJornMesAn( dataiso )
if dataiso and dataiso:sub( 1, 2 ) == 'U-' then
dataiso = dataiso:sub( 2 )
end
local an, mes, jorn = dataiso:match( '^(%-?%d%d%d%d+)%-(%d+)%-(%d+)$' )
if not an then
an, mes = dataiso:match( '^(%-?%d%d%d%d+)%-(%d+)$' )
end
if not an then
an = dataiso:match( '^(%-?%d%d%d%d+)$' )
end
if an and tonumber( an ) <= 0 then
-- la date iso utilise une année 0
an = tonumber( an ) - 1
end
if not an then
mes, jorn = dataiso:match( '^(%d+)%-(%d+)$' )
end
return fun.validacionJornMesAn{ jorn, mes, an }
end
-- analyseDate sépare la date du contenu qui précède et suit, supprime les liens, et retourne si possible une table avec jour mois année
local function analisaData( d )
if trim( d ) then
local datesMultiples = d:match( ' ou ben ' ) or d:match( '^[Ee]ntre-mié ' ) or d:match( '<time.->.-<time.->' )
if datesMultiples then
return d
end
local aprox = d:match( '^[Dd]e vers ' ) or d:match( '^[Aa]prés ' ) or d:match( '^[Dd]evant ' )
-- booléen qui indique que la date est approximative, empêchant l'affichage de l'âge ou de la durée
aprox = aprox and true or false
local analisa = d
-- s'il s'agit d'une date formattée avec {{date}}, on utilisera la valeur du datetime pour reconstruire la date
local dataiso = d:match( 'datetime="([U%d-]+)"' ) or d:match( '<time>(.-)</time>' )
local comencement, strData, fin
if dataiso then
-- supprime le formatage créé par {{date}}
comencement, strData, fin = analisa:match( '(.-)<time.->(.-)</time>(.*)' )
end
if not strData then
-- sépare une date av. J.-C. du contenu qui suit
strData, fin = analisa:match( '(.-%d av%. J%.%-C%.]*%-?)(.*)' )
end
if not strData then
-- sépare la date (avec ses liens) d'une référence ou contenu commençant par un espace
strData, fin = analisa:match( '(.-%d%d%d%]*%-?)([\127 ].+)' )
end
if not strData then
-- sépare la date du contenu commençant par <br>
strData, fin = analisa:match( '(.-%d%d%d%]*%-?)(<br ?/?>.+)' )
end
analisa = strData or analisa
-- supprime les liens
analisa = analisa:gsub(
'%[%[([^%[%]|]*)|?([^%[%]]*)%]%]',
function ( l, t )
return trim( t ) or l
end
)
local t, r
if dataiso then
-- Si la date était formatée avec {{date}}, on la reconstruit à partir de la valeur de datetime
t, r = isoJornMesAn( dataiso )
end
if t then
local tTexto, rTexto = fun.separacionJornMesAn( analisa )
if r.an and r.jorn then
local amj = r.an * 10000 + r.numMes * 100 + r.jorn
-- Les dates avant le 14 octobre 1582 sont dans le calendrier julien mais utilisent un datetime grégorien
local gregToJul = amj < 15821014
if not gregToJul and amj < 15821024 then
-- Entre le 14 et le 23 octobre, on ne peut pas différencier entre julien et grégorien sans comparer avec le texte
gregToJul = tTexto and rTexto.jorn ~= r.jorn
end
if gregToJul then
local jan, jmes, jjorn = fun.gregorianToJulian( r.an, r.numMes, r.jorn )
r = {
an = jan,
numMes = jmes,
mes = listaMes[jmes].nom,
jorn = jjorn
}
end
end
if tTexto then
-- On analyse le texte de la date pour repérer les dates partiellement masquées
-- Si seul le jour est affiché, separationJourMoisAnnee l'interprète comme une année
if not rTexto.jorn and not rTexto.mes and rTexto.an == r.jorn then
r.cachierMes = true
r.cachierAn = true
elseif rTexto.jorn == r.jorn and rTexto.mes == r.mes and not rTexto.an then
r.cachierAn = true
end
end
else
t, r = fun.separacionJornMesAn( analisa )
end
if t then
return r, fin, comencement, aprox
else
return d, fin, comencement, aprox
end
end
end
---
-- fonction destinée aux infobox, notamment pour afficher les dates de naissance et de mort
-- les liens présent dans les dates fournies sont automatiquement supprimés pour gérer les cas où
-- le paramètre contient déjà un modèle date.
-- Paramètres :
-- 1 : type de date à afficher (naissance / n, mort / m, ou date / d)
-- 2 : Date ou date de naissance
-- 3 : Date de mort si type n ou m
-- qualificatif = suffixe des page de date à lier (exemple : en musique)
-- nolinks : n'affiche pas de lien
-- préfixe : préfixe à afficher s'il y a un jour (par défaut '')
-- préfixe sans jour : préfixe à afficher s'il n'y a pas de jour (par défaut : '')
function fun.dataEnfocajon( frame )
local args = frame.args
if type( args ) ~= 'table' or not ( args[1] and args[2] ) then
return
end
-- prefix ajoute un préfixe en fonction de la présence ou non du jour si le paramètre "préfixe sans jour" est défini
local function prefix( dataString )
if dataString then
local datetime = dataString:match( 'datetime="([U%d%-]+)"' )
if datetime and datetime:match('%-%d%d%-%d%d') and trim( args['prèfixo'] ) then
return args['prèfixo'] .. ' ' .. dataString
end
if trim( args['prèfixo sen jorn'] ) then
return args['prèfixo sen jorn'] .. ' ' .. dataString
end
end
return dataString
end
local nessence = args[1]:match( '^n' ) == 'n'
local mort = args[1]:match( '^m' ) or args[1]:match( 'môrt' )
local evenament = args[1]:match( '^è' )
local afichajoData, qualificatif = args[2], args[4]
local afichajoDataTab, resultatData, complementData, prefixoData, aproxData
local dataNessence, dataMort, aproxNessence, aproxMort
if mort or evenament then
afichajoData = args[3]
end
if not trim( afichajoData ) then
return
end
if afichajoData:match( ']]</time>' ) or afichajoData:match( '</time>]]' ) then
-- S'il y a des liens il y a probablement déjà un modèle date, évitons de l'exécuter une 2e fois
if ( nessence or mort or evenament ) and ( afichajoData:match( 'wikidata%-linkback' )) then
local _
dataNessence, _, _, aproxNessence = analisaData( args[2] )
dataMort, _, _, aproxMort = analisaData( args[3] )
resultatData = afichajoData
else
return prefix( afichajoData )
end
else
afichajoDataTab, complementData, prefixoData, aproxData = analisaData( afichajoData )
if type( afichajoDataTab ) ~= 'table' then
return afichajoDataTab
else
if nessence then
local _
dataNessence, aproxNessence = afichajoDataTab, aproxData
dataMort, _, _, aproxMort = analisaData( args[3] )
elseif mort then
local _
dataNessence, _, _, aproxNessence = analisaData( args[2] )
dataMort, aproxMort = afichajoDataTab, aproxData
else
qualificatif = args[3]
end
afichajoDataTab.nessence = not aproxNessence and nessence
afichajoDataTab.mort = not aproxMort and mort
afichajoDataTab.evenament = evenament
afichajoDataTab.qualificatif = args.qualificatif or qualificatif
afichajoDataTab.lims = true -- Dans les infobox, liens activés par défaut
afichajoDataTab.nolinks = args.nolinks
afichajoDataTab.nocat = args.nocat
afichajoDataTab.jelien = args.jelien
end
end
resultatData = resultatData or fun._modeloData( afichajoDataTab )
local ajo, prefixAjo, suffixAjo, carculAjo = '', ' <span class="noprint">(', ')</span>', nil
if nessence and
dataNessence and
not aproxNessence and
not dataMort and
type( dataNessence ) == 'table'
then
carculAjo = fun.ajo( dataNessence.an, dataNessence.numMes, dataNessence.jorn )
if carculAjo and carculAjo > 120 then
carculAjo = nil
end
elseif ( mort or evenament ) and
dataNessence and
dataMort and
not aproxNessence and
not aproxMort and
type( dataNessence ) == 'table'
and type( dataMort ) == 'table'
then
carculAjo = fun.ajo(
dataNessence.an,
dataNessence.numMes,
dataNessence.jorn,
dataMort.an,
dataMort.numMes,
dataMort.jorn
)
prefixAjo = ' (tant qu’a '
suffixAjo = ')'
end
if tonumber( carculAjo ) then
if carculAjo > 1 then
ajo = prefixAjo .. carculAjo .. '\194\160ans' .. suffixAjo
elseif carculAjo == 1 then
ajo = prefixAjo .. '‘n\194\160an' .. suffixAjo
elseif carculAjo == 0 then
ajo = prefixAjo .. 'muens d’un\194\160an' .. suffixAjo
end
if complementData and complementData:match( 'ans?%)' ) then
complementData = ''
end
end
return ( prefixoData or '' ) .. prefix( resultatData ) .. ( complementData or '' ) .. ajo
end
function fun.tempsEnfocajon( frame )
local args = frame.args
if type( args ) ~= 'table' or not args[1] then
return
end
-- vérifie si une chaîne semble contenir une durée
local function contintTemps( chena )
return chena and (
mw.ustring.match( chena, '%f[%w]ans?%f[^%w]' ) or
mw.ustring.match( chena, '%f[%w]mês%f[^%w]' ) or
mw.ustring.match( chena, '%f[%w]jorns?%f[^%w]' )
)
end
local jorn1, mes1, an1, jorn2, mes2, an2 = '', '', '', '', '', ''
local t1, fin1, _, aprox1 = analisaData( args[1] )
if aprox1 or type( t1 ) ~= 'table' then
return
end
jorn1 = t1.jorn or ''
mes1 = t1.numMes or ''
an1 = t1.an or ''
if args[2] and args[2] ~= "" then
local t2, fin2, _, aprox2 = analisaData( args[2] )
if aprox2 or type( t2 ) ~= 'table' then
return
end
if contintTemps( fin2 ) then
-- La durée semble déjà renseignée manuellement
return
end
jorn2 = t2.jorn or ''
mes2 = t2.numMes or ''
an2 = t2.an or ''
if an1 == '' or an2 == '' then
-- Mieux vaut ne pas extrapoler l'année
return
end
if ( jorn1 ~= '' and jorn2 == '' ) or
( mes1 ~= '' and mes2 == '' ) then
-- Si la deuxième date est moins précise que la première, mieux vaut ne rien afficher
return
end
elseif an1 == '' or contintTemps( fin1 ) then
-- L'année n'est pas spécifiée ou la durée semble déjà renseignée
return
end
local temps = (require 'Module:Temps').temps({ jorn1, mes1, an1, jorn2, mes2, an2, noerror = true })
if temps then
return '<br /><small>(' .. temps .. ')</small>'
end
end
---
-- la fonction dateISO renvoie un date au format aaaa-mm-jj (sans liens)
-- l'année peut être sous la forme 2013 ou [[2013 en litérature|2013]]
-- le mois peut être en lettres ou en chiffres
-- le jour peut être sous la forme '05', '{{1er}}' ou 'vendredi 13'
function fun.dataISO( frame )
local args = Outils.extractArgs( frame )
local an = Outils.notEmpty( args['an'], args.an, args.year, args.date )
-- extraction de l'année
if type( an ) == 'string' then
an = ( tonumber( an ) -- match '2013'
or string.match ( an, '%D(%d%d%d%d)%D' ) -- match '[[2013 en musique|2013]]'
or string.match ( an, '%D(%d%d%d%d)$' ) -- match '17 septembre 2013'
or string.match ( an, '^(%d%d%d%d)%D' ) -- match '2013-09-17'
)
end
an = tonumber( an )
-- le format de date iso est défini suivant le calendrier grégorien.
-- Avant l'année 1583 la date est calendrier est probablement du calendrier julien,
-- donc autant s'abstenir.
if an and an > 1582 then
local mes = Outils.notEmpty( args.mes, args.month )
-- num mois trouve le numéro du mois, qu'il soit numérique ou texte, complet ou abrégé.
local nomMes, numMes = fun.determenacionMes( mes )
if numMes then
mes = '-' .. string.sub( '0' .. numMes, -2 )
local jorn = Outils.notEmpty( args.jorn, args.day, args['quantiémo'] )
if type( jorn ) == 'string' then
jorn = tonumber( jorn ) or tonumber( string.match ( jorn, '%d+') )
end
jorn = tonumber( jorn )
if jorn and jorn <= listaMes[numMes].nJorn then
jorn = '-' .. string.sub( '0' .. jorn, -2 )
return an .. mes .. jorn
else
return an .. mes
end
else
return tostring( an )
end
end
end
---
-- Rang du jour dans l'année
-- Usage : do_dayRank{année,mois,jour}
function fun.do_dayRank(arguments)
local yr = tonumber(arguments.year or arguments[1]) or 1
local mt = tonumber(arguments.month or arguments[2]) or 1
local dy = tonumber(arguments.day or arguments[3]) or 1
-- Rangs des premiers des mois
local ranks = {0,31,59,90,120,151,181,212,243,273,304,334}
local rank = (ranks[mt] or 0) + dy - 1
if(fun.isLeapYear(yr) and (mt >= 3)) then
rank = rank+1
end
return rank
end
-- Nombre de jours entre deux années (du 1er janvier au 1er janvier)
-- Suit le calendrier grégorien
function fun.do_daysBetween(arguments)
local yr1 = tonumber(arguments[1]) or 0
local yr2 = tonumber(arguments[2]) or 0
return fun.daysSinceOrigin(yr2) - fun.daysSinceOrigin(yr1)
end
-- Nombre de jours depuis l'année 1 (du 1er janvier au 1er janvier)
function fun.daysSinceOrigin(year)
local yr = year-1
return 365*yr + math.floor(yr/4) - math.floor(yr/100) + math.floor(yr/400)
end
-- Test d'année bissextile (Suit le calendrier grégorien)
function fun.isLeapYear(year)
local yr = tonumber(year) or 1
return (yr%4 == 0) and ((yr%100 ~= 0) or (yr%400 == 0))
end
-- Conversion d'un nombre en chiffres romains
function fun.toRoman(number)
local n = math.floor(number)
local letters = {"I","V","X","L","C","D","M","",""}
local pattern = {"","0","00","000","01","1","10","100","1000","02"}
local result = ""
if(n<=0 or n>=4000) then
result = "---"
else
for i=1,7,2 do
local p = pattern[n%10 + 1]
for j=0,2 do
p = string.gsub(p,tostring(j),letters[i+j])
end
result = p .. result
n = math.floor(n/10)
end
end
return result
end
-- Conversion et affichage d'une date dans le calendrier républicain
function fun.dataRepubliquen(frame)
local pframe = frame:getParent()
local arguments = pframe.args
return fun.formatRepCal(fun.do_toRepCal(arguments))
end
---
-- Calcul d'une date dans le calendrier républicain
-- On suppose que les années 4n+3 sont sextiles (3, 7, 11...)
function fun.do_toRepCal(arguments)
local yr = tonumber(arguments.year or arguments[1]) or 2000
-- rang absolu du jour demandé, le jour 0 étant le 22 septembre 1792 (1er jour de l'an I)
local repDays = fun.do_dayRank(arguments) + fun.do_daysBetween{1792,yr} - fun.do_dayRank{1792,9,22}
local repYear = math.floor((repDays+731)/365.25) - 1
local repDayRank = repDays - 365*(repYear-1) - math.floor(repYear/4)
local repMonth, repDay = math.floor(repDayRank/30)+1, (repDayRank%30)+1
return {repYear, repMonth, repDay}
end
---
-- Formatage d'une date selon le calendrier républicain
-- Usage : fun.formatRepCal{année,mois,jour}
function fun.formatRepCal(arguments)
local months = {"Vendèmiéro","Brumèro","Fremèro","Nevôso","Ploviôso","Ventôso","Gèrniâl","Flloriâl","Prâriâl","Mêssidor","Tèrmidor","Fruitidor"}
local extras = {"de la vèrtu","du genie","de l’ôvra","de les rècompenses","de l’avis","de la Rebênâda"}
local result = ""
if(arguments[2] < 13) then
result = result .. tostring(arguments[3]) .. "\194\160" .. months[arguments[2]]
else
result = result .. "jorn " .. extras[arguments[3]]
end
result = result .. " de l’an " .. fun.toRoman(arguments[1])
return result
end
---
-- Voir Modèle:Âge
-- retourne l'âge en fonction de la ou les dates fournies. La valeur retournée est de type 'number'
-- Paramètres :
-- 1, 2, 3 : année, mois jour de naissance (supposé dans le calendrier grégorien)
-- 4, 5, 6 : année, mois, jour du calcul (facultatif, par défaut la date UTC courante).
function fun.ajo( ann, mn, jn, ac, mc, jc )
if ac == nil then
local today = os.date( '!*t' )
ac = today.year
mc = today.month
jc = today.day
else
ac = tonumber( ac )
mc = tonumber( mc )
jc = tonumber( jc )
end
ann = tonumber( ann )
mn = tonumber( mn )
jn = tonumber( jn )
if ann == nil or ac == nil or mn == nil or mc == nil then
-- pas de message d'erreur qui risque de faire planter la fonction appelante
-- à elle de gérer ce retour.
return
end
local ajo = ac - ann
-- si l'intervalle traverse l'année zéro, il faut soustraire une année
-- parce que cette année n'existe pas dans les calendriers chrétiens
if ann < 0 and ac > 0 then
ajo = ajo - 1
end
if mc == mn then
if jc == nil or jn == nil then
return
end
return ajo - ( jc < jn and 1 or 0 )
else
return ajo - ( mc < mn and 1 or 0 )
end
end
function fun.modeloAjo( frame )
local args = Outils.extractArgs( frame )
local ajo = fun.ajo(
args[1] or args['an'],
args[2] or args['mês'],
args[3] or args['jorn'],
args[4],
args[5],
args[6]
)
if ajo then
return ajo
else
return '<span class="error">Paramètros fôx ou ben ensufisents por carcular l’âjo prècis</span>'
end
end
---
-- calcul du jour julien à partir d'une date du calendrier grégorien
function fun.julianDay( year, month, day, hour, min, sec )
local julian
julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )
- math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 100 )
+ math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 400 )
+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )
+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400
- 32167.5
return julian
end
---
-- calcul du jour julien à partir d'une date du calendrier julien
function fun.julianDayJulian( year, month, day, hour, min, sec )
local julian
julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )
+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )
+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400
- 32205.5
return julian
end
---
-- calcul d'une date dans le calendrier grégorien à partir du jour julien
function fun.julianDayToGregorian( julianDay )
local base = math.floor( julianDay + 32044.5 ) -- 1 March -4800 (proleptic Gregorian date)
local nCentury = math.floor( ( base * 4 + 3 ) / 146097 )
local sinceCentury = base - math.floor( nCentury * 146097 / 4 )
local nYear = math.floor( ( sinceCentury * 4 + 3 ) / 1461 )
local sinceYear = sinceCentury - math.floor( nYear * 1461 / 4 )
local nMonth = math.floor( ( sinceYear * 5 + 2 ) / 153 )
local day = sinceYear - math.floor( ( nMonth * 153 + 2 ) / 5 ) + 1
local month = nMonth - math.floor( nMonth / 10 ) * 12 + 3
local year = math.floor( sinceYear / 306 ) + nYear + 100 * nCentury - 4800
return year, month, day
end
---
-- calcul d'une date dans le calendrier julien à partir du jour julien
-- calcul basé sur l'algorithme de la page https://en.wikipedia.org/wiki/Julian_day#Julian_or_Gregorian_calendar_from_Julian_day_number
function fun.julianDayToJulian( julianDay )
local y = 4716
local v = 3
local j = 1401
local u = 5
local m = 2
local s = 153
local n = 12
local w = 2
local r = 4
local B = 274277
local p = 1461
local C = -38
local f = julianDay + j
local e = r * f + v
local g = math.modf( math.fmod( e, p ) / r )
local h = u * g + w
local D = math.modf( math.fmod( h, s ) / u ) + 1
local M = math.fmod( math.modf( h / s ) + m, n ) + 1
local Y = math.modf( e / p ) - y + math.modf( ( n + m - M ) / n )
return Y, M, D
end
---
-- calcul d'une date dans le calendrier grégorien à partir d'une date dans le calendrier julien
function fun.julianToGregorian( year, month, day )
return fun.julianDayToGregorian( fun.julianDayJulian( year, month, day ) )
end
---
-- calcul d'une date dans le calendrier julien à partir d'une date dans le calendrier grégorien
function fun.gregorianToJulian( year, month, day )
year = tonumber(year)
if month then month = tonumber(month) else month = 6 end --prend une valeur centrale pour donner un best "guess"
if day then day = tonumber(day) else day = 15 end
return fun.julianDayToJulian( fun.julianDay( year, month, day ) )
end
--[[
Cette fonction retourne "CET" ou "CEST" selon que dans la pseudo-timezone en cours
c'est l'heure d'été ou l'heure d'hiver.
Cette fonction n'a de sens a priori que pour des modèles utilisés en Europe
Paramètre optionnel non nommé : "sans lien" : retourne le texte CET/CEST. sinon
retourne ce même texte avec un wikilien vers les articles correspondants
--]]
function fun.CEST(frame)
-- option : ne pas créer de wikilien
local opt = trim(frame.args[1] or frame:getParent().args[1])
-- on récupère l'information dans la zone courante
local t = mw.getContentLanguage():formatDate("I", nil, true)
if (t == "1") then -- heure d'été
if (opt == "sen lim") then
return "CEST"
elseif (opt == "dècalâjo") then
return "2"
else
return "[[Hora de chôd-temps d’Eropa centrâla|CEST]]"
end
else -- heure d'hiver (ou autre zone où ça ne s'applique pas)
if (opt == "sen lim") then
return "CET"
elseif (opt == "dècalâjo") then
return "1"
else
return "[[Hora normala d’Eropa centrâla|CET]]"
end
end
end
return fun
og1a81henirj7icazguv5r25lq6z7uu
Module:Dâta/Data
828
8695
231441
185466
2026-06-01T21:47:22Z
ChrisPtDe
22
corrèccion
231441
Scribunto
text/plain
-- bâsa de balyês qu’encârte por difèrentes tèmatiques
-- les plages de cronologica qu’ègzistont qu’ant gouéro de chance d’ègzistar.
local data = { }
data[""] = {
qualificatif = "",
jorn = true,
mes = {
nion = "1762",
tos = {"1773", "2016"},
solet = {
"Mars 1058",
"Avril 1180", "Juillet 1185",
"Juillet 1224", "Août 1248",
"Mars 1315", "Janvier 1384",
"Janvier 1430",
"février 1514", "avril 1521", "Mai 1521", "juin 1521", "Juillet 1558", "mai 1574", "août 1588",
"octobre 1621", "juin 1636", "septembre 1649", "aout 1656", "mai 1668", "mai 1676", "octobre 1698",
"Janvier 1701", "Février 1701", "Mars 1701", "Avril 1701", "Mai 1701", "Juin 1701", "mars 1704",
"juin 1711", "décembre 1718", "mars 1725", "novembre 1728", "Décembre 1731", "Octobre 1741", "juin 1747", "Juin 1753",
},
},
}
-- ----------- --
-- Sport --
-- ----------- --
data["sport"] = {
qualificatif = "en sport",
cat = "sport",
tri = "_sport",
jorn = true,
mes = { nion = 2004, tos = {2005, 2016}, },
an = { nion = 1849, tos = {1850, 2018}, },
}
data["en sport"] = data["sport"]
data["en athlétisme"] = {
qualificatif = "en athlétisme",
cat = "sport",
tri = "athletisme",
an = { nion = 2001, tos = {2002, 2016}, },
}
data["en baseball"] = {
qualificatif = "en baseball",
cat = "sport",
tri = "baseball",
an = { nion = 1868, tos = {2006, 2014}, },
}
data["en basket-ball"] = {
qualificatif = "en basket-ball",
cat = "sport",
tri = "basket-ball",
an = { nion = 1928, tos = {1929, 2017}, solet = {1891, 1892, 1893}, },
}
data["en boxe anglaise"] = {
qualificatif = "en boxe anglaise",
cat = "sport",
tri = "boxe anglaise",
an = { nion = 2006, tos = {2009, 2017}, },
}
data["en canoë-kayak"] = data["sport"]
data["en cricket"] = data["sport"]
data["en cyclisme"] = {
qualificatif = "en cyclisme",
cat = "sport",
tri = "cyclisme",
an = { nion = 1879, tos = {1880, 2017}, },
}
data["en escrime"] = data["sport"]
data["en football"] = {
qualificatif = "en football",
cat = "sport",
tri = "football",
an = { nion = 1870, tos = {1871, 2018}, },
}
data["en football américain"] = {
qualificatif = "en football américain",
cat = "sport",
tri = "football americain",
an = { nion = 2005, tos = {2006, 2008}, },
}
data["en golf"] = data["sport"]
data["en gymnastique"] = {
qualificatif = "en gymnastique",
cat = "sport",
tri = "gymnastique",
an = { nion = 1979, tos = {1980, 2016}, },
}
data["en handball"] = {
qualificatif = "en handball",
cat = "sport",
tri = "handball",
an = { nion = 1990, tos = {1992, 2017}, },
}
data["en hockey sur glace"] = {
qualificatif = "en hockey sur glace",
cat = "sport",
tri = "hockey sur glace",
an = { nion = 1899, tos = {1900, 2017}, },
}
data["en judo"] = data["sport"]
data["en natation"] = {
qualificatif = "en natation",
cat = "sport",
tri = "natation",
an = { nion = 2007, tos = {2008, 2017}, },
}
data["en rink hockey"] = data["sport"]
data["en rugby à XIII"] = {
qualificatif = "en rugby à XIII",
cat = "sport",
tri = "rugby a XIII",
an = { nion = 2009, tos = {2010, 2017}, },
}
data["en rugby à XV"] = {
qualificatif = "en rugby à XV",
cat = "sport",
tri = "rugby a XV",
an = { nion = 1870, tos = {1871, 2018}, },
}
data["en ski"] = {
qualificatif = "en ski",
cat = "sport",
tri = "ski",
an = { nion = 2006, tos = {2007, 2009}, },
}
data["en snooker"] = data["sport"]
data["en sport automobile"] = {
qualificatif = "en sport automobile",
cat = "sport",
tri = "sport automobile",
an = { nion = 1886, tos = {1894, 2015}, },
}
data["en sports équestres"] = {
qualificatif = "en sports équestres",
cat = "sport",
tri = "sports equestres",
an = { nion = 1899, tos = {1971, 2017}, },
}
data["en tennis"] = {
qualificatif = "en tennis",
cat = "sport",
tri = "tennis",
an = { nion = 1983, tos = {1998, 2017}, },
}
data["en volley-ball"] = data["sport"]
-- ---------- --
-- Science --
-- ---------- --
data["en science"] = {
qualificatif = "en science",
cat = "science",
tri = "_science",
an = { nion = 1499, tos = {1500, 2017}, solet = {783; 850}, },
}
data["science"] = data["en science"]
data["en astronomie"] = {
qualificatif = "en astronomie",
cat = "science",
tri = "astronomie",
an = { nion = 1968, tos = {1994, 2021} },
}
data["en santé et médecine"] = {
qualificatif = "en santé et médecine",
cat = "science",
tri = "santé et médecine",
an = { nion = 999, tos = {1870, 2016} },
}
data["en santé"] = data["en santé et médecine"]
data["en médecine"] = data["en santé et médecine"]
data["en sociologie"] = {
qualificatif = "en sociologie",
cat = "science",
tri = "sociologie",
an = { nion = 1850, tos = {1986, 2007}, },
}
-- -------------- --
-- Thématiques --
-- -------------- --
data["thématique"] = { qualificatif = "" }
data["en aéronautique"] = {
qualificatif = "en aéronautique",
cat = "thématique",
tri = "aeronautique",
an = { nion = 1899, tos = {1900, 2017}, },
}
data["en architecture"] = {
qualificatif = "en architecture",
cat = "thématique",
tri = "architecture",
an = { nion = 1189, tos = {1397, 2017}, },
} -- les pages avant 1190 sont des redirections vers la page annuelle sans qualificatif
data["en arts plastiques"] = {
qualificatif = "en arts plastiques",
cat = "thématique",
tri = "arts plastiques",
an = { nion = 1400, tos = {1500, 2017}, },
}
data["en astronautique"] = {
qualificatif = "en astronautique",
cat = "thématique",
tri = "astronautique",
an = { nion = 1940, tos = {1956, 2019}, },
}
data["en automobile"] = {
qualificatif = "en automobile",
cat = "thématique",
tri = "automobile",
an = { nion = 2016, solet = {1941, 1948, 1998, 2005}, },
}
data["en bande dessinée"] = {
qualificatif = "en bande dessinée",
cat = "thématique",
tri = "bande dessinée",
an = { nion = 1890, tos = {1896, 2017}, },
}
data["en catch"] = {
qualificatif = "en catch",
cat = "thématique",
tri = "catch",
an = { nion = 2005, tos = {2006, 2017}, },
}
data["dans les chemins de fer"] = {
qualificatif = "dans les chemins de fer",
cat = "thématique",
tri = "chemins de fer",
jorn = true,
an = { nion = 1799, tos = {1800, 2017}, },
}
data["au cinéma"] = {
qualificatif = "au cinéma",
cat = "thématique",
tri = "cinema",
an = { nion = 1887, tos = {1888, 2018}, },
}
data["dans les croisades"] = {
qualificatif = "dans les croisades",
cat = "thématique",
tri = "croisades",
an = { nion = 1094, tos = {1095, 1302}, },
}
data["chez Disney"] = {
qualificatif = "chez Disney",
cat = "thématique",
tri = "Disney",
an = { nion = 1921, tos = {1922, 2017}, },
}
data["en droit"] = {
qualificatif = "en droit",
cat = "thématique",
tri = "droit",
an = { nion = 1680, tos = {1682, 2016}, },
}
data["aux échecs"] = {
qualificatif = "aux échecs",
cat = "thématique",
tri = "echecs",
an = { nion = 1500, tos = {1782, 2016}, },
}
data["en économie"] = {
qualificatif = "en économie",
cat = "thématique",
tri = "economie",
an = { nion = 1899, tos = {2004, 2015} } -- les autres liens avant 2005 sont des redirections.
}
data["en fantasy"] = {
qualificatif = "en fantasy",
cat = "thématique",
tri = "fantasy",
an = { nion = 1920, tos = {1959, 2016}, },
}
data["en informatique"] = {
qualificatif = "en informatique",
cat = "thématique",
tri = "informatique",
an = { nion = 1940, tos = {1962, 2017}, },
}
data["en jeu"] = {
qualificatif = "en jeu",
cat = "thématique",
tri = "jeu",
an = { nion = 1957, tos = {1974, 2017}, },
}
data["en jeu vidéo"] = {
qualificatif = "en jeu vidéo",
cat = "thématique",
tri = "jeu vidéo",
an = { nion = 1957, tos = {1958, 2018} },
}
data["en littérature"] = {
qualificatif = "en littérature",
cat = "thématique",
tri = "litterature",
an = {nion = 1371, tos = {1468, 2019}, },
}
data["en musique"] = {
qualificatif = "en musique",
cat = "thématique",
tri = "musique",
an = { nion = 1796, tos = {1797, 2017}, },
}
data["en musique classique"] = {
qualificatif = "en musique classique",
cat = "thématique",
tri = "musique classique",
an = { nion = 1399, tos = {1400, 2017}, solet = {1375}, },
}
data["en numismatique"] = {
qualificatif = "en numismatique",
cat = "thématique",
tri = "numismatique",
an = { nion = 1930, tos = {1990, 2021}, },
}
data["dans les parcs de loisirs"] = {
qualificatif = "dans les parcs de loisirs",
cat = "thématique",
tri = "parcs de loisirs",
an = { nion = 1869, tos = {1870, 2018}, },
}
data["en parfumerie"] = {
qualificatif = "en parfumerie",
cat = "thématique",
tri = "parfumerie",
an = { nion = 2100, solet = {1995, }, },
}
data["en photographie"] = {
qualificatif = "en photographie",
cat = "thématique",
tri = "photographie",
an = { nion = 1815, tos = {1939, 2017}, solet = {1765, 1787, 1800, 1806}, },
}
data["en politique"] = {
qualificatif = "en politique",
cat = "thématique",
tri = "politique",
an = { nion = 2100, },
}
data["en science-fiction"] = {
qualificatif = "en science-fiction",
cat = "thématique",
tri = "science-fiction",
an = { nion = 1880, tos = {1898, 2018}, },
}
data["à la télévision"] = {
qualificatif = "à la télévision",
cat = "thématique",
tri = "television",
an = { nion = 1880, tos = {1884, 2017}, },
}
data["au théâtre"] = {
qualificatif = "au théâtre",
cat = "thématique",
tri = "theâtre",
an = { nion = 1500, tos = {1596, 2017}, },
}
-- -------------- --
-- Géographie --
-- -------------- --
-- Afrique --
data["Afrique"] = {
qualificatif = "par pays en Afrique",
cat = "Afrique",
tri = "_Afrique",
an = { nion = 2003, tos = {2004, 2017}, },
}
data["par pays en Afrique"] = data["Afrique"]
data["en Afrique"] = {
qualificatif = "en Afrique",
cat = "Afrique",
tri = "Afrique",
mes = { nion = 2004, tos = {2005, 2007}, },
an = { nion = 2003, tos = {2004, 2017}, },
}
data["en Afrique du Sud"] = {
qualificatif = "en Afrique du Sud",
cat = "Afrique",
tri = "Afrique du Sud",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["en Algérie"] = {
qualificatif = "en Algérie",
cat = "Afrique",
tri = "Algérie",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["en Angola"] = data["Afrique"]
data["au Bénin"] = data["Afrique"]
data["au Botswana"] = data["Afrique"]
data["au Burkina Faso"] = data["Afrique"]
data["au Burundi"] = {
qualificatif = "au Burundi",
cat = "Afrique",
tri = "Burundi",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Cameroun"] = {
qualificatif = "au Cameroun",
cat = "Afrique",
tri = "Cameroun",
an = { nion = 2008, tos = {2009, 2013}, },
}
data["au Cap-Vert"] = data["Afrique"]
data["en République centrafricaine"] = {
qualificatif = "en République centrafricaine",
cat = "Afrique",
tri = "République centrafricaine",
an = { nion = 2016, solet = {2010}, },
}
data["aux Comores"] = {
qualificatif = "aux Comores",
cat = "Afrique",
tri = "Comores",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Congo Brazzaville"] = data["Afrique"]
data["au Congo"] = data["Afrique"]
data["en République démocratique du Congo"] = {
qualificatif = "en République démocratique du Congo",
cat = "Afrique",
tri = "Congo, République démocratique",
an = { nion = 1996, tos = {2009, 2011}, },
}
data["au Congo démocratique"] = data["en République démocratique du Congo"]
data["en Côte d'Ivoire"] = {
qualificatif = "en Côte d'Ivoire",
cat = "Afrique",
tri = "Cote d'Ivoire",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["à Djibouti"] = data["Afrique"]
data["en Égypte"] = {
qualificatif = "en Égypte",
cat = "Afrique",
tri = "Egypte",
an = { nion = 2007, tos = {2008, 2011}, },
}
data["en Érythrée"] = data["Afrique"]
data["en Éthiopie"] = data["Afrique"]
data["au Gabon"] = {
qualificatif = "au Gabon",
cat = "Afrique",
tri = "Gabon",
an = { nion = 2016, solet = {2009}, },
}
data["au Ghana"] = data["Afrique"]
data["en Guinée"] = {
qualificatif = "en Guinée",
cat = "Afrique",
tri = "Guinee",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["en Guinée-Bissau"] = {
qualificatif = "en Guinée-Bissau",
cat = "Afrique",
tri = "Guinee-Bissau",
an = { nion = 2016, solet = {2009}, },
}
data["en Guinée équatoriale"] = data["Afrique"]
data["au Kenya"] = {
qualificatif = "au Kenya",
cat = "Afrique",
tri = "Kenya",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Lesotho"] = data["Afrique"]
data["au Liberia"] = data["Afrique"]
data["en Libye"] = {
qualificatif = "en Libye",
cat = "Afrique",
tri = "Libye",
an = { nion = 2016, solet = {2009, 2011}, },
}
data["à Madagascar"] = {
qualificatif = "à Madagascar",
cat = "Afrique",
tri = "Madagascar",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Malawi"] = data["Afrique"]
data["au Mali"] = {
qualificatif = "au Mali",
cat = "Afrique",
tri = "Mali",
an = { nion = 2004, tos = {2005, 2013}, },
}
data["au Maroc"] = {
qualificatif = "au Maroc",
cat = "Afrique",
tri = "Maroc",
an = { nion = 1900, tos = {2001, 2012}, },
}
data["à l'Île Maurice"] = data["Afrique"]
data["en Mauritanie"] = {
qualificatif = "en Mauritanie",
cat = "Afrique",
tri = "Mauritanie",
an = { nion = 2007, tos = {2008, 2010}, },
}
data["à Mayotte"] = data["Afrique"]
data["au Mozambique"] = data["Afrique"]
data["en Namibie"] = data["Afrique"]
data["au Niger"] = {
qualificatif = "au Niger",
cat = "Afrique",
tri = "Niger",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["au Nigeria"] = {
qualificatif = "au Nigeria",
cat = "Afrique",
tri = "Nigeria",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["en Ouganda"] = {
qualificatif = "en Ouganda",
cat = "Afrique",
tri = "Ouganda",
an = { nion = 2016, solet = {2010}, },
}
data["au Rwanda"] = {
qualificatif = "au Rwanda",
cat = "Afrique",
tri = "Rwanda",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Sahara occidental"] = data["Afrique"]
data["au Sénégal"] = {
qualificatif = "au Sénégal",
cat = "Afrique",
tri = "Senegal",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["aux Seychelles"] = data["Afrique"]
data["au Sierra Leone"] = data["Afrique"]
data["en Somalie"] = {
qualificatif = "en Somalie",
cat = "Afrique",
tri = "Somalie",
an = { nion = 2007, tos = {2008, 2011}, },
}
data["au Soudan"] = {
qualificatif = "au Soudan",
cat = "Afrique",
tri = "Soudan",
an = { nion = 2008, tos = {2009, 2011}, },
}
data["au Soudan du Sud"] = data["Afrique"]
data["en Tanzanie"] = data["Afrique"]
data["au Tchad"] = {
qualificatif = "au Tchad",
cat = "Afrique",
tri = "Tchad",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["au Togo"] = data["Afrique"]
data["en Tunisie"] = {
qualificatif = "en Tunisie",
cat = "Afrique",
tri = "Tunisie",
an = { nion = 2005, tos = {2006, 2011}, },
}
data["en Zambie"] = data["Afrique"]
data["au Zimbabwe"] = {
qualificatif = "au Zimbabwe",
cat = "Afrique",
tri = "Zimbabwe",
an = { nion = 2007, tos = {2008, 2010}, },
}
-- Amérique --
data["Amérique"] = {
qualificatif = "par pays en Amérique",
cat = "Amérique",
tri = "_Amerique",
an = { nion = 1999, tos = {2000, 2017}, },
}
data["par pays en Amérique"] = data["Amérique"]
data["en Amérique"] = data["Amérique"]
data["en Argentine"] = {
qualificatif = "en Argentine",
cat = "Amérique",
tri = "Argentine",
an = { nion = 2016, solet = {2009}, },
}
data["à la Barbade"] = data["Amérique"]
data["au Belize"] = data["Amérique"]
data["en Bolivie"] = data["Amérique"]
data["au Brésil"] = {
qualificatif = "au Brésil",
cat = "Amérique",
tri = "Bresil",
an = { nion = 1920, tos = {2011, 2014}, },
}
data["au Canada"] = {
qualificatif = "au Canada",
cat = "Amérique",
tri = "Canada",
mes = { nion = 2100, solet = { "Novembre 2005", "Décembre 2005", "Janvier 2006", "Février 2006"}, },
an = { nion = 1699, tos = {1700, 2017}, solet = {1534}, },
}
data["au Nouveau-Brunswick"] = {
qualificatif = "au Nouveau-Brunswick",
cat = "Amérique",
tri = "Canada - Nouveau-Brunswick",
an = { nion = 1700, tos = {1784, 2017}, },
}
data["au Québec"] = {
qualificatif = "au Québec",
cat = "Amérique",
tri = "Canada - Quebec",
an = { nion = 1762, tos = {1866, 2019}, solet = {1710}, },
}
data["au Chili"] = data["Amérique"]
data["en Colombie"] = {
qualificatif = "en Colombie",
cat = "Amérique",
tri = "Colombie",
an = { nion = 2007, tos = {2008, 2010}, },
}
data["au Costa Rica"] = data["Amérique"]
data["à Cuba"] = {
qualificatif = "à Cuba",
cat = "Amérique",
tri = "Cuba",
an = { nion = 2016, solet = {2009}, },
}
data["en Équateur"] = data["Amérique"]
data["aux États-Unis"] = {
qualificatif = "aux États-Unis",
cat = "Amérique",
tri = "Etats-Unis",
mes = { nion = 2100, solet = {"Janvier 2009", "Février 2009", "Mars 2009", "Avril 2009", "Mai 2009", "Juin 2009" }, }, -- les autres mois sont vides ou presque
an = { nion = 1775, tos = {1776, 2017}, },
}
data["au Groenland"] = data["Amérique"]
data["au Guatemala"] = data["Amérique"]
data["en Guyane"] = data["Amérique"]
data["à Haïti"] = data["Amérique"]
data["au Honduras"] = {
qualificatif = "au Honduras",
cat = "Amérique",
tri = "Honduras",
an = { nion = 2016, solet = {2009}, },
}
data["en Jamaïque"] = data["Amérique"]
data["au Mexique"] = {
qualificatif = "au Mexique",
cat = "Amérique",
tri = "Mexique",
an = { nion = 2019, solet = {2009}, },
}
data["au Nicaragua"] = data["Amérique"]
data["au Panama"] = data["Amérique"]
data["au Paraguay"] = data["Amérique"]
data["au Pérou"] = data["Amérique"]
data["à Porto Rico"] = data["Amérique"]
data["à Saint-Pierre-et-Miquelon"] = data["Amérique"]
data["au Salvador"] = data["Amérique"]
data["en Uruguay"] = data["Amérique"]
data["au Venezuela"] = {
qualificatif = "au Venezuela",
cat = "Amérique",
tri = "Venezuela",
an = { nion = 2016, solet = {2009}, },
}
-- Asie --
data["Asie"] = {
qualificatif = "par pays en Asie",
cat = "Asie",
tri = "_Asie",
an = { nion = 2003, tos = {2005, 2017}, },
}
data["par pays en Asie"] = data["Asie"]
data["en Asie"] = {
qualificatif = "en Asie",
cat = "Asie",
tri = "_Asie ",
an = { nion = 2003, tos = {2005, 2017}, },
}
data["en Afghanistan"] = {
qualificatif = "en Afghanistan",
cat = "Asie",
tri = "Afghanistan",
an = { nion = 2007, tos = {2008, 2010}, },
}
data["au Bangladesh"] = data["Asie"]
data["en Birmanie"] = data["Asie"]
data["au Bhoutan"] = data["Asie"]
data["au Cambodge"] = data["Asie"]
data["en Chine"] = {
qualificatif = "en Chine",
cat = "Asie",
tri = "Chine",
an = { nion = 2000, tos = {2005, 2010}, },
}
data["en Corée du Nord"] = data["Asie"]
data["en Corée du Sud"] = data["Asie"]
data["en Inde"] = {
qualificatif = "en Inde",
cat = "Asie",
tri = "Inde",
an = { nion = 2007, tos = {2008, 2009}, solet={2001} },
}
data["en Indonésie"] = {
qualificatif = "en Indonésie",
cat = "Asie",
tri = "Indonesie",
an = { nion = 2018, tos = {2014, 2014}, },
}
data["en Iran"] = {
qualificatif = "en Iran",
cat = "Asie",
tri = "Iran",
an = { nion = 2005, tos = {2006, 2010}, },
}
data["au Japon"] = {
qualificatif = "au Japon",
cat = "Asie",
tri = "Japon",
an = { nion = 2018, tos = {2014, 2014} },
}
data["au Kazakhstan"] = data["Asie"]
data["en Malaisie"] = data["Asie"]
data["au Népal"] = data["Asie"]
data["en Ouzbékistan"] = data["Asie"]
data["au Pakistan"] = {
qualificatif = "au Pakistan",
cat = "Asie",
tri = "Pakistan",
an = { nion = 2007, tos = {2008, 2009}, },
}
data["aux Philippines"] ={
qualificatif = "aux Philippines",
cat = "Asie",
tri = "Philippines",
an = { nion = 2016, solet = {2007}, },
}
data["à Singapour"] = data["Asie"]
data["au Sri Lanka"] = {
qualificatif = "au Sri Lanka",
cat = "Asie",
tri = "Sri Lanka",
an = { nion = 2016, solet = {2009}, },
}
data["à Taïwan"] = data["Asie"]
data["en Thaïlande"] = {
qualificatif = "en Thaïlande",
cat = "Asie",
tri = "Thaïlande",
an = { nion = 2016, solet = {2009}, },
}
data["au Tibet"] = {
qualificatif = "au Tibet",
cat = "Asie",
tri = "Tibet",
an = { nion = 2016, solet = {2009}, },
}
data["au Timor oriental"] = data["Asie"]
data["au Turkménistan"] = data["Asie"]
data["au Viêt Nam"] = data["Asie"]
-- Europe --
data["Europe"] = {
qualificatif = "par pays en Europe",
cat = "Europe",
tri = "_Europe",
an = { nion = 1989, tos = {1999, 2017}, solet = {1976}, },
}
data["par pays en Europe"] = data["Europe"]
data["en Europe"] = {
qualificatif = "en Europe",
cat = "Europe",
tri = "_Europe ",
an = { nion = 1979, tos = {2004, 2017}, },
}
-- Un certain nombre de lien sur l'année 2009 sont des redirections vers "par pays en Europe"
data["en Albanie"] = {
qualificatif = "en Albanie",
cat = "Europe",
tri = "Albanie",
an = { nion = 2016, solet = {2014}, },
}
data["en Allemagne"] = {
qualificatif = "en Allemagne",
cat = "Europe",
tri = "Allemagne",
an = { nion = 1980, tos = {1991, 2011}, },
}
data["en Andorre"] = data["Europe"]
-- data["en Angleterre"] -- voir "au Royaume-Uni"
data["en Arménie"] = data["Europe"]
data["en Autriche"] = {
qualificatif = "en Autriche",
cat = "Europe",
tri = "Autriche",
an = { nion = 2016, solet = {2009}, },
}
data["en Belgique"] = {
qualificatif = "en Belgique",
cat = "Europe",
tri = "Belgique",
an = { nion = 1811, tos = {1825, 2017}, },
}
data["en Biélorussie"] = data["Europe"]
data["en Bosnie-Herzégovine"] = data["Europe"] --2009 est une redirection
data["en Bosnie"] = data["Europe"]
data["en Bulgarie"] = data["Europe"]
data["dans le Caucase"] = {
qualificatif = "dans le Caucase",
cat = "Europe",
tri = "Caucase",
an = { nion = 2008, tos = {2009, 2010}, },
}
data["à Chypre"] = data["Europe"]
data["en Croatie"] = data["Europe"]
data["au Danemark"] = {
qualificatif = "au Danemark",
cat = "Europe",
tri = "Danemark",
an = { nion = 1990, tos = {2008, 2016}, },
}
-- data["en Écosse"] -- voir "au Royaume-Uni"
data["en Espagne"] = {
qualificatif = "en Espagne",
cat = "Europe",
tri = "Espagne",
an = { nion = 2007, tos = {2008, 2009}, },
}
data["en Estonie"] = data["Europe"]
data["en Finlande"] = data["Europe"]
data["en France"] = {
qualificatif = "en France",
cat = "Europe",
tri = "France",
mes = { nion = 2004, tos = {2008, 2009}, solet = { "Octobre 2004", "Mai 1968"}, },
an = { nion = 1540, tos = {1541, 2017}, },
}
data["en Géorgie"] = {
qualificatif = "en Géorgie",
cat = "Europe",
tri = "Georgie",
an = { nion = 2016, solet = {1991, 1992, 2009}, },
}
data["en Grèce"] = {
qualificatif = "en Grèce",
cat = "Europe",
tri = "Grece",
an = { nion = 2016, solet = {2009}, },
}
data["en Hongrie"] = data["Europe"]
data["en Irlande"] = {
qualificatif = "en Irlande",
cat = "Europe",
tri = "Irlande",
an = { nion = 2015, solet={1977, 1983, 1984, 1985, 1994, 2009}, },
}
data["en Islande"] = {
qualificatif = "en Islande",
cat = "Europe",
tri = "Islande",
an = { nion = 2016, solet = {2009, 2011, 2013}, },
}
data["en Italie"] = {
qualificatif = "en Italie",
cat = "Europe",
tri = "Italie",
an = { nion = 1800, tos = {1830, 2017}, },
}
data["au Kosovo"] = data["Europe"]
data["au Liechtenstein"] = data["Europe"]
data["en Lettonie"] = data["Europe"]
data["en Lituanie"] = data["Europe"]
data["au Luxembourg"] = data["Europe"]
data["en Macédoine"] = data["Europe"]
data["à Malte"] = data["Europe"]
data["en Moldavie"] = {
qualificatif = "en Moldavie",
cat = "Europe",
tri = "Moldavie",
an = { nion = 2016, solet = {2009}, },
}
data["au Monténégro"] = data["Europe"]
data["en Norvège"] = data["Europe"]
data["aux Pays-Bas"] = {
qualificatif = "aux Pays-Bas",
cat = "Europe",
tri = "Pays-Bas",
an = { nion = 2016, solet = {2009}, },
}
data["en Pologne"] = {
qualificatif = "en Pologne",
cat = "Europe",
tri = "Pologne",
an = { nion = 2016, solet = {2009}, },
}
data["au Portugal"] = data["Europe"]
data["en Roumanie"] = {
qualificatif = "en Roumanie",
cat = "Europe",
tri = "Roumanie",
an = { nion = 2016, solet = {2009, 2014}, },
}
data["au Royaume-Uni"] = {
qualificatif = "au Royaume-Uni",
cat = "Europe",
tri = "Royaume-Uni",
an = { nion = 2007, tos = {2008, 2009}, },
}
data["en Angleterre"] = data["au Royaume-Uni"] -- doit être placé après le création de "au Royaume-Uni"
data["en Écosse"] = data["au Royaume-Uni"]
data["en Russie"] = {
qualificatif = "en Russie",
cat = "Europe",
tri = "Russie",
an = { nion = 2007, tos = {2008, 2009}, },
}
data["en Serbie"] = {
qualificatif = "en Serbie",
cat = "Europe",
tri = "Serbie",
an = { nion = 2007, tos = {2008, 2009}, },
}
data["en Slovaquie"] = data["Europe"]
data["en Slovénie"] = data["Europe"]
data["en Suède"] = {
qualificatif = "en Suède",
cat = "Europe",
tri = "Suede",
an = { nion = 2016, solet = {2009}, },
}
data["en Suisse"] = {
qualificatif = "en Suisse",
cat = "Europe",
tri = "Suisse",
an = { nion = 1850, tos = {1851, 2017}, },
}
data["en République tchèque"] = {
qualificatif = "en République tchèque",
cat = "Europe",
tri = "Tchequie",
an = { nion = 2016, solet = {2009, 2014}, },
}
data["en Turquie"] = {
qualificatif = "en Turquie",
cat = "Europe",
tri = "Turquie",
an = { nion = 2016, solet = {2009}, },
}
data["en Ukraine"] = {
qualificatif = "en Ukraine",
cat = "Europe",
tri = "Ukraine",
an = { nion = 2016, solet = {2009}, },
}
data["dans l'Union européenne"] = {
qualificatif = "dans l'Union européenne",
cat = "Europe",
tri = "Union européenne",
an = { nion = 2005, tos = {2006, 2015}, },
}
data["au Vatican"] = {
qualificatif = "au Vatican",
cat = "Europe",
tri = "Vatican",
an = { nion = 2005, tos = {2011, 2017}, solet = { 1993 }, },
}
-- Océanie --
data["Océanie"] = {
qualificatif = "par pays en Océanie",
cat = "Océanie",
tri = "_Oceanie",
an = { nion = 2005, tos = {2006, 2017}, },
}
data["par pays en Océanie"] = data["Océanie"]
data["en Océanie"] = {
qualificatif = "en Océanie",
cat = "Océanie",
tri = "_Oceanie ",
an = { nion = 2005, tos = {2006, 2017}, },
}
data["en Australie"] = {
qualificatif = "en Australie",
cat = "Océanie",
tri = "Australie",
an = { nion = 2007, tos = {2013, 2017}, },
}
data["en Micronésie"] = data["Océanie"]
data["en Nouvelle-Calédonie"] = {
qualificatif = "en Nouvelle-Calédonie",
cat = "Océanie",
tri = "Nouvelle-Caledonie",
an = { nion = 1959, tos = {1960, 2009}, },
}
data["en Nouvelle-Zélande"] = {
qualificatif = "en Nouvelle-Zélande",
cat = "Océanie",
tri = "Nouvelle-Zelande",
an = { nion = 2016, solet = {2011} },
}
data["en Papouasie-Nouvelle-Guinée"] = {
qualificatif = "en Papouasie-Nouvelle-Guinée",
cat = "Océanie",
tri = "Papouasie-Nouvelle-Guinee",
an = { nion = 2016, solet = {2012} },
}
-- -------------------------- --
-- alias pour les chartes --
-- -------------------------- --
data["abda"] = data["en bande dessinée"]
data["bd"] = data["en bande dessinée"]
data["chef d'état"] = data[""]
data["chef de gouvernement"] = data[""]
data["classique"] = data["en musique classique"]
data["conseiller fédéral suisse"] = data["en Suisse"]
data["danse"] = data[""]
data["défaut"] = data[""]
data["defaut"] = data[""]
data["écrivain"] = data["en littérature"]
data["football"] = data["en football"]
data["gouverneur"] = data[""]
data["instrumentiste"] = data["en musique"]
data["jazz"] = data["en musique"]
data["littérature"] = data["en littérature"]
data["monarque"] = data[""]
data["monde"] = data["en musique"]
data["musical"] = data["en musique"]
data["pharaon"] = data["en Égypte"]
data["pluridisciplinaire"] = data[""]
data["politicien"] = data[""]
data["pornographie"] = data[""]
data["presse"] = data[""]
data["théâtre"] = data["au théâtre"]
return data
fdhsb4cb5ff4aug4fqrklqx49p9dvex
Vouiquipèdia:Émâge du jorn/13 de novembro 2021
4
18189
231444
207618
2026-06-01T22:17:55Z
ChrisPtDe
22
corrèccion
231444
wikitext
text/x-wiki
{{Émâge du jorn|Knight's tour anim 2.gif|Animacion que montre na ''solucion du [[problèmo du cavaliér]]'' dessus ‘n [[èchèquiér]].|l=408|h=408}}<noinclude>
[[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]]
</noinclude>
icge000qg34bkkg623do6sm1iziyuph
Utilisator:PK2/sandbox
2
23243
231439
230460
2026-06-01T13:13:34Z
PK2
7724
add sandbox pages for new Wikipedia editions
231439
wikitext
text/x-wiki
{| class="wikitable" style="font-size:85%"
|+ Pages I have in my sandbox
|-
|
|}
;<div class="center" style="width:auto; margin-left:auto; margin-right:auto; font-size:85%">My sandbox pages in different languages by language code</div>
{| class="wikitable" style="text-align: center; font-size:85%"
|+ A
|-
| [[:ab:User:PK2/sandbox|/sandbox]] in [[:en:Abkhaz language|Abkhaz]]<br />(code: <code>ab</code>)
| [[:ace:User:PK2/sandbox|/sandbox]] in [[:en:Acehnese language|Acehnese]]<br />(code: <code>ace</code>)
| [[:ady:User:PK2/sandbox|/sandbox]] in [[:en:Adyghe language|Adyghe]]<br />(code: <code>ady</code>)
| [[:af:User:PK2/sandbox|/sandbox]] in [[:en:Afrikaans|Afrikaans]]<br />(code: <code>af</code>)
| [[:als:User:PK2/sandbox|/sandbox]] in [[:en:Alemannic German|Alemannic German]]<br />(code: <code>als</code>)
| [[:alt:User:PK2/sandbox|/sandbox]] in [[:en:Southern Altai language|Southern Altai]]<br />(code: <code>alt</code>)
| [[:am:User:PK2/sandbox|/sandbox]] in [[:en:Amharic|Amharic]]<br />(code: <code>am</code>)
| [[:ami:User:PK2/sandbox|/sandbox]] in [[:en:Amis language|Amis]]<br />(code: <code>ami</code>)
| [[:an:User:PK2/sandbox|/sandbox]] in [[:en:Aragonese language|Aragonese]]<br />(code: <code>an</code>)
| [[:ang:User:PK2/sandbox|/sandbox]] in [[:en:Old English|Old English]]<br />(code: <code>ang</code>)
|-
| [[:ann:User:PK2/sandbox|/sandbox]] in [[:en:Obolo language|Obolo]]<br />(code: <code>ann</code>)
| [[:anp:User:PK2/sandbox|/sandbox]] in [[:en:Angika|Angika]]<br />(code: <code>anp</code>)
| [[:ar:User:PK2/ملعب|/sandbox]] in [[:en:Arabic|Arabic]]<br />(code: <code>ar</code>)
| [[:arc:User:PK2/sandbox|/sandbox]] in [[:en:Aramaic|Aramaic]] ([[:en:Syriac language|Syriac]])<br />(code: <code>arc</code>)
| [[:ary:User:PK2/sandbox|/sandbox]] in [[:en:Moroccan Arabic|Moroccan Arabic]]<br />(code: <code>ary</code>)
| [[:arz:User:PK2/sandbox|/sandbox]] in [[:en:Egyptian Arabic|Egyptian Arabic]]<br />(code: <code>arz</code>)
| [[:as:User:PK2/sandbox|/sandbox]] in [[:en:Assamese language|Assamese]]<br />(code: <code>as</code>)
| [[:ast:User:PK2/sandbox|/sandbox]] in [[:en:Asturleonese language|Asturleonese]] ([[:en:Asturian language|Asturian]])<br />(code: <code>ast</code>)
| [[:atj:User:PK2/Kokwetcitasinahikan|/sandbox]] in [[:en:Atikamekw language|Atikamekw]]<br />(code: <code>atj</code>)
| [[:av:User:PK2/sandbox|/sandbox]] in [[:en:Avar language|Avar]]<br />(code: <code>av</code>)
|-
| [[:avk:User:PK2/sandbox|/sandbox]] in [[:en:Kotava|Kotava]]<br />(code: <code>avk</code>)
| [[:awa:User:PK2/sandbox|/sandbox]] in [[:en:Awadhi language|Awadhi]]<br />(code: <code>awa</code>)
| [[:ay:User:PK2/sandbox|/sandbox]] in [[:en:Aymara language|Aymara]]<br />(code: <code>ay</code>)
| [[:az:User:PK2/Qaralama|/sandbox]] in [[:en:Azerbaijani language|Azerbaijani]]<br />(code: <code>az</code>)
| [[:azb:User:PK2/sandbox|/sandbox]] in [[:en:Azerbaijani language#South Azerbaijani|South Azerbaijani]]<br />(code: <code>azb</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ B
|-
| [[:ba:User:PK2/sandbox|/sandbox]] in [[:en:Bashkir language|Bashkir]]<br />(code: <code>ba</code>)
| [[:ban:User:PK2/sandbox|/sandbox]] in [[:en:Balinese language|Balinese]]<br />(code: <code>ban</code>)
| [[:bar:User:PK2/sandbox|/sandbox]] in [[:en:Bavarian language|Bavarian]]<br />(code: <code>bar</code>)
| [[:bat-smg:User:PK2/sandbox|/sandbox]] in [[:en:Samogitian language|Samogitian]]<br />(code: <code>bat-smg</code>)
| [[:bbc:User:PK2/sandbox|/sandbox]] in [[:en:Toba Batak language|Toba Batak]]<br />(code: <code>bbc</code>)
| [[:bcl:User:PK2/sandbox|/sandbox]] in [[:en:Central Bikol|Central Bikol]]<br />(code: <code>bcl</code>)
| [[:bdr:User:PK2/sandbox|/sandbox]] in [[:en:Sama–Bajaw languages|West Coast Bajau]]<br />(code: <code>bdr</code>)
| [[:be:User:PK2/sandbox|/sandbox]] in [[:en:Belarusian language|Belarusian]]<br />(code: <code>be</code>)
| [[:be-tarask:User:PK2/sandbox|/sandbox]] in [[:en:Belarusian language|Belarusian]] ([[:en:Taraškievica|Taraškievica]])<br />(code: <code>be-tarask</code>)
| [[:bew:User:PK2/sandbox|/sandbox]] in [[:en:Betawi language|Betawi]]<br />(code: <code>bew</code>)
|-
| [[:bg:User:PK2/sandbox|/sandbox]] in [[:en:Bulgarian language|Bulgarian]]<br />(code: <code>bg</code>)
| [[:bh:User:PK2/sandbox|/sandbox]] in [[:en:Bihari languages|Bihari]] ([[:en:Bhojpuri language|Bhojpuri]])<br />(code: <code>bh</code>)
| [[:bi:User:PK2/sandbox|/sandbox]] in [[:en:Bislama|Bislama]]<br />(code: <code>bi</code>)
| [[:bjn:User:PK2/sandbox|/sandbox]] in [[:en:Banjarese language|Banjarese]]<br />(code: <code>bjn</code>)
| [[:blk:User:PK2/sandbox|/sandbox]] in [[:en:Pa'O language|Pa'O]]<br />(code: <code>blk</code>)
| [[:bm:User:PK2/sandbox|/sandbox]] in [[:en:Bambara language|Bambara]]<br />(code: <code>bm</code>)
| [[:bn:User:PK2/খেলাঘর|/sandbox]] in [[:en:Bengali language|Bengali]]<br />(code: <code>bn</code>)
| [[:bo:User:PK2/sandbox|/sandbox]] in [[:en:Central Tibetan|Central Tibetan]] ([[:en:Lhasa Tibetan|Lhasa Tibetan]])<br />(code: <code>bo</code>)
| [[:bpy:User:PK2/sandbox|/sandbox]] in [[:en:Bishnupriya Manipuri|Bishnupriya Manipuri]]<br />(code: <code>bpy</code>)
| [[:br:User:PK2/sandbox|/sandbox]] in [[:en:Breton language|Breton]]<br />(code: <code>br</code>)
|-
| [[:bs:User:PK2/sandbox|/sandbox]] in [[:en:Bosnian language|Bosnian]]<br />(code: <code>bs</code>)
| [[:btm:User:PK2/sandbox|/sandbox]] in [[:en:Mandailing Batak language|Mandailing Batak]]<br />(code: <code>btm</code>)
| [[:bug:User:PK2/sandbox|/sandbox]] in [[:en:Buginese language|Buginese]]<br />(code: <code>bug</code>)
| [[:bxr:User:PK2/sandbox|/sandbox]] in [[:en:Buryat language|Buryat]] (Russia Buriat)<br />(code: <code>bxr</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ C
|-
| [[:ca:User:PK2/proves|/sandbox]] in [[:en:Catalan language|Catalan]]<br />(code: <code>ca</code>)
| [[:cbk-zam:User:PK2/sandbox|/sandbox]] in [[:en:Chavacano|Chavacano]] (Zamboanga)<br />(code: <code>cbk-zam</code>)
| [[:cdo:User:PK2/sandbox|/sandbox]] in [[:en:Eastern Min|Eastern Min]]<br />(code: <code>cdo</code>)
| [[:ce:User:PK2/sandbox|/sandbox]] in [[:en:Chechen language|Chechen]]<br />(code: <code>ce</code>)
| [[:ceb:User:PK2/sandbox|/sandbox]] in [[:en:Cebuano language|Cebuano]]<br />(code: <code>ceb</code>)
| [[:ch:User:PK2/sandbox|/sandbox]] in [[:en:Chamorro language|Chamorro]]<br />(code: <code>ch</code>)
| [[:chr:User:PK2/sandbox|/sandbox]] in [[:en:Cherokee language|Cherokee]]<br />(code: <code>chr</code>)
| [[:chy:User:PK2/sandbox|/sandbox]] in [[:en:Cheyenne language|Cheyenne]]<br />(code: <code>chy</code>)
|-
| [[:ckb:User:PK2/خۆڵەپەتانێ|/sandbox]] in [[:en:Kurdish language|Kurdish]] ([[:en:Sorani|Sorani]])<br />(code: <code>ckb</code>)
| [[:co:User:PK2/sandbox|/sandbox]] in [[:en:Corsican language|Corsican]]<br />(code: <code>co</code>)
| [[:crh:User:PK2/sandbox|/sandbox]] in [[:en:Crimean Tatar language|Crimean Tatar]]<br />(code: <code>crh</code>)
| [[:cs:User:PK2/Pískoviště|/sandbox]] in [[:en:Czech language|Czech]]<br />(code: <code>cs</code>)
| [[:csb:User:PK2/sandbox|/sandbox]] in [[:en:Kashubian language|Kashubian]]<br />(code: <code>csb</code>)
| [[:cu:User:PK2/sandbox|/sandbox]] in [[:en:Old Church Slavonic|Old Church Slavonic]]<br />(code: <code>cu</code>)
| [[:cv:User:PK2/sandbox|/sandbox]] in [[:en:Chuvash language|Chuvash]]<br />(code: <code>cv</code>)
| [[:cy:User:PK2/Pwll Tywod|/sandbox]] in [[:en:Welsh language|Welsh]]<br />(code: <code>cy</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ D
|-
| [[:da:User:PK2/sandkasse|/sandbox]] in [[:en:Danish language|Danish]]<br />(code: <code>da</code>)
| [[:dag:User:PK2/sandbox|/sandbox]] in [[:en:Dagbani language|Dagbani]]<br />(code: <code>dag</code>)
| [[:de:User:PK2/sandbox|/sandbox]] in [[:en:German language|German]]<br />(code: <code>de</code>)
| [[:dga:User:PK2/sandbox|/sandbox]] in [[:en:Dagaare language|Dagaare]]<br />(code: <code>dga</code>)
| [[:din:User:PK2/sandbox|/sandbox]] in [[:en:Dinka language|Dinka]]<br />(code: <code>din</code>)
| [[:diq:User:PK2/sandbox|/sandbox]] in [[:en:Zaza language|Zaza]]<br />(code: <code>diq</code>)
| [[:dsb:User:PK2/sandbox|/sandbox]] in [[:en:Lower Sorbian language|Lower Sorbian]]<br />(code: <code>dsb</code>)
| [[:dtp:User:PK2/sandbox|/sandbox]] in [[:en:Dusun language|Dusun]]<br />(code: <code>dtp</code>)
| [[:dty:User:PK2/प्रयोगस्थल|/sandbox]] in [[:en:Doteli|Doteli]]<br />(code: <code>dty</code>)
| [[:dv:User:PK2/sandbox|/sandbox]] in [[:en:Maldivian language|Maldivian]]<br />(code: <code>dv</code>)
| [[:dz:User:PK2/sandbox|/sandbox]] in [[:en:Dzongkha|Dzongkha]]<br />(code: <code>dz</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ E
|-
| [[:ee:User:PK2/sandbox|/sandbox]] in [[:en:Ewe language|Ewe]]<br />(code: <code>ee</code>)
| [[:el:User:PK2/πρόχειρο|/sandbox]] in [[:en:Greek language|Greek]]<br />(code: <code>el</code>)
| [[:eml:User:PK2/sandbox|/sandbox]] in [[:en:Emilian–Romagnol|Emilian–Romagnol]]<br />(code: <code>eml</code>)
| [[:en:User:PK2/sandbox|/sandbox]] in [[:en:English language|English]]<br />(code: <code>en</code>)
| [[:eo:User:PK2/provejo|/sandbox]] in [[:en:Esperanto|Esperanto]]<br />(code: <code>eo</code>)
| [[:es:User:PK2/Taller|/sandbox]] in [[:en:Spanish language|Spanish]]<br />(code: <code>es</code>)
| [[:et:User:PK2/sandbox|/sandbox]] in [[:en:Estonian language|Estonian]]<br />(code: <code>et</code>)
| [[:eu:User:PK2/Proba orria|/sandbox]] in [[:en:Basque language|Basque]]<br />(code: <code>eu</code>)
| [[:ext:User:PK2/obraol|/sandbox]] in [[:en:Extremaduran language|Extremaduran]]<br />(code: <code>ext</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ F
|-
| [[:fa:User:PK2/صفحه تمرین|/sandbox]] in [[:en:Persian language|Persian]]<br />(code: <code>fa</code>)
| [[:fat:User:PK2/sandbox|/sandbox]] in [[:en:Akan language|Akan]] ([[:en:Fante dialect|Fante]])<br />(code: <code>fat</code>)
| [[:ff:User:PK2/sandbox|/sandbox]] in [[:en:Fula language|Fula]]<br />(code: <code>ff</code>)
| [[:fi:User:PK2/sandbox|/sandbox]] in [[:en:Finnish language|Finnish]]<br />(code: <code>fi</code>)
| [[:fiu-vro:User:PK2/sandbox|/sandbox]] in [[:en:Võro language|Võro]]<br />(code: <code>fiu-vro</code>)
| [[:fj:User:PK2/sandbox|/sandbox]] in [[:en:Fijian language|Fijian]]<br />(code: <code>fj</code>)
| [[:fo:User:PK2/sandbox|/sandbox]] in [[:en:Faroese language|Faroese]]<br />(code: <code>fo</code>)
| [[:fon:User:PK2/sandbox|/sandbox]] in [[:en:Fon language|Fon]]<br />(code: <code>fon</code>)
| [[:fr:User:PK2/Brouillon|/sandbox]] in [[:en:French language|French]]<br />(code: <code>fr</code>)
| [[:frp:User:PK2/sandbox|/sandbox]] in [[:en:Franco-Provençal|Franco-Provençal]]<br />(code: <code>frp</code>)
| [[:frr:User:PK2/sandbox|/sandbox]] in [[:en:North Frisian language|North Frisian]]<br />(code: <code>frr</code>)
| [[:fur:User:PK2/sandbox|/sandbox]] in [[:en:Friulian language|Friulian]]<br />(code: <code>fur</code>)
| [[:fy:User:PK2/sandbox|/sandbox]] in [[:en:West Frisian language|West Frisian]]<br />(code: <code>fy</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ G
|-
| [[:ga:User:PK2/Clár Dubh|/sandbox]] in [[:en:Irish language|Irish]]<br />(code: <code>ga</code>)
| [[:gag:User:PK2/sandbox|/sandbox]] in [[:en:Gagauz language|Gagauz]]<br />(code: <code>gag</code>)
| [[:gan:User:PK2/sandbox|/sandbox]] in [[:en:Gan Chinese|Gan Chinese]]<br />(code: <code>gan</code>)
| [[:gcr:User:PK2/sandbox|/sandbox]] in [[:en:French Guianese Creole|French Guianese Creole]]<br />(code: <code>gcr</code>)
| [[:gd:User:PK2/sandbox|/sandbox]] in [[:en:Scottish Gaelic|Scottish Gaelic]]<br />(code: <code>gd</code>)
| [[:gl:User:PK2/sandbox|/sandbox]] in [[:en:Galician language|Galician]]<br />(code: <code>gl</code>)
| [[:glk:User:PK2/sandbox|/sandbox]] in [[:en:Gilaki language|Gilaki]]<br />(code: <code>glk</code>)
| [[:gn:User:PK2/sandbox|/sandbox]] in [[:en:Guarani language|Guarani]]<br />(code: <code>gn</code>)
| [[:gom:User:PK2/proiogpan|/sandbox]] in [[:en:Konkani language|Konkani]] (Goan Konkani)<br />(code: <code>gom</code>)
|-
| [[:gor:User:PK2/sandbox|/sandbox]] in [[:en:Gorontalo language|Gorontalo]]<br />(code: <code>gor</code>)
| [[:got:User:PK2/sandbox|/sandbox]] in [[:en:Gothic language|Gothic]]<br />(code: <code>got</code>)
| [[:gpe:User:PK2/sandbox|/sandbox]] in [[:en:Ghanaian Pidgin English|Ghanaian Pidgin English]]<br />(code: <code>gpe</code>)
| [[:gu:User:PK2/sandbox|/sandbox]] in [[:en:Gujarati language|Gujarati]]<br />(code: <code>gu</code>)
| [[:guc:User:PK2/sandbox|/sandbox]] in [[:en:Wayuu language|Wayuu]]<br />(code: <code>guc</code>)
| [[:gur:User:PK2/sandbox|/sandbox]] in [[:en:Farefare language|Farefare]]<br />(code: <code>gur</code>)
| [[:guw:User:PK2/sandbox|/sandbox]] in [[:en:Gun language|Gun]]<br />(code: <code>guw</code>)
| [[:gv:User:PK2/sandbox|/sandbox]] in [[:en:Manx language|Manx]]<br />(code: <code>gv</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ H
|-
| [[:ha:User:PK2/sandbox|/sandbox]] in [[:en:Hausa language|Hausa]]<br />(code: <code>ha</code>)
| [[:hak:User:PK2/sandbox|/sandbox]] in [[:en:Hakka Chinese|Hakka Chinese]]<br />(code: <code>hak</code>)
| [[:haw:User:PK2/sandbox|/sandbox]] in [[:en:Hawaiian language|Hawaiian]]<br />(code: <code>haw</code>)
| [[:he:User:PK2/טיוטה|/sandbox]] in [[:en:Hebrew language|Hebrew]]<br />(code: <code>he</code>)
| [[:hi:User:PK2/प्रयोगपृष्ठ|/sandbox]] in [[:en:Hindi|Hindi]]<br />(code: <code>hi</code>)
| [[:hif:User:PK2/sandbox|/sandbox]] in [[:en:Fiji Hindi|Fiji Hindi]]<br />(code: <code>hif</code>)
| [[:hr:User:PK2/sandbox|/sandbox]] in [[:en:Croatian language|Croatian]]<br />(code: <code>hr</code>)
| [[:hsb:User:PK2/sandbox|/sandbox]] in [[:en:Upper Sorbian language|Upper Sorbian]]<br />(code: <code>hsb</code>)
| [[:ht:User:PK2/sandbox|/sandbox]] in [[:en:Haitian Creole|Haitian Creole]]<br />(code: <code>ht</code>)
| [[:hu:User:PK2/próbalap|/sandbox]] in [[:en:Hungarian language|Hungarian]]<br />(code: <code>hu</code>)
| [[:hy:User:PK2/Ավազարկղ|/sandbox]] in [[:en:Armenian language|Armenian]] ([[:en:Eastern Armenian|Eastern Armenian]])<br />(code: <code>hy</code>)
| [[:hyw:User:PK2/Սեւագրութիւն|/sandbox]] in [[:en:Western Armenian|Western Armenian]]<br />(code: <code>hyw</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ I
|-
| [[:ia:User:PK2/sandbox|/sandbox]] in [[:en:Interlingua|Interlingua]]<br />(code: <code>ia</code>)
| [[:iba:User:PK2/sandbox|/sandbox]] in [[:en:Iban language|Iban]]<br />(code: <code>iba</code>)
| [[:id:User:PK2/sandbox|/sandbox]] in [[:en:Indonesian language|Indonesian]]<br />(code: <code>id</code>)
| [[:ie:User:PK2/sandbox|/sandbox]] in [[:en:Interlingue|Interlingue]]<br />(code: <code>ie</code>)
| [[:ig:User:PK2/sandbox|/sandbox]] in [[:en:Igbo language|Igbo]]<br />(code: <code>ig</code>)
| [[:igl:User:PK2/sandbox|/sandbox]] in [[:en:Igala language|Igala]]<br />(code: <code>igl</code>)
| [[:ik:User:PK2/sandbox|/sandbox]] in [[:en:Iñupiaq language|Iñupiaq]]<br />(code: <code>ik</code>)
| [[:ilo:User:PK2/pagipadasan|/sandbox]] in [[:en:Ilocano language|Ilocano]]<br />(code: <code>ilo</code>)
| [[:inh:User:PK2/sandbox|/sandbox]] in [[:en:Ingush language|Ingush]]<br />(code: <code>inh</code>)
| [[:io:User:PK2/sandbox|/sandbox]] in [[:en:Ido|Ido]]<br />(code: <code>io</code>)
| [[:is:User:PK2/sandkassi|/sandbox]] in [[:en:Icelandic language|Icelandic]]<br />(code: <code>is</code>)
| [[:it:User:PK2/Sandbox|/sandbox]] in [[:en:Italian language|Italian]]<br />(code: <code>it</code>)
| [[:iu:User:PK2/sandbox|/sandbox]] in [[:en:Inuktitut|Inuktitut]]<br />(code: <code>iu</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ J
|-
| [[:ja:User:PK2/sandbox|/sandbox]] in [[:en:Japanese language|Japanese]]<br />(code: <code>ja</code>)
| [[:jam:User:PK2/sandbox|/sandbox]] in [[:en:Jamaican Patois|Jamaican Patois]]<br />(code: <code>jam</code>)
| [[:jbo:User:PK2/sandbox|/sandbox]] in [[:en:Lojban|Lojban]]<br />(code: <code>jbo</code>)
| [[:jv:User:PK2/bak wedhi|/sandbox]] in [[:en:Javanese language|Javanese]]<br />(code: <code>jv</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ K
|-
| [[:ka:User:PK2/sandbox|/sandbox]] in [[:en:Georgian language|Georgian]]<br />(code: <code>ka</code>)
| [[:kaa:User:PK2/qaralama|/sandbox]] in [[:en:Karakalpak language|Karakalpak]]<br />(code: <code>kaa</code>)
| [[:kab:User:PK2/sandbox|/sandbox]] in [[:en:Kabyle language|Kabyle]]<br />(code: <code>kab</code>)
| [[:kai:User:PK2/sandbox|/sandbox]] in [[:en:Karai-karai|Karai-karai]]<br />(code: <code>kai</code>)
| [[:kaj:User:PK2/sandbox|/sandbox]] in [[:en:Jju language|Jju]]<br />(code: <code>kaj</code>)
| [[:kbd:User:PK2/sandbox|/sandbox]] in [[:en:Kabardian language|Kabardian]]<br />(code: <code>kbd</code>)
| [[:kbp:User:PK2/sandbox|/sandbox]] in [[:en:Kabiye language|Kabiye]]<br />(code: <code>kbp</code>)
| [[:kcg:User:PK2/sandbox|/sandbox]] in [[:en:Tyap|Tyap]]<br />(code: <code>kcg</code>)
| [[:kg:User:PK2/sandbox|/sandbox]] in [[:en:Kongo language|Kongo]]<br />(code: <code>kg</code>)
| [[:kge:User:PK2/sandbox|/sandbox]] in [[:en:Komering language|Komering]]<br />(code: <code>kge</code>)
| [[:ki:User:PK2/sandbox|/sandbox]] in [[:en:Kikuyu language|Kikuyu]]<br />(code: <code>ki</code>)
| [[:kk:User:PK2/зертхана|/sandbox]] in [[:en:Kazakh language|Kazakh]]<br />(code: <code>kk</code>)
| [[:km:User:PK2/sandbox|/sandbox]] in [[:en:Khmer language|Khmer]]<br />(code: <code>km</code>)
|-
| [[:kn:User:PK2/ಪ್ರಯೋಗಪುಟ|/sandbox]] in [[:en:Kannada|Kannada]]<br />(code: <code>kn</code>)
| [[:knc:User:PK2/sandbox|/sandbox]] in [[:en:Central Kanuri|Central Kanuri]]<br />(code: <code>knc</code>)
| [[:ko:User:PK2/연습장|/sandbox]] in [[:en:Korean language|Korean]]<br />(code: <code>ko</code>)
| [[:koi:User:PK2/sandbox|/sandbox]] in [[:en:Komi-Permyak language|Komi-Permyak]]<br />(code: <code>koi</code>)
| [[:krc:User:PK2/sandbox|/sandbox]] in [[:en:Karachay-Balkar|Karachay-Balkar]]<br />(code: <code>krc</code>)
| [[:ks:User:PK2/sandbox|/sandbox]] in [[:en:Kashmiri language|Kashmiri]]<br />(code: <code>ks</code>)
| [[:ksh:User:PK2/sandbox|/sandbox]] in [[:en:Ripuarian language|Ripuarian]]<br />(code: <code>ksh</code>)
| [[:ku:User:PK2/ceribandin|/sandbox]] in [[:en:Kurdish language|Kurdish]] ([[:en:Kurmanji|Kurmanji]])<br />(code: <code>ku</code>)
| [[:kus:User:PK2/sandbox|/sandbox]] in [[:en:Kusaal language|Kusaal]]<br />(code: <code>kus</code>)
| [[:kv:User:PK2/sandbox|/sandbox]] in [[:en:Komi language|Komi]]<br />(code: <code>kv</code>)
| [[:kw:User:PK2/sandbox|/sandbox]] in [[:en:Cornish language|Cornish]]<br />(code: <code>kw</code>)
| [[:ky:User:PK2/sandbox|/sandbox]] in [[:en:Kyrgyz language|Kyrgyz]]<br />(code: <code>ky</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ L
|-
| [[:la:User:PK2/Harenarium|/sandbox]] in [[:en:Latin|Latin]]<br />(code: <code>la</code>)
| [[:lad:User:PK2/Kutí de prova|/sandbox]] in [[:en:Judaeo-Spanish|Judaeo-Spanish]]<br />(code: <code>lad</code>)
| [[:lb:User:PK2/sandbox|/sandbox]] in [[:en:Luxembourgish|Luxembourgish]]<br />(code: <code>lb</code>)
| [[:lbe:User:PK2/sandbox|/sandbox]] in [[:en:Lak language|Lak]]<br />(code: <code>lbe</code>)
| [[:lez:User:PK2/sandbox|/sandbox]] in [[:en:Lezgian language|Lezgian]]<br />(code: <code>lez</code>)
| [[:lfn:User:PK2/sandbox|/sandbox]] in [[:en:Lingua Franca Nova|Lingua Franca Nova]]<br />(code: <code>lfn</code>)
| [[:lg:User:PK2/sandbox|/sandbox]] in [[:en:Luganda|Luganda]]<br />(code: <code>lg</code>)
| [[:li:User:PK2/sandbox|/sandbox]] in [[:en:Limburgish|Limburgish]]<br />(code: <code>li</code>)
|-
| [[:lij:User:PK2/sandbox|/sandbox]] in [[:en:Ligurian language|Ligurian]]<br />(code: <code>lij</code>)
| [[:lld:User:PK2/sandbox|/sandbox]] in [[:en:Ladin language|Ladin]]<br />(code: <code>lld</code>)
| [[:lmo:User:PK2/sandbox|/sandbox]] in [[:en:Lombard language|Lombard]]<br />(code: <code>lmo</code>)
| [[:ln:User:PK2/sandbox|/sandbox]] in [[:en:Lingala|Lingala]]<br />(code: <code>ln</code>)
| [[:lo:User:PK2/sandbox|/sandbox]] in [[:en:Lao language|Lao]]<br />(code: <code>lo</code>)
| [[:lt:User:PK2/juodraštis|/sandbox]] in [[:en:Lithuanian language|Lithuanian]]<br />(code: <code>lt</code>)
| [[:ltg:User:PK2/sandbox|/sandbox]] in [[:en:Latgalian language|Latgalian]]<br />(code: <code>ltg</code>)
| [[:lv:User:PK2/Smilšu kaste|/sandbox]] in [[:en:Latvian language|Latvian]]<br />(code: <code>lv</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ M
|-
| [[:mad:User:PK2/sandbox|/sandbox]] in [[:en:Madurese language|Madurese]]<br />(code: <code>mad</code>)
| [[:mai:User:PK2/प्रयोगपृष्ठ|/sandbox]] in [[:en:Maithili language|Maithili]]<br />(code: <code>mai</code>)
| [[:map-bms:User:PK2/sandbox|/sandbox]] in [[:en:Javanese language|Javanese]] ([[:en:Banyumasan dialect|Banyumasan]])<br />(code: <code>map-bms</code>)
| [[:mdf:User:PK2/sandbox|/sandbox]] in [[:en:Moksha language|Moksha]]<br />(code: <code>mdf</code>)
| [[:mg:User:PK2/sandbox|/sandbox]] in [[:en:Malagasy language|Malagasy]]<br />(code: <code>mg</code>)
| [[:mhr:User:PK2/sandbox|/sandbox]] in [[:en:Meadow Mari language|Meadow Mari]]<br />(code: <code>mhr</code>)
| [[:mi:User:PK2/sandbox|/sandbox]] in [[:en:Māori language|Māori]]<br />(code: <code>mi</code>)
| [[:min:User:PK2/bak kasiak|/sandbox]] in [[:en:Minangkabau language|Minangkabau]]<br />(code: <code>min</code>)
| [[:mk:User:PK2/sandbox|/sandbox]] in [[:en:Macedonian language|Macedonian]]<br />(code: <code>mk</code>)
| [[:ml:User:PK2/sandbox|/sandbox]] in [[:en:Malayalam|Malayalam]]<br />(code: <code>ml</code>)
| [[:mn:User:PK2/sandbox|/sandbox]] in [[:en:Mongolian language|Mongolian]]<br />(code: <code>mn</code>)
|-
| [[:mni:User:PK2/sandbox|/sandbox]] in [[:en:Meitei language|Meitei]]<br />(code: <code>mni</code>)
| [[:mnw:User:PK2/sandbox|/sandbox]] in [[:en:Mon language|Mon]]<br />(code: <code>mnw</code>)
| [[:m:mos:User:PK2/sandbox|/sandbox]] in [[:en:Mooré|Mooré]]<br />(code: <code>mos</code>)
| [[:mr:User:PK2/sandbox|/sandbox]] in [[:en:Marathi language|Marathi]]<br />(code: <code>mr</code>)
| [[:mrj:User:PK2/sandbox|/sandbox]] in [[:en:Hill Mari language|Hill Mari]]<br />(code: <code>mrj</code>)
| [[:ms:User:PK2/Kotak pasir|/sandbox]] in [[:en:Malay language|Malay]]<br />(code: <code>ms</code>)
| [[:mt:User:PK2/sandbox|/sandbox]] in [[:en:Maltese language|Maltese]]<br />(code: <code>mt</code>)
| [[:mwl:User:PK2/Testes|/sandbox]] in [[:en:Mirandese language|Mirandese]]<br />(code: <code>mwl</code>)
| [[:my:User:PK2/sandbox|/sandbox]] in [[:en:Burmese language|Burmese]]<br />(code: <code>my</code>)
| [[:myv:User:PK2/sandbox|/sandbox]] in [[:en:Erzya language|Erzya]]<br />(code: <code>myv</code>)
| [[:mzn:User:PK2/sandbox|/sandbox]] in [[:en:Mazanderani language|Mazanderani]]<br />(code: <code>mzn</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ N
|-
| [[:nah:User:PK2/sandbox|/sandbox]] in [[:en:Nahuatl|Nahuatl]]<br />(code: <code>nah</code>)
| [[:nap:User:PK2/sandbox|/sandbox]] in [[:en:Neapolitan language|Neapolitan]]<br />(code: <code>nap</code>)
| [[:nds:User:PK2/sandbox|/sandbox]] in [[:en:Low German|Low German]]<br />(code: <code>nds</code>)
| [[:nds-nl:User:PK2/sandbox|/sandbox]] in [[:en:Dutch Low Saxon|Dutch Low Saxon]]<br />(code: <code>nds-nl</code>)
| [[:ne:User:PK2/प्रयोगस्थल|/sandbox]] in [[:en:Nepali language|Nepali]]<br />(code: <code>ne</code>)
| [[:new:User:PK2/sandbox|/sandbox]] in [[:en:Newar language|Newar]]<br />(code: <code>new</code>)
| [[:nia:User:PK2/sandbox|/sandbox]] in [[:en:Nias language|Nias]]<br />(code: <code>nia</code>)
| [[:nl:User:PK2/Kladblok|/sandbox]] in [[:en:Dutch language|Dutch]]<br />(code: <code>nl</code>)
| [[:nn:User:PK2/sandkasse|/sandbox]] in [[:en:Norwegian language|Norwegian]] ([[:en:Nynorsk|Nynorsk]])<br />(code: <code>nn</code>)
|-
| [[:no:User:PK2/sandkasse|/sandbox]] in [[:en:Norwegian language|Norwegian]] ([[:en:Bokmål|Bokmål]])<br />(code: <code>no</code>)
| [[:nov:User:PK2/sandbox|/sandbox]] in [[:en:Novial|Novial]]<br />(code: <code>nov</code>)
| [[:nqo:User:PK2/sandbox|/sandbox]] in [[:en:N'Ko language|N'Ko]]<br />(code: <code>nqo</code>)
| [[:nr:User:PK2/sandbox|/sandbox]] in [[:en:Southern Ndebele language|Southern Ndebele]]<br />(code: <code>nr</code>)
| [[:nrm:User:PK2/sandbox|/sandbox]] in [[:en:Norman language|Norman]]<br />(code: <code>nrm</code>)
| [[:nso:User:PK2/sandbox|/sandbox]] in [[:en:Northern Sotho|Northern Sotho]]<br />(code: <code>nso</code>)
| [[:nup:User:PK2/sandbox|/sandbox]] in [[:en:Nupe language|Nupe]]<br />(code: <code>nup</code>)
| [[:nv:User:PK2/sandbox|/sandbox]] in [[:en:Navajo language|Navajo]]<br />(code: <code>nv</code>)
| [[:ny:User:PK2/sandbox|/sandbox]] in [[:en:Chewa language|Chewa]]<br />(code: <code>ny</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ O
|-
| [[:oc:User:PK2/sandbox|/sandbox]] in [[:en:Occitan language|Occitan]]<br />(code: <code>oc</code>)
| [[:olo:User:PK2/sandbox|/sandbox]] in [[:en:Livvi-Karelian language|Livvi-Karelian]]<br />(code: <code>olo</code>)
| [[:om:User:PK2/sandbox|/sandbox]] in [[:en:Oromo language|Oromo]]<br />(code: <code>om</code>)
| [[:or:User:PK2/ପରଖଘର|/sandbox]] in [[:en:Odia language|Odia]]<br />(code: <code>or</code>)
| [[:os:User:PK2/sandbox|/sandbox]] in [[:en:Ossetian language|Ossetian]]<br />(code: <code>os</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ P
|-
| [[:pa:User:PK2/ਕੱਚਾ ਖ਼ਾਕਾ|/sandbox]] in [[:en:Punjabi language|Punjabi]]<br />(code: <code>pa</code>)
| [[:pag:User:PK2/sandbox|/sandbox]] in [[:en:Pangasinan language|Pangasinan]]<br />(code: <code>pag</code>)
| [[:pam:User:PK2/sandbox|/sandbox]] in [[:en:Kapampangan language|Kapampangan]]<br />(code: <code>pam</code>)
| [[:pap:User:PK2/sandbox|/sandbox]] in [[:en:Papiamento|Papiamento]]<br />(code: <code>pap</code>)
| [[:pcd:User:PK2/sandbox|/sandbox]] in [[:en:Picard language|Picard]]<br />(code: <code>pcd</code>)
| [[:pcm:User:PK2/sandbox|/sandbox]] in [[:en:Nigerian Pidgin|Nigerian Pidgin]]<br />(code: <code>pcm</code>)
| [[:pdc:User:PK2/sandbox|/sandbox]] in [[:en:Pennsylvania Dutch language|Pennsylvania Dutch]]<br />(code: <code>pdc</code>)
| [[:pfl:User:PK2/sandbox|/sandbox]] in [[:en:Palatine German dialects|Palatine German]]<br />(code: <code>pfl</code>)
| [[:pi:User:PK2/sandbox|/sandbox]] in [[:en:Pali|Pali]]<br />(code: <code>pi</code>)
|-
| [[:pl:User:PK2/brudnopis|/sandbox]] in [[:en:Polish language|Polish]]<br />(code: <code>pl</code>)
| [[:pms:User:PK2/sandbox|/sandbox]] in [[:en:Piedmontese language|Piedmontese]]<br />(code: <code>pms</code>)
| [[:pnb:User:PK2/sandbox|/sandbox]] in [[:en:Punjabi language|Punjabi]] (Western Punjabi)<br />(code: <code>pnb</code>)
| [[:pnt:User:PK2/sandbox|/sandbox]] in [[:en:Pontic Greek|Pontic Greek]]<br />(code: <code>pnt</code>)
| [[:ppl:User:PK2/sandbox|/sandbox]] in [[:en:Nawat language|Nawat]]<br />(code: <code>ppl</code>)
| [[:ps:User:PK2/ازمونمخ|/sandbox]] in [[:en:Pashto|Pashto]]<br />(code: <code>ps</code>)
| [[:pt:User:PK2/Testes|/sandbox]] in [[:en:Portuguese language|Portuguese]]<br />(code: <code>pt</code>)
| [[:pwn:User:PK2/sandbox|/sandbox]] in [[:en:Paiwan language|Paiwan]]<br />(code: <code>pwn</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ Q
|-
| [[:qu:User:PK2/sandbox|/sandbox]] in [[:en:Quechuan languages|Quechua]] ([[:en:Southern Quechua|Southern Quechua]])<br />(code: <code>qu</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ R
|-
| [[:rki:User:PK2/sandbox|/sandbox]] in [[:en:Rakhine language|Rakhine]]<br />(code: <code>rki</code>)
| [[:rm:User:PK2/sandbox|/sandbox]] in [[:en:Romansh language|Romansh]]<br />(code: <code>rm</code>)
| [[:rmy:User:PK2/sandbox|/sandbox]] in [[:en:Romani language|Romani]] ([[:en:Vlax Romani language|Vlax Romani]])<br />(code: <code>rmy</code>)
| [[:rn:User:PK2/sandbox|/sandbox]] in [[:en:Kirundi|Kirundi]]<br />(code: <code>rn</code>)
| [[:ro:User:PK2/teste|/sandbox]] in [[:en:Romanian language|Romanian]]<br />(code: <code>ro</code>)
| [[:roa-rup:User:PK2/sandbox|/sandbox]] in [[:en:Aromanian language|Aromanian]]<br />(code: <code>roa-rup</code>)
| [[:roa-tara:User:PK2/sandbox|/sandbox]] in [[:en:Neapolitan language|Neapolitan]] ([[:en:Tarantino dialect|Tarantino]])<br />(code: <code>roa-tara</code>)
| [[:rsk:User:PK2/sandbox|/sandbox]] in [[:en:Pannonian Rusyn|Pannonian Rusyn]]<br />(code: <code>rsk</code>)
| [[:ru:User:PK2/Черновик|/sandbox]] in [[:en:Russian language|Russian]]<br />(code: <code>ru</code>)
| [[:rue:User:PK2/sandbox|/sandbox]] in [[:en:Rusyn language|Rusyn]]<br />(code: <code>rue</code>)
| [[:rw:User:PK2/sandbox|/sandbox]] in [[:en:Kinyarwanda|Kinyarwanda]]<br />(code: <code>rw</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ S
|-
| [[:sa:User:PK2/प्रयोगपृष्ठम्|/sandbox]] in [[:en:Sanskrit|Sanskrit]]<br />(code: <code>sa</code>)
| [[:sah:User:PK2/sandbox|/sandbox]] in [[:en:Yakut language|Yakut]]<br />(code: <code>sah</code>)
| [[:sat:User:PK2/sandbox|/sandbox]] in [[:en:Santali language|Santali]]<br />(code: <code>sat</code>)
| [[:sc:User:PK2/sandbox|/sandbox]] in [[:en:Sardinian language|Sardinian]]<br />(code: <code>sc</code>)
| [[:scn:User:PK2/sandbox|/sandbox]] in [[:en:Sicilian language|Sicilian]]<br />(code: <code>scn</code>)
| [[:sco:User:PK2/sandbox|/sandbox]] in [[:en:Scots language|Scots]]<br />(code: <code>sco</code>)
| [[:sd:User:PK2/مشق پٽي|/sandbox]] in [[:en:Sindhi language|Sindhi]]<br />(code: <code>sd</code>)
| [[:se:User:PK2/sandbox|/sandbox]] in [[:en:Northern Sámi|Northern Sámi]]<br />(code: <code>se</code>)
| [[:sg:User:PK2/sandbox|/sandbox]] in [[:en:Sango language|Sango]]<br />(code: <code>sg</code>)
| [[:sh:User:PK2/igralište|/sandbox]] in [[:en:Serbo-Croatian|Serbo-Croatian]]<br />(code: <code>sh</code>)
| [[:shi:User:PK2/sandbox|/sandbox]] in [[:en:Shilha language|Shilha]]<br />(code: <code>shi</code>)
|-
| [[:shn:User:PK2/sandbox|/sandbox]] in [[:en:Shan language|Shan]]<br />(code: <code>shn</code>)
| [[:si:User:PK2/sandbox|/sandbox]] in [[:en:Sinhala language|Sinhala]]<br />(code: <code>si</code>)
| [[:simple:User:PK2/sandbox|/sandbox]] in [[:en:Basic English|Basic English]]<br />(code: <code>simple</code>)
| [[:sk:User:PK2/pieskovisko|/sandbox]] in [[:en:Slovak language|Slovak]]<br />(code: <code>sk</code>)
| [[:skr:User:PK2/sandbox|/sandbox]] in [[:en:Saraiki language|Saraiki]]<br />(code: <code>skr</code>)
| [[:sl:User:PK2/sandbox|/sandbox]] in [[:en:Slovene language|Slovene]]<br />(code: <code>sl</code>)
| [[:sm:User:PK2/sandbox|/sandbox]] in [[:en:Samoan language|Samoan]]<br />(code: <code>sm</code>)
| [[:smn:User:PK2/sandbox|/sandbox]] in [[:en:Inari Sámi language|Inari Sámi]]<br />(code: <code>smn</code>)
| [[:sn:User:PK2/sandbox|/sandbox]] in [[:en:Shona language|Shona]]<br />(code: <code>sn</code>)
| [[:so:User:PK2/Bacaadka|/sandbox]] in [[:en:Somali language|Somali]]<br />(code: <code>so</code>)
| [[:sq:User:PK2/sandbox|/sandbox]] in [[:en:Albanian language|Albanian]]<br />(code: <code>sq</code>)
|-
| [[:sr:User:PK2/песак|/sandbox]] in [[:en:Serbian language|Serbian]]<br />(code: <code>sr</code>)
| [[:srn:User:PK2/sandbox|/sandbox]] in [[:en:Sranan Tongo|Sranan Tongo]]<br />(code: <code>srn</code>)
| [[:ss:User:PK2/sandbox|/sandbox]] in [[:en:Swazi language|Swazi]]<br />(code: <code>ss</code>)
| [[:st:User:PK2/sandbox|/sandbox]] in [[:en:Sotho language|Sotho]]<br />(code: <code>st</code>)
| [[:stq:User:PK2/sandbox|/sandbox]] in [[:en:Saterland Frisian language|Saterland Frisian]]<br />(code: <code>stq</code>)
| [[:su:User:PK2/sandbox|/sandbox]] in [[:en:Sundanese language|Sundanese]]<br />(code: <code>su</code>)
| [[:sv:User:PK2/sandlåda|/sandbox]] in [[:en:Swedish language|Swedish]]<br />(code: <code>sv</code>)
| [[:sw:User:PK2/ukurasa wa majaribio|/sandbox]] in [[:en:Swahili language|Swahili]]<br />(code: <code>sw</code>)
| [[:syl:User:PK2/sandbox|/sandbox]] in [[:en:Sylheti language|Sylheti]]<br />(code: <code>syl</code>)
| [[:szl:User:PK2/sandbox|/sandbox]] in [[:en:Silesian language|Silesian]]<br />(code: <code>szl</code>)
| [[:szy:User:PK2/sandbox|/sandbox]] in [[:en:Sakizaya language|Sakizaya]]<br />(code: <code>szy</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ T
|-
| [[:ta:User:PK2/மணல்தொட்டி|/sandbox]] in [[:en:Tamil language|Tamil]]<br />(code: <code>ta</code>)
| [[:tay:User:PK2/sandbox|/sandbox]] in [[:en:Atayal language|Atayal]]<br />(code: <code>tay</code>)
| [[:tcy:User:PK2/ಕಲ್ಪುನ ಕಳ|/sandbox]] in [[:en:Tulu language|Tulu]]<br />(code: <code>tcy</code>)
| [[:tdd:User:PK2/sandbox|/sandbox]] in [[:en:Tai Nuea language|Tai Nuea]]<br />(code: <code>tdd</code>)
| [[:te:User:PK2/ప్రయోగశాల|/sandbox]] in [[:en:Telugu language|Telugu]]<br />(code: <code>te</code>)
| [[:tet:User:PK2/sandbox|/sandbox]] in [[:en:Tetum language|Tetum]]<br />(code: <code>tet</code>)
| [[:tg:User:PK2/Сиёҳнавис|/sandbox]] in [[:en:Tajik language|Tajik]]<br />(code: <code>tg</code>)
| [[:th:User:PK2/ทดลองเขียน|/sandbox]] in [[:en:Thai language|Thai]]<br />(code: <code>th</code>)
| [[:ti:User:PK2/sandbox|/sandbox]] in [[:en:Tigrinya language|Tigrinya]]<br />(code: <code>ti</code>)
| [[:tig:User:PK2/sandbox|/sandbox]] in [[:en:Tigre language|Tigre]]<br />(code: <code>tig</code>)
| [[:tk:User:PK2/sandbox|/sandbox]] in [[:en:Turkmen language|Turkmen]]<br />(code: <code>tk</code>)
| [[:tl:User:PK2/burador|/sandbox]] in [[:en:Tagalog language|Tagalog]]<br />(code: <code>tl</code>)
| [[:tly:User:PK2/sandbox|/sandbox]] in [[:en:Talysh language|Talysh]]<br />(code: <code>tly</code>)
|-
| [[:tn:User:PK2/sandbox|/sandbox]] in [[:en:Tswana language|Tswana]]<br />(code: <code>tn</code>)
| [[:to:User:PK2/sandbox|/sandbox]] in [[:en:Tongan language|Tongan]]<br />(code: <code>to</code>)
| [[:tok:User:PK2/sandbox|/sandbox]] in [[:en:Toki Pona|Toki Pona]]<br />(code: <code>tok</code>)
| [[:tpi:User:PK2/sandbox|/sandbox]] in [[:en:Tok Pisin|Tok Pisin]]<br />(code: <code>tpi</code>)
| [[:tr:User:PK2/deneme tahtası|/sandbox]] in [[:en:Turkish language|Turkish]]<br />(code: <code>tr</code>)
| [[:trv:User:PK2/sandbox|/sandbox]] in [[:en:Seediq language|Seediq]]<br />(code: <code>trv</code>)
| [[:ts:User:PK2/sandbox|/sandbox]] in [[:en:Tsonga language|Tsonga]]<br />(code: <code>ts</code>)
| [[:tt:User:PK2/sandbox|/sandbox]] in [[:en:Tatar language|Tatar]]<br />(code: <code>tt</code>)
| [[:tum:User:PK2/sandbox|/sandbox]] in [[:en:Tumbuka language|Tumbuka]]<br />(code: <code>tum</code>)
| [[:tw:User:PK2/sandbox|/sandbox]] in [[:en:Akan language|Akan]] (Twi)<br />(code: <code>tw</code>)
| [[:ty:User:PK2/sandbox|/sandbox]] in [[:en:Tahitian language|Tahitian]]<br />(code: <code>ty</code>)
| [[:tyv:User:PK2/sandbox|/sandbox]] in [[:en:Tuvan language|Tuvan]]<br />(code: <code>tyv</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ U
|-
| [[:udm:User:PK2/sandbox|/sandbox]] in [[:en:Udmurt language|Udmurt]]<br />(code: <code>udm</code>)
| [[:ug:User:PK2/sandbox|/sandbox]] in [[:en:Uyghur language|Uyghur]]<br />(code: <code>ug</code>)
| [[:uk:User:PK2/Чернетка|/sandbox]] in [[:en:Ukrainian language|Ukrainian]]<br />(code: <code>uk</code>)
| [[:ur:User:PK2/تختۂ مشق|/sandbox]] in [[:en:Urdu|Urdu]]<br />(code: <code>ur</code>)
| [[:uz:User:PK2/qumloq|/sandbox]] in [[:en:Uzbek language|Uzbek]]<br />(code: <code>uz</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ V
|-
| [[:ve:User:PK2/sandbox|/sandbox]] in [[:en:Venda language|Venda]]<br />(code: <code>ve</code>)
| [[:vec:User:PK2/sandbox|/sandbox]] in [[:en:Venetian language|Venetian]]<br />(code: <code>vec</code>)
| [[:vep:User:PK2/sandbox|/sandbox]] in [[:en:Veps language|Veps]]<br />(code: <code>vep</code>)
| [[:vi:User:PK2/nháp|/sandbox]] in [[:en:Vietnamese language|Vietnamese]]<br />(code: <code>vi</code>)
| [[:vls:User:PK2/sandbox|/sandbox]] in [[:en:West Flemish|West Flemish]]<br />(code: <code>vls</code>)
| [[:vo:User:PK2/sandbox|/sandbox]] in [[:en:Volapük|Volapük]]<br />(code: <code>vo</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ W
|-
| [[:wa:User:PK2/sandbox|/sandbox]] in [[:en:Walloon language|Walloon]]<br />(code: <code>wa</code>)
| [[:war:User:PK2/sandbox|/sandbox]] in [[:en:Waray language|Waray]]<br />(code: <code>war</code>)
| [[:wo:User:PK2/sandbox|/sandbox]] in [[:en:Wolof language|Wolof]]<br />(code: <code>wo</code>)
| [[:wuu:User:PK2/sandbox|/sandbox]] in [[:en:Wu Chinese|Wu Chinese]]<br />(code: <code>wuu</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ X
|-
| [[:xal:User:PK2/sandbox|/sandbox]] in [[:en:Oirat language|Oirat]] ([[:en:Kalmyk Oirat|Kalmyk Oirat]])<br />(code: <code>xal</code>)
| [[:xh:User:PK2/sandbox|/sandbox]] in [[:en:Xhosa language|Xhosa]]<br />(code: <code>xh</code>)
| [[:xmf:User:PK2/sandbox|/sandbox]] in [[:en:Mingrelian language|Mingrelian]]<br />(code: <code>xmf</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ Y
|-
| [[:yi:User:PK2/sandbox|/sandbox]] in [[:en:Yiddish|Yiddish]]<br />(code: <code>yi</code>)
| [[:yo:User:PK2/sandbox|/sandbox]] in [[:en:Yoruba language|Yoruba]]<br />(code: <code>yo</code>)
|}
{| class="wikitable" style="text-align: center; font-size:85%"
|+ Z
|-
| [[:za:User:PK2/sandbox|/sandbox]] in [[:en:Zhuang languages|Zhuang]] ([[:en:Standard Zhuang|Standard Zhuang]])<br />(code: <code>za</code>)
| [[:zea:User:PK2/sandbox|/sandbox]] in [[:en:Zeelandic|Zeelandic]]<br />(code: <code>zea</code>)
| [[:zgh:User:PK2/sandbox|/sandbox]] in [[:en:Standard Moroccan Amazigh|Standard Moroccan Amazigh]]<br />(code: <code>zgh</code>)
| [[:zh:User:PK2/沙盒|/sandbox]] in [[:en:Chinese language|Chinese]] ([[:en:Mandarin Chinese|Mandarin Chinese]])<br />(code: <code>zh</code>)
| [[:zh-classical:User:PK2/sandbox|/sandbox]] in [[:en:Classical Chinese|Classical Chinese]]<br />(code: <code>zh-classical</code>)
| [[:zh-min-nan:User:PK2/sandbox|/sandbox]] in [[:en:Southern Min|Southern Min]]<br />(code: <code>zh-min-nan</code>)
| [[:zh-yue:User:PK2/sandbox|/sandbox]] in [[:en:Cantonese|Cantonese]]<br />(code: <code>zh-yue</code>)
| [[:zu:User:PK2/sandbox|/sandbox]] in [[:en:Zulu language|Zulu]]<br />(code: <code>zu</code>)
|}
lqv4jf4ytbpqgk0b4c59pskg40l4i1p
Marcelin (papa)
0
23492
231443
231435
2026-06-01T22:05:27Z
ChrisPtDe
22
aponsa
231443
wikitext
text/x-wiki
{{Grafia RèfB}}{{Sot-titro/Variantes principâles|nv1=Marcelyin}}{{Vêre homonimos|Marcelin}}{{Enfocajon Prèlat catolico
| nom = Marcelin
| prononciacion = [mars.ˈlĩ, mar.sə.ˈlĩ],<br />[maʀs.ˈlĩ, maʀ.sə.ˈlĩ]
| titro = Papa
| émâge = Marcellinus.png
| talye émâge = 220
| lègenda = ''Portrèt imaginèro'' de la [[Basilica Sant-Pol-fôr-les-Muralyes|basilica ''Sant-Pol-fôr-les-Muralyes'']] (mosayico du méten du {{s-|XIX}}).
| nom de nèssence = Mārcellīnus<br />{{AFE|[maːr.kel.ˈliː.nus]}}
| dâta de nèssence =
| endrêt de nèssence =
| dâta de môrt = {{dâta|25 octobro 304}}
| endrêt de môrt = [[Roma]]
| comencement pontificat = {{dâta|30 jouin 296}}
| entronisacion =
| fin pontificat = {{dâta|25 octobro 304}}
| féta = [[25 d’octobro]]
| prèdècèssor papa = [[Cayus (papa)|Cayus]]
| succèssor papa = {{nôblo|Marcél Iér}}
}}
Sant-Marcelin, ou ma Marcelin (en [[latin]] '''Marcellinus''') est, por l'Égllêse catolica, lo 29émo et [[Papa|èvèque de Roma]] du 30 jouen 296 a sa môrt en mârtiro lo 25 octobro 304. Il succède a Caïus.
== Pontificât ==
D'aprés lo Cronografo de 354, Marcelin est èvèque de Roma, depôs l'an 296, pendent 8 ans, 3 mês et 25 jorns tant qu'u 25 octobro 304, pèrioda ont que la pèrsècucion ant començâ et l'èpiscopat s'arrète pendent 7 ans, 6 mês et 25 jorns.<ref>{{Mul|en|la}} [http://www.tertullian.org/fathers/chronography_of_354_13_bishops_of_rome.htm Chronographe de 354 - Les évêques de Rome - Tertullian.org - 2006].</ref>
O est pendent lo pontificat de Marcelin, en 301, que l'Armènie vint la premiére nacion oficièlament crètiena.
En 303, sot lo pontificat de Marcellin, dèbute la dèrriére granta pèrsècucion de los crètiens, équele de l'emperor romen Dioclècien.
Lo ''Liber pontificalis'', sè fondant sur los ''Actos de Sant Marcelin'', que lo tèxto est pèrdu, rapôrte que, pendent la pèrsècucion de Dioclècien, Marcelin est apelâ u sacrificio. Il ofre de l'encens ux idoles, mas il sè repent pou de temps aprés, avoue sa fê por lo Crist et sofre la mârtira avouéc plusiors compagnons.<ref>{{En}} [[wikisource:1911_Encyclopædia_Britannica/Marcellinus,_St|St Marcellin - Wikisource - Encyclopædia Britannica]].</ref>
D'ôtros documents pârlont de sa défection, équen porrêt èxplicar lo silence de los ancians calendriérs liturgicos. U comencement du Vémo , l'èvèque donatiste Pétilien de Cirta afirme que Marcelin et sos prétres ariant abandonâ los lévros sants ux payens durent la pèrsècucion et ofèrt de l'encens a de fôx diôs. Sant Augusten sè contente de néyér l'afâre, montrant per-lé qu'el ne reposâve que sur des calomnies.
Los registros du concilo de Sinuessa, IVémo sièclo, concilo considèrâ coment émaginèro, sont fabrecâs u comencement du VIémo . Ils endicont que Marcellin, aprés sa chête, sè presente devant un consèly, que refuse de lo jugiér d'aprés lo principo que ''lo premiér Èscabél pôt étre jugiê per pèrsona''. D'aprés lo ''Liber pontificalis'', Marcellin est entèrrâ, lo 26 avril 304, dens lo cemetiéro de Priscille, sur l'En passant per Salaria, 25 jorns aprés sa mârtira ; lo ''Catalogus Liberianus'' balye coment date lo 20 octobro 304. Lo fêt de la mârtira, asse, est pas ètabli avouéc cèrtituda.<ref>[https://books.google.fr/books?id=uIk9AAAAYAAJ&pg=PA303&lpg=PA303&dq=%22A+Sketch+of+the+Romish+Controversy%22+%22sinuessa%22&source=bl&ots=UnmWFeZcap&sig=_1Eh0oojQ0zLVE2pcZz755gAaqY&hl=fr&sa=X&ei=mWPdVOyEBYrfaK71gHg&ved=0CCMQ6AEwAA#v=onepage&q=%22A%20Sketch%20of%20the%20Romish%20Controversy%22%20%22sinuessa%22&f=falseA ''Sketch of the Romish Controversy''] par G. Finch, publié chez G. Norman, en 1831, {{P.|303}}.</ref>
Selon l'Égllêse catolica, aprés una vacance de quatro anâs, u contrèro de cen qu'endique lo Chronographe de 354, {{Nôblo|Marcel Ier}} li succède. Quelos doux pontifes sont des côps confondus.
== Lègenda dorâ ==
La ''[[Légenda doraye|Lègenda dorâ]]'' combina les doves idês d'apostasiye et de mârtira : arrapâ de pouer, Marcellin arêt sacrifiâ ux idoles por sôvar sa via pués, penetrâ de remôrd, il serêt revenu lui-mémo sè livrar u borriô.
== Notes et rèfèrences ==
{{Rèferences}}
== Vêre asse ==
=== Bibliografia ===
* Administration Pontificale de la Basilique Patriarcale Saint-Paul, Les Papes, vingt siècles d'histoire, Librairie éditrice vaticane, 2002, 160 p. (ISBN 88-209-7320-0).
* (en) Aubrey Attwater, A Dictionary of Popes : From Peter to Pius XII, 1939.
* Klaus Herbers, Philippe Levillain (dir.), Diccionèro historico de la papôtât, Paris, Fayard, 2003 (ISBN 2-213-618577).
* {{Pdf}} [[iarchive:duchesne01|Le Liber pontificalis : texte, introduction et commentaire par Louis Marie Olivier Duchesne (Volume 1) - pages XCIX - Table chronologique CCLXI - 162-163 - Version en ligne]].
* {{Pdf}} [https://books.google.fr/books?id=mXXF3W3i5owC&pg=PA1004&dq=M%C3%A9moires+Pour+Servir+%C3%80+L%27Histoire+Ecclesiastique+marcelin&hl=fr&sa=X&ei=3ZDbVOq1OMP2UsfVg-AJ&ved=0CCgQ6AEwAQ#v=onepage&q=M%C3%A9moires%20Pour%20Servir%20%C3%80%20L%27Histoire%20Ecclesiastique%20marcelin&f=false Mémoires pour servir à l'histoire ecclésiastique des six premiers siècles : Sébastien Le Nain de Tillemont - Volume 4 - pages 1004].
* {{Pdf}} [https://books.google.fr/books?id=NzcGAAAAQAAJ&pg=PR3&hl=fr#v=onepage&q=marcellin&f=false Le Martyrologe romain].
* {{En}} [[wikisource:1911_Encyclopædia_Britannica/Marcellinus,_St|St Marcellinus - 1911, Encyclopædia Britannica, Volume 17 - 24 décembre 2012]].
* {{En}} [[wikisource:Catholic_Encyclopedia_(1913)/Pope_St._Marcellinus|Pope St. Marcellinus: Johann Peter Kirsch - Catholic Encyclopedia (1913) - Volume 9]].
=== Articllos connexes ===
* Catacombe de Priscille
* Histouère de la papôtât
=== Lims èxtèrnos ===
* [https://web.archive.org/web/20050921041713/http://www.abbaye-saint-benoit.ch/voragine/tome01/062.htm Marcellin dans la ''Légende dorée'']
* [http://nominis.cef.fr/contenus/saint/1039/Saint-Marcellin.html Saint-Marcellin - Nominis.cef.fr]
* {{Pdf}} {{La}} [http://www.documentacatholicaomnia.eu/01_01_0296-0304-_Marcellinus,_Sanctus.html Textes attribués à Saint Marcellin - Documenta Catholica Omnia - 2006]
* {{En}} [http://www.newadvent.org/cathen/09637d.htm Pape St Marcellin - Newadvent.org/] [[Catholic Encyclopedia]] - 2012.
ggdmquhbqnrmu5ewjnbbpqnrnpmxnn0
Vouiquipèdia:Lumiére dessus…/Jouin 2026
4
23502
231448
231434
2026-06-01T22:26:47Z
ChrisPtDe
22
231448
wikitext
text/x-wiki
{{Lumiére dessus…/Reçua
|jorn={{{jorn|}}}
|mês=06
|an=2026
|01a=Chacerâl
|01b=
|02a=Montagne
|02b=
|03a=Montagne
|03b=
|04a=Montagne
|04b=
|05a=
|05b=
|06a=
|06b=
|07a=
|07b=
|08a=
|08b=
|09a=
|09b=
|10a=
|10b=
|11a=
|11b=
|12a=
|12b=
|13a=
|13b=
|14a=
|14b=
|15a=
|15b=
|16a=
|16b=
|17a=
|17b=
|18a=
|18b=
|19a=
|19b=
|20a=
|20b=
|21a=
|21b=
|22a=
|22b=
|23a=
|23b=
|24a=
|24b=
|25a=
|25b=
|26a=
|26b=
|27a=
|27b=
|28a=
|28b=
|29a=
|29b=
|30a=
|30b=
}}<noinclude>[[Catègorie:Lumiére dessus…/Reçua/2026| 06]]</noinclude>
ets9ozrykfzivv6vbuo0rf7sc9dn8x9
Vouiquipèdia:Émâge du jorn/2 de jouin 2026
4
23504
231445
2026-06-01T22:18:11Z
ChrisPtDe
22
Pâge fêta avouéc « {{Émâge du jorn|Chess game Staunton No. 6 perfil view 8.jpg|l=7118|h=4671|style=|''[[Juè de piéces d’èchècos Staunton|Piéces d’èchèques Staunton]]'' en [[palissandro]] et en [[boués]], betâyes dessus ‘n [[èchèquiér]].}}<noinclude> [[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]] </noinclude> »
231445
wikitext
text/x-wiki
{{Émâge du jorn|Chess game Staunton No. 6 perfil view 8.jpg|l=7118|h=4671|style=|''[[Juè de piéces d’èchècos Staunton|Piéces d’èchèques Staunton]]'' en [[palissandro]] et en [[boués]], betâyes dessus ‘n [[èchèquiér]].}}<noinclude>
[[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]]
</noinclude>
76r1pzjs9fh7tguabn0ikxu9q1a8jns
Vouiquipèdia:Émâge du jorn/3 de jouin 2026
4
23505
231446
2026-06-01T22:22:10Z
ChrisPtDe
22
Pâge fêta avouéc « {{Émâge du jorn|20260510 Sarah Engels NZ92709.jpg|l=2519|h=3778|La ''chantosa alemanda [[Sarah Engels]]'' pendent lo [[Concors Erovision de la chançon 2026]].}}<noinclude> [[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]] </noinclude> »
231446
wikitext
text/x-wiki
{{Émâge du jorn|20260510 Sarah Engels NZ92709.jpg|l=2519|h=3778|La ''chantosa alemanda [[Sarah Engels]]'' pendent lo [[Concors Erovision de la chançon 2026]].}}<noinclude>
[[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]]
</noinclude>
91jibys0x7m9tln1ybdehdlhlg7koio
Vouiquipèdia:Émâge du jorn/4 de jouin 2026
4
23506
231447
2026-06-01T22:25:56Z
ChrisPtDe
22
Pâge fêta avouéc « {{Émâge du jorn|(Map of the complete island of Cuba). LOC 2003623399.jpg|l=10253|h=6114|''Mapa de [[Cuba]]'' atribuâye a [[Johannes Vingboons]] (1639, [[Bibliotèca du Congrès]]).}}<noinclude> [[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]] </noinclude> »
231447
wikitext
text/x-wiki
{{Émâge du jorn|(Map of the complete island of Cuba). LOC 2003623399.jpg|l=10253|h=6114|''Mapa de [[Cuba]]'' atribuâye a [[Johannes Vingboons]] (1639, [[Bibliotèca du Congrès]]).}}<noinclude>
[[Catègorie:Émâge du jorn|{{SUBPAGENAME}}]]
</noinclude>
dol7p811v0j6ydizlikde1pvb3dt5pr