Module:kum-translit
Jump to navigation
Jump to search
- The following documentation is located at Module:kum-translit/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module will transliterate Kumyk language text per WT:KUM 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:kum-translit/testcases.
Functions
tr(text, lang, sc)
- Transliterates a given piece of
text
written in the script specified by the codesc
, and language specified by the codelang
. - When the transliteration fails, returns
nil
.
local export = {}
local digraphs = {
['гь']= 'h', ['Гь']='H', ['гъ']='ğ', ['Гъ']='Ğ', ['уь']='ü', ['Уь']='Ü',
['къ']='q', ['Къ']='Q', ['нг']='ñ', ['Нг']='Ñ', ['оь']='ö', ['Оь']='Ö'
}
local single_letters = {
['а']='a', ['А']='A', ['б']='b', ['Б']='B', ['в']='w', ['В']='w',
['г']='g', ['Г']='G', ['д']='d', ['Д']='D', ['е']='e', ['Е']='E',
['ё']='yo',['Ё']='Yo', ['ж']='j', ['Ж']='J', ['з']='z', ['З']='Z',
['и']='i', ['И']='İ', ['й']='y', ['Й']='Y', ['к']='k', ['К']='K',
['л']='l', ['Л']='L', ['м']='m', ['М']='M', ['н']='n', ['Н']='N',
['о']='o', ['О']='O', ['п']='p', ['П']='P', ['р']='r', ['Р']='R',
['с']='s', ['С']='S', ['т']='t', ['Т']='T', ['у']='u', ['У']='U',
['ф']='f', ['Ф']='F', ['х']='x', ['Х']='X', ['ц']='ts',['Ц']='Ts',
['ч']='ç', ['Ч']='Č', ['ш']='ş', ['Ш']='Ş', ['щ']='şç',['Щ']='Şç',
['ъ']='', ['Ъ']='', ['ы']='ı', ['Ы']='I', ['ь']='ʹ', ['Ь']='ʹ',
['э']='e', ['Э']='E', ['ю']='yu',['Ю']='Yu', ['я']='ya',['Я']='Ya',
}
function export.tr(text, lang, sc)
for digraph, replacement in pairs(digraphs) do
text = mw.ustring.gsub(text, digraph, replacement)
end
text = mw.ustring.gsub(text,
"()([ЕеЮюЁё])",
function (pos, iotated)
-- modifier letter apostrophe or right single quotation mark
local preceding = mw.ustring.sub(text, math.max(1, pos - 2), math.max(0, pos - 1))
local capital = iotated == "Е" or iotated == "Ю"
local lower = mw.ustring.lower(iotated)
local translit
if preceding == "" or mw.ustring.match(preceding, "[АОӨӘУЫЕЯЁЮИЕаоөәуыэяёюиеъь%A][́̀]?$") then
if capital then
if lower == "ю" then return "Yu"
elseif lower == "ё" then return "Yo"
else return "Ye" end
else
if lower == "ю" then return "yu"
elseif lower == "ё" then return "yo"
else return "ye" end
end
else
if capital then
if lower == "ю" then return "Ü"
elseif lower == "ё" then return "Ö"
else return "E" end
else
if lower == "ю" then return "ü"
elseif lower == "ё" then return "ö"
else return "e" end
end
end
return translit
end)
return (mw.ustring.gsub(text, '.', single_letters))
end
return export