<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Ako-pron</id>
	<title>Module:ko-pron - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Ako-pron"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:ko-pron&amp;action=history"/>
	<updated>2026-05-18T14:57:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:ko-pron&amp;diff=514141&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local m_data = mw.loadData(&quot;Module:ko-pron/data&quot;) local m_ko_utilities = require(&quot;Module:ko&quot;) local m_str_utils = require(&quot;Module:string utilities&quot;)  local codepoint = m_str_utils.codepoint local concat = table.concat local floor = math.floor local gmatch = m_str_utils.gmatch local gsub = m_str_utils.gsub local insert = table.insert local len = m_str_utils.len local match = m_str_utils.match local pattern_escape = m_str_utils.pattern_escape local sub =...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:ko-pron&amp;diff=514141&amp;oldid=prev"/>
		<updated>2026-05-07T19:02:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local m_data = mw.loadData(&amp;quot;Module:ko-pron/data&amp;quot;) local m_ko_utilities = require(&amp;quot;Module:ko&amp;quot;) local m_str_utils = require(&amp;quot;Module:string utilities&amp;quot;)  local codepoint = m_str_utils.codepoint local concat = table.concat local floor = math.floor local gmatch = m_str_utils.gmatch local gsub = m_str_utils.gsub local insert = table.insert local len = m_str_utils.len local match = m_str_utils.match local pattern_escape = m_str_utils.pattern_escape local sub =...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local m_data = mw.loadData(&amp;quot;Module:ko-pron/data&amp;quot;)&lt;br /&gt;
local m_ko_utilities = require(&amp;quot;Module:ko&amp;quot;)&lt;br /&gt;
local m_str_utils = require(&amp;quot;Module:string utilities&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local codepoint = m_str_utils.codepoint&lt;br /&gt;
local concat = table.concat&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local gmatch = m_str_utils.gmatch&lt;br /&gt;
local gsub = m_str_utils.gsub&lt;br /&gt;
local insert = table.insert&lt;br /&gt;
local len = m_str_utils.len&lt;br /&gt;
local match = m_str_utils.match&lt;br /&gt;
local pattern_escape = m_str_utils.pattern_escape&lt;br /&gt;
local sub = m_str_utils.sub&lt;br /&gt;
local toNFC = mw.ustring.toNFC&lt;br /&gt;
local u = m_str_utils.char&lt;br /&gt;
local upper = m_str_utils.upper&lt;br /&gt;
&lt;br /&gt;
local PAGENAME = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
local PAGENAME2 = gsub(PAGENAME, &amp;quot;-&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local system_lookup = {&lt;br /&gt;
	[&amp;quot;ph&amp;quot;] = 1, [&amp;quot;rr&amp;quot;] = 2, [&amp;quot;rrr&amp;quot;] = 3,&lt;br /&gt;
	[&amp;quot;mr&amp;quot;] = 4, [&amp;quot;yr&amp;quot;] = 5, [&amp;quot;ipa&amp;quot;] = 6,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local question_mark = &amp;quot;&amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;[[Wiktionary:Korean entry guidelines/Romanization|?]]&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local system_list = {&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;ph&amp;quot;, &lt;br /&gt;
		display = &amp;quot;Phonetic hangul: &amp;quot;, &lt;br /&gt;
		separator = &amp;quot;/&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;rr&amp;quot;, &lt;br /&gt;
		display = &amp;quot;Revised Romanization&amp;quot; .. question_mark, &lt;br /&gt;
		separator = &amp;quot;/&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;rrr&amp;quot;, &lt;br /&gt;
		display = &amp;quot;Revised Romanization (translit.)&amp;quot; .. question_mark, &lt;br /&gt;
		separator = &amp;quot;/&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;mc&amp;quot;, &lt;br /&gt;
		display = &amp;quot;McCune–Reischauer&amp;quot; .. question_mark,&lt;br /&gt;
		separator = &amp;quot;/&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;yr&amp;quot;, &lt;br /&gt;
		display = &amp;quot;Yale Romanization&amp;quot; .. question_mark,&lt;br /&gt;
		separator = &amp;quot;/&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		abbreviation = &amp;quot;ipa&amp;quot;, &lt;br /&gt;
		display = &amp;quot;(&amp;lt;i&amp;gt;[[w:South Korean standard language|SK Standard]]/[[w:Seoul dialect|Seoul]]&amp;lt;/i&amp;gt;) [[Wiktionary:International Phonetic Alphabet|IPA]]&amp;lt;sup&amp;gt;([[Appendix:Korean pronunciation|key]])&amp;lt;/sup&amp;gt;: &amp;quot;, &lt;br /&gt;
		separator = &amp;quot; ~ &amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
vowel_variation:&lt;br /&gt;
	rules for vowel transformation.&lt;br /&gt;
	key:&lt;br /&gt;
		the number of a syllable&amp;#039;s vowel (vowel_id):&lt;br /&gt;
			floor(((codepoint(&amp;#039;가&amp;#039;) - 0xAC00) % 588) / 28) = 0&lt;br /&gt;
			floor(((codepoint(&amp;#039;개&amp;#039;) - 0xAC00) % 588) / 28) = 1&lt;br /&gt;
	value:&lt;br /&gt;
		an integer that is added to the decimal codepoint of the syllable&lt;br /&gt;
				u(codepoint(&amp;#039;개&amp;#039;) + 112) = &amp;#039;게&amp;#039;&lt;br /&gt;
&lt;br /&gt;
allowed_vowel_scheme:&lt;br /&gt;
	a list of which systems vowel transformation is reflected in.&lt;br /&gt;
	key:&lt;br /&gt;
		vowel_id .. &amp;quot;-&amp;quot; .. system_index&lt;br /&gt;
		system_index: see system_list above. IPA is #6&lt;br /&gt;
	value:&lt;br /&gt;
		1, representing true&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local final_syllable_conversion = { [&amp;quot;&amp;quot;] = &amp;quot;Ø&amp;quot;, [&amp;quot;X&amp;quot;] = &amp;quot;&amp;quot; }&lt;br /&gt;
local com_mc = { [&amp;quot;g&amp;quot;] = &amp;quot;k&amp;quot;, [&amp;quot;d&amp;quot;] = &amp;quot;t&amp;quot;, [&amp;quot;b&amp;quot;] = &amp;quot;p&amp;quot;, [&amp;quot;j&amp;quot;] = &amp;quot;ch&amp;quot;, [&amp;quot;sy&amp;quot;] = &amp;quot;s&amp;quot;, [&amp;quot;s&amp;quot;] = &amp;quot;ss&amp;quot; }&lt;br /&gt;
local com_ph = { [&amp;quot;ᄀ&amp;quot;] = &amp;quot;ᄁ&amp;quot;, [&amp;quot;ᄃ&amp;quot;] = &amp;quot;ᄄ&amp;quot;, [&amp;quot;ᄇ&amp;quot;] = &amp;quot;ᄈ&amp;quot;, [&amp;quot;ᄉ&amp;quot;] = &amp;quot;ᄊ&amp;quot;, [&amp;quot;ᄌ&amp;quot;] = &amp;quot;ᄍ&amp;quot; }&lt;br /&gt;
local vowel_variation = {&lt;br /&gt;
	[1] = 112,  -- 개→게&lt;br /&gt;
	[3] = 112,  -- 걔→계&lt;br /&gt;
	[10] = 140, -- 괘→궤&lt;br /&gt;
&lt;br /&gt;
	[7] = -56,  -- 계→게&lt;br /&gt;
&lt;br /&gt;
	[11] = 112, -- 괴→궤&lt;br /&gt;
	[16] = 0,   -- 귀→귀&lt;br /&gt;
}&lt;br /&gt;
local allowed_vowel_scheme = {&lt;br /&gt;
	[&amp;quot;1-1&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;1-6&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;3-1&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;3-6&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;10-1&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;10-6&amp;quot;] = 1,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;7-1&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;7-6&amp;quot;] = 1,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;11-1&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;11-6&amp;quot;] = 1,&lt;br /&gt;
	[&amp;quot;16-6&amp;quot;] = 1,&lt;br /&gt;
}&lt;br /&gt;
local ambiguous_intersyllabic_rr = { [&amp;quot;oe&amp;quot;] = 1, [&amp;quot;eo&amp;quot;] = 1, [&amp;quot;eu&amp;quot;] = 1, [&amp;quot;ae&amp;quot;] = 1, [&amp;quot;ui&amp;quot;] = 1 }&lt;br /&gt;
local ambiguous_intersyllabic_mr = { [&amp;quot;oe&amp;quot;] = 1, [&amp;quot;ae&amp;quot;] = 1 }&lt;br /&gt;
local ambiguous_intersyllabic_yr = { [&amp;quot;ay&amp;quot;] = 1, [&amp;quot;ey&amp;quot;] = 1, [&amp;quot;oy&amp;quot;] = 1, [&amp;quot;uy&amp;quot;] = 1, [&amp;quot;̄y&amp;quot;] = 1, [&amp;quot;ya&amp;quot;] = 1, [&amp;quot;ye&amp;quot;] = 1, [&amp;quot;yo&amp;quot;] = 1, [&amp;quot;yu&amp;quot;] = 1 }&lt;br /&gt;
&lt;br /&gt;
local function decompose_syllable(word)&lt;br /&gt;
	local decomposed_syllables = {}&lt;br /&gt;
	for syllable in mw.text.gsplit(word, &amp;quot;&amp;quot;) do&lt;br /&gt;
		insert(decomposed_syllables, m_ko_utilities.decompose_jamo(syllable))&lt;br /&gt;
	end&lt;br /&gt;
	return decomposed_syllables&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidy_phonetic(original, romanised)&lt;br /&gt;
	local j, k, w = 1, 1, {}&lt;br /&gt;
	for i = 1, len(romanised) do&lt;br /&gt;
		local romanised_syllable = sub(romanised, k, k)&lt;br /&gt;
		local original_syllable = sub(original, j, j)&lt;br /&gt;
		if romanised_syllable ~= original_syllable then&lt;br /&gt;
			insert(w, &amp;#039;&amp;lt;b&amp;gt;&amp;#039;..romanised_syllable..&amp;#039;&amp;lt;/b&amp;gt;&amp;#039;)&lt;br /&gt;
			local original_advance = match(original_syllable, &amp;quot;[^ː ]&amp;quot;)&lt;br /&gt;
			local romanised_advance = match(romanised_syllable, &amp;quot;[^ː ]&amp;quot;)&lt;br /&gt;
			if original_advance or not romanised_advance then&lt;br /&gt;
				k = k + 1&lt;br /&gt;
			end&lt;br /&gt;
			if romanised_advance or not original_advance then&lt;br /&gt;
				j = j + 1&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			insert(w, &amp;#039;&amp;lt;span&amp;gt;&amp;#039;..romanised_syllable..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
			j, k = j + 1, k + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return concat(w)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidy_ipa(ipa)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;ʌ̹%(ː%)&amp;quot;, &amp;quot;ɘ(ː)&amp;quot;) -- TODO: [[멀다]] really should be [ˈmʌ̹ɭda̠] ~ [ˈmɘːɭda̠] instead of [ˈmɘ(ː)ɭda̠]&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;ɭɭi&amp;quot;, &amp;quot;ʎʎi&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;ɭɭj&amp;quot;, &amp;quot;ʎʎ&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;s([ʰ͈])ɥi&amp;quot; ,&amp;quot;ʃ%1ɥi&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;ss͈([ji])&amp;quot; ,&amp;quot;ɕɕ͈%1&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;s([ʰ͈])([ji])&amp;quot; ,&amp;quot;ɕ%1%2&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;nj&amp;quot;, &amp;quot;ɲ&amp;quot;)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;([ʑɕ])([ʰ͈]?)j&amp;quot;, &amp;quot;%1%2&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;kʰ[ijɯ]&amp;quot;, { &lt;br /&gt;
		[&amp;quot;kʰi&amp;quot;] = &amp;quot;cçi&amp;quot;, &lt;br /&gt;
		[&amp;quot;kʰj&amp;quot;] = &amp;quot;cç&amp;quot;, &lt;br /&gt;
		[&amp;quot;kʰɯ&amp;quot;] = &amp;quot;kxɯ&amp;quot; }&lt;br /&gt;
	)&lt;br /&gt;
	ipa = gsub(ipa, &amp;quot;[hɦ][ijɯouw]&amp;quot;, {&lt;br /&gt;
		[&amp;quot;hi&amp;quot;] = &amp;quot;çi&amp;quot;,&lt;br /&gt;
		[&amp;quot;hj&amp;quot;] = &amp;quot;ç&amp;quot;,&lt;br /&gt;
		[&amp;quot;hɯ&amp;quot;] = &amp;quot;xɯ&amp;quot;,&lt;br /&gt;
		[&amp;quot;ho&amp;quot;] = &amp;quot;ɸʷo&amp;quot;,&lt;br /&gt;
		[&amp;quot;hu&amp;quot;] = &amp;quot;ɸʷu&amp;quot;,&lt;br /&gt;
		[&amp;quot;hw&amp;quot;] = &amp;quot;ɸw&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦi&amp;quot;] = &amp;quot;ʝi&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦj&amp;quot;] = &amp;quot;ʝ&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦɯ&amp;quot;] = &amp;quot;ɣɯ&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦo&amp;quot;] = &amp;quot;βo&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦu&amp;quot;] = &amp;quot;βu&amp;quot;,&lt;br /&gt;
		[&amp;quot;ɦw&amp;quot;] = &amp;quot;βw&amp;quot; }&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	if match(ipa, &amp;quot;ɥi&amp;quot;) then&lt;br /&gt;
		local midpoint = floor(len(ipa) / 2)&lt;br /&gt;
		ipa = sub(ipa, 1, midpoint) .. gsub(sub(ipa, midpoint+1, -1), &amp;quot;ɥi&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ipa&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.romanise(text_param, system_index, args)&lt;br /&gt;
	if type(text_param) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		args = text_param:getParent().args&lt;br /&gt;
		system_index = args[2] or 2&lt;br /&gt;
		text_param = args[1]&lt;br /&gt;
	end&lt;br /&gt;
	local p, optional_params = {}, { &amp;quot;nn&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;com&amp;quot;, &amp;quot;cap&amp;quot;, &amp;quot;ni&amp;quot; }&lt;br /&gt;
	for _, pm in ipairs(optional_params) do&lt;br /&gt;
		p[pm] = { }&lt;br /&gt;
		if args[pm] then&lt;br /&gt;
			for pp in mw.text.gsplit(args[pm], &amp;quot;,&amp;quot;) do p[pm][tonumber(pp) or pp] = 1 end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local categories = {}&lt;br /&gt;
		&lt;br /&gt;
	local vowel_ui_i, vowel_ui_e, no_batchim, batchim_reduce, s_variation, iotation = &lt;br /&gt;
		args.ui, args.uie, args.nobc, args.bcred, args.svar, args.iot&lt;br /&gt;
	&lt;br /&gt;
	system_index = system_lookup[system_index] or system_index&lt;br /&gt;
	text_param = gsub(text_param, &amp;#039;[&amp;quot;](.)&amp;#039;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	for primitive_word in gmatch(text_param, &amp;quot;[%-ᄀ-ᄒ&amp;quot;..&amp;quot;ᅡ-ᅵ&amp;quot;..&amp;quot;ᆨ-ᇂ&amp;quot; .. &amp;quot;ㄱ-ㅣ가-힣&amp;#039; 􀀀-􏿽]+&amp;quot;) do&lt;br /&gt;
		local the_original = primitive_word&lt;br /&gt;
		primitive_word = gsub(primitive_word, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;, &amp;quot;ß&amp;quot;)&lt;br /&gt;
		local formatting_position, formatting_count = {}, 0&lt;br /&gt;
		primitive_word = gsub(primitive_word, &amp;quot;()([ß􀀀-􏿽-])&amp;quot;, function(m1, m2)&lt;br /&gt;
			formatting_position[m1 + formatting_count] = m2 == &amp;quot;ß&amp;quot; and &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; or m2&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end)&lt;br /&gt;
		&lt;br /&gt;
		local has_vowel = {}&lt;br /&gt;
		for ch in gmatch(primitive_word, &amp;quot;.&amp;quot;) do&lt;br /&gt;
			local jungseong = floor(((codepoint(ch) - 0xAC00) % 588) / 28)&lt;br /&gt;
			if not match(ch, &amp;quot;[예옛옘례롄]&amp;quot;) and match(ch, &amp;quot;[가-힣]&amp;quot;) then has_vowel[jungseong] = true end&lt;br /&gt;
		end&lt;br /&gt;
		local word_set = { primitive_word }&lt;br /&gt;
		&lt;br /&gt;
		local function add_respelling(variable, modification, modification2)&lt;br /&gt;
			modification2 = modification2 or function(x) return x end&lt;br /&gt;
			if variable and match(system_index, &amp;quot;[16]&amp;quot;) then&lt;br /&gt;
				variable = tonumber(variable)&lt;br /&gt;
				local pre_length = #word_set&lt;br /&gt;
				for i = 1, pre_length do&lt;br /&gt;
					local item = mw.text.split(word_set[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					item[variable] = modification(item[variable])&lt;br /&gt;
					item[variable + 1] = modification2(item[variable + 1])&lt;br /&gt;
					word_set[pre_length + i] = concat(item)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		add_respelling(vowel_ui_i, function(x) return &amp;quot;이&amp;quot; end)&lt;br /&gt;
		add_respelling(vowel_ui_e, function(x) return &amp;quot;에&amp;quot; end)&lt;br /&gt;
		&lt;br /&gt;
		add_respelling(no_batchim, &lt;br /&gt;
			function(x) return u(codepoint(x) - (codepoint(x) - 0xAC00) % 28) end, &lt;br /&gt;
			function(y) return u(codepoint(y) + 588) end)&lt;br /&gt;
		&lt;br /&gt;
		add_respelling(s_variation, function(x) return u(codepoint(x) - 12) end)&lt;br /&gt;
		add_respelling(iotation, function(x) return u(codepoint(x) + 56) end)&lt;br /&gt;
		&lt;br /&gt;
		for vowel_id, vowel_variation_increment in pairs(vowel_variation) do&lt;br /&gt;
			if has_vowel[vowel_id] and allowed_vowel_scheme[vowel_id .. &amp;quot;-&amp;quot; .. system_index] then&lt;br /&gt;
				local pre_length = #word_set&lt;br /&gt;
				for i = 1, pre_length do&lt;br /&gt;
					local item = mw.text.split(word_set[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					for num, it in ipairs(item) do&lt;br /&gt;
						if floor(((codepoint(it) - 0xAC00) % 588) / 28) == vowel_id then&lt;br /&gt;
							item[num] = u(codepoint(it) + vowel_variation_increment)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if vowel_id == 11 then&lt;br /&gt;
						insert(word_set, i, concat(item))&lt;br /&gt;
					else&lt;br /&gt;
						insert(word_set, concat(item))&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local word_set_romanisations = {}&lt;br /&gt;
		for _, respelling in ipairs(word_set) do&lt;br /&gt;
			local decomposed_syllables = decompose_syllable(respelling)&lt;br /&gt;
			local romanisation = {}&lt;br /&gt;
			local formatting_insert_count = 0&lt;br /&gt;
			for index = 0, #decomposed_syllables, 1 do&lt;br /&gt;
				local this_syllable_text = index ~= 0 and sub(respelling, index, index) or &amp;quot;&amp;quot;&lt;br /&gt;
				if this_syllable_text == &amp;quot;-&amp;quot; then&lt;br /&gt;
					-- skip it, it will be handled below&lt;br /&gt;
				else&lt;br /&gt;
					local syllable = decomposed_syllables[index] or { initial = &amp;quot;Ø&amp;quot;, vowel = &amp;quot;Ø&amp;quot;, final = &amp;quot;X&amp;quot; }&lt;br /&gt;
					local next_index = index&lt;br /&gt;
					local next_syllable_text&lt;br /&gt;
					local saw_hyphen_after = false&lt;br /&gt;
					while true do&lt;br /&gt;
						next_index = next_index + 1&lt;br /&gt;
						next_syllable_text = next_index &amp;gt; #decomposed_syllables and &amp;quot;&amp;quot; or sub(respelling, next_index, next_index)&lt;br /&gt;
						if next_syllable_text ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
						saw_hyphen_after = true&lt;br /&gt;
					end&lt;br /&gt;
					local next_syllable = decomposed_syllables[next_index] or { initial = &amp;quot;Ø&amp;quot;, vowel = &amp;quot;Ø&amp;quot;, final = &amp;quot;Ø&amp;quot; }&lt;br /&gt;
					syllable.final = final_syllable_conversion[syllable.final] or syllable.final&lt;br /&gt;
					&lt;br /&gt;
					if system_index == 5 and syllable.vowel == &amp;quot;ᅮ&amp;quot; and match(syllable.initial, &amp;quot;[ᄆᄇᄈᄑ]&amp;quot;) then&lt;br /&gt;
						syllable.vowel = &amp;quot;ᅳ&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if match(system_index, &amp;quot;[1246]&amp;quot;) then&lt;br /&gt;
						if match(syllable.initial, &amp;quot;[ᄌᄍᄎ]&amp;quot;) then&lt;br /&gt;
							if syllable.vowel == &amp;quot;ᅣ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅡ&amp;quot;&lt;br /&gt;
							elseif syllable.vowel == &amp;quot;ᅤ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅢ&amp;quot;&lt;br /&gt;
							elseif syllable.vowel == &amp;quot;ᅧ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
							elseif syllable.vowel == &amp;quot;ᅨ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅦ&amp;quot;&lt;br /&gt;
							elseif syllable.vowel == &amp;quot;ᅭ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅩ&amp;quot;&lt;br /&gt;
							elseif syllable.vowel == &amp;quot;ᅲ&amp;quot; then&lt;br /&gt;
								syllable.vowel = &amp;quot;ᅮ&amp;quot;&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if match(system_index, &amp;quot;[16]&amp;quot;) then&lt;br /&gt;
						if syllable.vowel == &amp;quot;ᅴ&amp;quot; and this_syllable_text ~= &amp;quot;의&amp;quot; then&lt;br /&gt;
							syllable.vowel = &amp;quot;ᅵ&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if match(system_index, &amp;quot;[1246]&amp;quot;) then&lt;br /&gt;
						if this_syllable_text == &amp;quot;넓&amp;quot; then&lt;br /&gt;
							if match(next_syllable.initial, &amp;quot;[ᄌᄉ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆸ&amp;quot;&lt;br /&gt;
								&lt;br /&gt;
							elseif next_syllable.initial == &amp;quot;ᄃ&amp;quot; then&lt;br /&gt;
								if match(next_syllable.vowel, &amp;quot;[^ᅡᅵ]&amp;quot;) then&lt;br /&gt;
									syllable.final = &amp;quot;ᆸ&amp;quot;&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					local vowel = m_data.vowels[syllable.vowel][system_index]&lt;br /&gt;
&lt;br /&gt;
					if p.nn[next_index] and match(system_index, &amp;quot;[1246]&amp;quot;) then&lt;br /&gt;
						next_syllable.initial = &amp;quot;ᄂ&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
					if p.com[index] and match(system_index, &amp;quot;[16]&amp;quot;) then&lt;br /&gt;
						next_syllable.initial = com_ph[next_syllable.initial] or next_syllable.initial&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if p.ni[next_index] and system_index ~= 3 then&lt;br /&gt;
						next_syllable.initial = (system_index == 5 and syllable.final == &amp;quot;ᆯ&amp;quot;) and &amp;quot;ᄅ&amp;quot; or &amp;quot;ᄂ&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if match(system_index, &amp;quot;[1246]&amp;quot;) then&lt;br /&gt;
						if tonumber(batchim_reduce or -1) == index then&lt;br /&gt;
							syllable.final = m_data.boundary[syllable.final .. &amp;quot;-Ø&amp;quot;][1]&lt;br /&gt;
						end&lt;br /&gt;
					&lt;br /&gt;
						if index ~= 0 and this_syllable_text == &amp;quot;밟&amp;quot; and not&lt;br /&gt;
							match(next_syllable.initial, &amp;quot;[ᄋᄒ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆸ&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if next_syllable_text == &amp;quot;없&amp;quot; then&lt;br /&gt;
							if match(syllable.final, &amp;quot;[ᆩᆪᆰᆿ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆨ&amp;quot;&lt;br /&gt;
							elseif match(syllable.final, &amp;quot;[ᆬᆭ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆫ&amp;quot;&lt;br /&gt;
							elseif match(syllable.final, &amp;quot;[ᆺᆻᆽᆾᇀ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆮ&amp;quot;&lt;br /&gt;
							elseif match(syllable.final, &amp;quot;[ᆲᆳᆴᆶ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆯ&amp;quot;&lt;br /&gt;
							elseif syllable.final == &amp;quot;ᆱ&amp;quot; then&lt;br /&gt;
								syllable.final = &amp;quot;ᆷ&amp;quot;&lt;br /&gt;
							elseif match(syllable.final, &amp;quot;[ᆵᆹᇁ]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆸ&amp;quot;&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if tonumber(batchim_reduce or -1) ~= index then&lt;br /&gt;
							if match(syllable.final .. next_syllable.initial, &amp;quot;ᇀᄋ&amp;quot;) then&lt;br /&gt;
								if next_syllable.vowel == &amp;quot;ᅵ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆾ&amp;quot;&lt;br /&gt;
								elseif next_syllable.vowel == &amp;quot;ᅧ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆾ&amp;quot;&lt;br /&gt;
									next_syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
								end&lt;br /&gt;
							&lt;br /&gt;
							elseif match(syllable.final .. next_syllable.initial, &amp;quot;ᆴᄋ&amp;quot;) then&lt;br /&gt;
								if next_syllable.vowel == &amp;quot;ᅵ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆯ&amp;quot;&lt;br /&gt;
									next_syllable.initial = &amp;quot;ᄎ&amp;quot;&lt;br /&gt;
								elseif next_syllable.vowel == &amp;quot;ᅧ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆯ&amp;quot;&lt;br /&gt;
									next_syllable.initial = &amp;quot;ᄎ&amp;quot;&lt;br /&gt;
									next_syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
								end&lt;br /&gt;
							&lt;br /&gt;
							elseif match(syllable.final .. next_syllable.initial, &amp;quot;ᆮᄋ&amp;quot;) and tonumber(s_variation or -1) ~= index then&lt;br /&gt;
								if next_syllable.vowel == &amp;quot;ᅵ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆽ&amp;quot;&lt;br /&gt;
								elseif next_syllable.vowel == &amp;quot;ᅧ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆽ&amp;quot;&lt;br /&gt;
									next_syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
								end&lt;br /&gt;
							&lt;br /&gt;
							elseif match(syllable.final .. next_syllable.initial, &amp;quot;ᆮᄒ&amp;quot;) then&lt;br /&gt;
								if next_syllable.vowel == &amp;quot;ᅵ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆾ&amp;quot;&lt;br /&gt;
									next_syllable.initial = &amp;quot;ᄋ&amp;quot;&lt;br /&gt;
								elseif next_syllable.vowel == &amp;quot;ᅧ&amp;quot; then&lt;br /&gt;
									syllable.final = &amp;quot;ᆾ&amp;quot;&lt;br /&gt;
									next_syllable.initial = &amp;quot;ᄋ&amp;quot;&lt;br /&gt;
									next_syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
								end&lt;br /&gt;
							&lt;br /&gt;
							elseif match(syllable.final .. next_syllable.initial .. next_syllable.vowel, &amp;quot;[ᆬᆽᆾ][ᄋᄒ]ᅧ&amp;quot;) then&lt;br /&gt;
								next_syllable.vowel = &amp;quot;ᅥ&amp;quot;&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if syllable.final .. next_syllable.initial == &amp;quot;ᆺᄋ&amp;quot; and not&lt;br /&gt;
							match(next_syllable_text, &amp;quot;[아았어었에으은을음읍의이인일임입있]&amp;quot;) then&lt;br /&gt;
								syllable.final = &amp;quot;ᆮ&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					local bound = syllable.final .. &amp;quot;-&amp;quot; .. next_syllable.initial&lt;br /&gt;
					if not m_data.boundary[bound] then&lt;br /&gt;
						require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;ko-pron/no boundary data&amp;quot;)&lt;br /&gt;
						mw.log(&amp;quot;No boundary data for &amp;quot; .. bound .. &amp;quot;.&amp;quot;)&lt;br /&gt;
						return nil&lt;br /&gt;
					end&lt;br /&gt;
					local junction = m_data.boundary[bound][system_index]&lt;br /&gt;
					&lt;br /&gt;
					if system_index == 2 then&lt;br /&gt;
						local pos_format_start = index + formatting_insert_count + 1&lt;br /&gt;
						local pos_format_end = pos_format_start&lt;br /&gt;
						while formatting_position[pos_format_end] do&lt;br /&gt;
							pos_format_end = pos_format_end + 1&lt;br /&gt;
							formatting_insert_count = formatting_insert_count + 1&lt;br /&gt;
						end&lt;br /&gt;
						if pos_format_end &amp;gt; pos_format_start then&lt;br /&gt;
							local a, b = match(junction, &amp;quot;^(ng%-?)(.?)$&amp;quot;)&lt;br /&gt;
							if not a or not b then a, b = match(junction, &amp;quot;^(.?%-?)(.*)$&amp;quot;) end&lt;br /&gt;
							junction = match(syllable.final .. next_syllable.initial, &amp;quot;^Ø?[ᄀ-ᄒ]$&amp;quot;)&lt;br /&gt;
								and concat(formatting_position, &amp;quot;&amp;quot;, pos_format_start, pos_format_end - 1) .. (a or &amp;quot;&amp;quot;) .. (b or &amp;quot;&amp;quot;)&lt;br /&gt;
								or (a or &amp;quot;&amp;quot;) .. concat(formatting_position, &amp;quot;&amp;quot;, pos_format_start, pos_format_end - 1) .. (b or &amp;quot;&amp;quot;)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if p.l[index] or (p.l[&amp;quot;y&amp;quot;] and index == 1) then&lt;br /&gt;
						-- FIXME, verify this code still works with final/initial cons changes&lt;br /&gt;
						if system_index == 1 then&lt;br /&gt;
							if #junction == 0 then&lt;br /&gt;
								junction = junction .. &amp;quot;ː&amp;quot;&lt;br /&gt;
							else&lt;br /&gt;
								junction = gsub(junction, &amp;quot;^(.)(.?)$&amp;quot;, function(a, b)&lt;br /&gt;
									return match(a, &amp;quot;[ᆨ-ᇂ]&amp;quot;) and a .. &amp;quot;ː&amp;quot; .. b or &amp;quot;ː&amp;quot; .. a .. b end)&lt;br /&gt;
							end&lt;br /&gt;
							&lt;br /&gt;
						elseif system_index == 5 then&lt;br /&gt;
							vowel = gsub(vowel, &amp;quot;([aeiou])&amp;quot;, &amp;quot;%1̄&amp;quot;)&lt;br /&gt;
							&lt;br /&gt;
						elseif system_index == 6 then&lt;br /&gt;
							vowel = vowel .. &amp;quot;ː&amp;quot;&lt;br /&gt;
							if index == 1 then&lt;br /&gt;
								insert(categories, &amp;quot;Korean terms with long vowels in the first syllable&amp;quot;)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if (p.l[&amp;quot;y&amp;quot;] or p.l[1]) and index == 0 and system_index == 6 and #decomposed_syllables &amp;gt; 1 then&lt;br /&gt;
						vowel = vowel .. &amp;quot;ˈ&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				&lt;br /&gt;
					if p.com[index] then&lt;br /&gt;
						-- FIXME, verify this code still works with final/initial cons changes&lt;br /&gt;
						junction = gsub(junction, &amp;quot;(.)$&amp;quot;, function(next_letter)&lt;br /&gt;
							return &lt;br /&gt;
								(system_index == 5 and &amp;quot;q&amp;quot; or &amp;quot;&amp;quot;) .. &lt;br /&gt;
								(system_index == 4&lt;br /&gt;
									and (com_mc[next_letter..(p.cap[&amp;quot;y&amp;quot;] or &amp;quot;&amp;quot;)] or com_mc[next_letter] or next_letter)&lt;br /&gt;
									or next_letter) end)&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if p.ni[next_index] and system_index == 5 then&lt;br /&gt;
						-- FIXME, verify this code still works with final/initial cons changes&lt;br /&gt;
						junction = gsub(junction, &amp;quot;([nl])$&amp;quot;, &amp;quot;&amp;lt;sup&amp;gt;%1&amp;lt;/sup&amp;gt;&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					local final_cons, initial_cons = match(junction, &amp;quot;^(.*);(.*)$&amp;quot;)&lt;br /&gt;
					if not final_cons then&lt;br /&gt;
						if system_index == 2 then&lt;br /&gt;
							error(&amp;quot;Need a semicolon in the boundary value for &amp;quot; .. bound)&lt;br /&gt;
						end&lt;br /&gt;
						-- FIXME, throw an error for all systems once we&amp;#039;ve added semicolons everywhere&lt;br /&gt;
						final_cons = junction&lt;br /&gt;
						initial_cons = &amp;quot;&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if system_index == 2 then&lt;br /&gt;
						insert(romanisation, vowel .. final_cons .. (saw_hyphen_after and &amp;quot;-&amp;quot; or &amp;quot;&amp;quot;) .. initial_cons)&lt;br /&gt;
					else&lt;br /&gt;
						insert(romanisation, vowel .. junction)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local temp_romanisation = concat(romanisation)&lt;br /&gt;
			if system_index == 1 then&lt;br /&gt;
				temp_romanisation = tidy_phonetic(primitive_word, toNFC(temp_romanisation))&lt;br /&gt;
			&lt;br /&gt;
			elseif match(system_index, &amp;quot;[23]&amp;quot;) then&lt;br /&gt;
				for i = 1, 2 do&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;(.)…(.)&amp;quot;, function(a, b)&lt;br /&gt;
						return a .. (ambiguous_intersyllabic_rr[a .. b] and &amp;quot;&amp;#039;&amp;quot; or &amp;quot;&amp;quot;) .. b end)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;wo&amp;#039;e&amp;quot;, &amp;quot;woe&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;yo&amp;#039;e&amp;quot;, &amp;quot;yoe&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;we&amp;#039;o&amp;quot;, &amp;quot;weo&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;we&amp;#039;u&amp;quot;, &amp;quot;weu&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;ye&amp;#039;u&amp;quot;, &amp;quot;yeu&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;yu&amp;#039;i&amp;quot;, &amp;quot;yui&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			&lt;br /&gt;
			elseif system_index == 4 then&lt;br /&gt;
				for i = 1, 2 do&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;(.)…(.)&amp;quot;, function(a, b)&lt;br /&gt;
						return a .. (ambiguous_intersyllabic_mr[a .. b] and &amp;quot;&amp;#039;&amp;quot; or &amp;quot;&amp;quot;) .. b end)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;yo&amp;#039;e&amp;quot;, &amp;quot;yoe&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;a&amp;#039;e&amp;quot;, &amp;quot;aë&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;o&amp;#039;e&amp;quot;, &amp;quot;oë&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;n&amp;#039;k&amp;quot;, &amp;quot;nk&amp;quot;)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;swi&amp;quot;, &amp;quot;shwi&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			&lt;br /&gt;
			elseif system_index == 5 then&lt;br /&gt;
				for i = 1, 2 do&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;(.)…(.)&amp;quot;, function(a, b)&lt;br /&gt;
						return a .. (ambiguous_intersyllabic_yr[a .. b] and &amp;quot;.&amp;quot; or &amp;quot;&amp;quot;) .. b end)&lt;br /&gt;
					temp_romanisation = gsub(temp_romanisation, &amp;quot;[.]q&amp;quot;, &amp;quot;q&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			elseif system_index == 6 then&lt;br /&gt;
				temp_romanisation = &amp;quot;[&amp;quot; .. temp_romanisation .. &amp;quot;]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if match(system_index, &amp;quot;[16]&amp;quot;) then&lt;br /&gt;
				temp_romanisation = gsub(temp_romanisation, &amp;quot;ː&amp;quot;, &amp;quot;(ː)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if p.cap[&amp;quot;y&amp;quot;] and match(system_index, &amp;quot;[234]&amp;quot;) then&lt;br /&gt;
				temp_romanisation = upper(sub(temp_romanisation, 1, 1)) .. sub(temp_romanisation, 2, -1)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			insert(word_set_romanisations, temp_romanisation)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		text_param = gsub(&lt;br /&gt;
			text_param,&lt;br /&gt;
			pattern_escape(the_original),&lt;br /&gt;
			concat(word_set_romanisations, system_list[system_index].separator),&lt;br /&gt;
			1&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if system_index == 6 then&lt;br /&gt;
		text_param = tidy_ipa(text_param)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #categories &amp;gt; 0 then&lt;br /&gt;
		text_param = text_param .. require(&amp;quot;Module:utilities&amp;quot;).format_categories(categories, m_ko_utilities.lang)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text_param&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.make(frame, scheme)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[1] = { default = PAGENAME2, list = true },&lt;br /&gt;
		&lt;br /&gt;
		[&amp;quot;a&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;audio&amp;quot;] = { alias_of = &amp;quot;a&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		[&amp;quot;nn&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;l&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;com&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;cap&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;ui&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;uie&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;nobc&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;ni&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;bcred&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;svar&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;iot&amp;quot;] = {},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(frame:getParent().args, params)&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;quot;l&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/l&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;cap&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/cap&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;com&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/com&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;nn&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/nn&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;ui&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/ui&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;uie&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/uie&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;nobc&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/nobc&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;ni&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/ni&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;bcred&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/bcred&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;svar&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/svar&amp;quot;) end&lt;br /&gt;
	if args[&amp;quot;iot&amp;quot;] ~= nil then require(&amp;quot;Module:debug/track&amp;quot;)(&amp;quot;ko-IPA/iot&amp;quot;) end&lt;br /&gt;
	&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for _, text_param in ipairs(args[1]) do&lt;br /&gt;
		local current_word_dataset = {}&lt;br /&gt;
		for system_index, system in pairs(system_list) do&lt;br /&gt;
			local romanised = export.romanise(text_param, system_index, args)&lt;br /&gt;
			insert(current_word_dataset, romanised)&lt;br /&gt;
		end&lt;br /&gt;
		insert(results, current_word_dataset)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local output_result = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {} }&lt;br /&gt;
	for _, result in ipairs(results) do&lt;br /&gt;
		for result_index, value in ipairs(result) do&lt;br /&gt;
			insert(output_result[result_index], value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html_ul = mw.html.create( &amp;quot;ul&amp;quot; )&lt;br /&gt;
	:done()&lt;br /&gt;
	local html_li_ipa = mw.html.create( &amp;quot;li&amp;quot; )&lt;br /&gt;
		:wikitext( system_list[6].display )&lt;br /&gt;
		:tag( &amp;quot;span&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;IPA&amp;quot; )&lt;br /&gt;
			:wikitext( concat(output_result[6], system_list[6].separator) )&lt;br /&gt;
		:done()&lt;br /&gt;
	:done()&lt;br /&gt;
	local html_li_ph = mw.html.create( &amp;quot;li&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;ko-pron__ph&amp;quot; )&lt;br /&gt;
		:wikitext( system_list[1].display )&lt;br /&gt;
		:tag( &amp;quot;span&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;Kore&amp;quot; )&lt;br /&gt;
			:attr( &amp;quot;lang&amp;quot;, &amp;quot;ko&amp;quot; )&lt;br /&gt;
			:wikitext( &amp;quot;[&amp;quot; .. concat(output_result[1], system_list[1].separator) .. &amp;quot;]&amp;quot; )&lt;br /&gt;
		:done()&lt;br /&gt;
	:done()&lt;br /&gt;
&lt;br /&gt;
	if args.a then&lt;br /&gt;
		html_li_ipa&lt;br /&gt;
			:tag( &amp;quot;ul&amp;quot; )&lt;br /&gt;
				:tag( &amp;quot;li&amp;quot; )&lt;br /&gt;
					:wikitext( require(&amp;quot;Module:audio&amp;quot;).format_audio {&lt;br /&gt;
						lang = m_ko_utilities.lang,&lt;br /&gt;
						file = args.a == &amp;quot;y&amp;quot; and &amp;quot;Ko-&amp;quot; .. PAGENAME .. &amp;quot;.ogg&amp;quot; or args.a,&lt;br /&gt;
					})&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.l then&lt;br /&gt;
		html_li_ph&lt;br /&gt;
			:tag( &amp;quot;ul&amp;quot; )&lt;br /&gt;
				:tag( &amp;quot;li&amp;quot; )&lt;br /&gt;
					:addClass( &amp;quot;ko-pron__note-vowel-length&amp;quot; )&lt;br /&gt;
					:wikitext( &amp;#039;Though still prescribed in Standard Korean, most speakers in both Koreas no longer distinguish vowel length.&amp;#039; )&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	html_ul&lt;br /&gt;
		:node( html_li_ipa )&lt;br /&gt;
		:node( html_li_ph )&lt;br /&gt;
	:done()&lt;br /&gt;
&lt;br /&gt;
	local html_table = mw.html.create( &amp;quot;table&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;ko-pron&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;mw-collapsible&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;mw-collapsed&amp;quot; )&lt;br /&gt;
		:tag( &amp;quot;tr&amp;quot; )&lt;br /&gt;
			:tag( &amp;quot;th&amp;quot; )&lt;br /&gt;
				:attr( &amp;quot;colspan&amp;quot;, 2 )&lt;br /&gt;
				:wikitext( &amp;quot;Romanizations&amp;quot; )&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	:done()&lt;br /&gt;
		&lt;br /&gt;
	for roman_index = 2, 5 do&lt;br /&gt;
		html_table&lt;br /&gt;
			:tag( &amp;quot;tr&amp;quot; )&lt;br /&gt;
				:tag( &amp;quot;th&amp;quot; )&lt;br /&gt;
					:wikitext( system_list[roman_index].display )&lt;br /&gt;
				:done()&lt;br /&gt;
				:tag( &amp;quot;td&amp;quot; )&lt;br /&gt;
					:addClass( &amp;quot;IPA&amp;quot; )&lt;br /&gt;
					:wikitext( concat(output_result[roman_index], system_list[roman_index].separator) )&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	return tostring(html_ul) .. tostring(html_table) .. require(&amp;quot;Module:TemplateStyles&amp;quot;)(&amp;quot;Template:ko-IPA/style.css&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.make_hanja(frame, scheme)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[1] = { list = true },&lt;br /&gt;
&lt;br /&gt;
		[&amp;quot;l&amp;quot;] = {},&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(frame:getParent().args, params)&lt;br /&gt;
&lt;br /&gt;
	local results = {&lt;br /&gt;
		[1] = {},&lt;br /&gt;
		[6] = {},&lt;br /&gt;
	}&lt;br /&gt;
	for _, text_param in ipairs(args[1]) do&lt;br /&gt;
		for _, system_index in pairs({1, 6}) do&lt;br /&gt;
			local romanised = export.romanise(text_param, system_index, args)&lt;br /&gt;
			insert(results[system_index], romanised)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html_ul = mw.html.create( &amp;quot;ul&amp;quot; )&lt;br /&gt;
	:done()&lt;br /&gt;
	local html_li_ipa = mw.html.create( &amp;quot;li&amp;quot; )&lt;br /&gt;
		:wikitext( system_list[6].display )&lt;br /&gt;
		:tag( &amp;quot;span&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;IPA&amp;quot; )&lt;br /&gt;
			:wikitext( concat(results[6], system_list[6].separator) )&lt;br /&gt;
		:done()&lt;br /&gt;
	:done()&lt;br /&gt;
	local html_li_ph = mw.html.create( &amp;quot;li&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;ko-pron__ph&amp;quot; )&lt;br /&gt;
		:wikitext( system_list[1].display )&lt;br /&gt;
		:tag( &amp;quot;span&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;Kore&amp;quot; )&lt;br /&gt;
			:attr( &amp;quot;lang&amp;quot;, &amp;quot;ko&amp;quot; )&lt;br /&gt;
			:wikitext( &amp;quot;[&amp;quot; .. concat(results[1], system_list[1].separator) .. &amp;quot;]&amp;quot; )&lt;br /&gt;
		:done()&lt;br /&gt;
	:done()&lt;br /&gt;
&lt;br /&gt;
	if args.l then&lt;br /&gt;
		html_li_ph&lt;br /&gt;
			:tag( &amp;quot;ul&amp;quot; )&lt;br /&gt;
				:tag( &amp;quot;li&amp;quot; )&lt;br /&gt;
					:addClass( &amp;quot;ko-pron__note-vowel-length&amp;quot; )&lt;br /&gt;
					:wikitext( &amp;#039;Though still prescribed in Standard Korean, most speakers in both Koreas no longer distinguish vowel length.&amp;#039; )&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	html_ul&lt;br /&gt;
		:node( html_li_ipa )&lt;br /&gt;
		:node( html_li_ph )&lt;br /&gt;
	:done()&lt;br /&gt;
&lt;br /&gt;
	return tostring(html_ul) .. require(&amp;quot;Module:TemplateStyles&amp;quot;)(&amp;quot;Template:ko-IPA/style.css&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>