มอดูล:Taml-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 มอดูล:Taml-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)
	['ா'] = 'า', ['ி'] = 'ิ', ['ீ'] = 'ี', ['ு'] = 'ุ', ['ூ'] = 'ู',
	['ஂ'] = 'ํ', ['ஃ'] = 'ห์', ['்'] = 'ฺ',
	-- numerals
	['௦'] = '0', ['௧'] = '1', ['௨'] = '2', ['௩'] = '3', ['௪'] = '4',
	['௫'] = '5', ['௬'] = '6', ['௭'] = '7', ['௮'] = '8', ['௯'] = '9',
	['௰'] = '[10]', ['௱'] = '[100]', ['௲'] = '[1000]',
	-- zero-width space (display it if it hides in a word)
	[u(0x200B)] = '‼',
}

local adjust0 = {
	-- for convenience
	['ஒ'..'ௗ'] = 'ஔ',
	['ெ'..'ா'] = 'ொ', ['ே'..'ா'] = 'ோ', ['ெ'..'ௗ'] = 'ௌ',
	['ௐ'] = 'ஓம்',
}

local adjust1 = {
	-- dependent vowels (front type)
	['ெ'] = 'เ%1ะ', ['ே'] = 'เ%1', ['ை'] = 'ไ%1',
	['ொ'] = 'โ%1ะ', ['ோ'] = 'โ%1', ['ௌ'] = 'เ%1า',
}

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

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

	for k, v in pairs(adjust0) do
		text = gsub(text, k, v)
	end
	text = gsub(text, '.', tt)

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

	text = gsub(text, '([เแไโ])อฺ', 'อฺ%1')
	text = gsub(text, 'ะ'..letter_with_mark..'ฺ', '็%1ฺ') -- เปลี่ยน ะ ที่มีตัวสะกดตามเป็นไม้ไต่คู้
	
	-- ย้ายสัญลักษณ์ขึ้นบน เมื่อมีสระล่าง (ยกเว้นตัวที่ไม่มี)
	text = gsub(text, u(0x0331)..'([ุ-ฺ])', u(0x0304)..'%1') -- macron below > macron above
	
	return text

end

return export