মডিউল:syl-translit
অবয়ব
এই মডিউলের জন্য মডিউল:syl-translit/নথি-এ নথিপত্র তৈরি করা হয়ে থাকতে পারে
-- সিলেটি লিপি থেকে বাংলা লিপিতে লিপ্যন্তর
local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local conv = {
-- ব্যঞ্জনবর্ণ
['ꠇ'] = 'খ়', ['ꠈ'] = 'খ়', ['ꠉ'] = 'গ', ['ꠊ'] = 'গ',
['ꠌ'] = 'স', ['ꠍ'] = 'স', ['ꠎ'] = 'জ়', ['ꠏ'] = 'জ়',
['ꠐ'] = 'ট', ['ꠑ'] = 'ট', ['ꠒ'] = 'ড', ['ꠓ'] = 'ড',
['ꠔ'] = 'ত', ['ꠕ'] = 'ত', ['ꠖ'] = 'দ', ['ꠗ'] = 'দ', ['ꠘ'] = 'ন',
['ꠙ'] = 'ফ়', ['ꠚ'] = 'ফ়', ['ꠛ'] = 'ব', ['ꠜ'] = 'ব', ['ꠝ'] = 'ম',
['ꠞ'] = 'র', ['ꠟ'] = 'ল', ['ꠠ'] = 'ড়',
['ꠡ'] = 'শ', ['ꠢ'] = 'হ', ['ꠋ'] = 'ং',
-- স্বরবর্ণ ডায়াক্রিটিক্স
['ꠣ'] = 'া', ['ꠤ'] = 'ি', ['ꠥ'] = 'ু', ['ꠦ'] = 'ে', ['ꠧ'] = 'ো',
-- স্বরবর্ণ চিহ্ন
['ꠀ'] = 'আ', ['ꠁ'] = 'ই', ['ꠃ'] = 'উ', ['ꠄ'] = 'এ', ['ꠅ'] = 'ও',
-- virama
['꠆'] = '্',
-- অনুস্বর
[' ꠋ'] = 'ং',
-- dvisvara
['ꠂ'] = 'ৈ',
-- সংখ্যা
['[[File:সিলেটি সংখ্যা ০.svg|12px]]'] = '০',
['[[File:সিলেটি সংখ্যা ১.svg|12px]]'] = '১',
['[[File:সিলেটি সংখ্যা ২.svg|12px]]'] = '২',
['[[File:সিলেটি সংখ্যা ৩.svg|12px]]'] = '৩',
['[[File:সিলেটি সংখ্যা ৪.svg|12px]]'] = '৪',
['[[File:সিলেটি সংখ্যা ৫.svg|12px]]'] = '৫',
['[[File:সিলেটি সংখ্যা ৬.svg|12px]]'] = '৬',
['[[File:সিলেটি সংখ্যা ৭.svg|12px]]'] = '৭',
['[[File:সিলেটি সংখ্যা ৮.svg|12px]]'] = '৮',
['[[File:সিলেটি সংখ্যা ৯.svg|12px]]'] = '৯' ,
-- বিরাম চিহ্ন
[' ꠨'] = ',', --প্রথম কমা
[' ꠩'] = ',', --দ্বিতীয় কমা (বিশেষ ব্যবহার: ত্রিপদি কবিতায় প্রথম ছন্দের শেষে কমার পরিবর্তে '꠨', দ্বিতীয় ছন্দের শেষে কমার পরিবর্তে '꠩', এবং তৃতীয় ছন্দের শেষে দাড়ির পরিবর্তে '⁕' ব্যবহার হয়।)
[' ꠪'] = ':',
[' ꠫'] = '।',
[' ॥'] = ';',
[' ⁕'] = '।' -- দাড়ি
}
local aspirates = "ꠈꠊꠍꠏꠑꠓꠕꠗꠚꠜ"
local consonant, vowel, vowel_sign = "ꠇ-ꠊꠌ-ꠢ", "ꠣ-ꠧ", "ꠀꠁꠃ-ꠅ"
local c = "[" .. consonant .. "]"
local v = "[" .. vowel .. vowel_sign .. "]"
local syncope_pattern = "(" .. v .. c .. v .. c .. ")(" .. c .. "ঁ?" .. v .. ")"
local function rev_string(text)
local result, length = "", mw.ustring.len(text)
for i = 1, length do
result = result .. mw.ustring.sub(text, -i, -i)
end
return result
end
function export.tr(text, lang, sc)
-- from [[MOD:as-translit]]
text = gsub(text, "(" .. c .. ")([" .. vowel .. "’?꠆]?)", function(a, b)
local res = a .. (b == "" and "" or b)
if match(a, "[" .. aspirates .. "]") then res = res .. "’" end
return res end)
for word in mw.ustring.gmatch(text, "[ꠀ-ꠧô’]+") do
local orig_word = word
word = rev_string(word)
word = gsub(word, "^ô(" .. c .. ")(" .. v .. ")", "%1%2")
while match(word, syncope_pattern) do
word = gsub(word, syncope_pattern, "%1%2")
end
text = gsub(text, orig_word, rev_string(word))
end
text = gsub(text, ".", conv)
-- ô is really just o
text = mw.ustring.gsub(text, 'ও', 'অ')
-- velars
text = mw.ustring.gsub(text, 'খ়([িুইউ])', 'ক%1')
text = mw.ustring.gsub(text, '([িুইউ])খ়', '%1ক')
text = mw.ustring.gsub(text, 'খ়খ়', 'কক')
-- পরিক্ষামূলক
text = mw.ustring.gsub(text, '([েএ])ক', '%1খ়')
-- palatals (I think?)
text = mw.ustring.gsub(text, 'সস', 'চচ')
-- affricates (I'm just guessing now)
text = mw.ustring.gsub(text, 'জজ', 'জ়জ়')
text = mw.ustring.gsub(text, 'জ়স', 'জচ')
-- final r/l
text = mw.ustring.gsub(text, '([খ়রল])o$', '%1')
text = mw.ustring.gsub(text, '([খ়রল])o ', '%1 ')
-- tone
text = gsub(text, '’', '')
return text
end
return export