Modul:Cyrs-Glag-translit
Utsehn
This module is used to transliterate text in the Old Cyrillic and Glagolitic alphabets. It is used for Old Church Slavonic and Old East Slavic terms.
Call it so:
{{#invoke:Cyrs-Glag-translit|tr|(term)|(language code)|(Cyrs or Glag)}}
The language code is necessary because some letters are transliterated slightly differently depending on the language. The script code selects between Cyrillic and Glagolitic transliteration.
local export = {}
local letters = {}
local digraphs = {}
letters["Cyrs"] = {
["А"]='A', ["а"]='a',
["Б"]='B', ["б"]='b',
["В"]='V', ["в"]='v',
["Г"]='G', ["г"]='g',
["Д"]='D', ["д"]='d',
["Е"]='E', ["е"]='e', ["Є"]='E', ["є"]='e',
["Ж"]='Ž', ["ж"]='ž',
["Ѕ"]='Dz', ["ѕ"]='dz', ["Ꙃ"]='Dz', ["ꙃ"]='dz',
["З"]='Z', ["з"]='z', ["Ꙁ"]='Z', ["ꙁ"]='z',
["И"]='I', ["и"]='i', ["І"]='I', ["і"]='i', ["Ї"]='I', ["ї"]='i',
["К"]='K', ["к"]='k',
["Л"]='L', ["л"]='l',
["М"]='M', ["м"]='m',
["Н"]='N', ["н"]='n',
["О"]='O', ["о"]='o', ["Ѡ"]='O', ["ѡ"]='o',
["П"]='P', ["п"]='p',
["Р"]='R', ["р"]='r',
["С"]='S', ["с"]='s',
["Т"]='T', ["т"]='t',
["Ѹ"]='U', ["ѹ"]='u', ["Ꙋ"]='U', ["ꙋ"]='u', ["У"]='U', ["у"]='u',
["Ф"]='F', ["ф"]='f',
["Х"]='X', ["х"]='x',
["Ц"]='C', ["ц"]='c',
["Ч"]='Č', ["ч"]='č',
["Ш"]='Š', ["ш"]='š',
-- For Щ see below
["Ъ"]='Ŭ', ["ъ"]='ŭ',
["Ꙑ"]='Y', ["ꙑ"]='y', ["Ы"]='Y', ["ы"]='y',
["Ь"]='Ĭ', ["ь"]='ĭ',
["Ѣ"]='Ě', ["ѣ"]='ě',
["Ю"]='Ju', ["ю"]='ju',
["Ꙗ"]='Ja', ["ꙗ"]='ja',
["Ѥ"]='Je', ["ѥ"]='je',
["Ѧ"]='Ę', ["ѧ"]='ę',
["Ѩ"]='Ję', ["ѩ"]='ję',
["Ѫ"]='Ǫ', ["ѫ"]='ǫ',
["Ѭ"]='Jǫ', ["ѭ"]='jǫ',
["Ѯ"]='Ks', ["ѯ"]='ks',
["Ѱ"]='Ps', ["ѱ"]='ps',
["Ѳ"]='Θ', ["ѳ"]='θ',
["Ѵ"]='Ü', ["ѵ"]='ü',
}
digraphs["Cyrs"] = {
["О[Уу]"]="U", ["оу"]="u",
}
letters["Glag"] = {
["Ⰰ"]='A', ["ⰰ"]='a',
["Ⰱ"]='B', ["ⰱ"]='b',
["Ⰲ"]='V', ["ⰲ"]='v',
["Ⰳ"]='G', ["ⰳ"]='g',
["Ⰴ"]='D', ["ⰴ"]='d',
["Ⰵ"]='E', ["ⰵ"]='e',
["Ⰶ"]='Ž', ["ⰶ"]='ž',
["Ⰷ"]='Dz', ["ⰷ"]='dz',
["Ⰸ"]='Z', ["ⰸ"]='z',
["Ⰹ"]='I', ["ⰹ"]='i', ["Ⰺ"]='I', ["ⰺ"]='i', ["Ⰻ"]='I', ["ⰻ"]='i',
["Ⰽ"]='K', ["ⰽ"]='k',
["Ⰾ"]='L', ["ⰾ"]='l',
["Ⰿ"]='M', ["ⰿ"]='m',
["Ⱀ"]='N', ["ⱀ"]='n',
["Ⱁ"]='O', ["ⱁ"]='o', ["Ⱉ"]='O', ["ⱉ"]='o',
["Ⱂ"]='P', ["ⱂ"]='p',
["Ⱃ"]='R', ["ⱃ"]='r',
["Ⱄ"]='S', ["ⱄ"]='s',
["Ⱅ"]='T', ["ⱅ"]='t',
["Ⱆ"]='U', ["ⱆ"]='u',
["Ⱇ"]='F', ["ⱇ"]='f',
["Ⱈ"]='X', ["ⱈ"]='x',
["Ⱌ"]='C', ["ⱌ"]='c',
["Ⱍ"]='Č', ["ⱍ"]='č',
["Ⱎ"]='Š', ["ⱎ"]='š',
-- For Ⱋ see below
["Ⱏ"]='Ŭ', ["ⱏ"]='ŭ',
["Ⱐ"]='Ĭ', ["ⱐ"]='ĭ',
["Ⱑ"]='Ě', ["ⱑ"]='ě',
["Ⱓ"]='Ju', ["ⱓ"]='ju',
["Ⱔ"]='Ę', ["ⱔ"]='ę',
["Ⱗ"]='Ję', ["ⱗ"]='ję',
["Ⱘ"]='Ǫ', ["ⱘ"]='ǫ',
["Ⱙ"]='Jǫ', ["ⱙ"]='jǫ',
["Ⱚ"]='Θ', ["ⱚ"]='θ',
["Ⱛ"]='Ü', ["ⱛ"]='ü',
}
digraphs["Glag"] = {
["Ⱏ[ⰉⰊⰹⰺ]"]="Y", ["ⱏ[ⰹⰺ]"]="y",
}
function export.tr(text, lang, sc)
if type(text) == "table" then
local frame = text
text = frame.args[1]
lang = frame.args[2]
sc = frame.args[3]
end
-- Щ was pronounced differently in Old East Slavic
if lang == "orv" then
letters["Cyrs"]["Щ"]='Šč'
letters["Cyrs"]["щ"]='šč'
letters["Glag"]["Ⱋ"]='Šč'
letters["Glag"]["ⱋ"]='šč'
else
letters["Cyrs"]["Щ"]='Št'
letters["Cyrs"]["щ"]='št'
letters["Glag"]["Ⱋ"]='Št'
letters["Glag"]["ⱋ"]='št'
end
-- Transliterate the kamora as '
text = mw.ustring.gsub(text, "҄", "'")
if sc == "Cyrs" or sc == "Glag" then
for key, repl in pairs(digraphs[sc]) do
text = mw.ustring.gsub(text, key, repl)
end
for key, repl in pairs(letters[sc]) do
text = mw.ustring.gsub(text, key, repl)
end
else
error("This module can only transliterate Old Cyrillic and Glagolitic.")
end
return text
end
return export