Module:Utilisateur:SyntaxTerror/2
[voir] [modifier] [historique] [purger]
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.
local TraductionReference= { }
-- Chargement du de la base de données des langues avec gestion d'erreur.
local dataLangue
local success, resultat = pcall (mw.loadData, 'Module:Langue/Data' )
if success then
dataLangue = resultat
else
-- Base de données à minima en cas de bug sur le Module:Langue/Data
dataLangue = { en = { code = 'en', nom = anglais },
de = { code = 'de', nom = 'allemand' },
it = { code = 'it', nom = 'italien' },
es = { code = 'es', nom = 'espagnol' }, }
dataLangue.anglais = dataLangue.en
dataLangue.allemand = dataLangue.de
dataLangue.italien = dataLangue.it
dataLangue.espagnol = dataLangue.es
end
-- fonction principale : traductionReference
function TraductionReference.traductionReference(frame)
local args = frame:getParent().args
-- nettoyage et mise en minuscules de lang1 et lang2
local lang1 = args[1] or args["lang"] or args["Lang"] or args["lang1"] or args["Lang1"] or ''
lang1 = mw.ustring.lower( mw.text.trim( lang1 ) )
local lang2 = args[4] or args["lang2"] or args["Lang2"] or ''
lang2 = mw.ustring.lower( mw.text.trim( lang2 ) )
-- teste si les codes de langues sont des codes de wikipédias existants et si la page est bien dans l'espace principal
local art2 = args[5] or args["art2"] or args["Art2"] or ''
art2 = mw.text.trim( art2 )
local wikilist = { 'en' , 'nl' , 'de' , 'sv' , 'it' , 'es' , 'ru' , 'pl' , 'ja' , 'jp' , 'vi' , 'pt' , 'zh' , 'ceb' , 'war' , 'uk' , 'ca' , 'no' , 'fi' , 'fa' , 'cs' , 'ko' , 'hu' , 'ar' , 'ro' , 'ms' , 'sr' , 'tr' , 'id' , 'kk' , 'aa' , 'ab' , 'ace' , 'af' , 'ak' , 'als' , 'am' , 'an' , 'ang' , 'arc' , 'arz' , 'as' , 'ast' , 'av' , 'ay' , 'az' , 'ba' , 'bar' , 'bat-smg' , 'bcl' , 'be' , 'be-x-old' , 'bg' , 'bh' , 'bi' , 'bjn' , 'bm' , 'bn' , 'bo' , 'bpy' , 'br' , 'bs' , 'bug' , 'bxr' , 'bck-zam' , 'cdo' , 'ce' , 'ch' , 'cho' , 'chr' , 'chy' , 'ckb' , 'co' , 'cr' , 'crh' , 'csb' , 'cu' , 'cv' , 'da' , 'diq' , 'dsb' , 'dv' , 'dz' , 'ee' , 'el' , 'eml' , 'eo' , 'et' , 'eu' , 'ext' , 'ff' , 'fiu-vro' , 'fj' , 'fo' , 'fr' , 'frp' , 'frr' , 'fur' , 'fy' , 'ga' , 'gag' , 'gan' , 'gd' , 'gl' , 'glk' , 'gn' , 'got' , 'gu' , 'gv' , 'ha' , 'hak' , 'haw' , 'he' , 'hi' , 'hif' , 'ho' , 'hr' , 'hsb' , 'ht' , 'hy' , 'hz' , 'ia' , 'ie' , 'ig' , 'ii' , 'ik' , 'ilo' , 'io' , 'is' , 'iu' , 'jbo' , 'jv' , 'ka' , 'kaa' , 'kab' , 'kbd' , 'kg' , 'ki' , 'kj' , 'kl' , 'km' , 'kn' , 'koi' , 'kr' , 'krc' , 'ks' , 'ksh' , 'ku' , 'kv' , 'kw' , 'ky' , 'la' , 'lad' , 'lb' , 'lbe' , 'lez' , 'lg' , 'li' , 'lij' , 'lmo' , 'ln' , 'lo' , 'lt' , 'ltg' , 'lv' , 'map-bms' , 'mdf' , 'mg' , 'mh' , 'mhr' , 'mi' , 'min' , 'mk' , 'ml' , 'mn' , 'mo' , 'mr' , 'mrj' , 'mt' , 'mus' , 'mwl' , 'my' , 'myv' , 'mzn' , 'na' , 'nah' , 'nap' , 'nds' , 'nds-nl' , 'ne' , 'new' , 'ng' , 'nn' , 'nov' , 'nrm' , 'nso' , 'nv' , 'ny' , 'oc' , 'om' , 'or' , 'os' , 'pa' , 'pag' , 'pam' , 'pap' , 'pcd' , 'pdc' , 'pfl' , 'pi' , 'pih' , 'pms' , 'pnb' , 'pnt' , 'ps' , 'qu' , 'rm' , 'rmy' , 'rn' , 'roa-rup' , 'roa-tara' , 'rue' , 'rw' , 'sa' , 'sah' , 'sc' , 'scn' , 'sco' , 'sd' , 'se' , 'sg' , 'sh' , 'si' , 'simple' , 'sk' , 'sl' , 'sm' , 'sn' , 'so' , 'sq' , 'srn' , 'ss' , 'st' , 'stq' , 'su' , 'sw' , 'szl' , ' ta' , 'te' , 'tet' , 'tg' , 'th' , 'ti' , 'tk' , 'tl' , 'tn' , 'to' , 'tpi' , 'ts' , 'tt' , 'tum' , 'tw' , 'ty' , 'tyv' , 'udm' , 'ug' , 'ur' , 'uz' , 've' , 'vec' , 'vep' , 'vls' , 'vo' , 'wa' , 'wo' , 'wuu' , 'xal' , 'xh' , 'xmf' , 'yi' , 'yo' , 'za' , 'zea' , 'zh-classical' , 'zh-min-nan' , 'zh-yue' , 'zu' }
local langinvalide1 = '* <span style="color:red">Erreur dans {{Traduction/Référence}} : le code de langue '
.. lang1 .. ' ne correspond à aucun Wikipédia.</span>' -- [[Catégorie:Page avec code de langue invalide|' .. lang1 .. ']]'
local langinvalide2 = '* <span style="color:red">Erreur dans {{Traduction/Référence}} : le code de langue '
.. lang2 .. ' ne correspond à aucun Wikipédia.</span>' -- [[Catégorie:Page avec code de langue invalide|' .. lang2 .. ']]'
if lang1 == '' then
langinvalide1 = '* <span style="color:red">Erreur dans {{Traduction/Référence}} : le code de langue du 1<sup>er</sup> article n’est pas précisé.</span>' -- [[Catégorie:Page avec code de langue invalide| ]]'
end
if lang2 == '' then
langinvalide2 = '* <span style="color:red">Erreur dans {{Traduction/Référence}} : le code de langue du 2<sup>e</sup> article n’est pas précisé.</span>' -- [[Catégorie:Page avec code de langue invalide| ]]'
end
local x = 0
repeat -- teste toutes les clefs valides de la liste
x = x+1
if lang1 == wikilist [ x ] then
langinvalide1 = ''
end
if lang2 == wikilist [ x ] or art2 == '' then
langinvalide2 = ''
end
until wikilist [ x ] == nil
if langinvalide1 ~='' or langinvalide2 ~= '' then
return langinvalide1 .. '\n' .. langinvalide2
end
-- 1re langue
-- mise de lang1 dans wiki1 dans la cas où il ne correspond pas au code de langue IETF correct
local wiki1 = lang1
-- correction du code dans deux cas car il utilise celui d'une autre langue,
-- si le code est juste incorrect, il sera corrigé par les alias de Module:Langue/Data
if lang1 == 'als' then
lang1 = 'gws'
end
-- définition du nom de la langue et du code IETF correct
local tabLangue1 = dataLangue[ lang1 ]
local nom1
lang1 = tabLangue1.nom -- lang1 devient le nom de la langue
if lang1 == 'narum' then
lang1 = 'normand'
end
local code1 = tabLangue1.code -- code1 devient le code IETF correct pour la langue
if type( tabLangue1.page ) == 'string' then
nom1 = tabLangue1.page .. '|' .. tabLangue1.nom -- lang1 devient le nom de la langue lié à son article si celui-ci n'a pas le même nom
else
nom1 = tabLangue1.nom -- sinon, nom1 devient le nom de la langue
end
-- catégorisation dans « Page avec un oldid invalide » (invisible) s'il n'y a pas d'oldid ou s'il n'est pas un nombre
local id1 = args[3] or args["id"] or args["Id"] or args["id1"] or args["Id1"] or args["oldid"] or args["Oldid"] or args["oldid1"] or args["Oldid1"] or ''
id1 = mw.text.trim( id1 )
id1 = tonumber ( id1 ) or ''
local erreurid = ''
if id1 == '' then
id1 = '[[Catégorie:Page avec un oldid invalide|Reference]]'
erreurid = '<span style="color:red;"> oldid invalide ou manquant.<sup><small>[[Aide:Oldid|(Aide)]]</small></sup></span>'
end
-- paramètre "type" existe?
local debut = '* '
local fin = ''
local typ = args["type"] or args["note"] or ''
typ = mw.text.trim( typ )
if typ ~= '' then
debut = '<span style="padding-left: 1.2em;">'
fin = '</span>'
end
-- paramètre "projet" ou "projet1" rogné si existant, sinon = 'wikipedia'
local projet1 = args["projet"] or args["Projet"] or args["projet1"] or args["Projet1"] or 'wikipedia'
projet1 = mw.text.trim( projet1 )
local nomProjet1 = 'Wikipédia'
if projet1 ~= 'wikipedia' then
nomProjet1 = projet1
end
-- création du texte à renvoyer
local art1 = args[2] or args["art"] or args["Art"] or args["art1"] or args["Art1"] or ''
art1 = mw.text.trim( art1 )
local wikitext = debut .. '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
.. lang1 .. '">'
.. code1 .. '</abbr>)</span> Cet article est issu partiellement ou en totalité de l’article de '
.. nomProjet1 .. ' en [['
.. nom1 .. ']] intitulé « <span class="plainlinks" lang="'
.. code1 .. '">[http://'
.. wiki1 .. '.'
.. projet1 .. '.org/wiki/'
.. mw.uri.encode( art1 , "WIKI" ) .. '?oldid='
.. id1 .. ' '
.. art1 .. ']</span> » <small>(<span class="plainlinks">[http://'
.. wiki1 .. '.wiki.x.io/wiki/'
.. mw.uri.encode( art1 , "WIKI" ) .. '?action=history voir la liste des auteurs]</span>)</small>'
.. fin .. erreurid
-- <span class="plainlinks" lang="{{{1}}}">
-- 2e langue (si existante)
if art2 ~= '' then
-- mise de lang1 dans wiki1 dans la cas où il ne correspond pas au code de langue IETF correct
local wiki2 = lang2
-- correction du code dans deux cas car il utilise celui d'une autre langue,
-- si le code de wikipédia ne correspond pas au code de langue IETF, il sera corrigé par les alias de Module:Langue/Data
if lang2 == 'als' then
lang2 = 'gws'
end
if lang2 == 'nrm' then
lang2 = 'fra-nor'
end
-- définition du nom de la langue et du code IETF correct
local tabLangue2 = dataLangue[ lang2 ]
local nom2
lang2 = tabLangue2.nom -- lang1 devient le nom de la langue
local code2 = tabLangue2.code -- code1 devient le code IETF correct pour la langue
if type( tabLangue2.page ) == 'string' then
nom2 = tabLangue2.page .. '|' .. tabLangue2.nom -- lang1 devient le nom de la langue lié à son article si celui-ci n'a pas le même nom
else
nom2 = tabLangue2.nom -- sinon, nom1 devient le nom de la langue
end
-- catégorisation dans « Page avec un oldid invalide » (invisible) s'il n'y a pas d'oldid ou s'il n'est pas un nombre + indication après le texte
local id2 = args[6] or args["id2"] or args["Id2"] or args["oldid2"] or args["Oldid2"] or ''
id2 = mw.text.trim( id2 )
id2 = tonumber ( id2 ) or ''
if id2 == '' then
id2 = '[[Catégorie:Page avec un oldid invalide|Reference]]'
erreurid = ' <span style="color:red;"> oldid invalide ou manquant.<sup><small>[[Aide:Oldid|(Aide)]]</small></sup></span>'
end
-- paramètre "projet2" rogné si existant, sinon = 'wikipedia'
local projet2 = args["projet2"] or 'wikipedia'
projet2 = mw.text.trim( projet2 )
-- création du texte à renvoyer (replacement du texte pour un seul article car la syntaxe est différente)
wikitext = debut .. '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
.. lang1 .. '">'
.. code1 .. '</abbr>)/(<abbr class="abbr" title="Langue : '
.. lang2 .. '">'
.. code2 .. '</abbr>)</span> Cet article est issu partiellement ou en totalité des articles de Wikipédia intitulés en [['
.. nom1 .. ']] « <span class="plainlinks" lang="'
.. code1 .. '">[http://'
.. wiki1 .. '.'
.. projet1 .. '.org/wiki/'
.. mw.uri.encode( art1 , "WIKI" ) .. '?oldid='
.. id1 .. ' '
.. art1 .. ']</span> » <small>(<span class="plainlinks">[http://'
.. wiki1 .. '.wiki.x.io/wiki/'
.. mw.uri.encode( art1 , "WIKI" ) .. '?action=history voir la liste des auteurs]</span>)</small> et en [['
.. nom2 .. ']] « <span class="plainlinks" lang="'
.. code2 .. '">[http://'
.. wiki2 .. '.'
.. projet2 .. '.org/wiki/'
.. mw.uri.encode( art2 , "WIKI" ) .. '?oldid='
.. id2 .. ' '
.. art2 .. ']</span> » <small>(<span class="plainlinks">[http://'
.. wiki2 .. '.wiki.x.io/wiki/'
.. mw.uri.encode( art2 , "WIKI" ) .. '?action=history voir la liste des auteurs]</span>)</small>'
.. fin .. erreurid
end
-- renvoi du texte
return wikitext
end
return TraductionReference