Modül:cjy-söyleniş

Merhaba, buraya Modül:cjy-söyleniş kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:cjy-söyleniş kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:cjy-söyleniş kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:cjy-söyleniş kelimesi hakkında bilmeniz gereken her şey burada. Modül:cjy-söyleniş kelimesinin tanımı, konuşurken veya metinlerinizi yazarken daha kesin ve doğru olmanıza yardımcı olacaktır. XXX'in ve diğer kelimelerin tanımını bilmek, kelime dağarcığınızı zenginleştirir ve size daha fazla ve daha iyi dilsel kaynaklar sağlar.
Modül belgelemesi
local export = {}

local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local len = mw.ustring.len
local match = mw.ustring.match

local initialConv = {
	 = "p",  = "pʰx",  = "m",  = "f",  = "v",
	 = "t",  = "tʰx",  = "n",  = "l", 
	 = "t͡s",  = "t͡sʰ",  = "s",  = "ʐ",
	 = "t͡ɕ",  = "t͡ɕʰ",  = "ɕ",
	 = "k",  = "kʰx",  = "ɣ",  = "ŋ",
	 = "x",  = ""
}

local finalConv = {
	 = "z̩",
	 = "i",
	 = "u", 
	 = "y", 
	 = "əɻ", 
	 = "a",  = "ia",  = "ua", 
	 = "ɤ",  = "uɤ", 
	 = "ie",  = "ye", 
	 = "ai",  = "uai", 
	 = "ei",  = "uei", 
	 = "au",  = "iau", 
	 = "əu",  = "iəu", 
	 = "æ̃",  = "uæ̃",
	 = "ɒ̃",  = "iɒ̃",  = "uɒ̃",
	 = "aŋ",  = "iaŋ",  = "uaŋ", 
	 = "ə̃ŋ", 
	 = "ĩŋ", 
	 = "ũŋ", 
	 = "ỹŋ", 
	 = "aʔ",  = "iaʔ",  = "uaʔ", 
	 = "əʔ",  = "iəʔ",  = "uəʔ",  = "yəʔ",
	 = "z̩ɻ",
	 = "iɻ",
	 = "uɻ",
	 = "yɻ",
	 = "ɑɻ",  = "iɑɻ",  = "uɑɻ", 
	 = "ɤɻ",  = "uɤɻ", 
	 = "ieɻ",  = "yeɻ", 
	 = "ɐɻ",  = "uɐɻ", 
	 = "əɻ",  = "uəɻ", 
	 = "ɒoɻ",  = "iɒoɻ", 
	 = "əuɻ",  = "iəuɻ", 
	 = "æ̃ɻ",  = "uæ̃ɻ",
	 = "ɒ̃ɻ",  = "iɒ̃ɻ",  = "uɒ̃ɻ",
	 = "ʌ̃ɻ", 
	 = "ĩɻ", 
	 = "ũɻ", 
	 = "ỹɻ", 
	 = "ɐɻ",  = "iɐɻ",  = "uɐɻ", 
	 = "əɻ",  = "ieɻ",  = "uəɻ",  = "yeɻ",
}

local toneConv = {
	 = "¹¹",  = "⁵³",  = "⁴⁵",  = "²",  = "⁵⁴",  = "¹",  = "⁻"
}

local toneSandhi = {
	 = "2-1",  = "2-1",
	 = "4-5",  = "4-5",
	 = "4-3",  = "4-3",
	 = "5-4",  = "5-4",
}

local neutral = {
	 = "⁴",  = "³",  = "²"
}

function export.ipa(text, feature)
	if type(text) == "table" then
		text = text.args
	end
	local syllables, initial, final, tone, ipa, result = {}, {}, {}, {}, {}, {}
	local words = mw.text.split(text, "/")
	for _, word in ipairs(words) do
		syllables = mw.text.split(word, " ")
		for index, syllable in ipairs(syllables) do
			initial = match(syllable, "^??")
			final = match(sub(syllable, len(initial) + 1, -1), "^*")
			tone = match(syllable, "+$") or (index ~= 1 and "6" or "")
		end
		for index = 1, #syllables do
			initial = initialConv] or error(("Tanınmayan başlangıç: \"%s\""):format(initial))
			final = (match(initial, "") and final == "i") and "r" or final
			final = finalConv] or error(("Tanınmayan bitiş: \"%s\""):format(final))
			tone = tone == "6" and neutral] or tone
			tone = feature ~= "no_sandhi" and toneSandhi.."+"..(tone or "")] or tone
			tone = gsub(tone, ".", toneConv)
			ipa = initial .. final .. tone
		end
		table.insert(result, table.concat(ipa, " "))
	end
	return table.concat(result, "/, /")
end

function export.rom(text)
	text = gsub(text, "/", " / ")
	text = gsub(text, '(+)', '<sup>%1</sup>')
	return text
end

return export