Jump to content

Module:Mymr-translit

ពីWiktionary

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

local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local letter_with_mark = "(.["..u(0x0300).."-"..u(0x036F).."]?)"

local tt = {
	-- consonants
	["က"] = "ក", ["ခ"] = "ខ", ["ဂ"] = "គ", ["ဃ"] = "ឃ", ["င"] = "ង",
	["စ"] = "ច", ["ဆ"] = "ឆ", ["ဇ"] = "ជ", ["ဈ"] = "ឈ", ["ဉ"] = "ញ", ["ည"] = "ញ្ញ",
	["ဋ"] = "ដ", ["ဌ"] = "ឋ", ["ဍ"] = "ឌ", ["ဎ"] = "ឍ", ["ဏ"] = "ណ",
	["တ"] = "ត", ["ထ"] = "ថ", ["ဒ"] = "ទ", ["ဓ"] = "ធ", ["န"] = "ន",
	["ပ"] = "ប", ["ဖ"] = "ផ", ["ဗ"] = "ព", ["ဘ"] = "ភ", ["မ"] = "ម",
	["ယ"] = "យ", ["ရ"] = "រ", ["လ"] = "ល", ["ဝ"] = "វ",
	["သ"] = "ស", ["ဟ"] = "ហ", ["ဠ"] = "ឡ", ["အ"] = "អ",
	["ဢ"] = "ឣ", ["ဿ"] = "ស្ស", ["ၐ"] = "ឝ", ["ၑ"] = "ឞ",
	["ၚ"] = "ង", ["ၛ"] = "ឈ", ["ၜ"] = "ប", ["ၝ"] = "ម្ប", ["ၡ"] = "ឝ",
	["ၥ"] = "ថ", ["ၦ"] = "ប្វ", ["ၮ"] = "ណ្ណ", ["ၯ"] = "យ្វ", ["ၰ"] = "ឃ្វ",
	["ၵ"] = "ក", ["ၶ"] = "ខ", ["ၷ"] = "គ", ["ၸ"] = "ច", ["ၹ"] = "ហ្ស",
	["ၺ"] = "ញ", ["ၻ"] = "ទ", ["ၼ"] = "ន", ["ၽ"] = "ផ",
	["ၾ"] = "ហ្វ", ["ၿ"] = "ព", ["ႀ"] = "ថ", ["ႁ"] = "ហ",
	["ႎ"] = "ហ្វ",
	["ꩠ"] = "ឃ", ["ꩡ"] = "ច", ["ꩢ"] = "ឆ", ["ꩣ"] = "ជ", ["ꩤ"] = "ឈ", ["ꩥ"] = "ញ",
	["ꩦ"] = "ដ", ["ꩧ"] = "ឋ", ["ꩨ"] = "ឌ", ["ꩩ"] = "ឍ", ["ꩪ"] = "ធ", ["ꩫ"] = "ន",
	["ꩬ"] = "ស", ["ꩭ"] = "ហ", ["ꩮ"] = "ហ្ហ", ["ꩯ"] = "ហ្វ",
	["ꩱ"] = "គ", ["ꩲ"] = "ហ្ស", ["ꩳ"] = "រ", ["ꩴ"] = "�", ["ꩵ"] = "�", ["ꩶ"] = "�",
	["ꩺ"] = "រ",
	["ꩾ"] = "ឆ", ["ꩿ"] = "ឝ",
	["ꧠ"] = "ខ", ["ꧡ"] = "ឆ", ["ꧢ"] = "ឈ", ["ꧣ"] = "ណ", ["ꧤ"] = "ភ",
	["ꧧ"] = "ញ", ["ꧨ"] = "ហ្វ", ["ꧩ"] = "គ", ["ꧪ"] = "ឃ",
	["ꧫ"] = "ជ", ["ꧬ"] = "ឈ", ["ꧭ"] = "ឌ", ["ꧮ"] = "ឍ", ["ꧯ"] = "ណ",
	["ꧺ"] = "ឡ", ["ꧻ"] = "ទ", ["ꧼ"] = "ធ", ["ꧽ"] = "ព", ["ꧾ"] = "ភ",
	-- independent vowels
	["ဣ"] = "ឥ", ["ဤ"] = "ឦ", ["ဥ"] = "ឧ", ["ဦ"] = "ឩ",
	["ဧ"] = "ឯ", ["ဨ"] = "ឯ", ["ဩ"] = "ឱ", ["អោៈ"] = "เอาะ",
	["ၒ"] = "ឫ", ["ၓ"] = "ឬ", ["ၔ"] = "ឭ", ["ၕ"] = "ឮ",
	-- dependent vowels and diacritics (excluding front type)
	["ါ"] = "ា", ["ာ"] = "ា", ["ိ"] = "ិ", ["ီ"] = "ឹ", ["ု"] = "ុ", ["ူ"] = "ូ",
	["ဳ"] = "ី", ["ံ"] = "ំ", ["့"] = "̥", ["း"] = "ៈ", ["္"] = "្", ["်"] = "៑",
	["ျ"] = "្យ", ["ြ"] = "្រ", ["ွ"] = "្វ", --["ှ"] = "្ហ",
	["ၖ"] = "្ឫ", ["ၗ"] = "្ឬ", ["ၘ"] = "្ឭ", ["ၙ"] = "្ឮ",
	["ၞ"] = "្ន", ["ၟ"] = "្ម", ["ၠ"] = "្ល",
	["ၢ"] = "ា", ["ၣ"] = "�", ["ၤ"] = "�",
	["ၧ"] = "�", ["ၨ"] = "ឹ", ["ၩ"] = "¹", ["ၪ"] = "²", ["ၫ"] = "³", ["ၬ"] = "⁴", ["ၭ"] = "⁵",
	["ၱ"] = "ិ", ["ၳ"] = "ុ",
	["ႂ"] = "្វ", ["ႃ"] = "ា", ["ႆ"] = "យ",
	["ႇ"] = "²", ["ႈ"] = "³", ["ႉ"] = "⁵", ["ႊ"] = "⁶", ["ႋ"] = "²", ["ႌ"] = "³", ["ႍ"] = "̲",
	["ႏ"] = "⁵",
	["ႚ"] = "¹", ["ႛ"] = "³", ["ႜ"] = "ៈ", ["ႝ"] = "ា",
	["ꩻ"] = "¹", ["ꩼ"] = "²", ["ꩽ"] = "⁵",
	["ꧥ"] = "�",
	-- marks
	["၊"] = ",", ["။"] = "។",
	["၌"] = "@", ["၍"] = ";", ["၎"] = "�", ["၏"] = "។",
	["႟"] = "!", ["ꩰ"] = "ៗ", ["꩷"] = "!", ["ꧦ"] = "ៗ",
	-- numerals
	["၀"] = "០", ["၁"] = "១", ["၂"] = "២", ["၃"] = "៣", ["၄"] = "៤",
	["၅"] = "៥", ["၆"] = "៦", ["၇"] = "៧", ["၈"] = "៨", ["၉"] = "៩",
	["႐"] = "0", ["႑"] = "1", ["႒"] = "2", ["႓"] = "3", ["႔"] = "4",
	["႕"] = "5", ["႖"] = "6", ["႗"] = "7", ["႘"] = "8", ["႙"] = "9",
	["႞"] = "1",
	["꩸"] = "១", ["꩹"] = "២", 
	["꧰"] = "០", ["꧱"] = "១", ["꧲"] = "២", ["꧳"] = "៣", ["꧴"] = "៤",
	["꧵"] = "៥", ["꧶"] = "៦", ["꧷"] = "៧", ["꧸"] = "៨", ["꧹"] = "៩",
	-- zero-width space (display it if it hides in a word)
	[u(0x200B)] = "‼",
}

local adjust1 = {
	-- dependent vowels (front type)
	["ေ"] = "េ", ["ဲ"] = "ែ", ["ဴ"] = "ោ", ["ဵ"] = "េ",
	["ၲ"] = "េ%1ុ", ["ၴ"] = "េ", ["ႄ"] = "េ", ["ႅ"] = "េ",
	-- other
	["ှ"] = "ហ្%1",
}

function export.tr(text, lang, sc, debug_mode)

	if type(text) == "table" then -- called directly from a template
		text = text.args[1]
	end

	if lang == "my" then
		text = gsub(text, "ရ([ျြွ]?)ှ", "ၡ%1") -- ហ្រ -> ឝ
	end

	text = gsub(text, "(့)([ါ-ှ])", "%2%1") -- swap tone-3 mark and vowel
	text = gsub(text, ".", tt)

	for k, v in pairs(adjust1) do
		text = gsub(text, letter_with_mark..k, v)
	end
 
end
 
return export