local ev = require 'lib.samp.events'
-- Таблица соответствия звуков (транслит -> кириллица)
local translit_map = {
["shch"] = "щ", ["sh"] = "ш", ["ch"] = "ч", ["yo"] = "ё", ["ya"] = "я", ["yu"] = "ю", ["zh"] = "ж",
["a"] = "а", ["b"] = "б", ["v"] = "в", ["g"] = "г", ["d"] = "д", ["e"] = "е", ["z"] = "з",
["i"] = "и", ["j"] = "й", ["k"] = "к", ["l"] = "л", ["m"] = "м", ["n"] = "н", ["o"] = "о",
["p"] = "п", ["r"] = "р", ["s"] = "с", ["t"] = "т", ["u"] = "у", ["f"] = "ф", ["h"] = "х",
["c"] = "ц", ["y"] = "ы", ["'"] = "ь", ["ee"] = "и"
}
function ev.onSendChat(message)
-- Если сообщение начинается с / (команда), не трогаем его
if message:sub(1, 1) == "/" then return {message} end
local new_msg = message:lower()
-- Сначала заменяем сложные сочетания (sh, ch и т.д.)
for k, v in pairs({["shch"]="щ", ["sh"]="ш", ["ch"]="ч", ["yo"]="ё", ["ya"]="я", ["yu"]="ю", ["zh"]="ж"}) do
new_msg = new_msg:gsub(k, v)
end
-- Затем заменяем одиночные буквы
for k, v in pairs(translit_map) do
-- Чтобы не заменять уже замененное, проверяем длину ключа
if #k == 1 then
new_msg = new_msg:gsub(k, v)
end
end
return {new_msg}
end