Aller au contenu

Module:transliterator

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

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

Invoqué dans {{transliterator}}.


local p = {}

local transtable = mw.loadData("Module:transliterator/data")

-- La fonction qui fait la translittération d'un mot d’une langue donnée
function p.translitteration_de(texte, langue)
    -- Vérification des arguments
    if (texte == nil or texte == '') then
        return "Pas de texte à translittérer"
    end
    if (langue == nil or langue == '') then
        return "Pas de code langue fourni"
    elseif (not transtable[langue]) then
        return "Mauvais code langue : " .. langue
    end
    
    -- On range les lettres translittérées dans cette table au fur et à mesure
    local resultat = {}
    
    -- Translittération de chaque lettre
    for codepoint in mw.ustring.gcodepoint(texte) do
        local lettre_base = mw.ustring.char(codepoint)
        
        -- Cette lettre est-elle dans les caractères communs ?
        if (transtable['common'][lettre_base]) then
            table.insert(resultat, transtable['common'][lettre_base])
        
        -- Sinon, est-elle dans la liste de la langue ?
        elseif (transtable[langue][lettre_base]) then
            table.insert(resultat, transtable[langue][lettre_base])
        
        -- Pas de translittération alors ? Message d'erreur.
        else
            return "Caractère non valide " .. lettre_base .. " pour le code de langue " .. langue .. "."
        end
    end
    
    return table.concat(resultat)
end

-- Fonction de modèle pour {{transliterator}}
function p.transliterate(frame)
    local args = frame:getParent().args
    local langue = args[1]
    local texte  = args[2]
    
    -- Pas de texte donné ? On utilise le nom de la page alors.
    if (texte == nil) then
        local article =  mw.title.getCurrentTitle()
        texte = article.text
    end
    
    return p.translitteration_de(texte, langue)
end
return p