Module:tl-translit

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

This module will transliterate Tagalog language text per WT:TL TR. 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:tl-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 consonants = {
	='k', ='g', ='ng',
    ='t', ='d', ='n',
    ='p', ='b', ='m',
    ='y', ='l', ='w',
    ='s', ='h', ='r',
}

local diacritics = {
	='i', ='u', ='',
}

local tt = {
	-- vowels
	='a', ='i', ='u',
	--punctuation
    ='.', -- kulit and pamudpod
    =',' -- single kulit and pamudpod
}

function export.tr(text, lang, sc, override)
	if sc ~= "Tglg" then
		return nil
	end
	
	local separate_dr = false
	if string.find(text, 'ᜍ') then
		separate_dr = true
	end

	text = mw.ustring.gsub(text,'()'..'()','%1-%2')
	text = mw.ustring.gsub(
		text,
		'()'..
		'(?)'..
		'(?)',
		function(c, d, e)
			if d == "" and e ~= "" then
				if tt == "i" or tt == "u" then return consonants .. 'a' .. tt .. ''
				else return consonants .. 'a' .. tt end
				elseif e ~= "" then
				return consonants .. diacritics .. tt
			elseif d == "" then
				return consonants .. 'a'
			else
				return consonants .. diacritics
			end
		end)

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

	--convert intervocalic D to R
	if not separate_dr then
		while true do
			local new_text = text
			text = mw.ustring.gsub(text,"()d()","%1r%2")
			text = mw.ustring.gsub(text,"()()d()","%1%2r%3")
			text = mw.ustring.gsub(text,"^()d()","%1r%2")
			if text == new_text then
				break
			end
		end
		
	end
	
	--remove hyphen between vowels
	text = mw.ustring.gsub(text,"()-()","%1%2")
	
	text = mw.ustring.gsub(text,
		'()',
		function(c)
			mw.logObject(diacritics)
			return '-' .. diacritics
		end)
	
	text = mw.ustring.gsub(text, "◌", "-a")
	text = mw.ustring.gsub(text, " ()", "%1")

	return text
end

return export