« Module:Langues » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Commentaires, un peu d'espace
Rangement, fonctions d'affichage et de récupération du nom dans les trois cas : nom local, nom Wikimédia, et complémentation des deux
Ligne 1 : Ligne 1 :
local p = {}
local p = {}


-- AFFICHAGE DES LANGUES
-- Wikimédia a une liste des codes langues avec leur nom en français : autant en profiter
-- Cherche la langue dans notre liste locale.
-- Fonction de module.
function p.get_nom_local(code)
if (code == nil) then return nil end
-- Récupère la table
local wlangues = mw.loadData('Module:langues/data')
-- Récupère le nom de langue, s'il y est
if (wlangues[code] and wlangues[code]['nom']) then
return wlangues[code]['nom']
else
return nil
end
end

-- RCherche la langue dans la liste de Wikimedia.
function p.get_nom_wikimedia(code)
function p.get_nom_wikimedia(code)
if (code) then
if (code) then
return mw.language.fetchLanguageName(code, 'fr')
local langue = mw.language.fetchLanguageName(code, 'fr') -- fr = nom en français
-- Langue trouvée ? On renvoit nil si c'est vide, pas ''
if (langue ~= nil and langue ~= '') then
return langue
else
return nil
end
else
else
return nil
return nil
Ligne 11 : Ligne 33 :
end
end


-- Renvoit le nom d'une langue.
-- Invocation directe.
function p.affiche_nom_wikimedia(frame)
return p.get_nom_wikimedia(frame.args[1])
end

-- Fonction de module. Récupère le nom d'une langue à partir de son code.
function p.get_nom(code)
function p.get_nom(code)
if (code == nil) then return nil end
if (code == nil) then return nil end
-- Notre propre liste de langue (prioritaire)
-- Essaye d'abord de trouver la langue localement
local wlangues = mw.loadData('Module:langues/data')
local langue_local = p.get_nom_local(code)
-- Code défini chez nous?
-- Trouvé localement ?
if (wlangues[code] ~= nil) then
if (langue_local ~= nil) then
local nom = wlangues[code]['nom']
return langue_local
return nom
end
-- Pas trouvé localement : regarde dans la liste Wikimédia
local nom = p.get_nom_wikimedia(code)
-- Renvoit le résultat, qu'il s'agisse du nom, ou de nil
return nom
end

-- AFFICHAGE DES LANGUES
-- Affiche directement le nom de la langue.
function p.affiche_nom(frame, methode)
local code = frame.args[1]
if (code == nil) then
return 'Pas de code langue donné'
end
-- Récupère la langue selon la méthode demandée
local langue = nil
if (methode == 'local') then
langue = p.get_nom_local(code)
elseif(methode == 'wikimedia') then
langue = p.get_nom_wikimedia(code)
else
else
langue = p.get_nom(code)
-- Non défini chez nous: essaye la liste Wikimédia
local nom = p.get_nom_wikimedia(code)
-- On ne renvoit quelque chose que si le nom existe
if (nom ~= nil and nom ~= '') then
return nom
else
return nil
end
end
end
-- A-t-on un résultat ?
if (langue ~= nil and langue ~= '') then
return langue
else
return 'Pas de langue pour le code ' .. code
end
end

-- Affiche directement le nom de la langue local.
function p.affiche_nom_local(frame)
return p.affiche_nom(frame, 'local')
end

-- Affiche directement le nom de la langue Wikimedia.
function p.affiche_nom_wikimedia(frame)
return p.affiche_nom(frame, 'wikimedia')
end
end



Version du 16 mars 2013 à 21:17

La documentation pour ce module peut être créée à Module:Langues/Documentation

local p = {}

-- AFFICHAGE DES LANGUES
-- Cherche la langue dans notre liste locale.
function p.get_nom_local(code)
    if (code == nil) then return nil end
    
    -- Récupère la table
    local wlangues = mw.loadData('Module:langues/data')
    
    -- Récupère le nom de langue, s'il y est
    if (wlangues[code] and wlangues[code]['nom']) then
        return wlangues[code]['nom']
    else
        return nil
    end
end

-- RCherche la langue dans la liste de Wikimedia.
function p.get_nom_wikimedia(code)
    if (code) then
        local langue = mw.language.fetchLanguageName(code, 'fr') -- fr = nom en français
        
        -- Langue trouvée ? On renvoit nil si c'est vide, pas ''
        if (langue ~= nil and langue ~= '') then
            return langue
        else
            return nil
        end
    else
        return nil
    end
end

-- Renvoit le nom d'une langue.
function p.get_nom(code)
    if (code == nil) then return nil end
    
    -- Essaye d'abord de trouver la langue localement
    local langue_local = p.get_nom_local(code)
    
    -- Trouvé localement ?
    if (langue_local ~= nil) then
        return langue_local
    end
    -- Pas trouvé localement : regarde dans la liste Wikimédia
    local nom = p.get_nom_wikimedia(code)
    -- Renvoit le résultat, qu'il s'agisse du nom, ou de nil
    return nom
end

-- AFFICHAGE DES LANGUES
-- Affiche directement le nom de la langue.
function p.affiche_nom(frame, methode)
    local code = frame.args[1]
    if (code == nil) then
        return 'Pas de code langue donné'
    end
    
    -- Récupère la langue selon la méthode demandée
    local langue = nil
    if (methode == 'local') then
        langue = p.get_nom_local(code)
    elseif(methode == 'wikimedia') then
        langue = p.get_nom_wikimedia(code)
    else
        langue = p.get_nom(code)
    end
    
    -- A-t-on un résultat ?
    if (langue ~= nil and langue ~= '') then
        return langue
    else
        return 'Pas de langue pour le code ' .. code
    end
end

-- Affiche directement le nom de la langue local.
function p.affiche_nom_local(frame)
    return p.affiche_nom(frame, 'local')
end

-- Affiche directement le nom de la langue Wikimedia.
function p.affiche_nom_wikimedia(frame)
    return p.affiche_nom(frame, 'wikimedia')
end

return p