Aller au contenu

Module:Langue

Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 26 juillet 2013 à 19:28 et modifiée en dernier par Zebulon84 (discuter | contributions) (Nouvelle page : local langue = { } local datalangue = mw.loadData( 'Module:langue/Data' ) -- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été transmi par au mo...). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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

Utilisation

Fonctions exportables :

  • codeLangue(frame) : Convertit en code de langue IETF les noms français de langues les plus couramment citées.
  • codeLangue2(frame) : Similaire à codeLangue à une exception près : si le nom de la langue ne se trouve pas dans la liste qui suit, le modèle n'affiche rien.
  • directionLangue(frame) : Convertit en code de direction (rtl ou ltr) les codes ou noms français de langues.
  • lienLangue(frame) : À partir d'un code de langue, retourne un lien avec le nom descriptif de celle-ci et pointant vers son article.
  • nomLangue(frame) : À partir d'un code de langue, retourne le nom descriptif de celle-ci.
  • articleLangue(frame) : À partir d'un code de langue, retourne le titre de l'article concernant celle-ci.
  • lang(frame) : Indique la langue d’un texte dans le code HTML, notamment pour les synthétiseurs vocaux et l’indexation correcte des inclusions de mots en langue différente par les moteurs de recherche.
  • langue(frame) : Similaire à lang mais permet d’employer dans certains cas le nom de la langue en toutes lettres.
  • indicationDeLangue(frame) : Utilisable comme métamodèle pour créer des indications de langue (cf. (), ()etc.).
  • indicationMultilingue(frame) : Similaire à indicationDeLangue à l'exception qu'elle indique plusieurs langues. Sans paramètre, Erreur de script : la fonction « indicationMultilingue » n’existe pas. est indiqué.
  • langueAvecNom(frame) : Indique le nom de la langue avant un court texte dans une langue donnée et met le texte en langue étrangère entre balises xml:lang. Similaire à indicationDeLangue mais avec la détermination automatique du nom et de la direction de la langue. Elle est donc un peu moins rapide.
  • tableauLangues(frame) : Génère un tableau triable de la liste des langues disponibles dans Module:langue/Data.

Documentation TODO #1 - la fonction langue est maintenant un alias de la fonction lang (cf. 95780265#L-157 et 133914320)

Documentation TODO #2 - liste exhaustive (en date du ) des fonctions exposées publiquement mais ne figurant pas dans la liste au-dessus ; documenter celles ayant effectivement besoin de l'être :

  • determinationCode(langue)
  • nonLatin(frame)
  • erreurModuleData()
  • listeCodeAlias()
  • listeAliasCode()

Modules externes et autres éléments dont ce module a besoin pour fonctionner :

  • Module:Langue/Data : Base de données avec les codes et les noms des langues les plus courantes.

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

Voir aussi

local langue = { }

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

-- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été transmi par au modèle, au module par invoke, ou à l'intérieur d'un module sous forme de string dans un tableau ou direstement de string.
-- si le deuxième paramètre est true, la chaine est rendue trimé et en minuscule.
local function premierParametre ( frame, lowerCase )
    local arg
    if type ( frame ) == 'table' then
        arg = ( frame.args and frame.args [1] ) or frame [1] or ''
    elseif type ( frame ) == 'string' then
        arg = frame
    end
    if type ( arg ) ~= 'string' then
        arg = ''
    end
    if 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
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.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 args [2] or ''
    local dir = mw.ustring.lower ( args.dir or '' )
    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.texte or 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
    wikiText = '<span class="lang-' .. code
            .. '" lang="' .. code
            .. '" ' .. dir
            .. '>' .. texte
            .. '</span>' .. trans

    -- 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
            wikiText = wikiText .. '[[Catégorie:Page avec code de langue invalide]]'
            break 
        end
    end   

    return wikiText
end

-- voir Modèle:Langue
function langue.langue ( frame )
    local args = frame.args or frame or { }
    args [1] = langue.codeLangue ( args [1] )
    args.dir = args.dir or langue.directionLangue ( args [1] )
    return langue.lang ( args )
end

-- voir Modèle:Indication de langue
function langue.indicationDeLangue ( frame )
    local args = frame.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 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.args or frame or { }
    local code = mw.ustring.lower ( args.lang or mw.text.trim ( args [1] or '') )
    local texte = args.texte or args [2]
    local dir = args.dir
    local wikiText = ''

    -- définition du nom de la langue en français
    local nom = langue.nomLangue { code }

    -- 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.texte or args [3] or ''
    end

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

    wikiText = nom .. ' :' .. texte

    return wikiText
end
 
return langue