Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.
Version datée du 12 septembre 2025 à 17:44 par Admin (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Convertisseur Èlyan (en lettre latines) vers Èlyan

Il est possible d'utiliser facilement les convertisseurs suivants sur des sites de compilateur lua en ligne comme https://onecompiler.com/lua/

-- Tableau de correspondance Latin -> Èlyan
local latinToElyan = {
  -- Consonnes
  ["p"]="Ϥ", 
  ["b"]="ც", 
  ["t"]="ϟ", 
  ["d"]="ქ", 
  ["k"]="Ϩ", 
  ["g"]="ზ",
  ["f"]="Ꜫ", 
  ["v"]="ϣ", 
  ["s"]="Ϭ", 
  ["z"]="ჭ", 
  ["sh"]="ʒ", 
  ["j"]="ჟ",
  ["m"]="ლ", 
  ["n"]="დ", 
  ["l"]="ϻ", 
  ["r"]="ϻ°", 
  ["c"]="ფ",
  ["ch"]="ჯ",
  
  -- Voyelles
  ["i"]="ე",
  ["e"]="პ", 
  ["è"]="კ", 
  ["a"]="ძ", 
  ["u"]="ღ", 
  ["ù"]="ა",
  ["o"]="ბ",
  ["ò"]="ი",
  
  -- Glissantes
  ["y"]="ყ", 
  ["w"]="ს",
  ["h"]="ჩ",
  
  -- Ponctuation
  ["."]="。",
  ["..."]="…",
  ["!"]="!",
  ["?"]="?",
  [","]=",",
  [":"]=":",
  [";"]=";",
  ["'"]="’"
}

-- Tableau de correspondance Èlyan -> Latin
-- Attention : on met d'abord les symboles les plus longs pour gérer digrammes
local elyanToLatin = {}
local sortedKeys = {}

for k,v in pairs(latinToElyan) do
    elyanToLatin[v] = k
    table.insert(sortedKeys, v)
end

-- Trier par longueur décroissante pour gérer les symboles sur plusieurs caractères
table.sort(sortedKeys, function(a,b) return #a > #b end)

-- Fonction pour convertir du latin vers Elyan
local function toElyan(text)
    text = text:lower()
    local result = ""
    local i = 1
    while i <= #text do
        local two = text:sub(i,i+1)
        local one = text:sub(i,i)
        if latinToElyan[two] then
            result = result .. latinToElyan[two]
            i = i + 2
        elseif latinToElyan[one] then
            result = result .. latinToElyan[one]
            i = i + 1
        else
            result = result .. one
            i = i + 1
        end
    end
    return result
end

-- Fonction pour convertir de Elyan vers latin
local function toLatin(text)
    local result = ""
    local i = 1
    while i <= #text do
        local matched = false
        for _, key in ipairs(sortedKeys) do
            if text:sub(i,i+#key-1) == key then
                result = result .. elyanToLatin[key]
                i = i + #key
                matched = true
                break
            end
        end
        if not matched then
            result = result .. text:sub(i,i)
            i = i + 1
        end
    end
    return result
end

-- Exemples d'utilisation
local sampleLatin = "Belda’ ce fi che dannaek."
local sampleElyan = toElyan(sampleLatin)
print("Latin -> Èlyan : " .. sampleElyan)

local sampleElyan2 = "ცპϻქძ’ ფპ Ꜫე ჯპ ქძდდძპϨ。"
local backToLatin = toLatin(sampleElyan2)
print("Èlyan -> Latin : " .. backToLatin)