<?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%3Atru-translit</id>
	<title>Module:tru-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%3Atru-translit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:tru-translit&amp;action=history"/>
	<updated>2026-05-19T06:50:30Z</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:tru-translit&amp;diff=496143&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:tru-translit&amp;diff=496143&amp;oldid=prev"/>
		<updated>2026-04-21T12:45:50Z</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:45, 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:tru-translit&amp;diff=496142&amp;oldid=prev</id>
		<title>wikt&gt;Santi2222: Use &lt;aw&gt;, &lt;ay&gt; word-finally instead of &lt;au&gt;, &lt;ai&gt;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:tru-translit&amp;diff=496142&amp;oldid=prev"/>
		<updated>2025-11-01T14:02:48Z</updated>

		<summary type="html">&lt;p&gt;Use &amp;lt;aw&amp;gt;, &amp;lt;ay&amp;gt; word-finally instead of &amp;lt;au&amp;gt;, &amp;lt;ai&amp;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 U = require(&amp;quot;Module:string/char&amp;quot;)&lt;br /&gt;
local rsub = mw.ustring.gsub&lt;br /&gt;
local unpack = unpack or table.unpack -- Lua 5.2 compatibility&lt;br /&gt;
-- apply rsub() repeatedly until no change&lt;br /&gt;
local function rsub_repeatedly(term, foo, bar)&lt;br /&gt;
	while true do&lt;br /&gt;
		local new_term = rsub(term, foo, bar)&lt;br /&gt;
		if new_term == term then&lt;br /&gt;
			return term&lt;br /&gt;
		end&lt;br /&gt;
		term = new_term&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local rbasa_below = U(0x737)&lt;br /&gt;
local pthaha_below = U(0x731)&lt;br /&gt;
local rbasa = U(0x736)&lt;br /&gt;
local zqapha = U(0x733)&lt;br /&gt;
local pthaha = U(0x730)&lt;br /&gt;
local vowel_diacritics_capture = &amp;quot;([&amp;quot; .. rbasa_below .. pthaha_below .. rbasa .. zqapha .. pthaha .. &amp;quot;])&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- we declare consonants representing vowels (matres lectionis) as constants to mitigate differences in how mixing&lt;br /&gt;
-- right-to-left and left-to-right characters in the same line appears in an IDE vs wiktionary.  Since matres is used in&lt;br /&gt;
-- concatenation via the .. operator,  &amp;quot;ܘ&amp;quot; .. &amp;quot;ܐ&amp;quot; on wiktionary would render as &amp;quot;ܐ&amp;quot; .. &amp;quot;ܘ&amp;quot; in an IDE&lt;br /&gt;
local alaph = U(0x710)&lt;br /&gt;
local waw = U(0x718)&lt;br /&gt;
local yudh = U(0x71D)&lt;br /&gt;
&lt;br /&gt;
local combining_diaeresis = U(0x308)&lt;br /&gt;
local combining_tilde_below = U(0x330)&lt;br /&gt;
local qushshaya = U(0x741)&lt;br /&gt;
local rukkakha = U(0x742)&lt;br /&gt;
&lt;br /&gt;
local tt_transpose_punc = {&lt;br /&gt;
	-- left/right single/double quotes&lt;br /&gt;
	[&amp;quot;“&amp;quot;] = &amp;quot;”&amp;quot;,&lt;br /&gt;
	[&amp;quot;”&amp;quot;] = &amp;quot;“&amp;quot;,&lt;br /&gt;
	[&amp;quot;‘&amp;quot;] = &amp;quot;’&amp;quot;,&lt;br /&gt;
	[&amp;quot;’&amp;quot;] = &amp;quot;‘&amp;quot;,&lt;br /&gt;
	[&amp;quot;؟&amp;quot;] = &amp;quot;?&amp;quot;, -- question mark&lt;br /&gt;
	[&amp;quot;«&amp;quot;] = &amp;#039;“&amp;#039;, -- quotation mark&lt;br /&gt;
	[&amp;quot;»&amp;quot;] = &amp;#039;”&amp;#039;, -- quotation mark&lt;br /&gt;
	[&amp;quot;،&amp;quot;] = &amp;quot;,&amp;quot;, -- comma&lt;br /&gt;
	[&amp;quot;؛&amp;quot;] = &amp;quot;;&amp;quot;, -- semicolon&lt;br /&gt;
	-- skewed colons from https://r12a.github.io/scripts/syrc/tru.html#phrase&lt;br /&gt;
	[&amp;quot;܇&amp;quot;] = &amp;#039;,&amp;#039;,&lt;br /&gt;
	[&amp;quot;܆&amp;quot;] = &amp;#039;;&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local tt_transpose_punc_keys = &amp;#039;&amp;#039;&lt;br /&gt;
for key, _ in pairs(tt_transpose_punc) do tt_transpose_punc_keys = tt_transpose_punc_keys .. key end&lt;br /&gt;
&lt;br /&gt;
local fix = {&lt;br /&gt;
	{ vowel_diacritics_capture .. qushshaya, qushshaya .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ vowel_diacritics_capture .. rukkakha, rukkakha .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ vowel_diacritics_capture .. combining_tilde_below, combining_tilde_below .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	-- partition punctuation marks so &amp;quot;starts with&amp;quot; and &amp;quot;ends with&amp;quot; substitutions work&lt;br /&gt;
	{&amp;quot;([&amp;quot;.. tt_transpose_punc_keys .. &amp;quot;()!.:\&amp;quot;&amp;#039;])&amp;quot;, &amp;quot;#%1#&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local tt = {&lt;br /&gt;
	[&amp;quot;ܦ&amp;quot;] = &amp;quot;f&amp;quot;, [&amp;quot;ܒ&amp;quot;] = &amp;quot;b&amp;quot;, [&amp;quot;ܬ&amp;quot;] = &amp;quot;t&amp;quot;, [&amp;quot;ܛ&amp;quot;] = &amp;quot;ṭ&amp;quot;, [&amp;quot;ܕ&amp;quot;] = &amp;quot;d&amp;quot;, [&amp;quot;ܟ&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;ܓ&amp;quot;] = &amp;quot;g&amp;quot;, [&amp;quot;ܩ&amp;quot;] = &amp;quot;q&amp;quot;, [&amp;quot;ܔ&amp;quot;] = &amp;quot;j&amp;quot;, [&amp;quot;ܣ&amp;quot;] = &amp;quot;s&amp;quot;, [&amp;quot;ܨ&amp;quot;] = &amp;quot;ṣ&amp;quot;, [&amp;quot;ܙ&amp;quot;] = &amp;quot;z&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;c&amp;quot;, [&amp;quot;ܗ&amp;quot;] = &amp;quot;h&amp;quot;, [&amp;quot;ܡ&amp;quot;] = &amp;quot;m&amp;quot;, [&amp;quot;ܢ&amp;quot;] = &amp;quot;n&amp;quot;,&lt;br /&gt;
	[&amp;quot;ܪ&amp;quot;] = &amp;quot;r&amp;quot;, [&amp;quot;ܠ&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local tt_next = {&lt;br /&gt;
	[waw] = &amp;quot;w&amp;quot;,&lt;br /&gt;
	[yudh] = &amp;quot;y&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	[rbasa_below] = &amp;quot;ë&amp;quot;,&lt;br /&gt;
	[pthaha_below] = &amp;quot;ä&amp;quot;,&lt;br /&gt;
	[rbasa] = &amp;quot;e&amp;quot;,&lt;br /&gt;
	[zqapha] = &amp;quot;o&amp;quot;,&lt;br /&gt;
	[pthaha] = &amp;quot;a&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local consonants = &amp;quot;fbtṭdkgqjsṣzščḥchmnrlvžpvṯḏxġ&amp;quot; .. yudh .. waw&lt;br /&gt;
local consonants_group = &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local special_cases = {&lt;br /&gt;
	-- { matching_aii_text, latin_substitution }&lt;br /&gt;
	--&lt;br /&gt;
	-- the # symbol pads the start and end of a word, consider the follow examples for matching_aii_text&lt;br /&gt;
	-- #float#    only float matches&lt;br /&gt;
	-- #float     words starting with float like float or floats match&lt;br /&gt;
	-- float#     words ending with float like float or afloat match&lt;br /&gt;
	-- float      words containing float like float, floats, afloat and refloats match&lt;br /&gt;
	{&amp;quot;ܡܳܪܝ#&amp;quot;, &amp;quot;mor#&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.tr(text, lang, sc)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot; | &amp;quot;, &amp;quot;# | #&amp;quot;)&lt;br /&gt;
	text = &amp;quot;##&amp;quot; .. rsub(text, &amp;quot; &amp;quot;, &amp;quot;# #&amp;quot;) .. &amp;quot;##&amp;quot;&lt;br /&gt;
	text = rsub(text, &amp;quot;ـ&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	text = rsub(text, combining_diaeresis, &amp;quot;&amp;quot;)&lt;br /&gt;
	for _, sub in ipairs(fix) do text = rsub(text, unpack(sub)) end&lt;br /&gt;
&lt;br /&gt;
	-- Special cases&lt;br /&gt;
	for _, sub in ipairs(special_cases) do text = rsub(text, unpack(sub)) end&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;ܫ&amp;quot; .. combining_tilde_below, &amp;quot;č&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ܙ&amp;quot; .. combining_tilde_below, &amp;quot;ž&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;ܦ&amp;quot; .. qushshaya, &amp;quot;p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;ܒ&amp;quot; .. rukkakha, &amp;quot;v&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ܬ&amp;quot; .. rukkakha, &amp;quot;ṯ&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ܕ&amp;quot; .. rukkakha, &amp;quot;ḏ&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ܟ&amp;quot; .. rukkakha, &amp;quot;x&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ܓ&amp;quot; .. rukkakha, &amp;quot;ġ&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;.&amp;quot;, tt_transpose_punc)&lt;br /&gt;
	text = rsub(text, &amp;quot;.&amp;quot;, tt)&lt;br /&gt;
&lt;br /&gt;
	text = rsub_repeatedly(text, consonants_group .. waw .. consonants_group, &amp;quot;%1u%2&amp;quot;)&lt;br /&gt;
	text = rsub_repeatedly(text, consonants_group .. yudh .. consonants_group, &amp;quot;%1i%2&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;#&amp;quot; .. waw .. consonants_group, &amp;quot;#u%1&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;#&amp;quot; .. yudh .. consonants_group, &amp;quot;#i%1&amp;quot;) -- this needs a test case&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, alaph .. pthaha ..  waw .. &amp;quot;#&amp;quot;, &amp;quot;#aw&amp;quot;)&lt;br /&gt;
	text = rsub(text, alaph .. pthaha .. yudh .. &amp;quot;#&amp;quot;, &amp;quot;#ay&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;#&amp;quot; .. alaph .. waw, &amp;quot;#u&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;#&amp;quot; .. alaph .. yudh, &amp;quot;#i&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, pthaha .. waw .. &amp;quot;#&amp;quot;, &amp;quot;aw#&amp;quot;) --&amp;lt;ܝܳܬܰܘ&amp;gt; = yotaw, not yotau&lt;br /&gt;
	text = rsub(text, pthaha .. yudh .. &amp;quot;#&amp;quot;, &amp;quot;ay#&amp;quot;) --&amp;lt;ܚܙܰܝ&amp;gt; = ḥzay, not ḥzai&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, waw .. &amp;quot;#&amp;quot;, &amp;quot;u#&amp;quot;)&lt;br /&gt;
	text = rsub(text, yudh .. &amp;quot;#&amp;quot;, &amp;quot;i#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, pthaha .. alaph .. &amp;quot;#&amp;quot;, &amp;quot;a#&amp;quot;)&lt;br /&gt;
	text = rsub(text, rbasa .. alaph .. &amp;quot;#&amp;quot;, &amp;quot;e#&amp;quot;)&lt;br /&gt;
	text = rsub(text, zqapha .. alaph .. &amp;quot;#&amp;quot;, &amp;quot;o#&amp;quot;)&lt;br /&gt;
	text = rsub(text, alaph .. &amp;quot;#&amp;quot;, &amp;quot;o#&amp;quot;)&lt;br /&gt;
	text = rsub(text, alaph, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;.&amp;quot;, tt_next)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;cc&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ḥḥ&amp;quot;, &amp;quot;ḥ&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;šš&amp;quot;, &amp;quot;š&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;ṯṯ&amp;quot;, &amp;quot;ṯ&amp;quot;)&lt;br /&gt;
	text = rsub(text, &amp;quot;xx&amp;quot;, &amp;quot;x&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = rsub(text, &amp;quot;#&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>wikt&gt;Santi2222</name></author>
	</entry>
</feed>