<?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%3Afa-cls-translit</id>
	<title>Module:fa-cls-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%3Afa-cls-translit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:fa-cls-translit&amp;action=history"/>
	<updated>2026-05-18T14:57:42Z</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:fa-cls-translit&amp;diff=495323&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:fa-cls-translit&amp;diff=495323&amp;oldid=prev"/>
		<updated>2026-04-21T12:00:53Z</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:fa-cls-translit&amp;diff=495322&amp;oldid=prev</id>
		<title>wikt&gt;Babr at 04:57, 13 August 2025</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:fa-cls-translit&amp;diff=495322&amp;oldid=prev"/>
		<updated>2025-08-13T04:57:53Z</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;-- Authors: Sameerhameedy&lt;br /&gt;
&lt;br /&gt;
local U = mw.ustring.char&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
local unpack = unpack or table.unpack -- Lua 5.2 compatibility&lt;br /&gt;
local export = {}&lt;br /&gt;
&lt;br /&gt;
local fatHataan = U(0x64B) -- اً, tanvin-e nasb (تنوین نصب)&lt;br /&gt;
local Dammataan = U(0x64C) -- un&lt;br /&gt;
local kasrataan = U(0x64D) -- in&lt;br /&gt;
local zabar = U(0x64E)&lt;br /&gt;
local zer = U(0x650)&lt;br /&gt;
local pesh = U(0x64F)&lt;br /&gt;
local tashdid = U(0x651) -- also called shadda&lt;br /&gt;
local jazm = &amp;quot;ْ&amp;quot;&lt;br /&gt;
local he = &amp;quot;ه&amp;quot;&lt;br /&gt;
local zwnj = U(0x200C)&lt;br /&gt;
local highhmz = U(0x654)&lt;br /&gt;
local lrm = U(0x200e) -- left-to-right mark&lt;br /&gt;
local rlm = U(0x200f) -- right-to-left mark&lt;br /&gt;
local balticons = &amp;quot;ڃڇڑڗݜݨݩǩ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local consonants = &amp;quot;بپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنؤهئء&amp;quot; .. balticons&lt;br /&gt;
local consonants2 = &amp;quot;ءبپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنوؤهیئywة&amp;quot; .. balticons -- including semivowels&lt;br /&gt;
local vowels = &amp;quot;āēīōū&amp;quot;&lt;br /&gt;
local semivowel = &amp;quot;یو&amp;quot;&lt;br /&gt;
local hes = &amp;quot;هح&amp;quot;&lt;br /&gt;
local diacritics = &amp;quot;َُِّْٰ&amp;quot;&lt;br /&gt;
local ZZP = &amp;quot;َُِ&amp;quot;&lt;br /&gt;
local alif_wasla = &amp;quot;ٱ&amp;quot;&lt;br /&gt;
local space_like = &amp;quot;%s&amp;#039;&amp;quot; .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
local space_like_class = &amp;quot;[&amp;quot; .. space_like .. zwnj .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--- The characters ټ ٹ ډ ڈ ے are included only for Mughal Persian and Hazaragi.&lt;br /&gt;
&lt;br /&gt;
local mapping = {&lt;br /&gt;
	[&amp;quot;آ&amp;quot;] = &amp;quot;ā&amp;quot;,&lt;br /&gt;
	[&amp;quot;ب&amp;quot;] = &amp;quot;b&amp;quot;,&lt;br /&gt;
	[&amp;quot;پ&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
	[&amp;quot;ت&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;ث&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ج&amp;quot;] = &amp;quot;j&amp;quot;,&lt;br /&gt;
	[&amp;quot;چ&amp;quot;] = &amp;quot;č&amp;quot;,&lt;br /&gt;
	[&amp;quot;ح&amp;quot;] = &amp;quot;h&amp;quot;,&lt;br /&gt;
	[&amp;quot;خ&amp;quot;] = &amp;quot;x&amp;quot;,&lt;br /&gt;
	[&amp;quot;د&amp;quot;] = &amp;quot;d&amp;quot;,&lt;br /&gt;
	[&amp;quot;ذ&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;ر&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
	[&amp;quot;ز&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;ژ&amp;quot;] = &amp;quot;ž&amp;quot;,&lt;br /&gt;
	[&amp;quot;س&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ش&amp;quot;] = &amp;quot;š&amp;quot;,&lt;br /&gt;
	[&amp;quot;ص&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ض&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;ط&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;ظ&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;غ&amp;quot;] = &amp;quot;ġ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ف&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;ق&amp;quot;] = &amp;quot;q&amp;quot;,&lt;br /&gt;
	[&amp;quot;ک&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;گ&amp;quot;] = &amp;quot;g&amp;quot;,&lt;br /&gt;
	[&amp;quot;ل&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
	[&amp;quot;م&amp;quot;] = &amp;quot;m&amp;quot;,&lt;br /&gt;
	[&amp;quot;ن&amp;quot;] = &amp;quot;n&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;
&lt;br /&gt;
	[&amp;quot;ه&amp;quot;] = &amp;quot;h&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;ع&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
	[&amp;quot;ء&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
	[&amp;quot;ئ&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
	[&amp;quot;ؤ&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
	[&amp;quot;أ&amp;quot;] = &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	-- diacritics&lt;br /&gt;
	[zabar] = &amp;quot;a&amp;quot;,&lt;br /&gt;
	[zer] = &amp;quot;i&amp;quot;,&lt;br /&gt;
	[pesh] = &amp;quot;u&amp;quot;,&lt;br /&gt;
	[jazm] = &amp;quot;&amp;quot;, -- also sukun - no vowel&lt;br /&gt;
	[zwnj] = &amp;quot;-&amp;quot;, -- ZWNJ (zero-width non-joiner)&lt;br /&gt;
	[highhmz] = &amp;quot;-yi&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	-- ligatures&lt;br /&gt;
	[&amp;quot;ﻻ&amp;quot;] = &amp;quot;lā&amp;quot;,&lt;br /&gt;
	[&amp;quot;ﷲ&amp;quot;] = &amp;quot;allāh&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	-- kashida&lt;br /&gt;
	[&amp;quot;ـ&amp;quot;] = &amp;quot;-&amp;quot;, -- kashida, no sound&lt;br /&gt;
&lt;br /&gt;
	-- alif_wasla&lt;br /&gt;
	[alif_wasla] = &amp;quot;&amp;quot;, -- nothing&lt;br /&gt;
&lt;br /&gt;
	-- numerals&lt;br /&gt;
	[&amp;quot;۱&amp;quot;] = &amp;quot;1&amp;quot;,&lt;br /&gt;
	[&amp;quot;۲&amp;quot;] = &amp;quot;2&amp;quot;,&lt;br /&gt;
	[&amp;quot;۳&amp;quot;] = &amp;quot;3&amp;quot;,&lt;br /&gt;
	[&amp;quot;۴&amp;quot;] = &amp;quot;4&amp;quot;,&lt;br /&gt;
	[&amp;quot;۵&amp;quot;] = &amp;quot;5&amp;quot;,&lt;br /&gt;
	[&amp;quot;۶&amp;quot;] = &amp;quot;6&amp;quot;,&lt;br /&gt;
	[&amp;quot;۷&amp;quot;] = &amp;quot;7&amp;quot;,&lt;br /&gt;
	[&amp;quot;۸&amp;quot;] = &amp;quot;8&amp;quot;,&lt;br /&gt;
	[&amp;quot;۹&amp;quot;] = &amp;quot;9&amp;quot;,&lt;br /&gt;
	[&amp;quot;۰&amp;quot;] = &amp;quot;0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	-- punctuation (leave on separate lines)&lt;br /&gt;
	[&amp;quot;؟&amp;quot;] = &amp;quot;?&amp;quot;, -- question 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;
	[&amp;quot;«&amp;quot;] = &amp;quot;“&amp;quot;, -- quotation mark&lt;br /&gt;
	[&amp;quot;»&amp;quot;] = &amp;quot;”&amp;quot;, -- quotation mark&lt;br /&gt;
	[&amp;quot;٪&amp;quot;] = &amp;quot;%&amp;quot;, -- percent&lt;br /&gt;
	[&amp;quot;؉&amp;quot;] = &amp;quot;‰&amp;quot;, -- per mille&lt;br /&gt;
	[&amp;quot;٫&amp;quot;] = &amp;quot;.&amp;quot;, -- decimals&lt;br /&gt;
	[&amp;quot;٬&amp;quot;] = &amp;quot;,&amp;quot;, -- thousan&lt;br /&gt;
&lt;br /&gt;
	-- regional characters (FOR VERY SPECIFIC USECASES)&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;
	-- balti&lt;br /&gt;
	-- cant do anything about ژ because it conflicts with persian&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;dz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ݜ&amp;quot;] = &amp;quot;ṣ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ݨ&amp;quot;] = &amp;quot;ng&amp;quot;,&lt;br /&gt;
	[&amp;quot;ݩ&amp;quot;] = &amp;quot;ny&amp;quot;,&lt;br /&gt;
	[&amp;quot;ھ&amp;quot;] = &amp;quot;h&amp;quot;,&lt;br /&gt;
	[&amp;quot;ے&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local punctuation = &amp;quot;:%(%)%[%]*&amp;amp;٫؛؟،ـ«\&amp;quot;.&amp;#039;!»٪؉۔`,/–—%{%}#&amp;quot;&lt;br /&gt;
local numbers = &amp;quot;۱۲۳۴۵۶۷۸۹۰&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local ain = &amp;quot;ع&amp;quot;&lt;br /&gt;
local alif = &amp;quot;ا&amp;quot;&lt;br /&gt;
local malif = &amp;quot;آ&amp;quot;&lt;br /&gt;
local hamza = &amp;quot;ء&amp;quot;&lt;br /&gt;
local ye = &amp;quot;ی&amp;quot;&lt;br /&gt;
local ye2 = &amp;quot;ئ&amp;quot;&lt;br /&gt;
local vao = &amp;quot;و&amp;quot;&lt;br /&gt;
local dagger_alif = U(0x670)&lt;br /&gt;
local marbuta = U(0x629)&lt;br /&gt;
local te = &amp;quot;ت&amp;quot;&lt;br /&gt;
local ye3 = &amp;quot;ے&amp;quot;&lt;br /&gt;
local laam = &amp;quot;ل&amp;quot;&lt;br /&gt;
local vowel = &amp;quot;[&amp;quot; .. vowels .. ZZP .. jazm .. semivowel .. malif .. &amp;quot;]&amp;quot;&lt;br /&gt;
local sun_letters = &amp;quot;تثدذرزسشصضطظلن&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local before_diacritic_checking_subs = {&lt;br /&gt;
	------------ transformations prior to checking for diacritics --------------&lt;br /&gt;
	{ U(0x06E5), &amp;quot;و&amp;quot; },&lt;br /&gt;
	{ U(0x06E6), &amp;quot;ی&amp;quot; },&lt;br /&gt;
	{ &amp;quot;ہ&amp;quot;, he }, -- get rid of balti he (allows balti to transliterate)&lt;br /&gt;
	{ &amp;quot;ک&amp;quot; .. highhmz, &amp;quot;ǩ&amp;quot; },&lt;br /&gt;
	{ &amp;quot;([&amp;quot; .. fatHataan .. ZZP .. dagger_alif .. &amp;quot;])&amp;quot; .. tashdid, tashdid .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ alif .. fatHataan, zabar .. &amp;quot;ن&amp;quot; },&lt;br /&gt;
	{ fatHataan .. alif, zabar .. &amp;quot;ن&amp;quot; },&lt;br /&gt;
	{ jazm .. ye .. dagger_alif, jazm .. ye .. zabar .. alif },&lt;br /&gt;
	{ zabar .. &amp;quot;[&amp;quot; .. ye .. vao .. &amp;quot;]&amp;quot; .. dagger_alif, zabar .. alif },&lt;br /&gt;
	{ ye .. dagger_alif, zabar .. alif }, -- the first letter is U+06CC&lt;br /&gt;
	{ ye3, ye },&lt;br /&gt;
	{ &amp;quot;[أإ]&amp;quot;, ye2 },&lt;br /&gt;
	-- kashiida&lt;br /&gt;
	{ &amp;quot;^&amp;quot; .. &amp;quot;ـ&amp;quot; .. zabar .. alif , &amp;quot;ـ&amp;quot; .. malif },&lt;br /&gt;
	{ &amp;quot;^&amp;quot; .. &amp;quot;ـ&amp;quot; .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; , &amp;quot;ـ&amp;quot; .. alif .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ zabar .. dagger_alif, zabar .. alif },&lt;br /&gt;
	{ dagger_alif, zabar .. alif },&lt;br /&gt;
	{ fatHataan, zabar .. &amp;quot;ن&amp;quot; }, -- fatḥatan&lt;br /&gt;
	{ Dammataan, pesh .. &amp;quot;ن&amp;quot; }, -- ḍammatan&lt;br /&gt;
	{ kasrataan, zer .. &amp;quot;ن&amp;quot; }, -- kasratan&lt;br /&gt;
&lt;br /&gt;
	-- allah ligatures and arabic al&lt;br /&gt;
	{ alif_wasla .. laam , &amp;quot;l-&amp;quot; },&lt;br /&gt;
	{ alif_wasla, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. tashdid .. &amp;quot;?&amp;quot; .. &amp;quot;[&amp;quot; .. pesh .. zer .. &amp;quot;])&amp;quot; .. alif .. laam .. jazm .. &amp;quot;?&amp;quot; .. &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot;, &amp;quot;%1-l-%2&amp;quot; },&lt;br /&gt;
	{ &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. tashdid .. &amp;quot;?&amp;quot; .. &amp;quot;[&amp;quot; .. pesh .. zer .. &amp;quot;]&amp;quot; .. &amp;quot;[&amp;quot; .. vao .. ye .. &amp;quot;])&amp;quot; .. alif .. laam .. jazm .. &amp;quot;?&amp;quot; .. &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot;, &amp;quot;%1-l-%2&amp;quot; },&lt;br /&gt;
	{ &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. tashdid .. &amp;quot;?&amp;quot; .. &amp;quot;[&amp;quot; .. ZZP .. &amp;quot;]&amp;quot; .. space_like_class .. &amp;quot;)&amp;quot; .. alif .. laam .. jazm .. &amp;quot;?&amp;quot; .. &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot;, &amp;quot;%1l-%2&amp;quot; },&lt;br /&gt;
	{ &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. tashdid .. &amp;quot;?&amp;quot; .. &amp;quot;[&amp;quot; .. pesh .. zer .. &amp;quot;]&amp;quot; .. &amp;quot;[&amp;quot; .. vao .. ye .. &amp;quot;]&amp;quot; .. space_like_class .. &amp;quot;)&amp;quot; .. alif .. laam .. jazm .. &amp;quot;?&amp;quot; .. &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot;, &amp;quot;%1l-%2&amp;quot; },&lt;br /&gt;
	{ marbuta .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. alif .. laam , te .. &amp;quot;%1-&amp;quot; .. laam .. &amp;quot;%-&amp;quot; },&lt;br /&gt;
	{ &amp;quot;l%-&amp;quot; .. &amp;quot;([&amp;quot; .. sun_letters .. &amp;quot;])&amp;quot; .. tashdid, &amp;quot;%1&amp;quot; .. jazm .. &amp;quot;-%1&amp;quot; },&lt;br /&gt;
	{ &amp;quot;l%-&amp;quot; .. laam .. tashdid, laam .. laam },&lt;br /&gt;
	{ &amp;quot;l%-&amp;quot; .. laam, laam .. laam },&lt;br /&gt;
	{ &amp;quot;l%-&amp;quot;, laam .. &amp;quot;-&amp;quot; },&lt;br /&gt;
	{ marbuta .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. alif, te .. &amp;quot;%1-&amp;quot; },&lt;br /&gt;
	{ marbuta .. &amp;quot;([&amp;quot; .. ZZP .. jazm .. &amp;quot;])&amp;quot;, te .. &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ marbuta, he },&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;([&amp;quot;&lt;br /&gt;
			.. consonants2&lt;br /&gt;
			.. &amp;quot;][&amp;quot;&lt;br /&gt;
			.. ZZP&lt;br /&gt;
			.. &amp;quot;])(&amp;quot;&lt;br /&gt;
			.. space_like_class&lt;br /&gt;
			.. &amp;quot;)&amp;quot;&lt;br /&gt;
			.. alif&lt;br /&gt;
			.. laam&lt;br /&gt;
			.. &amp;quot;([&amp;quot;&lt;br /&gt;
			.. jazm&lt;br /&gt;
			.. laam&lt;br /&gt;
			.. &amp;quot;])&amp;quot;,&lt;br /&gt;
		&amp;quot;%1%2&amp;quot; .. laam .. &amp;quot;%3&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{ laam .. laam .. tashdid, laam .. tashdid },&lt;br /&gt;
	-- use jazm/sukoon to prevent this conversion&lt;br /&gt;
	{ &amp;quot;(خ)&amp;quot; .. vao .. zabar .. alif, &amp;quot;%1&amp;quot; .. zabar .. alif },&lt;br /&gt;
	{ &amp;quot;(خ)&amp;quot; .. vao .. zabar, &amp;quot;%1&amp;quot; .. pesh },&lt;br /&gt;
	{ &amp;quot;(خ)&amp;quot; .. vao .. ye .. &amp;quot;([^&amp;quot; .. ZZP .. jazm .. &amp;quot;])&amp;quot;, &amp;quot;%1&amp;quot; .. ye .. &amp;quot;%2&amp;quot; },&lt;br /&gt;
	-- izāfa&lt;br /&gt;
	{ zwnj, &amp;quot;-&amp;quot; },&lt;br /&gt;
	{ jazm .. alif, jazm .. &amp;quot;-&amp;quot; .. alif }, -- vowel killing, invisible ZWNJ&lt;br /&gt;
	{ zabar .. jazm, &amp;quot;-&amp;quot; }, -- vowel killing, invisible ZWNJ&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local has_diacritics_subs = {&lt;br /&gt;
	-- this ensure allah ligatures and al- work&lt;br /&gt;
	{ &amp;quot;l%-&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. sun_letters .. &amp;quot;]&amp;quot; .. jazm .. &amp;quot;%-&amp;quot; , &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. space_like_class .. alif .. laam , &amp;quot;&amp;quot; },&lt;br /&gt;
	-- remove punctuation and tashdid&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. punctuation .. tashdid .. highhmz .. numbers .. fatHataan .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants .. &amp;quot;]$&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants .. &amp;quot;](&amp;quot; .. space_like_class .. &amp;quot;)&amp;quot;, &amp;quot;%1&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants .. &amp;quot;]%-&amp;quot;, &amp;quot;-&amp;quot; },&lt;br /&gt;
	-- these are required for arabic al- to work&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. &amp;quot;([&amp;quot; .. zer .. pesh .. &amp;quot;])&amp;quot; .. alif .. laam, laam },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]([&amp;quot; .. zer .. pesh .. &amp;quot;])%-&amp;quot; .. alif .. laam, laam },&lt;br /&gt;
	-- remove CV pairs&lt;br /&gt;
	-- consonants paired to alif&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. jazm, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. jazm .. malif, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. &amp;quot;]&amp;quot; .. zabar .. alif, &amp;quot;&amp;quot; },&lt;br /&gt;
	-- consonants paired to a semivowel&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;[&amp;quot; .. consonants .. alif .. &amp;quot;][&amp;quot; .. semivowel .. ZZP .. &amp;quot;]([&amp;quot; .. semivowel .. &amp;quot;])([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;,&lt;br /&gt;
		&amp;quot;%1%2&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. alif .. &amp;quot;][&amp;quot; .. ZZP .. &amp;quot;][&amp;quot; .. semivowel .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. alif .. &amp;quot;][&amp;quot; .. ZZP .. jazm .. semivowel .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. alif .. consonants2 .. &amp;quot;][&amp;quot; .. ZZP .. &amp;quot;][&amp;quot; .. semivowel .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ malif, &amp;quot;&amp;quot; }, -- counts as a CV pair&lt;br /&gt;
	{ jazm .. alif .. &amp;quot;[&amp;quot; .. ZZP .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. alif .. &amp;quot;][&amp;quot; .. ZZP .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. consonants2 .. alif .. semivowel .. &amp;quot;][&amp;quot; .. semivowel .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	-- remove numbers, hamzatu l-waṣl, alif madda and ZWNJ&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. numbers .. &amp;quot;ٱ&amp;quot; .. &amp;quot;آ&amp;quot; .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;%s&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;%-&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;[&amp;quot; .. semivowel .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
	{ &amp;quot;(&amp;quot; .. vowel .. &amp;quot;)&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function has_diacritics(text)&lt;br /&gt;
	local count&lt;br /&gt;
	text, count = gsub(text, &amp;quot;[&amp;quot; .. lrm .. rlm .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if count &amp;gt; 0 then&lt;br /&gt;
		require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;fa-translit/lrm or rlm&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, sub in ipairs(has_diacritics_subs) do&lt;br /&gt;
		text = gsub(text, unpack(sub))&lt;br /&gt;
	end&lt;br /&gt;
	return #text == 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.tr(text, lang, sc)&lt;br /&gt;
	if type(text) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		local function f(x)&lt;br /&gt;
			return (x ~= &amp;quot;&amp;quot;) and x or nil&lt;br /&gt;
		end&lt;br /&gt;
		text, lang, sc, omit_i3raab, force_translit =&lt;br /&gt;
			f(text.args[1]), f(text.args[2]), f(text.args[3]), f(text.args[4]), f(text.args[5])&lt;br /&gt;
	end&lt;br /&gt;
	for _, sub in ipairs(before_diacritic_checking_subs) do&lt;br /&gt;
		text = gsub(text, sub[1], sub[2])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not force_translit and not has_diacritics(text) then&lt;br /&gt;
		require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;fa-translit/lacking diacritics&amp;quot;)&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--define the &amp;quot;end&amp;quot; of a word&lt;br /&gt;
	text = gsub(text, &amp;quot;#&amp;quot;, &amp;quot;HASHTAG&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;^&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;$&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot; | &amp;quot;, &amp;quot;# | #&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;%s&amp;quot;, &amp;quot;# #&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;\n&amp;quot;, &amp;quot;#&amp;quot; .. &amp;quot;\n&amp;quot; .. &amp;quot;#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. punctuation .. &amp;quot;])&amp;quot;, &amp;quot;#&amp;quot; .. &amp;quot;%1&amp;quot; .. &amp;quot;#&amp;quot;)&lt;br /&gt;
	text = &amp;quot;##&amp;quot; .. gsub(text, &amp;quot; &amp;quot;, &amp;quot;# #&amp;quot;) .. &amp;quot;##&amp;quot;&lt;br /&gt;
	text = gsub(text, &amp;quot;%-&amp;quot;, &amp;quot;#-#&amp;quot;)&lt;br /&gt;
	-- hastags now mark the beginning and end of a word&lt;br /&gt;
	--character reformatting and exceptions&lt;br /&gt;
	text = gsub(text, highhmz, &amp;quot;#&amp;quot; .. highhmz .. &amp;quot;#&amp;quot;)&lt;br /&gt;
	--this ensures &amp;quot;and&amp;quot; is transliterated as a short vowel&lt;br /&gt;
	text = gsub(text, &amp;quot;#&amp;quot; .. vao .. &amp;quot;#&amp;quot;, &amp;quot;#u#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;#&amp;quot; .. vao .. jazm .. malif, &amp;quot;#w-&amp;quot; .. malif )&lt;br /&gt;
	-- prevent izafa from converting until later&lt;br /&gt;
&lt;br /&gt;
	-- Tashdeed&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot; .. tashdid, &amp;quot;%1%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot; .. tashdid .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;%1%1%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot; .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. tashdid, &amp;quot;%1%1%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, ye .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. tashdid, &amp;quot;yy%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. tashdid, &amp;quot;ww%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, ye .. tashdid .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;yy%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. tashdid .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;ww%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- distinguish initial alif from vowel alif&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot; .. zabar .. alif, &amp;quot;%1ā&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot; .. alif, &amp;quot;%1ā&amp;quot;)&lt;br /&gt;
	text = gsub(text, jazm .. malif, &amp;quot;&amp;#039;ā&amp;quot;) -- invisible ZWNJ&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot; .. malif, &amp;quot;%1&amp;#039;ā&amp;quot;)&lt;br /&gt;
	text = gsub(text, alif .. ye, &amp;quot;ē&amp;quot;)&lt;br /&gt;
	text = gsub(text, alif .. vao, &amp;quot;ō&amp;quot;)&lt;br /&gt;
	text = gsub(text, alif .. zer .. ye, &amp;quot;ī&amp;quot;)&lt;br /&gt;
	text = gsub(text, alif .. pesh .. vao, &amp;quot;ū&amp;quot;)&lt;br /&gt;
	text = gsub(text, tashdid .. alif, tashdid .. &amp;quot;ā&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- convert semi vowels&lt;br /&gt;
	text = gsub(text, ye .. &amp;quot;ā&amp;quot;, &amp;quot;yā&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. &amp;quot;ā&amp;quot;, &amp;quot;wā&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;w%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, ye .. &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;y%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, ye .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;ē%1%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;ō%1%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot; .. ye .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;%1y%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot; .. vao .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;%1w%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot; .. ye .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;%1y%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants .. &amp;quot;])&amp;quot; .. vao .. &amp;quot;([&amp;quot; .. semivowel .. &amp;quot;])&amp;quot;, &amp;quot;%1w%2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- conversions for vaav/waaw/vao&lt;br /&gt;
	text = gsub(text, pesh .. vao, &amp;quot;ū&amp;quot;)&lt;br /&gt;
	text = gsub(text, vao .. &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;w%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;(&amp;quot; .. vowel .. &amp;quot;)&amp;quot; .. vao, &amp;quot;%1w&amp;quot;)&lt;br /&gt;
	-- conversions for ye&lt;br /&gt;
	text = gsub(text, zer .. ye, &amp;quot;ī&amp;quot;)&lt;br /&gt;
	text = gsub(text, ye .. &amp;quot;([&amp;quot; .. diacritics .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;y%1&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;(&amp;quot; .. vowel .. &amp;quot;)&amp;quot; .. ye, &amp;quot;%1y&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--Alif with short vowel&lt;br /&gt;
	text = gsub(text, alif .. &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- final changes&lt;br /&gt;
	-- izafa&lt;br /&gt;
	text = gsub(text, &amp;quot;ē&amp;quot; .. zer .. &amp;quot;#&amp;quot;, &amp;quot;ē-yi#&amp;quot;)&lt;br /&gt;
	text = gsub(text, zer .. &amp;quot;y&amp;quot; .. zer .. &amp;quot;#&amp;quot;, &amp;quot;ī-yi#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([^&amp;quot; .. consonants .. jazm .. &amp;quot;])&amp;quot; .. &amp;quot;y&amp;quot; .. zer .. &amp;quot;#&amp;quot;, &amp;quot;%1-yi#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. consonants2 .. &amp;quot;])&amp;quot; .. zer .. &amp;quot;#&amp;quot;, &amp;quot;%1-i#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;#039;(&amp;quot;\&amp;#039;&amp;quot;)&amp;#039; .. &amp;quot;##&amp;quot; .. zer .. &amp;quot;#&amp;quot;, &amp;quot;%1-i#&amp;quot;)&lt;br /&gt;
	-- do not count zer as izafa before silent alif&lt;br /&gt;
	text = gsub(text, &amp;quot;%-i&amp;quot; .. &amp;quot;##&amp;quot; .. &amp;quot;(&amp;quot; .. space_like_class .. &amp;quot;)&amp;quot; .. &amp;quot;##&amp;quot; .. &amp;quot;([&amp;quot; .. sun_letters .. &amp;quot;]&amp;quot; .. jazm .. &amp;quot;#%-#&amp;quot; .. &amp;quot;)&amp;quot;, &amp;quot;i%1%2&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;%-i&amp;quot; .. &amp;quot;#%-#&amp;quot; .. &amp;quot;([&amp;quot; .. sun_letters .. &amp;quot;]&amp;quot; .. &amp;quot;#%-#&amp;quot; .. &amp;quot;)&amp;quot;, &amp;quot;i-%1&amp;quot;)&lt;br /&gt;
	-- he deletion&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. he .. &amp;quot;#&amp;quot; .. zwnj, &amp;quot;%1-&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;([&amp;quot; .. ZZP .. &amp;quot;])&amp;quot; .. he .. &amp;quot;#&amp;quot;, &amp;quot;%1#&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;#&amp;quot; .. ain , &amp;quot;#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- get rid of hashtags (not needed)&lt;br /&gt;
	text = gsub(text, &amp;quot;#&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	text = gsub(text, &amp;quot;HASHTAG&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
	text = string.gsub(text, lrm, &amp;quot;&amp;quot;)&lt;br /&gt;
	text = string.gsub(text, rlm, &amp;quot;&amp;quot;)&lt;br /&gt;
	-- convert all characters&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;.&amp;quot;, mapping)&lt;br /&gt;
&lt;br /&gt;
	-- alif&lt;br /&gt;
	-- Final corrections&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;āa&amp;quot;, &amp;quot;ā&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;aaa&amp;quot;, &amp;quot;ā&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;āā&amp;quot;, &amp;quot;ā&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;aa&amp;quot;, &amp;quot;ā&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;ī&amp;quot; .. &amp;quot;([&amp;quot; .. vowels .. &amp;quot;])&amp;quot;, &amp;quot;iy%1&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;ū&amp;quot; .. &amp;quot;([&amp;quot; .. vowels .. &amp;quot;])&amp;quot;, &amp;quot;uw%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	text = mw.ustring.toNFC(text)&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;Babr</name></author>
	</entry>
</feed>