Module:ky-Cyrl-Arab-translit

local export = {}

local tt = { ["ү"] = "ۉ", ["Ү"] = "ۉ", ["т"] = "ت", ["Т"] = "ت", ["р"] = "ر", ["Р"] = "ر", ["ф"] = "ف", ["Ф"] = "ف", ["ө"] = "ۅ", ["Ө"] = "ۅ", ["ю"] = "يۇ", ["Ю"] = "يۇ", ["ш"] = "ش", ["Ш"] = "ش", ["ь"] = "", ["Ь"] = "", ["ъ"] = "", ["Ъ"] = "", ["н"] = "ن", ["Н"] = "ن", ["п"] = "پ", ["П"] = "پ", ["й"] = "ي", ["Й"] = "ي", ["л"] = "ل", ["Л"] = "ل", ["з"] = "ز", ["З"] = "ز", ["е"] = "ە", ["Е"] = "ە", ["г"] = "گ", ["Г"] = "گ", ["б"] = "ب", ["Б"] = "ب", ["у"] = "ۇ", ["У"] = "ۇ", ["с"] = "س", ["С"] = "س", ["х"] = "ح", ["Х"] = "ح", ["ч"] = "چ", ["Ч"] = "چ", ["щ"] = "شچ", ["Щ"] = "شچ", ["я"] = "يا", ["Я"] = "يا", ["ы"] = "ى", ["Ы"] = "ى", ["э"] = "ە", ["Э"] = "ە", ["м"] = "م", ["М"] = "م", ["о"] = "و", ["О"] = "و", ["и"] = "ى", ["И"] = "ئ", -- a bit hacky but this is for vowel harmony ["ё"] = "يو", ["Ё"] = "يو", ["ж"] = "ج", ["Ж"] = "ج", ["к"] = "ك", ["К"] = "ك", ["д"] = "د", ["Д"] = "د", ["в"] = "ۋ", ["В"] = "ۋ", ["ц"] = "تس", ["Ц"] = "تس", ["а"] = "ا", ["А"] = "ا", ["ң"] = "ڭ", ["Ң"] = "ڭ", -- not used needed for some conversions ["қ"] = "ق", ["ғ"] = "ع" }

local frontvowels = "ЭэЕеИиӨөҮү" local backvowels = "АаЫыОоУуЁёЯяЮю" local novowels = "[^" .. frontvowels .. backvowels .. "]" local consonants = "БбВвГгДдЖжЗзЙйКкЛлМмНнҢңПпРрСсТтФфХхЦцЧчШшЩщЪъЬь" local vc = "КкГг" local e = "Ее" -- hamza isnt used if the naxt syllable has an e

function export.tr(text, lang, sc) if type(text) == "table" then options = {} text, script = text.args[1], text.args[2] end if not sc then sc = require("Module:languages").getByCode("ky"):findBestScript(text):getCode end if sc ~= "Cyrl" then return nil end

text = mw.ustring.gsub(		text,		"([АОӨҮУЫЕЯЁЮИЕаоөүуыэяёюиеъь%A][́̀]?)([Ее])",		function(a, e)			return a .. (e == "е" and "йе" or "Йе")		end	):gsub("^Е", "Йе"):gsub("^е", "йе") -- conversons for КкГг -> ғқ text = mw.ustring.gsub(text, "К", "к") text = mw.ustring.gsub(text, "Г", "г") text = mw.ustring.gsub(text, "кк", "КК") text = mw.ustring.gsub(text, "гг", "ГГ") text = mw.ustring.gsub(text, "к([" .. frontvowels .. "])", "К%1") text = mw.ustring.gsub(text, "г([" .. frontvowels .. "])", "Г%1") text = mw.ustring.gsub(text, "к([" .. backvowels .. "])", "қ%1") text = mw.ustring.gsub(text, "г([" .. backvowels .. "])", "ғ%1") text = mw.ustring.gsub(text, "([" .. backvowels .. "])г", "%1ғ") text = mw.ustring.gsub(text, "([" .. backvowels .. "])к", "%1қ") -- other methods dont work at the end of the string -- so were gonna be lazy and capitals letters that shouldnt convert -- marking of Ии text = mw.ustring.gsub(text, "И", "и") text = mw.ustring.gsub(		text,		"([^" .. frontvowels .. consonants .. "])([" .. consonants .. "])и([" .. consonants .. "])([^" .. e .. "])",		"%1%2И%3%4"	) text = mw.ustring.gsub(text, "^([" .. consonants .. "])и([" .. consonants .. "])([^" .. e .. "])", "%1И%2%3") text = mw.ustring.gsub(text, "([" .. backvowels .. "])([" .. consonants .. "])и", "%1%2И") text = mw.ustring.gsub(text, "^и([" .. consonants .. "])([^" .. e .. "])", "И%1%2") text = mw.ustring.gsub(text, "([^" .. frontvowels .. "])([" .. consonants .. "])([" .. consonants .. "])и", "%1%2%3И") return (mw.ustring.gsub(text, ".", tt)) end

return export