Module:az-translit
Appearance
- The following documentation is generated by Module:documentation/functions/translit. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module will transliterate Azerbaijani language text.
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:az-translit/testcases.
Functions
[edit]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 single_letters = {
['а']='a', ['А']='A', ['б']='b', ['Б']='B', ['в']='v', ['В']='V',
['г']='q', ['Г']='Q', ['д']='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', ['ц']='s',['Ц']='S',
['ч']='ç', ['Ч']='Č', ['ш']='ş', ['Ш']='Ş', ['щ']='şç',['Щ']='Şç',
['ъ']='', ['Ъ']='', ['ы']='ı', ['Ы']='I', ['ь']='ʹ', ['Ь']='ʹ',
['э']='e', ['Э']='E', ['ю']='yu',['Ю']='Yu', ['я']='ya',['Я']='Ya',
['ј']='y', ['Ј']='Y', ['һ']='h', ['Һ']='H', ['ғ']='ğ', ['Ғ']='Ğ',
['ә']='ə', ['Ә']='Ə', ['ө']='ö', ['Ө']='Ö', ['ү']='ü', ['Ү']='Ü',
['ҹ']='ç', ['Ҹ']='Ç', ['ҝ']='g', ['Ҝ']='G',
}
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:languages").getByCode("az"):findBestScript(text):getCode()
end
if sc == "Arab" then
text = nil
elseif sc == "Latn" then
text = nil
elseif sc == "Cyrl" then
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)
text = mw.ustring.gsub(text, '.', single_letters)
end
return text
end
return export