swʌr iswʌr sʌppe sʌtt̪e t̪jʌs jʌs ʣä̤̃ː t̪ʌt̪wʌ mukke mukkʰe
-- Transliteration for Nepali
local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local conv = {
-- consonants
= "k",
= "kʰ",
= "ɡ",
= "ɡʱ",
= "ŋ",
= "ʦ",
= "ʦʰ",
= "ʣ",
= "ʣʱ",
= "n",
= "ʈ",
= "ʈʰ",
= "ɖ",
= "ɖʱ",
= "ɳ",
= "t̪",
= "t̪ʰ",
= "d̪",
= "d̪ʱ",
= "n",
= "p",
= "pʰ",
= "b",
= "bʱ",
= "m",
= "j",
= "r",
= "l",
= "w",
= "s",
= "ʂ",
= "s",
= "ɦ",
= "q",
= "x",
= "ɣ",
= "ɭ",
= "ɭ",
= "z",
= "ʒ",
= "ʒ",
= "ɽ",
= "ɽʱ",
= "f",
= "θ",
= "ð",
= "n̪",
= "ɹ",
= "ʔ",
= "v",
= "ʒ",
-- vowel diacritics
= "i",
= "u",
= "e",
= "o",
= "ä",
= "i",
= "u",
= "ri",
= "ri",
= "liɾi",
= "liɾi",
= "ʌi̯",
= "ʌu̯",
= "ɔ",
= "æ",
-- vowel signs
= "ʌ",
= "i",
= "u",
= "e",
= "o",
= "ä",
= "i",
= "u",
= "ri",
= "ri",
= "liɾi",
= "liɾi",
= "ʌi̯",
= "ʌu̯",
= "ɔ",
= "æ",
= "æ",
-- chandrabindu
= "̃",
-- anusvara
= "ṃ",
-- visarga
= "ː",
-- virama
= "",
-- om
= "oːm",
-- zero-width non joiner
= " ͜ ",
-- zero-width joiner
= "ʌ",
-- diphthong marker
= "̯",
-- numerals
= "0",
= "1",
= "2",
= "3",
= "4",
= "5",
= "6",
= "7",
= "8",
= "9",
-- punctuation
= ".", -- danda
= ".", -- double danda
= "", -- compound separator
-- abbreviation sign
= "."
}
local nasal_assim = {
= "ङ",
= "ङ",
= "ङ",
= "ङ",
= "ञ",
= "ञ",
= "ञ",
= "ञ",
= "ण",
= "ण",
= "ण",
= "ण",
= "म",
= "म",
= "म",
= "म",
= "म",
= "न",
= "न",
= "न",
= "न",
= "न",
= "न",
= "ङ",
= "न",
= "म",
= "म",
= "ँ",
= "म",
= "ङ"
}
local perm_cl = {
= true,
= true,
= true,
= true,
= true,
= true,
= true
}
local all_cons, special_cons = "कखगघङचछजझञटठडढणतथदधनपफबभमयरलवसशषह", "कखगघचछजझटठडढणतथदधनपफबभमयरलवशषसह"
local vowel, vowel_sign = "aिुृेोाीूैौॉॅॆॊॄॢॣ", "अइउएओआईऊऋॠॡऌऐऔऑऍ"
local syncope_pattern = "(़?)(?)(़?)(?)(़?)ʌ(़?)(?)(़?)(?)"
local nor_cons, sp_cons = "कखगघङचछजझञटठडढतथदधपफबभशषसयरलवणनमयरलवनम", "कलम"
local vowel, vowel_sign = "aिुृेोाीूैौॉॅॆॊॄॢॣ", "अइउएओआईऊऋॠॡऌऐऔऑऍ"
local koka_sign = "ोीाैे"
local koka_pattern = "()(़?)ʌ(़?)(?)"
local function rev_string(text)
local result, length = {}, mw.ustring.len(text)
for i = length, 1, -1 do
table.insert(result, mw.ustring.sub(text, i, i))
end
return table.concat(result)
end
function export.tr(text, lang, sc)
text =
gsub(
text,
"(़?)(?)",
function(c, d)
return c .. (d == "" and "ʌ" or d)
end
)
for word in mw.ustring.gmatch(text, "+") do
local orig_word = word
word = rev_string(word)
word =
gsub(
word,
"^ʌ(़?)()(.)(.?)",
function(opt, first, second, third)
return (((match(first, "") and match(second, "ं") or
match(first, "") and match(second, "्") and
not perm_cl) or
match(first .. second, "य") or
match(first .. second, "ह")) and
"ʌ" or
"") ..
opt .. first .. second .. third
end
)
while match(word, syncope_pattern) do
word = gsub(word, syncope_pattern, "%1%2%3%4%5%6%7%8%9")
end
while match(word, koka_pattern) do
word = gsub(word, koka_pattern, "%1%2%3%4")
end
word =
gsub(
word,
"(.?)ं(.)",
function(succ, prev)
return succ ..
(succ .. prev == "ʌ" and "्म" or
(succ == "" and match(prev, "") and "̃" or nasal_assim or "̃")) ..
prev
end
)
local escaped_orig_word = gsub(orig_word, "%+", "")
text = gsub(text, orig_word, rev_string(word))
text = gsub(text, "ईन$", "inʌ")
text = gsub(text, "(...)ईन ", "%1inʌ ")
text = gsub(text, "इन$", "inʌ")
text = gsub(text, "(...)इन ", "%1inʌ ")
text = gsub(text, "ैन$", "ʌi̯nʌ")
text = gsub(text, "(...)ैैैैन ", "%1ʌi̯nʌ ")
text = gsub(text, "उन$", "unʌ")
text = gsub(text, "(...)उन ", "%1unʌ ")
text = gsub(text, "ुन$", "unʌ")
text = gsub(text, "(...)ुन ", "%1unʌ ")
text = gsub(text, "िन$", "inʌ")
text = gsub(text, "(...)िन ", "%1inʌ ")
text = gsub(text, "िछ$", "içʰʌ")
text = gsub(text, "(...)िछ ", "%1iʦʰʌ ")
text = gsub(text, "उछ$", "uʦʰʌ")
text = gsub(text, "(...)उछ ", "%1uʦʰʌ ")
text = gsub(text, "इछ$", "iʦʰʌ")
text = gsub(text, "(...)इछ ", "%1iʦʰʌ ")
text = gsub(text, "एछ$", "eʦʰʌ")
text = gsub(text, "ेछ$", "eʦʰʌ")
text = gsub(text, "(...)ेछ ", "%1eʦʰʌ ")
text = gsub(text, "(...)ेन ", "%1enʌ ")
text = gsub(text, "ेन$", "enʌ")
text = gsub(text, "(...)एन ", "%1enʌ ")
text = gsub(text, "एर$", "eɾʌ")
text = gsub(text, "(...)एर ", "%1eɾʌ ")
text = gsub(text, "ेर$", "eɾʌ")
text = gsub(text, "(...)ेर ", "%1eɾʌ ")
text = gsub(text, "एन$", "enʌ")
text = gsub(text, "उँछ$", "ũʦʰʌ")
text = gsub(text, "(...)उँछ ", "%1ũʦʰʌ ")
text = gsub(text, "ज्ञ", "ɡj")
end
text = gsub(text, ".़?", conv)
text = gsub(text, "ʌ()̯̃", "ʌ̃%1̯̃")
text = gsub(text, "()̃()̯", "%1̃%2̯")
text = gsub(text, "", "")
text = gsub(text, "ॱ", "")
text = gsub(text, "dʌʦʰ$", "dʌʦʰʌ")
text = gsub(text, "(...)dʌʦʰ ", "%1dʌʦʰʌ ")
text = gsub(text, "ʌi̯n$", "ʌi̯nʌ")
text = gsub(text, "(...)ʌi̯n ", "%1ʌi̯nʌ ")
text = gsub(text, "nʌʦʰ$", "nʌʦʰʌ")
text = gsub(text, "(...)nʌʦʰ ", "%1nʌʦʰʌ ")
text = gsub(text, "wʌi̯", "bʌi̯")
text = gsub(text, "w$", "b")
text = gsub(text, "(...)w ", "%1b ")
text = gsub(text, "()()w", "%1rb")
text = gsub(text, "w()", "b%1")
text = gsub(text, "()ʌ()()", "bʌ%2%3")
text =
gsub(
text,
"()()()()",
"%1w%3%4"
)
text = gsub(text, "()ä()", "bä%2")
text = gsub(text, "()ä()()", "bä%2%3")
text = gsub(text, "()ä()()", "bä%2%3")
text = gsub(text, "()ʌ()", "bʌ%2")
text = gsub(text, "()()(̪)", "%1%2̪%3") -- dental assimilation
text = gsub(text, "()n()", "%1ɳ%2") -- retroflex aassimilation
text = gsub(text, "()()", "ɭ%2")
text = gsub(text, "()r()", "%1ɾ%2")
text = gsub(text, "()()()()", "%1w%3%4")
text = gsub(text, "()()ʣ(?)()", "%1%2ʣ%3%4")
text = gsub(text, "()()()", "%1kʰ")
--text = gsub(text, '()(͡)(z)(?)', '%1(d)z')
text = gsub(text, "()b(ʱ?)()", "%1b%3")
text = gsub(text, "()pʰ", "%1ɸ")
text = gsub(text, "()d̪ʱ", "%1d̪")
text = gsub(text, "()ɡ(ʱ?)", "%1ɡ")
--text = gsub(text, 't͡st͡s(ʰ?)', 't̚t͡s%1')
--text = gsub(text, 'd͡zd͡z(ʱ?)', 'd̚d͡z%1')
text = gsub(text, "()()ɦ%2", "%1%2̤ː")
text = gsub(text, "()ɦä", "ä̤ː")
text = gsub(text, "()ɦä̃", "ä̤̃ː")
text = gsub(text, "äɦ()", "ä̤ː")
text = gsub(text, "()ɦ()", "%1%2")
text = gsub(text, "()ɦ()", "%1%2")
text = gsub(text, "()ɦ()", "%1%2")
text = gsub(text, "()ɦ()", "%1%2")
text = gsub(text, "()ɦ()", "%1%2̤")
text = gsub(text, "()ɖ(ʱ?)(j?)", "%1ɽ%3")
text = gsub(text, "()ɦr()", "%1ɾ%2")
text = gsub(text, "()ɦ()()", "%1̤ː%2%3")
text = gsub(text, "()ɦ()", "%1%2%2")
text = gsub(text, "(#)(?)jʌ", "%2e")
text = gsub(text, "(#)(?)wʌ", "%2o")
text = gsub(text, "()kʂ()", "%1k̚t͡sʰe") -- kṣ ligature
text = gsub(text, "()kʂ", "t͡sʰ") -- kṣ initial
text = gsub(text, "()()(̪?)(ʰʱ?)wʌ", "%1%2%2%3%4o")
text = gsub(text, "()()(̪?)(?)jʌ", "%1%2%2%3%4e")
text = gsub(text, "ʂ", "s")
text = gsub(text, "ɦri", "ri")
text = gsub(text, "kʌn$", "kʌnʌ")
text = gsub(text, "(...)kʌn ", "%1kʌnʌ ")
text = gsub(text, "nʌʌ$", "nʌ")
text = gsub(text, "ä̤ː̃", "ä̤̃ː")
text = gsub(text, "nɡj", "ŋɡj")
return mw.ustring.toNFC(text)
end
return export