This module will transliterate ภาษาอุซเบก 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:uz-translit/testcases.

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 tt={
	["т"]="t",["Т"]="T",   ["р"]="r",["Р"]="R",   ["ф"]="f",["Ф"]="F",
	["ю"]="yu",["Ю"]="Yu", ["ш"]="sh",["Ш"]="Sh", ["ҳ"]="h",["Ҳ"]="H",   ["ъ"]="’",["Ъ"]="’", ["н"]="n",["Н"]="N", 
	["п"]="p",["П"]="P",   ["й"]="y",["Й"]="Y", ["л"]="l",["Л"]="L",   ["з"]="z",["З"]="Z", ["е"]="e",["Е"]="E", 
	["г"]="g",["Г"]="G",   ["б"]="b",["Б"]="B", ["у"]="u",["У"]="U",   ["с"]="s",["С"]="S", ["х"]="x",["Х"]="X",
	["ч"]="ch",["Ч"]="Ch",   ["я"]="ya",["Я"]="Ya",
	["м"]="m",["М"]="M",   ["о"]="o",["О"]="O", ["и"]="i",["И"]="I", ["ё"]="yo",["Ё"]="Yo", ["ж"]="j",["Ж"]="J",
	["к"]="k",["К"]="K",   ["д"]="d",["Д"]="D", ["в"]="v",["В"]="V", ["а"]="a",["А"]="A",
	["ў"]="oʻ",["Ў"]="Oʻ", ["э"]="e",["Э"]="E", ["қ"]="q",["Қ"]="Q",  ["ғ"]="gʻ",["Ғ"]="Gʻ"
};

function export.tr(text, lang, sc)
	text = mw.ustring.gsub(
		text,
		"([АОУЕЯЁЮИЕаоуэяёюие][́̀]?)([Ее])",
		function(a, e)
			local iotated = {
				['е'] = 'ye',
				['Е'] = 'Ye',
			}
			return a .. iotated[e]
		end
	)
	
	text:gsub("^Е",'Ye'):gsub("^е",'ye')
	
	return (mw.ustring.gsub(text, '.', tt))
end

return export