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.
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 consonants = {
='k', ='g', ='ng',
='t', ='d', ='n',
='p', ='b', ='m',
='y', ='l', ='w',
='s', ='h', ='r',
='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)
return '-' .. diacritics
end)
text = mw.ustring.gsub(text, "◌", "-a")
text = mw.ustring.gsub(text, " ()", "%1")
return text
end
return export