local export = {}
local trtab = {
= "A" , = "a" , -- A
= "Ä" , = "ä" , -- SCHWA
= "B" , = "b" , -- BE
= "V" , = "v" , -- VE
= "G" , = "g" , -- GHE
= "H" , = "h" , -- SHHA
= "D" , = "d" , -- DE
-- IE is handled specially
= "Jo", = "jo", -- IO
= "Ž" , = "ž" , -- ZHE
= "J" , = "j" , -- ZHE WITH DESCENDER
= "Z" , = "z" , -- ZE
= "I" , = "i" , -- I
= "Y" , = "y" , -- SHORT I
= "K" , = "k" , -- KA
= "L" , = "l" , -- EL
= "M" , = "m" , -- EM
= "N" , = "n" , -- EN
= "Ñ" , = "ñ" , -- EN WITH DESCENDER
= "O" , = "o" , -- O
= "Ö" , = "ö" , -- BARRED O
= "P" , = "p" , -- PE
= "R" , = "r" , -- ER
= "S" , = "s" , -- ES
= "T" , = "t" , -- TE
= "U" , = "u" , -- U
= "Ü" , = "ü" , -- STRAIGHT U
= "F" , = "f" , -- EF
= "X" , = "x" , -- HA
= "Ts", = "ts", -- TSE
= "Ç" , = "ç" , -- CHE
= "Ş" , = "ş" , -- SHA
= "Şç", = "şç", -- SHCHA
= "\ʺ", = "\"", -- HARD SIGN
= "Y" , = "y" , -- YERU
= "ʹ" , = "'" , -- SOFT SIGN
= "E" , = "e" , -- E
= "Yu", = "yu", -- YU
= "Ya", = "ya" -- YA
}
local gives_e = {
= true, = true, -- SCHWA
= true, = true, -- BE
= true, = true, -- VE
= true, = true, -- GHE
= true, = true, -- SHHA
= true, = true, -- DE
= true, = true, -- ZHE
= true, = true, -- ZHE WITH DESCENDER
= true, = true, -- ZE
= true, = true, -- SHORT I
= true, = true, -- KA
= true, = true, -- EL
= true, = true, -- EM
= true, = true, -- EN
= true, = true, -- EN WITH DESCENDER
= true, = true, -- PE
= true, = true, -- ER
= true, = true, -- ES
= true, = true, -- TE
= true, = true, -- EF
= true, = true, -- HA
= true, = true, -- TSE
= true, = true, -- CHE
= true, = true, -- SHA
= true, = true -- SHCHA
}
function export.tr(text, lang, sc)
local result = {}
local last = false
for num in mw.ustring.gcodepoint(text) do
if (num == 0x0415) or (num == 0x0435) then -- CYRILLIC CAPITAL/SMALL LETTER IE
if gives_e then
table.insert(result, num == 0x0415 and "E" or "e")
else
table.insert(result, num == 0x0415 and "Ye" or "ye")
end
else
table.insert(result, trtab or mw.ustring.char(num))
end
if (num ~= 0x0300) and (num ~= 0x0301) then -- COMBINING GRAVE/ACUTE ACCENT
last = num
end
end
return table.concat(result)
end
return export