local export = {}
local u = mw.ustring.char
local gsub = mw.ustring.gsub
local RRA = u(0x0B5C)
local RHA = u(0x0B5D)
local consonants = {
['କ']='k', ['ଖ']='kʰ', ['ଗ']='ɡ', ['ଘ']='ɡʱ', ['ଙ']='ŋ',
['ଚ']='t͡ʃ', ['ଛ']='t͡ʃʰ', ['ଜ']='d͡ʒ', ['ଝ']='d͡ʒʱ', ['ଞ']='ɲ',
['ଟ']='ʈ', ['ଠ']='ʈʰ', ['ଡ']='ɖ', [RRA]='ɽ', ['ଢ']='ɖʱ', [RHA]='ɽʱ', ['ଣ']='ɳ',
['ତ']='t', ['ଥ']='tʰ', ['ଦ']='d', ['ଧ']='dʱ', ['ନ']='n',
['ପ']='p', ['ଫ']='pʰ', ['ବ']='b', ['ଭ']='bʱ', ['ମ']='m',
['ଯ']='d͡ʒ', ['ୟ']='j', ['ର']='ɾ', ['ଲ']='l', ['ଳ']='ɭ', ['ଵ']='ʋ', ['ୱ']='w',
['ଶ']='s', ['ଷ']='s', ['ସ']='s', ['ହ']='h',
}
local diacritics = {
['ା']= 'a', ['ି']='i', ['ୀ']='i', ['ୁ']='u', ['ୂ']='u',
['େ']='e', ['ୈ']='ɔi̯', ['ୋ']='o', ['ୌ']='ɔu̯',
['ୃ']='ɾu', ['ୄ']='ɾu', ['ୢ']='lu', ['ୣ']='lu',
['୍']='', [''] = 'ɔ',
}
local nonconsonants = {
['ଅ']='ɔ', ['ଆ']='a', ['ଇ']='i', ['ଈ']='i', ['ଉ']='u', ['ଊ']='u',
['ଏ']='e', ['ଐ']='ɔi̯', ['ଓ']='o', ['ଔ']='ɔu̯', ['ଉ']='u', ['ଊ']='u',
['ଋ']='ɾu', ['ୠ']='ɾu', ['ଌ']='lu', ['ୡ']='lu',
}
function export.to_IPA(text)
-- join broken nuqta
text = gsub(text, 'ଡ଼', RRA)
text = gsub(text, 'ଢ଼', RHA)
text = gsub(
text,
'([କ-ହ'..RRA..RHA..'ୟୱ])([ା-୍]?)([ଁଂ]?)',
function(c, d, a)
return consonants[c] .. diacritics[d] .. (a ~= '' and u(0x0303) or '')
end)
text = gsub(
text,
'([ଅ-ଔୠୡ])([ଁଂ]?)',
function(n, a)
return nonconsonants[n] .. (a ~= '' and u(0x0303) or '')
end)
return text
end
function export.show(frame)
local args = frame:getParent().args
local page_title = mw.title.getCurrentTitle().text
local text = args[1] or page_title
local qualifier = args['q'] or nil
local transcription = export.to_IPA(text)
local IPA_text
IPA_text = require('Module:IPA').format_IPA_full(
require('Module:languages').getByCode('or'),
{ { pron = '/' .. transcription .. '/' } })
return '* ' .. (qualifier and require("Module:qualifier").format_qualifier{qualifier} .. ' ' or '')
.. IPA_text
end
return export