Module:kpy-IPA

local export = {}

local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("kpy") local rsub = mw.ustring.gsub local rlower = mw.ustring.lower

local function phonetic(text) text = rlower(text) text = rsub(text, "ы", "ə") text = rsub(text, "и", "i") text = rsub(text, "э", "E") text = rsub(text, "е", "jE") text = rsub(text, "а", "a") text = rsub(text, "я", "ja") text = rsub(text, "у", "ʊ") text = rsub(text, "ю", "jʊ") text = rsub(text, "о", "o") text = rsub(text, "ё", "jo") text = rsub(text, "п", "p") text = rsub(text, "т", "t") text = rsub(text, "ч", "ћ") text = rsub(text, "к", "k") text = rsub(text, "ӄ", "q") text = rsub(text, "вʼ", "w") text = rsub(text, "в", "ʋ") text = rsub(text, "гʼ", "ʕ") text = rsub(text, "г", "ɣ") text = rsub(text, "л", "l") text = rsub(text, "м", "m") text = rsub(text, "н", "n") text = rsub(text, "ӈ", "ŋ") -- palatals text = rsub(text, "t([kɣŋ])", "c%1") text = rsub(text, "t([ьj])", "c") text = rsub(text, "l([ьj])", "ʎ") text = rsub(text, "n([ьj])", "ɲ") text = rsub(text, "([чћ])([ьj])", "%1") text = rsub(text, "й", "j") text = rsub(text, "ъ", "") -- glottal stop text = rsub(text, "^([əiEaʊo])", "ʔ%1") text = rsub(text, "([əiEaʊo])([əiEaʊo])", "%1ʔ%2") -- vowel phonetic text = rsub(text, "iŋ", "ɪŋ") text = rsub(text, "i$", "ɪ") text = rsub(text, "i ", "ɪ ") text = rsub(text, "Eŋ", "ɛŋ") text = rsub(text, "E([cћɲʎj])", "e%1") text = rsub(text, "aŋ", "ɑŋ") text = rsub(text, "a$", "ɐ") text = rsub(text, "a ", "ɐ ") text = rsub(text, "a([cћɲʎj])", "æ%1") text = rsub(text, "ʊŋ", "uŋ") text = rsub(text, "o$", "ɔ") text = rsub(text, "o ", "ɔ ") -- consonants phonetic text = rsub(text, "p([iɪEɛe])", "pʲ%1") text = rsub(text, "p$", "ʰp") text = rsub(text, "p ", "ʰp ") text = rsub(text, "ћ([kɣŋ])", "ч%1") text = rsub(text, "ћ$", "ч") text = rsub(text, "ћ ", "ч ") text = rsub(text, "k$", "ʰk") text = rsub(text, "k ", "ʰk ") text = rsub(text, "ʋ([iɪ])", "ʋʲ%1") text = rsub(text, "n([iɪ])", "nʲ%1") -- final conversions text = rsub(text, "([ptkqчћwʋʕɣlmnŋ])%1", "%1ː") text = rsub(text, "E", "e̞") text = rsub(text, "ч", "t͡ʃ̺") text = rsub(text, "ћ", "t͡ʃ") text = rsub(text, "ʎ", "lʲ")

return text end

function export.IPA(frame) local words = {} for _, word in ipairs(frame:getParent.args) do		table.insert(words, word) end if #words == 0 then words = {mw.title.getCurrentTitle.text} end local IPA_results = {} for _, word in ipairs(words) do table.insert(IPA_results, { pron = "[" .. phonetic(word) .. "]" }) end return m_IPA.format_IPA_full { lang = lang, items = IPA_results } end

return export