Aller au contenu

Module:TranscriptGreekToLatin

La bibliothèque libre.

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

-- Fonction de transcription du grec vers le latin (ISO 843)
-- Utiliser {{#invoke:transcriptGreekToLatin|helloworld}}
-- Module : Transcript (a changer un fois le code fonctionel)
-- Fonctions : Greek to Latin, Hebrew to Latin etc...
-- en cours de codage le 13/12/2023 pour une intégration dans le modéle langue si possible
-- Module de transcription grec-latin selon le système ISO 843
local tableISO_843 = {
    ['Α'] = 'A', ['Ά'] = 'Á', ['Β'] = 'B', ['Γ'] = 'G', ['Δ'] = 'D',
    ['Ε'] = 'E', ['Έ'] = 'É', ['Ζ'] = 'Z', ['Η'] = 'I', ['Ή'] = 'Í',
    ['Θ'] = 'Th', ['Ι'] = 'I', ['Ί'] = 'Í', ['Ϊ'] = 'Ï', ['Κ'] = 'K',
    ['Λ'] = 'L', ['Μ'] = 'M', ['Ν'] = 'N', ['Ξ'] = 'X', ['Ο'] = 'O',
    ['Ό'] = 'Ó', ['Π'] = 'P', ['Ρ'] = 'R', ['Σ'] = 'S', ['Τ'] = 'T',
    ['Υ'] = 'Y', ['Ύ'] = 'Ý', ['Ϋ'] = 'Ÿ', ['Φ'] = 'F', ['Χ'] = 'Ch',
    ['Ψ'] = 'Ps', ['Ω'] = 'O', ['Ώ'] = 'Ó',

    ['α'] = 'a', ['ά'] = 'á', ['β'] = 'b', ['γ'] = 'g', ['δ'] = 'd',
    ['ε'] = 'e', ['έ'] = 'é', ['ζ'] = 'z', ['η'] = 'i', ['ή'] = 'í',
    ['θ'] = 'th', ['ι'] = 'i', ['ί'] = 'í', ['ϊ'] = 'ï', ['ΐ'] = 'ḯ',
    ['κ'] = 'k', ['λ'] = 'l', ['μ'] = 'm', ['ν'] = 'n', ['ξ'] = 'x',
    ['ο'] = 'o', ['ό'] = 'ó', ['π'] = 'p', ['ρ'] = 'r', ['σ'] = 's',
    ['ς'] = 's', ['τ'] = 't', ['υ'] = 'y', ['ύ'] = 'ý', ['ϋ'] = 'ÿ',
    ['ΰ'] = 'ÿ', ['φ'] = 'f', ['χ'] = 'ch', ['ψ'] = 'ps', ['ω'] = 'o',
    ['ώ'] = 'ó',
}
local Transcript = {};
function Transcript.TranscriptGreekToLatin(frame)
    local greekLetters = {'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω',
                          'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'}
    local latinLetters = {'A', 'B', 'G', 'D', 'E', 'Z', 'H', 'Th', 'I', 'K', 'L', 'M', 'N', 'X', 'O', 'P', 'R', 'S', 'T', 'Y', 'F', 'Ch', 'Ps', 'O',
                          'a', 'b', 'g', 'd', 'e', 'z', 'h', 'th', 'i', 'k', 'l', 'm', 'n', 'x', 'o', 'p', 'r', 's', 't', 'u', 'f', 'ch', 'ps', 'o'}

    local result = ''
--# donne la longueur de la chaîne
    for i = 1, #frame.args[1] do
        local letter = frame.args[1]:sub(i, i)
        local index 
        
		    for j = 1, #greekLetters do
		        if greekLetters[j] == letter then
		            index = j
		            break
		        end
		    end

        if index then
            result = result .. latinLetters[index]
        else
            result = result .. letter
        end
    end

    return result
end
return Transcript;