Module:Langue : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
m (A protégé « Module:Langue » : Modèle très utilisé ([Modifier=Autoriser uniquement les utilisateurs auto-confirmés] (infini) [Renommer=Autoriser uniquement les utilisateurs auto-confirmés] (infini)))
(relecture (« 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. » n'est pas très clair))
Ligne 3 : Ligne 3 :
 
     local datalangue = mw.loadData( 'Module:langue/Data' )
 
     local datalangue = mw.loadData( 'Module:langue/Data' )
  
-- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle,  
+
-- 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 direstement de string.
+
-- 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 renvoi nil
+
-- si aucun de ces argument ne contient de chaîne, la fonction renvoie nil.
-- si le deuxième paramètre est true, la chaine est rendue trimé et en minuscule.
+
-- si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule.
 
local function premierParametre ( frame, lowerCase )
 
local function premierParametre ( frame, lowerCase )
 
     local arg
 
     local arg
Ligne 23 : Ligne 23 :
 
end
 
end
  
-- voir Modèle:Direction langue
+
-- voir Modèle:Direction langue.
 
function langue.directionLangue ( frame )
 
function langue.directionLangue ( frame )
 
     local arg = premierParametre ( frame, true )
 
     local arg = premierParametre ( frame, true )
Ligne 37 : Ligne 37 :
 
end
 
end
  
-- voir Modèle:Code langue
+
-- voir Modèle:Code langue.
 
function langue.codeLangue ( frame )
 
function langue.codeLangue ( frame )
 
     local arg = premierParametre ( frame, true )
 
     local arg = premierParametre ( frame, true )
Ligne 44 : Ligne 44 :
 
end
 
end
  
-- voir Modèle:Code langue 2
+
-- voir Modèle:Code langue 2.
 
function langue.codeLangue2 ( frame )
 
function langue.codeLangue2 ( frame )
 
     local arg = premierParametre ( frame, true )
 
     local arg = premierParametre ( frame, true )
Ligne 51 : Ligne 51 :
 
end
 
end
  
-- voir Modèle:Nom langue
+
-- voir Modèle:Nom langue.
 
function langue.nomLangue ( frame )
 
function langue.nomLangue ( frame )
 
     local arg = premierParametre ( frame, true )
 
     local arg = premierParametre ( frame, true )
Ligne 58 : Ligne 58 :
 
end
 
end
  
-- voir Modèle:Lang
+
-- voir Modèle:Lang.
 
function langue.lang ( frame )
 
function langue.lang ( frame )
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }        -- préparation pour appel par modèle ou direct.
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }        -- préparation pour appel par modèle ou direct.
Ligne 71 : Ligne 71 :
 
     end
 
     end
  
     -- détection de la direction du texte
+
     -- détection de la direction du texte.
 
     if code == 'ltr' or code == 'rtl' then
 
     if code == 'ltr' or code == 'rtl' then
 
         dir = code
 
         dir = code
Ligne 85 : Ligne 85 :
 
     end
 
     end
  
     -- transliteration
+
     -- transliteration.
 
     if trans and trans ~= '' then
 
     if trans and trans ~= '' then
 
         trans = ' (<span class="lang-' .. code
 
         trans = ' (<span class="lang-' .. code
Ligne 95 : Ligne 95 :
 
     end
 
     end
  
     -- compilation du texte à retourner
+
     -- compilation du texte à retourner.
 
     if code == '' then
 
     if code == '' then
 
         wikiText = texte
 
         wikiText = texte
Ligne 106 : Ligne 106 :
 
     end
 
     end
  
     -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide
+
     -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide.
 
     for i, v in ipairs( datalangue.dataCodeInvalide ) do
 
     for i, v in ipairs( datalangue.dataCodeInvalide ) do
 
         if code == v then
 
         if code == v then
Ligne 130 : Ligne 130 :
 
end
 
end
  
-- voir Modèle:Indication de langue
+
-- voir Modèle:Indication de langue.
 
function langue.indicationDeLangue ( frame )
 
function langue.indicationDeLangue ( frame )
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
Ligne 157 : Ligne 157 :
 
end
 
end
  
-- voir Modèle:Langue avec nom
+
-- voir Modèle:Langue avec nom.
 
function langue.langueAvecNom ( frame )
 
function langue.langueAvecNom ( frame )
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
 
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
Ligne 166 : Ligne 166 :
 
     local wikiText = ''
 
     local wikiText = ''
  
     -- détection de la direction du texte
+
     -- détection de la direction du texte.
 
     if code == 'ltr' or code == 'rtl' then
 
     if code == 'ltr' or code == 'rtl' then
 
         dir = code
 
         dir = code
Ligne 173 : Ligne 173 :
 
     end
 
     end
 
      
 
      
     -- définition du nom de la langue en français
+
     -- définition du nom de la langue en français.
 
     local nom = langue.nomLangue { code }
 
     local nom = langue.nomLangue { code }
  

Version du 12 août 2013 à 03:06

La documentation pour ce module peut être créée à Module:Langue/doc

local langue = { }

    local datalangue = mw.loadData( 'Module:langue/Data' )

-- 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 chaîne, 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

-- voir Modèle:Direction langue.
function langue.directionLangue ( frame )
    local arg = premierParametre ( frame, true )

    local direction = 'ltr'
    for i, v in ipairs( datalangue.languesRtl ) do
        if arg == v then
            direction = 'rtl'
            break 
        end
    end
    return direction
end

-- voir Modèle:Code langue.
function langue.codeLangue ( frame )
    local arg = premierParametre ( frame, true )
    local code = datalangue.dataCodeLangue [ arg ]
    return code or arg or ''
end

-- voir Modèle:Code langue 2.
function langue.codeLangue2 ( frame )
    local arg = premierParametre ( frame, true )
    local code = datalangue.dataCodeLangue [ arg ]
    return code or ''
end

-- voir Modèle:Nom langue.
function langue.nomLangue ( frame )
    local arg = premierParametre ( frame, true )
    local nom = datalangue.dataNomLangue [ arg ] or '?????'
    return '[[' .. nom .. ']]'
end

-- voir Modèle:Lang.
function langue.lang ( frame )
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }         -- préparation pour appel par modèle ou direct.
    local code = mw.ustring.lower ( mw.text.trim( args [1] or '' ) )
    local texte = args.texte or ''
    local dir = mw.ustring.lower ( args.dir or '' )
    local trans = args.trans
    local wikiText = ''
    
    if texte == '' then
        texte = args [2] or ''
    end

    -- détection de la direction du texte.
    if code == 'ltr' or code == 'rtl' then
        dir = code
        code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
        texte = args [3] or ''
    end

    -- prépatation du rendu de direction du texte.
    if dir == 'ltr' or dir == 'rtl' then 
        dir = 'dir=' .. dir
    else
        dir = ''
    end

    -- transliteration.
    if trans and trans ~= '' then
        trans = ' (<span class="lang-' .. code
            .. ' transcription" lang="' .. code
            .. '-Latn" dir="ltr">' .. trans
            .. '</span>)'
    else
        trans = ''
    end

    -- compilation du texte à retourner.
    if code == '' then
        wikiText = texte
    else
        wikiText = '<span class="lang-' .. code
            .. '" lang="' .. code
            .. '" ' .. dir
            .. '>' .. texte
            .. '</span>' .. trans
    end

    -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide.
    for i, v in ipairs( datalangue.dataCodeInvalide ) do
        if code == v then
            local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }
            if namespaceCategorisation [ mw.site.namespaces.id ] then
                wikiText = wikiText .. '[[Catégorie:Page avec code de langue invalide]]'
                break 
            end
        end
    end   

    return wikiText
end

function langue.langue ( frame )
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }
    args [1] = langue.codeLangue ( args [1] )
    if not ( args.dir == 'ltr' or args.dir == 'rtl' ) then
        args.dir = langue.directionLangue ( args [1] )
    end

    return langue.lang ( args )
end

-- voir Modèle:Indication de langue.
function langue.indicationDeLangue ( frame )
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }
    local nomLangue = args [1] or ''
    local code = mw.ustring.lower ( args.langue or mw.text.trim( args [2] or '' ) )
    local texte = args.texte
    local dir = args.dir
    local wikiText = ''

    if nomLangue == '' then
        nomLangue = datalangue.dataNomLangue [ code ] or ''
    end

    if texte and texte ~= '' then
        texte = '&nbsp;' .. langue.lang { code, dir = dir, texte = texte }
    else
        texte = ''
    end

    wikiText = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
        .. nomLangue .. '">'
        .. code .. '</abbr>)</span>'
        .. texte

    return wikiText
end

-- voir Modèle:Langue avec nom.
function langue.langueAvecNom ( frame )
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }
    local code = mw.ustring.lower ( mw.text.trim ( args [1] or '') )
    local texte = args.texte or args [2] or ''
    local dir = args.dir
    local trans = args.trans
    local wikiText = ''

    -- détection de la direction du texte.
    if code == 'ltr' or code == 'rtl' then
        dir = code
        code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
        texte = args [3] or ''
    end
    
    -- définition du nom de la langue en français.
    local nom = langue.nomLangue { code }

    if texte ~= '' then
        texte = '&nbsp;' .. langue.lang { code, dir = dir, texte = texte, trans = trans }
    end

    wikiText = nom .. ' :' .. texte

    return wikiText
end

return langue