Jump to content

Module:ks-Deva-translit

Long Wiktionary

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

local export = {}

local consonants = {
	['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['ङ'] = 'ṅ',
	['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['ञ'] = 'ñ',
	['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ण'] = 'ṇ',
	['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['न'] = 'n',
	['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['म'] = 'm',
	['य'] = 'y', ['र'] = 'r', ['ल'] = 'l', ['व'] = 'w',
	['श'] = 'ś', ['ष'] = 'ṣ', ['स'] = 's', ['ह'] = 'h',
	['च़'] = 'ċ', ['छ़'] = 'ċh', ['ज़'] = 'z',['फ़']='f',
	['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'g',
	['भ'] = 'bh', --found ocassionally in some Sanskrit loanwords
}

local diacritics = {
	['ा'] = 'ā', ['ॅ'] = 'ạ', ['ॉ'] = 'ạ̄', ['ॖ'] = 'ụ', ['ॗ'] = 'ụ̄', ['ि'] = 'i', ['ी'] = 'ī', ['ु'] = 'u', ['ू'] = 'ū', ['ृ'] = 'ṛ',
	['ॆ'] = 'e', ['े'] = 'ē', ['ै'] = 'ai', ['ॊ'] = 'o', ['ो'] = 'ō', ['ॏ'] = 'ô', ['ौ'] = 'au', ['्'] = '',['ऺ'] = 'ạ', ['ऻ']='ạ̄'
}

local tt = {
	-- vowels
	['अ'] = 'a', ['आ'] = 'ā', ['ॲ'] = 'ạ', ['ऑ'] = 'ạ̄', ['ॶ'] = 'ụ', ['ॷ'] = 'ụ̄', ['इ'] = 'i', ['ई'] = 'ī', ['उ'] = 'u', ['ऊ'] = 'ū', ['ऋ'] = 'ṛ',
	['ऎ'] = 'e', ['ए'] = 'ē', ['ऐ'] = 'ai', ['ऒ'] = 'o', ['ओ'] = 'ō', ['ॵ'] = 'ô', ['औ'] = 'au', ['ॳ'] = 'ạ',	['ॴ']=  'ạ̄',
	--chandrabindu
	['ँ'] = 'm̐', --until a better method is found
	-- anusvara
	['ं'] = 'ṃ', --until a better method is found
	-- visarga
	['ः'] = 'ḥ',
	-- avagraha
	['ऽ'] = '’',
	--numerals
	['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9',
	--punctuation
	['।'] = '.', --danda
	['॥'] = '.', --double danda
	['ॐ'] = 'om',
}

function export.tr(text, lang, sc)
	text = mw.ustring.gsub(text, '(.[़]?.[़]?)$', '%1्')
	text = mw.ustring.gsub(text,
		'([कखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहक़ख़]़?)' .. --tbd later
				'([ािॅॉीुॖॗूृॄॢॣेैोौ्ॆॉॊौॏऺऻ]?)',
		function(c, d)
			if d == "" then
				return consonants[c] .. 'a'
			else
				return consonants[c] .. diacritics[d]
			end
		end)
	
	text = mw.ustring.gsub(text, '.', tt)
	text = mw.ustring.gsub(text, '्$', '')
	
	return text
end

return export