Aller au contenu

Module:Utilisateur:SyntaxTerror/2

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 20 août 2013 à 05:43 et modifiée en dernier par SyntaxTerror (discuter | contributions) (liste codes wiki). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]
local TraductionReference= { }

-- Liste des codes des Wikipédias.

local wikilist = { 'aa', 'ab', 'ace', 'af', 'ak', 'als', 'am', 'an', 'ang', 'ar', 'arc', 'arz', 'as', 'ast', 'av', 'ay', 'az', 'ba', 'bar', 'bat-smg', 'bcl', 'be', 'ne-x-old', 'bg', 'bh', 'bi', 'bjn', 'bm', 'bn', 'bo', 'bpy', 'br', 'bs', 'bug', 'bxr', 'ca', 'bck-zam', 'cadeau', 'ce', 'ceb', 'ch', 'cho', 'chr', 'chy', 'ckb', 'co', 'cr', 'crh', 'cs', 'csb', 'cu', 'cv', 'da', 'de', 'diq', 'dsb', 'dv', 'dz', 'ee', 'el', 'eml', 'en', 'eo', 'es', 'et', 'eu', 'ext', 'fa', 'ff', 'fi', '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', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'io', 'is', 'it', 'iu', 'ja', 'jbo', 'jv', 'ka', 'kaa', 'kab', 'kbd', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', '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', 'ms', 'mt', 'mus', 'mwl', 'my', 'myv', 'mzn', 'na', 'nah', 'nap', 'nds', 'nds-nl', 'ne', 'new', 'ng', 'nl', 'nn', 'no', 'nov', 'nrm', 'nso', 'nv', 'ny', 'oc', 'om', 'or', 'os', 'pa', 'pag', 'pam', 'pap', 'pcd', 'pdc', 'pfl', 'pi', 'pih', 'pl', 'pms', 'pnb', 'pnt', 'ps', 'pt', 'qu', 'rm', 'rmy', 'rn', 'ro', 'roa-rup', 'roa-tara', 'ru', 'rue', 'rw', 'sa', 'sah', 'sc', 'scn', 'sco', 'sd', 'se', 'sg', 'sh', 'si', 'simple', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'srn', 'ss', 'st', 'stq', 'su', 'sv', 'sw', 'szl', ' ta', 'te', 'tet', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tpi', 'tr', 'ts', 'tt', 'tum', 'tw', 'ty', 'tyv', 'udm', 'ug', 'uk', 'ur', 'uz', 've', 'vec', 'vep', 'vi', 'vls', 'vo', 'wa', 'war', 'wo', 'wuu', 'xal', 'xh', 'xmf', 'yi', 'yo', 'za', 'zea', 'zh', 'zh-classical', 'zh-min-nan', 'zh-yue', 'zu' }

-- Chargement du de la base de données des langues avec gestion d'erreur.
local dataLangue
local success, resultat = pcall (mw.loadData, 'Module:Utilisateur:SyntaxTerror/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
        
-- 1re langue

-- nettoyage et mise en minuscules de lang1

    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 ) )
    
-- message d'erreur si la langue n'est pas indiquée
    
    if lang1 == '' then
        return '<span style="color:red"> Erreur dans {{Traduction/Référence}} :'
        .. 'langue non précisée. </span> [[Catégorie:Page avec code de langue invalide]]' 
    end
 
-- 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
    if lang1 == 'nrm' then
        lang1 = 'fra-nor'
    end

-- définition du nom de la langue et du code IETF correct

    local tabLangue1 = dataLangue[ lang1 ]
    local nom1
 
    if tabLangue1 then
        lang1 = tabLangue1.nom                              -- lang1 devient le nom de la langue
        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
    else
        return '<span style="color:red;"> Erreur dans {{Traduction/Référence}} : langue non reconnue : '
        .. lang1 .. ' </span>[[Catégorie:Page avec code de langue invalide]]'
    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["id1"] or args["Id1"] or args["oldid"] or args["Oldid"] or args["oldid1"] or args["Oldid1"] or ''
    id1 = mw.text.trim( id1 )
    local erreurid = ''
    if id1 == '' or tonumber( id1 ) ~= 'number' then
        id1 = '[[Catégorie:Page avec un oldid invalide|Reference]]'
        erreurid = '<span style="color:red;"> oldid invalide.</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 )
    
-- 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 Wikipédia 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 .. '.wikipedia.org/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)    

    local art2 = args[5] or args["art2"] or args["Art2"] or ''
    art2 = mw.text.trim( mw.uri.encode( art2 , "WIKI" ) )
    if art2 ~= '' then
        
-- nettoyage et mise en minuscules de lang2

        local lang2 = args[4] or args["lang2"] or args["Lang2"] or ''
        lang2 = mw.ustring.lower( mw.text.trim( lang2 ) )
         
-- message d'erreur si la langue n'est pas indiquée
 
        if lang2 == '' then
            return '<span style="color:red"> Erreur dans {{Traduction/Référence}} :'
            .. 'langue non précisée. </span> [[Catégorie:Page avec code de langue invalide]]' 
        end
 
-- 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 est juste incorrect, 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
     
        if tabLangue2 then
            lang2 = tabLangue2.nom                              -- lang1 devient le nom de la langue
            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
        else
            return '<span style="color:red;"> Erreur dans {{Traduction/Référence}} : langue non reconnue : '
            .. lang2 .. ' </span>[[Catégorie:Page avec code de langue invalide]]'
        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 id2 = args[6] or args["id2"] or args["Id2"] or args["oldid2"] or args["Oldid2"] or ''
            id2 = mw.text.trim( id2 )
        if id2 == '' or tonumber( id2 ) ~= 'number' then
            id2 = '[[Catégorie:Page avec un oldid invalide|Reference]]'
            erreurid = '<span style="color:red;"> oldid invalide.</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/'
        .. art1 .. '?oldid='
        .. id1 .. ' '
        .. mw.uri.decode( art1 , "WIKI" ) .. ']</span> » <small>(<span class="plainlinks">[http://'
        .. wiki1 .. '.wikipedia.org/wiki/'
        .. art1 .. '?action=history voir la liste des auteurs]</span>)</small> et en [['
        .. nom2 .. ']] « <span class="plainlinks" lang="'
        .. code2 .. '">[http://'
        .. wiki2 .. '.'
        .. projet2 .. '.org/wiki/'
        .. art2 .. '?oldid='
        .. id2 .. ' '
        .. mw.uri.decode( art2 , "WIKI" ) .. ']</span> » <small>(<span class="plainlinks">[http://'
        .. wiki2 .. '.wikipedia.org/wiki/'
        .. art2 .. '?action=history voir la liste des auteurs]</span>)</small>'
        .. fin .. erreurid
    end

-- renvoi du texte

    return wikitext
    
end
    
return TraductionReference