Modul:ar-pronunciation

A Wikiszótárból, a nyitott szótárból

1 teszt sikertelen. (frissítés)

Szöveg Várt Tényleges Megjegyzések
test1_transliteration:
Sikeres tilivizyōn ti.li.viz.joːn ti.li.viz.joːn
Sikeres ʾinglīziyy ʔinɡliː.zijj ʔinɡliː.zijj
Szöveg Várt Tényleges Megjegyzések
test_Arabic:
Sikeres طَبَّ(ṭabba) tˤab.ba tˤab.ba
Sikeres رُوسِيَا(rūsiyā) ruː.si.jaː ruː.si.jaː
Sikeres أَنْتَ(ʔanta) ʔan.ta ʔan.ta
Sikeres ذٰلِكَ(ḏālika) ðaː.li.ka ðaː.li.ka
Sikeres صَغِير(ṣaḡīr) sˤa.ɣiːr sˤa.ɣiːr
Sikeres إِصْبَع(ʔiṣbaʕ) ʔisˤ.baʕ ʔisˤ.baʕ
Sikeres عَلَى(ʕalā) ʕa.laː ʕa.laː
Sikeres جَزِيرَة(jazīra) d͡ʒa.ziː.ra d͡ʒa.ziː.ra
Sikeres أَرْبَعَة(ʔarbaʕa) ʔar.ba.ʕa ʔar.ba.ʕa
Sikeres حُبّ(ḥubb) ħubb ħubb
Sikeres عَرَبِيّ(ʕarabiyy) ʕa.ra.bijj ʕa.ra.bijj
Sikeres خَاصّ(ḵāṣṣ) xaːsˤsˤ xaːsˤsˤ
Sikeres خَاصَّة(ḵāṣṣa) xaːsˤ.sˤa xaːsˤ.sˤa
Sikertelen يَوْمُ ٱلِٱثْنَيْنِ(yawmu l-iṯnayni) jaw.mu liθ.naj.ni jaw.mu l.iθ.naj.ni
Allah
Sikeres اللّٰه(allāh) aɫ.ɫaːh aɫ.ɫaːh special case
Sikeres عَبْدُ اللّٰه(ʕabdu llāh) ʕab.du‿ɫ.ɫaːh ʕab.du‿ɫ.ɫaːh special case
Sikeres لِلّٰه(lillāh) lil.laːh lil.laːh special case of the special case
Phrases
Sikeres الْمَمْلَكَة الْعَرَبِيَّة السُّعُودِيَّة(al-mamlaka(t) al-ʕarabiyya(t) as-suʕūdiyya) al.mam.la.ka‿l.ʕa.ra.bij.ja‿s.su.ʕuː.dij.ja al.mam.la.ka‿l.ʕa.ra.bij.ja‿s.su.ʕuː.dij.ja
Sikeres مَعَ اَلسَّلَامَة(maʕa s-salāma) ma.ʕa‿s.sa.laː.ma ma.ʕa‿s.sa.laː.ma
Sikeres لٰكِنَّ الرَّئِيسَ كَانَ أَذْكَى مِمَّا تَوَقَّعَ النَّاسُ(lākinna r-raʔīsa kāna ʔaḏkā mimmā tawaqqaʕa n-nāsu) laː.kin.na‿r.ra.ʔiː.sa kaː.na ʔað.kaː mim.maː ta.waq.qa.ʕa‿n.naː.su laː.kin.na‿r.ra.ʔiː.sa kaː.na ʔað.kaː mim.maː ta.waq.qa.ʕa‿n.naː.su
Sikeres بِسْمِ اللهِ الرَّحْمٰنِ الرَّحِيمِ(bismi llāhi r-raḥmāni r-raḥīmi) bis.mi‿l.laː.hi‿r.raħ.maː.ni‿r.ra.ħiː.mi bis.mi‿l.laː.hi‿r.raħ.maː.ni‿r.ra.ħiː.mi
Sikeres إِنْ شَاءَ ٱللَٰهُ(ʔin šāʔa llāhu) ʔin ʃaː.ʔa‿ɫ.ɫaː.hu ʔin ʃaː.ʔa‿ɫ.ɫaː.hu
Sikeres بِٱلْهَنَاءِ وَٱلشِّفَاء(bi-l-hanāʔi waš-šifāʔ) bil.ha.naː.ʔi waʃ.ʃi.faːʔ bil.ha.naː.ʔi waʃ.ʃi.faːʔ
vowel shortening
Sikeres فِي الْبَيْت(fī l-bayt) fi‿l.bajt fi‿l.bajt
Sikeres مَا ٱسْمُك(mā smuk) ma‿s.muk ma‿s.muk
Sikeres ذُو الْقَرْنَيْن(ḏū l-qarnayn) ðu‿l.qar.najn ðu‿l.qar.najn
Sikeres إِلَّا الله(ʔillā llāh) ʔil.la‿ɫ.ɫaːh ʔil.la‿ɫ.ɫaːh
Sikeres فِي ٱتِّحَادِنَا(fī ttiḥādinā) fi‿t.ti.ħaː.di.naː fi‿t.ti.ħaː.di.naː
Sikeres فِي الله(fī llāh) fi‿l.laːh fi‿l.laːh

local export = {}

local lang = require("Module:languages").getByCode("ar")
local sc = require("Module:scripts").getByCode("Arab")

local str_gsub = string.gsub
local str_gmatch = string.gmatch
local ugsub = mw.ustring.gsub
local ugmatch = mw.ustring.gmatch

local correspondences = {
	["ʾ"] = "ʔ",
	["ṯ"] = "θ",
	["j"] = "d͡ʒ",
	["ḥ"] = "ħ",
	["ḵ"] = "x",
	["ḏ"] = "ð",
	["š"] = "ʃ",
	["ṣ"] = "sˤ",
	["ḍ"] = "dˤ",
	["ṭ"] = "tˤ",
	["ẓ"] = "ðˤ",
	["ž"] = "ʒ",
	["ʿ"] = "ʕ",
	["ḡ"] = "ɣ",
	["ḷ"] = "ɫ",
	["ū"] = "uː",
	["ī"] = "iː",
	["ā"] = "aː",
	["y"] = "j",
	["g"] = "ɡ",
	["ē"] = "eː",
	["ō"] = "oː",
	[""] = "",
}

--[[
-- Not really needed
local identical = "btrzsfqklmnhwaui"
for character in str_gmatch(identical, ".") do
	correspondences[character] = character
end
--]]

local vowels = "aāeēiīoōuū"
local vowel = "[" .. vowels .. "]"
local long_vowels = "āēīōū"
local long_vowel = "[" .. long_vowels .. "]"
local consonant = "[^" .. vowels .. ". -]"
local syllabify_pattern = "(" .. vowel .. ")(" .. consonant .. "?)(" .. consonant .. "?)(" .. vowel .. ")"
local tie = "‿"
local closed_syllable_shortening_pattern =
	"(" .. long_vowel .. ")(" .. tie .. ")" .. "(" .. consonant .. ")"

local function syllabify(text)
	text = ugsub(text, "%-(" .. consonant .. ")%-(" .. consonant .. ")", "%1.%2")
	text = str_gsub(text, "%-", ".")
	
	-- Add syllable breaks.
	for count = 1, 2 do
		text = ugsub(
			text,
			syllabify_pattern,
			function(a, b, c, d)
				if c == "" and b ~= "" then
					c, b = b, ""
				end
				
				return a .. b .. "." .. c .. d
			end
		)
	end
	
	-- Add ties between word-final vowels and word-initial consonant clusters.
	text = ugsub(
		text,
		"(" .. vowel .. ") (" .. consonant .. ")%.?(" .. consonant .. ")",
		"%1" .. tie .. "%2.%3"
	)
	
	return text
end

local function closed_syllable_shortening(text)
	local shorten = {
		["ā"] = "a",
		["ē"] = "e",
		["ī"] = "i",
		["ō"] = "o",
		["ū"] = "u",
	}
	
	text = ugsub(text,
		closed_syllable_shortening_pattern,
		function (vowel, tie, consonant)
			return shorten[vowel] .. tie .. consonant
		end)
	
	return text
end

local function transliterate(text)
	return lang:transliterate(text)
end

function export.link(term)
	return require("Module:links").full_link{ term = term, lang = lang, sc = sc }
end

function export.toIPA(list, silent_error)
	local translit
	
	if list.tr then
		translit = list.tr
	elseif list.Arabic then
		--	Returns an error if the word contains alphabetic characters that are not Arabic.
		require("Module:script utilities").checkScript(list.Arabic, "Arab")
		
		translit = transliterate(list.Arabic)
		
		if not translit then
			if silent_error then
				return ''
			else
				error('Module:ar-translit failed to generate a transliteration from "' .. list.Arabic .. '".')
			end
		end
	else
		if silent_error then
			return ''
		else
			error('No Arabic text or transliteration was provided to the function "toIPA".')
		end
	end
	
	translit = str_gsub(translit, "llāh", "ḷḷāh")
	translit = ugsub(translit, "([iī] ?)ḷḷ", "%1ll")
	
	-- Remove the transliterations of any tāʾ marbūṭa not marked with a sukūn.
	translit = str_gsub(translit, "%(t%)", "")
	-- Prodelision after tāʾ marbūṭa
	translit = ugsub(translit, "(" .. vowel .. ") " .. vowel, "%1 ")
	
	translit = syllabify(translit)
	translit = closed_syllable_shortening(translit)
	
	local output = ugsub(translit, ".", correspondences)

	output = str_gsub(output, "%-", "")
	
	return output
end

function export.show(frame)
	local params = {
		[1] = {},
		["tr"] = {},
	}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	local Arabic = args[1]
	local transliteration = args.tr
	
	if not ( Arabic or transliteration ) then
		if mw.title.getCurrentTitle().nsText == "Sablon" then
			Arabic = "كَلِمَة"
		else
			error('Please provide vocalized Arabic in the first parameter of {{[[Template:ar-IPA|ar-IPA]]}}, or transliteration in the "tr" parameter.')
		end
	end
	
	local pron = export.toIPA{ Arabic = Arabic, tr = transliteration }
	
	return require("Module:IPA").format_IPA_full(lang, { { pron = "/" .. pron .. "/" } } )
end

return export