Module:bn-translit/sandbox

Hello, you have come here looking for the meaning of the word Module:bn-translit/sandbox. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:bn-translit/sandbox, but we will also tell you about its etymology, its characteristics and you will know how to say Module:bn-translit/sandbox in singular and plural. Everything you need to know about the word Module:bn-translit/sandbox you have here. The definition of the word Module:bn-translit/sandbox will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:bn-translit/sandbox, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.


-- Transliteration for Bengali

local export = {}
local u = mw.ustring.char
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local sub = mw.ustring.sub

local QO = u(0x003F) -- question mark

local char = {
	-- consonants
	 = "k",	 = "kh",	 = "g",	 = "gh",	 = "ṅ",
	 = "c",	 = "ch",	 = "j",	 = "jh",	 = "ñ",
	 = "ṭ",	 = "ṭh",	 = "ḍ",	 = "ḍh",	 = "ṇ",
	 = "t",	 = "th",	 = "d",	 = "dh",	 = "n",
	 = "p",	 = "f",	 = "b",	 = "bh",	 = "m",
	 = "j",	 = "r",	 = "l",
	 = "ś",	 = "ṣ",	 = "s",	 = "h",	
	 = "ṛ",	 = "ṛh",	 = "y",

	-- vowel diacritics
	 = "i",	 = "u",	
	 = "ri",	 = "e",	 = "ō",
	 = "a",	 = "i",	 = "u",	 = "ōi",	 = "ōu",

	-- archaic vowel diacritics
	 = "ri",	 = "li",	 = "li",

	-- visarga
	 = "ḥ",

	-- vowel signs
	 = "o", 	 = "i",	 = "u",	
	 = "ri",	 = "e",	 = "ō",
	 = "a",	 = "i",	 = "u",	 = "ōi",	 = "ōu",

	-- archaic vowel signs
	 = "ri",	 = "li",	 = "li",

	--virama
	 = "",

	-- chandrabindu
	 = "̃",
	
	-- avagraha
	='’',
		
	-- anusvara
	 = "ṅ",

	-- khandata, 
	 = "t",

	-- numerals
	 = "0",  = "1",  = "2",  = "3",  = "4", 
	 = "5",  = "6",  = "7",  = "8",  = "9",
 
	-- punctuation
	 = ".", -- dãri
}

local consonant, vowel, vowel_sign = "ক-হড়-য়", "oা-ৌ’", "অ-ঔ"
local c = ""
local cc = "়?" .. c
local v = ""
local syncope_pattern = "(" .. v .. cc .. v .. cc .. ")o(" .. cc .. "ঁ?" .. v .. ")"

local deaspirate = ""

local function rev_string(text)
	local result, length = "", mw.ustring.len(text)
	for i = 1, length do
		result = result .. mw.ustring.sub(text, length - i + 1, length - i + 1)
	end
	return result
end

function export.tr(text, lang, sc, override)
	text = gsub(text, "(" .. c .. ")ও", "%1্ও")
	text = gsub(text, "^(" .. c .. ")্ও", "%1ও")

	text = gsub(text, "(" .. c .. ")্‌(" .. c .. ")$", "%1্%2্")
	text = gsub(text, "(" .. c .. ")্‌(" .. c .. ") ", "%1্%2্ ")

	text = gsub(text, "(" .. v .. ")ঞ(" .. v .. ")", "%1̃%2")

	text = gsub(text, "(" .. c .. "়?)(?)", function(a, b)
		return a .. (b == "" and "o" or b) end)
	
	for word in mw.ustring.gmatch(text, "+") do
		local orig_word = word
		word = rev_string(word)
		word = gsub(word, "^o(়?" .. 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, "(".. deaspirate .. ")হ", "%1'h")

	text = gsub(text, "্ম", "ṃ")
	text = gsub(text, "্য", "ẏ")
	text = gsub(text, "্ব", "v")

	text = gsub(text, "িত$", "ito")
	text = gsub(text, "িত ", "ito ")

	text = gsub(text, "ৃত$", "rito")
	text = gsub(text, "ৃত ", "rito ")

	text = gsub(text, "িব$", "ibo")
	text = gsub(text, "িব ", "ibo ")

	text = gsub(text, "র্চ$", "র্চ্‌")
	text = gsub(text, "র্চ ", "র্চ্‌ ")

	text = gsub(text, "ছিল$", "chilo")
	text = gsub(text, "ছিল ", "chilo ")

	text = gsub(text, "র()o", "রo%1")

	text = gsub(text, "(".. cc .. ")o()", "%1%2")
	text = gsub(text, "(".. cc .. ")ও", "%1oō")

	text = gsub(text, ".?", char)
	text = gsub(text, ".", char)

	local v_Latn = "̃?"
	local v_Latn_wo_e = "̃?"
	local c_Latn = ""
	local consonants_no_h = ""

	-- inherent vowel deletion
	text = gsub(text, "(".. v_Latn .. ")bo()(".. v_Latn .. ")", "%1b%2%3")
	text = gsub(text, "(".. v_Latn .. ")cho()(".. v_Latn .. ")", "%1ch%2%3")
	text = gsub(text, "(".. v_Latn .. ")do()(".. v_Latn .. ")", "%1d%2%3")
	text = gsub(text, "(".. v_Latn .. ")dho()(".. v_Latn .. ")", "%1dh%2%3")

	text = gsub(text, "(".. v_Latn .. ")ḍo()(".. v_Latn .. ")", "%1ḍ%2%3")
	text = gsub(text, "(".. v_Latn .. ")fo(?)(".. v_Latn_wo_e .. ")", "%1f%2%3")
	text = gsub(text, "(".. v_Latn .. ")go()(".. v_Latn .. ")", "%1g%2%3")

	text = gsub(text, "(".. v_Latn .. ")jo()(".. v_Latn .. ")", "%1j%2%3")
	text = gsub(text, "(".. v_Latn .. ")ko()(".. v_Latn .. ")", "%1k%2%3")
	text = gsub(text, "(".. v_Latn .. ")kho()(".. v_Latn .. ")", "%1kh%2%3")
	text = gsub(text, "(".. v_Latn .. ")lo(h?)(".. v_Latn .. ")", "%1lô%2%3")
	text = gsub(text, "(".. v_Latn .. ")lodv(".. v_Latn .. ")", "%1ldv%3")

	text = gsub(text, "(".. v_Latn .. ")mo()(".. v_Latn .. ")", "%1m%2%3")
	text = gsub(text, "(".. v_Latn .. ")no(?)(".. v_Latn .. ")", "%1n%2%3")
	text = gsub(text, "(".. v_Latn .. ")ṅo(h?)(".. v_Latn .. ")", "%1ṅ%2%3")
	text = gsub(text, "(".. v_Latn .. ")po()(".. v_Latn .. ")", "%1p%2%3")

	text = gsub(text, "(".. v_Latn .. ")ro(h?)(".. v_Latn .. ")", "%1r%2%3")
	text = gsub(text, "(".. v_Latn .. ")ro()r(".. v_Latn .. ")", "%1r%2r%3")
	text = gsub(text, "(".. v_Latn .. ")ṣo()(".. v_Latn .. ")", "%1ṣ%2%3")
	text = gsub(text, "(".. v_Latn .. ")śo()(".. v_Latn .. ")", "%1ś%2%3")
	text = gsub(text, "(".. v_Latn .. ")so()(".. v_Latn .. ")", "%1s%2%3")
	text = gsub(text, "(".. v_Latn .. ")ṭo()(".. v_Latn .. ")", "%1ṭ%2%3")

	text = gsub(text, "(".. v_Latn .. ")yo()(".. v_Latn .. ")", "%1y%2%3")

	-- exceptional
	text = gsub(text, "()ch$", "%1cho")
	text = gsub(text, "()ch ", "%1cho ")
	text = gsub(text, "()ch(" .. QO .. ")", "%1cho%2")

	text = gsub(text, "apon(".. v_Latn .. ")", "apn%1")
	text = gsub(text, "arbi", "arobi")

	text = gsub(text, "goñjo$", "gonj")
	text = gsub(text, "goñjo ", "gonj ")
	text = gsub(text, "got", "goto")

	text = gsub(text, "hojjo", "hojj")

	text = gsub(text, "ikta$", "ikota")
	text = gsub(text, "ikta ", "ikota ")

	text = gsub(text, "iy$", "iyo")
	text = gsub(text, "iy ", "iyo ")

	text = gsub(text, "ken$", "keno")
	text = gsub(text, "ken ", "keno ")
	text = gsub(text, "ken(" .. QO .. ")", "keno%1")

	text = gsub(text, "korob", "korbo")
	text = gsub(text, "okso", "oks")

	text = gsub(text, "sṭo$", "sṭ")
	text = gsub(text, "sṭo ", "sṭ ")

	text = gsub(text, "(" .. v_Latn .. ")śot$", "%1śt")
	text = gsub(text, "(" .. v_Latn .. ")śot ", "%1śt ")

	text = gsub(text, "ajon(".. v_Latn .. ")", "ajn")
	text = gsub(text, "(".. v_Latn .. ")koṭr(".. v_Latn .. ")", "%1kṭr%2")
	text = gsub(text, "(".. v_Latn .. ")khost(".. v_Latn .. ")", "%1khst%2")
	text = gsub(text, "(".. v_Latn .. ")jost(".. v_Latn .. ")", "%1jst%2")
	text = gsub(text, "(".. v_Latn .. ")lp(".. v_Latn .. ")", "%1lop%3")
	text = gsub(text, "(".. v_Latn .. ")lô(h?)(".. v_Latn .. ")", "%1l%2%3")
	text = gsub(text, "(".. v_Latn .. ")no(".. c_Latn .. "h?)(".. c_Latn .. "h?)(".. v_Latn .. ")", "%1n%2%3%4")
	text = gsub(text, "(".. v_Latn .. ")rkoṭ(".. v_Latn .. ")", "%1rkṭ%2")
	text = gsub(text, "(".. v_Latn .. ")ṣdh(".. v_Latn .. ")", "%1ṣodh%2")
	text = gsub(text, "(".. v_Latn .. ")sm(".. v_Latn .. ")", "%1śom%2")

	-- up prefix
	text = gsub(text, "^up(".. c_Latn .. ")", "upo%1")
	text = gsub(text, " up(".. c_Latn .. ")", " upo%1")
	text = gsub(text, "ōp(".. c_Latn .. ")", "ōpo%1")

	-- qualifiers
	text = gsub(text, "(".. c_Latn .. ")oṭa$", "%1ṭa")
	text = gsub(text, "(".. c_Latn .. ")oṭa ", "%1ṭa ")
	text = gsub(text, "(".. c_Latn .. ")oṭi$", "%1ṭi")
	text = gsub(text, "(".. c_Latn .. ")oṭi ", "%1ṭi ")

	-- Cv
	text = gsub(text, "()v", "%1b")
	text = gsub(text, "udv", "udb")
	text = gsub(text, "ttv", "tt")
	text = gsub(text, "^sv", "ś") -- initial
	text = gsub(text, "()v", "śś") -- medial

	text = gsub(text, "^(" .. consonants_no_h .. "h?)v", "%1") -- initial
	text = gsub(text, " (" .. consonants_no_h .. "h?)v", " %1") -- initial
	text = gsub(text, "()(" .. consonants_no_h .. "h?)v", "%1%2")
	text = gsub(text, "(" .. consonants_no_h .. ")v", "%1%1") -- medial
	text = gsub(text, "(" .. consonants_no_h .. ")hv", "%1%1h") -- medial_h

	--ahv, ihv
    text = gsub(text, "ahv", "aubh")
    text = gsub(text, "ihv", "iubh")

	text = gsub(text, "hv", "hb")

	-- kṣ
	text = gsub(text, "^kṣ", "kh") -- initial
	text = gsub(text, " kṣ", " kh") -- initial
	text = gsub(text, "ṅkṣ", "ṅkh") -- after_ṅ
	text = gsub(text, "kṣ", "kkh") -- medial
	text = gsub(text, "kkhṃ", "kkh") -- before_ṃ

	-- sm
	text = gsub(text, "^()ṃa", "śã") -- initial
	text = gsub(text, " ()ṃa", " śã") -- initial
	text = gsub(text, "()ṃa", "śśã") -- medial

	text = gsub(text, "^()ṃ", "ś") -- initial
	text = gsub(text, " ()ṃ", " ś") -- initial
	text = gsub(text, "()ṃ", "śś") -- medial

	-- tm
	text = gsub(text, "^tṃ", "t") -- initial
	text = gsub(text, "tṃ", "tt") -- medial

	text = gsub(text, "ṃ", "m")
	text = gsub(text, "ṣ", "ś")

	-- visarga deletion
	text = gsub(text, "ḥ(" .. consonants_no_h .. ")h", "%1%1h")
	text = gsub(text, "ḥ", "")

	-- foreign conjuncts
	text = gsub(text, "()ḍo$", "%1ḍ")
	text = gsub(text, "()nḍo ", "%1ḍ ")

	text = gsub(text, "rko$", "rk")
	text = gsub(text, "rko ", "rk ")

	text = gsub(text, "(" .. v_Latn .. ")h$", "%1ho")
	text = gsub(text, "(" .. v_Latn .. ")h ", "%1ho ")

	text = gsub(text, "()aho$", "%1ah")
	text = gsub(text, "()aho ", "%1ah ")

	text = gsub(text, "ṇn", "ṇon")
	text = gsub(text, "ṇ", "n")

	-- Cẏ
	text = gsub(text, "^eẏa", "ê")
	text = gsub(text, " eẏa", " ê")
	text = gsub(text, "^oẏa", "ê")
	text = gsub(text, " oẏa", " ê")

	text = gsub(text, "^(" .. consonants_no_h .. "h?)ẏa", "%1ê") -- initial
	text = gsub(text, " (" .. consonants_no_h .. "h?)ẏa", " %1ê") -- initial
	text = gsub(text, "^(" .. consonants_no_h .. "h?)(" .. consonants_no_h .. "h?)ẏa", "%1%2ê") -- initial_double
	text = gsub(text, " (" .. consonants_no_h .. "h?)(" .. consonants_no_h .. "h?)ẏa", " %1%2ê") -- initial_double
	text = gsub(text, "^hẏa", "hê") -- h_initial
	text = gsub(text, "ẏal$", "êl") -- final_l

	text = gsub(text, "^jñan", "gên") -- jñan_initial
	text = gsub(text, " jñan", " gên") -- jñan_initial
	text = gsub(text, "jñan", "ggên") -- jñan_medial

	text = gsub(text, "ñ", "n")

	text = gsub(text, "ẏanḍ", "ênḍ")

	text = gsub(text, "^(" .. consonants_no_h .. "h?)ẏo", "%1ê") -- initial
	text = gsub(text, " (" .. consonants_no_h .. "h?)ẏo", " %1ê") -- initial

	text = gsub(text, "^(" .. consonants_no_h .. "h?)ẏ", "%1") -- initial
	text = gsub(text, "ṅ(" .. consonants_no_h .. "h?)ẏ", "ṅ%1")
	text = gsub(text, "(" .. consonants_no_h .. ")ẏ", "%1%1") -- medial
	text = gsub(text, "(" .. consonants_no_h .. ")hẏ", "%1%1h") -- medial_h

	-- hẏ
	text = gsub(text, "^hẏ", "h") -- initial
	text = gsub(text, " hẏ", " h") -- initial
	text = gsub(text, "hẏ", "jjh") -- medial

	-- rẏ
	text = gsub(text, "rẏ", "rj")

	text = gsub(text, "yo()()", "y%1%2")
	text = gsub(text, "yoō", "yō")
	text = gsub(text, "oō$", "ō")

	text = gsub(text, "()y()", "%1yo%2")

	-- rules for changing s to ś (applicable for native words only)
	text = gsub(text, "s(".. v_Latn .. ")$", "ś%1") -- final
	text = gsub(text, "s(".. v_Latn .. ") ", "ś%1 ") -- final
	text = gsub(text, "s(" .. v_Latn .. ")", "ŝ%1") -- medial

	text = gsub(text, "()s$", "%1ś")
	text = gsub(text, "()s ", "%1ś ")

	text = gsub(text, "os$", "oŝ")
	text = gsub(text, "os ", "oŝ ")

	text = gsub(text, "^(" .. c_Latn .. ")oŝ$", "%1os")
	text = gsub(text, " (" .. c_Latn .. ")oŝ$", " %1os")
	text = gsub(text, "^(" .. c_Latn .. ")oŝ ", "%1os ")

	text = gsub(text, "^ŝe(" .. c_Latn .. ")$", "^se%1")
	text = gsub(text, " ŝe(" .. c_Latn .. ")$", " se%1")
	text = gsub(text, "^ŝe(" .. c_Latn .. ") ", "^se%1 ")
	text = gsub(text, " ŝe(" .. c_Latn .. ") ", " se%1 ")

	text = gsub(text, "ŝalam", "salam")

	text = gsub(text, "ŝ", "ś")

	text = gsub(text, "śl", "sl")
	text = gsub(text, "śr", "sr")
	text = gsub(text, "sp", "śp")
	text = gsub(text, "^śp", "sp")
	text = gsub(text, " śp", " sp")

	text = gsub(text, "śṭh$", "śṭho")

	text = gsub(text, "^(h?)()", "%1o%2")
	text = gsub(text, "^(" .. c_Latn .. ")()b$", "%1bo")
	text = gsub(text, "^(" .. c_Latn .. ")()b ", "%1bo ")

	text = gsub(text, "^()()bh$", "%1%2bho")
	text = gsub(text, "^()()bh ", "%1%2bho ")

	text = gsub(text, "lona$", "lna")
	text = gsub(text, "nola$", "nla")

	text = gsub(text, "ōy", "ōw")
	text = gsub(text, "ō̃y", "ō̃w")

	text = gsub(text, "uy", "uw")
	text = gsub(text, "ũy", "ũw")

	text = gsub(text, "ōw$", "ōy")
	text = gsub(text, "ōw ", "ōy ")

	text = gsub(text, "uw$", "uy")
	text = gsub(text, "uw ", "uy ")

	text = gsub(text, "oo", "o")

	if match(text, "") and mode ~= "debug" then
		return nil
	else
		return mw.ustring.toNFC(text)
	end
end
 
return export