มอดูล:Mymr-translit

จาก วิกิพจนานุกรม พจนานุกรมเสรี
ไปยังการนำทาง ไปยังการค้นหา

มอดูลนี้ใช้ถอดอักษรข้อความในอักษรพม่า.

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 มอดูล:Mymr-translit/testcases.

ฟังก์ชัน[แก้ไข]

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

-- แม่แบบนี้เป็นแม่แบบทดลอง

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', ['ဲ'] = 'แ%1', ['ဴ'] = 'โ%1', ['ဵ'] = 'เ%1',
	['ၲ'] = 'เ%1อ̂', ['ၴ'] = 'เ%1', ['ႄ'] = 'เ%1', ['ႅ'] = 'เ%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

	text = gsub(text, 'ရ([ျြွ]?)ှ', 'ၡ%1') -- หฺร -> ศ
	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

	text = gsub(text, letter_with_mark..'ิุ', 'โ%1') -- อิุ -> โอ
	text = gsub(text, 'โ'..letter_with_mark..'([ก-รวศษสฬอ]์)', 'ไ%1%2') -- โอx์ -> ไอx์ ยกเว้น ลหฮ

	text = gsub(text, 'เ'..letter_with_mark..'า', '%1อ̂') -- เอา -> ออ̂
	text = gsub(text, '^'..letter_with_mark..'อ̂์', 'เ%1าะ') -- ออ̂์ -> เอาะ
	text = gsub(text, '([^เ])'..letter_with_mark..'อ̂์', '%1เ%2าะ') -- ออ̂์ -> เอาะ
	text = gsub(text, '^'..letter_with_mark..'อ̂([ก-ฮ]์)', 'เ%1า%2') -- ออ̂x์ -> เอาx์
	text = gsub(text, '([^เ])'..letter_with_mark..'อ̂([ก-ฮ]์)', '%1เ%2า%3') -- ออ̂x์ -> เอาx์

	text = gsub(text, '([เแไโ])อฺ', 'อฺ%1')
	text = gsub(text, '([¹²³⁴⁵⁶])์', '์%1')

	return text
 
end
 
return export