มอดูล:Beng-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 มอดูล:Beng-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
	['ক'] = 'ก', ['খ'] = 'ข', ['গ'] = 'ค', ['ঘ'] = 'ฆ', ['ঙ'] = 'ง',
	['চ'] = 'จ', ['ছ'] = 'ฉ', ['জ'] = 'ช', ['ঝ'] = 'ฌ', ['ঞ'] = 'ญ',
	['ট'] = 'ฏ', ['ঠ'] = 'ฐ', ['ড'] = 'ฑ', ['ঢ'] = 'ฒ', ['ণ'] = 'ณ',
	['ত'] = 'ต', ['ৎ'] = 'ตฺ', ['থ'] = 'ถ', ['দ'] = 'ท', ['ধ'] = 'ธ', ['ন'] = 'น',
	['প'] = 'ป', ['ফ'] = 'ฝ', ['ব'] = 'พ', ['ভ'] = 'ภ', ['ম'] = 'ม',
	['য'] = 'ย', ['র'] = 'ร', ['ৰ'] = 'ร', ['ল'] = 'ล', ['ৱ'] = 'ว',
	['শ'] = 'ศ', ['ষ'] = 'ษ', ['স'] = 'ส', ['হ'] = 'ห',
	[u(0x09DC)] = 'ฬ', [u(0x09DD)] = 'ฬ̱', [u(0x09DF)] = 'ย̱',
	-- independent vowels
	['অ'] = 'อ', ['আ'] = 'อา', ['ই'] = 'อิ', ['ঈ'] = 'อี', ['উ'] = 'อุ', ['ঊ'] = 'อู',
	['ঋ'] = 'ฤ', ['ৠ'] = 'ฤๅ', ['ঌ'] = 'ฦ', ['ৡ'] = 'ฦๅ',
	['এ'] = 'เอ', ['ঐ'] = 'ไอ', ['ও'] = 'โอ', ['ঔ'] = 'เอา',
	-- dependent vowels and diacritics (excluding front type)
	['া'] = 'า', ['ি'] = 'ิ', ['ী'] = 'ี', ['ু'] = 'ุ', ['ূ'] = 'ู',
	['ৃ'] = 'ฺฤ', ['ৄ'] = 'ฺฤๅ', ['ৢ'] = 'ฺฦ', ['ৣ'] = 'ฺฦๅ',
	['ৗ'] = '~', ['ং'] = 'ํ', ['ঃ'] = 'ห์', ['্'] = 'ฺ',
	['়'] = u(0x0331), -- macron below
	['ঁ'] = 'ม̐', -- candrabindu
	-- marks
	['ঽ'] = '-',
	-- numerals
	['০'] = '0', ['১'] = '1', ['২'] = '2', ['৩'] = '3', ['৪'] = '4',
	['৫'] = '5', ['৬'] = '6', ['৭'] = '7', ['৮'] = '8', ['৯'] = '9',
	['৴'] = '¹⁄₁₆', ['৵'] = '⅛', ['৶'] = '³⁄₁₆', ['৷'] = '¼', ['৸'] = '¾', ['৹'] = '16',
	-- zero-width space (display it if it hides in a word)
	[u(0x200B)] = '‼',
}

local adjust0 = {
	-- for convenience
	['ড'..'়'] = u(0x09DC), ['ঢ'..'়'] = u(0x09DD), ['য'..'়'] = u(0x09DF),
	['ে'..'া'] = 'ো', ['ে'..'ৗ'] = 'ৌ',
}

local adjust1 = {
	-- dependent vowels (front type)
	['ে'] = 'เ%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, u(0x0331)..'([ุ-ฺ])', u(0x0304)..'%1') -- macron below > macron above
	
	return text

end

return export