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.
tr(text, lang, sc)
text
written in the script specified by the code sc
, and language specified by the code lang
.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