Module:ba-translit

From Linguifex
Revision as of 04:30, 4 April 2026 by wikt>Fish bowl (rv: this affects words like мәсьәлә. although "a lot of native speakers usually omit it completely" (w:Bashkir phonology), it has been given representation in the highly phonetic bashkir alphabet, and this should be reflected)
Jump to navigation Jump to search

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

local export = {}

local tt = {
	["ү"]="ü",  ['Ү']='Ü',  ["т"]="t",  ['Т']='T',  ["р"]="r",  ['Р']='R',  ["ф"]="f",  ['Ф']='F',  ["ө"]="ö", ['Ө']='Ö',
	["ю"]="yu", ['Ю']='Yu', ["ш"]="ş",  ['Ш']='Ş',  ["ь"]="ʹ",  ['Ь']='ʹ',  ["ъ"]="ʺ",  ['Ъ']='ʺ',   ["н"]="n", ['Н']='N', 
	["п"]="p",  ['П']='P',  ["й"]="y",  ['Й']='Y',  ["л"]="l",  ['Л']='L',  ["з"]="z",  ['З']='Z',  ["е"]="e", ['Е']='E', 
	["г"]="g",  ['Г']='G',  ["б"]="b",  ['Б']='B',  ["у"]="u",  ['У']='U',  ["с"]="s",  ['С']='S',  ["х"]="x", ['Х']='X',
	["ч"]="ç",  ['Ч']='Ç',  ["щ"]="şç", ['Щ']='Şç', ["я"]="ya", ['Я']='Ya', ["ы"]="ı",  ['Ы']='I',  ["э"]="e", ['Э']='E', 
	["м"]="m",  ['М']='M',  ["о"]="o",  ['О']='O',  ["и"]="i",  ['И']='İ',  ["ё"]="yo", ['Ё']='Yo', ["ж"]="j", ['Ж']='j',
	["к"]="k",  ['К']='K',  ["д"]="d",  ['Д']='D',  ["в"]="v",  ['В']='V',  ["ц"]="ts", ['Ц']='Ts', ["а"]="a", ['А']='A',
	["ң"]="ñ",  ['Ң']='Ñ',  ["ғ"]="ğ",  ['Ғ']='Ğ',  ["ҙ"]="ź",  ['Ҙ']='Ź',  ["ҡ"]="q",  ['Ҡ']='Q',  ["ҫ"]="ś", ['Ҫ']='Ś',
	["һ"]="h",  ['Һ']='H',  ["ә"]="ə",  ['Ә']='Ə'
};

local iotated = {
	['е'] = 'ye',
	['Е'] = 'Ye',
}

function export.tr(text, lang, sc)
	local str_gsub = string.gsub
	local ugsub = mw.ustring.gsub
	-- ү/у should be transliterated as w before uniotated vowels and after all vowels
	text = ugsub(text, "([АаЕеЭэЁёИиОоӨөУуҮүЫыӘәЮюЯя])[уү]", "%1w")
	text = ugsub(text, "[уү]([АаЭэИиОоӨөЫыӘә])", "w%1")
	
	text = ugsub(text,
			"([АаЕеЭэЁёИиОоӨөУуҮүЪъЫыЬьӘәЮюЯя%A][́̀]?)([Ее])",
			function(a, e)
				return a .. iotated[e]
			end)
	text = ugsub(text,
		"^[Ее]",
		iotated)
	text = str_gsub(text, '[\1-\127\194-\244][\128-\191]*', tt)

	return text
end

return export