Module:Lien interwiki
Apparence
[voir] [modifier] [historique] [purger]
Ce module est utilisé par le modèle {{Lien}}.
Utilisation
Fonctions exportables :
main(frame)
– pour le modèle {{Lien}}.
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
Module:Langue
– chargé pour déterminer le nom de la langue à partir de son code.Module:Lien interwiki/data catégorisation
– catégories ajoutées en fonction du code de langue.
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 (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
function p.main( frame )
-- http://lua-users.org/wiki/StringTrim
local function trim( s )
return s:match( '^()%s*$' ) and '' or s:match( '^%s*(.*%S)' )
end
local function lien( interwiki, target, text )
if interwiki then
target = ':' .. interwiki .. ':' .. target
end
if text then
return '[[' .. target .. '|' .. tostring( text ) .. ']]'
else
return '[[' .. target .. ']]'
end
end
local parentArgs = frame:getParent().args
-- effectue un trim sur les paramètres non nommés,
-- et exclut les paramètres dont la valeur est vide
local args = {}
for k, v in pairs( parentArgs ) do
if type( k ) == number then
v = trim( v )
end
if v ~= '' then
args[ k ] = v
end
end
local cible_fr = args[ 'fr' ] or args[ 1 ] or args[ 'trad' ]
local cible_trad = args[ 'trad' ] or args[ 'fr' ] or args[ 1 ]
local categorise = ( args[ 'nocat' ] ~= 'oui' )
if not cible_fr then
return frame:expandTemplate{ title = 'Fix', args = {
[1] = '[[' .. ( args[ 'texte' ] and '|' .. args[ 'texte' ] or '' ) .. ']]',
['message'] = '[[:Catégorie:Page contenant un appel à traduction d\'un article non spécifié|[modèle à corriger]]]',
['infobulle'] = 'Cet appel à traduction est à corriger car aucun titre de page n\'est spécifié.',
['catégorie'] = ( categorise and 'Page contenant un appel à traduction d\'un article non spécifié' or nil )
} }
end
local result = lien( nil, cible_fr, args[ 'texte' ] )
if ( mw.title.new( cible_fr ) or {} ).exists then
if categorise then
result = result .. frame:expandTemplate{ title = 'Lien/témoin', args = { cible_fr } }
end
return result
else
local lang = args[ 'langue' ] or args[ 'lang' ] or 'en'
if lang == 'd' then
local span = mw.html.create( 'span' )
:attr( 'class', 'indicateur-langue' )
:attr( 'title', 'Équivalent de l’article « ' .. cible_fr .. ' » sur Wikidata' )
:wikitext( '(d)' )
result = result .. ' ' .. lien( 'd', cible_trad, span )
else
local nomLangue = require( 'Module:Langue' ).nomLangue( lang )
if nomLangue:find( 'class="error"' ) then
local span = mw.html.create( 'span' )
:attr( 'class', 'indicateur-langue' )
:attr( 'title', 'Équivalent de l’article « ' .. cible_fr .. ' » dans une autre langue' )
:wikitext( '(' .. lang .. ')' )
result = result .. ' ' .. lien( lang, cible_trad, span )
.. '<span class="error">Erreur : langue non reconnue par le modèle Lien : « ' .. lang .. ' ».</span>'
if categorise then
result = result .. '[[Catégorie:Article contenant un appel à traduction avec un code langue inconnu|+]]'
end
else
local span = mw.html.create( 'span' )
:attr( 'class', 'indicateur-langue' )
:attr( 'title', 'Équivalent de l’article « ' .. cible_fr .. ' » en ' .. nomLangue )
:wikitext( '(' .. lang .. ')' )
result = result .. ' ' .. lien( lang, cible_trad, span )
end
end
if categorise then
result = result .. frame:expandTemplate{ title = 'Lien/catégorisation', args = { lang } }
end
return result
end
end
return p