模組:Limb-Deva-translit


This module will transliterate text in the 林布文. 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:Limb-Deva-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 gsub = mw.ustring.gsub
local consonants = {
	['ᤁ']='क', ['ᤂ']='ख', ['ᤃ']='ग', ['ᤄ']='घ', ['ᤅ']='ङ', 
	['ᤆ']='च', ['ᤇ']='छ', ['ᤈ']='ज', ['ᤉ']='झ', ['ᤊ']='ञ',
	['ᤋ']='त', ['ᤌ']='थ', ['ᤍ']='द', ['ᤎ']='ध', ['ᤏ']='न', 
	['ᤐ']='प', ['ᤑ']='फ', ['ᤒ']='ब', ['ᤓ']='भ', ['ᤔ']='म', 
	['ᤕ']='य', ['ᤖ']='र', ['ᤗ']='ल', ['ᤘ']='व', 
	['ᤙ']='श', ['ᤚ']='ष', ['ᤛ']='स', ['ᤜ']='ह', 
	['ᤝ']='ज्ञ', ['ᤞ']='त्र', ['ᤀ']='अ',
}
local diacritics = {
	['ᤠ']='ा' , ['ᤡ']='ि' , ['ᤢ']='ु' , ['ᤣ']='े' , ['ᤤ']='ै' , ['ᤥ']='ो' , ['ᤦ']='ौ' , ['ᤧ']='े़' , ['ᤨ']='ो़'
}

--['ᤧ']='ॅ' , --['ᤨ']='',

local special = {
	['᤹']='ॽ', --mukphreng (glottalizer)
	['ᤲ'] = 'ं' --anusvara (now obsolete)
}

local subjoined = {
	['ᤪ']='्र', ['ᤫ']='्व', ['ᤩ']='्य',
}

local finals = {
	['ᤰ']='क्', ['ᤱ']='ङ्', ['ᤳ']='त्', ['ᤴ']='न्', ['ᤵ']='प्', ['ᤶ']='म्', ['ᤷ']='र्', ['ᤸ']='ल्',
}

local nonconsonants = { 
	
	-- digits
	['᥆'] = '०', ['᥇'] = '१', ['᥈'] = '२', ['᥉'] = '३', ['᥊'] = '४',
	['᥋'] = '५', ['᥌'] = '६', ['᥍'] = '७', ['᥎'] = '८', ['᥏'] = '९',
	['॥']='॥', ['᥄']='!', ['᥅']='?', ['.']=',', 
	['᥀']='लो'
}

-- translit any words or phrases
function export.tr(text, lang, sc)
	text = mw.ustring.gsub(text, '([ᤁᤂᤃᤄᤅᤆᤇᤈᤉᤊᤋᤌᤍᤎᤏᤐᤑᤒᤓᤔᤕᤖᤗᤘᤙᤚᤛᤜᤝᤞᤀ])᤻', '᤺%1') -- treat underscore as kemphreng
	text = mw.ustring.gsub(
		text,
		'([ᤁᤂᤃᤄᤅᤆᤇᤈᤉᤊᤋᤌᤍᤎᤏᤐᤑᤒᤓᤔᤕᤖᤗᤘᤙᤚᤛᤜᤝᤞᤀ])'..
		'([ᤪᤫᤩ]?)'..
		'([ᤠᤡᤢᤣᤤᤥᤦᤧ	ᤨ]?)'..
		'([᤹᤺ᤲ]?)'..
		'([ᤰᤱᤳᤴᤵᤶᤷᤸ]?)',
		function(c, d, e, f, g)
			-- mw.log('match', c, d)
			return (consonants[c] or c) ..
					(subjoined[d] or d) ..
					(diacritics[e] or (e ~= "") and e or '') ..
					(special[f] or f) ..
					(finals[g] or g)
		end)
	
	
text = mw.ustring.gsub(text, '.', nonconsonants)	
text = mw.ustring.gsub(text, '(.)⌫', '')
text = gsub(text, 'ाᤣ', 'ो')
text = gsub(text, 'ᤣᤣ', 'ै')
text = gsub(text, 'ाᤣᤣ', 'ौ')
text = gsub(text, 'ाःᤣ', 'ओः')
text = mw.ustring.gsub(text, '᤺', 'ः')
--text = mw.ustring.gsub(text, 'िः', 'ी')
--text = mw.ustring.gsub(text, 'ुः', 'ू')
text = mw.ustring.gsub(text, 'ᤰ', 'क्')
text = mw.ustring.gsub(text, 'ᤱ', 'ङ्')
text = mw.ustring.gsub(text, 'ᤳ', 'त्')
text = mw.ustring.gsub(text, 'ᤴ', 'न्')
text = mw.ustring.gsub(text, 'ᤵ', 'प्')
text = mw.ustring.gsub(text, 'ᤶ', 'म्')
text = mw.ustring.gsub(text, 'ᤷ', 'र्')
text = mw.ustring.gsub(text, 'ᤸ', 'ल्')
text = mw.ustring.gsub(text, "अा", "आ")
text = mw.ustring.gsub(text, "अि", "इ")
text = mw.ustring.gsub(text, "अी", "ई")
text = mw.ustring.gsub(text, "अु", "उ")
text = mw.ustring.gsub(text, "अू", "ऊ")
text = mw.ustring.gsub(text, "अे", "ए")
text = mw.ustring.gsub(text, "अै", "ऐ")
text = mw.ustring.gsub(text, "अो", "ओ")
text = mw.ustring.gsub(text, "अौ", "औ")
text = mw.ustring.gsub(text, "अॅ", "ऍ")
text = mw.ustring.gsub(text, "अे़", "ए़")
text = mw.ustring.gsub(text, "अो़", "ओ़")
text = gsub(text,  'ाःᤣ', 'ोः')
text = mw.ustring.gsub(text, 'ाःᤣ', 'ोः')
	return mw.ustring.toNFC(text)
end
 
return export