Module:tg-translit

local export = {}

local tt = { ["т"] = "t", ["Т"] = "T", ["р"] = "r", ["Р"] = "R", ["ф"] = "f", ["Ф"] = "F", ["ю"] = "yu", ["Ю"] = "Yu", ["ш"] = "š", ["Ш"] = "Š", ["ҳ"] = "h", ["Ҳ"] = "H", ["ъ"] = "ʾ", ["Ъ"] = "ʾ", ["н"] = "n", ["Н"] = "N", ["п"] = "p", ["П"] = "P", ["й"] = "y", ["Й"] = "Y", ["л"] = "l", ["Л"] = "L", ["з"] = "z", ["З"] = "Z", ["е"] = "e", ["Е"] = "E", ["г"] = "g", ["Г"] = "G", ["б"] = "b", ["Б"] = "B", ["у"] = "u", ["У"] = "U", ["с"] = "s", ["С"] = "S", ["х"] = "x", ["Х"] = "X", ["ч"] = "č", ["Ч"] = "Č", ["я"] = "ya", ["Я"] = "Ya", ["м"] = "m", ["М"] = "M", ["о"] = "o", ["О"] = "O", ["и"] = "i", ["И"] = "I", ["ё"] = "yo", ["Ё"] = "Yo", ["ж"] = "ž", ["Ж"] = "Ž", ["к"] = "k", ["К"] = "K", ["д"] = "d", ["Д"] = "D", ["в"] = "v", ["В"] = "V", ["а"] = "a", ["А"] = "A", ["ҷ"] = "j", ["Ҷ"] = "J", ["ӯ"] = "ü", ["Ӯ"] = "Ü", ["э"] = "e", ["Э"] = "E", ["ӣ"] = "ī", ["Ӣ"] = "Ī", ["қ"] = "q", ["Қ"] = "Q", ["ғ"] = "ġ", ["Ғ"] = "Ġ", -- dated, removed in the 1998 reform ["Ц"] = "Ts", ["ц"] = "ts", -- replaced with "тс", sometimes "с" ["Щ"] = "Šč", ["щ"] = "šč", -- replaced with "шч" ["Ы"] = "Y", ["ы"] = "y", -- replaced with "и" ["Ь"] = "", ["ь"] = "" -- removed entirely };

function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode end

if sc ~= "Cyrl" then text = nil else text = mw.ustring.gsub(text,							  "([АОӮУЕЯЁЮИӢЕЪаоуӯэяёюиӣе][́̀]?)([ЕеИиӢӣ])",							   function(a, e)			local iotated = {				['е'] = 'ye',				['Е'] = 'Ye',				['и'] = 'yi',				['И'] = 'Yi',				['ӣ'] = 'yī',				['Ӣ'] = 'Yī'							}			return a .. iotated[e]		end) text = text :gsub("^Е", 'Ye') :gsub("^е", 'ye') text = mw.ustring.gsub(text, '.', tt) end

return text end

return export