local p = {}
function p.getTranscription(frame)
-- Загружаем аргументы
local new_args = p._getParameters( frame.args, {'vorto'} )
local vorto = new_args['vorto'] or ''
-- Если есть поэтическая эллизия, то удаляем апостроф и делаем пометку
-- на будущее
local vortlongo = string.len(vorto)
local finlitero = string.sub(vorto, vortlongo, vortlongo)
local elision = false
if finlitero == "'" then
vorto = string.sub(vorto, 1, vortlongo-1)
elision = true
end
-- Получаем массив слогов
local getSilaboj = require( "Module:по-слогам eo" ).getSilaboj
local silaboj = getSilaboj(vorto, true)
-- преобразовываем символы слогов по правилам фонетики эсперанто
local r = {}
for i,v in pairs(silaboj) do
table.insert(r, p.ReplaceSimbols(v))
end
if #r < 2 then
r[#r] = "'" .. r[#r]
else
if elision then
r[#r] = "'" .. r[#r]
else
r[#r-1] = "'" .. r[#r-1]
end
end
return table.concat(r, '.')
end
function p.ReplaceSimbols(s)
s = string.lower(s)
-- Дифтонги
s = string.gsub(s, "aj", "ai̯")
s = string.gsub(s, "aŭ", "au̯")
s = string.gsub(s, "ej", "ei̯")
s = string.gsub(s, "eŭ", "eu̯")
s = string.gsub(s, "oj", "oi̯")
s = string.gsub(s, "uj", "ui̯")
-- Гласные так и остаются соответствующими гласными
-- Согласные
-- s = string.gsub(s, "b", "b")
s = string.gsub(s, "c", "t͡s")
s = string.gsub(s, "ĉ", "t͡ʃ")
-- s = string.gsub(s, "d", "d")
-- s = string.gsub(s, "f", "f")
-- s = string.gsub(s, "g", "g")
s = string.gsub(s, "ĝ", "d͡ʒ")
-- s = string.gsub(s, "h", "h")
s = string.gsub(s, "ĥ", "x")
-- s = string.gsub(s, "j", "j")
s = string.gsub(s, "ĵ", "ʒ")
-- s = string.gsub(s, "k", "k")
-- s = string.gsub(s, "l", "l")
-- s = string.gsub(s, "m", "m")
-- s = string.gsub(s, "n", "n")
-- s = string.gsub(s, "p", "p")
-- s = string.gsub(s, "r", "r")
-- s = string.gsub(s, "s", "s")
s = string.gsub(s, "ŝ", "ʃ")
-- s = string.gsub(s, "t", "t")
-- s = string.gsub(s, "v", "v")
-- s = string.gsub(s, "z", "z")
return s
end
function p._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
return p