Module:User:Thadh/sandbox
Appearance
- This module sandbox lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • sandbox of
local export = {}
local m_IPA = require("Module:IPA")
local lang = require("Module:languages").getByCode("inh")
local rsub = mw.ustring.gsub
local rlower = mw.ustring.lower
local V = "[aʌɛiɨɪouæɔʊ]̯?ː?"
local C = "[ptkʡʔbdgzʒfsʃxmnlrcɟħqʁwj]ʼ?ˤ?̥?͡?"
local iot = { ["я"]="jа", ["е"]="jэ", ["ё"]="jо", ["ю"]="у" }
local cons = {
["п"]="p", ["т"]="t", ["к"]="k", ["ӏ"]="ʡ", ["ъ"]="ʔ",
["б"]="b", ["д"]="d", ["г"]="ɡ", ["з"]="z", ["ж"]="ʒ",
["ф"]="f", ["с"]="s", ["ш"]="ʃ", ["х"]="x",
["м"]="m", ["н"]="n", ["л"]="l", ["р"]="r",
}
local function phonetic(text)
text = rlower(text)
text = rsub(text, ".", iot)
-- vowels
text = rsub(text, "а̄", "a")
text = rsub(text, "аь", "æ")
text = rsub(text, "а", "ʌ")
text = rsub(text, "ӭ", "ʌ")
text = rsub(text, "э", "ɛ")
text = rsub(text, "ӣ", "i")
text = rsub(text, "и", "ɪ")
text = rsub(text, "ы", "ɨ")
text = rsub(text, "оа", "ɔ")
text = rsub(text, "о", "o")
text = rsub(text, "ӯ", "u")
text = rsub(text, "у", "ʊ")
-- semivowels
text = rsub(text, "й", "j")
text = rsub(text, "в", "w")
-- consonants
text = rsub(text, "([птцчк]ӏ", "%1ʼ")
text = rsub(text, "ќӏ", "ќʼ")
text = rsub(text, "къ", "кхʼ")
text = rsub(text, "кх", "q")
text = rsub(text, "ќ", "c")
text = rsub(text, "ѓ", "ɟ")
text = rsub(text, "хь", "ħ")
text = rsub(text, "хӏ", "h")
text = rsub(text, "гӏ", "ʁ")
text = rsub(text, "рхӏ", "r̥")
text = rsub(text, ".", cons)
text = rsub(text, "([bdgɟwzʒʁmnlrj])ʡ", "%1ˤ")
text = rsub(text, "ц", "t͡s")
text = rsub(text, "ч", "t͡ʃ")
-- phonetic vowels
text = rsub(text, "i(" .. C .. "*" .. V .. ")", "iː%1")
text = rsub(text, "i$", "iː")
text = rsub(text, "u(" .. C .. "*" .. V .. ")", "uː%1")
text = rsub(text, "u$", "uː")
text = rsub(text, "ɛ(" .. C .. "*" .. V .. ")", "iɛ̯%1")
text = rsub(text, "ɛ$", "iɛ̯")
text = rsub(text, "o(" .. C .. "*" .. V .. ")", "uo̯%1")
text = rsub(text, "o$", "uo̯")
text = rsub(text, "æ(" .. C .. "*" .. V .. ")", "ɛ̯æː")
text = rsub(text, "æ$", "ɛ̯æː")
text = rsub(text, "a(" .. C .. "*" .. V .. ")", "aː%1")
text = rsub(text, "a$", "aː")
text = rsub(text, "ɔ(" .. C .. "*" .. V .. ")", "ɔa̯")
text = rsub(text, "ɔ$", "ɔa̯")
text = rsub(text, "([ɟcj])ɪ", "%1i")
text = rsub(text, "ɪ([ɟcj])", "i%1")
text = rsub(text, "(" .. V .. "*" .. C .. "*)(" .. V .. ")", "%1ə")
end