Aller au contenu

Module:Utilisateur:SyntaxTerror

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

 Documentation[voir] [modifier] [historique] [purger]

Utilisateur:SyntaxTerror/Brouillon/Module


local Langue = { }
 
-- Chargement du de la base de donnée 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ée à minima en cas de bug sur le Module:Utilisateur:SyntaxTerror/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
 
-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle, 
-- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string.
-- Si aucun de ces argument ne contient de chaine, la fonction renvoie nil.
-- Si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule.
local function premierParametre( frame, lowerCase )
    local arg
    if type( frame ) == 'table' then
        arg = ( frame.getParent and ( frame.args[1] or frame:getParent().args[1] ) ) or frame[1]
    elseif type( frame ) == 'string' then
        arg = frame
    end
    if type( arg ) ~= 'string' then
        arg = nil
    end
    if arg and lowerCase then
        arg = mw.ustring.lower( mw.text.trim ( arg ) )
    end
    return arg
end
 
-- copie de premierParametre pour la 2e langue

local function secondParametre( frame, lowerCase )
    local arg
    if type( frame ) == 'table' then
        arg = ( frame.getParent and ( frame.args[4] or frame:getParent().args[4] ) ) or frame[4]
    elseif type( frame ) == 'string' then
        arg = frame
    end
    if type( arg ) ~= 'string' then
        arg = nil
    end
    if arg and lowerCase then
        arg = mw.ustring.lower( mw.text.trim ( arg ) )
    end
    return arg
end

-- Voir Modèle:Traduction/Référence (bientôt ;p)
-- Paramètres :
--    1 ou lang1 : code IETF de langue,
--    2 ou art1 : nom de l'article,
--    3 ou id1 : oldid de l'article
--    4 lang2 : code IETF de langue (2e article),
--    5 ou art2 : nom de l'article (2e article),
--    6 ou id2 : oldid de l'article (2e article).
 
function Langue.traductionReference(frame)
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }
    local codeLangue1 = args[1]
    local codeLangue2 = args[4]
    local codeLangue11 = args[1]
    local codeLangue22 = args[4]
    local nomArticle1 = args[2]
    local nomArticle2 = args[5]
    local oldId1 = args[3]
    local oldId2 = args[6]
    
-- correction des codes erronés : attribution du code pour le wikipédia à codeLangue11 et codeLangue22 (le code erroné est corrigé dans Langue/Data).
-- be-x-old => be-tarask : taraškievica (biélorusse)
-- als => gws            : alémanique / conflit avec le tosque
-- nrm => fra-nor        : normand / conflit avec le narum
-- les premiers sont les codes pour les wikis, les seconds les codes de langue corrects
    if codeLangue11 == "be-tarask" then
        codelangue11 = "be-x-old"
    end
    if codeLangue11 == "be-tarask" then
        codelangue11 = "be-x-old"
    end
    if codeLangue11 == "be-tarask" then
        codelangue11 = "be-x-old"
    end
    if codeLangue22 == "be-tarask" then
        codelangue2 = "be-x-old"
    end
    
-- teste si les oldId sont nuls ou ont une longueur différente de 9 chiffres.

    if nomArticle2 == nil then
        if oldId1 == nil or string.len( oldId1 ) ~= 9 then
            return '<span style="color:red;">Erreur dans {{m|Traduction/Référence}} : oldid invalide.</span> [[Catégorie:Page avec un oldid invalide|Reference]]'
        end
    else
        if oldId1 == nil or string.len( oldId1 ) ~= 9 then
            if oldId2 == nil or string.len( oldId2 ) ~= 9 then
                return '<span style="color:red;">Erreur dans {{m|Traduction/Référence}} : 1er et 2e oldid invalides.</span> [[Catégorie:Page avec un oldid invalide|Reference]]'
            else
                return '<span style="color:red;">Erreur dans {{m|Traduction/Référence}} : 1er oldid invalide.</span> [[Catégorie:Page avec un oldid invalide|Reference]]'
            end
        else
            if oldId2 == nil or string.len( oldId2 ) ~= 9 then
                return '<span style="color:red;">Erreur dans {{m|Traduction/Référence}} : 2e oldid invalide.</span> [[Catégorie:Page avec un oldid invalide|Reference]]'
            end
        end
    end
    
--donne les noms de langue selon les codes et renvoie des erreurs s'ils sont absents ou erronés.

-- 1re langue
    local arg = premierParametre( frame, true )
    if type( arg ) ~= 'string' or arg == '' then 
        return '<span style="color:red">Erreur dans {{Traduction/Référence}} : 1re langue non précisée. </span> [[Catégorie:Page avec code de langue invalide]]' 
    end
    local tabLangue = dataLangue[ arg ]
    local nom1
    if tabLangue then
        if type( tabLangue.page ) == 'string' then
            nom1 = tabLangue.page .. '|' .. tabLangue.nom
        else
            nom1 = tabLangue.nom
        end
    else
        return '<span style="color:red;">Erreur dans {{Traduction/Référence}} : 1re langue non reconnue : ' .. arg .. '.</span> [[Catégorie:Page avec code de langue invalide]]'
    end
    
-- 2e langue

        local arg2 = secondParametre( frame, true )
        if type( arg2 ) ~= 'string' or arg2 == '' then 
            return '<span style="color:red">Erreur dans {{Traduction/Référence}} : 2e langue non précisée. </span> [[Catégorie:Page avec code de langue invalide]]' 
        end
        local tabLangue = dataLangue[ arg2 ]
        local nom2
        if tabLangue then
            if type( tabLangue.page ) == 'string' then
                nom2 = tabLangue.page .. '|' .. tabLangue.nom
            else
                nom2 = tabLangue.nom
            end
        else
            return '<span style="color:red;">Erreur dans {{Traduction/Référence}} : 2e langue non reconnue : ' .. arg .. '.</span> [[Catégorie:Page avec code de langue invalide]]'
        end
    
-- compilation du texte

    if nomArticle2 == nil then
        local wikitext =  '* <span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
        .. nom1 .. '">'
        .. codeLangue1 .. '</abbr>)</span> Cet article est partiellement ou en totalité issu de l’article de Wikipédia en [[' 
        .. nom1 .. ']] intitulé « <span class="plainlinks">[https://'
        .. codeLangue1 .. '.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle1 , "WIKI" ) .. '?oldid='
        .. oldId1 .. ' '
        .. nomArticle1 ..']</span> » (voir la <span class="plainlinks">[https://en.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle1 , "WIKI" ) .. '?action=history liste des auteurs]</span>)'
        return wikitext
    else
        local wikitext = '* <span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
        .. nom1 .. '">'
        .. codeLangue1 .. '</abbr>)</span> Cet article est partiellement ou en totalité issu de l’article de Wikipédia en [[' 
        .. nom1 .. ']] intitulé « <span class="plainlinks">[https://'
        .. codeLangue1 .. '.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle1 , "WIKI" ) .. '?oldid='
        .. oldId1 .. ' '
        .. nomArticle1 ..']</span> » (voir la <span class="plainlinks">[https://en.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle1 , "WIKI" ) .. '?action=history liste des auteurs]</span>)\n* <span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
        .. nom2 .. '">'
        .. codeLangue2 .. '</abbr>)</span> Cet article est partiellement ou en totalité issu de l’article de Wikipédia en [[' 
        .. nom2 .. ']] intitulé « <span class="plainlinks">[https://'
        .. codeLangue2 .. '.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle2 , "WIKI" ) .. '?oldid='
        .. oldId2 .. ' '
        .. nomArticle2 ..']</span> » (voir la <span class="plainlinks">[https://en.wikipedia.org/wiki/'
        .. mw.uri.encode( nomArticle2 , "WIKI" ) .. '?action=history liste des auteurs]</span>)'
        return wikitext
    end 
end

return Langue