Module:Deva-translit
ការរចនា
Documentation for this module may be created at Module:Deva-translit/doc
local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local letter_with_mark = '(.['..u(0x0300)..'-'..u(0x036F)..']?)'
local tt = {
-- consonants
['क'] = 'ក', ['ख'] = 'ខ', ['ग'] = 'គ', ['घ'] = 'ឃ', ['ङ'] = 'ង',
['च'] = 'ច', ['छ'] = 'ឆ', ['ज'] = 'ជ', ['झ'] = 'ឈ', ['ञ'] = 'ញ',
['ट'] = 'ដ', ['ठ'] = 'ឋ', ['ड'] = 'ឌ', ['ढ'] = 'ឍ', ['ण'] = 'ណ',
['त'] = 'ត', ['थ'] = 'ថ', ['द'] = 'ទ', ['ध'] = 'ធ', ['न'] = 'ន', [u(0x0929)] = 'ន៑',
['प'] = 'ប', ['फ'] = 'ផ', ['ब'] = 'ព', ['भ'] = 'ភ', ['म'] = 'ម',
['य'] = 'យ', ['र'] = 'រ', [u(0x0931)] = 'រ៑', ['ल'] = 'ល', ['ळ'] = 'ឡ', [u(0x0934)] = 'ឡ៑', ['व'] = 'វ',
['श'] = 'ឝ', ['ष'] = 'ឞ', ['स'] = 'ស', ['ह'] = 'ហ',
[u(0x0958)] = 'ក៑', [u(0x0959)] = 'ខ៑', [u(0x095A)] = 'គ៑',
[u(0x095B)] = 'ជ្ស', [u(0x095C)] = 'ឌ៑', [u(0x095D)] = 'ឍ៑',
[u(0x095E)] = 'ផ្វ', [u(0x095F)] = 'យ៑', ['ॹ'] = 'ជ្ស៑', ['ॺ'] = 'យ្យ៑',
['ॻ'] = 'គ៎', ['ॼ'] = 'ជ៎', ['ॽ'] = 'អ', ['ॾ'] = 'ឌ៎', ['ॿ'] = 'ព៎',
-- independent vowels
['अ'] = 'ឣ', ['आ'] = 'ឤ', ['इ'] = 'ឥ', ['ई'] = 'ឦ',
['ॶ'] = 'អ៝', ['ॷ'] = 'ឤ៝', ['उ'] = 'ឧ', ['ऊ'] = 'ឩ',
['ऋ'] = 'ឫ', ['ॠ'] = 'ឬ', ['ऌ'] = 'ឭ', ['ॡ'] = 'ឮ',
['ऍ'] = 'ឯ៝', ['ऎ'] = 'ឯ់', ['ए'] = 'ឯ', ['ऐ'] = 'ឰ',
['ऑ'] = 'ឩ៝', ['ऒ'] = 'ឧ៝', ['ओ'] = 'ឱ', ['औ'] = 'ឳ',
['ॳ'] = 'ឧឹ', ['ॴ'] = 'ឧឺ',
-- dependent vowels and diacritics (excluding front type)
['ा'] = 'ា', ['ि'] = 'ិ', ['ी'] = 'ី',
['ॖ'] = 'ឹ', ['ॗ'] = 'ឺ', ['ु'] = 'ុ', ['ू'] = 'ូ',
['ृ'] = '្ឫ', ['ॄ'] = '្ឬ', ['ॢ'] = '្ឭ', ['ॣ'] = '្ឮ',
['ॉ'] = 'អ៝', ['ं'] = 'ំ', ['ः'] = 'ះ', ['्'] = '្',
['़'] = u(0x0331), -- macron below
['ऀ'] = '͒', -- fermata (inverted candrabindu)
['ँ'] = '̐', -- candrabindu
['॑'] = u(0x030D), -- vertical line above
['॒'] = u(0x0332), -- low line
['॓'] = u(0x0300), -- grave accent
['॔'] = u(0x0301), -- acute accent
-- marks
['ऽ'] = 'ៜ', ['॥'] = '៕', ['।'] = '។', ['॰'] = '.', ['ॱ'] = '‧',
['ॐ'] = 'ឱំ',
-- numerals
['०'] = '០', ['१'] = '១', ['२'] = '២', ['३'] = '៣', ['४'] = '៤',
['५'] = '៥', ['६'] = '៦', ['७'] = '៧', ['८'] = '៨', ['९'] = '៩',
-- zero-width space (display it if it hides in a word)
[u(0x200B)] = '‼',
}
local adjust0 = {
-- for convenience
['न'..'़'] = u(0x0929), ['र'..'़'] = u(0x0931), ['ळ'..'़'] = u(0x0934),
['क'..'़'] = u(0x0958), ['ख'..'़'] = u(0x0959), ['ग'..'़'] = u(0x095A),
['ज'..'़'] = u(0x095B), ['ड'..'़'] = u(0x095C), ['ढ'..'़'] = u(0x095D),
['फ'..'़'] = u(0x095E), ['य'..'़'] = u(0x095F),
}
local adjust1 = {
-- dependent vowels (front type)
['ॅ'] = '%1ែ', ['ॆ'] = '%1េៈ', ['े'] = '%1េ', ['ै'] = '%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
if lang == 'ne' then -- unused marks from ne-l
text = gsub(text, '[<>•ॱ]', '')
end
for k, v in pairs(adjust0) do
text = gsub(text, k, v)
end
text = gsub(text, '(र्)([क-ह])', '%2៌')
text = gsub(text, '.', tt)
for k, v in pairs(adjust1) do
text = gsub(text, letter_with_mark..k, v)
end
return text
end
return export