« Convertisseurs » : différence entre les versions
De Sèida
Autres actions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 4 : | Ligne 4 : | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
-- Tableau de correspondance Latin -> Èlyan | |||
-- Tableau de correspondance Latin -> Èlyan | -- Tableau de correspondance Latin -> Èlyan | ||
local latinToElyan = { | local latinToElyan = { | ||
["p"]="Ϥ", | ["p"]="Ϥ", | ||
["b"]=" | ["b"]="ც", | ||
["t"]="ϟ", | ["t"]="ϟ", | ||
["d"]=" | ["d"]="ქ", | ||
["k"]="Ϩ", | ["k"]="Ϩ", | ||
["g"]=" | ["g"]="ზ", | ||
["f"]="Ꜫ", | ["f"]="Ꜫ", | ||
["v"]="ϣ", | ["v"]="ϣ", | ||
["s"]="Ϭ", | ["s"]="Ϭ", | ||
["z"]=" | ["z"]="ჭ", | ||
["sh"]="ʒ", | ["sh"]="ʒ", | ||
["j"]=" | ["j"]="ჟ", | ||
["m"]=" | ["m"]="ლ", | ||
["n"]=" | ["n"]="დ", | ||
["l"]="ϻ", | ["l"]="ϻ", | ||
["r"]="ϻ°", | ["r"]="ϻ°", | ||
["c"]=" | ["c"]="ფ", | ||
["ch"]=" | ["ch"]="ჯ", | ||
["i"]=" | ["i"]="ე", | ||
["e"]=" | ["e"]="პ", | ||
["è"]=" | ["è"]="კ", | ||
["a"]=" | ["a"]="ძ", | ||
["u"]=" | ["u"]="ღ", | ||
["ù"]=" | ["ù"]="ა", | ||
["o"]=" | ["o"]="ბ", | ||
["ò"]=" | ["ò"]="ი", | ||
["y"]=" | ["y"]="ყ", | ||
["w"]=" | ["w"]="ს", | ||
["h"]=" | ["h"]="ჩ", | ||
-- Ponctuation | -- Ponctuation | ||
| Ligne 107 : | Ligne 108 : | ||
-- Exemples d'utilisation | -- Exemples d'utilisation | ||
local sampleLatin = " | local sampleLatin = "Belda’ ce fi che dannaek." | ||
local sampleElyan = toElyan(sampleLatin) | local sampleElyan = toElyan(sampleLatin) | ||
print("Latin -> Èlyan : " .. sampleElyan) | print("Latin -> Èlyan : " .. sampleElyan) | ||
local sampleElyan2 = " | local sampleElyan2 = "ცპϻქძ’ ფპ Ꜫე ჯპ ქძდდძპϨ。" | ||
local backToLatin = toLatin(sampleElyan2) | local backToLatin = toLatin(sampleElyan2) | ||
print("Èlyan -> Latin : " .. backToLatin) | print("Èlyan -> Latin : " .. backToLatin) | ||
</syntaxhighlight > | </syntaxhighlight > | ||
Version du 12 septembre 2025 à 17:43
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
-- Tableau de correspondance Latin -> Èlyan
local latinToElyan = {
["p"]="Ϥ",
["b"]="ც",
["t"]="ϟ",
["d"]="ქ",
["k"]="Ϩ",
["g"]="ზ",
["f"]="Ꜫ",
["v"]="ϣ",
["s"]="Ϭ",
["z"]="ჭ",
["sh"]="ʒ",
["j"]="ჟ",
["m"]="ლ",
["n"]="დ",
["l"]="ϻ",
["r"]="ϻ°",
["c"]="ფ",
["ch"]="ჯ",
["i"]="ე",
["e"]="პ",
["è"]="კ",
["a"]="ძ",
["u"]="ღ",
["ù"]="ა",
["o"]="ბ",
["ò"]="ი",
["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)