Module:tg-translit
Appearance
Documentation for this module may be created at Module:tg-translit/doc
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:scripts").findBestScript(text, require(
"Module:languages").getByCode(
lang)):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:gsub("^Е", 'Ye'):gsub("^е", 'ye')
text = mw.ustring.gsub(text, '.', tt)
end
return text
end
return export