<?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%3Alo-translit</id>
	<title>Module:lo-translit - 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%3Alo-translit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:lo-translit&amp;action=history"/>
	<updated>2026-06-24T21:25:49Z</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:lo-translit&amp;diff=495043&amp;oldid=prev</id>
		<title>Sware: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:lo-translit&amp;diff=495043&amp;oldid=prev"/>
		<updated>2026-04-21T12:00:09Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:00, 21 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:lo-translit&amp;diff=495042&amp;oldid=prev</id>
		<title>wikt&gt;AmazingJus: vastly improve the module and handle many edgecases, treat syllable splitting separate for debug purposes</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:lo-translit&amp;diff=495042&amp;oldid=prev"/>
		<updated>2025-06-09T04:48:14Z</updated>

		<summary type="html">&lt;p&gt;vastly improve the module and handle many edgecases, treat syllable splitting separate for debug purposes&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 find = mw.ustring.find&lt;br /&gt;
local len = mw.ustring.len&lt;br /&gt;
local match = mw.ustring.match&lt;br /&gt;
local gmatch = mw.ustring.gmatch&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
local sub = mw.ustring.sub&lt;br /&gt;
&lt;br /&gt;
-- Mapping of initial consonants.&lt;br /&gt;
local initial_conv = {&lt;br /&gt;
	[&amp;#039;ກ&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ຂ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ຄ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ງ&amp;#039;] = &amp;#039;ng&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຈ&amp;#039;] = &amp;#039;ch&amp;#039;, [&amp;#039;ສ&amp;#039;] = &amp;#039;s&amp;#039;, [&amp;#039;ຊ&amp;#039;] = &amp;#039;s&amp;#039;, [&amp;#039;ຍ&amp;#039;] = &amp;#039;ny&amp;#039;,&lt;br /&gt;
	[&amp;#039;ດ&amp;#039;] = &amp;#039;d&amp;#039;, [&amp;#039;ຕ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ຖ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ທ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ນ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ບ&amp;#039;] = &amp;#039;b&amp;#039;, [&amp;#039;ປ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ຜ&amp;#039;] = &amp;#039;ph&amp;#039;, [&amp;#039;ຝ&amp;#039;] = &amp;#039;f&amp;#039;, [&amp;#039;ພ&amp;#039;] = &amp;#039;ph&amp;#039;, [&amp;#039;ຟ&amp;#039;] = &amp;#039;f&amp;#039;, [&amp;#039;ມ&amp;#039;] = &amp;#039;m&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຢ&amp;#039;] = &amp;#039;y&amp;#039;, [&amp;#039;ຣ&amp;#039;] = &amp;#039;r&amp;#039;, [&amp;#039;ລ&amp;#039;] = &amp;#039;l&amp;#039;, [&amp;#039;ວ&amp;#039;] = &amp;#039;w&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫ&amp;#039;] = &amp;#039;h&amp;#039;, [&amp;#039;ອ&amp;#039;] = &amp;#039;ʼ&amp;#039;, [&amp;#039;ຮ&amp;#039;] = &amp;#039;h&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	[&amp;#039;ຫງ&amp;#039;] = &amp;#039;ng&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫຍ&amp;#039;] = &amp;#039;ny&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫນ&amp;#039;] = &amp;#039;n&amp;#039;, [&amp;#039;ໜ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫມ&amp;#039;] = &amp;#039;m&amp;#039;, [&amp;#039;ໝ&amp;#039;] = &amp;#039;m&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫຣ&amp;#039;] = &amp;#039;r&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫລ&amp;#039;] = &amp;#039;l&amp;#039;, [&amp;#039;ຫຼ&amp;#039;] = &amp;#039;l&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫວ&amp;#039;] = &amp;#039;w&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	[&amp;#039;ກຣ&amp;#039;] = &amp;#039;kr&amp;#039;, [&amp;#039;ກລ&amp;#039;] = &amp;#039;kl&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຂຣ&amp;#039;] = &amp;#039;khr&amp;#039;, [&amp;#039;ຄຣ&amp;#039;] = &amp;#039;khr&amp;#039;, [&amp;#039;ຂລ&amp;#039;] = &amp;#039;khl&amp;#039;, [&amp;#039;ຄລ&amp;#039;] = &amp;#039;khl&amp;#039;,&lt;br /&gt;
	[&amp;#039;ປຣ&amp;#039;] = &amp;#039;pr&amp;#039;, [&amp;#039;ປລ&amp;#039;] = &amp;#039;pl&amp;#039;,&lt;br /&gt;
	[&amp;#039;ພຣ&amp;#039;] = &amp;#039;phr&amp;#039;, [&amp;#039;ຟຣ&amp;#039;] = &amp;#039;fr&amp;#039;, [&amp;#039;ພລ&amp;#039;] = &amp;#039;phl&amp;#039;, [&amp;#039;ຟລ&amp;#039;] = &amp;#039;fl&amp;#039;,&lt;br /&gt;
	[&amp;#039;ດຣ&amp;#039;] = &amp;#039;dr&amp;#039;, [&amp;#039;ຕຣ&amp;#039;] = &amp;#039;tr&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Mapping of glides.&lt;br /&gt;
local glide_conv = {&lt;br /&gt;
	[&amp;#039;ຼ&amp;#039;] = &amp;#039;r&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Mapping of vowel combinations.&lt;br /&gt;
local vowel_conv = {&lt;br /&gt;
	[&amp;#039;ະ&amp;#039;] = &amp;#039;a&amp;#039;, [&amp;#039;ັ&amp;#039;] = &amp;#039;a&amp;#039;,&lt;br /&gt;
	[&amp;#039;ິ&amp;#039;] = &amp;#039;i&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຶ&amp;#039;] = &amp;#039;ư&amp;#039;, [&amp;#039;ຸ&amp;#039;] = &amp;#039;u&amp;#039;, [&amp;#039;ຸຍ&amp;#039;] = &amp;#039;ui&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເະ&amp;#039;] = &amp;#039;e&amp;#039;, [&amp;#039;ເັ&amp;#039;] = &amp;#039;e&amp;#039;,&lt;br /&gt;
	[&amp;#039;ແະ&amp;#039;] = &amp;#039;æ&amp;#039;, [&amp;#039;ແັ&amp;#039;] = &amp;#039;æ&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໂະ&amp;#039;] = &amp;#039;o&amp;#039;, [&amp;#039;ົ&amp;#039;] = &amp;#039;o&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເາະ&amp;#039;] = &amp;#039;ǫ&amp;#039;, [&amp;#039;ັອ&amp;#039;] = &amp;#039;ǫ&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເິ&amp;#039;] = &amp;#039;œ&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເັຍ&amp;#039;] = &amp;#039;ia&amp;#039;, [&amp;#039;ັຽ&amp;#039;] = &amp;#039;ia&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເຶອ&amp;#039;] = &amp;#039;ưa&amp;#039;,&lt;br /&gt;
	[&amp;#039;ົວະ&amp;#039;] = &amp;#039;ua&amp;#039;, [&amp;#039;ັວ&amp;#039;] = &amp;#039;ua&amp;#039;, [&amp;#039;ວັ&amp;#039;] = &amp;#039;ua&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໄ&amp;#039;] = &amp;#039;ai&amp;#039;, [&amp;#039;ໃ&amp;#039;] = &amp;#039;ai&amp;#039;, [&amp;#039;ັຍ&amp;#039;] = &amp;#039;ai&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເົາ&amp;#039;] = &amp;#039;ao&amp;#039;,&lt;br /&gt;
	[&amp;#039;ົາວ&amp;#039;] = &amp;#039;uau&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຳ&amp;#039;] = &amp;#039;am&amp;#039;, [&amp;#039;ໍາ&amp;#039;] = &amp;#039;am&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວຳ&amp;#039;] = &amp;#039;uam&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	[&amp;#039;າ&amp;#039;] = &amp;#039;ā&amp;#039;,&lt;br /&gt;
	[&amp;#039;າວ&amp;#039;] = &amp;#039;āo&amp;#039;,&lt;br /&gt;
	[&amp;#039;ີ&amp;#039;] = &amp;#039;ī&amp;#039;,&lt;br /&gt;
	[&amp;#039;ື&amp;#039;] = &amp;#039;ư̄&amp;#039;,&lt;br /&gt;
	[&amp;#039;ູ&amp;#039;] = &amp;#039;ū&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເ&amp;#039;] = &amp;#039;ē&amp;#039;,&lt;br /&gt;
	[&amp;#039;ແ&amp;#039;] = &amp;#039;ǣ&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໂ&amp;#039;] = &amp;#039;ō&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໂຍ&amp;#039;] = &amp;#039;ōi&amp;#039;, [&amp;#039;ໂຽ&amp;#039;] = &amp;#039;ōi&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໍ&amp;#039;] = &amp;#039;ǭ&amp;#039;, [&amp;#039;ອ&amp;#039;] = &amp;#039;ǭ&amp;#039;,&lt;br /&gt;
	[&amp;#039;ອຍ&amp;#039;] = &amp;#039;ǭi&amp;#039;, [&amp;#039;ອຽ&amp;#039;] = &amp;#039;ǭi&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເີ&amp;#039;] = &amp;#039;œ̄&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເີຽ&amp;#039;] = &amp;#039;œ̄i&amp;#039;, [&amp;#039;ເີຍ&amp;#039;] = &amp;#039;œ̄i&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເຍ&amp;#039;] = &amp;#039;īa&amp;#039;, [&amp;#039;ເັຽ&amp;#039;] = &amp;#039;īa&amp;#039;, [&amp;#039;ຽ&amp;#039;] = &amp;#039;īa&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເືອ&amp;#039;] = &amp;#039;ư̄a&amp;#039;, [&amp;#039;ເືອຍ&amp;#039;] = &amp;#039;ư̄ai&amp;#039;,&lt;br /&gt;
	[&amp;#039;ົວ&amp;#039;] = &amp;#039;ūa&amp;#039;, [&amp;#039;ວ&amp;#039;] = &amp;#039;ūa&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວຍ&amp;#039;] = &amp;#039;uāi&amp;#039;, [&amp;#039;ວຽ&amp;#039;] = &amp;#039;uāi&amp;#039;,&lt;br /&gt;
	[&amp;#039;າຍ&amp;#039;] = &amp;#039;āi&amp;#039;, [&amp;#039;າຽ&amp;#039;] = &amp;#039;āi&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວາ&amp;#039;] = &amp;#039;uā&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວາຍ&amp;#039;] = &amp;#039;uāi&amp;#039;, [&amp;#039;ວາຽ&amp;#039;] = &amp;#039;uāi&amp;#039;,&lt;br /&gt;
	[&amp;#039;ແວ&amp;#039;] = &amp;#039;ǣu&amp;#039;, -- ແ_ວ can either be ǣu and uǣ with the first one being more common.&lt;br /&gt;
	[&amp;#039;ີວ&amp;#039;] = &amp;#039;īu&amp;#039;, [&amp;#039;ິວ&amp;#039;] = &amp;#039;iu&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຽວ&amp;#039;] = &amp;#039;iāu&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວີວ&amp;#039;] = &amp;#039;uīu&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Mapping of coda consonants.&lt;br /&gt;
local coda_conv = {&lt;br /&gt;
	[&amp;#039;ກ&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ຂ&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ຄ&amp;#039;] = &amp;#039;k&amp;#039;,&lt;br /&gt;
	[&amp;#039;ງ&amp;#039;] = &amp;#039;ng&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຈ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ຊ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ດ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ຕ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ຖ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ທ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ສ&amp;#039;] = &amp;#039;s&amp;#039;,&lt;br /&gt;
	[&amp;#039;ນ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ບ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ປ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ພ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ຟ&amp;#039;] = &amp;#039;p&amp;#039;,&lt;br /&gt;
	[&amp;#039;ມ&amp;#039;] = &amp;#039;m&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຢ&amp;#039;] = &amp;#039;y&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຣ&amp;#039;] = &amp;#039;n&amp;#039;, [&amp;#039;ລ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ວ&amp;#039;] = &amp;#039;w&amp;#039;,&lt;br /&gt;
	[&amp;#039;&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Special symbols.&lt;br /&gt;
local sp_symbols = {&lt;br /&gt;
	[&amp;#039;ຯ&amp;#039;] = &amp;#039;〃&amp;#039;, [&amp;#039;ໆ&amp;#039;] = &amp;#039;〃&amp;#039;,&lt;br /&gt;
	[&amp;#039;໌&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;໐&amp;#039;] = &amp;#039;0&amp;#039;, [&amp;#039;໑&amp;#039;] = &amp;#039;1&amp;#039;, [&amp;#039;໒&amp;#039;] = &amp;#039;2&amp;#039;, [&amp;#039;໓&amp;#039;] = &amp;#039;3&amp;#039;, [&amp;#039;໔&amp;#039;] = &amp;#039;4&amp;#039;,&lt;br /&gt;
	[&amp;#039;໕&amp;#039;] = &amp;#039;5&amp;#039;, [&amp;#039;໖&amp;#039;] = &amp;#039;6&amp;#039;, [&amp;#039;໗&amp;#039;] = &amp;#039;7&amp;#039;, [&amp;#039;໘&amp;#039;] = &amp;#039;8&amp;#039;, [&amp;#039;໙&amp;#039;] = &amp;#039;9&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- List of character types.&lt;br /&gt;
local char_type = {&lt;br /&gt;
	[&amp;#039;ກ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຂ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຄ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ງ&amp;#039;] = &amp;#039;coda&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຈ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຊ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຍ&amp;#039;] = &amp;#039;ambig&amp;#039;,&lt;br /&gt;
	[&amp;#039;ດ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຕ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຖ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ທ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ນ&amp;#039;] = &amp;#039;coda&amp;#039;,&lt;br /&gt;
	[&amp;#039;ບ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ປ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຜ&amp;#039;] = &amp;#039;cons&amp;#039;, [&amp;#039;ຝ&amp;#039;] = &amp;#039;cons&amp;#039;, [&amp;#039;ພ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຟ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ມ&amp;#039;] = &amp;#039;coda&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຢ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຣ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ລ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ວ&amp;#039;] = &amp;#039;ambig&amp;#039;,&lt;br /&gt;
	[&amp;#039;ສ&amp;#039;] = &amp;#039;coda&amp;#039;, [&amp;#039;ຫ&amp;#039;] = &amp;#039;cons&amp;#039;, [&amp;#039;ອ&amp;#039;] = &amp;#039;ambig&amp;#039;, [&amp;#039;ຮ&amp;#039;] = &amp;#039;cons&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໜ&amp;#039;] = &amp;#039;cons&amp;#039;, [&amp;#039;ໝ&amp;#039;] = &amp;#039;cons&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຯ&amp;#039;] = &amp;#039;iter_symbol&amp;#039;,&lt;br /&gt;
	[&amp;#039;ະ&amp;#039;] = &amp;#039;vowel_let&amp;#039;, [&amp;#039;ັ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;າ&amp;#039;] = &amp;#039;vowel_let&amp;#039;, [&amp;#039;ຳ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;ິ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;ີ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;ຶ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;ື&amp;#039;] = &amp;#039;suf_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຸ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;ູ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;, [&amp;#039;ົ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຼ&amp;#039;] = &amp;#039;glide&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຽ&amp;#039;] = &amp;#039;vowel_let&amp;#039;,&lt;br /&gt;
	[&amp;#039;ເ&amp;#039;] = &amp;#039;pref_vowel&amp;#039;, [&amp;#039;ແ&amp;#039;] = &amp;#039;pref_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໂ&amp;#039;] = &amp;#039;pref_vowel&amp;#039;, [&amp;#039;ໃ&amp;#039;] = &amp;#039;pref_vowel&amp;#039;, [&amp;#039;ໄ&amp;#039;] = &amp;#039;pref_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;ໆ&amp;#039;] = &amp;#039;iter_symbol&amp;#039;,&lt;br /&gt;
	[&amp;#039;່&amp;#039;] = &amp;#039;tone&amp;#039;, [&amp;#039;້&amp;#039;] = &amp;#039;tone&amp;#039;, [&amp;#039;໊&amp;#039;] = &amp;#039;tone&amp;#039;, [&amp;#039;໋&amp;#039;] = &amp;#039;tone&amp;#039;,&lt;br /&gt;
	[&amp;#039;໌&amp;#039;] = &amp;#039;canc_symbol&amp;#039;, [&amp;#039;ໍ&amp;#039;] = &amp;#039;suf_vowel&amp;#039;,&lt;br /&gt;
	[&amp;#039;໐&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໑&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໒&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໓&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໔&amp;#039;] = &amp;#039;number&amp;#039;,&lt;br /&gt;
	[&amp;#039;໕&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໖&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໗&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໘&amp;#039;] = &amp;#039;number&amp;#039;, [&amp;#039;໙&amp;#039;] = &amp;#039;number&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- List of consonant classes&lt;br /&gt;
local cons_class = {&lt;br /&gt;
	[&amp;#039;ກ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຂ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ຄ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ງ&amp;#039;] = &amp;#039;low&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຈ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ສ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ຊ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ຍ&amp;#039;] = &amp;#039;low&amp;#039;,&lt;br /&gt;
	[&amp;#039;ດ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຕ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຖ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ທ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ນ&amp;#039;] = &amp;#039;low&amp;#039;,&lt;br /&gt;
	[&amp;#039;ບ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ປ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຜ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ຝ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ພ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ຟ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ມ&amp;#039;] = &amp;#039;low&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຢ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຣ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ລ&amp;#039;] = &amp;#039;low&amp;#039;, [&amp;#039;ວ&amp;#039;] = &amp;#039;low&amp;#039;,&lt;br /&gt;
	[&amp;#039;ຫ&amp;#039;] = &amp;#039;high&amp;#039;, [&amp;#039;ອ&amp;#039;] = &amp;#039;mid&amp;#039;, [&amp;#039;ຮ&amp;#039;] = &amp;#039;low&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Reset the syllable table.&lt;br /&gt;
local function reset_syllable()&lt;br /&gt;
	return { curr = {}, initial = {}, glide = {}, vowel = {}, tone = {}, coda = {}, sp = {} }  -- current (i.e. full syllable), initial, vowel, tone, coda, sp(ecial)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Store the current syllable, then reset the syllable table.&lt;br /&gt;
local function store_and_reset(syllables, curr_syll)&lt;br /&gt;
	table.insert(syllables, {&lt;br /&gt;
		curr = curr_syll.curr,&lt;br /&gt;
		initial = curr_syll.initial,&lt;br /&gt;
		glide = curr_syll.glide,&lt;br /&gt;
		vowel = curr_syll.vowel,&lt;br /&gt;
		tone = curr_syll.tone,&lt;br /&gt;
		coda = curr_syll.coda,&lt;br /&gt;
		sp = curr_syll.sp&lt;br /&gt;
	})&lt;br /&gt;
	return reset_syllable()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Split the entry into individual syllables.&lt;br /&gt;
function export.split_syll(text, debug)&lt;br /&gt;
	-- Store the split syllables.&lt;br /&gt;
	local syllables = {}&lt;br /&gt;
	local debug_syllables = {}&lt;br /&gt;
	local curr_syll = reset_syllable()&lt;br /&gt;
&lt;br /&gt;
	-- Iterate through Lao characters.&lt;br /&gt;
	for lao_text in gmatch(text, &amp;#039;[ກ-ໝ]+&amp;#039;) do&lt;br /&gt;
		local c, c_types = {}, {}&lt;br /&gt;
&lt;br /&gt;
		-- Classify each character in the syllable.&lt;br /&gt;
		for i = 1, len(lao_text) do&lt;br /&gt;
			c[i] = sub(lao_text, i, i)&lt;br /&gt;
			c_types[i] = char_type[c[i]]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Parse the entry by identifying each character&amp;#039;s type.&lt;br /&gt;
		for i = 1, #c + 1 do&lt;br /&gt;
			local type_curr, type_next = c_types[i], c_types[i+1]&lt;br /&gt;
			local curr_vowel_full = table.concat(curr_syll.vowel)&lt;br /&gt;
&lt;br /&gt;
			-- Prefix vowels are always the start of a new syllable.&lt;br /&gt;
			if type_curr == &amp;#039;pref_vowel&amp;#039; or i == #c + 1 then&lt;br /&gt;
				if #curr_syll.curr ~= 0 then&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(curr_syll.vowel, c[i])&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
&lt;br /&gt;
			-- Glide consonants always follow the initial consonant.&lt;br /&gt;
			elseif type_curr == &amp;#039;glide&amp;#039; then&lt;br /&gt;
				table.insert(curr_syll.glide, c[i])&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
&lt;br /&gt;
			-- Suffix vowels and vowel letters are always part of the same syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;suf_vowel&amp;#039; or type_curr == &amp;#039;vowel_let&amp;#039; then&lt;br /&gt;
				table.insert(curr_syll.vowel, c[i])&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
&lt;br /&gt;
			-- Same with tone marks.&lt;br /&gt;
			elseif type_curr == &amp;#039;tone&amp;#039; then&lt;br /&gt;
				table.insert(curr_syll.tone, c[i])&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
&lt;br /&gt;
			-- Some consonants can end a syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;coda&amp;#039; then&lt;br /&gt;
				if #curr_syll.coda == 0 and initial_conv[table.concat(curr_syll.initial)..c[i]] and (#curr_syll.vowel == 0 or char_type[curr_vowel_full] == &amp;#039;pref_vowel&amp;#039;) then&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				elseif #curr_syll.coda == 0 and #curr_syll.initial ~= 0 and (type_next ~= &amp;#039;glide&amp;#039; and type_next ~= &amp;#039;suf_vowel&amp;#039; and type_next ~= &amp;#039;vowel_let&amp;#039; and type_next ~= &amp;#039;tone&amp;#039;)&lt;br /&gt;
				and not (type_next == &amp;#039;ambig&amp;#039; and match(c_types[i+2], &amp;#039;co&amp;#039;))&lt;br /&gt;
				and not ((c_types[i-1] ~= &amp;#039;tone&amp;#039; and c_types[i-1] ~= &amp;#039;suf_vowel&amp;#039; and c[i-1] ~= &amp;#039;ອ&amp;#039;) and type_next == &amp;#039;ambig&amp;#039; and match(c[i + 2], &amp;#039;[ຍາ]&amp;#039;)) then&lt;br /&gt;
					table.insert(curr_syll.coda, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				else&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			-- However, some consonants can only start a syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;cons&amp;#039; then&lt;br /&gt;
				if #curr_syll.coda == 0 and initial_conv[table.concat(curr_syll.initial)..c[i]] and (#curr_syll.vowel == 0 or char_type[curr_vowel_full] == &amp;#039;pref_vowel&amp;#039;) then&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				else&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			-- Ambiguous characters can both start or end a syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;ambig&amp;#039; then&lt;br /&gt;
				if #curr_syll.curr &amp;gt; 0 and c[i] == &amp;#039;ອ&amp;#039; and type_next == &amp;#039;suf_vowel&amp;#039; then&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				elseif #curr_syll.initial == 0 or char_type[curr_vowel_full] == &amp;#039;pref_vowel&amp;#039; then&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				elseif c[i] == &amp;#039;ຍ&amp;#039; and c[i-1] == &amp;#039;າ&amp;#039; then -- quick hack (FIXME)&lt;br /&gt;
					table.insert(curr_syll.vowel, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				elseif c[i] == &amp;#039;ຍ&amp;#039; and c[i-1] ~= &amp;#039;ຫ&amp;#039; and #curr_vowel_full == 0 then&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				elseif #curr_syll.initial ~= 0 and (#curr_vowel_full == 0 or vowel_conv[curr_vowel_full..c[i]] and&lt;br /&gt;
				(type_next ~= &amp;#039;glide&amp;#039; and type_next ~= &amp;#039;suf_vowel&amp;#039; and type_next ~= &amp;#039;vowel_let&amp;#039; and type_next ~= &amp;#039;tone&amp;#039;)) then&lt;br /&gt;
					table.insert(curr_syll.vowel, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				else&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
					table.insert(curr_syll.initial, c[i])&lt;br /&gt;
					table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			-- Iteration and cancel symbols should be treated as part of the same syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;iter_symbol&amp;#039; or &amp;#039;canc_symbol&amp;#039; then&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				table.insert(curr_syll.sp, c[i])&lt;br /&gt;
&lt;br /&gt;
			-- However, numbers should be treated in their own syllable.&lt;br /&gt;
			elseif type_curr == &amp;#039;number&amp;#039; then&lt;br /&gt;
				if curr_syll.initial ~= 0 or curr_syll.glide ~= 0 or curr_syll.vowel ~= 0 or curr_syll.tone ~= 0 or curr_syll.coda ~= 0 then&lt;br /&gt;
					curr_syll = store_and_reset(syllables, curr_syll)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(curr_syll.curr, c[i])&lt;br /&gt;
				table.insert(curr_syll.sp, c[i])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- For debug mode, return concatenated `curr` values.&lt;br /&gt;
	if debug then&lt;br /&gt;
		for _, syll in ipairs(syllables) do&lt;br /&gt;
			table.insert(debug_syllables, table.concat(syll.curr))&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(debug_syllables, &amp;#039;-&amp;#039;)&lt;br /&gt;
	-- Otherwise, return full syllable information.&lt;br /&gt;
	else&lt;br /&gt;
		return syllables&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Generate the transliteration of a Lao entry given the split syllables.&lt;br /&gt;
function export.tr(text, lang, sc)&lt;br /&gt;
	-- Split the entry into syllables.&lt;br /&gt;
	local syllables = export.split_syll(text, false)&lt;br /&gt;
&lt;br /&gt;
	-- Store the transliteration.&lt;br /&gt;
	local translit = {}&lt;br /&gt;
&lt;br /&gt;
	-- Iterate through each syllable.&lt;br /&gt;
	for _, syllable in ipairs(syllables) do&lt;br /&gt;
		-- Handle various edge cases.&lt;br /&gt;
		if table.concat(syllable.initial) == &amp;#039;ຫ&amp;#039; and table.concat(syllable.glide) == &amp;#039;ຼ&amp;#039; then  -- ຫຼ&lt;br /&gt;
			syllable.initial = {&amp;#039;ຫ&amp;#039;, &amp;#039;ຼ&amp;#039;}&lt;br /&gt;
			syllable.glide = {}&lt;br /&gt;
		end&lt;br /&gt;
		if table.concat(syllable.initial) ~= &amp;#039;&amp;#039; and table.concat(syllable.vowel) == &amp;#039;&amp;#039; then  -- null vowel is pronounced like ະ given an initial consonant&lt;br /&gt;
			syllable.vowel = {&amp;#039;ະ&amp;#039;}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Handle cases where ambiguous vowels are put in the initial consonant position when it really should be a vowel.&lt;br /&gt;
		if #syllable.initial &amp;gt; 1 and syllable.initial[#syllable.initial] == &amp;#039;ວ&amp;#039; then&lt;br /&gt;
			table.remove(syllable.initial)&lt;br /&gt;
			table.insert(syllable.vowel, &amp;#039;ວ&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if #syllable.initial &amp;gt; 1 and syllable.initial[#syllable.initial] == &amp;#039;ຍ&amp;#039; then&lt;br /&gt;
			table.remove(syllable.initial)&lt;br /&gt;
			table.insert(syllable.vowel, &amp;#039;ຍ&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Handle cases where ຍ is in the vowle position but should be in initially position with ຫ.&lt;br /&gt;
		if #syllable.vowel &amp;gt; 1 and syllable.vowel[1] == &amp;#039;ຍ&amp;#039; and syllable.initial[1] == &amp;#039;ຫ&amp;#039; then&lt;br /&gt;
			table.remove(syllable.vowel, 1)&lt;br /&gt;
			table.insert(syllable.initial, &amp;#039;ຍ&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Map consonants, glides, vowels and codas mapped to their transliterations.&lt;br /&gt;
		local initial = initial_conv[table.concat(syllable.initial)] or &amp;#039;&amp;#039;&lt;br /&gt;
		local glide = glide_conv[table.concat(syllable.glide)] or &amp;#039;&amp;#039;&lt;br /&gt;
		local vowel = vowel_conv[table.concat(syllable.vowel)] or &amp;#039;&amp;#039;&lt;br /&gt;
		local coda = coda_conv[table.concat(syllable.coda)] or &amp;#039;&amp;#039;&lt;br /&gt;
		-- Special symbols can just be added directly.&lt;br /&gt;
		local sp = &amp;#039;&amp;#039;&lt;br /&gt;
		for c in gmatch(table.concat(syllable.curr), &amp;quot;.&amp;quot;) do&lt;br /&gt;
			sp = sp .. (sp_symbols[c] or &amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- ແ_ວ is uǣ with certain initial consonants (ກຂຄງຈສຊຖທລອຮ) plus a coda.&lt;br /&gt;
		if match(table.concat(syllable.initial), &amp;#039;[ກຂຄງຈສຊຖທລອຮ]&amp;#039;) and match(table.concat(syllable.vowel), &amp;#039;ແວ&amp;#039;) and coda ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			vowel = &amp;#039;uǣ&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		-- _ວຍ is ūai when the initial consonant is ຫ.&lt;br /&gt;
		if match(table.concat(syllable.initial), &amp;#039;ຫ&amp;#039;) and match(table.concat(syllable.vowel), &amp;#039;ວຍ&amp;#039;) then&lt;br /&gt;
			vowel = &amp;#039;ūai&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		-- _ວຽ is uīa when the coda is ນ.&lt;br /&gt;
		if match(table.concat(syllable.coda), &amp;#039;ນ&amp;#039;) and match(table.concat(syllable.vowel), &amp;#039;ວຽ&amp;#039;) then&lt;br /&gt;
			vowel = &amp;#039;uīa&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Construct the transliterated syllable string.&lt;br /&gt;
		local syll_string = initial .. glide .. vowel .. coda .. sp&lt;br /&gt;
&lt;br /&gt;
		-- Check if &amp;#039;໌&amp;#039; is present, which indicates a cancel symbol.&lt;br /&gt;
		if match(table.concat(syllable.sp), &amp;#039;໌&amp;#039;) then&lt;br /&gt;
			syll_string = gsub(syll_string, &amp;#039;.$&amp;#039;, &amp;#039;&amp;lt;small&amp;gt;&amp;lt;del&amp;gt;%0&amp;lt;/del&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Then check if ຯ or ໆ is present, which indicates an iteration symbol.&lt;br /&gt;
		if match(table.concat(syllable.sp), &amp;#039;[ຯໆ]&amp;#039;) and (initial ~= &amp;#039;&amp;#039; or glide ~= &amp;#039;&amp;#039; or vowel ~= &amp;#039;&amp;#039; or coda ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
			-- Add the transliteration of the syllable to the list with another small underlined version.&lt;br /&gt;
			syll_string = gsub(syll_string, &amp;#039;〃&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
			table.insert(translit, syll_string)&lt;br /&gt;
			table.insert(translit, &amp;#039;&amp;lt;small&amp;gt;&amp;lt;u&amp;gt;&amp;#039; .. syll_string .. &amp;#039;&amp;lt;/u&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			-- Add the transliteration of the syllable to the list only once.&lt;br /&gt;
			table.insert(translit, syll_string)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Return the transliteration as a concatenated string.&lt;br /&gt;
	return table.concat(translit, &amp;#039; &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>wikt&gt;AmazingJus</name></author>
	</entry>
</feed>