Module:ii-pron
Appearance
- The following documentation is located at Module:ii-pron/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
Pronunciation module for Nuosu. See {{ii-pron}}
.
local export = {}
local translit = require("Module:ii-translit")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
local convert_initial = {
["b"] = "p", ["p"] = "pʰ", ["bb"] = "b", ["nb"] = "mb",
["hm"] = "m̥", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["d"] = "t", ["t"] = "tʰ", ["dd"] = "d", ["nd"] = "nd",
["hn"] = "n̥", ["n"] = "n", ["hl"] = "ɬ", ["l"] = "l",
["j"] = "tɕ", ["q"] = "tɕʰ", ["jj"] = "dʑ", ["nj"] = "ndʑ",
["ny"] = "n̠ʲ", ["x"] = "ɕj", ["y"] = "ʑ",
["g"] = "k", ["k"] = "kʰ", ["gg"] = "ɡ", ["mg"] = "ŋɡ",
["hx"] = "h", ["ng"] = "ŋ", ["h"] = "x", ["w"] = "ɣ",
["z"] = "ts", ["c"] = "tsʰ", ["zz"] = "dz",
["nz"] = "ndz", ["s"] = "s", ["ss"] = "z",
["zh"] = "tʂ", ["ch"] = "tʂʰ", ["rr"] = "dʐ",
["nr"] = "ndʐ", ["sh"] = "ʂ", ["r"] = "ʐ", [""] = "",
}
local convert_final = {
["i"] = "i", ["ie"] = "ɛ", ["a"] = "a",
["y"] = "z̩", ["yr"] = "z̩̱", ["e"] = "ɯ",
["Y"] = "ʐ̩", ["Yr"] = "ʐ̩̱",
["u"] = "u", ["ur"] = "u̱", ["o"] = "o", ["uo"] = "ɔ",
}
local convert_tone = {
["t"] = "˥˥", ["x"] = "˧˦", [""] = "˧˧", ["p"] = "˨˩"
}
function export.ipa(text)
text = string.lower(translit.tr(text))
local syllables = mw.text.split(text, " ")
for i, syllable in ipairs(syllables) do
if syllable == "w" then
syllables[i] = syllables[i-1]
else
local initial, final, tone = syllable:match("([bcdfghjklmnpqrstvwxyz]?[bdghjlmnrsxyz]?)([aeiouy][eor]?)([txp]?)$")
if (find(initial, "[zcs]h") or find(initial, "r")) and find(final, "^yr?$") then
final = gsub(final, "y", "Y")
end
syllables[i] = convert_initial[initial] .. convert_final[final] .. convert_tone[tone]
end
end
return table.concat(syllables, " ")
end
return export