182
edits
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
local word = type(frame) == "table" and frame.args[1] or frame | local word = type(frame) == "table" and frame.args[1] or frame | ||
-- go from orthography to one-to-one | -- go from orthography to a one-to-one phonemic map | ||
word = string.gsub(word, "aa", "ā") | |||
word = string.gsub(word, "áa", "â") | |||
word = string.gsub(word, "aá", "ǎ") | |||
word = string.gsub(word, "aai", "Ā") | |||
word = string.gsub(word, "áai", "Â") | |||
word = string.gsub(word, "aái", "Ǎ") | |||
word = string.gsub(word, "ai", "A") | |||
word = string.gsub(word, "ái", "Á") | |||
word = string.gsub(word, "mb", "B") | word = string.gsub(word, "mb", "B") | ||
word = string.gsub(word, "ei", "ē") | |||
word = string.gsub(word, "éi", "ê") | |||
word = string.gsub(word, "eí", "ě") | |||
word = string.gsub(word, "nd", "D") | word = string.gsub(word, "nd", "D") | ||
word = string.gsub(word, "ng", "G") | word = string.gsub(word, "ng", "G") | ||
word = string.gsub(word, "ḫ", "H") | word = string.gsub(word, "ḫ", "H") | ||
word = string.gsub(word, "ii", "ī") | word = string.gsub(word, "ii", "ī") | ||
word = string.gsub(word, "íi", "î") | word = string.gsub(word, "íi", "î") | ||
word = string.gsub(word, "ií", "ǐ") | word = string.gsub(word, "ií", "ǐ") | ||
word = string.gsub(word, " | word = string.gsub(word, "oi", "I") | ||
word = string.gsub(word, " | word = string.gsub(word, "ói", "Í") | ||
word = string.gsub(word, " | word = string.gsub(word, "jh", "J") | ||
word = string.gsub(word, "nkk", "Kk") | |||
word = string.gsub(word, "ou", "ō") | word = string.gsub(word, "ou", "ō") | ||
word = string.gsub(word, "óu", "ô") | word = string.gsub(word, "óu", "ô") | ||
word = string.gsub(word, "oú", "ǒ") | word = string.gsub(word, "oú", "ǒ") | ||
word = string.gsub(word, "aao", "Ō") | word = string.gsub(word, "aao", "Ō") | ||
word = string.gsub(word, "áao", "Ô") | word = string.gsub(word, "áao", "Ô") | ||
Line 34: | Line 35: | ||
word = string.gsub(word, "ao", "O") | word = string.gsub(word, "ao", "O") | ||
word = string.gsub(word, "áo", "Ó") | word = string.gsub(word, "áo", "Ó") | ||
word = string.gsub(word, " | word = string.gsub(word, "mp", "P") | ||
word = string.gsub(word, " | word = string.gsub(word, "ntt", "Tt") | ||
word = mw.text.split(word, "", true) | word = mw.text.split(word, "", true) | ||
Line 93: | Line 93: | ||
for i,val in ipairs(stresses) do | for i,val in ipairs(stresses) do | ||
syllables = syllables + 1 | syllables = syllables + 1 | ||
if | if val == "ˈ" then | ||
pos = i | pos = i | ||
end | end | ||
Line 102: | Line 102: | ||
-- mark secondary stress | -- mark secondary stress | ||
for i,val in ipairs(stresses) do | for i,val in ipairs(stresses) do | ||
if | if val == "." and (i ~= syllables) then | ||
if (i - pos) % 2 == 0 then | if (i - pos) % 2 == 0 then | ||
table.insert(newStresses, "ˌ") | table.insert(newStresses, "ˌ") | ||
else | else | ||
table.insert(newStresses, | table.insert(newStresses, ".") | ||
end | end | ||
else | else | ||
Line 119: | Line 119: | ||
if (i == 1) and val == "." and newStresses[1] == "." then | if (i == 1) and val == "." and newStresses[1] == "." then | ||
index = index + 1 | index = index + 1 | ||
elseif | elseif val == "." or val == "ˈ" then | ||
table.insert(newWord, newStresses[index]) | table.insert(newWord, newStresses[index]) | ||
index = index + 1 | index = index + 1 | ||
Line 130: | Line 130: | ||
newWord = {} | newWord = {} | ||
-- allophonic rules | -- allophonic rules, i.e., from a one-to-one phonemic map to a one-to one | ||
-- phonetic map | |||
for i,val in ipairs(word) do | for i,val in ipairs(word) do | ||
if val == "a" then | if val == "a" then | ||
if word[i-1] == nil then | if word[i-1] == nil then | ||
table.insert(newWord, "w") | table.insert(newWord, "w") | ||
elseif word[i-1] == "ˌ" then | |||
table.insert(newWord, "a") | |||
elseif word[i-1] == "." then | |||
table.insert(newWord, "w") | |||
elseif word[i-2] == nil then | |||
table.insert(newWord, "w") | |||
elseif word[i-2] == "ˌ" then | |||
table.insert(newWord, "a") | |||
else | else | ||
table.insert(newWord, | table.insert(newWord, "w") | ||
end | end | ||
else | else | ||
Line 146: | Line 154: | ||
word = table.concat(newWord) | word = table.concat(newWord) | ||
-- go from one-to-one | -- go from one-to-one phonetic map to IPA | ||
word = string.gsub(word, "ā", "aː") | word = string.gsub(word, "ā", "aː") | ||
word = string.gsub(word, "â", "âː") | word = string.gsub(word, "â", "âː") |
edits