Module:User:Rishabhbhat/ks-pa-translit

local export = {} u = mw.ustring local midvowel = { --vowel forms in the middle of the word, not mid vowel ["َ"] = "a", ["ا"] = "ā", ["آ"] = "ā", ["ٔ"] = "ạ", ["أ"] = "ạ", ["ٲ"] = "ạ̄", ["ِ"] = "i", ["یٖ"] = "ī", ["ٕ"] = "ụ", ["ٟ"] = "ụ̄", ["ُ"] = "u", ["وٗ"] = "ū", ["ۆ"] = "o", ["و"] = "ō", ["ۄ"] = "ọ", ["ۄا"] = "ọ̄", ["ێ"] = "e", ["ی"] = "ē", ["ؠ"] = "'a", --?? ["ھ"] = "h", --no, don't remove this } local endvow = { ["َہ"] = "a", ["ٔہ"] = "ạ", ["ہِ"] = "i", ["ی"] = "ī", ["ہٕ"] = "ụ", ["ے"] = "ē", ["ےٚ"] = "e", ["ھ"] = "h", ["ؠ"] = "'", }

local cons = { ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ٹ"] = "ṭ", ["ث"] = "s", ["ج"] = "j", ["چ"] = "c", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ڈ"] = "ḍ", ["ذ"] = "z", ["ر"] = "r", ["ڑ"] = "ṛ", ["ز"] = "z", ["ژ"] = "ċ", ["س"] = "s", ["ش"] = "ś", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["ع"] = "", --??? ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", --v? ["ھ"] = "h", ["ہ"] = "h", ["ی"] = "y" } local endcons = { ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ٹ"] = "ṭ", ["ث"] = "s", ["ج"] = "j", ["چ"] = "c", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ڈ"] = "ḍ", ["ذ"] = "z", ["ر"] = "r", ["ڑ"] = "ṛ", ["ز"] = "z", ["ژ"] = "ċ", ["س"] = "s", ["ش"] = "ś", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["ع"] = "", --??? ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", --v? ["ھ"] = "h", ["ہ"] = "h", ["ے"] = "y", } local function contains_key(lst, w)	for t, _ in pairs(lst) do		if u.match(w, t) then return true end end return false end function export.tr(word) out = "" for sep in u.gmatch(word, "%S+") do		n_cons = 1 o = ""; l = u.len(sep) --==for v, rom in pairs(endvow) do			sep = u.gsub(sep, v.."$", rom)			--mw.log(sep)		end==-- for i = 1, l do			local c = u.sub(sep,i,i) if c == "ٖ" then o = u.gsub(o, "y$", "ī") elseif c == "ٗ" then o = u.gsub(o, "w$", "ū") else if i == 1 and c == "ا" then tr_a = "" elseif i == l then tr_a = endcons[c] or endvow[c] --==if tr_a then						o = o .. tr_a					else						ender = endvow[u.sub(sep,i-1,i-1) .. c]						mw.log(ender)					end==-- else tr_a = cons[c] or midvowel[c] end if tr_a then o = o.. tr_a end end end out = out .. o		if not (o:match("'$") or o:match("ụ$")) then out = out .. " "		end end return out:gsub("^%s*(.-)%s*$", "%1") end

function export.template_ipa(params) return export.ipa(params.args[1]) end

return export