Module:pi-Latn-translit
- De neikommende dokumintaasje stiet op Module:pi-Latn-translit/dokumintaasje. [bewurkje]
Oernommen fan en:Module:pi-Latn-translit.
local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local sub = mw.ustring.sub
local c = {
["Deva"] = {
["k"] = "क", ["kh"] = "ख", ["g"] = "ग", ["gh"] = "घ", ["ṅ"] = "ङ",
["c"] = "च", ["ch"] = "छ", ["j"] = "ज", ["jh"] = "झ", ["ñ"] = "ञ",
["ṭ"] = "ट", ["ṭh"] = "ठ", ["ḍ"] = "ड", ["ḍh"] = "ढ", ["ṇ"] = "ण",
["t"] = "त", ["th"] = "थ", ["d"] = "द", ["dh"] = "ध", ["n"] = "न",
["p"] = "प", ["ph"] = "फ", ["b"] = "ब", ["bh"] = "भ", ["m"] = "म",
["y"] = "य", ["r"] = "र", ["l"] = "ल", ["v"] = "व", ["s"] = "स",
["h"] = "ह", ["ḷ"] = "ळ",
["a"] = "अ", ["ā"] = "आ",
["i"] = "इ", ["ī"] = "ई",
["u"] = "उ", ["ū"] = "ऊ",
["e"] = "ए",
["o"] = "ओ",
["ṃ"] = "ं",
[""] = "",
},
["Beng"] = {
["k"] = "ক", ["kh"] = "খ", ["g"] = "গ", ["gh"] = "ঘ", ["ṅ"] = "ঙ",
["c"] = "চ", ["ch"] = "ছ", ["j"] = "জ", ["jh"] = "ঝ", ["ñ"] = "ঞ",
["ṭ"] = "ট", ["ṭh"] = "ঠ", ["ḍ"] = "ড", ["ḍh"] = "ঢ", ["ṇ"] = "ণ",
["t"] = "ত", ["th"] = "থ", ["d"] = "দ", ["dh"] = "ধ", ["n"] = "ন",
["p"] = "প", ["ph"] = "ফ", ["b"] = "ব", ["bh"] = "ভ", ["m"] = "ম",
["y"] = "য", ["r"] = "র", ["l"] = "ল", ["v"] = "ৱ", ["s"] = "স",
["h"] = "হ", ["ḷ"] = "ল়",
["a"] = "অ", ["ā"] = "আ",
["i"] = "ই", ["ī"] = "ঈ",
["u"] = "উ", ["ū"] = "ঊ",
["e"] = "এ",
["o"] = "ও",
["ṃ"] = "ং",
[""] = "",
},
["Brah"] = {
["k"] = "𑀓", ["kh"] = "𑀔", ["g"] = "𑀕", ["gh"] = "𑀖", ["ṅ"] = "𑀗",
["c"] = "𑀘", ["ch"] = "𑀙", ["j"] = "𑀚", ["jh"] = "𑀛", ["ñ"] = "𑀜",
["ṭ"] = "𑀝", ["ṭh"] = "𑀞", ["ḍ"] = "𑀟", ["ḍh"] = "𑀠", ["ṇ"] = "𑀡",
["t"] = "𑀢", ["th"] = "𑀣", ["d"] = "𑀤", ["dh"] = "𑀥", ["n"] = "𑀦",
["p"] = "𑀧", ["ph"] = "𑀨", ["b"] = "𑀩", ["bh"] = "𑀪", ["m"] = "𑀫",
["y"] = "𑀬", ["r"] = "𑀭", ["l"] = "𑀮", ["v"] = "𑀯", ["s"] = "𑀲",
["h"] = "𑀳", ["ḷ"] = "𑀴",
["a"] = "𑀅", ["ā"] = "𑀆",
["i"] = "𑀇", ["ī"] = "𑀈",
["u"] = "𑀉", ["ū"] = "𑀊",
["e"] = "𑀏",
["o"] = "𑀑",
["ṃ"] = "𑀁",
[""] = "",
},
["Khmr"] = {
["k"] = "ក", ["kh"] = "ខ", ["g"] = "គ", ["gh"] = "ឃ", ["ṅ"] = "ង",
["c"] = "ច", ["ch"] = "ឆ", ["j"] = "ជ", ["jh"] = "ឈ", ["ñ"] = "ញ",
["ṭ"] = "ដ", ["ṭh"] = "ឋ", ["ḍ"] = "ឌ", ["ḍh"] = "ឍ", ["ṇ"] = "ណ",
["t"] = "ត", ["th"] = "ថ", ["d"] = "ទ", ["dh"] = "ធ", ["n"] = "ន",
["p"] = "ប", ["ph"] = "ផ", ["b"] = "ព", ["bh"] = "ភ", ["m"] = "ម",
["y"] = "យ", ["r"] = "រ", ["l"] = "ល", ["v"] = "វ", ["s"] = "ស",
["h"] = "ហ", ["ḷ"] = "ឡ",
["a"] = "អ", ["ā"] = "អា",
["i"] = "ឥ", ["ī"] = "ឦ",
["u"] = "ឧ", ["ū"] = "ឨ",
["e"] = "ឯ",
["o"] = "ឲ",
["ṃ"] = "ំ",
[""] = "",
},
["Mymr"] = {
["k"] = "က", ["kh"] = "ခ", ["g"] = "ဂ", ["gh"] = "ဃ", ["ṅ"] = "င",
["c"] = "စ", ["ch"] = "ဆ", ["j"] = "ဇ", ["jh"] = "ဈ", ["ñ"] = "ဉ",
["ṭ"] = "ဋ", ["ṭh"] = "ဌ", ["ḍ"] = "ဍ", ["ḍh"] = "ဎ", ["ṇ"] = "ဏ",
["t"] = "တ", ["th"] = "ထ", ["d"] = "ဒ", ["dh"] = "ဓ", ["n"] = "န",
["p"] = "ပ", ["ph"] = "ဖ", ["b"] = "ဗ", ["bh"] = "ဘ", ["m"] = "မ",
["y"] = "ယ", ["r"] = "ရ", ["l"] = "လ", ["v"] = "ဝ", ["s"] = "သ",
["h"] = "ဟ", ["ḷ"] = "ဠ",
["a"] = "အ", ["ā"] = "အာ",
["i"] = "ဣ", ["ī"] = "ဤ",
["u"] = "ဥ", ["ū"] = "ဦ",
["e"] = "ဧ",
["o"] = "ဩ",
["ṃ"] = "ံ",
[""] = "",
},
["Sinh"] = {
["k"] = "ක", ["kh"] = "ඛ", ["g"] = "ග", ["gh"] = "ඝ", ["ṅ"] = "ඞ",
["c"] = "ච", ["ch"] = "ඡ", ["j"] = "ජ", ["jh"] = "ඣ", ["ñ"] = "ඤ",
["ṭ"] = "ට", ["ṭh"] = "ඨ", ["ḍ"] = "ඩ", ["ḍh"] = "ඪ", ["ṇ"] = "ණ",
["t"] = "ත", ["th"] = "ථ", ["d"] = "ද", ["dh"] = "ධ", ["n"] = "න",
["p"] = "ප", ["ph"] = "ඵ", ["b"] = "බ", ["bh"] = "භ", ["m"] = "ම",
["y"] = "ය", ["r"] = "ර", ["l"] = "ල", ["v"] = "ව", ["s"] = "ස",
["h"] = "හ", ["ḷ"] = "ළ",
["a"] = "අ", ["ā"] = "ආ",
["i"] = "ඉ", ["ī"] = "ඊ",
["u"] = "උ", ["ū"] = "ඌ",
["e"] = "එ",
["o"] = "ඔ",
["ṃ"] = "ං",
[""] = "",
},
["Thai"] = {
["k"] = "ก", ["kh"] = "ข", ["g"] = "ค", ["gh"] = "ฆ", ["ṅ"] = "ง",
["c"] = "จ", ["ch"] = "ฉ", ["j"] = "ช", ["jh"] = "ฌ", ["ñ"] = "ญ",
["ṭ"] = "ฏ", ["ṭh"] = "ฐ", ["ḍ"] = "ฑ", ["ḍh"] = "ฒ", ["ṇ"] = "ณ",
["t"] = "ต", ["th"] = "ถ", ["d"] = "ท", ["dh"] = "ธ", ["n"] = "น",
["p"] = "ป", ["ph"] = "ผ", ["b"] = "พ", ["bh"] = "ภ", ["m"] = "ม",
["y"] = "ย", ["r"] = "ร", ["l"] = "ล", ["v"] = "ว", ["s"] = "ส",
["h"] = "ห", ["ḷ"] = "ฬ",
["a"] = "อ", ["ā"] = "อา",
["i"] = "อิ", ["ī"] = "อี",
["u"] = "อุ", ["ū"] = "อู",
["e"] = "อเ", --to be swapped later
["o"] = "อโ", --to be swapped later
["ṃ"] = "ํ",
[""] = "",
},
["Lana"] = {
["k"] = "ᨠ", ["kh"] = "ᨡ", ["g"] = "ᨣ", ["gh"] = "ᨥ", ["ṅ"] = "ᨦ",
["c"] = "ᨧ", ["ch"] = "ᨨ", ["j"] = "ᨩ", ["jh"] = "ᨫ", ["ñ"] = "ᨬ",
["ṭ"] = "ᨭ", ["ṭh"] = "ᨮ", ["ḍ"] = "ᨯ", ["ḍh"] = "ᨰ", ["ṇ"] = "ᨱ",
["t"] = "ᨲ", ["th"] = "ᨳ", ["d"] = "ᨴ", ["dh"] = "ᨵ", ["n"] = "ᨶ",
["p"] = "ᨸ", ["ph"] = "ᨹ", ["b"] = "ᨻ", ["bh"] = "ᨽ", ["m"] = "ᨾ",
["y"] = "ᨿ", ["r"] = "ᩁ", ["l"] = "ᩃ", ["v"] = "ᩅ", ["s"] = "ᩈ",
["h"] = "ᩉ", ["ḷ"] = "ᩊ",
["a"] = "ᩋ", ["ā"] = "ᩋᩣ",
["i"] = "ᩍ", ["ī"] = "ᩎ",
["u"] = "ᩏ", ["ū"] = "ᩐ",
["e"] = "ᩑ",
["o"] = "ᩒ",
["ṃ"] = "ᩴ",
[""] = "",
},
}
local v = {
["Deva"] = {
["a"] = "", ["ā"] = "ा",
["i"] = "ि", ["ī"] = "ी",
["u"] = "ु", ["ū"] = "ू",
["e"] = "े",
["o"] = "ो",
[""] = "",
},
["Beng"] = {
["a"] = "", ["ā"] = "া",
["i"] = "ি", ["ī"] = "ী",
["u"] = "ু", ["ū"] = "ূ",
["e"] = "ে",
["o"] = "ো",
[""] = "",
},
["Brah"] = {
["a"] = "", ["ā"] = "𑀸",
["i"] = "𑀺", ["ī"] = "𑀻",
["u"] = "𑀼", ["ū"] = "𑀽",
["e"] = "𑁂",
["o"] = "𑁄",
[""] = "",
},
["Khmr"] = {
["a"] = "", ["ā"] = "ា",
["i"] = "ិ", ["ī"] = "ី",
["u"] = "ុ", ["ū"] = "ូ",
["e"] = "េ",
["o"] = "ោ",
[""] = "",
},
["Mymr"] = {
["a"] = "", ["ā"] = "ာ",
["i"] = "ိ", ["ī"] = "ီ",
["u"] = "ု", ["ū"] = "ူ",
["e"] = "ေ",
["o"] = "ော",
[""] = "",
},
["Sinh"] = {
["a"] = "", ["ā"] = "ා",
["i"] = "ි", ["ī"] = "ී",
["u"] = "ු", ["ū"] = "ූ",
["e"] = "ෙ",
["o"] = "ො",
[""] = "",
},
["Thai"] = {
["a"] = "", ["ā"] = "า",
["i"] = "ิ", ["ī"] = "ี",
["u"] = "ุ", ["ū"] = "ู",
["e"] = "เ",
["o"] = "โ",
[""] = "",
},
["Lana"] = {
["a"] = "", ["ā"] = "ᩣ",
["i"] = "ᩥ", ["ī"] = "ᩦ",
["u"] = "ᩩ", ["ū"] = "ᩪ",
["e"] = "ᩮ",
["o"] = "ᩮᩣ",
[""] = "",
},
}
local s = {
["Deva"] = {
["0"] = "०", ["1"] = "१", ["2"] = "२", ["3"] = "३", ["4"] = "४",
["5"] = "५", ["6"] = "६", ["7"] = "७", ["8"] = "८", ["9"] = "९",
["."] = "॥", [","] = "।", ["-"] = "-",
},
["Beng"] = {
["0"] = "০", ["1"] = "১", ["2"] = "২", ["3"] = "৩", ["4"] = "৪",
["5"] = "৫", ["6"] = "৬", ["7"] = "৭", ["8"] = "৮", ["9"] = "৯",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Brah"] = {
["0"] = "𑁦", ["1"] = "𑁧", ["2"] = "𑁨", ["3"] = "𑁩", ["4"] = "𑁪",
["5"] = "𑁫", ["6"] = "𑁬", ["7"] = "𑁭", ["8"] = "𑁮", ["9"] = "𑁯",
["."] = "𑁈", [","] = "𑁇", ["-"] = "-",
},
["Khmr"] = {
["0"] = "០", ["1"] = "១", ["2"] = "២", ["3"] = "៣", ["4"] = "៤",
["5"] = "៥", ["6"] = "៦", ["7"] = "៧", ["8"] = "៨", ["9"] = "៩",
["."] = "៕", [","] = "។", ["-"] = "-",
},
["Mymr"] = {
["0"] = "၀", ["1"] = "၁", ["2"] = "၂", ["3"] = "၃", ["4"] = "၄",
["5"] = "၅", ["6"] = "၆", ["7"] = "၇", ["8"] = "၈", ["9"] = "၉",
["."] = "။", [","] = "၊", ["-"] = "-",
},
["Sinh"] = {
["0"] = "0", ["1"] = "1", ["2"] = "2", ["3"] = "3", ["4"] = "4",
["5"] = "5", ["6"] = "6", ["7"] = "7", ["8"] = "8", ["9"] = "9",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Thai"] = {
["0"] = "๐", ["1"] = "๑", ["2"] = "๒", ["3"] = "๓", ["4"] = "๔",
["5"] = "๕", ["6"] = "๖", ["7"] = "๗", ["8"] = "๘", ["9"] = "๙",
["."] = "๚", [","] = "ฯ", ["-"] = "-",
},
["Lana"] = {
["0"] = "᪐", ["1"] = "᪑", ["2"] = "᪒", ["3"] = "᪓", ["4"] = "᪔",
["5"] = "᪕", ["6"] = "᪖", ["7"] = "᪗", ["8"] = "᪘", ["9"] = "᪙",
["."] = "᪩", [","] = "᪨", ["-"] = "-",
},
}
local join = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "្",
["Mymr"] = "္",
["Sinh"] = "්",
["Thai"] = "ฺ",
["Lana"] = "᩠",
}
local kill = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "៑",
["Mymr"] = "်",
["Sinh"] = "්",
["Thai"] = "ฺ",
["Lana"] = "᩺",
}
local function return_error(text)
return error(("Unrecognised part: \"%s\""):format(text))
end
function export.tr(text, script)
if type(text) == "table" then
text, script = text.args[1], text.args[2]
end
if not s[script] then
return nil
end
text = mw.ustring.lower(text)
text = gsub(text, "[0-9%.,%-]", s[script])
for word in mw.ustring.gmatch(text, "[aāiīuūeoṃkhgṅcjñṭḍṇtdnpbmyrlḷvs]+") do
local word_conv, orig_word = {}, word
word = gsub(word, "([aāiīuūeo]ṃ?)", "%1 ")
word = gsub(word, " $", "")
for syllable in mw.text.gsplit(word, " ") do
if not match(syllable, "[aāiīuūeoṃ]$") then
syllable = syllable .. "a" .. kill[script]
end
syllable = gsub(syllable, "^([khgṅcjñṭḍṇtdnpbmyrlḷvs]*)([aāiīuūeo])(ṃ?)([्্៑်්ฺ᩺]?)$", function(onset, vowel, coda, optJoin)
if onset == "" then
onset = vowel
vowel = ""
end
if not c[script][onset] then
if match(onset, "^[ṅñṇnm]") then
onset = c[script][sub(onset, 1, 1)] .. join[script] ..
(c[script][sub(onset, 2, -1)] or return_error(onset))
elseif match(onset, "h$") and sub(onset, 1, 1) == sub(onset, 2, 2) then
onset = (c[script][sub(onset, 1, 1)] or return_error(onset)) .. join[script] ..
(c[script][sub(onset, 2, -1)] or return_error(onset))
else
temp = {}
for character in mw.text.gsplit(onset, "") do
table.insert(temp, (c[script][character] or return_error(onset)))
end
onset = table.concat(temp, join[script])
end
else
onset = c[script][onset]
end
return onset .. (v[script][vowel] or return_error(vowel)) .. c[script][coda] .. optJoin
end)
table.insert(word_conv, syllable)
end
word = table.concat(word_conv, "")
if script == "Thai" then
word = gsub(word, "(.)([เโ])", "%2%1")
--word = gsub(word, "[ญฐ]", "%1" .. u(0xFE00)) *currently no font supports
end
if script == "Mymr" then
word = gsub(word, "^([ဝခဂငဒပ])ာ", "%1ါ")
word = gsub(word, "([^္])([ဝခဂငဒပ])ာ", "%1%2ါ")
word = gsub(word, "([ဝခဂငဒပ])(္.)ာ", "%1%2ါ")
word = gsub(word, "္[ယရဝဟ]", { ["္ယ"] = "ျ", ["္ဝ"] = "ွ", ["္ဟ"] = "ှ" })
word = gsub(word, "ဉ္ဉ", "ည")
word = gsub(word, "သ္သ", "ဿ")
word = gsub(word, "င္", "င်္")
--word = gsub(word, "[ကဂငတထပမယလဝေ]", "%1" .. u(0xFE00)) *currently no font supports
end
if script == "Lana" then
word = gsub(word, "^([ᩅᨣᨵᨷᨻ])ᩣ", "%1ᩤ")
word = gsub(word, "([^᩠])([ᩅᨣᨵᨷᨻ])ᩣ", "%1%2ᩤ")
word = gsub(word, "([ᩅᨣᨵᨷᨻ])(္.)ᩣ", "%1%2ᩤ")
word = gsub(word, "ᩈ᩠ᩈ", "ᩔ")
word = gsub(word, "ᨦ᩠", "ᩘ")
end
text = gsub(text, orig_word, word, 1)
end
return text
end
return export