local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local data = {}
data["ug-Arab"] = {
-- consonants
["م"] = "ม", ["ن"] = "น", ["د"] = "ด", ["ت"] = "ต",
["ب"] = "บ", ["پ"] = "ป", ["ف"] = "ฟ", ["ق"] = "ก̤",
["ك"] = "ก", ["ڭ"] = "ง", ["گ"] = "ก̱", ["غ"] = "ฆ",
["ھ"] = "ฮ", ["خ"] = "ค", ["چ"] = "ช",
["ج"] = "จ", ["ژ"] = "ซ̤", ["ز"] = "ซ̱", ["س"] = "ซ",
["ش"] = "ฌ", ["ر"] = "ร", ["ل"] = "ล", ["ئ"] = "อ",
["ي"] = "ย", ["ۋ"] = "ว",
-- vowels
["ا"] = "า", ["ە"] = "↶แ", ["ې"] = "↶เ", ["ى"] = "ี",
["و"] = "↶โ", ["ۆ"] = "↶เิ", ["ۇ"] = "ู", ["ۈ"] = "ื",
-- punctuation
["؟"]="?",
["،"]=",",
["؛"]=";",
["ـ"]="-",
-- zero-width space (display it if it hides in a word)
[u(0x200B)] = "‼", [u(0x200C)] = "‼", [u(0x200D)] = "‼",
}
data["Arab"] = data["ug-Arab"]
data["Cyrl"] = {
["А"] = "า", ["Б"] = "บ", ["В"] = "ว", ["Г"] = "ก̱", ["Ғ"] = "ฆ", ["Д"] = "ด", ["Е"] = "↶เ", ["Ә"] = "↶แ", ["Ж"] = "ซ̤", ["Җ"] = "จ",
["З"] = "ซ̱", ["И"] = "ี", ["Й"] = "ย", ["К"] = "ก", ["Қ"] = "ก̤", ["Л"] = "ล", ["М"] = "ม", ["Н"] = "น", ["Ң"] = "ง", ["О"] = "↶โ",
["Ө"] = "↶เิ", ["П"] = "ป", ["Р"] = "ร", ["С"] = "ซ", ["Т"] = "ต", ["У"] = "ู", ["Ү"] = "ื", ["Ф"] = "ฟ", ["Х"] = "ค", ["Һ"] = "ฮ",
["Ч"] = "ช", ["Ш"] = "ฌ", ["Ю"] = "ยู", ["Я"] = "ยา",
["Э"] = "↶เ",
["а"] = "า", ["б"] = "บ", ["в"] = "ว", ["г"] = "ก̱", ["ғ"] = "ฆ", ["д"] = "ด", ["е"] = "↶เ", ["ә"] = "↶แ", ["ж"] = "ซ̤", ["җ"] = "จ",
["з"] = "ซ̱", ["и"] = "ี", ["й"] = "ย", ["к"] = "ก", ["қ"] = "ก̤", ["л"] = "ล", ["м"] = "ม", ["н"] = "น", ["ң"] = "ง", ["о"] = "↶โ",
["ө"] = "↶เิ", ["п"] = "ป", ["р"] = "ร", ["с"] = "ซ", ["т"] = "ต", ["у"] = "ู", ["ү"] = "ื", ["ф"] = "ฟ", ["х"] = "ค", ["һ"] = "ฮ",
["ч"] = "ช", ["ш"] = "ฌ", ["ю"] = "ยู", ["я"] = "ยา",
["э"] = "↶เ",
}
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:scripts").findBestScript(text, require("Module:languages").getByCode(lang)):getCode()
end
text = gsub(text, "^([аеәиоөуүАЕӘИОӨУҮ])", "อ%1")
text = gsub(text, "([%s%p])([аеәиоөуүАЕӘИОӨУҮ])", "%1อ%2")
text = gsub(text, "([аеәиоөуүАЕӘИОӨУҮ])([аеәиоөуүАЕӘИОӨУҮ])", "%1อ%2")
text = gsub(text, ".", data[sc])
text = gsub(text, "([ก-ฮ]̱?̤?)↶([เแโ])", "%2%1")
-- ย้ายสัญลักษณ์ขึ้นบน เมื่อมีสระล่าง
text = gsub(text, u(0x0331)..'([ุ-ฺ])', u(0x0304)..'%1') -- macron below > macron above
text = gsub(text, u(0x0324)..'([ุ-ฺ])', u(0x0308)..'%1') -- diaeresis below > diaeresis above
return text
end
return export