<?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%3Ala-vul-translit</id>
	<title>Module:la-vul-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%3Ala-vul-translit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:la-vul-translit&amp;action=history"/>
	<updated>2026-05-18T23:19:29Z</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:la-vul-translit&amp;diff=495699&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:la-vul-translit&amp;diff=495699&amp;oldid=prev"/>
		<updated>2026-04-21T12:44:37Z</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:44, 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:la-vul-translit&amp;diff=495698&amp;oldid=prev</id>
		<title>wikt&gt;Theknightwho at 00:30, 1 April 2025</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:la-vul-translit&amp;diff=495698&amp;oldid=prev"/>
		<updated>2025-04-01T00:30:46Z</updated>

		<summary type="html">&lt;p&gt;&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_str_utils = require(&amp;quot;Module:string utilities&amp;quot;)&lt;br /&gt;
local m_table = require(&amp;quot;Module:table&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local concat = table.concat&lt;br /&gt;
local extend = m_table.extend&lt;br /&gt;
local insert = table.insert&lt;br /&gt;
local list_to_set = m_table.listToSet&lt;br /&gt;
local remove = table.remove&lt;br /&gt;
local ugmatch = mw.ustring.gmatch&lt;br /&gt;
local ugsub = m_str_utils.gsub&lt;br /&gt;
local ulen = m_str_utils.len&lt;br /&gt;
local umatch = mw.ustring.match&lt;br /&gt;
local usub = m_str_utils.sub&lt;br /&gt;
&lt;br /&gt;
local vowel_patterns = {}&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;all&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;ā&amp;quot;, &amp;quot;a&amp;quot;},&lt;br /&gt;
	{&amp;quot;ae&amp;quot;, &amp;quot;ę&amp;quot;},&lt;br /&gt;
	{&amp;quot;áé&amp;quot;, &amp;quot;ę́&amp;quot;},&lt;br /&gt;
	{&amp;quot;e&amp;quot;, &amp;quot;ę&amp;quot;},&lt;br /&gt;
	{&amp;quot;o&amp;quot;, &amp;quot;ǫ&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;It-W&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;ē&amp;quot;, &amp;quot;ẹ&amp;quot;},&lt;br /&gt;
	{&amp;quot;i&amp;quot;, &amp;quot;ẹ&amp;quot;},&lt;br /&gt;
	{&amp;quot;ī&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ō&amp;quot;, &amp;quot;ọ&amp;quot;},&lt;br /&gt;
	{&amp;quot;u&amp;quot;, &amp;quot;ọ&amp;quot;},&lt;br /&gt;
	{&amp;quot;ū&amp;quot;, &amp;quot;u&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;Italo-Western&amp;quot;] = vowel_patterns[&amp;quot;It-W&amp;quot;]&lt;br /&gt;
vowel_patterns[&amp;quot;Western&amp;quot;] = vowel_patterns[&amp;quot;It-W&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;E&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;ē&amp;quot;, &amp;quot;ẹ&amp;quot;},&lt;br /&gt;
	{&amp;quot;i&amp;quot;, &amp;quot;ẹ&amp;quot;},&lt;br /&gt;
	{&amp;quot;ī&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ō&amp;quot;, &amp;quot;o&amp;quot;},&lt;br /&gt;
	{&amp;quot;ū&amp;quot;, &amp;quot;u&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;Eastern&amp;quot;] = vowel_patterns[&amp;quot;E&amp;quot;]&lt;br /&gt;
vowel_patterns[&amp;quot;Romanian&amp;quot;] = vowel_patterns[&amp;quot;E&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;S&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;ē&amp;quot;, &amp;quot;e&amp;quot;},&lt;br /&gt;
	{&amp;quot;ẹ&amp;quot;, &amp;quot;e&amp;quot;},&lt;br /&gt;
	{&amp;quot;ī&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ō&amp;quot;, &amp;quot;o&amp;quot;},&lt;br /&gt;
	{&amp;quot;ọ&amp;quot;, &amp;quot;o&amp;quot;},&lt;br /&gt;
	{&amp;quot;ū&amp;quot;, &amp;quot;u&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vowel_patterns[&amp;quot;Sardinian&amp;quot;] = vowel_patterns[&amp;quot;S&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
local dictionary = {&lt;br /&gt;
	[&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,[&amp;quot;e&amp;quot;] = &amp;quot;e&amp;quot;,[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,[&amp;quot;o&amp;quot;] = &amp;quot;o&amp;quot;,[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
	[&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;
	[&amp;quot;ae&amp;quot;] = &amp;quot;ae&amp;quot;,[&amp;quot;oe&amp;quot;] = &amp;quot;ē&amp;quot;,[&amp;quot;ai&amp;quot;] = &amp;quot;aị&amp;quot;,[&amp;quot;ei&amp;quot;] = &amp;quot;ėị&amp;quot;,[&amp;quot;au&amp;quot;] = &amp;quot;aụ&amp;quot;,[&amp;quot;eu&amp;quot;] = &amp;quot;ėụ&amp;quot;,&lt;br /&gt;
	[&amp;quot;b&amp;quot;] = &amp;quot;b&amp;quot;,[&amp;quot;d&amp;quot;] = &amp;quot;d&amp;quot;,[&amp;quot;f&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;c&amp;quot;] = &amp;quot;c&amp;quot;,[&amp;quot;g&amp;quot;] = &amp;quot;g&amp;quot;,[&amp;quot;v&amp;quot;] = &amp;quot;v&amp;quot;,[&amp;quot;x&amp;quot;] = &amp;quot;x&amp;quot;,&lt;br /&gt;
	[&amp;quot;qu&amp;quot;] = &amp;quot;qŭ&amp;quot;,&lt;br /&gt;
	[&amp;quot;&amp;#039;&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local vowels = list_to_set{&lt;br /&gt;
	&amp;quot;a&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;i&amp;quot;, &amp;quot;o&amp;quot;, &amp;quot;u&amp;quot;,&lt;br /&gt;
	&amp;quot;ā&amp;quot;, &amp;quot;ē&amp;quot;, &amp;quot;ī&amp;quot;, &amp;quot;ō&amp;quot;, &amp;quot;ū&amp;quot;,&lt;br /&gt;
	&amp;quot;ae&amp;quot;, &amp;quot;oe&amp;quot;, &amp;quot;aị&amp;quot;, &amp;quot;ėị&amp;quot;, &amp;quot;aụ&amp;quot;, &amp;quot;ėụ&amp;quot;,&lt;br /&gt;
	&amp;quot;-&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local onsets = list_to_set{&lt;br /&gt;
	&amp;quot;b&amp;quot;, &amp;quot;p&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;t&amp;quot;,&lt;br /&gt;
	&amp;quot;g&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;cu&amp;quot;, &amp;quot;qŭ&amp;quot;,&lt;br /&gt;
	&amp;quot;f&amp;quot;, &amp;quot;s&amp;quot;, &amp;quot;z&amp;quot;,&lt;br /&gt;
	&amp;quot;l&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;r&amp;quot;, &amp;quot;j&amp;quot;, &amp;quot;v&amp;quot;, &amp;quot;w&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;bl&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;br&amp;quot;, &amp;quot;pr&amp;quot;, &amp;quot;ps&amp;quot;, &lt;br /&gt;
	&amp;quot;dr&amp;quot;, &amp;quot;tr&amp;quot;,&lt;br /&gt;
	&amp;quot;gl&amp;quot;, &amp;quot;cl&amp;quot;, &amp;quot;gr&amp;quot;, &amp;quot;cr&amp;quot;,&lt;br /&gt;
	&amp;quot;fl&amp;quot;, &amp;quot;fr&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;sp&amp;quot;, &amp;quot;st&amp;quot;, &amp;quot;sc&amp;quot;, &amp;quot;scu&amp;quot;, &amp;quot;sl&amp;quot;, &amp;quot;sm&amp;quot;, &amp;quot;sn&amp;quot;, &amp;quot;su&amp;quot;,&lt;br /&gt;
	&amp;quot;spr&amp;quot;, &amp;quot;str&amp;quot;, &amp;quot;scr&amp;quot;,&lt;br /&gt;
	&amp;quot;spl&amp;quot;, &amp;quot;scl&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local codas = list_to_set{&lt;br /&gt;
	&amp;quot;b&amp;quot;, &amp;quot;p&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;g&amp;quot;, &amp;quot;c&amp;quot;,&lt;br /&gt;
	&amp;quot;f&amp;quot;, &amp;quot;s&amp;quot;, &amp;quot;z&amp;quot;,&lt;br /&gt;
	&amp;quot;l&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;r&amp;quot;, &amp;quot;j&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;sp&amp;quot;, &amp;quot;st&amp;quot;, &amp;quot;sc&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;lp&amp;quot;, &amp;quot;lt&amp;quot;, &amp;quot;lc&amp;quot;,&lt;br /&gt;
	&amp;quot;lb&amp;quot;, &amp;quot;ld&amp;quot;, &amp;quot;lg&amp;quot;,&lt;br /&gt;
	&amp;quot;lf&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;rp&amp;quot;, &amp;quot;rt&amp;quot;, &amp;quot;rc&amp;quot;,&lt;br /&gt;
	&amp;quot;rb&amp;quot;, &amp;quot;rd&amp;quot;, &amp;quot;rg&amp;quot;,&lt;br /&gt;
	&amp;quot;rf&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;mp&amp;quot;, &amp;quot;nt&amp;quot;, &amp;quot;nc&amp;quot;,&lt;br /&gt;
	&amp;quot;mb&amp;quot;, &amp;quot;nd&amp;quot;, &amp;quot;ng&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;lm&amp;quot;, &amp;quot;rl&amp;quot;, &amp;quot;rm&amp;quot;, &amp;quot;rn&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	&amp;quot;ps&amp;quot;, &amp;quot;ts&amp;quot;, &amp;quot;cs&amp;quot;, &amp;quot;x&amp;quot;, &amp;quot;ls&amp;quot;, &amp;quot;ns&amp;quot;, &amp;quot;rs&amp;quot;,&lt;br /&gt;
	&amp;quot;lcs&amp;quot;, &amp;quot;ncs&amp;quot;, &amp;quot;rcs&amp;quot;,&lt;br /&gt;
	&amp;quot;lms&amp;quot;, &amp;quot;rls&amp;quot;, &amp;quot;rms&amp;quot;, &amp;quot;rns&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local voicing = {&lt;br /&gt;
	[&amp;quot;p&amp;quot;] = &amp;quot;b&amp;quot;,&lt;br /&gt;
	[&amp;quot;t&amp;quot;] = &amp;quot;d&amp;quot;,&lt;br /&gt;
	[&amp;quot;k&amp;quot;] = &amp;quot;ɡ&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local devoicing = m_table.invert(voicing)&lt;br /&gt;
&lt;br /&gt;
-- These phonetic rules apply to the whole word, not just a syllable&lt;br /&gt;
local word_rules_start = {&lt;br /&gt;
	{&amp;quot;h&amp;quot;, &amp;quot;&amp;quot;},&lt;br /&gt;
	{&amp;quot;k&amp;quot;, &amp;quot;c&amp;quot;},&lt;br /&gt;
	{&amp;quot;y&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ȳ&amp;quot;, &amp;quot;ī&amp;quot;},&lt;br /&gt;
	{&amp;quot;x(&amp;#039;?[ct])&amp;quot;, &amp;quot;s%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;([aeiouāēīōū]&amp;#039;?)b%f[aeiouāēīōū]&amp;quot;, &amp;quot;%1v&amp;quot;},&lt;br /&gt;
	{&amp;quot;([bdɡ])(ˈ?)%f[cfpqstx]&amp;quot;, function (consonant, stress)&lt;br /&gt;
		return (devoicing[consonant] or consonant) .. stress&lt;br /&gt;
	end},&lt;br /&gt;
	{&amp;quot;([cpt])(ˈ?)%f[bdɡ]&amp;quot;, function (consonant, stress)&lt;br /&gt;
		return (voicing[consonant] or consonant) .. stress&lt;br /&gt;
	end},&lt;br /&gt;
	{&amp;quot;m(ˈ?[cdgqtx])&amp;quot;, &amp;quot;n%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;n(ˈ?[bmp])&amp;quot;, &amp;quot;m%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;um$&amp;quot;, &amp;quot;u&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local stress_shift_rules = {&lt;br /&gt;
	[&amp;quot;qu&amp;quot;] = &amp;quot;&amp;#039;qu&amp;quot;, [&amp;quot;ngu&amp;quot;] = &amp;quot;n&amp;#039;gu&amp;quot;, [&amp;quot;gu&amp;quot;] = &amp;quot;&amp;#039;gu&amp;quot;, [&amp;quot;v&amp;quot;] = &amp;quot;&amp;#039;v&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;bl&amp;quot;] = &amp;quot;&amp;#039;bl&amp;quot;, [&amp;quot;pl&amp;quot;] = &amp;quot;&amp;#039;pl&amp;quot;, [&amp;quot;br&amp;quot;] = &amp;quot;&amp;#039;br&amp;quot;, [&amp;quot;pr&amp;quot;] = &amp;quot;&amp;#039;pr&amp;quot;,&lt;br /&gt;
	[&amp;quot;dr&amp;quot;] = &amp;quot;&amp;#039;dr&amp;quot;, [&amp;quot;tr&amp;quot;] = &amp;quot;&amp;#039;tr&amp;quot;,&lt;br /&gt;
	[&amp;quot;gl&amp;quot;] = &amp;quot;&amp;#039;gl&amp;quot;, [&amp;quot;cl&amp;quot;] = &amp;quot;&amp;#039;cl&amp;quot;, [&amp;quot;gr&amp;quot;] = &amp;quot;&amp;#039;gr&amp;quot;, [&amp;quot;cr&amp;quot;] = &amp;quot;&amp;#039;cr&amp;quot;,&lt;br /&gt;
	[&amp;quot;fl&amp;quot;] = &amp;quot;&amp;#039;fl&amp;quot;, [&amp;quot;fr&amp;quot;] = &amp;quot;&amp;#039;fr&amp;quot;, [&amp;quot;ct&amp;quot;] = &amp;quot;c&amp;#039;t&amp;quot;, [&amp;quot;pt&amp;quot;] = &amp;quot;p&amp;#039;t&amp;quot;, [&amp;quot;gd&amp;quot;] = &amp;quot;g&amp;#039;d&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;sl&amp;quot;] = &amp;quot;s&amp;#039;l&amp;quot;, [&amp;quot;sm&amp;quot;] = &amp;quot;s&amp;#039;m&amp;quot;, [&amp;quot;sn&amp;quot;] = &amp;quot;s&amp;#039;n&amp;quot;, [&amp;quot;su&amp;quot;] = &amp;quot;s&amp;#039;u&amp;quot;,&lt;br /&gt;
	[&amp;quot;st&amp;quot;] = &amp;quot;s&amp;#039;t&amp;quot;, [&amp;quot;xt&amp;quot;] = &amp;quot;x&amp;#039;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;spr&amp;quot;] = &amp;quot;s&amp;#039;pr&amp;quot;, [&amp;quot;str&amp;quot;] = &amp;quot;s&amp;#039;tr&amp;quot;, [&amp;quot;scr&amp;quot;] = &amp;quot;s&amp;#039;cr&amp;quot;,&lt;br /&gt;
	[&amp;quot;spl&amp;quot;] = &amp;quot;s&amp;#039;pl&amp;quot;, [&amp;quot;scl&amp;quot;] = &amp;quot;s&amp;#039;cl&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;nct&amp;quot;] = &amp;quot;nc&amp;#039;t&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local word_rules_end = {&lt;br /&gt;
	{&amp;quot;^ĭ&amp;quot;, &amp;quot;j&amp;quot;},&lt;br /&gt;
	-- {&amp;quot;g([ei])&amp;quot;, &amp;quot;j%1&amp;quot;},&lt;br /&gt;
	-- {&amp;quot;dĭ&amp;quot;, &amp;quot;j&amp;quot;},&lt;br /&gt;
	-- {&amp;quot;gĭ&amp;quot;, &amp;quot;j&amp;quot;},&lt;br /&gt;
	-- {&amp;quot;z&amp;quot;, &amp;quot;j&amp;quot;},&lt;br /&gt;
	{&amp;quot;ė&amp;quot;, &amp;quot;e&amp;quot;},&lt;br /&gt;
	{&amp;quot;ị&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ụ&amp;quot;, &amp;quot;u&amp;quot;},&lt;br /&gt;
	{&amp;quot;ĭ&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ŭ&amp;quot;, &amp;quot;u&amp;quot;},&lt;br /&gt;
	{&amp;quot;ei&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ii&amp;quot;, &amp;quot;i&amp;quot;},&lt;br /&gt;
	{&amp;quot;ee$&amp;quot;, &amp;quot;ie&amp;quot;},&lt;br /&gt;
	{&amp;quot;([aẹęeọǫou])(́?)e$&amp;quot;, &amp;quot;%1%2i&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local nasalized = {}&lt;br /&gt;
&lt;br /&gt;
nasalized[&amp;quot;It-W&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;[ẹęeēi](́?)[nm]&amp;quot;, &amp;quot;ẽ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[ī](́?)[nm]&amp;quot;, &amp;quot;ĩ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[ū](́?)[nm]&amp;quot;, &amp;quot;ũ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[ọǫoōu](́?)[nm]&amp;quot;, &amp;quot;õ%1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
nasalized[&amp;quot;E&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;[ẹęeēi](́?)[nm]&amp;quot;, &amp;quot;ẽ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[ī](́?)[nm]&amp;quot;, &amp;quot;ĩ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[uū](́?)[nm]&amp;quot;, &amp;quot;ũ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[ọoō](́?)[nm]&amp;quot;, &amp;quot;õ%1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
nasalized[&amp;quot;S&amp;quot;] = {&lt;br /&gt;
	{&amp;quot;[eē](́?)[nm]&amp;quot;, &amp;quot;ẽ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[iī](́?)[nm]&amp;quot;, &amp;quot;ĩ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[uū](́?)[nm]&amp;quot;, &amp;quot;ũ%1&amp;quot;},&lt;br /&gt;
	{&amp;quot;[oō](́?)[nm]&amp;quot;, &amp;quot;õ%1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function nasalize_vowels(word, family)&lt;br /&gt;
	word = ugsub(word, &amp;quot;[aā](́?)[nm]$&amp;quot;, &amp;quot;ã%1&amp;quot;)&lt;br /&gt;
	word = ugsub(word, &amp;quot;[aā][nm](́?)s&amp;quot;, &amp;quot;ã%1s&amp;quot;)&lt;br /&gt;
	for _, rule in ipairs(nasalized[family]) do&lt;br /&gt;
		word = ugsub(word, rule[1] .. &amp;quot;$&amp;quot;, rule[2])&lt;br /&gt;
		word = ugsub(word, rule[1] .. &amp;quot;(́?)s&amp;quot;, rule[2] .. &amp;quot;%2s&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return word&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_onset(syll)&lt;br /&gt;
	local consonants = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #syll do&lt;br /&gt;
		if vowels[syll[i]] then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		if syll[i] ~= &amp;quot;&amp;#039;&amp;quot; then&lt;br /&gt;
			insert(consonants, syll[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return concat(consonants)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_coda(syll)&lt;br /&gt;
	local consonants = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = #syll, 1, -1 do&lt;br /&gt;
		if vowels[syll[i]] then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		insert(consonants, 1, syll[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return concat(consonants)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_vowel(syll)&lt;br /&gt;
	for i = 1,#syll do&lt;br /&gt;
		if vowels[syll[i]] then return syll[i] end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function split_syllables(word)&lt;br /&gt;
	local phonemes = {}&lt;br /&gt;
	&lt;br /&gt;
	while ulen(word) &amp;gt; 0 do&lt;br /&gt;
		local longestmatch = &amp;quot;&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		for letter in pairs(dictionary) do&lt;br /&gt;
			if ulen(letter) &amp;gt; ulen(longestmatch) and usub(word, 1, ulen(letter)) == letter then&lt;br /&gt;
				longestmatch = letter&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if ulen(longestmatch) &amp;gt; 0 then&lt;br /&gt;
			insert(phonemes, dictionary[longestmatch])&lt;br /&gt;
			word = usub(word, ulen(longestmatch) + 1)&lt;br /&gt;
		else&lt;br /&gt;
			insert(phonemes, usub(word, 1, 1))&lt;br /&gt;
			word = usub(word, 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local syllables, syll = {}, {}&lt;br /&gt;
	&lt;br /&gt;
	while #phonemes &amp;gt; 0 do&lt;br /&gt;
		local phoneme = remove(phonemes, 1)&lt;br /&gt;
		&lt;br /&gt;
		if phoneme == &amp;quot;&amp;#039;&amp;quot; then&lt;br /&gt;
			if #syll &amp;gt; 0 then&lt;br /&gt;
				insert(syllables, syll)&lt;br /&gt;
			end&lt;br /&gt;
			syll = {&amp;quot;&amp;#039;&amp;quot;}&lt;br /&gt;
		elseif vowels[phoneme] then&lt;br /&gt;
			insert(syll, phoneme)&lt;br /&gt;
			insert(syllables, syll)&lt;br /&gt;
			syll = {}&lt;br /&gt;
		else&lt;br /&gt;
			insert(syll, phoneme)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If there are phonemes left, then the word ends in a consonant&lt;br /&gt;
	-- Add them to the last syllable&lt;br /&gt;
	extend(syllables[#syllables], syll)&lt;br /&gt;
	&lt;br /&gt;
	-- Split consonant clusters between syllables&lt;br /&gt;
	for i, current in ipairs(syllables) do&lt;br /&gt;
		if i &amp;gt; 1 then&lt;br /&gt;
			local previous = syllables[i-1]&lt;br /&gt;
			local onset = get_onset(current)&lt;br /&gt;
			-- Shift over consonants until the syllable onset is valid&lt;br /&gt;
			while not (onset == &amp;quot;&amp;quot; or onsets[onset]) do&lt;br /&gt;
				insert(previous, remove(current, 1))&lt;br /&gt;
				onset = get_onset(current)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- If the preceding syllable still ends with a vowel, and the current one begins with s + another consonant, or with gn, then shift it over&lt;br /&gt;
			if get_coda(previous) == &amp;quot;&amp;quot; and ((current[1] == &amp;quot;s&amp;quot; and not vowels[current[2]]) or (current[1] == &amp;quot;g&amp;quot; and current[2] == &amp;quot;n&amp;quot;)) then&lt;br /&gt;
				insert(previous, remove(current, 1))&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- If there is no vowel at all in this syllable&lt;br /&gt;
			if not get_vowel(current) then&lt;br /&gt;
				for _ = 1, #current do&lt;br /&gt;
					insert(syllables[i-1], remove(current, 1))&lt;br /&gt;
				end&lt;br /&gt;
				remove(syllables,i)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, s in ipairs(syllables) do&lt;br /&gt;
		local onset = get_onset(s)&lt;br /&gt;
		if not (onset == &amp;quot;&amp;quot; or onsets[onset]) then&lt;br /&gt;
			error(&amp;quot;onset error:[&amp;quot; .. onset .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		local coda = get_coda(s)&lt;br /&gt;
		if not (coda == &amp;quot;&amp;quot; or codas[coda]) then&lt;br /&gt;
			error(&amp;quot;coda error:[&amp;quot; .. coda .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return syllables&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detect_accent(syllables)&lt;br /&gt;
	-- Manual override&lt;br /&gt;
	for i = 1, #syllables do&lt;br /&gt;
		for j = 1, #syllables[i] do&lt;br /&gt;
			if syllables[i][j] == &amp;quot;&amp;#039;&amp;quot; then&lt;br /&gt;
				remove(syllables[i], j)&lt;br /&gt;
				return i&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #syllables &amp;gt; 2 then&lt;br /&gt;
		-- Does the penultimate syllable end in a single vowel?&lt;br /&gt;
		local penult = syllables[#syllables - 1]&lt;br /&gt;
		&lt;br /&gt;
		if penult[#penult]:match(&amp;quot;^[aeiouy]$&amp;quot;) then&lt;br /&gt;
			local ult = syllables[#syllables]&lt;br /&gt;
			if ult[2] and (ult[1] .. ult[2]):match(&amp;quot;[bdg][lr]&amp;quot;) then&lt;br /&gt;
				return #syllables - 1&lt;br /&gt;
			end&lt;br /&gt;
			return #syllables - 2&lt;br /&gt;
		else&lt;br /&gt;
			return #syllables - 1&lt;br /&gt;
		end&lt;br /&gt;
	elseif #syllables == 2 then&lt;br /&gt;
		return #syllables - 1&lt;br /&gt;
	end&lt;br /&gt;
	return #syllables&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function place_accent(syllable)&lt;br /&gt;
	-- Special case: i before a or o&lt;br /&gt;
	local new_syllable = ugsub(syllable, &amp;quot;i([aoāō])&amp;quot;, &amp;quot;i%1́&amp;quot;)&lt;br /&gt;
	if syllable == new_syllable then&lt;br /&gt;
		new_syllable = ugsub(syllable, &amp;quot;([aeẹęioọǫuāēīōūėịụ-])&amp;quot;, &amp;quot;%1́&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return new_syllable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convert_word(raw_word, vowel_pattern)&lt;br /&gt;
	local asterisks, word = raw_word:match(&amp;quot;^(%**)(.*)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- do starting word-based rules&lt;br /&gt;
	for _, rule in ipairs(word_rules_start) do&lt;br /&gt;
		word = ugsub(word, rule[1], rule[2])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Prothetic i before s + consonant&lt;br /&gt;
	if vowel_pattern == &amp;quot;It-W&amp;quot; then&lt;br /&gt;
		word = word:gsub(&amp;quot;^s+[bcdfglmnprtz]&amp;quot;, &amp;quot;i%0&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(stress_shift_rules) do&lt;br /&gt;
		word = ugsub(word, k .. &amp;quot;&amp;#039;&amp;quot;, v)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Double consonant stress shifts&lt;br /&gt;
	word = word:gsub(&amp;quot;([bcdfghjklmnprstz])%1&amp;#039;&amp;quot;, &amp;quot;%1&amp;#039;%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local syllables = split_syllables(word)&lt;br /&gt;
	local accent = detect_accent(syllables)&lt;br /&gt;
	&lt;br /&gt;
	-- Check antepenult for e, i &amp;gt; j (written i)&lt;br /&gt;
	--[[local antepenult = syllables[#syllables - 2]&lt;br /&gt;
	local penult = syllables[#syllables - 1]&lt;br /&gt;
	&lt;br /&gt;
	if antepenult and penult then&lt;br /&gt;
		if syllables[accent] == antepenult and umatch(antepenult[#antepenult], &amp;quot;^[eēiī]$&amp;quot;) and umatch(penult[#penult], &amp;quot;^[aāoō]$&amp;quot;) then&lt;br /&gt;
			syllables[#syllables-2][#antepenult] = &amp;quot;ị&amp;quot;&lt;br /&gt;
			accent = accent + 1&lt;br /&gt;
		end&lt;br /&gt;
	end]]--&lt;br /&gt;
&lt;br /&gt;
	for i, syll in ipairs(syllables) do&lt;br /&gt;
		if syllables[i + 1] then&lt;br /&gt;
			if umatch(syll[#syll], &amp;quot;^[eēiī]$&amp;quot;) and umatch(syllables[i + 1][1], &amp;quot;^[aāoōuū]$&amp;quot;) then&lt;br /&gt;
				syll[#syll] = &amp;quot;ĭ&amp;quot;&lt;br /&gt;
				if syllables[accent] == syll then&lt;br /&gt;
					accent = accent + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	for i, syll in ipairs(syllables) do&lt;br /&gt;
		syll = concat(syll)&lt;br /&gt;
		for _, rule in ipairs(vowel_patterns[&amp;quot;all&amp;quot;]) do&lt;br /&gt;
			syll = ugsub(syll, rule[1], rule[2])&lt;br /&gt;
		end&lt;br /&gt;
		for _, rule in ipairs(vowel_patterns[vowel_pattern]) do&lt;br /&gt;
			syll = ugsub(syll, rule[1], rule[2])&lt;br /&gt;
		end&lt;br /&gt;
		--[[if i ~= accent then&lt;br /&gt;
			syll = syll:gsub(&amp;quot;ẹ&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
			syll = syll:gsub(&amp;quot;ọ&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
		end]]&lt;br /&gt;
		syllables[i] = (i == accent and place_accent(syll) or syll)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	word = concat(syllables)&lt;br /&gt;
	&lt;br /&gt;
	for _, rule in ipairs(word_rules_end) do&lt;br /&gt;
		word = ugsub(word, rule[1], rule[2])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	word = nasalize_vowels(word, vowel_pattern)&lt;br /&gt;
	&lt;br /&gt;
	return asterisks .. word&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.convert_words(words, vowel_pattern)&lt;br /&gt;
	local word_table = {}&lt;br /&gt;
&lt;br /&gt;
	for word in ugmatch(words, &amp;quot;%S+&amp;quot;) do&lt;br /&gt;
		insert(word_table, convert_word(word, vowel_pattern))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return concat(word_table, &amp;quot; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>wikt&gt;Theknightwho</name></author>
	</entry>
</feed>