Module:my-pron

Hello, you have come here looking for the meaning of the word Module:my-pron. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:my-pron, but we will also tell you about its etymology, its characteristics and you will know how to say Module:my-pron in singular and plural. Everything you need to know about the word Module:my-pron you have here. The definition of the word Module:my-pron will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:my-pron, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

Burmese pronunciation and romanisation module. See {{my-IPA}}.

Testcases

See Module:my-pron/testcases.


local export = {}
local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local match = mw.ustring.match

local system_list = {
	{ 1,  = "phonetic",		 = "IPA" },
	{ 2,  = "orthographic",	 = "MLCTS" },
	{ 3,  = "orthographic",	 = "ALA-LC" },
	{ 4,  = "phonetic",		 = "BGN/PCGN" },
	{ 5,  = "phonetic",		 = "Okell" },
}

local initial_table = {
		=	{ "k", "k", "k", "k", "k" },
		=	{ "t͡ɕ", "ky", "ky", "ky", "c" },
		=	{ "t͡ɕ", "kr", "kr", "ky", "c" },
		=	{ "t͡ɕw", "kyw", "kyv", "kyw", "cw" },
		=	{ "t͡ɕw", "krw", "krv", "kyw", "cw" },
		=	{ "kw", "kw", "kv", "kw", "kw" },
		=	{ "kʰ", "hk", "kh", "hk", "hk" },
		=	{ "t͡ɕʰ", "hky", "khy", "ch", "hc" },
		=	{ "t͡ɕʰ", "hkr", "khr", "ch", "hc" },
		=	{ "t͡ɕʰw", "hkyw", "khyv", "chw", "hcw" },
		=	{ "t͡ɕʰw", "hkrw", "khrv", "chw", "hcw" },
		=	{ "kʰw", "hkw", "khv", "hkw", "hkw" },
		=	{ "ɡ", "g", "g", "g", "g" },
		=	{ "d͡ʑ", "gy", "gy", "gy", "j" },
		=	{ "d͡ʑ", "gr", "gr", "gy", "j" },
		=	{ "d͡ʑw", "gyw", "gyv", "gyw", "jw" },
		=	{ "ɡw", "gw", "gv", "gw", "gw" },
		=	{ "ɡ", "gh", "gh", "g", "g" },
		=	{ "ŋ", "ng", "ṅ", "ng", "ng" },
		=	{ "ŋ̊", "hng", "ṅh", "hng", "hng" },
		=	{ "ɲ", "ngr", "ṅr", "ny", "ny" },
		=	{ "ɲ̊", "hngr", "ṅrh", "hny", "hny" },
		=	{ "ŋw", "ngw", "ṅv", "ngw", "ngw" },
		=	{ "ŋ̊w", "hngw", "ṅvh", "hngw", "hngw" },
		=	{ "s", "c", "c", "s", "s" },
		=	{ "sw", "cw", "cv", "sw", "sw" },
		=	{ "sʰ", "hc", "ch", "hs", "hs" },
		=	{ "sʰw", "hcw", "chv", "hsw", "hsw" },
		=	{ "z", "j", "j", "z", "z" },
		=	{ "zw", "jw", "jv", "zw", "zw" },
		=	{ "z", "jh", "jh", "z", "z" },
		=	{ "ɲ", "ny", "ñ", "ny", "ny" },
		=	{ "ɲ", "ny", "ññ", "ny", "ny" },
		=	{ "ɲ̊", "hny", "ñh", "hny", "hny" },
		=	{ "ɲ̊", "hny", "ññh", "hny", "hny" },
		=	{ "ɲw", "nyw", "ñv", "nyw", "nyw" },
		=	{ "ɲ̊w", "hnyw", "ñvh", "hnyw", "hnyw" },
		=	{ "t", "t", "ṭ", "t", "t" },
		=	{ "tʰ", "ht", "ṭh", "ht", "ht" },
		=	{ "d", "d", "ḍ", "d", "d" },
		=	{ "d", "dh", "ḍh", "d", "d" },
		=	{ "n", "n", "ṇ", "n", "n" },
		=	{ "n̥", "hn", "ṇh", "hn", "hn" },
		=	{ "t", "t", "t", "t", "t" },
		=	{ "tj", "ty", "ty", "ty", "ty" },
		=	{ "tɹ", "tr", "tr", "tr", "tr" },
		=	{ "tw", "tw", "tv", "tw", "tw" },
		=	{ "tʰ", "ht", "th", "ht", "ht" },
		=	{ "tʰw", "htw", "thv", "htw", "htw" },
		=	{ "d", "d", "d", "d", "d" },
		=	{ "dj", "dy", "dy", "dy", "dy" },
		=	{ "dɹ", "dr", "dr", "dr", "dr" },
		=	{ "dw", "dw", "dv", "dw", "dw" },
		=	{ "d", "dh", "dh", "d", "d" },
		=	{ "n", "n", "n", "n", "n" },
		=	{ "n̥", "hn", "nh", "hn", "hn" },
		=	{ "nj", "ny", "ny", "ny", "ny" },
		=	{ "nw", "nw", "nv", "nw", "nw" },
		=	{ "n̥w", "hnw", "nvh", "hnw", "hnw" },
		=	{ "p", "p", "p", "p", "p" },
		=	{ "pj", "py", "py", "py", "py" },
		=	{ "pj", "pr", "pr", "py", "py" },
		=	{ "pw", "prw", "prv", "pw", "pw" },
		=	{ "pw", "pw", "pv", "pw", "pw" },
		=	{ "pʰ", "hp", "ph", "hp", "hp" },
		=	{ "pʰj", "hpy", "phy", "hpy", "hpy" },
		=	{ "pʰj", "hpr", "phr", "hpy", "hpy" },
		=	{ "pʰw", "hpw", "phv", "hpw", "hpw" },
		=	{ "b", "b", "b", "b", "b" },
		=	{ "bj", "by", "by", "by", "by" },
		=	{ "bj", "br", "br", "by", "by" },
		=	{ "bw", "bw", "bv", "bw", "bw" },
		=	{ "b", "bh", "bh", "b", "b" },
		=	{ "pʰ", "bh", "bh", "hp", "hp" },
		=	{ "bw", "bhw", "bhv", "bw", "bw" },
		=	{ "pʰw", "bhw", "bhw", "hpw", "hpw" },
		=	{ "m", "m", "m", "m", "m" },
		=	{ "m̥", "hm", "mh", "hm", "hm" },
		=	{ "mj", "my", "my", "my", "my" },
		=	{ "m̥j", "hmy", "myh", "hmy", "hmy" },
		=	{ "mj", "mr", "mr", "my", "my" },
		=	{ "m̥j", "hmr", "mrh", "hmy", "hmy" },
		=	{ "mjw", "mrw", "mrv", "myw", "myw" },
		=	{ "m̥w", "hmrw", "mrvh", "hmw", "hmw" },
		=	{ "mw", "mw", "mv", "mw", "mw" },
		=	{ "m̥w", "hmw", "mvh", "hmw", "hmw" },
		=	{ "j", "y", "y", "y", "y" },
		=	{ "ʃ", "hy", "yh", "sh", "hy" },
	 = { "ʃ", "hsy", "syh", "sh", "hy" },
		=	{ "jw", "yw", "yv", "yw", "yw" },
		=	{ "j", "r", "r", "y", "y" },
		=	{ "ɹ", "r", "r", "r", "r" },
		=	{ "ʃ", "hr", "rh", "sh", "hy" },
		=	{ "jw", "rw", "rv", "yw", "yw" },
		=	{ "ʃw", "hrw", "rvh", "shw", "hyw" },
		=	{ "l", "l", "l", "l", "l" },
		=	{ "l̥", "hl", "lh", "hl", "hl" },
		=	{ "j", "ly", "ly", "y", "y" },
	 = { "j", "hsy", "syh", "y", "y" },
		=	{ "lj", "ly", "ly", "ly", "ly" },
		=	{ "ʃ", "hly", "lyh", "sh", "hy" },
		=	{ "l̥j", "hly", "lyh", "hly", "hly" },
		=	{ "lw", "lw", "lv", "lw", "lw" },
		=	{ "l̥w", "hlw", "lvh", "hlw", "hlw" },
		=	{ "w", "w", "v", "w", "w" },
		=	{ "ʍ", "hw", "vh", "hw", "hw" },
		=	{ "θ", "s", "s", "th", "th" },
		=	{ "ð", "s", "s", "dh", "th" },
		=	{ "θw", "sw", "sv", "thw", "thw" },
		=	{ "ðw", "sw", "sw", "dhw", "thw" },
		=	{ "h", "h", "h", "h", "h" },
		=	{ "hw", "hw", "hv", "hw", "hw" },
		=	{ "l", "l", "ḷ", "l", "l" },
		=	{ "ʔ", "", "ʼ", "", "" },
	-- only appears after a vowel in the same word
		=	{ "ʔθ", "ss", "ss", "tth", "ʔth" },
		=	{ "ʔ", "", "", "", "" },
		=	{ "", "", "", "", "" },
	
		=	{ nil, "y", "y", nil, nil },
		=	{ nil, "r", "r", nil, nil },
		=	{ nil, "w", "w", nil, nil },
}

local initial_voicing = {
		=	"ဂ", 
		=	"ဂ", 
		=	"ဇ", 
		=	"ဇ", 
		=	"ဍ", 
		=	"ဍ", 
		=	"ဒ", 
		=	"ဒ", 
		=	"ဗ", 
		=	"ဗ", 
		=	"ဖ",
}

local final_table = {
		=	{ "a̰", "a.", "a", "a.", "á" },
		=	{ "ɛʔ", "ak", "akʻ", "et", "eʔ" },
		=	{ "ɪ̀ɴ", "ang", "aṅʻ", "in", "iñ" },
		=	{ "ɪʔ", "ac", "acʻ", "it", "iʔ" },
		=	{ "ì", "any", "aññʻ", "i", "i" },
		=	{ "è", "any", "aññʻ", "e", "ei" },
		=	{ "ɛ̀", "any", "aññʻ", "è", "e" },
		=	{ "ɪ̀ɴ", "any", "añʻ", "in", "iñ" },
		=	{ "aʔ", "at", "atʻ", "at", "aʔ" },
		=	{ "àɴ", "an", "anʻ", "an", "añ" },
		=	{ "aʔ", "ap", "apʻ", "at", "aʔ" },
		=	{ "àɴ", "am", "amʻ", "an", "añ" },
		=	{ "ɛ̀", "ai", "ayʻ", "è", "e" },
		=	{ "àɴ", "am", "aṃ", "an", "añ" },
		=	{ "à", "a", "ā", "a", "a" },
		=	{ "à", "a", "ā", "a", "a" },
		=	{ "ḭ", "i.", "i", "i.", "í" },
		=	{ "eɪʔ", "it", "itʻ", "eik", "eiʔ" },
		=	{ "èɪɴ", "in", "inʻ", "ein", "eiñ" },
		=	{ "eɪʔ", "ip", "ipʻ", "eik", "eiʔ" },
		=	{ "èɪɴ", "im", "imʻ", "ein", "eiñ" },
		=	{ "èɪɴ", "im", "iṃ", "ein", "eiñ" },
		=	{ "ì", "i", "ī", "i", "i" },
		=	{ "ṵ", "u.", "u", "u.", "ú" },
		=	{ "oʊʔ", "ut", "utʻ", "ok", "ouʔ" },
		=	{ "òʊɴ", "un", "unʻ", "on", "ouñ" },
		=	{ "oʊʔ", "up", "upʻ", "ok", "ouʔ" },
		=	{ "òʊɴ", "um", "umʻ", "on", "ouñ" },
		=	{ "òʊɴ", "um", "uṃ", "on", "ouñ" },
		=	{ "ù", "u", "ū", "u", "u" },
		=	{ "è", "e", "e", "e", "ei" },
		=	{ "ɛ́", "ai:", "ai", "è:", "è" },
		=	{ "ɔ́", "au:", "o", "aw:", "ò" },
		=	{ "aʊʔ", "auk", "okʻ", "auk", "auʔ" },
		=	{ "àʊɴ", "aung", "oṅʻ", "aung", "auñ" },
		=	{ "ɔ̀", "au", "oʻ", "aw", "o" },
		=	{ "ò", "ui", "ui", "o", "ou" },
		=	{ "aɪʔ", "uik", "uikʻ", "aik", "aiʔ" },
		=	{ "àɪɴ", "uing", "uiṅʻ", "aing", "aiñ" },
		=	{ "ʊʔ", "wat", "vatʻ", "ut", "uʔ" },
		=	{ "ʊ̀ɴ", "wan", "vanʻ", "un", "uñ" },
		=	{ "ʊʔ", "wap", "vapʻ", "ut", "uʔ" },
		=	{ "ʊ̀ɴ", "wam", "vamʻ", "un", "uñ" },
		=	{ "ʊ̀ɴ", "wam", "vaṃ", "un", "uñ" },
		=	{ "ə", "a", "a", "ă", "ă" },
		=	{ "", "", "ʻ", "", "" },
}

local nucleus_table = {
		=	{ "à", "a", "a", "a", "a" }, 
		=	{ "ì", "i", "i", "i", "i" },
		=	{ "ù", "u", "u", "u", "u" },
		=	{ "ɔ̀", "au", "o", "aw", "o" },
		=	{ "ɔ̀", "au", "o", "aw", "o" },
		=	{ "ʊ̀", "wa", "va", "u", "u" },
}

local indep_letter_table = {
		=	{ "ḭ", "i.", "i", "i.", "í" },
		=	{ "ì", "i", "ī", "i", "i" },
		=	{ "ṵ", "u.", "u", "u.", "ú" },
		=	{ "ù", "u", "ū", "u", "u" },
		=	{ "è", "e", "e", "e", "ei" },
		=	{ "ɛ̰", "e", "e*", "è.", "é" },
		=	{ "ɔ́", "au:", "o", "aw:", "ò" },
		=	{ "ɔ̀", "au", "oʻ", "aw", "o" },
		=	{ "n̥aɪʔ", "hnai.", "n*", "hnaik", "hnaiʔ" },
		=	{ "jwḛ", "rwe", "r*", "ywe.", "yweí" },
}

local tone_table = {
	 = { "́", ":", "ʺ", ":", "̀" },
	 = { "̰", ".", "ʹ", ".", "́" },
}

local ambig_intersyl = {
	 = {
	},

	 = {
		 = 1,  = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1,  = 1, 
	},

	 = {
	},

	 = {
		 = 1,  = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1, 
		 = 1,  = 1,  = 1, 
		 = 1,  = 1,  = 1, 
	},

	 = {
		 = 1,
	},
}

local reverse_table = {
	 = "မှ",  = "မ", 
	 = "နှ",  = "န", 
	 = "ညှ",  = "ည", 
	 = "ငှ",  = "င", 
	 = "ပ",  = "ဖ",  = "ဗ", 
	 = "တ",  = "ထ",  = "ဒ", 
	 = "ကျ",  = "ချ",  = "ဂျ", 
	 = "က",  = "ခ",  = "ဂ", 
	 = "အ", 
	 = "သ",  = "+သ", 
	 = "စ",  = "ဆ",  = "ဇ", 
	 = "ရှ", 
	 = "ဟ", 
	 = "*ရ", 
	 = "ယ", 
	 = "ဝှ",  = "ဝ", 
	 = "လှ",  = "လ", 
	 = "မွှ",  = "မွ",  = "မျှ",  = "မျ", 
	 = "နွှ",  = "နွ", 
	 = "ညွှ",  = "ညွ", 
	 = "ငွှ",  = "ငွ", 
	 = "ပွ",  = "ဖွ",  = "ဗွ", 
	 = "ပျ",  = "ဖျ",  = "ဗျ", 
	 = "တွ",  = "ထွ",  = "ဒွ", 
	 = "ကျွ",  = "ချွ",  = "ဂျွ", 
	 = "ကွ",  = "ခွ",  = "ဂွ", 
	 = "သွ", 
	 = "စွ",  = "ဆွ",  = "ဇွ", 
	 = "ရွှ", 
	 = "ဟွ", 
	 = "ယွ", 
	 = "လွှ",  = "လွ",  = "*လျှ",  = "*လျ", 
	
	 = "ီ",  = "ီး",  = "ိ",  = "စ်", 
	 = "င်",  = "င်း",  = "င့်", 
	 = "ေ",  = "ေး",  = "ေ့",  = "ိတ်", 
	 = "ိန်",  = "ိန်း",  = "ိန့်", 
	 = "ယ်",  = "ဲ",  = "ယ့်",  = "က်", 
	 = "ိုင်",  = "ိုင်း",  = "ိုင့်", 
	 = "ိုက်", 
	 = "ာ",  = "ား",  = "",  = "တ်", 
	 = "န်",  = "န်း",  = "န့်", 
	 = "ော်",  = "ော",  = "ော့",  = "ောက်", 
	 = "ောင်",  = "ောင်း",  = "ောင့်", 
	 = "ို",  = "ိုး",  = "ို့",  = "ုပ်", 
	 = "ုန်",  = "ုန်း",  = "ုန့်", 
	 = "ူ",  = "ူး",  = "ု",  = "ွတ်", 
	 = "ွန်",  = "ွန်း",  = "ွန့်", 
	 = "'",
}

local repl_string = "(**)(?)"

local function syllabify(text)
	text = gsub(text, "('?)(*)", function(a, b)
		if a .. b ~= "" then return a .. " " .. b end
		end)
	
	text = gsub(text, "(?)(.?)(.?)", function(a, b, c)
		return (c == "္" and " "..a..b.." "..c or (c == "်" and " "..a..b..c or " "..a.." "..b..c))
		end) .. " "
	
	text = gsub(text, "(်း?'?)", "%1 ")
	text = gsub(text, "()(်)", "%2%1")
	
	while match(text, repl_string) do
		text = gsub(text, repl_string, "%1 %2")
	end
	
	text = gsub(text, "္", " , ")
	text = gsub(text, " +", " ")
	text = gsub(text, "^ ?(.*) ?$", "%1")
	text = gsub(text, " , ", " ")
	text = gsub(text, " ()", "%1")
	return text
end

local function initial_by_char(initial_string, system_index, ref_table)
	local initial_set = {}
	for character in mw.text.gsplit(initial_string, "") do
		local temp_initial = ref_table or error("Initial data not found.")
		table.insert(initial_set, temp_initial or temp_initial)
	end
	return table.concat(initial_set)
end

local function generate_respelling(text)
	text = gsub(text, " ", "   ")
	text = gsub(text, "ါ", "ာ")
	if match(text, "") then return text end
	text = gsub(text, "(%+?)(*)(/?)(+)", function(voicing_mark, latin_initial, opt_sep, latin_final)
		return 
			voicing_mark .. 
			(reverse_table or initial_by_char(latin_initial, nil, reverse_table)) .. 
			opt_sep ..
			reverse_table
	end)
	return text
end

local function process(initial, final, tone, schwa, system, system_index)
	if match(initial .. final, "ွှ?") and system == "phonetic" then
		initial = gsub(initial, "", "")
		final = "ွ" .. final
	else
		initial = gsub(initial, "/", "")
	end
	
	initial_new = system == "phonetic" and gsub(initial, "%+.", initial_voicing) or initial
	
	if indep_letter_table then
		initial_new = match(initial_new, "") and "-" or ""
		final = initial .. final
	end
	if initial_new == "မြွ" then require('Module:debug').track('my-pron/mrw') end

	initial_data = 
		initial_table
		or initial_table", "")]
		or (system == "orthographic" 
			and initial_by_char(initial_new, system_index, initial_table)
			or error("Initial data not found."))
		
	initial_value = initial_data or initial_data

	if match(initial, "^%+") and system_index == 5 then
		initial_value = initial_table
		initial_value = gsub(initial_value, "^(+)", "<u>%1</u>")
	end

	final_data =
		final_table .. schwa == "phonetic'" and schwa or final]
		or (system == "phonetic" 
			and (final_table or indep_letter_table) 
			or indep_letter_table)
		or gsub(final, "^(*)()(်?)$", function(first, second, third) 
			first_data = nucleus_table or final_table or indep_letter_table or first
			second_data = initial_table or second
			first = first_data ~= first and first_data or first
			second = second_data ~= second
				and second_data .. ((system_index == 3 and third ~= "") and "ʻ" or "")
				or second
			return (gsub(first .. second, "()(.*)", "%2"))
			end)
		
	final_value = type(final_data) == "table" and final_data or final_data
	final_value = mw.ustring.toNFD(final_value)
	if tone == "" then
		tone_value = ""
	else
		if system_index ~= 4 then final_value = gsub(final_value, "̀", "") end
		final_value = gsub(final_value, "", "")
		if system .. schwa == "phonetic'" then
			tone_value = ""
		else
			tone_data = tone_table or error("Tone data not found.")
			tone_value = tone_data
		end
	end

	if system_index == 1 then
		final_value = gsub(final_value, "^()", "%1" .. tone_value)
	elseif system_index == 5 then
		final_value = gsub(final_value, "()(*)$", "%1" .. tone_value .. "%2")
	else
		final_value = final_value .. tone_value
	end
	
	return mw.ustring.toNFC(initial_value .. final_value)
end

local function remove_wide_space(text)
	return (gsub(text, " ", ""))
end

local function concatenate(set, system_index)
	if system_index == 1 then return remove_wide_space(table.concat(set)) end
	result_text = remove_wide_space(table.concat(set, " "))
	
	for count = 1, 3 do
		result_text = gsub(result_text, "(.) (.)(?)",
			function(previous, next, after_next)
				if ambig_intersyl 
				or ((system_index == 2 or system_index == 4)
					and (match(previous .. " " .. next, " ")
					or (match(previous .. next .. after_next, "") and not match(after_next, "")))) then
						return previous .. "-" .. next .. after_next
				else
					return previous .. next .. after_next
				end
			end)
	end
		
	return result_text
end

function export.get_romanisation(word, pronunciations, system, system_index, mode)
	local sentences = {}
	word = gsub(word, " ", "|")
	if system == "phonetic" then
		word = gsub(word, "ဿ", "တ်သ")
	end
	word = syllabify(word)
	word = gsub(word, "ါ", "ာ")
	if system == "phonetic" then
		word = gsub(word, "ဝ()", "ဝွ%1")
	end
	for phrase in mw.text.gsplit(word, "|", true) do
		local temp = {}
		local syllable = mw.text.split(phrase, " ", true)
		for syllable_index = 1, #syllable do
			syllable = gsub(syllable, "()(်)", "%2%1")
			temp = gsub(
				syllable, 
				"^(*?ွ?ှ?/?)(*)(?)('?)$",
				function(initial, final, tone, schwa)
					return process(initial, final, tone, schwa, system, system_index)
				end)
		end
		table.insert(sentences, concatenate(temp, system_index))
	end
	if mode == "translit_module" then return table.concat(sentences, " ") end
	table.insert(pronunciations, table.concat(sentences, " "))
	return pronunciations
end

local function respelling_format(phonetic, page_title)
	local page_title_set = mw.text.split(syllabify(page_title), " ")
	local new_respellings = {}
	for _, respelling in ipairs(phonetic) do
		local respelling_set = mw.text.split(syllabify(respelling), " ")
		if gsub(table.concat(respelling_set), "", "") == (gsub(table.concat(page_title_set), "ါ", "ာ")) then
			for index, element in ipairs(respelling_set) do
				if element ~= page_title_set then
					respelling_set = '<span style="font-size:110%; color:#A32214; font-weight: bold">' .. element .. '</span>'
				end
			end
		end
		table.insert(new_respellings, table.concat(respelling_set))
	end
	text = table.concat(new_respellings, ", ")
	text = remove_wide_space(text)
	text = gsub(text, ".", initial_voicing)
	text = gsub(text, "(ေ?)ာ", "%1ါ")
	return text
end

function export.generate_tests(word, respelling)
	respelling, word = generate_respelling(respelling), generate_respelling(word)
	local pronunciations = {
		 = {},
		 = {},
		 = {},
		 = {},
		 = {},
	}
	local p, result = {  = word,  = respelling or word }, {}
	
	table.sort(system_list, function(first, second) return first < second end)
	for system_index, system in ipairs(system_list) do
		pronunciations = export.get_romanisation(p], pronunciations, system, system_index)
	end
	for system_index = 1, 5 do
		table.insert(result, table.concat(pronunciations))
	end
	return (gsub(gsub(table.concat(result, " | "), "<u>", "("), "</u>", ")"))
end

function export.make(frame)
	local args = frame:getParent().args
	local page_title = mw.title.getCurrentTitle().text
	local title = generate_respelling(args or page_title)
	
	local p, result = {  = { title },  = {} }, {}
	local pronunciations = {
		 = {},
		 = {},
		 = {},
		 = {},
		 = {},
	}

	if not args then args = { title } end
	for index, item in ipairs(args) do
		table.insert(p, (item ~= "") and generate_respelling(item) or nil)
	end
	
	table.sort(system_list, function(first, second) return first < second end)
	for system_index, system in ipairs(system_list) do
		for _, word in ipairs(p]) do
		 	pronunciations = export.get_romanisation(word, pronunciations, system, system_index)
		end
	end
	
	if title ~= table.concat(args) then
		table.insert(result, 
			"* Phonetic respelling" .. (#p > 1 and "s" or "") .. ": " ..
			tostring( mw.html.create( "span" )
				:attr( "lang", "my" )
				:attr( "class", "Mymr" )
				:wikitext( respelling_format( p, page_title ))) .. "\n" )
	end

	table.insert(result,
		'* ]' ..
		'<sup>(])</sup>: ' ..
		
		(tostring( mw.html.create( "span" )
			:attr( "class", "IPA" )
			:wikitext( "/" .. gsub(table.concat(pronunciations, "/, /"), "ʔʔ", "ʔ.ʔ") .. "/" ))) ..
		
		'\n* ] ')
		
	for system_index = 2, 5 do
		table.insert(result, 
			(system_index ~= 2 and " • " or "") ..
			"''" .. system_list .. ":'' " .. 
			table.concat(pronunciations, "/"))
	end
	
	return table.concat(result)
end

return export