This module will transliterate Greek language text per WT:EL TR. It is also used to transliterate Cappadocian Greek, Pontic Greek, Tsakonian, and Thracian.
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:el-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 m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local sub = m_str_utils.sub
local U = m_str_utils.char
local acute = U(0x301)
local diaeresis = U(0x308)
local erotimatiko = U(0x37E)
local export = {}
local tt = {
= "a", = "á", = "v", = "g", = "d",
= "e", = "é", = "z", = "i", = "í",
= "th", = "i", = "í", = "ï", = "ḯ",
= "k", = "l", = "m", = "n", = "x",
= "o", = "ó", = "p", = "r", = "s",
= "s", = "t", = "y", = "ý", = "ÿ",
= "ÿ́", = "f", = "ch", = "ps", = "o",
= "ó",
= "A", = "Á", = "V", = "G", = "D",
= "E", = "É", = "Z", = "I", = "Í",
= "Th", = "I", = "Í", = "K", = "L",
= "M", = "N", = "X", = "O", = "Ó",
= "P", = "R", = "S", = "T", = "Y",
= "Ý", = "F", = "Ch", = "Ps", = "O",
= "Ó",
-- punctuation
= ";",
}
-- transliterates any words or phrases
function export.tr(text, lang, sc)
text = gsub(gsub(text, "χ̌", "š"), "Χ̌", "Š") -- dialectal
text = gsub(gsub(text, "ά̤", "ä́"), "Ά̤", "Ä́") -- dialectal
text = gsub(gsub(text, "α̤", "ä"), "Α̤", "Ä") -- dialectal
text = gsub(gsub(text, "ό̤", "ö́"), "Ό̤", "Ö́") -- dialectal
text = gsub(gsub(text, "ο̤", "ö"), "Ο̤", "Ö") -- dialectal
text = gsub(text, "()", "%1?")
text = gsub(text, "()()()",
function (vowel, upsilon, position)
-- Find next character that is not whitespace or punctuation.
local following = ""
while true do
local next = sub(text, position, position)
if next == "" then -- reached end of string
break
elseif next:find "" then
position = position + 1
else
following = next
break
end
end
return tt
.. (upsilon == "ύ" and acute or "")
.. ((following == "" or ("θκξπσςτφχψ"):find(following, 1, true)) and "f" or "v")
end)
text = gsub(text, "()()",
function (vowel, ita)
if ita == "ή" then
return tt .. "i" .. diaeresis .. acute
else
return tt .. "i" .. diaeresis
end
end)
text = gsub(text, "",
{ = "oï", = "oḯ",
= "Oï", = "Oḯ"})
text = gsub(text, "",
{ = "ou", = "oú",
= "Ou", = "Oú"})
text = gsub(text, "(.?)()π",
function (before, mi)
if before == "" or before == " " or before == "-" then
if mi == "Μ" then
return before .. "B"
else
return before .. "b"
end
end
end)
text = gsub(text, "γ()", "n%1")
text = gsub(text, ".", tt)
return text
end
return export