Modul:Cyrs-Glag-translit

Vun Wiktionary

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