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( '&nbsp;', ' ' ) :gsub( '&#160;', ' ' ) -- narrow nbsp :gsub( '\226\128\175', ' ' ) :gsub( '&#8239;', ' ' ) -- thin space :gsub( '\226\128\137', ' ' ) :gsub( '&thinsp;', ' ' ) :gsub( '&#8201;', ' ' ) -- simple space :gsub( '&#32;', ' ' ) -- 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( '&nbsp;', ' ' ) :gsub( '&#160;', ' ' ) -- narrow nbsp :gsub( '\226\128\175', ' ' ) :gsub( '&#8239;', ' ' ) -- thin space :gsub( '\226\128\137', ' ' ) :gsub( '&thinsp;', ' ' ) :gsub( '&#8201;', ' ' ) -- simple space :gsub( '&#32;', ' ' ) -- 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 |- | &nbsp; |} ;<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