Module:mxi-translit

From Linguifex
Revision as of 12:00, 21 April 2026 by Sware (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Documentation for this module may be created at Module:mxi-translit/doc

local export = {}

function export.tr(text, lang, sc)

	local replacements
	
	if (sc == "Arab") then
		return (mw.ustring.gsub(mw.ustring.gsub(text, ".", {
			-- consonants --
			["ا"]="ə", ["ب"]="b", ["ت"]="t", ["ث"]="ṯ", ["ج"]="j",
			["ح"]="ḥ", ["خ"]="ḵ", ["د"]="d", ["ذ"]="ḏ", ["ر"]="r",
			["ز"]="z", ["س"]="s", ["ش"]="š", ["ص"]="ṣ", ["ض"]="ḍ",
			["ط"]="ṭ", ["ظ"]="ẓ", ["ع"]="ʕ", ["غ"]="ḡ", ["ڢ"]="f",
			["ڧ"]="q", ["ك"]="k", ["ل"]="l", ["م"]="m", ["ࢽ"]="n",
			["ه"]="h", ["و"]="w", ["ی"]="y",
			-- [ق], [ف] and [ي] should not occur, but [ن] sometimes does
			["ن"]="n",
			-- [ے] should likely be used in quotes at least
			["ے"]="y",

			-- tashkil --
			["َ"]="a", ["ُ"]="u", ["ِ"]="i",
			["ّ"]="ː", ["ْ"]="°",
		}), "([btṯjḥḵdḏrzsšṣḍṭẓʕḡfqklmnhwyuiː°])ə", "%1ā"):gsub("aə", "ā"))
	elseif (sc == "Hebr") then
		return (mw.ustring.gsub(text, ".", {

			-- consonants --
			["א"] = "ʔ", ["ב"] = "b", ["ג"] = "g", ["ד"] = "d",
			["ה"] = "h", ["ו"] = "w", ["ז"] = "z", ["ח"] = "ḥ",
			["ט"] = "ṭ", ["י"] = "y", ["כ"] = "k", ["ל"] = "l",
			["מ"] = "m", ["נ"] = "n", ["ס"] = "s", ["ע"] = "ʕ",
			["פ"] = "f", ["צ"] = "ṣ", ["ק"] = "q", ["ר"] = "r",
			["ש"] = "š", ["ת"] = "t",

			-- sofit --
			["ך"] = "k", ["ם"] = "m", ["ן"] = "n", ["ף"] = "f",
			["ץ"] = "ṣ",

			-- nikud ?

		}))
	end

	return
end

return export