模組:Ug-translit
外观
這個模組會將維吾爾語未確定的文字拉丁化。
最好不要直接從模板或其他模組調用此模組。要從模板中使用它,請以{{xlit}}
做為替代;若要在模組中使用,則以Module:languages#Language:transliterate替代。
關於測試用例,請參閱Module:Ug-translit/testcases。
函數
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, returnsnil
.
local export = {}
local data = {}
data["ug-Arab"] = {
-- consonants
["م"] = "m", ["ن"] = "n", ["د"] = "d", ["ت"] = "t",
["ب"] = "b", ["پ"] = "p", ["ف"] = "f", ["ق"] = "q",
["ك"] = "k", ["ڭ"] = "ng", ["گ"] = "g", ["غ"] = "gh",
["ھ"] = "h", ["خ"] = "x", ["چ"] = "ch",
["ج"] = "j", ["ژ"] = "zh", ["ز"] = "z", ["س"] = "s",
["ش"] = "sh", ["ر"] = "r", ["ل"] = "l", ["ئ"] = "'",
["ي"] = "y", ["ۋ"] = "w",
-- vowels
["ا"] = "a", ["ە"] = "e", ["ې"] = "ë", ["ى"] = "i",
["و"] = "o", ["ۆ"] = "ö", ["ۇ"] = "u", ["ۈ"] = "ü",
-- punctuation
["؟"]="?",
["،"]=",",
["؛"]=";",
["ـ"]="-"
}
data["Arab"] = data["ug-Arab"]
data["Cyrl"] = {
["А"] = "A", ["Б"] = "B", ["В"] = "W", ["Г"] = "G", ["Ғ"] = "Gh", ["Д"] = "D", ["Е"] = "Ë", ["Ә"] = "E", ["Ж"] = "Zh", ["Җ"] = "J",
["З"] = "Z", ["И"] = "I", ["Й"] = "Y", ["К"] = "K", ["Қ"] = "Q", ["Л"] = "L", ["М"] = "M", ["Н"] = "N", ["Ң"] = "Ng", ["О"] = "O",
["Ө"] = "Ö", ["П"] = "P", ["Р"] = "R", ["С"] = "S", ["Т"] = "T", ["У"] = "U", ["Ү"] = "Ü", ["Ф"] = "F", ["Х"] = "X", ["Һ"] = "H",
["Ч"] = "Ch", ["Ш"] = "Sh", ["Ю"] = "Yu", ["Я"] = "Ya",
["Э"] = "É",
["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["ғ"] = "gh", ["д"] = "d", ["е"] = "ë", ["ә"] = "e", ["ж"] = "zh", ["җ"] = "j",
["з"] = "z", ["и"] = "i", ["й"] = "y", ["к"] = "k", ["қ"] = "q", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["ң"] = "ng", ["о"] = "o",
["ө"] = "ö", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ү"] = "ü", ["ф"] = "f", ["х"] = "x", ["һ"] = "h",
["ч"] = "ch", ["ш"] = "sh", ["ю"] = "yu", ["я"] = "ya",
["э"] = "é",
}
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode()
end
if sc ~= "ug-Arab" and sc ~= "Arab" and sc ~= "Cyrl" then
return nil
end
-- remove initial hamza
text = mw.ustring.gsub(text, "^\216\166(.)", "%1")
text = mw.ustring.gsub(text, "%s\216\166(.)", " %1")
-- add apostrophe in some cases
text = mw.ustring.gsub(text, "([اەوۇۆۈېىаәоуөүеиАӘОУӨҮЕИ])([ڭң])([اەوۇۆۈېىаәоуөүеи])", "%1'%2%3") -- V'ngV
text = mw.ustring.gsub(text, "([نн])([گغгғ])", "%1'%2") -- n'g & n'gh
text = mw.ustring.gsub(text, "([ڭң])([ھһ])", "%1'%2") -- ng'h
text = mw.ustring.gsub(text, "([زз])([ھһ])", "%1'%2") -- z'h
text = mw.ustring.gsub(text, '.', data[sc])
return text
end
return export