Module:sa-Kthi-translit

Hello, you have come here looking for the meaning of the word Module:sa-Kthi-translit. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:sa-Kthi-translit, but we will also tell you about its etymology, its characteristics and you will know how to say Module:sa-Kthi-translit in singular and plural. Everything you need to know about the word Module:sa-Kthi-translit you have here. The definition of the word Module:sa-Kthi-translit will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:sa-Kthi-translit, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This module will transliterate Sanskrit language text per WT:SA TR. It is also used to transliterate Old Awadhi. 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 Module:sa-Kthi-translit/testcases.

Functions

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

local export = {}

local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local toNFC = mw.ustring.toNFC
local u = m_str_utils.char

local consonants = {
	 = 'k',  = 'kh',  = 'g',  = 'gh',  = 'ṅ', 
	 = 'c',  = 'ch',  = 'j',  = 'jh',  = 'ñ', 
	 = 'ṭ',  = 'ṭh',  = 'ḍ',  = 'ḍh',  = 'ṇ',
	 = 't',  = 'th',  = 'd',  = 'dh',  = 'n',
	 = 'p',  = 'ph',  = 'b',  = 'bh',  = 'm', 
	 = 'y',  = 'r',  = 'l',  = 'v',  = 'v',  = 'ḷ',
	 = 'ś',  = 'ṣ',  = 's',  = 'h',
	 = 'ṛ',  = 'ṛ',  = 'ṛh',  = 'ṛh',
	--  = 'gy',
}

local diacritics = {
	 = 'i',  = 'u',  = 'e',  = 'o', 
	 = 'ā',  = 'ī',  = 'ū',  = 'r̥',
	 = 'ai',  = 'au', 

	-- virama
	 = '',
}

local diatrema = {
	 = 'ï',  = 'ü',
}

local tt = {

	-- vowels
	 = 'a',  = 'i',  = 'u',  = 'e',  = 'o',
	 = 'ā',  = 'ī',  = 'ū',  
	 = 'ai',  = 'au', 

	 = 'om',

	-- chandrabindu
	 = 'm̐',

	-- anusvara
	 = 'ṃ',

	-- visarga
	 = 'ḥ',

	--numerals
	 = '0',  = '1',  = '2',  = '3',  = '4',
	 = '5',  = '6',  = '7',  = '8',  = '9',

	--punctuation        
	 = '.', -- danda
	 = ".", -- double danda

	 = '', -- compound separator

    --reconstructed
     = '',
}

function export.tr(text, lang, sc)
	text = gsub(
		text,
		'()'..
		'(?)'..
		'(?)',
		function(c, d, e)
			if d == "" and e ~= "" then
				return consonants .. 'a' .. diatrema
			elseif e ~= "" then
				return consonants .. diacritics .. tt
			elseif d == "" then        
				return consonants .. 'a'
			else
				return consonants .. diacritics
			end
		end)

-- Adjacent vowel letters needing dieresis

	text = gsub(text, '()()', function(a, b) return tt..diatrema end)

	text = gsub(text, '.', tt)

	return toNFC(text)

end

return export