Module:TradRef
Apparence
[voir] [modifier] [historique] [purger]
Ce module Lua est utilisé par le modèle {{TradRef}}.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- À faire :
-- * Tester que oldid est uniquement composé de chiffres
-- * Vérifier que le modèle est seulement utilisé dans l'espace de noms principal
-- ** S'inspirer de [[Modèle:Traduction/Référence]]
local p = {}
function p.getNomProjet( szProjet )
local projets = {
commons = 'Wikimedia Commons',
meta = 'Meta-Wiki',
species = 'Wikispecies',
wikibooks = 'Wikilivres',
wikidata = 'Wikidata',
wikinews = 'Wikinews',
wikipedia = 'Wikipédia',
wikisource = 'Wikisource',
wikiversity = 'Wikiversité',
wikivoyage = 'Wikivoyage',
wiktionary = 'Wiktionnaire',
}
return projets[szProjet] or '(projet inconnu)'
end
function p.getLangue( IETF )
local dataLangue = mw.loadData('Module:Langue/Data')
local szNomLangue = dataLangue[IETF].nom
local szWikilien = dataLangue[IETF].page
-- Si aucune dataLangue[IETF].page , alors dataLangue[IETF].nom est un wikilien
if szWikilien == nil then
szWikilien = szNomLangue
end
return szNomLangue, szWikilien
end
function p.getMultilingue(szUrl)
-- Seulement pour les wikis multilingues :
-- * Commons : https://commons.wikimedia.org/w/index.php?title=Accueil&oldid=169324172
-- * Meta-Wiki : https://meta .wikimedia.org/w/index.php?title=Accueil&oldid=15738990
-- * Wikispecies : https://species.wikimedia.org/w/index.php?title=Accueil&oldid=2717007
-- * Wikidata : https:// www.wikidata.org/w/index.php?title=Wikidata:Main_Page&oldid=400496920
-- Retourne {{mul}} comme indicateur de langue et le fragment de phrase « de la page de Wikimedia Commons en ... (voir liste des auteurs) »
-- (Les projets sans langue précisée sont, en théorie, multilingues.)
-- https://commons.wikimedia.org/w/index.php?title=File:Station_%C3%84u%C3%9Fere_Kanalstra%C3%9Fe.JPG&oldid=232035766
local szPrefixe, szProjet, szTitle, szOldid = string.match(szUrl, 'https://(%a+)%.(%a+)%.org/w/index%.php%?title=(.+)&oldid=(%d+)')
-- Remplacer %C3%B par un caractère Unicode, et _ par une espace
local szTitleDecoded = mw.uri.decode( szTitle , "WIKI" )
-- Le préfixe est : commons, meta-wiki, species ou www
local szNomProjet = p.getNomProjet( szPrefixe )
local szHtmlIndicateur = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : multilingue">mul</abbr>)</span>'
local szLinkOldid = '<span class="plainlinks">[//' .. szPrefixe .. '.' .. szProjet .. '.org/w/index.php?title=' .. szTitle .. '&oldid=' .. szOldid .. ' ' .. szTitleDecoded .. ']</span>'
local szLinkHistory = '<span class="plainlinks">[//' .. szPrefixe .. '.' .. szProjet .. '.org/w/index.php?title=' .. szTitle .. '&action=history voir la liste des auteurs]</span>'
local szHtmlFragment = 'de la page de ' .. szNomProjet .. ' intitulée « ' .. szLinkOldid .. ' » <small>(' .. szLinkHistory .. ')</small>'
return szHtmlIndicateur , szHtmlFragment
end
function p.getUnilingue(szUrl)
-- Seulement pour les wikis unilingues (WIKT.ES, WP.EN, WS.DE...)
-- Retourne l'indicateur de langue et le fragment de phrase « de la page de Wiki... en ... (voir liste des auteurs) »
-- https://de.wikipedia.org/w/index.php?title=Amandus_(Bagaudenf%C3%BChrer)&oldid=148366994
local szIetf, szProjet, szTitle, szOldid = string.match(szUrl, 'https://(%a+)%.(%a+)%.org/w/index%.php%?title=(.+)&oldid=(%d+)')
-- Remplacer %C3%B par un caractère Unicode, et _ par une espace
local szTitleDecoded = mw.uri.decode( szTitle , "WIKI" )
local szNomLangue, szWikilien = p.getLangue( szIetf )
local szNomProjet = p.getNomProjet( szProjet )
local szHtmlIndicateur = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : ' .. szNomLangue .. '">' .. szIetf .. '</abbr>)</span>'
local szLinkOldid = '<span class="plainlinks">[//' .. szIetf .. '.' .. szProjet .. '.org/w/index.php?title=' .. szTitle .. '&oldid=' .. szOldid .. ' ' .. szTitleDecoded .. ']</span>'
local szLinkHistory = '<span class="plainlinks">[//' .. szIetf .. '.' .. szProjet .. '.org/w/index.php?title=' .. szTitle .. '&action=history voir la liste des auteurs]</span>'
local szHtmlFragment = 'de la page de ' .. szNomProjet .. ' en [[' .. szWikilien .. '|' .. szNomLangue .. ']] intitulée « ' .. szLinkOldid .. ' » <small>(' .. szLinkHistory .. ')</small>'
return szHtmlIndicateur, szHtmlFragment
end
function p.test()
local arguments = {}
arguments[1] = 'https://de.wikipedia.org/w/index.php?title=DEUTSCH&oldid=148366994'
arguments[2] = 'https://commons.wikimedia.org/w/index.php?title=FILE&oldid=232035766'
arguments[3] = 'https://pt.wikipedia.org/w/index.php?title=PORTUGAIS&oldid=148366994'
arguments[4] = 'https://meta.wikimedia.org/w/index.php?title=META&oldid=1111'
arguments[5] = 'https://ru.wikipedia.org/w/index.php?title=RUSSE&oldid=101010101'
arguments[6] = 'https://species.wikipedia.org/w/index.php?title=SPECIES&oldid=222222'
-- mw.log(szHtml)
end
function p.ConstruireTradRef( frame )
local args = frame:getParent().args
local arguments = {}
-- Noter les arguments selon l'ordre qu'ils ont été saisis (exemple, url2 vient avant url3)
if args.url1 ~= nil then arguments[1] = args.url1 end
if args.url2 ~= nil then arguments[2] = args.url2 end
if args.url3 ~= nil then arguments[3] = args.url3 end
if args.url4 ~= nil then arguments[4] = args.url4 end
if args.url5 ~= nil then arguments[5] = args.url5 end
if args.url6 ~= nil then arguments[6] = args.url6 end
if args.url7 ~= nil then arguments[7] = args.url7 end
if args.url8 ~= nil then arguments[8] = args.url8 end
if args.url9 ~= nil then arguments[9] = args.url9 end
if args.url10 ~= nil then arguments[10] = args.url10 end
-- Selon les « préfixes » d'URL (en, de, www, commons...), noter des informations
local szPrefix = ''
local Indicateurs = {}
local Fragments = {}
local nNbreUrl = 0
for i, szUrl in ipairs( arguments ) do
szPrefix = string.match(szUrl, 'https://(%a+)%.%a+%.org/w/index%.php%?title=.+&oldid=%d+')
if szPrefix == 'commons' or szPrefix == 'meta' or szPrefix == 'species' or szPrefix == 'www' then
Indicateurs[i], Fragments[i] = p.getMultilingue(szUrl)
else
Indicateurs[i], Fragments[i] = p.getUnilingue(szUrl)
end
i = i + 1
nNbreUrl = nNbreUrl + 1
end
-- Composer le message à l'intention des lecteurs
local szHtml = ''
if nNbreUrl <= 10 then
-- 10 séparateurs pour les indicateurs de langues, soit barre oblique ou espace blanc
-- Les séparateurs sont inscrits à rebours, ce qui facilite leur insertion dans le texte.
local SeparateursIndicateurs = { ' ', '/', '/', '/', '/', '/', '/', '/', '/', '/'}
-- 10 marques de ponctuation pour les fragments de phrases
-- Les marques sont inscrites à rebours, ce qui facilite leur insertion dans le texte.
local SeparateursPonctuaction = { '', ' et ', ', ', ', ', ', ', ', ', ', ', ', ', ', ', ', ' }
szHtml = '<p><span style="padding-left: 1.2em;">'
for i, szIndicateur in ipairs( Indicateurs ) do
szHtml = szHtml .. szIndicateur .. SeparateursIndicateurs[nNbreUrl - i + 1]
end
szHtml = szHtml .. ' Cet article est partiellement ou en totalité issu '
for i, szFragment in ipairs( Fragments ) do
szHtml = szHtml .. szFragment .. SeparateursPonctuaction[nNbreUrl - i + 1]
end
szHtml = szHtml .. '.</span></p>'
else
szHtml = 'Le modèle n\'accepte pas plus que 10 adresses Web.'
end
if nNbreUrl == 0 then
szHtml = 'Chaque paramètre url1, url2, url3... doit être suivi d\'une adresse Web.'
end
return szHtml
end
return p