Modül:Dil

Vikipedi, özgür ansiklopedi
Gezinti kısmına atla Arama kısmına atla
Modül belgelemesi[gör] [değiştir] [geçmiş] [temizle]
local dilTablosu = require("Modül:Dil/veri")

--bu fonksiyon girilen bir yazıda birinci değeri bulup
--onu ikinci değer ile değiştirmeye yarar
local function bulvedeg(yazi, bir, iki)
	return mw.ustring.sub( mw.ustring.gsub(yazi, bir, iki), 1, -1 )
end

function dilGetir(dilKodu)
	local dil = dilTablosu[dilKodu] and dilKodu or bulvedeg( dilKodu, "%-.*", "" )
	return dilTablosu[dil] or error("Girilen dil kodu veritabanında bulunamadı. Lütfen Modül:Dil/veri'yi kontrol edin.")
end

--IPA yazılışları için kullanılan fonksiyon
function IPA(frame)
	--parametre tanımlayıcı
	local args = frame:getParent().args
	
	--burada sonuçta çıktısını vereceğimiz satırı başlat
	local IPA = ""
	
	if args["başlık"] ~= nil then
		IPA = IPA .. "<small>" .. args["başlık"] .. "&nbsp;</small>"
	else
		--eğer ilk parametreye "-" ifadesi girilirse bir dil kodu varsayılmadığını algıla
		if args[1] == "-" then
		
		else
			--eğer yukarıdaki başlıklardan hiçbiri belirtilmemişse girilen dil kodunun adını çıkart
			IPA = IPA .. "<small>" .. dilGetir(args[1])[1] .. " telaffuz:&nbsp;</small>"
		end
	end
	
	--ikinci parametrede "[]" ifadeleri varsa bunları temizle, çünkü modül bunları otomatik ekliyor
	if mw.ustring.find(args[2], "^%[") then args[2] = string.sub( args[2], 2, -1 ) end
	if mw.ustring.find(args[2], "%]$") then args[2] = mw.ustring.sub( args[2], 1, -2 ) end
	
	local parAc = mw.ustring.find(args[2], "^%/") and "" or "["
	local parKapa = mw.ustring.find(args[2], "%/$") and "" or "]"
	
	--küçük yazılacak kısmın kapanış etiketini ekle
	--daha sonra da IPA okunuşu kısmını ekle
	IPA = IPA .. "<span title='IPA Söylenişi' class='IPA'>" .. (args["b"] == "yok" and "" or "[[Uluslararası Fonetik Alfabe|") 
			  .. parAc .. args[2] .. parKapa .. (args["b"] == "yok" and "" or "]]") .. "</span>"
	
	--eğer bir ses dosyası girilirse onu da en sona ekle
	if args.medya ~= nil then
		IPA = IPA .. "<small>&nbsp; ([[Dosya:Speaker Icon.svg|13px|link=|alt=]] [[:Media:" .. args.medya .. "|dinle]])</small>"
	end
	
	--son çıktı
	return IPA
end

function dil(frame)
	--parametre tanımlayıcı
	local args = frame:getParent().args
	local yazi = args[2] or args['yazı'] or ""
	
	if args[1] == "rtl" or args[1] == "ltr" then
		if args[1] == "rtl" then
			args['yön'] = "rtl"
		elseif args[1] == "ltr" then
			args['yön'] = "ltr"
		end
		yazi = args[3] or args['yazı'] or ""
		args[1] = args[2]
	end
	
	--sonuçtaki çıktıyı başlat
	local dil = ""
	local dil_prm = args['dil_adı'] or args['da']
	
	--dilin adını tablodan kod yardımıyla bul ve o dilin sınıfında bir span oluştur
	if dil_prm ~= 'hayır' then
		dil = dil .. "[[" .. dilGetir(args[1])[1] .. "]]:&nbsp;"
	end
	
	--eğer girilmiş bir yön varsa onu span'ın özelliklerine ekle
	--son olarak da yazıyı span'ın içerisine yerleştir
	dil = dil .. "<span class='lang-"..args[1].."' lang='"..args[1].."' dir='"..(args['yön'] and args['yön'] or "ltr").."'>"
	.. yazi .. "</span>"
	
	--çeviri parametresi girildiyse çeviriyi yazıdan sonra ekle
	if args['çeviri'] then
		dil = dil .. "&#x20;<small>([[romanizasyon|romanize]]:&nbsp;''<span class='lang-"..args[1].." transcription' lang='"..args[1].."-Latn'>"
		..args['çeviri']..")</span></small>''"
	end
	
	return dil
end

--yerel ad şablonunun fonksiyonu
function yerelAd(frame)
	--parametre tanımlayıcı
	local args = frame:getParent().args
	
	--her şeyden önce hata çıkmasına karşın çıktıyı başlatalım
	local yerelAd = ""
	
	--eğer ikinci parametre girilmediyse modül hata vermesin, bunun yerine izleyici kategori eklesin
	if args[2] then
		yerelAd = yerelAd .. (args["italik"] and args[2] or "''" .. args[2] .. "''")
	else
		yerelAd = yerelAd .. "[[Kategori:Yerel adı girilmemiş yerel adı şablonu kullanan maddeler]]"
	end
	
	--eğer şablona dil kodu girilmediyse modül hatası değil de izleme kategorisi ekle
	if dilGetir(args[1])[1] then
		yerelAd = yerelAd .. "&#x20; <small>" .. (args["parantez"] and "" or "(")
					.. (args["bağ_yok"] and "" or "[[") .. dilGetir(args[1])[1] .. (args["bağ_yok"] and "" or "]]")
					.. (args["parantez"] and "" or ")") .. "</small>"
	else
		yerelAd = yerelAd .. "[[Kategori:Dil kodu girilmemiş yerel adı şablonu kullanan maddeler]]"
	end
	
	return yerelAd
end

return {
	IPA = IPA,
	dil = dil,
	yerelAd = yerelAd
}