Module:kum-translit

Wiktionary වෙතින්
A user suggests that this Kumyk module page be cleaned up.
Please see the discussion on Requests for cleanup(+) for more information and remove this template after the problem has been dealt with.

This module will transliterate Kumyk භාෂාව text. The module should preferably not be called directly from templates or other modules. To use it from a template, use {{xlit}}. Within a module, use Module:languages#Language:transliterate.

For testcases, see Module:kum-translit/testcases.

Functions

tr(text, lang, sc)
Transliterates a given piece of text written in the script specified by the code sc, and language specified by the code lang.
When the transliteration fails, returns nil.

local export = {}

local digraphs = {
	['гь']= 'h', ['Гь']='H', ['гъ']='ğ', ['Гъ']='Ğ', ['уь']='ü', ['Уь']='Ü',
    ['къ']='q',  ['Къ']='Q', ['нг']='ñ', ['Нг']='Ñ', ['оь']='ö', ['Оь']='Ö'
}

local single_letters = {
	['а']='a', ['А']='A',  ['б']='b', ['Б']='B',  ['в']='w', ['В']='w',
	['г']='g', ['Г']='G',  ['д']='d', ['Д']='D',  ['е']='e', ['Е']='E',
	['ё']='yo',['Ё']='Yo', ['ж']='j', ['Ж']='J',  ['з']='z', ['З']='Z',
	['и']='i', ['И']='İ',  ['й']='y', ['Й']='Y',  ['к']='k', ['К']='K',
	['л']='l', ['Л']='L',  ['м']='m', ['М']='M',  ['н']='n', ['Н']='N',
	['о']='o', ['О']='O',  ['п']='p', ['П']='P',  ['р']='r', ['Р']='R',
	['с']='s', ['С']='S',  ['т']='t', ['Т']='T',  ['у']='u', ['У']='U',
	['ф']='f', ['Ф']='F',  ['х']='x', ['Х']='X',  ['ц']='ts',['Ц']='Ts',
	['ч']='ç', ['Ч']='Č',  ['ш']='ş', ['Ш']='Ş',  ['щ']='şç',['Щ']='Şç',
	['ъ']='',  ['Ъ']='',   ['ы']='ı', ['Ы']='I',  ['ь']='ʹ', ['Ь']='ʹ',
	['э']='e', ['Э']='E',  ['ю']='yu',['Ю']='Yu', ['я']='ya',['Я']='Ya',
}

function export.tr(text, lang, sc)
	for digraph, replacement in pairs(digraphs) do
		text = mw.ustring.gsub(text, digraph, replacement)
	end
	
 	text = mw.ustring.gsub(text,
 		"()([ЕеЮюЁё])",
 		function (pos, iotated)
 			-- modifier letter apostrophe or right single quotation mark
 			local preceding = mw.ustring.sub(text, math.max(1, pos - 2), math.max(0, pos - 1))
 			local capital = iotated == "Е" or iotated == "Ю"
 			local lower = mw.ustring.lower(iotated)
 			
 			local translit
 			if preceding == "" or mw.ustring.match(preceding, "[АОӨӘУЫЕЯЁЮИЕаоөәуыэяёюиеъь%A][́̀]?$") then
 				if capital then
 					if lower == "ю" then return "Yu"
 					elseif lower == "ё" then return "Yo"
 					else return "Ye" end
 				else
 					if lower == "ю" then return "yu"
 					elseif lower == "ё" then return "yo"
 					else return "ye" end
 				end
 			else
 				if capital then
 					if lower == "ю" then return "Ü"
 					elseif lower == "ё" then return "Ö"
 					else return "E" end
 				else
 					if lower == "ю" then return "ü"
 					elseif lower == "ё" then return "ö"
 					else return "e" end
 				end
 			end
 			return translit
 		end)
	
	return (mw.ustring.gsub(text, '.', single_letters))
end

return export
"https://si.wiktionary.org/w/index.php?title=Module:kum-translit&oldid=35530" වෙතින් සම්ප්‍රවේශනය කෙරිණි