Modulo:EbraicoTr
Aspetto
La documentazione per questo modulo può essere creata in Modulo:EbraicoTr/man
local p = {}
function p.traslittera(frame)
local args = frame.args or frame:getParent().args
local testo = args[1] or ""
if testo == "" then return "" end
local res = testo
-- ECCEZIONI PER TESTO NON VOCALIZZATO (pronuncia semplificata)
-- Gestisce le parole comuni quando mancano i segni diacritici
local eccezioni = {
{"ישוע", "yeshua"},
{"קם", "kam"},
{"לתחייה", "litchiya"},
{"יהוה", "yahweh"},
{"אלהים", "elohim"}
}
for _, v in ipairs(eccezioni) do
res = mw.ustring.gsub(res, v[1], v[2])
end
-- RIMOZIONE ACCENTI BIBLICI
res = mw.ustring.gsub(res, "[\214\145-\214\175]", "")
-- MATER LECTIONIS & VOCALI SPECIALI
local mater = {
{"וּ", "u"}, {"וֹ", "o"}, {"יִ", "i"},
{"וַ", "va"}, {"וְ", "ve"}, -- Congiunzione "ve"
{"ַח$", "ah"}, {"ַע$", "a‘"} -- Patah furtivum
}
for _, v in ipairs(mater) do
res = mw.ustring.gsub(res, v[1], v[2])
end
-- GESTIONE DAGHESH
-- B, P, K cambiano suono; le altre raddoppiano
res = mw.ustring.gsub(res, "בּ", "b")
res = mw.ustring.gsub(res, "פּ", "p")
res = mw.ustring.gsub(res, "כּ", "k")
-- Raddoppio meccanico (es. השמים -> ssh)
local raddoppio = {
{"גּ", "gg"}, {"דּ", "dd"}, {"הּ", "hh"}, {"זּ", "zz"}, {"טּ", "tt"},
{"לּ", "ll"}, {"מּ", "mm"}, {"נּ", "nn"}, {"סּ", "ss"}, {"צּ", "tz"},
{"קּ", "kk"}, {"רּ", "rr"}, {"שּ", "ssh"}, {"תּ", "tt"}
}
for _, v in ipairs(raddoppio) do
res = mw.ustring.gsub(res, v[1], v[2])
end
-- MAPPATURA CONSONANTI
local generic = {
{"א", ""}, {"ע", "‘"},
{"ב", "v"}, {"ג", "g"}, {"ד", "d"}, {"ה", "h"}, {"ז", "z"}, {"ח", "h"}, {"ט", "t"},
{"כ", "h"}, {"ל", "l"}, {"מ", "m"}, {"ם", "m"}, {"נ", "n"}, {"ן", "n"}, {"ס", "s"},
{"פ", "f"}, {"צ", "tz"}, {"ץ", "tz"}, {"ק", "k"}, {"ר", "r"}, {"שׁ", "sh"}, {"שׂ", "s"}, {"ש", "sh"}, {"ת", "t"},
-- Gestione Y/I (Punto 6)
{"^י", "y"}, {"%sי", " y"}, {"י", "i"},
-- Gestione Vav consonantica residua
{"ו", "v"}
}
for _, v in ipairs(generic) do
res = mw.ustring.gsub(res, v[1], v[2])
end
-- AFFINAMENTO VOCALI & SHEVA
local vocali = {
{"ָ", "a"}, {"ַ", "a"}, {"ֳ", "a"},
{"ֶ", "e"}, {"ֵ", "e"}, {"ֱ", "e"},
{"ִ", "i"}, {"ֹ", "o"}, {"ֳ", "o"},
{"ֻ", "u"},
-- Sheva (ְ): lo rendiamo "e" solo se non è a fine parola (muto)
{"ְ$", ""}, {"ְ%s", " "}, {"ְ", "e"}
}
for _, v in ipairs(vocali) do
res = mw.ustring.gsub(res, v[1], v[2])
end
-- PULIZIA FINALE
res = mw.ustring.lower(res)
res = mw.ustring.gsub(res, "[א-ת\214\128-\215\191]", "")
res = res:gsub("%s+", " "):gsub("^%s+", ""):gsub("%s+$", "")
local lrm = "\226\128\142"
return '<span dir="ltr">' .. lrm .. res .. lrm .. '</span>'
end
return p